diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..44157e63ea80882469ef37cf96a607e5f2984158
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,5 @@
+image: docker.km3net.de/centos:7
+build:
+    script:
+        - make
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..cb7e0d5b3b15a72ed4c59b633412fe7c081c8c9d
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,1743 @@
+# Makefile.in generated by automake 1.9.6-starlink from Makefile.am.
+# Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+
+
+srcdir = .
+top_srcdir = .
+
+pkgdatadir = $(datadir)/sla
+pkglibdir = $(libdir)/sla
+pkgincludedir = $(includedir)/sla
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+check_PROGRAMS = sla_test$(EXEEXT) slaTest$(EXEEXT)
+DIST_COMMON = $(am__configure_deps) $(cinclude_HEADERS) \
+	$(dist_bin_SCRIPTS) $(dist_pkgdata_DATA) $(dist_starnews_DATA) \
+	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/component.xml.in $(srcdir)/config.h.in \
+	$(srcdir)/f77.h.in $(srcdir)/veri.f.in $(srcdir)/vers.f.in \
+	$(stardocs_DATA) $(top_srcdir)/configure config.guess \
+	config.sub depcomp gresid.F__vms gresid.F__win gresid.Fdefault \
+	install-sh ltmain.sh missing random.F__vms random.F__win \
+	random.Fdefault rtl_random.c wait.f__vms wait.f__win \
+	wait.fdefault
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = component.xml vers.f veri.f f77.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" \
+	$(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 = 
+libsla_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_1 =
+am__objects_2 = $(am__objects_1) $(am__objects_1)
+am__objects_3 = libsla_la-addet.lo libsla_la-afin.lo \
+	libsla_la-airmas.lo libsla_la-altaz.lo libsla_la-amp.lo \
+	libsla_la-ampqk.lo libsla_la-aop.lo libsla_la-aoppa.lo \
+	libsla_la-aoppat.lo libsla_la-aopqk.lo libsla_la-atmdsp.lo \
+	libsla_la-atms.lo libsla_la-atmt.lo libsla_la-av2m.lo \
+	libsla_la-bear.lo libsla_la-caf2r.lo libsla_la-caldj.lo \
+	libsla_la-calyd.lo libsla_la-cc2s.lo libsla_la-cc62s.lo \
+	libsla_la-cd2tf.lo libsla_la-cldj.lo libsla_la-clyd.lo \
+	libsla_la-combn.lo libsla_la-cr2af.lo libsla_la-cr2tf.lo \
+	libsla_la-cs2c.lo libsla_la-cs2c6.lo libsla_la-ctf2d.lo \
+	libsla_la-ctf2r.lo libsla_la-daf2r.lo libsla_la-dafin.lo \
+	libsla_la-dat.lo libsla_la-dav2m.lo libsla_la-dbear.lo \
+	libsla_la-dbjin.lo libsla_la-dc62s.lo libsla_la-dcc2s.lo \
+	libsla_la-dcmpf.lo libsla_la-dcs2c.lo libsla_la-dd2tf.lo \
+	libsla_la-de2h.lo libsla_la-deuler.lo libsla_la-dfltin.lo \
+	libsla_la-dh2e.lo libsla_la-dimxv.lo libsla_la-djcal.lo \
+	libsla_la-djcl.lo libsla_la-dm2av.lo libsla_la-dmat.lo \
+	libsla_la-dmoon.lo libsla_la-dmxm.lo libsla_la-dmxv.lo \
+	libsla_la-dpav.lo libsla_la-dr2af.lo libsla_la-dr2tf.lo \
+	libsla_la-drange.lo libsla_la-dranrm.lo libsla_la-ds2c6.lo \
+	libsla_la-ds2tp.lo libsla_la-dsep.lo libsla_la-dsepv.lo \
+	libsla_la-dt.lo libsla_la-dtf2d.lo libsla_la-dtf2r.lo \
+	libsla_la-dtp2s.lo libsla_la-dtp2v.lo libsla_la-dtps2c.lo \
+	libsla_la-dtpv2c.lo libsla_la-dtt.lo libsla_la-dv2tp.lo \
+	libsla_la-dvdv.lo libsla_la-dvn.lo libsla_la-dvxv.lo \
+	libsla_la-e2h.lo libsla_la-earth.lo libsla_la-ecleq.lo \
+	libsla_la-ecmat.lo libsla_la-ecor.lo libsla_la-eg50.lo \
+	libsla_la-el2ue.lo libsla_la-epb.lo libsla_la-epb2d.lo \
+	libsla_la-epco.lo libsla_la-epj.lo libsla_la-epj2d.lo \
+	libsla_la-epv.lo libsla_la-eqecl.lo libsla_la-eqeqx.lo \
+	libsla_la-eqgal.lo libsla_la-etrms.lo libsla_la-euler.lo \
+	libsla_la-evp.lo libsla_la-fitxy.lo libsla_la-fk425.lo \
+	libsla_la-fk45z.lo libsla_la-fk524.lo libsla_la-fk52h.lo \
+	libsla_la-fk54z.lo libsla_la-fk5hz.lo libsla_la-flotin.lo \
+	libsla_la-galeq.lo libsla_la-galsup.lo libsla_la-ge50.lo \
+	libsla_la-geoc.lo libsla_la-gmst.lo libsla_la-gmsta.lo \
+	libsla_la-h2e.lo libsla_la-h2fk5.lo libsla_la-hfk5z.lo \
+	libsla_la-idchf.lo libsla_la-idchi.lo libsla_la-imxv.lo \
+	libsla_la-intin.lo libsla_la-invf.lo libsla_la-kbj.lo \
+	libsla_la-m2av.lo libsla_la-map.lo libsla_la-mappa.lo \
+	libsla_la-mapqk.lo libsla_la-mapqkz.lo libsla_la-moon.lo \
+	libsla_la-mxm.lo libsla_la-mxv.lo libsla_la-nut.lo \
+	libsla_la-nutc.lo libsla_la-nutc80.lo libsla_la-oap.lo \
+	libsla_la-oapqk.lo libsla_la-obs.lo libsla_la-pa.lo \
+	libsla_la-pav.lo libsla_la-pcd.lo libsla_la-pda2h.lo \
+	libsla_la-pdq2h.lo libsla_la-permut.lo libsla_la-pertel.lo \
+	libsla_la-pertue.lo libsla_la-planel.lo libsla_la-planet.lo \
+	libsla_la-plante.lo libsla_la-plantu.lo libsla_la-pm.lo \
+	libsla_la-polmo.lo libsla_la-prebn.lo libsla_la-prec.lo \
+	libsla_la-precl.lo libsla_la-preces.lo libsla_la-prenut.lo \
+	libsla_la-pv2el.lo libsla_la-pv2ue.lo libsla_la-pvobs.lo \
+	libsla_la-pxy.lo libsla_la-range.lo libsla_la-ranorm.lo \
+	libsla_la-rcc.lo libsla_la-rdplan.lo libsla_la-refco.lo \
+	libsla_la-refcoq.lo libsla_la-refro.lo libsla_la-refv.lo \
+	libsla_la-refz.lo libsla_la-rverot.lo libsla_la-rvgalc.lo \
+	libsla_la-rvlg.lo libsla_la-rvlsrd.lo libsla_la-rvlsrk.lo \
+	libsla_la-s2tp.lo libsla_la-sep.lo libsla_la-sepv.lo \
+	libsla_la-smat.lo libsla_la-subet.lo libsla_la-supgal.lo \
+	libsla_la-svd.lo libsla_la-svdcov.lo libsla_la-svdsol.lo \
+	libsla_la-tp2s.lo libsla_la-tp2v.lo libsla_la-tps2c.lo \
+	libsla_la-tpv2c.lo libsla_la-ue2el.lo libsla_la-ue2pv.lo \
+	libsla_la-unpcd.lo libsla_la-v2tp.lo libsla_la-vdv.lo \
+	libsla_la-veri.lo libsla_la-vers.lo libsla_la-vn.lo \
+	libsla_la-vxv.lo libsla_la-wait.lo libsla_la-xy2xy.lo \
+	libsla_la-zd.lo
+am__objects_4 = sla.lo
+am__objects_5 = libsla_la-random.lo libsla_la-gresid.lo
+am_libsla_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+	$(am__objects_3) $(am__objects_4) $(am__objects_5)
+libsla_la_OBJECTS = $(am_libsla_la_OBJECTS)
+am_slaTest_OBJECTS = slaTest.$(OBJEXT)
+slaTest_OBJECTS = $(am_slaTest_OBJECTS)
+slaTest_DEPENDENCIES = libsla.la
+am_sla_test_OBJECTS = sla_test.$(OBJEXT)
+sla_test_OBJECTS = $(am_sla_test_OBJECTS)
+sla_test_DEPENDENCIES = libsla.la
+dist_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(dist_bin_SCRIPTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+FCCOMPILE = $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(STAR_FCFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTFCCOMPILE = $(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(AM_FCFLAGS) \
+	$(FCFLAGS)
+FCLD = $(FC)
+FCLINK = $(LIBTOOL) --mode=link $(FC) $(AM_FCFLAGS) $(FCFLAGS) \
+	$(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(STAR_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) \
+	$(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libsla_la_SOURCES) $(slaTest_SOURCES) $(sla_test_SOURCES)
+DIST_SOURCES = $(libsla_la_SOURCES) $(slaTest_SOURCES) \
+	$(sla_test_SOURCES)
+dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
+dist_starnewsDATA_INSTALL = $(INSTALL_DATA)
+stardocsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(dist_pkgdata_DATA) $(dist_starnews_DATA) $(stardocs_DATA)
+cincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(cinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+# Use AM_MAKEFLAGS to pass the value of the MANIFEST variable into
+# submakes (not all makes do this automatically).  This can still be
+# overridden with a setting of this variable on the $(MAKE) command
+# line.  I think we really shouldn't be setting this variable -- if
+# it causes a problem for anyone, we should edit a new variable in to
+# the .am templates.
+AM_MAKEFLAGS = MANIFEST=$(MANIFEST)
+REAL_INSTALL = install-am
+# Set to : to emit manifest lines, too
+# (don't actually do this here -- it's done within install-manifest below).
+MANIFEST = false
+ACLOCAL = ${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run autoconf
+AUTOHEADER = ${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run autoheader
+AUTOMAKE = ${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run automake-1.9
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+C_FC_FCLINK_MAGIC = 
+C_FC_PPFC_FCLINK_MAGIC = 
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = grep -E
+EXEEXT = 
+F77 = f95
+FC = f95
+FCFLAGS = -g -O2
+FCLIBS =  -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath
+FFLAGS = -g -O2
+FPP = f95 -E
+FPPFLAGS =  
+FPPFLAGS_DEF = -D
+FPPFLAGS_F = 
+FPP_COMPILE_EXT = F
+FPP_MAKE_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
+FPP_OUTPUT = >$@
+FPP_PREPROCESS_EXT = f_in
+FPP_SRC_EXT = F
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LATEX2DVI = $$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1"
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAKEINFO = ${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run makeinfo
+NOPIC_FALSE = 
+NOPIC_TRUE = #
+OBJEXT = o
+PACKAGE = sla
+PACKAGE_BUGREPORT = ussc@star.rl.ac.uk
+PACKAGE_NAME = sla
+PACKAGE_STRING = sla 2.5-4
+PACKAGE_TARNAME = sla
+PACKAGE_VERSION = 2.5-4
+PACKAGE_VERSION_INTEGER = 2005004
+PACKAGE_VERSION_MAJOR = 2
+PACKAGE_VERSION_MINOR = 5
+PACKAGE_VERSION_RELEASE = 4
+PATH_SEPARATOR = :
+PAX = /usr/bin/pax
+PREDIST = #
+RANLIB = ranlib
+REAL_FUNCTION_TYPE = float
+SET_MAKE = 
+SHELL = /bin/sh
+STAR2HTML = star2html
+STARLINK = /home/vmwareshare/rhel30linux_i386/build/build-root
+STAR_CPPFLAGS = -I/home/vmwareshare/rhel30linux_i386/build/build-root/include
+STAR_DEPENDENCIES_ATTRIBUTES = 
+STAR_DEPENDENCIES_CHILDREN = <sourceset>star2html</sourceset>
+STAR_DOCUMENTATION =  sun67
+STAR_FCFLAGS = -I/home/vmwareshare/rhel30linux_i386/build/build-root/include 
+STAR_FFLAGS = -I/home/vmwareshare/rhel30linux_i386/build/build-root/include 
+STAR_LATEX_DOCUMENTATION =  sun67.tex sun67.ps sun67.htx_tar
+STAR_LDFLAGS = -L/home/vmwareshare/rhel30linux_i386/build/build-root/lib
+STAR_MANIFEST_DIR = $(prefix)/manifests
+STRIP = strip
+TAR = /usr/bin/tar
+VERSION = 2.5-4
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = f95
+ac_ct_FC = f95
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libsla_la_version_info = 7:0:0
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+stardocsdir = ${prefix}/docs
+staretcdir = ${prefix}/etc
+starexamplesdir = ${prefix}/examples
+starfacsdir = ${prefix}/help
+starhelpdir = ${prefix}/help
+starnewsdir = ${prefix}/news
+sysconfdir = ${prefix}/etc
+target_alias = 
+cincludedir = $(includedir)/star
+dist_bin_SCRIPTS = sla_link sla_link_adam
+dist_pkgdata_DATA = SLA_CONDITIONS read.me
+EXTRA_DIST = Notes
+lib_LTLIBRARIES = libsla.la
+stardocs_DATA =  sun67.tex sun67.ps sun67.htx_tar
+libsla_la_SOURCES = \
+        $(PRIVATE_INCLUDES) \
+        $(PUBLIC_INCLUDES) \
+	$(F_ROUTINES) \
+	$(C_ROUTINES) \
+	$(FPP_ROUTINES)
+
+libsla_la_LIBADD = $(LTLIBOBJS)
+libsla_la_LDFLAGS = -version-info $(libsla_la_version_info)
+cinclude_HEADERS = $(PUBLIC_C_INCLUDES)
+
+# Make all library code position independent. This is handy for creating
+# shareable libraries from the static ones (Java JNI libraries).
+libsla_la_FCFLAGS = $(AM_FCFLAGS) -prefer-pic
+PUBLIC_F_INCLUDES = 
+PUBLIC_C_INCLUDES = slalib.h
+PRIVATE_INCLUDES = f77.h
+PUBLIC_INCLUDES = $(PUBLIC_F_INCLUDES) $(PUBLIC_C_INCLUDES)
+FPP_ROUTINES = \
+	random.F \
+	gresid.F
+
+C_ROUTINES = sla.c
+F_ROUTINES = addet.f afin.f airmas.f altaz.f amp.f ampqk.f aop.f	\
+    aoppa.f aoppat.f aopqk.f atmdsp.f atms.f atmt.f av2m.f bear.f	\
+    caf2r.f caldj.f calyd.f cc2s.f cc62s.f cd2tf.f cldj.f clyd.f	\
+    combn.f cr2af.f cr2tf.f cs2c.f cs2c6.f ctf2d.f ctf2r.f daf2r.f	\
+    dafin.f dat.f dav2m.f dbear.f dbjin.f dc62s.f dcc2s.f dcmpf.f	\
+    dcs2c.f dd2tf.f de2h.f deuler.f dfltin.f dh2e.f dimxv.f djcal.f	\
+    djcl.f dm2av.f dmat.f dmoon.f dmxm.f dmxv.f dpav.f dr2af.f dr2tf.f	\
+    drange.f dranrm.f ds2c6.f ds2tp.f dsep.f dsepv.f dt.f dtf2d.f	\
+    dtf2r.f dtp2s.f dtp2v.f dtps2c.f dtpv2c.f dtt.f dv2tp.f dvdv.f	\
+    dvn.f dvxv.f e2h.f earth.f ecleq.f ecmat.f ecor.f eg50.f el2ue.f	\
+    epb.f epb2d.f epco.f epj.f epj2d.f epv.f eqecl.f eqeqx.f eqgal.f	\
+    etrms.f euler.f evp.f fitxy.f fk425.f fk45z.f fk524.f fk52h.f	\
+    fk54z.f fk5hz.f flotin.f galeq.f galsup.f ge50.f geoc.f gmst.f	\
+    gmsta.f h2e.f h2fk5.f hfk5z.f idchf.f idchi.f imxv.f intin.f	\
+    invf.f kbj.f m2av.f map.f mappa.f mapqk.f mapqkz.f moon.f mxm.f	\
+    mxv.f nut.f nutc.f nutc80.f oap.f oapqk.f obs.f pa.f pav.f pcd.f	\
+    pda2h.f pdq2h.f permut.f pertel.f pertue.f planel.f planet.f	\
+    plante.f plantu.f pm.f polmo.f prebn.f prec.f precl.f preces.f	\
+    prenut.f pv2el.f pv2ue.f pvobs.f pxy.f range.f ranorm.f rcc.f	\
+    rdplan.f refco.f refcoq.f refro.f refv.f refz.f rverot.f rvgalc.f	\
+    rvlg.f rvlsrd.f rvlsrk.f s2tp.f sep.f sepv.f smat.f subet.f		\
+    supgal.f svd.f svdcov.f svdsol.f tp2s.f tp2v.f tps2c.f tpv2c.f	\
+    ue2el.f ue2pv.f unpcd.f v2tp.f vdv.f veri.f vers.f vn.f vxv.f	\
+    wait.f xy2xy.f zd.f
+
+TESTS = sla_test slaTest
+sla_test_SOURCES = sla_test.f
+sla_test_LDADD = libsla.la
+slaTest_SOURCES = slaTest.c
+slaTest_LDADD = libsla.la  -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath
+dist_starnews_DATA = sla.news
+DISTCLEANFILES = gresid.F random.F wait.f
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .F .f_in .c .dvi .f .htx_tar .lo .o .obj .pdf .ps .tex
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --startree '; \
+	      cd $(srcdir) && $(AUTOMAKE) --startree  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --startree  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --startree  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+component.xml: $(top_builddir)/config.status $(srcdir)/component.xml.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vers.f: $(top_builddir)/config.status $(srcdir)/vers.f.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+veri.f: $(top_builddir)/config.status $(srcdir)/veri.f.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+f77.h: $(top_builddir)/config.status $(srcdir)/f77.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	    if $(MANIFEST); then \
+	      echo "MANIFEST:$(DESTDIR)$(libdir)/$$f"; \
+	      expr $$p : '.*\.la$$' >/dev/null || \
+		{ echo "Installing non-la file $$p!"; exit 1; }; \
+	      (. ./$$p; \
+		if test -n "$$library_names"; then \
+		  for l in $$library_names; do \
+		    echo "MANIFEST:$(DESTDIR)$$libdir/$$l"; \
+		  done; \
+		fi; \
+		if test -n "$$old_library"; then \
+		  echo "MANIFEST:$(DESTDIR)$$libdir/$$old_library"; \
+		else :; fi; \
+              ); \
+	    else :; fi; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libsla.la: $(libsla_la_OBJECTS) $(libsla_la_DEPENDENCIES) 
+	$(FCLINK) -rpath $(libdir) $(libsla_la_LDFLAGS) $(libsla_la_OBJECTS) $(libsla_la_LIBADD) $(C_FC_PPFC_FCLINK_MAGIC) $(LIBS)
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+slaTest$(EXEEXT): $(slaTest_OBJECTS) $(slaTest_DEPENDENCIES) 
+	@rm -f slaTest$(EXEEXT)
+	$(LINK) $(slaTest_LDFLAGS) $(slaTest_OBJECTS) $(slaTest_LDADD) $(LIBS) 
+sla_test$(EXEEXT): $(sla_test_OBJECTS) $(sla_test_DEPENDENCIES) 
+	@rm -f sla_test$(EXEEXT)
+	$(FCLINK) $(sla_test_LDFLAGS) $(sla_test_OBJECTS) $(sla_test_LDADD) $(LIBS) $(C_FC_PPFC_FCLINK_MAGIC)
+install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f $$d$$p; then \
+	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	    echo " $(dist_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	    $(dist_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+	    $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(bindir)/$$f" || :; \
+	  else :; fi; \
+	done
+
+uninstall-dist_binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include $(DEPDIR)/gresid.F__vms
+include $(DEPDIR)/gresid.F__win
+include $(DEPDIR)/gresid.Fdefault
+include $(DEPDIR)/random.F__vms
+include $(DEPDIR)/random.F__win
+include $(DEPDIR)/random.Fdefault
+include $(DEPDIR)/rtl_random.Plo
+include $(DEPDIR)/wait.f__vms
+include $(DEPDIR)/wait.f__win
+include $(DEPDIR)/wait.fdefault
+include ./$(DEPDIR)/sla.Plo
+include ./$(DEPDIR)/slaTest.Po
+
+.F.o:
+	$(FCCOMPILE) -c -o $@ $<
+
+.F.obj:
+	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.F.lo:
+	$(LTFCCOMPILE) -c -o $@ $<
+
+libsla_la-random.lo: random.F
+	$(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-random.lo `test -f 'random.F' || echo '$(srcdir)/'`random.F
+
+libsla_la-gresid.lo: gresid.F
+	$(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gresid.lo `test -f 'gresid.F' || echo '$(srcdir)/'`gresid.F
+
+# The following rule preprocesses a Fortran preprocessor input file
+# foo.f_in into a compiler input file foo.f.
+.f_in.f:
+	$(FPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $< >$@
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LTCOMPILE) -c -o $@ $<
+
+.f.o:
+	$(FCCOMPILE) -c -o $@ $<
+
+.f.obj:
+	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+	$(LTFCCOMPILE) -c -o $@ $<
+
+libsla_la-addet.lo: addet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-addet.lo `test -f 'addet.f' || echo '$(srcdir)/'`addet.f
+
+libsla_la-afin.lo: afin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-afin.lo `test -f 'afin.f' || echo '$(srcdir)/'`afin.f
+
+libsla_la-airmas.lo: airmas.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-airmas.lo `test -f 'airmas.f' || echo '$(srcdir)/'`airmas.f
+
+libsla_la-altaz.lo: altaz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-altaz.lo `test -f 'altaz.f' || echo '$(srcdir)/'`altaz.f
+
+libsla_la-amp.lo: amp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-amp.lo `test -f 'amp.f' || echo '$(srcdir)/'`amp.f
+
+libsla_la-ampqk.lo: ampqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ampqk.lo `test -f 'ampqk.f' || echo '$(srcdir)/'`ampqk.f
+
+libsla_la-aop.lo: aop.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aop.lo `test -f 'aop.f' || echo '$(srcdir)/'`aop.f
+
+libsla_la-aoppa.lo: aoppa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aoppa.lo `test -f 'aoppa.f' || echo '$(srcdir)/'`aoppa.f
+
+libsla_la-aoppat.lo: aoppat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aoppat.lo `test -f 'aoppat.f' || echo '$(srcdir)/'`aoppat.f
+
+libsla_la-aopqk.lo: aopqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aopqk.lo `test -f 'aopqk.f' || echo '$(srcdir)/'`aopqk.f
+
+libsla_la-atmdsp.lo: atmdsp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atmdsp.lo `test -f 'atmdsp.f' || echo '$(srcdir)/'`atmdsp.f
+
+libsla_la-atms.lo: atms.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atms.lo `test -f 'atms.f' || echo '$(srcdir)/'`atms.f
+
+libsla_la-atmt.lo: atmt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atmt.lo `test -f 'atmt.f' || echo '$(srcdir)/'`atmt.f
+
+libsla_la-av2m.lo: av2m.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-av2m.lo `test -f 'av2m.f' || echo '$(srcdir)/'`av2m.f
+
+libsla_la-bear.lo: bear.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-bear.lo `test -f 'bear.f' || echo '$(srcdir)/'`bear.f
+
+libsla_la-caf2r.lo: caf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-caf2r.lo `test -f 'caf2r.f' || echo '$(srcdir)/'`caf2r.f
+
+libsla_la-caldj.lo: caldj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-caldj.lo `test -f 'caldj.f' || echo '$(srcdir)/'`caldj.f
+
+libsla_la-calyd.lo: calyd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-calyd.lo `test -f 'calyd.f' || echo '$(srcdir)/'`calyd.f
+
+libsla_la-cc2s.lo: cc2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cc2s.lo `test -f 'cc2s.f' || echo '$(srcdir)/'`cc2s.f
+
+libsla_la-cc62s.lo: cc62s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cc62s.lo `test -f 'cc62s.f' || echo '$(srcdir)/'`cc62s.f
+
+libsla_la-cd2tf.lo: cd2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cd2tf.lo `test -f 'cd2tf.f' || echo '$(srcdir)/'`cd2tf.f
+
+libsla_la-cldj.lo: cldj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cldj.lo `test -f 'cldj.f' || echo '$(srcdir)/'`cldj.f
+
+libsla_la-clyd.lo: clyd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-clyd.lo `test -f 'clyd.f' || echo '$(srcdir)/'`clyd.f
+
+libsla_la-combn.lo: combn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-combn.lo `test -f 'combn.f' || echo '$(srcdir)/'`combn.f
+
+libsla_la-cr2af.lo: cr2af.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cr2af.lo `test -f 'cr2af.f' || echo '$(srcdir)/'`cr2af.f
+
+libsla_la-cr2tf.lo: cr2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cr2tf.lo `test -f 'cr2tf.f' || echo '$(srcdir)/'`cr2tf.f
+
+libsla_la-cs2c.lo: cs2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cs2c.lo `test -f 'cs2c.f' || echo '$(srcdir)/'`cs2c.f
+
+libsla_la-cs2c6.lo: cs2c6.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cs2c6.lo `test -f 'cs2c6.f' || echo '$(srcdir)/'`cs2c6.f
+
+libsla_la-ctf2d.lo: ctf2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ctf2d.lo `test -f 'ctf2d.f' || echo '$(srcdir)/'`ctf2d.f
+
+libsla_la-ctf2r.lo: ctf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ctf2r.lo `test -f 'ctf2r.f' || echo '$(srcdir)/'`ctf2r.f
+
+libsla_la-daf2r.lo: daf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-daf2r.lo `test -f 'daf2r.f' || echo '$(srcdir)/'`daf2r.f
+
+libsla_la-dafin.lo: dafin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dafin.lo `test -f 'dafin.f' || echo '$(srcdir)/'`dafin.f
+
+libsla_la-dat.lo: dat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dat.lo `test -f 'dat.f' || echo '$(srcdir)/'`dat.f
+
+libsla_la-dav2m.lo: dav2m.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dav2m.lo `test -f 'dav2m.f' || echo '$(srcdir)/'`dav2m.f
+
+libsla_la-dbear.lo: dbear.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dbear.lo `test -f 'dbear.f' || echo '$(srcdir)/'`dbear.f
+
+libsla_la-dbjin.lo: dbjin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dbjin.lo `test -f 'dbjin.f' || echo '$(srcdir)/'`dbjin.f
+
+libsla_la-dc62s.lo: dc62s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dc62s.lo `test -f 'dc62s.f' || echo '$(srcdir)/'`dc62s.f
+
+libsla_la-dcc2s.lo: dcc2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcc2s.lo `test -f 'dcc2s.f' || echo '$(srcdir)/'`dcc2s.f
+
+libsla_la-dcmpf.lo: dcmpf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcmpf.lo `test -f 'dcmpf.f' || echo '$(srcdir)/'`dcmpf.f
+
+libsla_la-dcs2c.lo: dcs2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcs2c.lo `test -f 'dcs2c.f' || echo '$(srcdir)/'`dcs2c.f
+
+libsla_la-dd2tf.lo: dd2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dd2tf.lo `test -f 'dd2tf.f' || echo '$(srcdir)/'`dd2tf.f
+
+libsla_la-de2h.lo: de2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-de2h.lo `test -f 'de2h.f' || echo '$(srcdir)/'`de2h.f
+
+libsla_la-deuler.lo: deuler.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-deuler.lo `test -f 'deuler.f' || echo '$(srcdir)/'`deuler.f
+
+libsla_la-dfltin.lo: dfltin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dfltin.lo `test -f 'dfltin.f' || echo '$(srcdir)/'`dfltin.f
+
+libsla_la-dh2e.lo: dh2e.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dh2e.lo `test -f 'dh2e.f' || echo '$(srcdir)/'`dh2e.f
+
+libsla_la-dimxv.lo: dimxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dimxv.lo `test -f 'dimxv.f' || echo '$(srcdir)/'`dimxv.f
+
+libsla_la-djcal.lo: djcal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-djcal.lo `test -f 'djcal.f' || echo '$(srcdir)/'`djcal.f
+
+libsla_la-djcl.lo: djcl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-djcl.lo `test -f 'djcl.f' || echo '$(srcdir)/'`djcl.f
+
+libsla_la-dm2av.lo: dm2av.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dm2av.lo `test -f 'dm2av.f' || echo '$(srcdir)/'`dm2av.f
+
+libsla_la-dmat.lo: dmat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmat.lo `test -f 'dmat.f' || echo '$(srcdir)/'`dmat.f
+
+libsla_la-dmoon.lo: dmoon.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmoon.lo `test -f 'dmoon.f' || echo '$(srcdir)/'`dmoon.f
+
+libsla_la-dmxm.lo: dmxm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmxm.lo `test -f 'dmxm.f' || echo '$(srcdir)/'`dmxm.f
+
+libsla_la-dmxv.lo: dmxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmxv.lo `test -f 'dmxv.f' || echo '$(srcdir)/'`dmxv.f
+
+libsla_la-dpav.lo: dpav.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dpav.lo `test -f 'dpav.f' || echo '$(srcdir)/'`dpav.f
+
+libsla_la-dr2af.lo: dr2af.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dr2af.lo `test -f 'dr2af.f' || echo '$(srcdir)/'`dr2af.f
+
+libsla_la-dr2tf.lo: dr2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dr2tf.lo `test -f 'dr2tf.f' || echo '$(srcdir)/'`dr2tf.f
+
+libsla_la-drange.lo: drange.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-drange.lo `test -f 'drange.f' || echo '$(srcdir)/'`drange.f
+
+libsla_la-dranrm.lo: dranrm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dranrm.lo `test -f 'dranrm.f' || echo '$(srcdir)/'`dranrm.f
+
+libsla_la-ds2c6.lo: ds2c6.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ds2c6.lo `test -f 'ds2c6.f' || echo '$(srcdir)/'`ds2c6.f
+
+libsla_la-ds2tp.lo: ds2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ds2tp.lo `test -f 'ds2tp.f' || echo '$(srcdir)/'`ds2tp.f
+
+libsla_la-dsep.lo: dsep.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dsep.lo `test -f 'dsep.f' || echo '$(srcdir)/'`dsep.f
+
+libsla_la-dsepv.lo: dsepv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dsepv.lo `test -f 'dsepv.f' || echo '$(srcdir)/'`dsepv.f
+
+libsla_la-dt.lo: dt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dt.lo `test -f 'dt.f' || echo '$(srcdir)/'`dt.f
+
+libsla_la-dtf2d.lo: dtf2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtf2d.lo `test -f 'dtf2d.f' || echo '$(srcdir)/'`dtf2d.f
+
+libsla_la-dtf2r.lo: dtf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtf2r.lo `test -f 'dtf2r.f' || echo '$(srcdir)/'`dtf2r.f
+
+libsla_la-dtp2s.lo: dtp2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtp2s.lo `test -f 'dtp2s.f' || echo '$(srcdir)/'`dtp2s.f
+
+libsla_la-dtp2v.lo: dtp2v.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtp2v.lo `test -f 'dtp2v.f' || echo '$(srcdir)/'`dtp2v.f
+
+libsla_la-dtps2c.lo: dtps2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtps2c.lo `test -f 'dtps2c.f' || echo '$(srcdir)/'`dtps2c.f
+
+libsla_la-dtpv2c.lo: dtpv2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtpv2c.lo `test -f 'dtpv2c.f' || echo '$(srcdir)/'`dtpv2c.f
+
+libsla_la-dtt.lo: dtt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtt.lo `test -f 'dtt.f' || echo '$(srcdir)/'`dtt.f
+
+libsla_la-dv2tp.lo: dv2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dv2tp.lo `test -f 'dv2tp.f' || echo '$(srcdir)/'`dv2tp.f
+
+libsla_la-dvdv.lo: dvdv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvdv.lo `test -f 'dvdv.f' || echo '$(srcdir)/'`dvdv.f
+
+libsla_la-dvn.lo: dvn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvn.lo `test -f 'dvn.f' || echo '$(srcdir)/'`dvn.f
+
+libsla_la-dvxv.lo: dvxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvxv.lo `test -f 'dvxv.f' || echo '$(srcdir)/'`dvxv.f
+
+libsla_la-e2h.lo: e2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-e2h.lo `test -f 'e2h.f' || echo '$(srcdir)/'`e2h.f
+
+libsla_la-earth.lo: earth.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-earth.lo `test -f 'earth.f' || echo '$(srcdir)/'`earth.f
+
+libsla_la-ecleq.lo: ecleq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecleq.lo `test -f 'ecleq.f' || echo '$(srcdir)/'`ecleq.f
+
+libsla_la-ecmat.lo: ecmat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecmat.lo `test -f 'ecmat.f' || echo '$(srcdir)/'`ecmat.f
+
+libsla_la-ecor.lo: ecor.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecor.lo `test -f 'ecor.f' || echo '$(srcdir)/'`ecor.f
+
+libsla_la-eg50.lo: eg50.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eg50.lo `test -f 'eg50.f' || echo '$(srcdir)/'`eg50.f
+
+libsla_la-el2ue.lo: el2ue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-el2ue.lo `test -f 'el2ue.f' || echo '$(srcdir)/'`el2ue.f
+
+libsla_la-epb.lo: epb.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epb.lo `test -f 'epb.f' || echo '$(srcdir)/'`epb.f
+
+libsla_la-epb2d.lo: epb2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epb2d.lo `test -f 'epb2d.f' || echo '$(srcdir)/'`epb2d.f
+
+libsla_la-epco.lo: epco.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epco.lo `test -f 'epco.f' || echo '$(srcdir)/'`epco.f
+
+libsla_la-epj.lo: epj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epj.lo `test -f 'epj.f' || echo '$(srcdir)/'`epj.f
+
+libsla_la-epj2d.lo: epj2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epj2d.lo `test -f 'epj2d.f' || echo '$(srcdir)/'`epj2d.f
+
+libsla_la-epv.lo: epv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epv.lo `test -f 'epv.f' || echo '$(srcdir)/'`epv.f
+
+libsla_la-eqecl.lo: eqecl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqecl.lo `test -f 'eqecl.f' || echo '$(srcdir)/'`eqecl.f
+
+libsla_la-eqeqx.lo: eqeqx.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqeqx.lo `test -f 'eqeqx.f' || echo '$(srcdir)/'`eqeqx.f
+
+libsla_la-eqgal.lo: eqgal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqgal.lo `test -f 'eqgal.f' || echo '$(srcdir)/'`eqgal.f
+
+libsla_la-etrms.lo: etrms.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-etrms.lo `test -f 'etrms.f' || echo '$(srcdir)/'`etrms.f
+
+libsla_la-euler.lo: euler.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-euler.lo `test -f 'euler.f' || echo '$(srcdir)/'`euler.f
+
+libsla_la-evp.lo: evp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-evp.lo `test -f 'evp.f' || echo '$(srcdir)/'`evp.f
+
+libsla_la-fitxy.lo: fitxy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fitxy.lo `test -f 'fitxy.f' || echo '$(srcdir)/'`fitxy.f
+
+libsla_la-fk425.lo: fk425.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk425.lo `test -f 'fk425.f' || echo '$(srcdir)/'`fk425.f
+
+libsla_la-fk45z.lo: fk45z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk45z.lo `test -f 'fk45z.f' || echo '$(srcdir)/'`fk45z.f
+
+libsla_la-fk524.lo: fk524.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk524.lo `test -f 'fk524.f' || echo '$(srcdir)/'`fk524.f
+
+libsla_la-fk52h.lo: fk52h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk52h.lo `test -f 'fk52h.f' || echo '$(srcdir)/'`fk52h.f
+
+libsla_la-fk54z.lo: fk54z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk54z.lo `test -f 'fk54z.f' || echo '$(srcdir)/'`fk54z.f
+
+libsla_la-fk5hz.lo: fk5hz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk5hz.lo `test -f 'fk5hz.f' || echo '$(srcdir)/'`fk5hz.f
+
+libsla_la-flotin.lo: flotin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-flotin.lo `test -f 'flotin.f' || echo '$(srcdir)/'`flotin.f
+
+libsla_la-galeq.lo: galeq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-galeq.lo `test -f 'galeq.f' || echo '$(srcdir)/'`galeq.f
+
+libsla_la-galsup.lo: galsup.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-galsup.lo `test -f 'galsup.f' || echo '$(srcdir)/'`galsup.f
+
+libsla_la-ge50.lo: ge50.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ge50.lo `test -f 'ge50.f' || echo '$(srcdir)/'`ge50.f
+
+libsla_la-geoc.lo: geoc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-geoc.lo `test -f 'geoc.f' || echo '$(srcdir)/'`geoc.f
+
+libsla_la-gmst.lo: gmst.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gmst.lo `test -f 'gmst.f' || echo '$(srcdir)/'`gmst.f
+
+libsla_la-gmsta.lo: gmsta.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gmsta.lo `test -f 'gmsta.f' || echo '$(srcdir)/'`gmsta.f
+
+libsla_la-h2e.lo: h2e.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-h2e.lo `test -f 'h2e.f' || echo '$(srcdir)/'`h2e.f
+
+libsla_la-h2fk5.lo: h2fk5.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-h2fk5.lo `test -f 'h2fk5.f' || echo '$(srcdir)/'`h2fk5.f
+
+libsla_la-hfk5z.lo: hfk5z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-hfk5z.lo `test -f 'hfk5z.f' || echo '$(srcdir)/'`hfk5z.f
+
+libsla_la-idchf.lo: idchf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-idchf.lo `test -f 'idchf.f' || echo '$(srcdir)/'`idchf.f
+
+libsla_la-idchi.lo: idchi.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-idchi.lo `test -f 'idchi.f' || echo '$(srcdir)/'`idchi.f
+
+libsla_la-imxv.lo: imxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-imxv.lo `test -f 'imxv.f' || echo '$(srcdir)/'`imxv.f
+
+libsla_la-intin.lo: intin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-intin.lo `test -f 'intin.f' || echo '$(srcdir)/'`intin.f
+
+libsla_la-invf.lo: invf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-invf.lo `test -f 'invf.f' || echo '$(srcdir)/'`invf.f
+
+libsla_la-kbj.lo: kbj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-kbj.lo `test -f 'kbj.f' || echo '$(srcdir)/'`kbj.f
+
+libsla_la-m2av.lo: m2av.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-m2av.lo `test -f 'm2av.f' || echo '$(srcdir)/'`m2av.f
+
+libsla_la-map.lo: map.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-map.lo `test -f 'map.f' || echo '$(srcdir)/'`map.f
+
+libsla_la-mappa.lo: mappa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mappa.lo `test -f 'mappa.f' || echo '$(srcdir)/'`mappa.f
+
+libsla_la-mapqk.lo: mapqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mapqk.lo `test -f 'mapqk.f' || echo '$(srcdir)/'`mapqk.f
+
+libsla_la-mapqkz.lo: mapqkz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mapqkz.lo `test -f 'mapqkz.f' || echo '$(srcdir)/'`mapqkz.f
+
+libsla_la-moon.lo: moon.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-moon.lo `test -f 'moon.f' || echo '$(srcdir)/'`moon.f
+
+libsla_la-mxm.lo: mxm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mxm.lo `test -f 'mxm.f' || echo '$(srcdir)/'`mxm.f
+
+libsla_la-mxv.lo: mxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mxv.lo `test -f 'mxv.f' || echo '$(srcdir)/'`mxv.f
+
+libsla_la-nut.lo: nut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nut.lo `test -f 'nut.f' || echo '$(srcdir)/'`nut.f
+
+libsla_la-nutc.lo: nutc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nutc.lo `test -f 'nutc.f' || echo '$(srcdir)/'`nutc.f
+
+libsla_la-nutc80.lo: nutc80.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nutc80.lo `test -f 'nutc80.f' || echo '$(srcdir)/'`nutc80.f
+
+libsla_la-oap.lo: oap.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-oap.lo `test -f 'oap.f' || echo '$(srcdir)/'`oap.f
+
+libsla_la-oapqk.lo: oapqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-oapqk.lo `test -f 'oapqk.f' || echo '$(srcdir)/'`oapqk.f
+
+libsla_la-obs.lo: obs.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-obs.lo `test -f 'obs.f' || echo '$(srcdir)/'`obs.f
+
+libsla_la-pa.lo: pa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pa.lo `test -f 'pa.f' || echo '$(srcdir)/'`pa.f
+
+libsla_la-pav.lo: pav.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pav.lo `test -f 'pav.f' || echo '$(srcdir)/'`pav.f
+
+libsla_la-pcd.lo: pcd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pcd.lo `test -f 'pcd.f' || echo '$(srcdir)/'`pcd.f
+
+libsla_la-pda2h.lo: pda2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pda2h.lo `test -f 'pda2h.f' || echo '$(srcdir)/'`pda2h.f
+
+libsla_la-pdq2h.lo: pdq2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pdq2h.lo `test -f 'pdq2h.f' || echo '$(srcdir)/'`pdq2h.f
+
+libsla_la-permut.lo: permut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-permut.lo `test -f 'permut.f' || echo '$(srcdir)/'`permut.f
+
+libsla_la-pertel.lo: pertel.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pertel.lo `test -f 'pertel.f' || echo '$(srcdir)/'`pertel.f
+
+libsla_la-pertue.lo: pertue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pertue.lo `test -f 'pertue.f' || echo '$(srcdir)/'`pertue.f
+
+libsla_la-planel.lo: planel.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-planel.lo `test -f 'planel.f' || echo '$(srcdir)/'`planel.f
+
+libsla_la-planet.lo: planet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-planet.lo `test -f 'planet.f' || echo '$(srcdir)/'`planet.f
+
+libsla_la-plante.lo: plante.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-plante.lo `test -f 'plante.f' || echo '$(srcdir)/'`plante.f
+
+libsla_la-plantu.lo: plantu.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-plantu.lo `test -f 'plantu.f' || echo '$(srcdir)/'`plantu.f
+
+libsla_la-pm.lo: pm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pm.lo `test -f 'pm.f' || echo '$(srcdir)/'`pm.f
+
+libsla_la-polmo.lo: polmo.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-polmo.lo `test -f 'polmo.f' || echo '$(srcdir)/'`polmo.f
+
+libsla_la-prebn.lo: prebn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prebn.lo `test -f 'prebn.f' || echo '$(srcdir)/'`prebn.f
+
+libsla_la-prec.lo: prec.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prec.lo `test -f 'prec.f' || echo '$(srcdir)/'`prec.f
+
+libsla_la-precl.lo: precl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-precl.lo `test -f 'precl.f' || echo '$(srcdir)/'`precl.f
+
+libsla_la-preces.lo: preces.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-preces.lo `test -f 'preces.f' || echo '$(srcdir)/'`preces.f
+
+libsla_la-prenut.lo: prenut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prenut.lo `test -f 'prenut.f' || echo '$(srcdir)/'`prenut.f
+
+libsla_la-pv2el.lo: pv2el.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pv2el.lo `test -f 'pv2el.f' || echo '$(srcdir)/'`pv2el.f
+
+libsla_la-pv2ue.lo: pv2ue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pv2ue.lo `test -f 'pv2ue.f' || echo '$(srcdir)/'`pv2ue.f
+
+libsla_la-pvobs.lo: pvobs.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pvobs.lo `test -f 'pvobs.f' || echo '$(srcdir)/'`pvobs.f
+
+libsla_la-pxy.lo: pxy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pxy.lo `test -f 'pxy.f' || echo '$(srcdir)/'`pxy.f
+
+libsla_la-range.lo: range.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-range.lo `test -f 'range.f' || echo '$(srcdir)/'`range.f
+
+libsla_la-ranorm.lo: ranorm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ranorm.lo `test -f 'ranorm.f' || echo '$(srcdir)/'`ranorm.f
+
+libsla_la-rcc.lo: rcc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rcc.lo `test -f 'rcc.f' || echo '$(srcdir)/'`rcc.f
+
+libsla_la-rdplan.lo: rdplan.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rdplan.lo `test -f 'rdplan.f' || echo '$(srcdir)/'`rdplan.f
+
+libsla_la-refco.lo: refco.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refco.lo `test -f 'refco.f' || echo '$(srcdir)/'`refco.f
+
+libsla_la-refcoq.lo: refcoq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refcoq.lo `test -f 'refcoq.f' || echo '$(srcdir)/'`refcoq.f
+
+libsla_la-refro.lo: refro.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refro.lo `test -f 'refro.f' || echo '$(srcdir)/'`refro.f
+
+libsla_la-refv.lo: refv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refv.lo `test -f 'refv.f' || echo '$(srcdir)/'`refv.f
+
+libsla_la-refz.lo: refz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refz.lo `test -f 'refz.f' || echo '$(srcdir)/'`refz.f
+
+libsla_la-rverot.lo: rverot.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rverot.lo `test -f 'rverot.f' || echo '$(srcdir)/'`rverot.f
+
+libsla_la-rvgalc.lo: rvgalc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvgalc.lo `test -f 'rvgalc.f' || echo '$(srcdir)/'`rvgalc.f
+
+libsla_la-rvlg.lo: rvlg.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlg.lo `test -f 'rvlg.f' || echo '$(srcdir)/'`rvlg.f
+
+libsla_la-rvlsrd.lo: rvlsrd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlsrd.lo `test -f 'rvlsrd.f' || echo '$(srcdir)/'`rvlsrd.f
+
+libsla_la-rvlsrk.lo: rvlsrk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlsrk.lo `test -f 'rvlsrk.f' || echo '$(srcdir)/'`rvlsrk.f
+
+libsla_la-s2tp.lo: s2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-s2tp.lo `test -f 's2tp.f' || echo '$(srcdir)/'`s2tp.f
+
+libsla_la-sep.lo: sep.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-sep.lo `test -f 'sep.f' || echo '$(srcdir)/'`sep.f
+
+libsla_la-sepv.lo: sepv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-sepv.lo `test -f 'sepv.f' || echo '$(srcdir)/'`sepv.f
+
+libsla_la-smat.lo: smat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-smat.lo `test -f 'smat.f' || echo '$(srcdir)/'`smat.f
+
+libsla_la-subet.lo: subet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-subet.lo `test -f 'subet.f' || echo '$(srcdir)/'`subet.f
+
+libsla_la-supgal.lo: supgal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-supgal.lo `test -f 'supgal.f' || echo '$(srcdir)/'`supgal.f
+
+libsla_la-svd.lo: svd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svd.lo `test -f 'svd.f' || echo '$(srcdir)/'`svd.f
+
+libsla_la-svdcov.lo: svdcov.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svdcov.lo `test -f 'svdcov.f' || echo '$(srcdir)/'`svdcov.f
+
+libsla_la-svdsol.lo: svdsol.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svdsol.lo `test -f 'svdsol.f' || echo '$(srcdir)/'`svdsol.f
+
+libsla_la-tp2s.lo: tp2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tp2s.lo `test -f 'tp2s.f' || echo '$(srcdir)/'`tp2s.f
+
+libsla_la-tp2v.lo: tp2v.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tp2v.lo `test -f 'tp2v.f' || echo '$(srcdir)/'`tp2v.f
+
+libsla_la-tps2c.lo: tps2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tps2c.lo `test -f 'tps2c.f' || echo '$(srcdir)/'`tps2c.f
+
+libsla_la-tpv2c.lo: tpv2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tpv2c.lo `test -f 'tpv2c.f' || echo '$(srcdir)/'`tpv2c.f
+
+libsla_la-ue2el.lo: ue2el.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ue2el.lo `test -f 'ue2el.f' || echo '$(srcdir)/'`ue2el.f
+
+libsla_la-ue2pv.lo: ue2pv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ue2pv.lo `test -f 'ue2pv.f' || echo '$(srcdir)/'`ue2pv.f
+
+libsla_la-unpcd.lo: unpcd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-unpcd.lo `test -f 'unpcd.f' || echo '$(srcdir)/'`unpcd.f
+
+libsla_la-v2tp.lo: v2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-v2tp.lo `test -f 'v2tp.f' || echo '$(srcdir)/'`v2tp.f
+
+libsla_la-vdv.lo: vdv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vdv.lo `test -f 'vdv.f' || echo '$(srcdir)/'`vdv.f
+
+libsla_la-veri.lo: veri.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-veri.lo `test -f 'veri.f' || echo '$(srcdir)/'`veri.f
+
+libsla_la-vers.lo: vers.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vers.lo `test -f 'vers.f' || echo '$(srcdir)/'`vers.f
+
+libsla_la-vn.lo: vn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vn.lo `test -f 'vn.f' || echo '$(srcdir)/'`vn.f
+
+libsla_la-vxv.lo: vxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vxv.lo `test -f 'vxv.f' || echo '$(srcdir)/'`vxv.f
+
+libsla_la-wait.lo: wait.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-wait.lo `test -f 'wait.f' || echo '$(srcdir)/'`wait.f
+
+libsla_la-xy2xy.lo: xy2xy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-xy2xy.lo `test -f 'xy2xy.f' || echo '$(srcdir)/'`xy2xy.f
+
+libsla_la-zd.lo: zd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-zd.lo `test -f 'zd.f' || echo '$(srcdir)/'`zd.f
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)"
+	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
+	  $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(pkgdatadir)/$$f" || :; \
+	done
+
+uninstall-dist_pkgdataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	done
+install-dist_starnewsDATA: $(dist_starnews_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(starnewsdir)" || $(mkdir_p) "$(DESTDIR)$(starnewsdir)"
+	@list='$(dist_starnews_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(dist_starnewsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(starnewsdir)/$$f'"; \
+	  $(dist_starnewsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(starnewsdir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(starnewsdir)/$$f" || :; \
+	done
+
+uninstall-dist_starnewsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_starnews_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(starnewsdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(starnewsdir)/$$f"; \
+	done
+install-stardocsDATA: $(stardocs_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkdir_p) $(DESTDIR)$(stardocsdir)
+	@list='$(stardocs_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  if expr "x$$p" : 'x.*\.htx_tar$$' >/dev/null; then \
+	    if test -n "$(PAX)"; then \
+	      if $(MANIFEST); then \
+		$(PAX) -f $$d$$p | \
+		  sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \
+	      fi; \
+	      cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(PAX) -r); \
+	    elif test -n "$(TAR)"; then \
+	      if $(MANIFEST); then \
+	        cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpvf -) | sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \
+	      else \
+	        cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpf -); \
+	      fi; \
+	    else \
+	      echo "Neither tar nor pax!!!" >&2; \
+	      exit 1; \
+	    fi; \
+	  else \
+	    echo " $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f"; \
+	    $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f; \
+	    $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(stardocsdir)/$$f" || :; \
+	  fi; \
+	done
+
+uninstall-stardocsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(stardocs_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(stardocsdir)/$$f"; \
+	  rm -f $(DESTDIR)$(stardocsdir)/$$f; \
+	done
+install-cincludeHEADERS: $(cinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cincludedir)" || $(mkdir_p) "$(DESTDIR)$(cincludedir)"
+	@list='$(cinclude_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(cincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(cincludedir)/$$f'"; \
+	  $(cincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(cincludedir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(cincludedir)/$$f" || :; \
+	done
+
+uninstall-cincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cinclude_HEADERS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(cincludedir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(cincludedir)/$$f"; \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
+	srcdir=$(srcdir); export srcdir; \
+	list='$(TESTS)'; \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=./; \
+	    elif test -f $$tst; then dir=; \
+	    else dir="$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xpass=`expr $$xpass + 1`; \
+		failed=`expr $$failed + 1`; \
+		echo "XPASS: $$tst"; \
+	      ;; \
+	      *) \
+		echo "PASS: $$tst"; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xfail=`expr $$xfail + 1`; \
+		echo "XFAIL: $$tst"; \
+	      ;; \
+	      *) \
+		failed=`expr $$failed + 1`; \
+		echo "FAIL: $$tst"; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=`expr $$skip + 1`; \
+	      echo "SKIP: $$tst"; \
+	    fi; \
+	  done; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner="All $$all tests passed"; \
+	    else \
+	      banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner="$$failed of $$all tests failed"; \
+	    else \
+	      banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+	    fi; \
+	  fi; \
+	  dashes="$$banner"; \
+	  skipped=""; \
+	  if test "$$skip" -ne 0; then \
+	    skipped="($$skip tests were not run)"; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$skipped"; \
+	  fi; \
+	  report=""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report="Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$report"; \
+	  fi; \
+	  dashes=`echo "$$dashes" | sed s/./=/g`; \
+	  echo "$$dashes"; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+# Don't express a dependency via the directory .htx, or else make
+# tries to delete it as an intermediate (we can't specify
+# .PRECIOUS targets within this file).
+#
+# Requires that the STAR2HTML substitution was made in
+# configure.ac, probably implicitly by the STAR_LATEX_DOCUMENTATION macro.
+#
+# We do not require that star2html be available on the build system,
+# and so we distribute built HTX documentation.  Thus the following rules
+# should be invoked only in the predist state.  However there isn't a
+# file we can use to test whether we're in that state, so write the
+# test so that it will fail if star2html isn't available.
+#
+# If file $(<:.tex=.htx_tar.extras) is present, then it contains a list
+# of files, each one of which should be added to the .htx directory before
+# it is rolled up into a tarball.
+#
+# Ignore the exit status of star2html, as it can sometimes fail harmlessly.
+.tex.dvi:
+	LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+.dvi.ps:
+	dvips -o $@ $<
+.tex.ps:
+	LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+	dvips -o $@ $(<:.tex=.dvi)
+.tex.pdf:
+	LATEX=pdflatex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+.tex.htx_tar:
+	- star2html $(STAR2HTML_FLAGS) $<
+	test -d ${<:.tex=.htx}
+	if test -f ${<:.tex=.htx_tar.extras}; then \
+	  for f in `cat ${<:.tex=.htx_tar.extras}`; do \
+	    test -f "$$f" && cp "$$f" ${<:.tex=.htx} || true; \
+	  done; else :; fi
+	tar cf $@ ${<:.tex=.htx}
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkdir_p) $(distdir)/.
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA) $(HEADERS) config.h
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" $(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+# If STAR_MANIFEST_DIR is defined and the MANIFEST variable has the
+# (default) string value 'false', then invoke the install-manifest
+# target, otherwise, do the real install rule.  This means that if
+# this is being invoked from within an install-manifest rule further
+# up the process tree, we don't create another manifest, which would
+# stomp on the original.
+#
+# Any Makefile which does special installations should check the
+# $(MANIFEST) variable, which will be ':' or 'false', and if it is
+# true, emit a line to stdout, consisting of the string 'MANIFEST:'
+# followed by the full path of the file being installed.
+install:  all-am
+	if test -n "$(STAR_MANIFEST_DIR)" -a $(MANIFEST) = false; then \
+	    $(MAKE) SHELL=/bin/sh $(AM_MAKEFLAGS) install-manifest; \
+	else \
+	    $(MAKE) $(AM_MAKEFLAGS) $(REAL_INSTALL); \
+	fi
+
+install-manifest:
+	$(mkdir_p) $(DESTDIR)$(STAR_MANIFEST_DIR)
+	MFX=$${TMPDIR-/tmp}/manifest-$$$$-1; rm -f $$MFX; MF_INST_OK=:; \
+	  { $(MAKE) MANIFEST=: $(REAL_INSTALL) \
+	    || MF_INST_OK=false; } \
+	    | tee $$MFX | grep -v '^MANIFEST:' || :; \
+	  if $$MF_INST_OK; then \
+	    MF=$${TMPDIR-/tmp}/manifest-$$$$-2; rm -f $$MF; \
+	    ( echo "<?xml version='1.0'?>"; \
+	      echo "<!DOCTYPE manifest SYSTEM 'componentinfo.dtd'>"; \
+	      echo "<manifest component='$(PACKAGE)'>"; \
+	      echo "<version>$(PACKAGE_VERSION)</version>"; \
+	      echo "<files>"; \
+	      sed -n 's/^MANIFEST://p;' $$MFX; \
+	      echo "</files>"; \
+	      echo "</manifest>"; \
+	    ) >$$MF; \
+	    $(INSTALL_DATA) $$MF $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE); \
+	  else \
+	    echo "Installation of component $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE) failed" >&2; \
+	  fi; \
+	  rm -f $$MFX $$MF; \
+	  $$MF_INST_OK
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f configure.log
+	-rm -f make.log
+	-rm -f starconf.status
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(DEPDIR) ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cincludeHEADERS install-dist_pkgdataDATA \
+	install-dist_starnewsDATA install-stardocsDATA
+
+install-exec-am: install-dist_binSCRIPTS install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf $(DEPDIR) ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cincludeHEADERS uninstall-dist_binSCRIPTS \
+	uninstall-dist_pkgdataDATA uninstall-dist_starnewsDATA \
+	uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-stardocsDATA
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \
+	clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \
+	dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-cincludeHEADERS install-data \
+	install-data-am install-dist_binSCRIPTS \
+	install-dist_pkgdataDATA install-dist_starnewsDATA \
+	install-exec install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-manifest \
+	install-stardocsDATA install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-cincludeHEADERS \
+	uninstall-dist_binSCRIPTS uninstall-dist_pkgdataDATA \
+	uninstall-dist_starnewsDATA uninstall-info-am \
+	uninstall-libLTLIBRARIES uninstall-stardocsDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000000000000000000000000000000000000..ab32bb33e6a67d6984370711d5ff616079ae9f7c
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,76 @@
+## Process this file with automake to produce Makefile.in
+
+cincludedir = $(includedir)/star
+dist_bin_SCRIPTS = sla_link sla_link_adam
+dist_pkgdata_DATA = SLA_CONDITIONS read.me
+
+EXTRA_DIST = Notes
+
+lib_LTLIBRARIES = libsla.la
+
+stardocs_DATA = @STAR_LATEX_DOCUMENTATION@
+
+libsla_la_SOURCES = \
+        $(PRIVATE_INCLUDES) \
+        $(PUBLIC_INCLUDES) \
+	$(F_ROUTINES) \
+	$(C_ROUTINES) \
+	$(FPP_ROUTINES)
+libsla_la_LIBADD = $(LTLIBOBJS)
+libsla_la_LDFLAGS = -version-info $(libsla_la_version_info)
+
+cinclude_HEADERS = $(PUBLIC_C_INCLUDES)
+
+# Make all library code position independent. This is handy for creating
+# shareable libraries from the static ones (Java JNI libraries).
+if !NOPIC
+libsla_la_FCFLAGS = $(AM_FCFLAGS) -prefer-pic
+endif
+
+PUBLIC_F_INCLUDES = 
+PUBLIC_C_INCLUDES = slalib.h
+PRIVATE_INCLUDES = f77.h
+PUBLIC_INCLUDES = $(PUBLIC_F_INCLUDES) $(PUBLIC_C_INCLUDES)
+
+FPP_ROUTINES = \
+	random.F \
+	gresid.F
+
+C_ROUTINES = sla.c
+
+F_ROUTINES = addet.f afin.f airmas.f altaz.f amp.f ampqk.f aop.f	\
+    aoppa.f aoppat.f aopqk.f atmdsp.f atms.f atmt.f av2m.f bear.f	\
+    caf2r.f caldj.f calyd.f cc2s.f cc62s.f cd2tf.f cldj.f clyd.f	\
+    combn.f cr2af.f cr2tf.f cs2c.f cs2c6.f ctf2d.f ctf2r.f daf2r.f	\
+    dafin.f dat.f dav2m.f dbear.f dbjin.f dc62s.f dcc2s.f dcmpf.f	\
+    dcs2c.f dd2tf.f de2h.f deuler.f dfltin.f dh2e.f dimxv.f djcal.f	\
+    djcl.f dm2av.f dmat.f dmoon.f dmxm.f dmxv.f dpav.f dr2af.f dr2tf.f	\
+    drange.f dranrm.f ds2c6.f ds2tp.f dsep.f dsepv.f dt.f dtf2d.f	\
+    dtf2r.f dtp2s.f dtp2v.f dtps2c.f dtpv2c.f dtt.f dv2tp.f dvdv.f	\
+    dvn.f dvxv.f e2h.f earth.f ecleq.f ecmat.f ecor.f eg50.f el2ue.f	\
+    epb.f epb2d.f epco.f epj.f epj2d.f epv.f eqecl.f eqeqx.f eqgal.f	\
+    etrms.f euler.f evp.f fitxy.f fk425.f fk45z.f fk524.f fk52h.f	\
+    fk54z.f fk5hz.f flotin.f galeq.f galsup.f ge50.f geoc.f gmst.f	\
+    gmsta.f h2e.f h2fk5.f hfk5z.f idchf.f idchi.f imxv.f intin.f	\
+    invf.f kbj.f m2av.f map.f mappa.f mapqk.f mapqkz.f moon.f mxm.f	\
+    mxv.f nut.f nutc.f nutc80.f oap.f oapqk.f obs.f pa.f pav.f pcd.f	\
+    pda2h.f pdq2h.f permut.f pertel.f pertue.f planel.f planet.f	\
+    plante.f plantu.f pm.f polmo.f prebn.f prec.f precl.f preces.f	\
+    prenut.f pv2el.f pv2ue.f pvobs.f pxy.f range.f ranorm.f rcc.f	\
+    rdplan.f refco.f refcoq.f refro.f refv.f refz.f rverot.f rvgalc.f	\
+    rvlg.f rvlsrd.f rvlsrk.f s2tp.f sep.f sepv.f smat.f subet.f		\
+    supgal.f svd.f svdcov.f svdsol.f tp2s.f tp2v.f tps2c.f tpv2c.f	\
+    ue2el.f ue2pv.f unpcd.f v2tp.f vdv.f veri.f vers.f vn.f vxv.f	\
+    wait.f xy2xy.f zd.f
+
+TESTS = sla_test slaTest
+check_PROGRAMS = sla_test slaTest
+
+sla_test_SOURCES = sla_test.f
+sla_test_LDADD = libsla.la
+
+slaTest_SOURCES = slaTest.c
+slaTest_LDADD   = libsla.la @FCLIBS@
+
+dist_starnews_DATA = sla.news
+DISTCLEANFILES = gresid.F random.F wait.f
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000000000000000000000000000000000000..b541ea1bb0f1afe98c64a14640d49c4e7c920c5c
--- /dev/null
+++ b/Makefile.in
@@ -0,0 +1,1743 @@
+# Makefile.in generated by automake 1.9.6-starlink from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+check_PROGRAMS = sla_test$(EXEEXT) slaTest$(EXEEXT)
+DIST_COMMON = $(am__configure_deps) $(cinclude_HEADERS) \
+	$(dist_bin_SCRIPTS) $(dist_pkgdata_DATA) $(dist_starnews_DATA) \
+	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/component.xml.in $(srcdir)/config.h.in \
+	$(srcdir)/f77.h.in $(srcdir)/veri.f.in $(srcdir)/vers.f.in \
+	$(stardocs_DATA) $(top_srcdir)/configure config.guess \
+	config.sub depcomp gresid.F__vms gresid.F__win gresid.Fdefault \
+	install-sh ltmain.sh missing random.F__vms random.F__win \
+	random.Fdefault rtl_random.c wait.f__vms wait.f__win \
+	wait.fdefault
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = component.xml vers.f veri.f f77.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" \
+	$(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 = @LTLIBOBJS@
+libsla_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_1 =
+am__objects_2 = $(am__objects_1) $(am__objects_1)
+am__objects_3 = libsla_la-addet.lo libsla_la-afin.lo \
+	libsla_la-airmas.lo libsla_la-altaz.lo libsla_la-amp.lo \
+	libsla_la-ampqk.lo libsla_la-aop.lo libsla_la-aoppa.lo \
+	libsla_la-aoppat.lo libsla_la-aopqk.lo libsla_la-atmdsp.lo \
+	libsla_la-atms.lo libsla_la-atmt.lo libsla_la-av2m.lo \
+	libsla_la-bear.lo libsla_la-caf2r.lo libsla_la-caldj.lo \
+	libsla_la-calyd.lo libsla_la-cc2s.lo libsla_la-cc62s.lo \
+	libsla_la-cd2tf.lo libsla_la-cldj.lo libsla_la-clyd.lo \
+	libsla_la-combn.lo libsla_la-cr2af.lo libsla_la-cr2tf.lo \
+	libsla_la-cs2c.lo libsla_la-cs2c6.lo libsla_la-ctf2d.lo \
+	libsla_la-ctf2r.lo libsla_la-daf2r.lo libsla_la-dafin.lo \
+	libsla_la-dat.lo libsla_la-dav2m.lo libsla_la-dbear.lo \
+	libsla_la-dbjin.lo libsla_la-dc62s.lo libsla_la-dcc2s.lo \
+	libsla_la-dcmpf.lo libsla_la-dcs2c.lo libsla_la-dd2tf.lo \
+	libsla_la-de2h.lo libsla_la-deuler.lo libsla_la-dfltin.lo \
+	libsla_la-dh2e.lo libsla_la-dimxv.lo libsla_la-djcal.lo \
+	libsla_la-djcl.lo libsla_la-dm2av.lo libsla_la-dmat.lo \
+	libsla_la-dmoon.lo libsla_la-dmxm.lo libsla_la-dmxv.lo \
+	libsla_la-dpav.lo libsla_la-dr2af.lo libsla_la-dr2tf.lo \
+	libsla_la-drange.lo libsla_la-dranrm.lo libsla_la-ds2c6.lo \
+	libsla_la-ds2tp.lo libsla_la-dsep.lo libsla_la-dsepv.lo \
+	libsla_la-dt.lo libsla_la-dtf2d.lo libsla_la-dtf2r.lo \
+	libsla_la-dtp2s.lo libsla_la-dtp2v.lo libsla_la-dtps2c.lo \
+	libsla_la-dtpv2c.lo libsla_la-dtt.lo libsla_la-dv2tp.lo \
+	libsla_la-dvdv.lo libsla_la-dvn.lo libsla_la-dvxv.lo \
+	libsla_la-e2h.lo libsla_la-earth.lo libsla_la-ecleq.lo \
+	libsla_la-ecmat.lo libsla_la-ecor.lo libsla_la-eg50.lo \
+	libsla_la-el2ue.lo libsla_la-epb.lo libsla_la-epb2d.lo \
+	libsla_la-epco.lo libsla_la-epj.lo libsla_la-epj2d.lo \
+	libsla_la-epv.lo libsla_la-eqecl.lo libsla_la-eqeqx.lo \
+	libsla_la-eqgal.lo libsla_la-etrms.lo libsla_la-euler.lo \
+	libsla_la-evp.lo libsla_la-fitxy.lo libsla_la-fk425.lo \
+	libsla_la-fk45z.lo libsla_la-fk524.lo libsla_la-fk52h.lo \
+	libsla_la-fk54z.lo libsla_la-fk5hz.lo libsla_la-flotin.lo \
+	libsla_la-galeq.lo libsla_la-galsup.lo libsla_la-ge50.lo \
+	libsla_la-geoc.lo libsla_la-gmst.lo libsla_la-gmsta.lo \
+	libsla_la-h2e.lo libsla_la-h2fk5.lo libsla_la-hfk5z.lo \
+	libsla_la-idchf.lo libsla_la-idchi.lo libsla_la-imxv.lo \
+	libsla_la-intin.lo libsla_la-invf.lo libsla_la-kbj.lo \
+	libsla_la-m2av.lo libsla_la-map.lo libsla_la-mappa.lo \
+	libsla_la-mapqk.lo libsla_la-mapqkz.lo libsla_la-moon.lo \
+	libsla_la-mxm.lo libsla_la-mxv.lo libsla_la-nut.lo \
+	libsla_la-nutc.lo libsla_la-nutc80.lo libsla_la-oap.lo \
+	libsla_la-oapqk.lo libsla_la-obs.lo libsla_la-pa.lo \
+	libsla_la-pav.lo libsla_la-pcd.lo libsla_la-pda2h.lo \
+	libsla_la-pdq2h.lo libsla_la-permut.lo libsla_la-pertel.lo \
+	libsla_la-pertue.lo libsla_la-planel.lo libsla_la-planet.lo \
+	libsla_la-plante.lo libsla_la-plantu.lo libsla_la-pm.lo \
+	libsla_la-polmo.lo libsla_la-prebn.lo libsla_la-prec.lo \
+	libsla_la-precl.lo libsla_la-preces.lo libsla_la-prenut.lo \
+	libsla_la-pv2el.lo libsla_la-pv2ue.lo libsla_la-pvobs.lo \
+	libsla_la-pxy.lo libsla_la-range.lo libsla_la-ranorm.lo \
+	libsla_la-rcc.lo libsla_la-rdplan.lo libsla_la-refco.lo \
+	libsla_la-refcoq.lo libsla_la-refro.lo libsla_la-refv.lo \
+	libsla_la-refz.lo libsla_la-rverot.lo libsla_la-rvgalc.lo \
+	libsla_la-rvlg.lo libsla_la-rvlsrd.lo libsla_la-rvlsrk.lo \
+	libsla_la-s2tp.lo libsla_la-sep.lo libsla_la-sepv.lo \
+	libsla_la-smat.lo libsla_la-subet.lo libsla_la-supgal.lo \
+	libsla_la-svd.lo libsla_la-svdcov.lo libsla_la-svdsol.lo \
+	libsla_la-tp2s.lo libsla_la-tp2v.lo libsla_la-tps2c.lo \
+	libsla_la-tpv2c.lo libsla_la-ue2el.lo libsla_la-ue2pv.lo \
+	libsla_la-unpcd.lo libsla_la-v2tp.lo libsla_la-vdv.lo \
+	libsla_la-veri.lo libsla_la-vers.lo libsla_la-vn.lo \
+	libsla_la-vxv.lo libsla_la-wait.lo libsla_la-xy2xy.lo \
+	libsla_la-zd.lo
+am__objects_4 = sla.lo
+am__objects_5 = libsla_la-random.lo libsla_la-gresid.lo
+am_libsla_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+	$(am__objects_3) $(am__objects_4) $(am__objects_5)
+libsla_la_OBJECTS = $(am_libsla_la_OBJECTS)
+am_slaTest_OBJECTS = slaTest.$(OBJEXT)
+slaTest_OBJECTS = $(am_slaTest_OBJECTS)
+slaTest_DEPENDENCIES = libsla.la
+am_sla_test_OBJECTS = sla_test.$(OBJEXT)
+sla_test_OBJECTS = $(am_sla_test_OBJECTS)
+sla_test_DEPENDENCIES = libsla.la
+dist_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(dist_bin_SCRIPTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+FCCOMPILE = $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(STAR_FCFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+LTFCCOMPILE = $(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(AM_FCFLAGS) \
+	$(FCFLAGS)
+FCLD = $(FC)
+FCLINK = $(LIBTOOL) --mode=link $(FC) $(AM_FCFLAGS) $(FCFLAGS) \
+	$(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(STAR_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) \
+	$(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libsla_la_SOURCES) $(slaTest_SOURCES) $(sla_test_SOURCES)
+DIST_SOURCES = $(libsla_la_SOURCES) $(slaTest_SOURCES) \
+	$(sla_test_SOURCES)
+dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
+dist_starnewsDATA_INSTALL = $(INSTALL_DATA)
+stardocsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(dist_pkgdata_DATA) $(dist_starnews_DATA) $(stardocs_DATA)
+cincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(cinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+# Use AM_MAKEFLAGS to pass the value of the MANIFEST variable into
+# submakes (not all makes do this automatically).  This can still be
+# overridden with a setting of this variable on the $(MAKE) command
+# line.  I think we really shouldn't be setting this variable -- if
+# it causes a problem for anyone, we should edit a new variable in to
+# the .am templates.
+AM_MAKEFLAGS = MANIFEST=$(MANIFEST)
+REAL_INSTALL = install-am
+# Set to : to emit manifest lines, too
+# (don't actually do this here -- it's done within install-manifest below).
+MANIFEST = false
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+C_FC_FCLINK_MAGIC = @C_FC_FCLINK_MAGIC@
+C_FC_PPFC_FCLINK_MAGIC = @C_FC_PPFC_FCLINK_MAGIC@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FC = @FC@
+FCFLAGS = @FCFLAGS@
+FCLIBS = @FCLIBS@
+FFLAGS = @FFLAGS@
+FPP = @FPP@
+FPPFLAGS = @FPPFLAGS@
+FPPFLAGS_DEF = @FPPFLAGS_DEF@
+FPPFLAGS_F = @FPPFLAGS_F@
+FPP_COMPILE_EXT = @FPP_COMPILE_EXT@
+FPP_MAKE_FLAGS = @FPP_MAKE_FLAGS@
+FPP_OUTPUT = @FPP_OUTPUT@
+FPP_PREPROCESS_EXT = @FPP_PREPROCESS_EXT@
+FPP_SRC_EXT = @FPP_SRC_EXT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LATEX2DVI = @LATEX2DVI@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+NOPIC_FALSE = @NOPIC_FALSE@
+NOPIC_TRUE = @NOPIC_TRUE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PACKAGE_VERSION_INTEGER = @PACKAGE_VERSION_INTEGER@
+PACKAGE_VERSION_MAJOR = @PACKAGE_VERSION_MAJOR@
+PACKAGE_VERSION_MINOR = @PACKAGE_VERSION_MINOR@
+PACKAGE_VERSION_RELEASE = @PACKAGE_VERSION_RELEASE@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PAX = @PAX@
+PREDIST = @PREDIST@
+RANLIB = @RANLIB@
+REAL_FUNCTION_TYPE = @REAL_FUNCTION_TYPE@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STAR2HTML = @STAR2HTML@
+STARLINK = @STARLINK@
+STAR_CPPFLAGS = @STAR_CPPFLAGS@
+STAR_DEPENDENCIES_ATTRIBUTES = @STAR_DEPENDENCIES_ATTRIBUTES@
+STAR_DEPENDENCIES_CHILDREN = @STAR_DEPENDENCIES_CHILDREN@
+STAR_DOCUMENTATION = @STAR_DOCUMENTATION@
+STAR_FCFLAGS = @STAR_FCFLAGS@
+STAR_FFLAGS = @STAR_FFLAGS@
+STAR_LATEX_DOCUMENTATION = @STAR_LATEX_DOCUMENTATION@
+STAR_LDFLAGS = @STAR_LDFLAGS@
+STAR_MANIFEST_DIR = @STAR_MANIFEST_DIR@
+STRIP = @STRIP@
+TAR = @TAR@
+VERSION = @VERSION@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_FC = @ac_ct_FC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libsla_la_version_info = @libsla_la_version_info@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+stardocsdir = @stardocsdir@
+staretcdir = @staretcdir@
+starexamplesdir = @starexamplesdir@
+starfacsdir = @starfacsdir@
+starhelpdir = @starhelpdir@
+starnewsdir = @starnewsdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+cincludedir = $(includedir)/star
+dist_bin_SCRIPTS = sla_link sla_link_adam
+dist_pkgdata_DATA = SLA_CONDITIONS read.me
+EXTRA_DIST = Notes
+lib_LTLIBRARIES = libsla.la
+stardocs_DATA = @STAR_LATEX_DOCUMENTATION@
+libsla_la_SOURCES = \
+        $(PRIVATE_INCLUDES) \
+        $(PUBLIC_INCLUDES) \
+	$(F_ROUTINES) \
+	$(C_ROUTINES) \
+	$(FPP_ROUTINES)
+
+libsla_la_LIBADD = $(LTLIBOBJS)
+libsla_la_LDFLAGS = -version-info $(libsla_la_version_info)
+cinclude_HEADERS = $(PUBLIC_C_INCLUDES)
+
+# Make all library code position independent. This is handy for creating
+# shareable libraries from the static ones (Java JNI libraries).
+@NOPIC_FALSE@libsla_la_FCFLAGS = $(AM_FCFLAGS) -prefer-pic
+PUBLIC_F_INCLUDES = 
+PUBLIC_C_INCLUDES = slalib.h
+PRIVATE_INCLUDES = f77.h
+PUBLIC_INCLUDES = $(PUBLIC_F_INCLUDES) $(PUBLIC_C_INCLUDES)
+FPP_ROUTINES = \
+	random.F \
+	gresid.F
+
+C_ROUTINES = sla.c
+F_ROUTINES = addet.f afin.f airmas.f altaz.f amp.f ampqk.f aop.f	\
+    aoppa.f aoppat.f aopqk.f atmdsp.f atms.f atmt.f av2m.f bear.f	\
+    caf2r.f caldj.f calyd.f cc2s.f cc62s.f cd2tf.f cldj.f clyd.f	\
+    combn.f cr2af.f cr2tf.f cs2c.f cs2c6.f ctf2d.f ctf2r.f daf2r.f	\
+    dafin.f dat.f dav2m.f dbear.f dbjin.f dc62s.f dcc2s.f dcmpf.f	\
+    dcs2c.f dd2tf.f de2h.f deuler.f dfltin.f dh2e.f dimxv.f djcal.f	\
+    djcl.f dm2av.f dmat.f dmoon.f dmxm.f dmxv.f dpav.f dr2af.f dr2tf.f	\
+    drange.f dranrm.f ds2c6.f ds2tp.f dsep.f dsepv.f dt.f dtf2d.f	\
+    dtf2r.f dtp2s.f dtp2v.f dtps2c.f dtpv2c.f dtt.f dv2tp.f dvdv.f	\
+    dvn.f dvxv.f e2h.f earth.f ecleq.f ecmat.f ecor.f eg50.f el2ue.f	\
+    epb.f epb2d.f epco.f epj.f epj2d.f epv.f eqecl.f eqeqx.f eqgal.f	\
+    etrms.f euler.f evp.f fitxy.f fk425.f fk45z.f fk524.f fk52h.f	\
+    fk54z.f fk5hz.f flotin.f galeq.f galsup.f ge50.f geoc.f gmst.f	\
+    gmsta.f h2e.f h2fk5.f hfk5z.f idchf.f idchi.f imxv.f intin.f	\
+    invf.f kbj.f m2av.f map.f mappa.f mapqk.f mapqkz.f moon.f mxm.f	\
+    mxv.f nut.f nutc.f nutc80.f oap.f oapqk.f obs.f pa.f pav.f pcd.f	\
+    pda2h.f pdq2h.f permut.f pertel.f pertue.f planel.f planet.f	\
+    plante.f plantu.f pm.f polmo.f prebn.f prec.f precl.f preces.f	\
+    prenut.f pv2el.f pv2ue.f pvobs.f pxy.f range.f ranorm.f rcc.f	\
+    rdplan.f refco.f refcoq.f refro.f refv.f refz.f rverot.f rvgalc.f	\
+    rvlg.f rvlsrd.f rvlsrk.f s2tp.f sep.f sepv.f smat.f subet.f		\
+    supgal.f svd.f svdcov.f svdsol.f tp2s.f tp2v.f tps2c.f tpv2c.f	\
+    ue2el.f ue2pv.f unpcd.f v2tp.f vdv.f veri.f vers.f vn.f vxv.f	\
+    wait.f xy2xy.f zd.f
+
+TESTS = sla_test slaTest
+sla_test_SOURCES = sla_test.f
+sla_test_LDADD = libsla.la
+slaTest_SOURCES = slaTest.c
+slaTest_LDADD = libsla.la @FCLIBS@
+dist_starnews_DATA = sla.news
+DISTCLEANFILES = gresid.F random.F wait.f
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .@FPP_COMPILE_EXT@ .@FPP_PREPROCESS_EXT@ .c .dvi .f .htx_tar .lo .o .obj .pdf .ps .tex
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --startree '; \
+	      cd $(srcdir) && $(AUTOMAKE) --startree  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --startree  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --startree  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+component.xml: $(top_builddir)/config.status $(srcdir)/component.xml.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vers.f: $(top_builddir)/config.status $(srcdir)/vers.f.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+veri.f: $(top_builddir)/config.status $(srcdir)/veri.f.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+f77.h: $(top_builddir)/config.status $(srcdir)/f77.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	    if $(MANIFEST); then \
+	      echo "MANIFEST:$(DESTDIR)$(libdir)/$$f"; \
+	      expr $$p : '.*\.la$$' >/dev/null || \
+		{ echo "Installing non-la file $$p!"; exit 1; }; \
+	      (. ./$$p; \
+		if test -n "$$library_names"; then \
+		  for l in $$library_names; do \
+		    echo "MANIFEST:$(DESTDIR)$$libdir/$$l"; \
+		  done; \
+		fi; \
+		if test -n "$$old_library"; then \
+		  echo "MANIFEST:$(DESTDIR)$$libdir/$$old_library"; \
+		else :; fi; \
+              ); \
+	    else :; fi; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libsla.la: $(libsla_la_OBJECTS) $(libsla_la_DEPENDENCIES) 
+	$(FCLINK) -rpath $(libdir) $(libsla_la_LDFLAGS) $(libsla_la_OBJECTS) $(libsla_la_LIBADD) $(C_FC_PPFC_FCLINK_MAGIC) $(LIBS)
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+slaTest$(EXEEXT): $(slaTest_OBJECTS) $(slaTest_DEPENDENCIES) 
+	@rm -f slaTest$(EXEEXT)
+	$(LINK) $(slaTest_LDFLAGS) $(slaTest_OBJECTS) $(slaTest_LDADD) $(LIBS) 
+sla_test$(EXEEXT): $(sla_test_OBJECTS) $(sla_test_DEPENDENCIES) 
+	@rm -f sla_test$(EXEEXT)
+	$(FCLINK) $(sla_test_LDFLAGS) $(sla_test_OBJECTS) $(sla_test_LDADD) $(LIBS) $(C_FC_PPFC_FCLINK_MAGIC)
+install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f $$d$$p; then \
+	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	    echo " $(dist_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	    $(dist_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+	    $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(bindir)/$$f" || :; \
+	  else :; fi; \
+	done
+
+uninstall-dist_binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gresid.F__vms@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gresid.F__win@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/gresid.Fdefault@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/random.F__vms@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/random.F__win@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/random.Fdefault@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/rtl_random.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wait.f__vms@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wait.f__win@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/wait.fdefault@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sla.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slaTest.Po@am__quote@
+
+.@FPP_COMPILE_EXT@.o:
+	$(FCCOMPILE) -c -o $@ $<
+
+.@FPP_COMPILE_EXT@.obj:
+	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.@FPP_COMPILE_EXT@.lo:
+	$(LTFCCOMPILE) -c -o $@ $<
+
+libsla_la-random.lo: random.F
+	$(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-random.lo `test -f 'random.F' || echo '$(srcdir)/'`random.F
+
+libsla_la-gresid.lo: gresid.F
+	$(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gresid.lo `test -f 'gresid.F' || echo '$(srcdir)/'`gresid.F
+
+# The following rule preprocesses a Fortran preprocessor input file
+# foo.@FPP_PREPROCESS_EXT@ into a compiler input file foo.f.
+.@FPP_PREPROCESS_EXT@.f:
+	$(FPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $< @FPP_OUTPUT@
+
+.c.o:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+
+.f.o:
+	$(FCCOMPILE) -c -o $@ $<
+
+.f.obj:
+	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+	$(LTFCCOMPILE) -c -o $@ $<
+
+libsla_la-addet.lo: addet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-addet.lo `test -f 'addet.f' || echo '$(srcdir)/'`addet.f
+
+libsla_la-afin.lo: afin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-afin.lo `test -f 'afin.f' || echo '$(srcdir)/'`afin.f
+
+libsla_la-airmas.lo: airmas.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-airmas.lo `test -f 'airmas.f' || echo '$(srcdir)/'`airmas.f
+
+libsla_la-altaz.lo: altaz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-altaz.lo `test -f 'altaz.f' || echo '$(srcdir)/'`altaz.f
+
+libsla_la-amp.lo: amp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-amp.lo `test -f 'amp.f' || echo '$(srcdir)/'`amp.f
+
+libsla_la-ampqk.lo: ampqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ampqk.lo `test -f 'ampqk.f' || echo '$(srcdir)/'`ampqk.f
+
+libsla_la-aop.lo: aop.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aop.lo `test -f 'aop.f' || echo '$(srcdir)/'`aop.f
+
+libsla_la-aoppa.lo: aoppa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aoppa.lo `test -f 'aoppa.f' || echo '$(srcdir)/'`aoppa.f
+
+libsla_la-aoppat.lo: aoppat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aoppat.lo `test -f 'aoppat.f' || echo '$(srcdir)/'`aoppat.f
+
+libsla_la-aopqk.lo: aopqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aopqk.lo `test -f 'aopqk.f' || echo '$(srcdir)/'`aopqk.f
+
+libsla_la-atmdsp.lo: atmdsp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atmdsp.lo `test -f 'atmdsp.f' || echo '$(srcdir)/'`atmdsp.f
+
+libsla_la-atms.lo: atms.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atms.lo `test -f 'atms.f' || echo '$(srcdir)/'`atms.f
+
+libsla_la-atmt.lo: atmt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atmt.lo `test -f 'atmt.f' || echo '$(srcdir)/'`atmt.f
+
+libsla_la-av2m.lo: av2m.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-av2m.lo `test -f 'av2m.f' || echo '$(srcdir)/'`av2m.f
+
+libsla_la-bear.lo: bear.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-bear.lo `test -f 'bear.f' || echo '$(srcdir)/'`bear.f
+
+libsla_la-caf2r.lo: caf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-caf2r.lo `test -f 'caf2r.f' || echo '$(srcdir)/'`caf2r.f
+
+libsla_la-caldj.lo: caldj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-caldj.lo `test -f 'caldj.f' || echo '$(srcdir)/'`caldj.f
+
+libsla_la-calyd.lo: calyd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-calyd.lo `test -f 'calyd.f' || echo '$(srcdir)/'`calyd.f
+
+libsla_la-cc2s.lo: cc2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cc2s.lo `test -f 'cc2s.f' || echo '$(srcdir)/'`cc2s.f
+
+libsla_la-cc62s.lo: cc62s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cc62s.lo `test -f 'cc62s.f' || echo '$(srcdir)/'`cc62s.f
+
+libsla_la-cd2tf.lo: cd2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cd2tf.lo `test -f 'cd2tf.f' || echo '$(srcdir)/'`cd2tf.f
+
+libsla_la-cldj.lo: cldj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cldj.lo `test -f 'cldj.f' || echo '$(srcdir)/'`cldj.f
+
+libsla_la-clyd.lo: clyd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-clyd.lo `test -f 'clyd.f' || echo '$(srcdir)/'`clyd.f
+
+libsla_la-combn.lo: combn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-combn.lo `test -f 'combn.f' || echo '$(srcdir)/'`combn.f
+
+libsla_la-cr2af.lo: cr2af.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cr2af.lo `test -f 'cr2af.f' || echo '$(srcdir)/'`cr2af.f
+
+libsla_la-cr2tf.lo: cr2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cr2tf.lo `test -f 'cr2tf.f' || echo '$(srcdir)/'`cr2tf.f
+
+libsla_la-cs2c.lo: cs2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cs2c.lo `test -f 'cs2c.f' || echo '$(srcdir)/'`cs2c.f
+
+libsla_la-cs2c6.lo: cs2c6.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cs2c6.lo `test -f 'cs2c6.f' || echo '$(srcdir)/'`cs2c6.f
+
+libsla_la-ctf2d.lo: ctf2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ctf2d.lo `test -f 'ctf2d.f' || echo '$(srcdir)/'`ctf2d.f
+
+libsla_la-ctf2r.lo: ctf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ctf2r.lo `test -f 'ctf2r.f' || echo '$(srcdir)/'`ctf2r.f
+
+libsla_la-daf2r.lo: daf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-daf2r.lo `test -f 'daf2r.f' || echo '$(srcdir)/'`daf2r.f
+
+libsla_la-dafin.lo: dafin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dafin.lo `test -f 'dafin.f' || echo '$(srcdir)/'`dafin.f
+
+libsla_la-dat.lo: dat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dat.lo `test -f 'dat.f' || echo '$(srcdir)/'`dat.f
+
+libsla_la-dav2m.lo: dav2m.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dav2m.lo `test -f 'dav2m.f' || echo '$(srcdir)/'`dav2m.f
+
+libsla_la-dbear.lo: dbear.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dbear.lo `test -f 'dbear.f' || echo '$(srcdir)/'`dbear.f
+
+libsla_la-dbjin.lo: dbjin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dbjin.lo `test -f 'dbjin.f' || echo '$(srcdir)/'`dbjin.f
+
+libsla_la-dc62s.lo: dc62s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dc62s.lo `test -f 'dc62s.f' || echo '$(srcdir)/'`dc62s.f
+
+libsla_la-dcc2s.lo: dcc2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcc2s.lo `test -f 'dcc2s.f' || echo '$(srcdir)/'`dcc2s.f
+
+libsla_la-dcmpf.lo: dcmpf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcmpf.lo `test -f 'dcmpf.f' || echo '$(srcdir)/'`dcmpf.f
+
+libsla_la-dcs2c.lo: dcs2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcs2c.lo `test -f 'dcs2c.f' || echo '$(srcdir)/'`dcs2c.f
+
+libsla_la-dd2tf.lo: dd2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dd2tf.lo `test -f 'dd2tf.f' || echo '$(srcdir)/'`dd2tf.f
+
+libsla_la-de2h.lo: de2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-de2h.lo `test -f 'de2h.f' || echo '$(srcdir)/'`de2h.f
+
+libsla_la-deuler.lo: deuler.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-deuler.lo `test -f 'deuler.f' || echo '$(srcdir)/'`deuler.f
+
+libsla_la-dfltin.lo: dfltin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dfltin.lo `test -f 'dfltin.f' || echo '$(srcdir)/'`dfltin.f
+
+libsla_la-dh2e.lo: dh2e.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dh2e.lo `test -f 'dh2e.f' || echo '$(srcdir)/'`dh2e.f
+
+libsla_la-dimxv.lo: dimxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dimxv.lo `test -f 'dimxv.f' || echo '$(srcdir)/'`dimxv.f
+
+libsla_la-djcal.lo: djcal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-djcal.lo `test -f 'djcal.f' || echo '$(srcdir)/'`djcal.f
+
+libsla_la-djcl.lo: djcl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-djcl.lo `test -f 'djcl.f' || echo '$(srcdir)/'`djcl.f
+
+libsla_la-dm2av.lo: dm2av.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dm2av.lo `test -f 'dm2av.f' || echo '$(srcdir)/'`dm2av.f
+
+libsla_la-dmat.lo: dmat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmat.lo `test -f 'dmat.f' || echo '$(srcdir)/'`dmat.f
+
+libsla_la-dmoon.lo: dmoon.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmoon.lo `test -f 'dmoon.f' || echo '$(srcdir)/'`dmoon.f
+
+libsla_la-dmxm.lo: dmxm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmxm.lo `test -f 'dmxm.f' || echo '$(srcdir)/'`dmxm.f
+
+libsla_la-dmxv.lo: dmxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmxv.lo `test -f 'dmxv.f' || echo '$(srcdir)/'`dmxv.f
+
+libsla_la-dpav.lo: dpav.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dpav.lo `test -f 'dpav.f' || echo '$(srcdir)/'`dpav.f
+
+libsla_la-dr2af.lo: dr2af.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dr2af.lo `test -f 'dr2af.f' || echo '$(srcdir)/'`dr2af.f
+
+libsla_la-dr2tf.lo: dr2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dr2tf.lo `test -f 'dr2tf.f' || echo '$(srcdir)/'`dr2tf.f
+
+libsla_la-drange.lo: drange.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-drange.lo `test -f 'drange.f' || echo '$(srcdir)/'`drange.f
+
+libsla_la-dranrm.lo: dranrm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dranrm.lo `test -f 'dranrm.f' || echo '$(srcdir)/'`dranrm.f
+
+libsla_la-ds2c6.lo: ds2c6.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ds2c6.lo `test -f 'ds2c6.f' || echo '$(srcdir)/'`ds2c6.f
+
+libsla_la-ds2tp.lo: ds2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ds2tp.lo `test -f 'ds2tp.f' || echo '$(srcdir)/'`ds2tp.f
+
+libsla_la-dsep.lo: dsep.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dsep.lo `test -f 'dsep.f' || echo '$(srcdir)/'`dsep.f
+
+libsla_la-dsepv.lo: dsepv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dsepv.lo `test -f 'dsepv.f' || echo '$(srcdir)/'`dsepv.f
+
+libsla_la-dt.lo: dt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dt.lo `test -f 'dt.f' || echo '$(srcdir)/'`dt.f
+
+libsla_la-dtf2d.lo: dtf2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtf2d.lo `test -f 'dtf2d.f' || echo '$(srcdir)/'`dtf2d.f
+
+libsla_la-dtf2r.lo: dtf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtf2r.lo `test -f 'dtf2r.f' || echo '$(srcdir)/'`dtf2r.f
+
+libsla_la-dtp2s.lo: dtp2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtp2s.lo `test -f 'dtp2s.f' || echo '$(srcdir)/'`dtp2s.f
+
+libsla_la-dtp2v.lo: dtp2v.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtp2v.lo `test -f 'dtp2v.f' || echo '$(srcdir)/'`dtp2v.f
+
+libsla_la-dtps2c.lo: dtps2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtps2c.lo `test -f 'dtps2c.f' || echo '$(srcdir)/'`dtps2c.f
+
+libsla_la-dtpv2c.lo: dtpv2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtpv2c.lo `test -f 'dtpv2c.f' || echo '$(srcdir)/'`dtpv2c.f
+
+libsla_la-dtt.lo: dtt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtt.lo `test -f 'dtt.f' || echo '$(srcdir)/'`dtt.f
+
+libsla_la-dv2tp.lo: dv2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dv2tp.lo `test -f 'dv2tp.f' || echo '$(srcdir)/'`dv2tp.f
+
+libsla_la-dvdv.lo: dvdv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvdv.lo `test -f 'dvdv.f' || echo '$(srcdir)/'`dvdv.f
+
+libsla_la-dvn.lo: dvn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvn.lo `test -f 'dvn.f' || echo '$(srcdir)/'`dvn.f
+
+libsla_la-dvxv.lo: dvxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvxv.lo `test -f 'dvxv.f' || echo '$(srcdir)/'`dvxv.f
+
+libsla_la-e2h.lo: e2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-e2h.lo `test -f 'e2h.f' || echo '$(srcdir)/'`e2h.f
+
+libsla_la-earth.lo: earth.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-earth.lo `test -f 'earth.f' || echo '$(srcdir)/'`earth.f
+
+libsla_la-ecleq.lo: ecleq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecleq.lo `test -f 'ecleq.f' || echo '$(srcdir)/'`ecleq.f
+
+libsla_la-ecmat.lo: ecmat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecmat.lo `test -f 'ecmat.f' || echo '$(srcdir)/'`ecmat.f
+
+libsla_la-ecor.lo: ecor.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecor.lo `test -f 'ecor.f' || echo '$(srcdir)/'`ecor.f
+
+libsla_la-eg50.lo: eg50.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eg50.lo `test -f 'eg50.f' || echo '$(srcdir)/'`eg50.f
+
+libsla_la-el2ue.lo: el2ue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-el2ue.lo `test -f 'el2ue.f' || echo '$(srcdir)/'`el2ue.f
+
+libsla_la-epb.lo: epb.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epb.lo `test -f 'epb.f' || echo '$(srcdir)/'`epb.f
+
+libsla_la-epb2d.lo: epb2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epb2d.lo `test -f 'epb2d.f' || echo '$(srcdir)/'`epb2d.f
+
+libsla_la-epco.lo: epco.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epco.lo `test -f 'epco.f' || echo '$(srcdir)/'`epco.f
+
+libsla_la-epj.lo: epj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epj.lo `test -f 'epj.f' || echo '$(srcdir)/'`epj.f
+
+libsla_la-epj2d.lo: epj2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epj2d.lo `test -f 'epj2d.f' || echo '$(srcdir)/'`epj2d.f
+
+libsla_la-epv.lo: epv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epv.lo `test -f 'epv.f' || echo '$(srcdir)/'`epv.f
+
+libsla_la-eqecl.lo: eqecl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqecl.lo `test -f 'eqecl.f' || echo '$(srcdir)/'`eqecl.f
+
+libsla_la-eqeqx.lo: eqeqx.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqeqx.lo `test -f 'eqeqx.f' || echo '$(srcdir)/'`eqeqx.f
+
+libsla_la-eqgal.lo: eqgal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqgal.lo `test -f 'eqgal.f' || echo '$(srcdir)/'`eqgal.f
+
+libsla_la-etrms.lo: etrms.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-etrms.lo `test -f 'etrms.f' || echo '$(srcdir)/'`etrms.f
+
+libsla_la-euler.lo: euler.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-euler.lo `test -f 'euler.f' || echo '$(srcdir)/'`euler.f
+
+libsla_la-evp.lo: evp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-evp.lo `test -f 'evp.f' || echo '$(srcdir)/'`evp.f
+
+libsla_la-fitxy.lo: fitxy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fitxy.lo `test -f 'fitxy.f' || echo '$(srcdir)/'`fitxy.f
+
+libsla_la-fk425.lo: fk425.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk425.lo `test -f 'fk425.f' || echo '$(srcdir)/'`fk425.f
+
+libsla_la-fk45z.lo: fk45z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk45z.lo `test -f 'fk45z.f' || echo '$(srcdir)/'`fk45z.f
+
+libsla_la-fk524.lo: fk524.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk524.lo `test -f 'fk524.f' || echo '$(srcdir)/'`fk524.f
+
+libsla_la-fk52h.lo: fk52h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk52h.lo `test -f 'fk52h.f' || echo '$(srcdir)/'`fk52h.f
+
+libsla_la-fk54z.lo: fk54z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk54z.lo `test -f 'fk54z.f' || echo '$(srcdir)/'`fk54z.f
+
+libsla_la-fk5hz.lo: fk5hz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk5hz.lo `test -f 'fk5hz.f' || echo '$(srcdir)/'`fk5hz.f
+
+libsla_la-flotin.lo: flotin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-flotin.lo `test -f 'flotin.f' || echo '$(srcdir)/'`flotin.f
+
+libsla_la-galeq.lo: galeq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-galeq.lo `test -f 'galeq.f' || echo '$(srcdir)/'`galeq.f
+
+libsla_la-galsup.lo: galsup.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-galsup.lo `test -f 'galsup.f' || echo '$(srcdir)/'`galsup.f
+
+libsla_la-ge50.lo: ge50.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ge50.lo `test -f 'ge50.f' || echo '$(srcdir)/'`ge50.f
+
+libsla_la-geoc.lo: geoc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-geoc.lo `test -f 'geoc.f' || echo '$(srcdir)/'`geoc.f
+
+libsla_la-gmst.lo: gmst.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gmst.lo `test -f 'gmst.f' || echo '$(srcdir)/'`gmst.f
+
+libsla_la-gmsta.lo: gmsta.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gmsta.lo `test -f 'gmsta.f' || echo '$(srcdir)/'`gmsta.f
+
+libsla_la-h2e.lo: h2e.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-h2e.lo `test -f 'h2e.f' || echo '$(srcdir)/'`h2e.f
+
+libsla_la-h2fk5.lo: h2fk5.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-h2fk5.lo `test -f 'h2fk5.f' || echo '$(srcdir)/'`h2fk5.f
+
+libsla_la-hfk5z.lo: hfk5z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-hfk5z.lo `test -f 'hfk5z.f' || echo '$(srcdir)/'`hfk5z.f
+
+libsla_la-idchf.lo: idchf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-idchf.lo `test -f 'idchf.f' || echo '$(srcdir)/'`idchf.f
+
+libsla_la-idchi.lo: idchi.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-idchi.lo `test -f 'idchi.f' || echo '$(srcdir)/'`idchi.f
+
+libsla_la-imxv.lo: imxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-imxv.lo `test -f 'imxv.f' || echo '$(srcdir)/'`imxv.f
+
+libsla_la-intin.lo: intin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-intin.lo `test -f 'intin.f' || echo '$(srcdir)/'`intin.f
+
+libsla_la-invf.lo: invf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-invf.lo `test -f 'invf.f' || echo '$(srcdir)/'`invf.f
+
+libsla_la-kbj.lo: kbj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-kbj.lo `test -f 'kbj.f' || echo '$(srcdir)/'`kbj.f
+
+libsla_la-m2av.lo: m2av.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-m2av.lo `test -f 'm2av.f' || echo '$(srcdir)/'`m2av.f
+
+libsla_la-map.lo: map.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-map.lo `test -f 'map.f' || echo '$(srcdir)/'`map.f
+
+libsla_la-mappa.lo: mappa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mappa.lo `test -f 'mappa.f' || echo '$(srcdir)/'`mappa.f
+
+libsla_la-mapqk.lo: mapqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mapqk.lo `test -f 'mapqk.f' || echo '$(srcdir)/'`mapqk.f
+
+libsla_la-mapqkz.lo: mapqkz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mapqkz.lo `test -f 'mapqkz.f' || echo '$(srcdir)/'`mapqkz.f
+
+libsla_la-moon.lo: moon.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-moon.lo `test -f 'moon.f' || echo '$(srcdir)/'`moon.f
+
+libsla_la-mxm.lo: mxm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mxm.lo `test -f 'mxm.f' || echo '$(srcdir)/'`mxm.f
+
+libsla_la-mxv.lo: mxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mxv.lo `test -f 'mxv.f' || echo '$(srcdir)/'`mxv.f
+
+libsla_la-nut.lo: nut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nut.lo `test -f 'nut.f' || echo '$(srcdir)/'`nut.f
+
+libsla_la-nutc.lo: nutc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nutc.lo `test -f 'nutc.f' || echo '$(srcdir)/'`nutc.f
+
+libsla_la-nutc80.lo: nutc80.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nutc80.lo `test -f 'nutc80.f' || echo '$(srcdir)/'`nutc80.f
+
+libsla_la-oap.lo: oap.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-oap.lo `test -f 'oap.f' || echo '$(srcdir)/'`oap.f
+
+libsla_la-oapqk.lo: oapqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-oapqk.lo `test -f 'oapqk.f' || echo '$(srcdir)/'`oapqk.f
+
+libsla_la-obs.lo: obs.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-obs.lo `test -f 'obs.f' || echo '$(srcdir)/'`obs.f
+
+libsla_la-pa.lo: pa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pa.lo `test -f 'pa.f' || echo '$(srcdir)/'`pa.f
+
+libsla_la-pav.lo: pav.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pav.lo `test -f 'pav.f' || echo '$(srcdir)/'`pav.f
+
+libsla_la-pcd.lo: pcd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pcd.lo `test -f 'pcd.f' || echo '$(srcdir)/'`pcd.f
+
+libsla_la-pda2h.lo: pda2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pda2h.lo `test -f 'pda2h.f' || echo '$(srcdir)/'`pda2h.f
+
+libsla_la-pdq2h.lo: pdq2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pdq2h.lo `test -f 'pdq2h.f' || echo '$(srcdir)/'`pdq2h.f
+
+libsla_la-permut.lo: permut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-permut.lo `test -f 'permut.f' || echo '$(srcdir)/'`permut.f
+
+libsla_la-pertel.lo: pertel.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pertel.lo `test -f 'pertel.f' || echo '$(srcdir)/'`pertel.f
+
+libsla_la-pertue.lo: pertue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pertue.lo `test -f 'pertue.f' || echo '$(srcdir)/'`pertue.f
+
+libsla_la-planel.lo: planel.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-planel.lo `test -f 'planel.f' || echo '$(srcdir)/'`planel.f
+
+libsla_la-planet.lo: planet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-planet.lo `test -f 'planet.f' || echo '$(srcdir)/'`planet.f
+
+libsla_la-plante.lo: plante.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-plante.lo `test -f 'plante.f' || echo '$(srcdir)/'`plante.f
+
+libsla_la-plantu.lo: plantu.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-plantu.lo `test -f 'plantu.f' || echo '$(srcdir)/'`plantu.f
+
+libsla_la-pm.lo: pm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pm.lo `test -f 'pm.f' || echo '$(srcdir)/'`pm.f
+
+libsla_la-polmo.lo: polmo.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-polmo.lo `test -f 'polmo.f' || echo '$(srcdir)/'`polmo.f
+
+libsla_la-prebn.lo: prebn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prebn.lo `test -f 'prebn.f' || echo '$(srcdir)/'`prebn.f
+
+libsla_la-prec.lo: prec.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prec.lo `test -f 'prec.f' || echo '$(srcdir)/'`prec.f
+
+libsla_la-precl.lo: precl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-precl.lo `test -f 'precl.f' || echo '$(srcdir)/'`precl.f
+
+libsla_la-preces.lo: preces.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-preces.lo `test -f 'preces.f' || echo '$(srcdir)/'`preces.f
+
+libsla_la-prenut.lo: prenut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prenut.lo `test -f 'prenut.f' || echo '$(srcdir)/'`prenut.f
+
+libsla_la-pv2el.lo: pv2el.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pv2el.lo `test -f 'pv2el.f' || echo '$(srcdir)/'`pv2el.f
+
+libsla_la-pv2ue.lo: pv2ue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pv2ue.lo `test -f 'pv2ue.f' || echo '$(srcdir)/'`pv2ue.f
+
+libsla_la-pvobs.lo: pvobs.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pvobs.lo `test -f 'pvobs.f' || echo '$(srcdir)/'`pvobs.f
+
+libsla_la-pxy.lo: pxy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pxy.lo `test -f 'pxy.f' || echo '$(srcdir)/'`pxy.f
+
+libsla_la-range.lo: range.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-range.lo `test -f 'range.f' || echo '$(srcdir)/'`range.f
+
+libsla_la-ranorm.lo: ranorm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ranorm.lo `test -f 'ranorm.f' || echo '$(srcdir)/'`ranorm.f
+
+libsla_la-rcc.lo: rcc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rcc.lo `test -f 'rcc.f' || echo '$(srcdir)/'`rcc.f
+
+libsla_la-rdplan.lo: rdplan.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rdplan.lo `test -f 'rdplan.f' || echo '$(srcdir)/'`rdplan.f
+
+libsla_la-refco.lo: refco.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refco.lo `test -f 'refco.f' || echo '$(srcdir)/'`refco.f
+
+libsla_la-refcoq.lo: refcoq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refcoq.lo `test -f 'refcoq.f' || echo '$(srcdir)/'`refcoq.f
+
+libsla_la-refro.lo: refro.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refro.lo `test -f 'refro.f' || echo '$(srcdir)/'`refro.f
+
+libsla_la-refv.lo: refv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refv.lo `test -f 'refv.f' || echo '$(srcdir)/'`refv.f
+
+libsla_la-refz.lo: refz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refz.lo `test -f 'refz.f' || echo '$(srcdir)/'`refz.f
+
+libsla_la-rverot.lo: rverot.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rverot.lo `test -f 'rverot.f' || echo '$(srcdir)/'`rverot.f
+
+libsla_la-rvgalc.lo: rvgalc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvgalc.lo `test -f 'rvgalc.f' || echo '$(srcdir)/'`rvgalc.f
+
+libsla_la-rvlg.lo: rvlg.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlg.lo `test -f 'rvlg.f' || echo '$(srcdir)/'`rvlg.f
+
+libsla_la-rvlsrd.lo: rvlsrd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlsrd.lo `test -f 'rvlsrd.f' || echo '$(srcdir)/'`rvlsrd.f
+
+libsla_la-rvlsrk.lo: rvlsrk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlsrk.lo `test -f 'rvlsrk.f' || echo '$(srcdir)/'`rvlsrk.f
+
+libsla_la-s2tp.lo: s2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-s2tp.lo `test -f 's2tp.f' || echo '$(srcdir)/'`s2tp.f
+
+libsla_la-sep.lo: sep.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-sep.lo `test -f 'sep.f' || echo '$(srcdir)/'`sep.f
+
+libsla_la-sepv.lo: sepv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-sepv.lo `test -f 'sepv.f' || echo '$(srcdir)/'`sepv.f
+
+libsla_la-smat.lo: smat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-smat.lo `test -f 'smat.f' || echo '$(srcdir)/'`smat.f
+
+libsla_la-subet.lo: subet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-subet.lo `test -f 'subet.f' || echo '$(srcdir)/'`subet.f
+
+libsla_la-supgal.lo: supgal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-supgal.lo `test -f 'supgal.f' || echo '$(srcdir)/'`supgal.f
+
+libsla_la-svd.lo: svd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svd.lo `test -f 'svd.f' || echo '$(srcdir)/'`svd.f
+
+libsla_la-svdcov.lo: svdcov.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svdcov.lo `test -f 'svdcov.f' || echo '$(srcdir)/'`svdcov.f
+
+libsla_la-svdsol.lo: svdsol.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svdsol.lo `test -f 'svdsol.f' || echo '$(srcdir)/'`svdsol.f
+
+libsla_la-tp2s.lo: tp2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tp2s.lo `test -f 'tp2s.f' || echo '$(srcdir)/'`tp2s.f
+
+libsla_la-tp2v.lo: tp2v.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tp2v.lo `test -f 'tp2v.f' || echo '$(srcdir)/'`tp2v.f
+
+libsla_la-tps2c.lo: tps2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tps2c.lo `test -f 'tps2c.f' || echo '$(srcdir)/'`tps2c.f
+
+libsla_la-tpv2c.lo: tpv2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tpv2c.lo `test -f 'tpv2c.f' || echo '$(srcdir)/'`tpv2c.f
+
+libsla_la-ue2el.lo: ue2el.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ue2el.lo `test -f 'ue2el.f' || echo '$(srcdir)/'`ue2el.f
+
+libsla_la-ue2pv.lo: ue2pv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ue2pv.lo `test -f 'ue2pv.f' || echo '$(srcdir)/'`ue2pv.f
+
+libsla_la-unpcd.lo: unpcd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-unpcd.lo `test -f 'unpcd.f' || echo '$(srcdir)/'`unpcd.f
+
+libsla_la-v2tp.lo: v2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-v2tp.lo `test -f 'v2tp.f' || echo '$(srcdir)/'`v2tp.f
+
+libsla_la-vdv.lo: vdv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vdv.lo `test -f 'vdv.f' || echo '$(srcdir)/'`vdv.f
+
+libsla_la-veri.lo: veri.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-veri.lo `test -f 'veri.f' || echo '$(srcdir)/'`veri.f
+
+libsla_la-vers.lo: vers.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vers.lo `test -f 'vers.f' || echo '$(srcdir)/'`vers.f
+
+libsla_la-vn.lo: vn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vn.lo `test -f 'vn.f' || echo '$(srcdir)/'`vn.f
+
+libsla_la-vxv.lo: vxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vxv.lo `test -f 'vxv.f' || echo '$(srcdir)/'`vxv.f
+
+libsla_la-wait.lo: wait.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-wait.lo `test -f 'wait.f' || echo '$(srcdir)/'`wait.f
+
+libsla_la-xy2xy.lo: xy2xy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-xy2xy.lo `test -f 'xy2xy.f' || echo '$(srcdir)/'`xy2xy.f
+
+libsla_la-zd.lo: zd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-zd.lo `test -f 'zd.f' || echo '$(srcdir)/'`zd.f
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)"
+	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
+	  $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(pkgdatadir)/$$f" || :; \
+	done
+
+uninstall-dist_pkgdataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	done
+install-dist_starnewsDATA: $(dist_starnews_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(starnewsdir)" || $(mkdir_p) "$(DESTDIR)$(starnewsdir)"
+	@list='$(dist_starnews_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(dist_starnewsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(starnewsdir)/$$f'"; \
+	  $(dist_starnewsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(starnewsdir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(starnewsdir)/$$f" || :; \
+	done
+
+uninstall-dist_starnewsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_starnews_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(starnewsdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(starnewsdir)/$$f"; \
+	done
+install-stardocsDATA: $(stardocs_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkdir_p) $(DESTDIR)$(stardocsdir)
+	@list='$(stardocs_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  if expr "x$$p" : 'x.*\.htx_tar$$' >/dev/null; then \
+	    if test -n "$(PAX)"; then \
+	      if $(MANIFEST); then \
+		$(PAX) -f $$d$$p | \
+		  sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \
+	      fi; \
+	      cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(PAX) -r); \
+	    elif test -n "$(TAR)"; then \
+	      if $(MANIFEST); then \
+	        cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpvf -) | sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \
+	      else \
+	        cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpf -); \
+	      fi; \
+	    else \
+	      echo "Neither tar nor pax!!!" >&2; \
+	      exit 1; \
+	    fi; \
+	  else \
+	    echo " $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f"; \
+	    $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f; \
+	    $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(stardocsdir)/$$f" || :; \
+	  fi; \
+	done
+
+uninstall-stardocsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(stardocs_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(stardocsdir)/$$f"; \
+	  rm -f $(DESTDIR)$(stardocsdir)/$$f; \
+	done
+install-cincludeHEADERS: $(cinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cincludedir)" || $(mkdir_p) "$(DESTDIR)$(cincludedir)"
+	@list='$(cinclude_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(cincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(cincludedir)/$$f'"; \
+	  $(cincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(cincludedir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(cincludedir)/$$f" || :; \
+	done
+
+uninstall-cincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cinclude_HEADERS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(cincludedir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(cincludedir)/$$f"; \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
+	srcdir=$(srcdir); export srcdir; \
+	list='$(TESTS)'; \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=./; \
+	    elif test -f $$tst; then dir=; \
+	    else dir="$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xpass=`expr $$xpass + 1`; \
+		failed=`expr $$failed + 1`; \
+		echo "XPASS: $$tst"; \
+	      ;; \
+	      *) \
+		echo "PASS: $$tst"; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xfail=`expr $$xfail + 1`; \
+		echo "XFAIL: $$tst"; \
+	      ;; \
+	      *) \
+		failed=`expr $$failed + 1`; \
+		echo "FAIL: $$tst"; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=`expr $$skip + 1`; \
+	      echo "SKIP: $$tst"; \
+	    fi; \
+	  done; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner="All $$all tests passed"; \
+	    else \
+	      banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner="$$failed of $$all tests failed"; \
+	    else \
+	      banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+	    fi; \
+	  fi; \
+	  dashes="$$banner"; \
+	  skipped=""; \
+	  if test "$$skip" -ne 0; then \
+	    skipped="($$skip tests were not run)"; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$skipped"; \
+	  fi; \
+	  report=""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report="Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$report"; \
+	  fi; \
+	  dashes=`echo "$$dashes" | sed s/./=/g`; \
+	  echo "$$dashes"; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+# Don't express a dependency via the directory .htx, or else make
+# tries to delete it as an intermediate (we can't specify
+# .PRECIOUS targets within this file).
+#
+# Requires that the STAR2HTML substitution was made in
+# configure.ac, probably implicitly by the STAR_LATEX_DOCUMENTATION macro.
+#
+# We do not require that star2html be available on the build system,
+# and so we distribute built HTX documentation.  Thus the following rules
+# should be invoked only in the predist state.  However there isn't a
+# file we can use to test whether we're in that state, so write the
+# test so that it will fail if star2html isn't available.
+#
+# If file $(<:.tex=.htx_tar.extras) is present, then it contains a list
+# of files, each one of which should be added to the .htx directory before
+# it is rolled up into a tarball.
+#
+# Ignore the exit status of star2html, as it can sometimes fail harmlessly.
+.tex.dvi:
+	LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+.dvi.ps:
+	dvips -o $@ $<
+.tex.ps:
+	LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+	dvips -o $@ $(<:.tex=.dvi)
+.tex.pdf:
+	LATEX=pdflatex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+.tex.htx_tar:
+	- @STAR2HTML@ $(STAR2HTML_FLAGS) $<
+	test -d ${<:.tex=.htx}
+	if test -f ${<:.tex=.htx_tar.extras}; then \
+	  for f in `cat ${<:.tex=.htx_tar.extras}`; do \
+	    test -f "$$f" && cp "$$f" ${<:.tex=.htx} || true; \
+	  done; else :; fi
+	tar cf $@ ${<:.tex=.htx}
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkdir_p) $(distdir)/.
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA) $(HEADERS) config.h
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" $(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+# If STAR_MANIFEST_DIR is defined and the MANIFEST variable has the
+# (default) string value 'false', then invoke the install-manifest
+# target, otherwise, do the real install rule.  This means that if
+# this is being invoked from within an install-manifest rule further
+# up the process tree, we don't create another manifest, which would
+# stomp on the original.
+#
+# Any Makefile which does special installations should check the
+# $(MANIFEST) variable, which will be ':' or 'false', and if it is
+# true, emit a line to stdout, consisting of the string 'MANIFEST:'
+# followed by the full path of the file being installed.
+install:  all-am
+	if test -n "$(STAR_MANIFEST_DIR)" -a $(MANIFEST) = false; then \
+	    $(MAKE) SHELL=/bin/sh $(AM_MAKEFLAGS) install-manifest; \
+	else \
+	    $(MAKE) $(AM_MAKEFLAGS) $(REAL_INSTALL); \
+	fi
+
+install-manifest:
+	$(mkdir_p) $(DESTDIR)$(STAR_MANIFEST_DIR)
+	MFX=$${TMPDIR-/tmp}/manifest-$$$$-1; rm -f $$MFX; MF_INST_OK=:; \
+	  { $(MAKE) MANIFEST=: $(REAL_INSTALL) \
+	    || MF_INST_OK=false; } \
+	    | tee $$MFX | grep -v '^MANIFEST:' || :; \
+	  if $$MF_INST_OK; then \
+	    MF=$${TMPDIR-/tmp}/manifest-$$$$-2; rm -f $$MF; \
+	    ( echo "<?xml version='1.0'?>"; \
+	      echo "<!DOCTYPE manifest SYSTEM 'componentinfo.dtd'>"; \
+	      echo "<manifest component='$(PACKAGE)'>"; \
+	      echo "<version>$(PACKAGE_VERSION)</version>"; \
+	      echo "<files>"; \
+	      sed -n 's/^MANIFEST://p;' $$MFX; \
+	      echo "</files>"; \
+	      echo "</manifest>"; \
+	    ) >$$MF; \
+	    $(INSTALL_DATA) $$MF $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE); \
+	  else \
+	    echo "Installation of component $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE) failed" >&2; \
+	  fi; \
+	  rm -f $$MFX $$MF; \
+	  $$MF_INST_OK
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f configure.log
+	-rm -f make.log
+	-rm -f starconf.status
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(DEPDIR) ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cincludeHEADERS install-dist_pkgdataDATA \
+	install-dist_starnewsDATA install-stardocsDATA
+
+install-exec-am: install-dist_binSCRIPTS install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf $(DEPDIR) ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cincludeHEADERS uninstall-dist_binSCRIPTS \
+	uninstall-dist_pkgdataDATA uninstall-dist_starnewsDATA \
+	uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-stardocsDATA
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \
+	clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \
+	dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-cincludeHEADERS install-data \
+	install-data-am install-dist_binSCRIPTS \
+	install-dist_pkgdataDATA install-dist_starnewsDATA \
+	install-exec install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-manifest \
+	install-stardocsDATA install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-cincludeHEADERS \
+	uninstall-dist_binSCRIPTS uninstall-dist_pkgdataDATA \
+	uninstall-dist_starnewsDATA uninstall-info-am \
+	uninstall-libLTLIBRARIES uninstall-stardocsDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Makefile~ b/Makefile~
new file mode 100644
index 0000000000000000000000000000000000000000..34609c40aa199f10966e8bdc368ebd0e0655e074
--- /dev/null
+++ b/Makefile~
@@ -0,0 +1,1744 @@
+# Makefile.in generated by automake 1.9.6-starlink from Makefile.am.
+# Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+
+
+srcdir = .
+top_srcdir = .
+
+pkgdatadir = $(datadir)/sla
+pkglibdir = $(libdir)/sla
+pkgincludedir = $(includedir)/sla
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+check_PROGRAMS = sla_test$(EXEEXT) slaTest$(EXEEXT)
+DIST_COMMON = $(am__configure_deps) $(cinclude_HEADERS) \
+	$(dist_bin_SCRIPTS) $(dist_pkgdata_DATA) $(dist_starnews_DATA) \
+	$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/component.xml.in $(srcdir)/config.h.in \
+	$(srcdir)/f77.h.in $(srcdir)/veri.f.in $(srcdir)/vers.f.in \
+	$(stardocs_DATA) $(top_srcdir)/configure config.guess \
+	config.sub depcomp gresid.F__vms gresid.F__win gresid.Fdefault \
+	install-sh ltmain.sh missing random.F__vms random.F__win \
+	random.Fdefault rtl_random.c wait.f__vms wait.f__win \
+	wait.fdefault
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = component.xml vers.f veri.f f77.h
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
+	"$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" \
+	$(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 = 
+libsla_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am__objects_1 =
+am__objects_2 = $(am__objects_1) $(am__objects_1)
+am__objects_3 = libsla_la-addet.lo libsla_la-afin.lo \
+	libsla_la-airmas.lo libsla_la-altaz.lo libsla_la-amp.lo \
+	libsla_la-ampqk.lo libsla_la-aop.lo libsla_la-aoppa.lo \
+	libsla_la-aoppat.lo libsla_la-aopqk.lo libsla_la-atmdsp.lo \
+	libsla_la-atms.lo libsla_la-atmt.lo libsla_la-av2m.lo \
+	libsla_la-bear.lo libsla_la-caf2r.lo libsla_la-caldj.lo \
+	libsla_la-calyd.lo libsla_la-cc2s.lo libsla_la-cc62s.lo \
+	libsla_la-cd2tf.lo libsla_la-cldj.lo libsla_la-clyd.lo \
+	libsla_la-combn.lo libsla_la-cr2af.lo libsla_la-cr2tf.lo \
+	libsla_la-cs2c.lo libsla_la-cs2c6.lo libsla_la-ctf2d.lo \
+	libsla_la-ctf2r.lo libsla_la-daf2r.lo libsla_la-dafin.lo \
+	libsla_la-dat.lo libsla_la-dav2m.lo libsla_la-dbear.lo \
+	libsla_la-dbjin.lo libsla_la-dc62s.lo libsla_la-dcc2s.lo \
+	libsla_la-dcmpf.lo libsla_la-dcs2c.lo libsla_la-dd2tf.lo \
+	libsla_la-de2h.lo libsla_la-deuler.lo libsla_la-dfltin.lo \
+	libsla_la-dh2e.lo libsla_la-dimxv.lo libsla_la-djcal.lo \
+	libsla_la-djcl.lo libsla_la-dm2av.lo libsla_la-dmat.lo \
+	libsla_la-dmoon.lo libsla_la-dmxm.lo libsla_la-dmxv.lo \
+	libsla_la-dpav.lo libsla_la-dr2af.lo libsla_la-dr2tf.lo \
+	libsla_la-drange.lo libsla_la-dranrm.lo libsla_la-ds2c6.lo \
+	libsla_la-ds2tp.lo libsla_la-dsep.lo libsla_la-dsepv.lo \
+	libsla_la-dt.lo libsla_la-dtf2d.lo libsla_la-dtf2r.lo \
+	libsla_la-dtp2s.lo libsla_la-dtp2v.lo libsla_la-dtps2c.lo \
+	libsla_la-dtpv2c.lo libsla_la-dtt.lo libsla_la-dv2tp.lo \
+	libsla_la-dvdv.lo libsla_la-dvn.lo libsla_la-dvxv.lo \
+	libsla_la-e2h.lo libsla_la-earth.lo libsla_la-ecleq.lo \
+	libsla_la-ecmat.lo libsla_la-ecor.lo libsla_la-eg50.lo \
+	libsla_la-el2ue.lo libsla_la-epb.lo libsla_la-epb2d.lo \
+	libsla_la-epco.lo libsla_la-epj.lo libsla_la-epj2d.lo \
+	libsla_la-epv.lo libsla_la-eqecl.lo libsla_la-eqeqx.lo \
+	libsla_la-eqgal.lo libsla_la-etrms.lo libsla_la-euler.lo \
+	libsla_la-evp.lo libsla_la-fitxy.lo libsla_la-fk425.lo \
+	libsla_la-fk45z.lo libsla_la-fk524.lo libsla_la-fk52h.lo \
+	libsla_la-fk54z.lo libsla_la-fk5hz.lo libsla_la-flotin.lo \
+	libsla_la-galeq.lo libsla_la-galsup.lo libsla_la-ge50.lo \
+	libsla_la-geoc.lo libsla_la-gmst.lo libsla_la-gmsta.lo \
+	libsla_la-h2e.lo libsla_la-h2fk5.lo libsla_la-hfk5z.lo \
+	libsla_la-idchf.lo libsla_la-idchi.lo libsla_la-imxv.lo \
+	libsla_la-intin.lo libsla_la-invf.lo libsla_la-kbj.lo \
+	libsla_la-m2av.lo libsla_la-map.lo libsla_la-mappa.lo \
+	libsla_la-mapqk.lo libsla_la-mapqkz.lo libsla_la-moon.lo \
+	libsla_la-mxm.lo libsla_la-mxv.lo libsla_la-nut.lo \
+	libsla_la-nutc.lo libsla_la-nutc80.lo libsla_la-oap.lo \
+	libsla_la-oapqk.lo libsla_la-obs.lo libsla_la-pa.lo \
+	libsla_la-pav.lo libsla_la-pcd.lo libsla_la-pda2h.lo \
+	libsla_la-pdq2h.lo libsla_la-permut.lo libsla_la-pertel.lo \
+	libsla_la-pertue.lo libsla_la-planel.lo libsla_la-planet.lo \
+	libsla_la-plante.lo libsla_la-plantu.lo libsla_la-pm.lo \
+	libsla_la-polmo.lo libsla_la-prebn.lo libsla_la-prec.lo \
+	libsla_la-precl.lo libsla_la-preces.lo libsla_la-prenut.lo \
+	libsla_la-pv2el.lo libsla_la-pv2ue.lo libsla_la-pvobs.lo \
+	libsla_la-pxy.lo libsla_la-range.lo libsla_la-ranorm.lo \
+	libsla_la-rcc.lo libsla_la-rdplan.lo libsla_la-refco.lo \
+	libsla_la-refcoq.lo libsla_la-refro.lo libsla_la-refv.lo \
+	libsla_la-refz.lo libsla_la-rverot.lo libsla_la-rvgalc.lo \
+	libsla_la-rvlg.lo libsla_la-rvlsrd.lo libsla_la-rvlsrk.lo \
+	libsla_la-s2tp.lo libsla_la-sep.lo libsla_la-sepv.lo \
+	libsla_la-smat.lo libsla_la-subet.lo libsla_la-supgal.lo \
+	libsla_la-svd.lo libsla_la-svdcov.lo libsla_la-svdsol.lo \
+	libsla_la-tp2s.lo libsla_la-tp2v.lo libsla_la-tps2c.lo \
+	libsla_la-tpv2c.lo libsla_la-ue2el.lo libsla_la-ue2pv.lo \
+	libsla_la-unpcd.lo libsla_la-v2tp.lo libsla_la-vdv.lo \
+	libsla_la-veri.lo libsla_la-vers.lo libsla_la-vn.lo \
+	libsla_la-vxv.lo libsla_la-wait.lo libsla_la-xy2xy.lo \
+	libsla_la-zd.lo
+am__objects_4 = sla.lo
+am__objects_5 = libsla_la-random.lo libsla_la-gresid.lo
+am_libsla_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+	$(am__objects_3) $(am__objects_4) $(am__objects_5)
+libsla_la_OBJECTS = $(am_libsla_la_OBJECTS)
+am_slaTest_OBJECTS = slaTest.$(OBJEXT)
+slaTest_OBJECTS = $(am_slaTest_OBJECTS)
+slaTest_DEPENDENCIES = libsla.la
+am_sla_test_OBJECTS = sla_test.$(OBJEXT)
+sla_test_OBJECTS = $(am_sla_test_OBJECTS)
+sla_test_DEPENDENCIES = libsla.la
+dist_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
+SCRIPTS = $(dist_bin_SCRIPTS)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+FCCOMPILE = $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(STAR_FCFLAGS) $(AM_FCFLAGS) $(FCFLAGS)
+#LTFCCOMPILE = $(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) \
+LTFCCOMPILE = $(FC) $(FPP_MAKE_FLAGS) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(AM_FCFLAGS) \
+	$(FCFLAGS)
+FCLD = $(FC)
+FCLINK = $(LIBTOOL) --mode=link $(FC) $(AM_FCFLAGS) $(FCFLAGS) \
+	$(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(STAR_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) \
+	$(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(STAR_CPPFLAGS) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(STAR_LDFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libsla_la_SOURCES) $(slaTest_SOURCES) $(sla_test_SOURCES)
+DIST_SOURCES = $(libsla_la_SOURCES) $(slaTest_SOURCES) \
+	$(sla_test_SOURCES)
+dist_pkgdataDATA_INSTALL = $(INSTALL_DATA)
+dist_starnewsDATA_INSTALL = $(INSTALL_DATA)
+stardocsDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(dist_pkgdata_DATA) $(dist_starnews_DATA) $(stardocs_DATA)
+cincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(cinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+# Use AM_MAKEFLAGS to pass the value of the MANIFEST variable into
+# submakes (not all makes do this automatically).  This can still be
+# overridden with a setting of this variable on the $(MAKE) command
+# line.  I think we really shouldn't be setting this variable -- if
+# it causes a problem for anyone, we should edit a new variable in to
+# the .am templates.
+AM_MAKEFLAGS = MANIFEST=$(MANIFEST)
+REAL_INSTALL = install-am
+# Set to : to emit manifest lines, too
+# (don't actually do this here -- it's done within install-manifest below).
+MANIFEST = false
+ACLOCAL = ${SHELL} /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/missing --run aclocal-1.9
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/missing --run tar
+AR = ar
+AUTOCONF = ${SHELL} /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/missing --run autoconf
+AUTOHEADER = ${SHELL} /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/missing --run autoheader
+AUTOMAKE = ${SHELL} /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/missing --run automake-1.9
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+C_FC_FCLINK_MAGIC = 
+C_FC_PPFC_FCLINK_MAGIC = 
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = grep -E
+EXEEXT = 
+F77 = g77
+FC = g95
+FCFLAGS = -g -O2
+FCLIBS =  -L/afs/in2p3.fr/system/amd64_sl5/usr/local/g95/g95-install/bin/../lib/gcc-lib/x86_64-unknown-linux-gnu/4.0.3/ -L/afs/in2p3.fr/system/amd64_sl5/usr/local/g95/g95-install/bin/../lib/gcc-lib/x86_64-unknown-linux-gnu/4.0.3 -L/usr/lib/gcc// -L/lib/../lib64 -L/lib// -L/afs/in2p3.fr/system/amd64_sl5/usr/local/g95/g95-install/bin/../lib/gcc-lib/x86_64-unknown-linux-gnu/4.0.3/// -L/usr/lib64/ -L/usr/lib64 -lf95 -lm
+FFLAGS = -g -O2
+FPP = g95 -E
+FPPFLAGS =  
+FPPFLAGS_DEF = -D
+FPPFLAGS_F = 
+FPP_COMPILE_EXT = F
+FPP_MAKE_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
+FPP_OUTPUT = >$@
+FPP_PREPROCESS_EXT = f_in
+FPP_SRC_EXT = F
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+LATEX2DVI = $$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1"
+LDFLAGS = 
+LIBOBJS = 
+LIBS = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS = 
+MAKEINFO = ${SHELL} /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/missing --run makeinfo
+NOPIC_FALSE = 
+NOPIC_TRUE = #
+OBJEXT = o
+PACKAGE = sla
+PACKAGE_BUGREPORT = ussc@star.rl.ac.uk
+PACKAGE_NAME = sla
+PACKAGE_STRING = sla 2.5-4
+PACKAGE_TARNAME = sla
+PACKAGE_VERSION = 2.5-4
+PACKAGE_VERSION_INTEGER = 2005004
+PACKAGE_VERSION_MAJOR = 2
+PACKAGE_VERSION_MINOR = 5
+PACKAGE_VERSION_RELEASE = 4
+PATH_SEPARATOR = :
+PAX = /usr/bin/pax
+PREDIST = #
+RANLIB = ranlib
+REAL_FUNCTION_TYPE = float
+SET_MAKE = 
+SHELL = /bin/sh
+STAR2HTML = star2html
+STARLINK = /afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4
+STAR_CPPFLAGS = -I/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4
+STAR_DEPENDENCIES_ATTRIBUTES = 
+STAR_DEPENDENCIES_CHILDREN = <sourceset>star2html</sourceset>
+STAR_DOCUMENTATION =  sun67
+STAR_FCFLAGS = -I/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4 -fno-second-underscore
+STAR_FFLAGS = -I/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4 -fno-second-underscore
+STAR_LATEX_DOCUMENTATION =  sun67.tex sun67.ps sun67.htx_tar
+STAR_LDFLAGS = -L/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4/lib
+STAR_MANIFEST_DIR = $(prefix)/manifests
+STRIP = strip
+TAR = /bin/tar
+VERSION = 2.5-4
+ac_ct_AR = ar
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = g77
+ac_ct_FC = g95
+ac_ct_RANLIB = ranlib
+ac_ct_STRIP = strip
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = 
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+datadir = ${prefix}/share
+exec_prefix = ${prefix}
+host = x86_64-unknown-linux-gnu
+host_alias = 
+host_cpu = x86_64
+host_os = linux-gnu
+host_vendor = unknown
+includedir = ${prefix}/include
+infodir = ${prefix}/info
+install_sh = /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+libsla_la_version_info = 7:0:0
+localstatedir = ${prefix}/var
+mandir = ${prefix}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+prefix = /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4
+program_transform_name = s,x,x,
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+stardocsdir = ${prefix}/docs
+staretcdir = ${prefix}/etc
+starexamplesdir = ${prefix}/examples
+starfacsdir = ${prefix}/help
+starhelpdir = ${prefix}/help
+starnewsdir = ${prefix}/news
+sysconfdir = ${prefix}/etc
+target_alias = 
+cincludedir = $(includedir)/star
+dist_bin_SCRIPTS = sla_link sla_link_adam
+dist_pkgdata_DATA = SLA_CONDITIONS read.me
+EXTRA_DIST = Notes
+lib_LTLIBRARIES = libsla.la
+stardocs_DATA =  sun67.tex sun67.ps sun67.htx_tar
+libsla_la_SOURCES = \
+        $(PRIVATE_INCLUDES) \
+        $(PUBLIC_INCLUDES) \
+	$(F_ROUTINES) \
+	$(C_ROUTINES) \
+	$(FPP_ROUTINES)
+
+libsla_la_LIBADD = $(LTLIBOBJS)
+libsla_la_LDFLAGS = -version-info $(libsla_la_version_info)
+cinclude_HEADERS = $(PUBLIC_C_INCLUDES)
+
+# Make all library code position independent. This is handy for creating
+# shareable libraries from the static ones (Java JNI libraries).
+libsla_la_FCFLAGS = $(AM_FCFLAGS) -fPIC
+PUBLIC_F_INCLUDES = 
+PUBLIC_C_INCLUDES = slalib.h
+PRIVATE_INCLUDES = f77.h
+PUBLIC_INCLUDES = $(PUBLIC_F_INCLUDES) $(PUBLIC_C_INCLUDES)
+FPP_ROUTINES = \
+	random.F \
+	gresid.F
+
+C_ROUTINES = sla.c
+F_ROUTINES = addet.f afin.f airmas.f altaz.f amp.f ampqk.f aop.f	\
+    aoppa.f aoppat.f aopqk.f atmdsp.f atms.f atmt.f av2m.f bear.f	\
+    caf2r.f caldj.f calyd.f cc2s.f cc62s.f cd2tf.f cldj.f clyd.f	\
+    combn.f cr2af.f cr2tf.f cs2c.f cs2c6.f ctf2d.f ctf2r.f daf2r.f	\
+    dafin.f dat.f dav2m.f dbear.f dbjin.f dc62s.f dcc2s.f dcmpf.f	\
+    dcs2c.f dd2tf.f de2h.f deuler.f dfltin.f dh2e.f dimxv.f djcal.f	\
+    djcl.f dm2av.f dmat.f dmoon.f dmxm.f dmxv.f dpav.f dr2af.f dr2tf.f	\
+    drange.f dranrm.f ds2c6.f ds2tp.f dsep.f dsepv.f dt.f dtf2d.f	\
+    dtf2r.f dtp2s.f dtp2v.f dtps2c.f dtpv2c.f dtt.f dv2tp.f dvdv.f	\
+    dvn.f dvxv.f e2h.f earth.f ecleq.f ecmat.f ecor.f eg50.f el2ue.f	\
+    epb.f epb2d.f epco.f epj.f epj2d.f epv.f eqecl.f eqeqx.f eqgal.f	\
+    etrms.f euler.f evp.f fitxy.f fk425.f fk45z.f fk524.f fk52h.f	\
+    fk54z.f fk5hz.f flotin.f galeq.f galsup.f ge50.f geoc.f gmst.f	\
+    gmsta.f h2e.f h2fk5.f hfk5z.f idchf.f idchi.f imxv.f intin.f	\
+    invf.f kbj.f m2av.f map.f mappa.f mapqk.f mapqkz.f moon.f mxm.f	\
+    mxv.f nut.f nutc.f nutc80.f oap.f oapqk.f obs.f pa.f pav.f pcd.f	\
+    pda2h.f pdq2h.f permut.f pertel.f pertue.f planel.f planet.f	\
+    plante.f plantu.f pm.f polmo.f prebn.f prec.f precl.f preces.f	\
+    prenut.f pv2el.f pv2ue.f pvobs.f pxy.f range.f ranorm.f rcc.f	\
+    rdplan.f refco.f refcoq.f refro.f refv.f refz.f rverot.f rvgalc.f	\
+    rvlg.f rvlsrd.f rvlsrk.f s2tp.f sep.f sepv.f smat.f subet.f		\
+    supgal.f svd.f svdcov.f svdsol.f tp2s.f tp2v.f tps2c.f tpv2c.f	\
+    ue2el.f ue2pv.f unpcd.f v2tp.f vdv.f veri.f vers.f vn.f vxv.f	\
+    wait.f xy2xy.f zd.f
+
+TESTS = sla_test slaTest
+sla_test_SOURCES = sla_test.f
+sla_test_LDADD = libsla.la
+slaTest_SOURCES = slaTest.c
+slaTest_LDADD = libsla.la  -L/afs/in2p3.fr/system/amd64_sl5/usr/local/g95/g95-install/bin/../lib/gcc-lib/x86_64-unknown-linux-gnu/4.0.3/ -L/afs/in2p3.fr/system/amd64_sl5/usr/local/g95/g95-install/bin/../lib/gcc-lib/x86_64-unknown-linux-gnu/4.0.3 -L/usr/lib/gcc// -L/lib/../lib64 -L/lib// -L/afs/in2p3.fr/system/amd64_sl5/usr/local/g95/g95-install/bin/../lib/gcc-lib/x86_64-unknown-linux-gnu/4.0.3/// -L/usr/lib64/ -L/usr/lib64 -lf95 -lm
+dist_starnews_DATA = sla.news
+DISTCLEANFILES = gresid.F random.F wait.f
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .F .f_in .c .dvi .f .htx_tar .lo .o .obj .pdf .ps .tex
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --startree '; \
+	      cd $(srcdir) && $(AUTOMAKE) --startree  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --startree  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --startree  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+component.xml: $(top_builddir)/config.status $(srcdir)/component.xml.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+vers.f: $(top_builddir)/config.status $(srcdir)/vers.f.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+veri.f: $(top_builddir)/config.status $(srcdir)/veri.f.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+f77.h: $(top_builddir)/config.status $(srcdir)/f77.h.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	    if $(MANIFEST); then \
+	      echo "MANIFEST:$(DESTDIR)$(libdir)/$$f"; \
+	      expr $$p : '.*\.la$$' >/dev/null || \
+		{ echo "Installing non-la file $$p!"; exit 1; }; \
+	      (. ./$$p; \
+		if test -n "$$library_names"; then \
+		  for l in $$library_names; do \
+		    echo "MANIFEST:$(DESTDIR)$$libdir/$$l"; \
+		  done; \
+		fi; \
+		if test -n "$$old_library"; then \
+		  echo "MANIFEST:$(DESTDIR)$$libdir/$$old_library"; \
+		else :; fi; \
+              ); \
+	    else :; fi; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libsla.la: $(libsla_la_OBJECTS) $(libsla_la_DEPENDENCIES) 
+	$(FCLINK) -rpath $(libdir) $(libsla_la_LDFLAGS) $(libsla_la_OBJECTS) $(libsla_la_LIBADD) $(C_FC_PPFC_FCLINK_MAGIC) $(LIBS)
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+slaTest$(EXEEXT): $(slaTest_OBJECTS) $(slaTest_DEPENDENCIES) 
+	@rm -f slaTest$(EXEEXT)
+	$(LINK) $(slaTest_LDFLAGS) $(slaTest_OBJECTS) $(slaTest_LDADD) $(LIBS) 
+sla_test$(EXEEXT): $(sla_test_OBJECTS) $(sla_test_DEPENDENCIES) 
+	@rm -f sla_test$(EXEEXT)
+	$(FCLINK) $(sla_test_LDFLAGS) $(sla_test_OBJECTS) $(sla_test_LDADD) $(LIBS) $(C_FC_PPFC_FCLINK_MAGIC)
+install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  if test -f $$d$$p; then \
+	    f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	    echo " $(dist_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	    $(dist_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
+	    $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(bindir)/$$f" || :; \
+	  else :; fi; \
+	done
+
+uninstall-dist_binSCRIPTS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+include $(DEPDIR)/gresid.F__vms
+include $(DEPDIR)/gresid.F__win
+include $(DEPDIR)/gresid.Fdefault
+include $(DEPDIR)/random.F__vms
+include $(DEPDIR)/random.F__win
+include $(DEPDIR)/random.Fdefault
+include $(DEPDIR)/rtl_random.Plo
+include $(DEPDIR)/wait.f__vms
+include $(DEPDIR)/wait.f__win
+include $(DEPDIR)/wait.fdefault
+include ./$(DEPDIR)/sla.Plo
+include ./$(DEPDIR)/slaTest.Po
+
+.F.o:
+	$(FCCOMPILE) -c -o $@ $<
+
+.F.obj:
+	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.F.lo:
+	$(LTFCCOMPILE) -c -o $@ $<
+
+libsla_la-random.lo: random.F
+	$(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-random.lo `test -f 'random.F' || echo '$(srcdir)/'`random.F
+
+libsla_la-gresid.lo: gresid.F
+	$(LIBTOOL) --mode=compile $(FC) $(FPP_MAKE_FLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gresid.lo `test -f 'gresid.F' || echo '$(srcdir)/'`gresid.F
+
+# The following rule preprocesses a Fortran preprocessor input file
+# foo.f_in into a compiler input file foo.f.
+.f_in.f:
+	$(FPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(FPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $< >$@
+
+.c.o:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c $<
+
+.c.obj:
+	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=no \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+#	source='$<' object='$@' libtool=yes \
+#	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
+#	$(LTCOMPILE) -c -o $@ $<
+
+.f.o:
+	$(FCCOMPILE) -c -o $@ $<
+
+.f.obj:
+	$(FCCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.f.lo:
+	$(LTFCCOMPILE) -c -o $@ $<
+
+libsla_la-addet.lo: addet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-addet.lo `test -f 'addet.f' || echo '$(srcdir)/'`addet.f
+
+libsla_la-afin.lo: afin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-afin.lo `test -f 'afin.f' || echo '$(srcdir)/'`afin.f
+
+libsla_la-airmas.lo: airmas.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-airmas.lo `test -f 'airmas.f' || echo '$(srcdir)/'`airmas.f
+
+libsla_la-altaz.lo: altaz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-altaz.lo `test -f 'altaz.f' || echo '$(srcdir)/'`altaz.f
+
+libsla_la-amp.lo: amp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-amp.lo `test -f 'amp.f' || echo '$(srcdir)/'`amp.f
+
+libsla_la-ampqk.lo: ampqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ampqk.lo `test -f 'ampqk.f' || echo '$(srcdir)/'`ampqk.f
+
+libsla_la-aop.lo: aop.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aop.lo `test -f 'aop.f' || echo '$(srcdir)/'`aop.f
+
+libsla_la-aoppa.lo: aoppa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aoppa.lo `test -f 'aoppa.f' || echo '$(srcdir)/'`aoppa.f
+
+libsla_la-aoppat.lo: aoppat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aoppat.lo `test -f 'aoppat.f' || echo '$(srcdir)/'`aoppat.f
+
+libsla_la-aopqk.lo: aopqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-aopqk.lo `test -f 'aopqk.f' || echo '$(srcdir)/'`aopqk.f
+
+libsla_la-atmdsp.lo: atmdsp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atmdsp.lo `test -f 'atmdsp.f' || echo '$(srcdir)/'`atmdsp.f
+
+libsla_la-atms.lo: atms.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atms.lo `test -f 'atms.f' || echo '$(srcdir)/'`atms.f
+
+libsla_la-atmt.lo: atmt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-atmt.lo `test -f 'atmt.f' || echo '$(srcdir)/'`atmt.f
+
+libsla_la-av2m.lo: av2m.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-av2m.lo `test -f 'av2m.f' || echo '$(srcdir)/'`av2m.f
+
+libsla_la-bear.lo: bear.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-bear.lo `test -f 'bear.f' || echo '$(srcdir)/'`bear.f
+
+libsla_la-caf2r.lo: caf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-caf2r.lo `test -f 'caf2r.f' || echo '$(srcdir)/'`caf2r.f
+
+libsla_la-caldj.lo: caldj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-caldj.lo `test -f 'caldj.f' || echo '$(srcdir)/'`caldj.f
+
+libsla_la-calyd.lo: calyd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-calyd.lo `test -f 'calyd.f' || echo '$(srcdir)/'`calyd.f
+
+libsla_la-cc2s.lo: cc2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cc2s.lo `test -f 'cc2s.f' || echo '$(srcdir)/'`cc2s.f
+
+libsla_la-cc62s.lo: cc62s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cc62s.lo `test -f 'cc62s.f' || echo '$(srcdir)/'`cc62s.f
+
+libsla_la-cd2tf.lo: cd2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cd2tf.lo `test -f 'cd2tf.f' || echo '$(srcdir)/'`cd2tf.f
+
+libsla_la-cldj.lo: cldj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cldj.lo `test -f 'cldj.f' || echo '$(srcdir)/'`cldj.f
+
+libsla_la-clyd.lo: clyd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-clyd.lo `test -f 'clyd.f' || echo '$(srcdir)/'`clyd.f
+
+libsla_la-combn.lo: combn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-combn.lo `test -f 'combn.f' || echo '$(srcdir)/'`combn.f
+
+libsla_la-cr2af.lo: cr2af.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cr2af.lo `test -f 'cr2af.f' || echo '$(srcdir)/'`cr2af.f
+
+libsla_la-cr2tf.lo: cr2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cr2tf.lo `test -f 'cr2tf.f' || echo '$(srcdir)/'`cr2tf.f
+
+libsla_la-cs2c.lo: cs2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cs2c.lo `test -f 'cs2c.f' || echo '$(srcdir)/'`cs2c.f
+
+libsla_la-cs2c6.lo: cs2c6.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-cs2c6.lo `test -f 'cs2c6.f' || echo '$(srcdir)/'`cs2c6.f
+
+libsla_la-ctf2d.lo: ctf2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ctf2d.lo `test -f 'ctf2d.f' || echo '$(srcdir)/'`ctf2d.f
+
+libsla_la-ctf2r.lo: ctf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ctf2r.lo `test -f 'ctf2r.f' || echo '$(srcdir)/'`ctf2r.f
+
+libsla_la-daf2r.lo: daf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-daf2r.lo `test -f 'daf2r.f' || echo '$(srcdir)/'`daf2r.f
+
+libsla_la-dafin.lo: dafin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dafin.lo `test -f 'dafin.f' || echo '$(srcdir)/'`dafin.f
+
+libsla_la-dat.lo: dat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dat.lo `test -f 'dat.f' || echo '$(srcdir)/'`dat.f
+
+libsla_la-dav2m.lo: dav2m.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dav2m.lo `test -f 'dav2m.f' || echo '$(srcdir)/'`dav2m.f
+
+libsla_la-dbear.lo: dbear.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dbear.lo `test -f 'dbear.f' || echo '$(srcdir)/'`dbear.f
+
+libsla_la-dbjin.lo: dbjin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dbjin.lo `test -f 'dbjin.f' || echo '$(srcdir)/'`dbjin.f
+
+libsla_la-dc62s.lo: dc62s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dc62s.lo `test -f 'dc62s.f' || echo '$(srcdir)/'`dc62s.f
+
+libsla_la-dcc2s.lo: dcc2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcc2s.lo `test -f 'dcc2s.f' || echo '$(srcdir)/'`dcc2s.f
+
+libsla_la-dcmpf.lo: dcmpf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcmpf.lo `test -f 'dcmpf.f' || echo '$(srcdir)/'`dcmpf.f
+
+libsla_la-dcs2c.lo: dcs2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dcs2c.lo `test -f 'dcs2c.f' || echo '$(srcdir)/'`dcs2c.f
+
+libsla_la-dd2tf.lo: dd2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dd2tf.lo `test -f 'dd2tf.f' || echo '$(srcdir)/'`dd2tf.f
+
+libsla_la-de2h.lo: de2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-de2h.lo `test -f 'de2h.f' || echo '$(srcdir)/'`de2h.f
+
+libsla_la-deuler.lo: deuler.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-deuler.lo `test -f 'deuler.f' || echo '$(srcdir)/'`deuler.f
+
+libsla_la-dfltin.lo: dfltin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dfltin.lo `test -f 'dfltin.f' || echo '$(srcdir)/'`dfltin.f
+
+libsla_la-dh2e.lo: dh2e.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dh2e.lo `test -f 'dh2e.f' || echo '$(srcdir)/'`dh2e.f
+
+libsla_la-dimxv.lo: dimxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dimxv.lo `test -f 'dimxv.f' || echo '$(srcdir)/'`dimxv.f
+
+libsla_la-djcal.lo: djcal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-djcal.lo `test -f 'djcal.f' || echo '$(srcdir)/'`djcal.f
+
+libsla_la-djcl.lo: djcl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-djcl.lo `test -f 'djcl.f' || echo '$(srcdir)/'`djcl.f
+
+libsla_la-dm2av.lo: dm2av.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dm2av.lo `test -f 'dm2av.f' || echo '$(srcdir)/'`dm2av.f
+
+libsla_la-dmat.lo: dmat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmat.lo `test -f 'dmat.f' || echo '$(srcdir)/'`dmat.f
+
+libsla_la-dmoon.lo: dmoon.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmoon.lo `test -f 'dmoon.f' || echo '$(srcdir)/'`dmoon.f
+
+libsla_la-dmxm.lo: dmxm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmxm.lo `test -f 'dmxm.f' || echo '$(srcdir)/'`dmxm.f
+
+libsla_la-dmxv.lo: dmxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dmxv.lo `test -f 'dmxv.f' || echo '$(srcdir)/'`dmxv.f
+
+libsla_la-dpav.lo: dpav.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dpav.lo `test -f 'dpav.f' || echo '$(srcdir)/'`dpav.f
+
+libsla_la-dr2af.lo: dr2af.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dr2af.lo `test -f 'dr2af.f' || echo '$(srcdir)/'`dr2af.f
+
+libsla_la-dr2tf.lo: dr2tf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dr2tf.lo `test -f 'dr2tf.f' || echo '$(srcdir)/'`dr2tf.f
+
+libsla_la-drange.lo: drange.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-drange.lo `test -f 'drange.f' || echo '$(srcdir)/'`drange.f
+
+libsla_la-dranrm.lo: dranrm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dranrm.lo `test -f 'dranrm.f' || echo '$(srcdir)/'`dranrm.f
+
+libsla_la-ds2c6.lo: ds2c6.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ds2c6.lo `test -f 'ds2c6.f' || echo '$(srcdir)/'`ds2c6.f
+
+libsla_la-ds2tp.lo: ds2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ds2tp.lo `test -f 'ds2tp.f' || echo '$(srcdir)/'`ds2tp.f
+
+libsla_la-dsep.lo: dsep.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dsep.lo `test -f 'dsep.f' || echo '$(srcdir)/'`dsep.f
+
+libsla_la-dsepv.lo: dsepv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dsepv.lo `test -f 'dsepv.f' || echo '$(srcdir)/'`dsepv.f
+
+libsla_la-dt.lo: dt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dt.lo `test -f 'dt.f' || echo '$(srcdir)/'`dt.f
+
+libsla_la-dtf2d.lo: dtf2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtf2d.lo `test -f 'dtf2d.f' || echo '$(srcdir)/'`dtf2d.f
+
+libsla_la-dtf2r.lo: dtf2r.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtf2r.lo `test -f 'dtf2r.f' || echo '$(srcdir)/'`dtf2r.f
+
+libsla_la-dtp2s.lo: dtp2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtp2s.lo `test -f 'dtp2s.f' || echo '$(srcdir)/'`dtp2s.f
+
+libsla_la-dtp2v.lo: dtp2v.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtp2v.lo `test -f 'dtp2v.f' || echo '$(srcdir)/'`dtp2v.f
+
+libsla_la-dtps2c.lo: dtps2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtps2c.lo `test -f 'dtps2c.f' || echo '$(srcdir)/'`dtps2c.f
+
+libsla_la-dtpv2c.lo: dtpv2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtpv2c.lo `test -f 'dtpv2c.f' || echo '$(srcdir)/'`dtpv2c.f
+
+libsla_la-dtt.lo: dtt.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dtt.lo `test -f 'dtt.f' || echo '$(srcdir)/'`dtt.f
+
+libsla_la-dv2tp.lo: dv2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dv2tp.lo `test -f 'dv2tp.f' || echo '$(srcdir)/'`dv2tp.f
+
+libsla_la-dvdv.lo: dvdv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvdv.lo `test -f 'dvdv.f' || echo '$(srcdir)/'`dvdv.f
+
+libsla_la-dvn.lo: dvn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvn.lo `test -f 'dvn.f' || echo '$(srcdir)/'`dvn.f
+
+libsla_la-dvxv.lo: dvxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-dvxv.lo `test -f 'dvxv.f' || echo '$(srcdir)/'`dvxv.f
+
+libsla_la-e2h.lo: e2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-e2h.lo `test -f 'e2h.f' || echo '$(srcdir)/'`e2h.f
+
+libsla_la-earth.lo: earth.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-earth.lo `test -f 'earth.f' || echo '$(srcdir)/'`earth.f
+
+libsla_la-ecleq.lo: ecleq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecleq.lo `test -f 'ecleq.f' || echo '$(srcdir)/'`ecleq.f
+
+libsla_la-ecmat.lo: ecmat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecmat.lo `test -f 'ecmat.f' || echo '$(srcdir)/'`ecmat.f
+
+libsla_la-ecor.lo: ecor.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ecor.lo `test -f 'ecor.f' || echo '$(srcdir)/'`ecor.f
+
+libsla_la-eg50.lo: eg50.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eg50.lo `test -f 'eg50.f' || echo '$(srcdir)/'`eg50.f
+
+libsla_la-el2ue.lo: el2ue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-el2ue.lo `test -f 'el2ue.f' || echo '$(srcdir)/'`el2ue.f
+
+libsla_la-epb.lo: epb.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epb.lo `test -f 'epb.f' || echo '$(srcdir)/'`epb.f
+
+libsla_la-epb2d.lo: epb2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epb2d.lo `test -f 'epb2d.f' || echo '$(srcdir)/'`epb2d.f
+
+libsla_la-epco.lo: epco.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epco.lo `test -f 'epco.f' || echo '$(srcdir)/'`epco.f
+
+libsla_la-epj.lo: epj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epj.lo `test -f 'epj.f' || echo '$(srcdir)/'`epj.f
+
+libsla_la-epj2d.lo: epj2d.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epj2d.lo `test -f 'epj2d.f' || echo '$(srcdir)/'`epj2d.f
+
+libsla_la-epv.lo: epv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-epv.lo `test -f 'epv.f' || echo '$(srcdir)/'`epv.f
+
+libsla_la-eqecl.lo: eqecl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqecl.lo `test -f 'eqecl.f' || echo '$(srcdir)/'`eqecl.f
+
+libsla_la-eqeqx.lo: eqeqx.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqeqx.lo `test -f 'eqeqx.f' || echo '$(srcdir)/'`eqeqx.f
+
+libsla_la-eqgal.lo: eqgal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-eqgal.lo `test -f 'eqgal.f' || echo '$(srcdir)/'`eqgal.f
+
+libsla_la-etrms.lo: etrms.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-etrms.lo `test -f 'etrms.f' || echo '$(srcdir)/'`etrms.f
+
+libsla_la-euler.lo: euler.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-euler.lo `test -f 'euler.f' || echo '$(srcdir)/'`euler.f
+
+libsla_la-evp.lo: evp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-evp.lo `test -f 'evp.f' || echo '$(srcdir)/'`evp.f
+
+libsla_la-fitxy.lo: fitxy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fitxy.lo `test -f 'fitxy.f' || echo '$(srcdir)/'`fitxy.f
+
+libsla_la-fk425.lo: fk425.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk425.lo `test -f 'fk425.f' || echo '$(srcdir)/'`fk425.f
+
+libsla_la-fk45z.lo: fk45z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk45z.lo `test -f 'fk45z.f' || echo '$(srcdir)/'`fk45z.f
+
+libsla_la-fk524.lo: fk524.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk524.lo `test -f 'fk524.f' || echo '$(srcdir)/'`fk524.f
+
+libsla_la-fk52h.lo: fk52h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk52h.lo `test -f 'fk52h.f' || echo '$(srcdir)/'`fk52h.f
+
+libsla_la-fk54z.lo: fk54z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk54z.lo `test -f 'fk54z.f' || echo '$(srcdir)/'`fk54z.f
+
+libsla_la-fk5hz.lo: fk5hz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-fk5hz.lo `test -f 'fk5hz.f' || echo '$(srcdir)/'`fk5hz.f
+
+libsla_la-flotin.lo: flotin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-flotin.lo `test -f 'flotin.f' || echo '$(srcdir)/'`flotin.f
+
+libsla_la-galeq.lo: galeq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-galeq.lo `test -f 'galeq.f' || echo '$(srcdir)/'`galeq.f
+
+libsla_la-galsup.lo: galsup.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-galsup.lo `test -f 'galsup.f' || echo '$(srcdir)/'`galsup.f
+
+libsla_la-ge50.lo: ge50.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ge50.lo `test -f 'ge50.f' || echo '$(srcdir)/'`ge50.f
+
+libsla_la-geoc.lo: geoc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-geoc.lo `test -f 'geoc.f' || echo '$(srcdir)/'`geoc.f
+
+libsla_la-gmst.lo: gmst.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gmst.lo `test -f 'gmst.f' || echo '$(srcdir)/'`gmst.f
+
+libsla_la-gmsta.lo: gmsta.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-gmsta.lo `test -f 'gmsta.f' || echo '$(srcdir)/'`gmsta.f
+
+libsla_la-h2e.lo: h2e.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-h2e.lo `test -f 'h2e.f' || echo '$(srcdir)/'`h2e.f
+
+libsla_la-h2fk5.lo: h2fk5.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-h2fk5.lo `test -f 'h2fk5.f' || echo '$(srcdir)/'`h2fk5.f
+
+libsla_la-hfk5z.lo: hfk5z.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-hfk5z.lo `test -f 'hfk5z.f' || echo '$(srcdir)/'`hfk5z.f
+
+libsla_la-idchf.lo: idchf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-idchf.lo `test -f 'idchf.f' || echo '$(srcdir)/'`idchf.f
+
+libsla_la-idchi.lo: idchi.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-idchi.lo `test -f 'idchi.f' || echo '$(srcdir)/'`idchi.f
+
+libsla_la-imxv.lo: imxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-imxv.lo `test -f 'imxv.f' || echo '$(srcdir)/'`imxv.f
+
+libsla_la-intin.lo: intin.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-intin.lo `test -f 'intin.f' || echo '$(srcdir)/'`intin.f
+
+libsla_la-invf.lo: invf.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-invf.lo `test -f 'invf.f' || echo '$(srcdir)/'`invf.f
+
+libsla_la-kbj.lo: kbj.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-kbj.lo `test -f 'kbj.f' || echo '$(srcdir)/'`kbj.f
+
+libsla_la-m2av.lo: m2av.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-m2av.lo `test -f 'm2av.f' || echo '$(srcdir)/'`m2av.f
+
+libsla_la-map.lo: map.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-map.lo `test -f 'map.f' || echo '$(srcdir)/'`map.f
+
+libsla_la-mappa.lo: mappa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mappa.lo `test -f 'mappa.f' || echo '$(srcdir)/'`mappa.f
+
+libsla_la-mapqk.lo: mapqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mapqk.lo `test -f 'mapqk.f' || echo '$(srcdir)/'`mapqk.f
+
+libsla_la-mapqkz.lo: mapqkz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mapqkz.lo `test -f 'mapqkz.f' || echo '$(srcdir)/'`mapqkz.f
+
+libsla_la-moon.lo: moon.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-moon.lo `test -f 'moon.f' || echo '$(srcdir)/'`moon.f
+
+libsla_la-mxm.lo: mxm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mxm.lo `test -f 'mxm.f' || echo '$(srcdir)/'`mxm.f
+
+libsla_la-mxv.lo: mxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-mxv.lo `test -f 'mxv.f' || echo '$(srcdir)/'`mxv.f
+
+libsla_la-nut.lo: nut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nut.lo `test -f 'nut.f' || echo '$(srcdir)/'`nut.f
+
+libsla_la-nutc.lo: nutc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nutc.lo `test -f 'nutc.f' || echo '$(srcdir)/'`nutc.f
+
+libsla_la-nutc80.lo: nutc80.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-nutc80.lo `test -f 'nutc80.f' || echo '$(srcdir)/'`nutc80.f
+
+libsla_la-oap.lo: oap.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-oap.lo `test -f 'oap.f' || echo '$(srcdir)/'`oap.f
+
+libsla_la-oapqk.lo: oapqk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-oapqk.lo `test -f 'oapqk.f' || echo '$(srcdir)/'`oapqk.f
+
+libsla_la-obs.lo: obs.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-obs.lo `test -f 'obs.f' || echo '$(srcdir)/'`obs.f
+
+libsla_la-pa.lo: pa.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pa.lo `test -f 'pa.f' || echo '$(srcdir)/'`pa.f
+
+libsla_la-pav.lo: pav.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pav.lo `test -f 'pav.f' || echo '$(srcdir)/'`pav.f
+
+libsla_la-pcd.lo: pcd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pcd.lo `test -f 'pcd.f' || echo '$(srcdir)/'`pcd.f
+
+libsla_la-pda2h.lo: pda2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pda2h.lo `test -f 'pda2h.f' || echo '$(srcdir)/'`pda2h.f
+
+libsla_la-pdq2h.lo: pdq2h.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pdq2h.lo `test -f 'pdq2h.f' || echo '$(srcdir)/'`pdq2h.f
+
+libsla_la-permut.lo: permut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-permut.lo `test -f 'permut.f' || echo '$(srcdir)/'`permut.f
+
+libsla_la-pertel.lo: pertel.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pertel.lo `test -f 'pertel.f' || echo '$(srcdir)/'`pertel.f
+
+libsla_la-pertue.lo: pertue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pertue.lo `test -f 'pertue.f' || echo '$(srcdir)/'`pertue.f
+
+libsla_la-planel.lo: planel.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-planel.lo `test -f 'planel.f' || echo '$(srcdir)/'`planel.f
+
+libsla_la-planet.lo: planet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-planet.lo `test -f 'planet.f' || echo '$(srcdir)/'`planet.f
+
+libsla_la-plante.lo: plante.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-plante.lo `test -f 'plante.f' || echo '$(srcdir)/'`plante.f
+
+libsla_la-plantu.lo: plantu.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-plantu.lo `test -f 'plantu.f' || echo '$(srcdir)/'`plantu.f
+
+libsla_la-pm.lo: pm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pm.lo `test -f 'pm.f' || echo '$(srcdir)/'`pm.f
+
+libsla_la-polmo.lo: polmo.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-polmo.lo `test -f 'polmo.f' || echo '$(srcdir)/'`polmo.f
+
+libsla_la-prebn.lo: prebn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prebn.lo `test -f 'prebn.f' || echo '$(srcdir)/'`prebn.f
+
+libsla_la-prec.lo: prec.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prec.lo `test -f 'prec.f' || echo '$(srcdir)/'`prec.f
+
+libsla_la-precl.lo: precl.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-precl.lo `test -f 'precl.f' || echo '$(srcdir)/'`precl.f
+
+libsla_la-preces.lo: preces.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-preces.lo `test -f 'preces.f' || echo '$(srcdir)/'`preces.f
+
+libsla_la-prenut.lo: prenut.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-prenut.lo `test -f 'prenut.f' || echo '$(srcdir)/'`prenut.f
+
+libsla_la-pv2el.lo: pv2el.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pv2el.lo `test -f 'pv2el.f' || echo '$(srcdir)/'`pv2el.f
+
+libsla_la-pv2ue.lo: pv2ue.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pv2ue.lo `test -f 'pv2ue.f' || echo '$(srcdir)/'`pv2ue.f
+
+libsla_la-pvobs.lo: pvobs.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pvobs.lo `test -f 'pvobs.f' || echo '$(srcdir)/'`pvobs.f
+
+libsla_la-pxy.lo: pxy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-pxy.lo `test -f 'pxy.f' || echo '$(srcdir)/'`pxy.f
+
+libsla_la-range.lo: range.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-range.lo `test -f 'range.f' || echo '$(srcdir)/'`range.f
+
+libsla_la-ranorm.lo: ranorm.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ranorm.lo `test -f 'ranorm.f' || echo '$(srcdir)/'`ranorm.f
+
+libsla_la-rcc.lo: rcc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rcc.lo `test -f 'rcc.f' || echo '$(srcdir)/'`rcc.f
+
+libsla_la-rdplan.lo: rdplan.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rdplan.lo `test -f 'rdplan.f' || echo '$(srcdir)/'`rdplan.f
+
+libsla_la-refco.lo: refco.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refco.lo `test -f 'refco.f' || echo '$(srcdir)/'`refco.f
+
+libsla_la-refcoq.lo: refcoq.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refcoq.lo `test -f 'refcoq.f' || echo '$(srcdir)/'`refcoq.f
+
+libsla_la-refro.lo: refro.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refro.lo `test -f 'refro.f' || echo '$(srcdir)/'`refro.f
+
+libsla_la-refv.lo: refv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refv.lo `test -f 'refv.f' || echo '$(srcdir)/'`refv.f
+
+libsla_la-refz.lo: refz.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-refz.lo `test -f 'refz.f' || echo '$(srcdir)/'`refz.f
+
+libsla_la-rverot.lo: rverot.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rverot.lo `test -f 'rverot.f' || echo '$(srcdir)/'`rverot.f
+
+libsla_la-rvgalc.lo: rvgalc.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvgalc.lo `test -f 'rvgalc.f' || echo '$(srcdir)/'`rvgalc.f
+
+libsla_la-rvlg.lo: rvlg.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlg.lo `test -f 'rvlg.f' || echo '$(srcdir)/'`rvlg.f
+
+libsla_la-rvlsrd.lo: rvlsrd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlsrd.lo `test -f 'rvlsrd.f' || echo '$(srcdir)/'`rvlsrd.f
+
+libsla_la-rvlsrk.lo: rvlsrk.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-rvlsrk.lo `test -f 'rvlsrk.f' || echo '$(srcdir)/'`rvlsrk.f
+
+libsla_la-s2tp.lo: s2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-s2tp.lo `test -f 's2tp.f' || echo '$(srcdir)/'`s2tp.f
+
+libsla_la-sep.lo: sep.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-sep.lo `test -f 'sep.f' || echo '$(srcdir)/'`sep.f
+
+libsla_la-sepv.lo: sepv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-sepv.lo `test -f 'sepv.f' || echo '$(srcdir)/'`sepv.f
+
+libsla_la-smat.lo: smat.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-smat.lo `test -f 'smat.f' || echo '$(srcdir)/'`smat.f
+
+libsla_la-subet.lo: subet.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-subet.lo `test -f 'subet.f' || echo '$(srcdir)/'`subet.f
+
+libsla_la-supgal.lo: supgal.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-supgal.lo `test -f 'supgal.f' || echo '$(srcdir)/'`supgal.f
+
+libsla_la-svd.lo: svd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svd.lo `test -f 'svd.f' || echo '$(srcdir)/'`svd.f
+
+libsla_la-svdcov.lo: svdcov.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svdcov.lo `test -f 'svdcov.f' || echo '$(srcdir)/'`svdcov.f
+
+libsla_la-svdsol.lo: svdsol.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-svdsol.lo `test -f 'svdsol.f' || echo '$(srcdir)/'`svdsol.f
+
+libsla_la-tp2s.lo: tp2s.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tp2s.lo `test -f 'tp2s.f' || echo '$(srcdir)/'`tp2s.f
+
+libsla_la-tp2v.lo: tp2v.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tp2v.lo `test -f 'tp2v.f' || echo '$(srcdir)/'`tp2v.f
+
+libsla_la-tps2c.lo: tps2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tps2c.lo `test -f 'tps2c.f' || echo '$(srcdir)/'`tps2c.f
+
+libsla_la-tpv2c.lo: tpv2c.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-tpv2c.lo `test -f 'tpv2c.f' || echo '$(srcdir)/'`tpv2c.f
+
+libsla_la-ue2el.lo: ue2el.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ue2el.lo `test -f 'ue2el.f' || echo '$(srcdir)/'`ue2el.f
+
+libsla_la-ue2pv.lo: ue2pv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-ue2pv.lo `test -f 'ue2pv.f' || echo '$(srcdir)/'`ue2pv.f
+
+libsla_la-unpcd.lo: unpcd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-unpcd.lo `test -f 'unpcd.f' || echo '$(srcdir)/'`unpcd.f
+
+libsla_la-v2tp.lo: v2tp.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-v2tp.lo `test -f 'v2tp.f' || echo '$(srcdir)/'`v2tp.f
+
+libsla_la-vdv.lo: vdv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vdv.lo `test -f 'vdv.f' || echo '$(srcdir)/'`vdv.f
+
+libsla_la-veri.lo: veri.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-veri.lo `test -f 'veri.f' || echo '$(srcdir)/'`veri.f
+
+libsla_la-vers.lo: vers.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vers.lo `test -f 'vers.f' || echo '$(srcdir)/'`vers.f
+
+libsla_la-vn.lo: vn.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vn.lo `test -f 'vn.f' || echo '$(srcdir)/'`vn.f
+
+libsla_la-vxv.lo: vxv.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-vxv.lo `test -f 'vxv.f' || echo '$(srcdir)/'`vxv.f
+
+libsla_la-wait.lo: wait.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-wait.lo `test -f 'wait.f' || echo '$(srcdir)/'`wait.f
+
+libsla_la-xy2xy.lo: xy2xy.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-xy2xy.lo `test -f 'xy2xy.f' || echo '$(srcdir)/'`xy2xy.f
+
+libsla_la-zd.lo: zd.f
+	$(LIBTOOL) --mode=compile $(FC) $(STAR_FCFLAGS) $(libsla_la_FCFLAGS) $(FCFLAGS) -c -o libsla_la-zd.lo `test -f 'zd.f' || echo '$(srcdir)/'`zd.f
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+install-dist_pkgdataDATA: $(dist_pkgdata_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(pkgdatadir)" || $(mkdir_p) "$(DESTDIR)$(pkgdatadir)"
+	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(dist_pkgdataDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgdatadir)/$$f'"; \
+	  $(dist_pkgdataDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(pkgdatadir)/$$f" || :; \
+	done
+
+uninstall-dist_pkgdataDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_pkgdata_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(pkgdatadir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(pkgdatadir)/$$f"; \
+	done
+install-dist_starnewsDATA: $(dist_starnews_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(starnewsdir)" || $(mkdir_p) "$(DESTDIR)$(starnewsdir)"
+	@list='$(dist_starnews_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(dist_starnewsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(starnewsdir)/$$f'"; \
+	  $(dist_starnewsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(starnewsdir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(starnewsdir)/$$f" || :; \
+	done
+
+uninstall-dist_starnewsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(dist_starnews_DATA)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(starnewsdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(starnewsdir)/$$f"; \
+	done
+install-stardocsDATA: $(stardocs_DATA)
+	@$(NORMAL_INSTALL)
+	$(mkdir_p) $(DESTDIR)$(stardocsdir)
+	@list='$(stardocs_DATA)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  if expr "x$$p" : 'x.*\.htx_tar$$' >/dev/null; then \
+	    if test -n "$(PAX)"; then \
+	      if $(MANIFEST); then \
+		$(PAX) -f $$d$$p | \
+		  sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \
+	      fi; \
+	      cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(PAX) -r); \
+	    elif test -n "$(TAR)"; then \
+	      if $(MANIFEST); then \
+	        cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpvf -) | sed 's+^+MANIFEST:$(DESTDIR)$(stardocsdir)/+'; \
+	      else \
+	        cat $$d$$p | (cd $(DESTDIR)$(stardocsdir); $(TAR) xBpf -); \
+	      fi; \
+	    else \
+	      echo "Neither tar nor pax!!!" >&2; \
+	      exit 1; \
+	    fi; \
+	  else \
+	    echo " $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f"; \
+	    $(stardocsDATA_INSTALL) $$d$$p $(DESTDIR)$(stardocsdir)/$$f; \
+	    $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(stardocsdir)/$$f" || :; \
+	  fi; \
+	done
+
+uninstall-stardocsDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(stardocs_DATA)'; for p in $$list; do \
+	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  echo " rm -f $(DESTDIR)$(stardocsdir)/$$f"; \
+	  rm -f $(DESTDIR)$(stardocsdir)/$$f; \
+	done
+install-cincludeHEADERS: $(cinclude_HEADERS)
+	@$(NORMAL_INSTALL)
+	test -z "$(cincludedir)" || $(mkdir_p) "$(DESTDIR)$(cincludedir)"
+	@list='$(cinclude_HEADERS)'; for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  f=$(am__strip_dir) \
+	  echo " $(cincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(cincludedir)/$$f'"; \
+	  $(cincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(cincludedir)/$$f"; \
+	  $(MANIFEST) && echo "MANIFEST:$(DESTDIR)$(cincludedir)/$$f" || :; \
+	done
+
+uninstall-cincludeHEADERS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(cinclude_HEADERS)'; for p in $$list; do \
+	  f=$(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(cincludedir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(cincludedir)/$$f"; \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
+	srcdir=$(srcdir); export srcdir; \
+	list='$(TESTS)'; \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=./; \
+	    elif test -f $$tst; then dir=; \
+	    else dir="$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xpass=`expr $$xpass + 1`; \
+		failed=`expr $$failed + 1`; \
+		echo "XPASS: $$tst"; \
+	      ;; \
+	      *) \
+		echo "PASS: $$tst"; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xfail=`expr $$xfail + 1`; \
+		echo "XFAIL: $$tst"; \
+	      ;; \
+	      *) \
+		failed=`expr $$failed + 1`; \
+		echo "FAIL: $$tst"; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=`expr $$skip + 1`; \
+	      echo "SKIP: $$tst"; \
+	    fi; \
+	  done; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner="All $$all tests passed"; \
+	    else \
+	      banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner="$$failed of $$all tests failed"; \
+	    else \
+	      banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+	    fi; \
+	  fi; \
+	  dashes="$$banner"; \
+	  skipped=""; \
+	  if test "$$skip" -ne 0; then \
+	    skipped="($$skip tests were not run)"; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$skipped"; \
+	  fi; \
+	  report=""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report="Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$report"; \
+	  fi; \
+	  dashes=`echo "$$dashes" | sed s/./=/g`; \
+	  echo "$$dashes"; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+# Don't express a dependency via the directory .htx, or else make
+# tries to delete it as an intermediate (we can't specify
+# .PRECIOUS targets within this file).
+#
+# Requires that the STAR2HTML substitution was made in
+# configure.ac, probably implicitly by the STAR_LATEX_DOCUMENTATION macro.
+#
+# We do not require that star2html be available on the build system,
+# and so we distribute built HTX documentation.  Thus the following rules
+# should be invoked only in the predist state.  However there isn't a
+# file we can use to test whether we're in that state, so write the
+# test so that it will fail if star2html isn't available.
+#
+# If file $(<:.tex=.htx_tar.extras) is present, then it contains a list
+# of files, each one of which should be added to the .htx directory before
+# it is rolled up into a tarball.
+#
+# Ignore the exit status of star2html, as it can sometimes fail harmlessly.
+.tex.dvi:
+	LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+.dvi.ps:
+	dvips -o $@ $<
+.tex.ps:
+	LATEX=latex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+	dvips -o $@ $(<:.tex=.dvi)
+.tex.pdf:
+	LATEX=pdflatex; latex2dvi () { $(LATEX2DVI); }; \
+	  latex2dvi ${<:.tex=}
+.tex.htx_tar:
+	- star2html $(STAR2HTML_FLAGS) $<
+	test -d ${<:.tex=.htx}
+	if test -f ${<:.tex=.htx_tar.extras}; then \
+	  for f in `cat ${<:.tex=.htx_tar.extras}`; do \
+	    test -f "$$f" && cp "$$f" ${<:.tex=.htx} || true; \
+	  done; else :; fi
+	tar cf $@ ${<:.tex=.htx}
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkdir_p) $(distdir)/.
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(DATA) $(HEADERS) config.h
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(starnewsdir)" $(DESTDIR)$(stardocsdir) "$(DESTDIR)$(cincludedir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+# If STAR_MANIFEST_DIR is defined and the MANIFEST variable has the
+# (default) string value 'false', then invoke the install-manifest
+# target, otherwise, do the real install rule.  This means that if
+# this is being invoked from within an install-manifest rule further
+# up the process tree, we don't create another manifest, which would
+# stomp on the original.
+#
+# Any Makefile which does special installations should check the
+# $(MANIFEST) variable, which will be ':' or 'false', and if it is
+# true, emit a line to stdout, consisting of the string 'MANIFEST:'
+# followed by the full path of the file being installed.
+install:  all-am
+	if test -n "$(STAR_MANIFEST_DIR)" -a $(MANIFEST) = false; then \
+	    $(MAKE) SHELL=/bin/sh $(AM_MAKEFLAGS) install-manifest; \
+	else \
+	    $(MAKE) $(AM_MAKEFLAGS) $(REAL_INSTALL); \
+	fi
+
+install-manifest:
+	$(mkdir_p) $(DESTDIR)$(STAR_MANIFEST_DIR)
+	MFX=$${TMPDIR-/tmp}/manifest-$$$$-1; rm -f $$MFX; MF_INST_OK=:; \
+	  { $(MAKE) MANIFEST=: $(REAL_INSTALL) \
+	    || MF_INST_OK=false; } \
+	    | tee $$MFX | grep -v '^MANIFEST:' || :; \
+	  if $$MF_INST_OK; then \
+	    MF=$${TMPDIR-/tmp}/manifest-$$$$-2; rm -f $$MF; \
+	    ( echo "<?xml version='1.0'?>"; \
+	      echo "<!DOCTYPE manifest SYSTEM 'componentinfo.dtd'>"; \
+	      echo "<manifest component='$(PACKAGE)'>"; \
+	      echo "<version>$(PACKAGE_VERSION)</version>"; \
+	      echo "<files>"; \
+	      sed -n 's/^MANIFEST://p;' $$MFX; \
+	      echo "</files>"; \
+	      echo "</manifest>"; \
+	    ) >$$MF; \
+	    $(INSTALL_DATA) $$MF $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE); \
+	  else \
+	    echo "Installation of component $(DESTDIR)$(STAR_MANIFEST_DIR)/$(PACKAGE) failed" >&2; \
+	  fi; \
+	  rm -f $$MFX $$MF; \
+	  $$MF_INST_OK
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-rm -f configure.log
+	-rm -f make.log
+	-rm -f starconf.status
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(DEPDIR) ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-cincludeHEADERS install-dist_pkgdataDATA \
+	install-dist_starnewsDATA install-stardocsDATA
+
+install-exec-am: install-dist_binSCRIPTS install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -rf $(DEPDIR) ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-cincludeHEADERS uninstall-dist_binSCRIPTS \
+	uninstall-dist_pkgdataDATA uninstall-dist_starnewsDATA \
+	uninstall-info-am uninstall-libLTLIBRARIES \
+	uninstall-stardocsDATA
+
+.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \
+	clean clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool ctags dist dist-all dist-bzip2 dist-gzip \
+	dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-compile distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-cincludeHEADERS install-data \
+	install-data-am install-dist_binSCRIPTS \
+	install-dist_pkgdataDATA install-dist_starnewsDATA \
+	install-exec install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-manifest \
+	install-stardocsDATA install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-cincludeHEADERS \
+	uninstall-dist_binSCRIPTS uninstall-dist_pkgdataDATA \
+	uninstall-dist_starnewsDATA uninstall-info-am \
+	uninstall-libLTLIBRARIES uninstall-stardocsDATA
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/Notes b/Notes
new file mode 100644
index 0000000000000000000000000000000000000000..be06feb715f017f463c403b6e2a9ea242e443627
--- /dev/null
+++ b/Notes
@@ -0,0 +1,22 @@
+SLALIB imported into CVS and autoconfed, January 2003.
+
+Platform-dependencies: there were three platform-dependent files, for
+random.f, gresid.f (both requiring a random number function) and
+wait.f (sleeps).  The original set of files had extensions alpha_OSF1,
+convex, ix86_Linux, mips, pcm, sun4, sun4_Solaris, and vax.  In each
+case, there were a number of files for unix-like platforms, one
+Windows/MSFortran (pcm) and one VAX one.  For random and gresid, the
+unix ones were largely the same, differing only in whether they called
+a function random() or ran(), and with different calls -- these could
+be handled using fpp.
+
+The Windows and VMS ones were sufficiently different that they've
+remained in separate files.  Each of the three has a __win file,
+specific to MSFortran (or to Windows, I'm not sure).  In each of the
+three cases, the __vms file is the original _vax file -- it's specific
+to VMS, not the VAX.  For random and gresid, the files are called
+random.fpp{__win,_dec_osf} even though there's nothing preprocessable
+in them.
+
+I _think_ I've got the __vms and __win dependencies right, but I've no
+way of testing them.
diff --git a/README.md b/README.md
index 3c25008f06ac7575d54da3e66001f769b610e0f5..0e7babd588bee7a84ad99bebc571848cdf53a11f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,9 @@
 # slalib
 
-Port of old slalib libraries.
\ No newline at end of file
+These are SLA libraries that should correspond to version 2.5.4.
+Copied from Lyon CC /afs/in2p3.fr/throng/antares/src/sla/sla-2.5.4-CentOS7 
+Licence says it is GNU (SLA_CONDITIONS).
+
+They needed for GENHEN installation.
+
+To compile type make.
diff --git a/SLA_CONDITIONS b/SLA_CONDITIONS
new file mode 100644
index 0000000000000000000000000000000000000000..960fe7469fe8270891a6640460b8610f18eb9059
--- /dev/null
+++ b/SLA_CONDITIONS
@@ -0,0 +1,280 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644
index 0000000000000000000000000000000000000000..b70676174c781cc5158b6ff0545308138e193ac0
--- /dev/null
+++ b/aclocal.m4
@@ -0,0 +1,8728 @@
+# generated automatically by aclocal 1.9.6-starlink -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 47 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+	         [m4_ifdef([AC_PROVIDE_$1],
+		           [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+	[AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+	     [define([LT_AC_PROG_GCJ],
+		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+[$]*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "[$]0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+       $SED '/^$/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    # 
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# --------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_unknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# -------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+   ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+    	  lt_cv_dlopen_self_static, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  AC_LIBTOOL_LANG_CXX_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+	  AC_LIBTOOL_LANG_F77_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+	  AC_LIBTOOL_LANG_GCJ_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+	AC_LIBTOOL_LANG_RC_CONFIG
+	;;
+
+      *)
+	AC_MSG_ERROR([Unsupported tag name: $tagname])
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 dll's
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+#- set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided, it is assumed to be `libltdl'.  LIBLTDL will
+# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and
+# top_srcdir appropriately in the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that LIBLTDL
+# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
+# DIRECTORY is not provided and an installed libltdl is not found, it is
+# assumed to be `libltdl'.  LIBLTDL will be prefixed with '${top_builddir}/'
+# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
+# quotes!).  If your package is not flat and you're not using automake,
+# define top_builddir and top_srcdir appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ---------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# --------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+#
+# Check for any special shared library compilation flags.
+#
+_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
+    ;;
+  esac
+fi
+if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
+  AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
+  if echo "$old_CC $old_CFLAGS " | grep "[[ 	]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ 	]]" >/dev/null; then :
+  else
+    AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
+    _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+# Report which librarie types wil actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_LD
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    _LT_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[[012]]|aix4.[[012]].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	else
+	  # We have old collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	fi
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	_LT_AC_SYS_LIBPATH_AIX
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	_LT_AC_TAGVAR(always_export_symbols, $1)=yes
+	# Exported symbols can be pulled into shared objects from archives
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case "$host_os" in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+        _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  freebsd[[12]]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd* | kfreebsd*-gnu | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+        ;;
+      ia64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+        ;;
+      *)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      aCC*)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+	;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  openbsd*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sco*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	case $host_os in
+	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars.  Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDGIRSTW]]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris* | sysv5*)
+  symcode='[[BDRT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      ccc*)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  _LT_CC_BASENAME([$compiler])
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+    
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+    
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  else
+  	  # We have old collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 _LT_AC_SYS_LIBPATH_AIX
+	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi[[45]]*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+_LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+_LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	   ;;
+	 *)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    sco3.2v5*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[[78]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv5*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
+
+# Starlink M4 macros for autoconf
+# original starconf.m4, installed by starconf 1.2, rnum=1002000
+# DO NOT EDIT: it may be overwritten when starconf is next run
+
+
+# STAR_DEFAULTS(options='')
+# -------------------------
+# Defaults for Starlink configure.ac files.  The optional OPTIONS
+# argument holds a space-separated list of option keywords, of which
+# the only ones at present are `per-package-dirs', which causes
+# applications and help to be installed in a package-specific
+# directory, and 'docs-only', which indicates that the component contains
+# only documentation.
+#
+# Certain features of this macro are documented in SSN/78, in particular
+#   - Sets STARLINK
+#   - Sets AM_FCFLAGS, AM_FFLAGS, AM_CFLAGS, AM_LDFLAGS to appropriate values
+#   - Sets PACKAGE_VERSION_{MAJOR,MINOR,RELEASE,INTEGER}
+# The behaviour of these should not be changed without changing the
+# documentation, or without due consideration of the packages which use
+# the earlier behaviour.  Everything else is, in principle, private
+# (not that that's going to stop folk).
+AC_DEFUN([STAR_DEFAULTS],
+[##
+m4_ifval([$1],
+         [AC_FOREACH([Option], [$1],
+                     [m4_case(Option,
+                              [per-package-dirs], [_star_per_package_dirs=:],
+                              [docs-only], [m4_define([_poss_STAR_RESTFP_FIX],
+                                                      [])dnl
+                                           _star_docs_only=:],
+                              [AC_FATAL([$0: unrecognised option $1])])
+                      ])],
+         [])
+m4_ifdef([_poss_STAR_RESTFP_FIX],
+         [],
+         [m4_define([_poss_STAR_RESTFP_FIX], [_STAR_RESTFP_FIX])])
+
+m4_define([per_dir_PREFIX],   [m4_ifdef([OVERRIDE_PREFIX],
+                                        [OVERRIDE_PREFIX],
+                                        [/home/vmwareshare/rhel30linux_i386/build/build-root])])
+m4_define([per_dir_STARLINK], [m4_ifdef([OVERRIDE_STARLINK],
+                                        [OVERRIDE_STARLINK],
+                                        [/home/vmwareshare/rhel30linux_i386/build/build-root])])
+
+test -n "$_star_per_package_dirs" || _star_per_package_dirs=false
+test -n "$_star_docs_only"        || _star_docs_only=false
+
+
+# Ensure that STARLINK has a value, defaulting to
+# /home/vmwareshare/rhel30linux_i386/build/build-root.  Note that this directory may be
+# different from /star, and reflects the value of
+# STARCONF_DEFAULT_STARLINK that the `starconf' package was configured
+# with before its installation. 
+#
+# We use $STARLINK as the location of any other Starlink tools we need
+# to use during the building of our packages, and for the location of
+# any manifests we need to check.  It is permissable for it to be
+# different from $(prefix): this is partly because we have no way of
+# enforcing that the two be the same, since the user can set
+# prefix=xxx on the `make install' command line, and partly so that it
+# is possible to make a test version of a new package, using tools
+# from an old installation, but installing in a new place.
+#
+# However, we install software in /home/vmwareshare/rhel30linux_i386/build/build-root by
+# default.  This is so even if $STARLINK and STARCONF_DEFAULT_STARLINK
+# are different, because in this case we are planning to use a
+# previous installation in $STARLINK or $STARCONF_DEFAULT_STARLINK,
+# but install the newly built tool elsewhere. 
+#
+# In most cases, including the most important case where we are
+# building the tree from scratch, in a checked out directory,
+# STARLINK, STARCONF_DEFAULT_STARLINK and STARCONF_DEFAULT_PREFIX will
+# all be the same.  That's OK because a separate aspect of the build
+# process, respecting the various dependencies expresses in source
+# directories, ensures that we don't use (and install) any Starlink
+# tools in one component before that component has been build and
+# installed. 
+
+AC_PREFIX_DEFAULT(per_dir_PREFIX)dnl
+
+test -n "$STARLINK" || STARLINK=per_dir_STARLINK
+
+# Handle the --with-starlink option.  If --with-starlink is present
+# with no argument (the default), we do nothing as this simply
+# indicates that this is part of a Starlink tree.  If it has an
+# argument, then this overrides the location of the Starlink tree.
+# Option --without-starlink or --with-starlink=no indicates that this
+# is being built _not_ as part of a Starlink build (that is, it's
+# being distributed as something other than a Starlink package).  In
+# this case, the variable STARLINK is unset.
+AC_ARG_WITH(starlink,
+            AS_HELP_STRING([--with-starlink],
+                           [Starlink tree to use (default ${STARLINK:=per_dir_STARLINK})]),
+            [if test -z "$withval" -o "$withval" = yes; then
+                 : nothing needs to be done
+             elif test "X$withval" = Xno; then
+                 unset STARLINK
+             elif test -d "$withval"; then
+                 STARLINK="$withval"
+             else
+                 AC_MSG_WARN([--with-starlink given nonexistent directory; ignored: using default $STARLINK instead])
+             fi])
+if test -n "$STARLINK"; then
+    AC_MSG_NOTICE([Starlink tree located at $STARLINK])
+else
+    AC_MSG_NOTICE([Not being built as part of the Starlink tree])
+fi
+
+# Handle --without-stardocs.  Don't build and install documentation.
+# Default is --with-stardocs.
+_star_build_docs=:
+AC_ARG_WITH(stardocs,
+            AS_HELP_STRING([--without-stardocs],
+                           [Do not install built documentation (default --with)]),
+            [if test -z "$withval"; then
+                 _star_build_docs=: # default
+             elif test "X$withval" = Xno; then
+                 _star_build_docs=false
+             elif test "X$withval" = Xyes; then
+                 _star_build_docs=:
+             else
+                 AC_MSG_WARN([bad arg to --with-stardocs: using yes])
+                 _star_build_docs=:
+             fi])
+
+if $_star_docs_only; then
+    if $_star_build_docs; then
+        : OK
+    else
+        AC_MSG_WARN([Building without documentation in a docs-only directory])
+    fi
+fi
+
+# Everything depends on where /star is.  Declare STARLINK as a
+# `precious variable'.  Amongst other things, this will make
+# ./configure squeal if the package is re-configured with an
+# inconsistent value of this variable.
+AC_ARG_VAR(STARLINK, [Location of a current Starlink tree (used if necessary)])dnl
+
+# AC_SUBST the STARLINK variable.  Macro AC_ARG_VAR does this anyway,
+# but automake doesn't know that (in 1.6 at least): however any
+# variable that automake finds has been AC_SUBSTed, it includes in
+# Makefile.in, and we need that.
+AC_SUBST(STARLINK)
+
+# Use the above information: $STARLINK indicates a preexisting
+# Starlink tree.
+#
+# Avoid doing anything if $STARLINK was unset above.
+#
+# Add library search paths using STAR_LDFLAGS.  Do it this way, rather than
+# by defining LIBS (which is also a non-user variable): (a) these are
+# really options to the linker, rather than adjustments to the set of
+# libraries, so this makes sense; also (b) adding them to LIBS is too
+# late, since that adds -L _after_ any -l options found in *_LDADD.
+if test -n "$STARLINK"; then
+    STAR_CPPFLAGS="-I$STARLINK/include"
+    STAR_FCFLAGS="-I$STARLINK/include"
+    STAR_FFLAGS="-I$STARLINK/include"
+    STAR_LDFLAGS="-L$STARLINK/lib"
+else
+    STAR_CPPFLAGS=
+    STAR_FCFLAGS=
+    STAR_FFLAGS=
+    STAR_LDFLAGS=
+fi
+AC_SUBST(STAR_CPPFLAGS)
+AC_SUBST(STAR_FCFLAGS)
+AC_SUBST(STAR_FFLAGS)
+AC_SUBST(STAR_LDFLAGS)
+
+
+_poss_STAR_RESTFP_FIX
+
+# Installation directory options (these are no longer handled
+# by _STAR_EXTRADIR_COMMON).  There should be an entry here for each of
+# Starlink's special installation locations.
+AC_SUBST([stardocsdir],     ['${prefix}/docs'])dnl     documentation
+AC_SUBST([staretcdir],      ['${prefix}/etc'])dnl
+AC_SUBST([starexamplesdir], ['${prefix}/examples'])dnl
+AC_SUBST([starfacsdir],     ['${prefix}/help'])dnl     facilities files
+AC_SUBST([starhelpdir],     ['${prefix}/help'])dnl     other help files
+AC_SUBST([starnewsdir],     ['${prefix}/news'])dnl
+
+# Certain directories are affected by the $_star_per_package_dir variable;
+# if it's true, then add the $PACKAGE_NAME to the directory.
+# The directories currently adjusted by this are bin and help;
+# there are others: see PWD's message of 2004-02-16
+# <http://www.jiscmail.ac.uk/cgi-bin/wa.exe?A2=ind0402&L=stardev&T=0&F=&S=&P=5153>
+if $_star_per_package_dirs; then
+    bindir="$bindir/$PACKAGE_NAME"
+    starhelpdir="$starhelpdir/$PACKAGE_NAME"
+    staretcdir="$staretcdir/$PACKAGE_NAME"
+    AC_MSG_NOTICE([[STAR_DEFAULTS] has option per-package-dirs:])
+    AC_MSG_NOTICE([    bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir])
+    # Note that starfacsdir is unaffected by per-package-dirs -- facility
+    # files must always be installed in .../help (this also facilitates
+    # changing this installation location in future, to somewhere with a
+    # more logical name than .../help).
+fi
+
+
+# Dependency declarations and checks.
+# Everything is dependent on starconf, so we don't have to declare that 
+# for each package separately.
+# STAR_DEPENDENCIES_ATTRIBUTES is currently not used.
+STAR_DEPENDENCIES_ATTRIBUTES=''
+STAR_DEPENDENCIES_CHILDREN=''
+AC_SUBST(STAR_DEPENDENCIES_ATTRIBUTES)
+AC_SUBST(STAR_DEPENDENCIES_CHILDREN)
+
+# List of documentation.  See [STAR_LATEX_DOCUMENTATION].
+# STAR_DOCUMENTATION is a list of document codes,
+STAR_DOCUMENTATION=
+AC_SUBST([STAR_DOCUMENTATION])
+
+# Create a PACKAGE_VERSION_INTEGER variable, which contains the
+# package's version number as an integer major*1e6+minor*1e3+release.
+eval [`echo $VERSION | sed -e 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/PACKAGE_VERSION_MAJOR=\1; PACKAGE_VERSION_MINOR=\2; PACKAGE_VERSION_RELEASE=\3;/'`]
+test -n "$PACKAGE_VERSION_MAJOR"   || PACKAGE_VERSION_MAJOR=0
+test -n "$PACKAGE_VERSION_MINOR"   || PACKAGE_VERSION_MINOR=0
+test -n "$PACKAGE_VERSION_RELEASE" || PACKAGE_VERSION_RELEASE=0
+PACKAGE_VERSION_INTEGER=`expr $PACKAGE_VERSION_MAJOR \* 1000000 + $PACKAGE_VERSION_MINOR \* 1000 + $PACKAGE_VERSION_RELEASE`
+AC_SUBST(PACKAGE_VERSION_MAJOR)
+AC_SUBST(PACKAGE_VERSION_MINOR)
+AC_SUBST(PACKAGE_VERSION_RELEASE)
+AC_SUBST(PACKAGE_VERSION_INTEGER)
+dnl Don't put this into config.h -- subst a .h file if required.
+dnl May change this in future
+dnl AC_DEFINE_UNQUOTED([PACKAGE_VERSION_INTEGER], $PACKAGE_VERSION_INTEGER,
+dnl                    [Integer version number, in the form major*1e6+minor*1e3+release])
+
+# When we do dependency checking, using the dependencies declared in
+# the package's configure.ac, we do so by looking at what tools have
+# already been installed in the Starlink tree.  The tree in question
+# is to be found under $STARLINK (see above), so we check that a
+# package is installed by checking that its manifest can be found in
+# $STARLINK/manifests.  We don't AC_SUBST this.
+current_MANIFESTS=$STARLINK/manifests
+
+# When we install manifests, however, they should go in the
+# installation directory.  Allow this to be defaulted from the environment.
+# In particular, if it is set to null in the environment, this will
+# suppress the installation of manifests.
+: ${STAR_MANIFEST_DIR='$(prefix)/manifests'}
+AC_SUBST(STAR_MANIFEST_DIR)
+
+# Although PACKAGE_VERSION is a default output variable, it isn't
+# added as a Makefile variable by default.  We need it below, however,
+# so add it now.
+AC_SUBST(PACKAGE_VERSION)
+
+# Initialise state of predist/postdist flags (see STAR_PREDIST_SOURCES).
+# The value of _star_predist_status must be inherited by any
+# ./configure run in a subdirectory, so that we there avoid the predist
+# test of starconf.status: in a pre-distribution state, this file must
+# be present in the component directory (where we are running
+# ./configure), but must not be present in any subdirectory.
+_star_predist_status=unknown
+PREDIST='#'  # safe default
+AC_SUBST(PREDIST)
+
+# pax and/or tar are used in some install targets.
+# Note: value-if-not-found should be blank, so this can be tested for.
+AC_PATH_PROG(PAX, pax)
+AC_PATH_PROGS(TAR, [gnutar tar])
+
+ALL_TARGET=all-am-normal
+
+# Default $prefix.  This is done by the standard autoconf configure, but at
+# a slightly later stage than this.  Doing it here, as part of STAR_[]DEFAULTS
+# means that the defaulted value of $prefix can be used within the body of
+# the configure.ac, for example to pass it to a ./configure in a subdirectory.
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+])# STAR_DEFAULTS
+
+
+
+# STAR_MESSGEN([msgfile-list])
+# ----------------------------
+#
+# Handle generating message, error, and facility files.
+#
+# Declare that we will need to use the messgen utility.  This macro
+# does not by itself cause the messgen rules to be included in the
+# makefile -- that is done by automake, when it sees a
+# 'include_MESSAGES' or 'noinst_MESSAGES' variable.
+#
+# The optional argument is a space-separated list of files, each of
+# which has a set of message declarations in it, in the format
+# prescribed by the messgen utility.  If this is present, then the
+# named files are declared as pre-distribution files (the macro calls
+# STAR_PREDIST_SOURCES on them), and so the resulting configure script
+# should expect not to find them in an unpacked distribution.  This is
+# useful as documentation or as a shortcut for calling the latter
+# macro, but recall that it is the presence of the automake
+# 'include_MESSAGES' variable which does the work.
+#
+# The macro may be called more than once if you have more than one
+# .msg file in the directory.
+#
+# The files listed in the '_MESSAGES' variable will often have to be 
+# declared as `BUILT_SOURCES'.  
+#
+# The macro also implicitly declares a `sourceset' dependency on the
+# messgen package.
+AC_DEFUN([STAR_MESSGEN],
+   [#
+    $_star_docs_only &&
+        AC_MSG_ERROR([STAR[]_MESSGEN in docs-only directory])
+    STAR_DECLARE_DEPENDENCIES([sourceset], [messgen])
+    m4_ifval([$1], [STAR_PREDIST_SOURCES($1)])
+    STAR_CHECK_PROGS(messgen)
+])# STAR_MESSGEN
+
+
+# STAR_PREDIST_SOURCES(source-files)
+# ----------------------------------
+#
+# Give a (space-separated) list of files which should exist only in
+# the pre-distribution (ie, repository checkout) state.  If one of
+# these is found, then the substitution variable PREDIST is set to a
+# blank.  We should find either all of the marker files or none of
+# them; if only some of the marker files are found, this is probably
+# an error of some type, so warn about it.  This means, by the way,
+# that it is the presence or absence of the first marker file which
+# determines whether we are in the predist or postdist state, with the
+# rest providing consistency checks.
+#
+# The macro may be called more than once.  Multiple calls are
+# equivalent to a single call with all the marker files in the list.
+# Automake checks that the files listed here are not in the list of
+# distributed files, and issues a warning if they are.
+AC_DEFUN([STAR_PREDIST_SOURCES],
+[m4_ifval([$1], [], [AC_FATAL([$0: called with no stamp file])])dnl
+_star_tmp='$1'
+for marker in $_star_tmp
+do
+    if test -f $marker; then
+        _star_predist_marker_present=:
+        AC_MSG_NOTICE([found predist marker file $marker])
+    else
+        _star_predist_marker_present=false
+    fi
+    case $_star_predist_status in
+        unknown)
+            if $_star_predist_marker_present; then
+                # we do want to build sourceset files
+                _star_predist_status=predist
+                PREDIST=
+                AC_MSG_NOTICE([in pre-distribution state])
+            else
+                _star_predist_status=postdist
+                PREDIST='#'
+                AC_MSG_NOTICE([in post-distribution state])
+            fi
+            ;;
+        predist)
+            if $_star_predist_marker_present; then
+                : OK
+            else
+                AC_MSG_WARN([Building predist, but marker file $marker is not present])
+            fi
+            ;;
+        postdist)
+            if $_star_predist_marker_present; then
+                AC_MSG_WARN([In postdistribution state, but predist marker file $marker is present])
+            fi
+            ;;
+        *)
+            AC_MSG_ERROR([impossible predist status $_star_predist_status])
+            ;;
+    esac
+done
+])# STAR_PREDIST_SOURCES
+
+
+# STAR_CNF_COMPATIBLE_SYMBOLS
+# ---------------------------
+#
+# Work out what is required to have the Fortran compiler produce
+# library symbols which are compatible with those expected by the CNF
+# package.  If you are building a library in which C code refers to
+# Fortran libraries, then you should call this macro, which possibly
+# adjusts the AM_FCFLAGS variable.  That is, if you include cnf.h, you
+# should have this macro in the configure.ac.
+#
+# This macro deals with the following issue.  The cnf.h header
+# includes a macro F77_EXTERNAL_NAME which mangles a C name into the
+# corresponding name the Fortran compiler would generate; this
+# generally means no more than appending a single underscore.  As the
+# autoconf documentation for AC_FC_WRAPPERS points out, this is less
+# general than it could be, as some Fortrans fold symbols to
+# uppercase, and some (in particular g77) add two underscores to
+# symbols which already contain one (thus mangling 'ab' to 'ab_', but
+# 'a_b' to 'a_b__').  This behaviour would break the F77_EXTERNAL_NAME
+# macro, which is used throughout the Starlink code in both cases,
+# unless we compiled all the Starlink Fortran libraries in a mode which
+# suppressed this second underscore.  Working out how to do that --
+# if it's necessary at all -- is what this macro does.
+#
+# The more restricted interface of F77_EXTERNAL_NAME is, by the way,
+# the reason why we cannot simply copy the FC_FUNC definition to the
+# cnf.h file as F77_EXTERNAL_NAME: the latter macro is used for
+# symbols both with and without an underscore.
+#
+# If we ever have to migrate the Starlink software to a Fortran which
+# does more complicated name mangling, we'll almost certainly have to
+# perform more serious surgery on cnf.h, using the results of
+# AC_FC_WRAPPERS, along with similar surgery on the code which invokes
+# it.
+#
+# This macro is designed to work with CNF, however it does _not_
+# require the cnf.h headers to be installed, because it should remain
+# callable at configuration time before _anything_ has been installed.
+# In the test code below, we therefore emulate the definition of
+# F77_EXTERNAL_NAME in cnf.h, which appends a single underscore.
+# to the end of C symbols.
+#
+AC_DEFUN([STAR_CNF_COMPATIBLE_SYMBOLS],
+   [$_star_docs_only &&
+        AC_MSG_ERROR([STAR[]_CNF_COMPATIBLE_SYMBOLS in docs-only dir])
+    AC_CACHE_CHECK([how to make Fortran and C play nicely],
+       [star_cv_cnf_compatible_symbols],
+       [AC_REQUIRE([AC_PROG_FC])dnl
+        AC_REQUIRE([AC_PROG_CC])dnl
+        AC_LANG_PUSH([C])
+        AC_LANG_CONFTEST([AC_LANG_SOURCE([
+void funcone_() { return; }
+void func_two_() { return; }
+])])
+        if (eval $ac_compile) 2>&5
+        then
+            mv conftest.$ac_objext c-conftest.$ac_objext
+        else
+            AC_MSG_ERROR([cannot compile a C program!])
+        fi
+        AC_LANG_POP(C)
+        AC_LANG_PUSH([Fortran])
+        AC_LANG_CONFTEST([AC_LANG_SOURCE([
+      PROGRAM conftest
+      CALL funcone
+      CALL func_two
+      END
+])])
+        star_cv_cnf_compatible_symbols=cantlink
+        # The only Fortran we (need to) handle at present is
+        # g77, which has a -fno-second-underscore option for
+        # simplifying the mangling here.  Other Fortrans we've
+        # used do only the single-underscore mangling.
+        for opt in "" "-fno-second-underscore"
+        do
+            if $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5
+            then
+                star_cv_cnf_compatible_symbols=$opt
+                break
+            fi
+        done
+        AC_LANG_POP([Fortran])
+        rm -f conftest* c-conftest*
+])
+    if test "$star_cv_cnf_compatible_symbols" = cantlink
+    then
+        AC_MSG_ERROR([cannot work out how])
+    else
+        STAR_FCFLAGS="$STAR_FCFLAGS $star_cv_cnf_compatible_symbols"
+        STAR_FFLAGS="$STAR_FFLAGS $star_cv_cnf_compatible_symbols"
+    fi
+])# STAR_CNF_COMPATIBLE_SYMBOLS
+
+
+# STAR_CNF_F2C_COMPATIBLE
+# -----------------------
+#
+# Work out if the compiler is using 'f2c' compatible calling conventions.
+#
+# The `f2c' calling conventions, used by GNU Fortran compilers, require
+# functions that return type REAL to actually return the C type 'double'
+# (there is also special handling of COMPLEX returns, but that's not supported
+# by CNF). When operating in 'non-f2c' mode such functions return the expected
+# C type 'float'.
+#
+# The effect of this macro is subsitute the variable REAL_FUNCTION_TYPE
+# to either float or double as required.
+#
+# This function is not infallable and will usually return float for GNU
+# compilers, as the calling convention seems to not matter on 32-bit platforms
+# for the test in use. A stronger test would be to attempt calling a intrinsic
+# function, which is supposed to fail. Non-GNU compilers should always
+# return float. However, this test is used as it is all that is required.
+#
+AC_DEFUN([STAR_CNF_F2C_COMPATIBLE],
+   [$_star_docs_only &&
+        AC_MSG_ERROR([STAR[]_CNF_F2C_SYMBOLS in docs-only dir])
+    AC_CACHE_CHECK([if $FC is in strict f2c compatible mode],
+       [star_cv_cnf_f2c_compatible],
+       [AC_REQUIRE([AC_PROG_FC])dnl
+        if test "$ac_cv_fc_compiler_gnu" = yes; then
+           AC_REQUIRE([AC_PROG_CC])dnl
+           AC_LANG_PUSH([C])
+           AC_LANG_CONFTEST([AC_LANG_SOURCE([
+float fred_() {
+   return 1.0f;
+}
+])])
+           if (eval $ac_compile) 2>&5
+           then
+               mv conftest.$ac_objext c-conftest.$ac_objext
+           else
+               AC_MSG_ERROR([cannot compile a C function!])
+           fi
+           AC_LANG_POP(C)
+           AC_LANG_PUSH([Fortran])
+           AC_LANG_CONFTEST([AC_LANG_SOURCE([
+      PROGRAM F2CTEST
+      REAL FRED
+      REAL R
+      R = FRED()
+      IF ( R .NE. 0.0 ) THEN
+         WRITE(*,*) 'no'
+      ELSE
+         WRITE(*,*) 'yes'
+      ENDIF
+      END
+])])
+           star_cv_cnf_f2c_compatible=yes
+           $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5
+           if test -r conftest
+           then
+              star_cv_cnf_f2c_compatible=`eval conftest | sed 's/\ //g'` > /dev/null
+           else
+              AC_MSG_ERROR([failed to link program]) 
+           fi
+           AC_LANG_POP([Fortran])
+           rm -f conftest* c-conftest*
+      else
+         # Not a GNU compiler.
+         star_cv_cnf_f2c_compatible=no
+      fi
+])
+    if test "$star_cv_cnf_f2c_compatible" = "yes"
+    then
+        AC_SUBST(REAL_FUNCTION_TYPE, double)
+    else
+        AC_SUBST(REAL_FUNCTION_TYPE, float)
+    fi
+])# STAR_CNF_F2C_COMPATIBLE
+
+# STAR_CNF_BLANK_COMMON
+# ---------------------
+# Define the global symbol used to access the Fortran blank common block.
+# Usually under UNIX this is _BLNK__, but gfortran uses __BLNK__, so we
+# need to check for that. Gfortran is just detected by being a GNU compiler
+# and having "Fortran 95" as part of its --version output.
+#
+# The effect of this macro is to substitute BLANK_COMMON_SYMBOL with
+# the expected value.
+#
+AC_DEFUN([STAR_CNF_BLANK_COMMON],
+   [AC_CACHE_CHECK([symbol used for blank common in Fortran],
+       [star_cv_blank_common_fortran],
+       [AC_REQUIRE([AC_PROG_FC])
+       if test "$ac_cv_fc_compiler_gnu" = yes; then
+            if "$FC" --version 2>&1 < /dev/null | grep 'Fortran 95' > /dev/null; then
+                star_cv_blank_common_fortran=gfortran
+            fi
+        else
+            star_cv_blank_common_fortran=
+        fi])
+    AH_TEMPLATE([BLANK_COMMON_SYMBOL],
+       [Define symbol used to access the Fortran blank common block])
+    case "$star_cv_blank_common_fortran" in
+      gfortran)
+        AC_SUBST([BLANK_COMMON_SYMBOL], [__BLNK__] )
+        ;;
+      *) 
+        AC_SUBST([BLANK_COMMON_SYMBOL], [_BLNK__] )
+        ;;
+    esac
+])# STAR_CNF_BLANK_COMMON
+
+# STAR_PRM_COMPATIBLE_SYMBOLS
+# ---------------------------
+#
+#  See if any special flags are required to support PRM's use of typeless BOZ
+#  constants, or if there's no typeless BOZ support any special flags that are
+#  required for that. 
+#
+#  In fact this macro is only currently of use with the gfortran compiler
+#  which has no typeless BOZ support, so requires that the -fno-range-check
+#  flag is set so that assigments to integers can silently overflow (BOZ
+#  constants are replaced with their integer and floating point
+#  equivalents). In general this macro should be used by all packages that
+#  include PRM_PAR, all monoliths are assumed to use this by default.
+#
+AC_DEFUN([STAR_PRM_COMPATIBLE_SYMBOLS],
+   [$_star_docs_only &&
+        AC_MSG_ERROR([STAR[]_PRM_COMPATIBLE_SYMBOLS in docs-only dir])
+    AC_CACHE_CHECK([how to make compiler accept PRM constants],
+       [star_cv_prm_compatible_symbols],
+       [star_cv_prm_compatible_symbols="nocheck"
+        AC_MSG_NOTICE([ ])
+        AC_FC_HAVE_TYPELESS_BOZ
+        if test $ac_cv_fc_have_typeless_boz = no; then
+           AC_FC_HAVE_OLD_TYPELESS_BOZ
+           if test $ac_cv_fc_have_old_typeless_boz = no; then
+              #  Test if "-fno-range-check" works.
+              AC_REQUIRE([AC_PROG_FC])dnl
+              AC_LANG_PUSH([Fortran])
+              AC_LANG_CONFTEST([AC_LANG_SOURCE([
+      PROGRAM conftest
+      INTEGER*2 VAL__BADUW
+      PARAMETER ( VAL__BADUW = 65535 )
+      BYTE VAL__BADUB
+      PARAMETER ( VAL__BADUB = 255 )
+      END
+])])
+              if $FC -c $FCFLAGS -fno-range-check -o conftest conftest.f 2>&5
+              then
+                 star_cv_prm_compatible_symbols="-fno-range-check"
+              fi
+              rm -f conftest.f
+              AC_LANG_POP([Fortran])
+           else
+              star_cv_prm_compatible_symbols=""
+           fi
+         else
+            star_cv_prm_compatible_symbols=""
+         fi])
+         if test "$star_cv_prm_compatible_symbols" = "nocheck"; then
+            AC_MSG_ERROR([cannot work out how])
+         else
+            STAR_FCFLAGS="$STAR_FCFLAGS $star_cv_prm_compatible_symbols"
+            STAR_FFLAGS="$STAR_FFLAGS $star_cv_prm_compatible_symbols"
+         fi
+])# STAR_PRM_COMPATIBLE_SYMBOLS
+
+# STAR_PATH_TCLTK([minversion=0], [options=''])
+# ---------------------------------------------
+#
+# Finds a tclsh and wish, and the associated libraries.  Sets output variable
+# TCL_CFLAGS to the C compiler flags necessary to compile with Tcl, TCL_LIBS
+# to the required library flags, and TCLSH to the full path of the tclsh
+# executable, TCL_PREFIX to the installation root and TCL_LD_SEARCH_FLAGS
+# to the default search path for loading the shareable library; if Tk is  
+# requested, it similarly sets TK_CFLAGS, TK_LIBS and WISH.  Define the 
+# cpp variable TCL_MISSING to 1 if Tcl is not available.  Similar to 
+# macro AC_PATH_XTRA.
+#
+# If argument MINVERSION is present, it specifies the minimum Tcl/Tk
+# version number required.
+#
+# The macro searches first in the path, and
+# then in a selection of platform-specific standard locations.  The
+# configure option --with-tcl allows you to provide a path to a tclsh
+# binary, which is put at the head of the list of locations to search.
+# Option --without-tcl suppresses the search, and results in no
+# variables being substituted.
+#
+# If the argument OPTIONS is present, it is a space-separated list of
+# the words 'tk' or 'itcl'.  If one or both of these is present, then
+# the macro will find a Tcl location which also has Tk or itcl
+# installed (note that the itcl test doesn't do anything at present).
+AC_DEFUN([STAR_PATH_TCLTK],
+    [_star_use_tcl=:
+     AC_ARG_WITH([tcl],
+                 AS_HELP_STRING([--with-tcl],
+                                [give path to tclsh (dir which contains binary)]),
+                 [if test "X$withval" = Xno; then
+                      _star_use_tcl=false
+                  elif test "X$withval" = Xyes; then
+                      _star_use_tcl=:
+                  else
+                      _star_use_tcl=:
+                      _star_try_tcldir=$withval
+                  fi])
+     if $_star_use_tcl; then
+         _star_searchfor=Tcl
+         if expr "x m4_ifval([$2], [$2], []) " : 'x.* tk ' >/dev/null; then
+             search_tk=:
+             _star_searchfor="$_star_searchfor/Tk"
+         else
+             search_tk=false
+         fi
+         if expr "x m4_ifval([$2], [$2], []) " : 'x.* itcl ' >/dev/null; then
+             search_itcl=:
+             _star_searchfor="$_star_searchfor/itcl"
+             echo "Searching for itcl does nothing so far!"
+         else
+             search_itcl=false
+         fi
+         AC_MSG_CHECKING([where to find $_star_searchfor m4_ifval([$1], [$1+], [(any version)])])
+         AC_CACHE_VAL([star_cv_settcldir],
+             [star_cv_settcldir=unknown
+              reqversint=`echo m4_ifval([$1], [$1], 0.0)-0-0 | [sed 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/10000 \1* 100 \2*+ \3+p/']|dc`
+              tclsources=`echo $PATH | sed "s/$PATH_SEPARATOR/ /g"`
+              stdsources='
+dnl  Search in /usr and /usr/local at least
+/usr/bin
+/usr/local/bin
+dnl  /opt/local and /sw are the default installation locations for OpenDarwin
+dnl  and Fink on OSX
+/opt/local/bin
+/sw/bin'
+              for d in $_star_try_tcldir $STARCONF_DEFAULT_STARLINK/bin $tclsources $stdsources
+              do
+                  locok=:
+                  if test -d $d; then
+                      tcldir=`cd $d/..; pwd`
+                      test -f $d/tclsh -a -f $tcldir/include/tcl.h || locok=false
+                  else
+                      locok=false
+                  fi
+                  if $locok && $search_tk; then
+                      test -f $d/wish -a -f $tcldir/include/tk.h || locok=false
+                  fi
+                  if $locok && $search_itcl; then
+                      test -f $tcldir/lib/libitcl.aXXX || locok=false
+                  fi
+                  if $locok; then
+                       if test ! -f $tcldir/lib/tclConfig.sh; then
+                           echo "$tcldir/lib/tclConfig.sh unexpectedly missing"
+                           break
+                       fi
+                       if $search_tk && test ! -f $tcldir/lib/tkConfig.sh; then
+                           echo "$tcldir/lib/tkConfig.sh unexpectedly missing"
+                           break
+                       fi
+                       rm -f conftest.results
+                       # Run in a subshell, to isolate settings in tclConfig.sh
+                       # Send output to conftest.results, and return
+                       # 0 if all is ok
+                       (
+    . $tcldir/lib/tclConfig.sh
+    if $search_tk; then
+        . $tcldir/lib/tkConfig.sh
+    fi
+    tclversint=`[echo $TCL_VERSION$TCL_PATCH_LEVEL-0-0 | sed 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/10000 \1* 100 \2*+ \3+p/'|dc]`
+    if test $tclversint -gt $reqversint; then
+        # New enough version.
+
+        # Dereference the tclsh and wish links -- the "->" _is_ standard,
+        # mandated by POSIX.
+        lslink=`ls -l $tcldir/bin/tclsh`
+        tclsh_loc=`expr "x$lslink" : "x.*-> *\(.*\)"`
+        if test -n "$tclsh_loc" -a -x "$tclsh_loc"; then
+           : OK
+        elif test -x "$tcldir/bin/tclsh"; then
+            # Odd: either .../bin/tclsh isn't a link, or it doesn't point to an
+            # executable.  But .../bin/tclsh is OK, so use that.
+            tclsh_loc="$tcldir/bin/tclsh"
+        else
+            # This really shouldn't happen, since we checked above that
+            # $d/tclsh was executable.  Still, it clearly has happened,
+            # so don't go mad.
+            echo "Warning: found Tcl libraries, but not tclsh!" >&2
+            tclsh_loc=
+        fi
+
+        res="_star_tcldir=$tcldir;"
+
+        # Make the TCL version number available.
+        res="$res TCL_VERSION=\"$TCL_VERSION\";"
+
+        # Export the TCL_PREFIX value.
+        res="$res TCL_PREFIX=\"$TCL_PREFIX\";"
+
+        # Export the TCL_LD_SEARCH_FLAGS value (need LIB_RUNTIME_DIR
+        # which is part of the symbol).
+        res="$res LIB_RUNTIME_DIR=\"$TCL_PREFIX/lib\";"
+        res="$res TCL_LD_SEARCH_FLAGS=\"$TCL_LD_SEARCH_FLAGS\";"
+
+        # These envs include $TCL_DBGX -- expand this out.
+        eval "I=\"$TCL_INCLUDE_SPEC\"; L=\"$TCL_LIB_SPEC\""
+        res="$res TCL_CFLAGS=\"$I\"; TCL_LIBS=\"$L\"; TCLSH=\"$tclsh_loc\";"
+
+        if $search_tk; then
+            # Same for wish
+            lslink=`ls -l $tcldir/bin/wish`
+            wish_loc=`expr "x$lslink" : "x.*-> *\(.*\)"`
+            if test -n "$wish_loc" -a -x "$wish_loc"; then
+                : OK
+            elif test -x "$tcldir/bin/wish"; then
+                wish_loc="$tcldir/bin/wish"
+            else
+                echo "Warning: found Tk libraries, but not wish!" >&2
+                wish_loc=
+            fi
+            # These envs potentially include $TK_DBGX -- expand this out.
+            eval "I=\"$TK_XINCLUDES\"; L=\"$TK_LIB_SPEC\""
+            res="$res TK_CFLAGS=\"$I\"; TK_LIBS=\"$L\"; WISH=\"$wish_loc\";"
+        fi
+
+        # similarly for $search_itcl
+
+        echo $res >conftest.results
+        status=0
+    else
+        msg="$tcldir: found Tcl-$TCL_VERSION$TCL_PATCH_LEVEL"
+        if $search_tk; then
+            msg="$msg, Tk-$TK_VERSION$TK_PATCH_LEVEL"
+        fi
+        echo "$msg: older than required" >&2
+        status=1
+    fi
+    exit $status
+                       )
+                       teststat=$?
+                       if test $teststat = 0; then
+                           star_cv_settcldir=`cat conftest.results`
+                       fi
+                       if test "$star_cv_settcldir" != unknown; then
+                           break
+                       fi
+                  fi # $locok
+              done])
+
+        if test "$star_cv_settcldir" = unknown; then
+            AC_MSG_RESULT(unknown)
+        else
+            eval $star_cv_settcldir
+            AC_MSG_RESULT($_star_tcldir)
+        fi
+    else # $_star_use_tcl
+        AC_MSG_WARN(Compiling without Tcl/Tk)
+    fi # $_star_use_tcl
+
+    if $_star_use_tcl && test "$star_cv_settcldir" != unknown; then
+        :
+    else
+        AC_DEFINE(TCL_MISSING, 1,
+                  [Define to 1 if no Tcl/Tk libraries can be found])
+    fi
+
+    AC_SUBST(TCL_VERSION)
+
+    AC_SUBST(TCL_PREFIX)
+
+    AC_SUBST(TCL_LD_SEARCH_FLAGS)
+    AC_SUBST(TCL_CFLAGS)
+    AC_SUBST(TCL_LIBS)
+    AC_SUBST(TCLSH)
+
+    AC_SUBST(TK_CFLAGS)
+    AC_SUBST(TK_LIBS)
+    AC_SUBST(WISH)
+
+    # add itcl variables here
+
+])# STAR_PATH_TCLTK
+
+
+# STAR_LATEX_DOCUMENTATION(documentcode, [targets])
+# -------------------------------------------------
+# Generate the standard makefile targets to handle LaTeX documentation
+# source.  The parameter documentcode should be something like
+# `sun123' -- it should not include any .tex extension.
+#
+# The second, optional, argument gives an explicit list of the targets
+# which are build.  If this is _not_ specified, then a standard list
+# is used (.tex, .ps and .tar_htx) and corresponding rules added to
+# the generated makefile.  If it is specified, it must be non-null,
+# and its value is a list of files which are to be added to the
+# distribution, and no extra Makefile rules are added.  Thus if users need
+# anything complicated done, they should use this second argument and
+# provide rules for satisfying the given targets.
+#
+# In the latter case, the .tex -> htx_tar rule is still emitted, so
+# you can use it, but it requires the substitution variable
+# @STAR[]2HTML@, and so if you _do_ use it, you will have to make that
+# available, either through [STAR_CHECK_PROGS(star2html)] or otherwise.
+AC_DEFUN([STAR_LATEX_DOCUMENTATION],
+   [m4_ifval([$1], [], [AC_FATAL([$0: called with no documentcode])])dnl
+    m4_if(m4_bregexp([$1], [^ *\([a-z][a-z]*[0-9][0-9]*/? *\)*$]),
+          [0],
+          [],
+          [AC_FATAL([$0: bad doccode in $1 -- must be eg sun123 or sun123/])])
+    STAR_DOCUMENTATION="$STAR_DOCUMENTATION m4_bpatsubst([$1],[/])"
+    m4_ifval([$2],
+       [dnl non-empty second argument -- just add to variable
+        m4_if(m4_bregexp([$1], [/]), -1,
+              [],
+              [AC_FATAL([$0: do not mix non-null second argument and .../ syntax])])
+        if $_star_build_docs; then
+            STAR@&t@_LATEX_DOCUMENTATION="$2"
+        fi
+        ],
+       [dnl second arg empty -- use defaults
+        if $_star_build_docs; then
+            AC_FOREACH([DocCode], [$1],
+               [m4_if(m4_bregexp(DocCode,[/]), -1,
+                      [STAR@&t@_LATEX_DOCUMENTATION="$STAR@&t@_LATEX_DOCUMENTATION DocCode.tex DocCode.ps DocCode.htx_tar"
+],
+                      [m4_define([_T], m4_bpatsubst(DocCode,[/]))dnl
+                       STAR_LATEX_DOCUMENTATION_[]_STAR_UPCASE(_T)="_T.tex _T.ps _T.htx_tar"
+                       AC_SUBST(STAR_LATEX_DOCUMENTATION_[]_STAR_UPCASE(_T))])])
+        fi
+        STAR_DECLARE_DEPENDENCIES([sourceset], [star2html])
+        STAR_CHECK_PROGS([star2html])
+       ])
+    if $_star_build_docs; then
+        : ${LATEX2DVI='$$LATEX "\\batchmode\\input $$[]1" && $$LATEX "\\batchmode\\input $$[]1"'}
+        AC_SUBST(LATEX2DVI)
+    else
+        AC_MSG_WARN([not installing docs $1])
+    fi
+    AC_SUBST([STAR@&t@_LATEX_DOCUMENTATION])dnl
+])# STAR_LATEX_DOCUMENTATION
+
+# STAR_XML_DOCUMENTATION(documentcode, [targets])
+# -----------------------------------------------
+# Generate the standard makefile targets to handle XML documentation
+# source.  The parameter documentcode should be something like
+# `sun123' -- it should not include any .xml extension.  For each of the
+# documentcodes which does not end with a slash, append
+# <documentcode>.{texml_tar,htx_tar,ps} to STAR_XML_DOCUMENTATION;
+# for each which does end with a slash, define instead the
+# variable STAR_XML_DOCUMENTATION_<documentcode>.  In either case,
+# append the documentcode to STAR_DOCUMENTATION
+#
+# The second, optional, argument gives an explicit list of the targets
+# which are build.  If this is _not_ specified, then a standard list
+# is used (.texml_tar, .ps and .htx_tar) and corresponding rules added to
+# the generated makefile.  If it is specified, it must be non-null,
+# and its value is a list of files which are to be added to the
+# distribution, and no extra Makefile rules are added.  Thus if users need
+# anything complicated done, they should use this second argument and
+# provide rules for satisfying the given targets.
+#
+# In the latter case, the .tex -> htx_tar rule is still emitted, so
+# you can use it, but it requires the substitution variables JADE, SGMLNORM,
+# and SGMLKIT_HOME.  This is rather inconvenient, and it is fortunate that
+# you almost certainly won't need to use this.
+AC_DEFUN([STAR_XML_DOCUMENTATION],
+   [m4_ifval([$1], [], [AC_FATAL([$0: called with no documentcode])])dnl
+    m4_if(m4_bregexp([$1], [^ *\([a-z][a-z]*[0-9][0-9]*/? *\)*$]),
+          [0],
+          [],
+          [AC_FATAL([$0: bad doccode in $1 -- must be eg sun123 or sun123/])])
+    STAR_DOCUMENTATION="$STAR_DOCUMENTATION m4_bpatsubst([$1],[/])"
+    m4_ifval([$2],
+       [dnl non-empty second argument -- just add to variable
+        m4_if(m4_bregexp([$1], [/]), -1,
+              [],
+              [AC_FATAL([$0: do not mix non-null second argument and .../ syntax])])
+        if $_star_build_docs; then
+            STAR@&t@_XML_DOCUMENTATION="$2"
+        fi
+        ],
+       [dnl second arg empty -- use defaults
+        if $_star_build_docs; then
+            do_the_build=  # blank if we're to go ahead, string expl. otherwise
+            AC_PATH_PROGS(JADE, [openjade jade], NOJADE)
+            AC_PATH_PROGS(SGMLNORM, [osgmlnorm sgmlnorm], NOSGMLNORM)
+            if test "$JADE" = NOJADE -o "$SGMLNORM" = NOSGMLNORM; then
+                if $_star_docs_only; then
+                    # Building documentation is all we're supposed to do,
+                    # and we can't, so suppress further building.
+                    do_the_build="This docs-only component requires both Jade
+                         and sgmlnorm.  All I could find were $JADE for Jade,
+                         and $SGMLNORM for sgmlnorm.  Your system may have
+                         a way to install them as a package, in which case
+                         you should re-run configure and make."
+                else
+                    AC_MSG_WARN([can't find (open)jade + (o)sgmlnorm -- skipping XML documentation $1])
+                fi
+            else
+                # Test Jade version
+                AC_MSG_CHECKING([version of $JADE (need 1.3.2 or better)])
+                $JADE -v </dev/null >conftest.version 2>&1
+                JADEVERS=[`sed -n '/:I:.*[Jj]ade.*version/{
+    s/.*:I://
+    s/[^0-9][^0-9]*/ /gp
+}' conftest.version`]
+                # The following converts space-separated integers to a single
+                # one.  It's perhaps a leeettle funkier than necessary...
+                VERSINT=[`echo "[Ss[z0<a]x]sa $JADEVERS 0 0 0 lax Ls100* Ls+100* Ls+p" | dc`]
+                if test $VERSINT -ge 10302; then
+                  AC_MSG_RESULT([ok])
+                  AC_FOREACH([DocCode], [$1],
+                   [m4_if(m4_bregexp(DocCode,[/]), -1,
+                          [STAR@&t@_XML_DOCUMENTATION="$STAR@&t@_XML_DOCUMENTATION DocCode.texml_tar DocCode.htx_tar DocCode.ps DocCode.pdf"
+],
+                          [m4_define([_T], m4_bpatsubst(DocCode,[/]))dnl
+                           STAR_XML_DOCUMENTATION_[]_STAR_UPCASE(_T)="_T.texml_tar _T.htx_tar _T.ps _T.pdf"
+                           AC_SUBST(STAR_XML_DOCUMENTATION_[]_STAR_UPCASE(_T))])])
+                else
+                    AC_MSG_RESULT([too old])
+                    do_the_build="Your openjade is version $JADEVERS; need 1.3.2 or better"
+                fi
+                STAR_CHECK_PROGS([sgml2docs sgmlnorm])
+                SGMLKIT_HOME=$prefix/lib/sgmlkit
+                AC_SUBST(SGMLKIT_HOME)
+            fi
+            STAR_SUPPRESS_BUILD_IF(test -n "$do_the_build", [$do_the_build])
+        fi
+        STAR_DECLARE_DEPENDENCIES([sourceset], [sgmlkit])
+       ])
+    if $_star_build_docs; then
+        : ${LATEX2DVI='$$LATEX "\\batchmode\\input $$[]1" && $$LATEX "\\batchmode\\input $$[]1"'}
+        AC_SUBST(LATEX2DVI)
+    else
+        AC_MSG_WARN([not installing docs $1])
+    fi
+    AC_SUBST([STAR@&t@_XML_DOCUMENTATION])dnl
+])# STAR_XML_DOCUMENTATION
+            
+
+
+# STAR_CHECK_PROGS(progs-to-check-for, [component=''])
+# --------------------------------------------------
+#
+# For each of the programs in PROGS-TO-CHECK-FOR, define a variable
+# whose name is the upcased version of the program name, and whose
+# value is the full path to that program, or the expected installation
+# location of that program if no absolute path can be found.  Because
+# of this default behaviour, this macro should _only_ be used for
+# locating Starlink programs such as messgen or alink, and not as a
+# general replacement for AC_CHECK_PROG.  Any characters in the
+# program outside of the set of alphanumerics and underscores are
+# normalised to underscores.
+#
+# The optional second argument gives the name of the component containing
+# the program in question.  Some packages install their binaries in
+# package-specific directories, and this argument allows this macro to
+# look there as well.
+#
+# For example:
+#     STAR_CHECK_PROGS(messgen)
+# would define the variable MESSGEN to have the full path to the
+# messgen application, and 
+#     STAR_CHECK_PROGS(prolat, sst)
+# would define the variable PROLAT to have the path to the prolat
+# application within the sst component.
+#
+# Calls AC_SUBST and AC_ARG_VAR on the generated variable name.  This
+# macro does _not_ automatically declare a configure dependency on any
+# component specified in the second argument.  These dependencies should
+# be kept to an absolute minimum, and therefore any such dependencies
+# must be declared obviously and explicitly, with rationale.
+#
+# The behaviour described below, for the result when the required program
+# is not found, is not final, and may change.  The documentation below is
+# contradictory, and should be regarded merely as a rather confused
+# discussion of the issues.  The current behaviour is that when the progam
+# is not found, the variable is defined to be the program's name without
+# any path at all.
+#
+# This is the analogue of AC_CHECK_PROG, except that: (1) the variable
+# name defaults to the program name, (2) the variable value if the
+# program is not found is the path to the anticipated installation
+# location of the program, so that the macro does not fail in this
+# case.  This is useful for locating Starlink programs, as it means we
+# can use this macro to produce absolute paths to programs, even
+# before they have been installed (in this case we are presumably
+# doing a top-level configure of the Starlink tree, and the Makefile
+# will ensure that the required files are installed before the current
+# package actually uses it.  NB: (2) is not true at present.
+#
+# The current value of the PATH variable is augmented by the location
+# of the binary installation directory, using the current default
+# value of the prefix (not ideal, since this may in principle change
+# when the component being configured is installed, but it's the best
+# we can do at configure time); and by the $STARLINK/bin directory.
+#
+# The default, if the program isn't in the augmented path, is the path
+# to the starconf-finder program if that's available, and the bare
+# program-name otherwise.  Is this the best default?  Would just 
+# program-name be better?  The program may not be in the augmented
+# path for two reasons: (1) we are doing the global configuration done
+# during bootstrapping, and noting has been installed yet; or (2) the
+# program is one of those installed in a subdirectory of the
+# `bindir'.  In case (2), there's not a lot we can do, short of
+# grubbing round manifest files at some point, but the
+# starconf-finder, which is the eventual default, knows about this
+# case, and could take care of it.
+#
+# No, I've changed my mind again.  If the program isn't found, then
+# simply have the AC_PATH_PROG default to bare ProgramName.  This is
+# probably adequate, and if so probably more robust than relying on
+# more and more layers of indirection.  We probably will need to
+# revisit this.  Again.
+AC_DEFUN([STAR_CHECK_PROGS],
+         [eval default_bindir=`echo $bindir | sed 's,\${exec_prefix},$ac_default_prefix,'`
+          AC_FOREACH([ProgramName], [$1],
+                     [m4_define([star_prog],
+                                _STAR_UPCASE(m4_bpatsubst(ProgramName,
+                                                          [[^0-9a-zA-Z_]], 
+                                                          [_])))
+                      AC_PATH_PROG(star_prog,
+                                   ProgramName,
+                                   ProgramName,
+[$STARLINK/Perl/bin:]dnl
+[$STARLINK/starjava/bin:]dnl
+[$STARLINK/bin:]m4_ifval([$2],[$STARLINK/bin/$2:],)dnl
+[$default_bindir:]m4_ifval([$2],[$default_bindir/$2:],)dnl
+[$PATH])
+                      AC_ARG_VAR(star_prog,
+                                 [Location of the ]ProgramName[ application])])
+])# STAR_CHECK_PROGS
+
+
+# STAR_SPECIAL_INSTALL_COMMAND(cmd)
+# ---------------------------------
+# Declare a special install command.  Note that we do not examine the
+# actual command here -- that is done by automake.  All we do is find
+# a way of copying a directory tree, preserving symlinks, as used by
+# the install targets in automake/lib/am/install.am.  Try 'cp -R' and
+# variants, then pax, and if both fail, collapse.
+dnl Link test is `test -h': more portable than -L, according to autoconf notes.
+dnl `cp --no-dereference' is GNU cp: -P gives a compatibility warning.
+dnl Include broken link in test: some cp fail to copy these (OSX 10.2, Sol9).
+dnl Option -f is probably a good plan, but no failures spotted so far.
+dnl In pax, `-p e' fails with broken links; `-p p' is OK.
+AC_DEFUN([STAR_SPECIAL_INSTALL_COMMAND],
+   [AC_REQUIRE([AC_PROG_LN_S])dnl
+    AC_PATH_PROG(CP, cp)dnl
+    AC_PATH_PROG(PAX, pax)
+    AC_CACHE_CHECK([how to do a recursive directory copy],
+                   [star_cv_cp_r],
+                   [rm -Rf conftest*
+                    mkdir conftest-d1 conftest-d2
+                    mkdir conftest-d1/d
+                    date >conftest-d1/d/f
+                    (cd conftest-d1/d; $LN_S f l; $LN_S x broken)
+                    if test ! -h conftest-d1/d/l; then
+                        # We don't have links!  So plain cp -R will do
+                        star_cv_cp_r="$CP -R"
+                    else
+                        star_cv_cp_r=
+                        for try in "$CP -R --no-dereference -p -f" "$CP -R -P -p -f" "$CP -R -P -p" "$CP -R -p" "${PAX-false} -r -w -p p"
+                        do
+                            rm -Rf conftest-d2/*
+                            if (cd conftest-d1; $try . ../conftest-d2 2>/dev/null); then
+                                if test -h conftest-d2/d/l -a -h conftest-d2/d/broken; then
+                                    star_cv_cp_r="$try"
+                                    break
+                                fi
+                            fi
+                        done
+                    fi
+                    rm -Rf conftest*])
+    if test -z "$star_cv_cp_r"; then
+        AC_MSG_ERROR([unable to find working cp or pax])
+    fi
+    AC_SUBST(CP_RECURSIVE, $star_cv_cp_r)dnl
+])# STAR_SPECIAL_INSTALL_COMMAND
+    
+
+# STAR_MONOLITHS
+# --------------
+# Declare that we will be creating monoliths.  This does whatever
+# configuration is necessary to handle these.
+#
+# Note that the declarations done in the Makefile.am, declaring the
+# name of the monolith and the names and source files of the tasks,
+# are slightly redundant inasmuch as some of that information could be
+# implied.  However, this is required to be explicit for clarity and
+# consistency, and so accomodate the (currently unexploited)
+# possibility that the tasks and .ifl files longer have the
+# one-task-per-file relationship they have now.
+AC_DEFUN([STAR_MONOLITHS],
+         [$_star_docs_only &&
+             AC_MSG_ERROR([STAR[]_MONOLITHS in docs-only directory])
+          dnl Installation in monoliths.am uses $(LN_S)
+          AC_REQUIRE([AC_PROG_LN_S])dnl
+
+          # To build monoliths, we need both compifl to build the .ifc
+          # files (in the parsecon component), and alink
+          # to link the monoliths (in dtask).  Both are now part of
+          # the pcs component.
+          STAR_DECLARE_DEPENDENCIES(build, [pcs])
+
+          # So try to find alink and compifl.
+          STAR_CHECK_PROGS([compifl alink])
+
+          # When we're building monoliths, we will almost certainly be
+          # using Fortran, and so we might as well include this,
+          # partly in case the user forgets, but also because this is
+          # reasonably part of the default setup required for monoliths.
+          STAR_CNF_COMPATIBLE_SYMBOLS
+          STAR_PRM_COMPATIBLE_SYMBOLS
+])# STAR_MONOLITHS
+
+
+# STAR_HELP_FILES(helpfiles)
+# --------------------------
+# Declare a list of files to be installed into the Starlink help
+# directory.  This can be used both internally and in user
+# configure.ac files.
+AC_DEFUN([STAR_HELP_FILES],
+	 [_STAR_EXTRADIR_COMMON([help], [$1])])
+
+
+# STAR_ETC_FILES(etcfiles)
+# ------------------------
+# Declare a list of files to be installed into the Starlink etc
+# directory.  This can be used both internally and in user
+# configure.ac files.
+AC_DEFUN([STAR_ETC_FILES],
+         [_STAR_EXTRADIR_COMMON([etc], [$1])])
+
+
+# STAR_DOCS_FILES(docfiles)
+# -------------------------
+# Declare a list of files to be installed into the Starlink
+# documentation directory.  This can be used both internally and in
+# user configure.ac files.
+AC_DEFUN([STAR_DOCS_FILES],
+         [_STAR_EXTRADIR_COMMON([docs], [$1])])
+
+
+# STAR_EXAMPLES_FILES(examplesfiles)
+# ----------------------------------
+# Declare a list of files to be installed into the Starlink
+# examples directory.  This can be used both internally and in
+# user configure.ac files.
+AC_DEFUN([STAR_EXAMPLES_FILES],
+         [_STAR_EXTRADIR_COMMON([examples], [$1])])
+
+
+# STAR_DECLARE_DEPENDENCIES(type, deplist, option='')
+# ---------------------------------------------------
+#
+# Declare dependencies of this component.  The TYPE is one of
+# `sourceset', `build', `link', `use', `test' or `configure', and the
+# DEPLIST is a space separated list of component names, which this
+# component depends on in the given way.
+#
+# -- Sourceset dependencies are those components which must be
+# installed in order to build the complete set of sources, either for
+# building or for distribution.  This includes documentation, so it
+# would include star2html as well as messgen.
+#
+# -- Build dependencies are those which are required in order to build
+# this component.  This typically means include files, but if part of
+# the component is an executable file (such as compifl within the
+# parsecon component), then that's a build dependence also (but see
+# the discussion of `option', below).  You may not have two components
+# which have a build dependency on each other, since that would mean
+# that each would have to be built before the other, which is
+# impossible.
+#
+# -- Link dependencies are those required to link against the
+# libraries in a component.  That means all the libraries that this
+# component's libraries use.  These are not necessarily build
+# dependencies, since if you are building a library, any called
+# libraries don't have to be present in order to build this library;
+# you can have two components which have mutual link dependencies.  If
+# you are building an application, however, then all its link
+# dependencies will actually be build dependencies and should be
+# declared as such.  In other words, the distinction between build and
+# link dependencies is important only for library components.
+#
+# -- Use dependencies are those which are required in order for the
+# component to be used by something else, after it has been built and
+# installed.  For example a library which called another application
+# as part of its functionality would have only a use dependency on the
+# component which contained that application.  If no use dependencies
+# are declared, we take the use dependencies to be the same as the
+# link dependencies.
+#
+# -- Test dependencies are those which are required in order to run
+# any regression tests which come with the component.  It's generally
+# a good idea to avoid making this a larger set than the use
+# dependencies, but sometimes this is unavoidable.  If no test
+# dependencies are declared, we take the test dependencies to be the
+# same as the use dependencies.
+#
+# -- Configure dependencies are those which must be satisfied before
+# this component can be successfully configured.  In this case, we
+# also check that the corresponding manifest files have been installed
+# in current_MANIFESTS, and if not exit with a message, and the suggestion
+# that the user runs 'make configure-deps'.
+#
+# The point of this is that different dependencies are required at
+# different times.  The set of dependencies in the master makefile is
+# composed of all the `sourceset' and `build' dependencies, but not
+# `link' or `use' dependencies, and since the core Starlink libraries
+# are closely interdependent, the set of `build' dependencies needs to
+# be kept as small as possible in order to avoid circularities (that
+# is, A depending on B, which depends, possibly indirectly, on A).
+#
+# All these relationships are transitive: if A has a build dependency
+# on B, and B has one on C, then A has a build dependency on C.  You
+# can augment this by using the final `option' argument: if, in
+# component A's declaration element you say
+# STAR_DECLARE_DEPENDENCIES(build, B, link), then you declare that A
+# has a build-time dependency on B, but that (presumably because you
+# are building an application within a component which is mostly
+# libraries) you need to link against B, so component A has a
+# dependency on all of B's _link_ dependencies, not just its build
+# dependencies.  This is (I believe) the only case where this `option'
+# attribute is useful, though it is legal for each of the dependency types.
+#
+# You need only declare direct dependencies.  If package A depends on
+# package B, which depends in turn on package C, then package A need
+# not declare a dependency on C.
+#
+# The macro may be called more than once.  The results of this macro
+# are expressed in the file component.xml in the component directory.
+AC_DEFUN([STAR_DECLARE_DEPENDENCIES],
+ [m4_ifval([$1], [], [AC_FATAL([$0: no type given])])dnl
+  m4_if(m4_bregexp([$1], 
+                   [^\(sourceset\|build\|link\|use\|test\|configure\)$]),
+        [0],
+        [],
+        [AC_FATAL([$0: unrecognised dependency type: $1])])dnl
+  m4_ifval([$2], [], [AC_FATAL([$0: no deplist given])])dnl
+  for _star_tmp in $2
+  do
+    STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN<[$1]m4_ifval([$3], [ option='$3'], [])>$_star_tmp</$1>"
+  done
+  m4_if([$1], [configure], [# check that configure-deps ran...
+  for _star_tmp in $2
+  do
+    echo "$as_me:$LINENO: checking for configure-deps/$_star_tmp" >&5
+    echo $ECHO_N "checking for configure-deps/$_star_tmp... $ECHO_C" >&6
+    if test -f $current_MANIFESTS/$_star_tmp; then
+      echo "$as_me:$LINENO: result: ok" >&5
+      echo "${ECHO_T}ok" >&6
+    else
+      echo "$as_me:$LINENO: result: not found!" >&5
+      echo "${ECHO_T}not found" >&6
+      echo "*** This package has a configure dependency on $_star_tmp" >&6
+      echo "    but that component doesn't appear to be installed." >&6
+      echo "    (I can't find $current_MANIFESTS/$_star_tmp:" >&6
+      echo "    have you forgotten to run 'make configure-deps'?)" >&6
+      echo "    Giving up!" >&6
+      exit 1
+    fi
+  done
+])dnl
+])# STAR_DECLARE_DEPENDENCIES
+
+
+# STAR_PLATFORM_SOURCES(target-file-list, platform-list)
+# ------------------------------------------------------
+#
+# Generate the given target-file for each of the files in the list
+# TARGET-FILE-LIST, by selecting the appropriate element of the
+# PLATFORM-LIST based on the value of [AC_CANONICAL_BUILD].  Both
+# lists are space-separated lists.
+#
+# For each of the platforms, <p>, in platform-list, there should be a
+# file `<target-file><p>'.  There should always be a file
+# `<target-file>default', and if none of the platform-list strings
+# matches, this is the file which is used.  If the `default' file is
+# listed in the `platform-list', then it is matched in the normal run
+# of things; if it is not listed, it still matches, but a warning is
+# issued.
+#
+# If you wish no match _not_ to be an error -- perhaps because there
+# is a platform-dependent file which is redundant on unlisted platforms
+# -- then end the platform-list with `NONE'.  In this case, if no file
+# matches, then no link is made, with no error or warning.
+#
+# This macro uses the results of ./config.guess to determine the
+# current platform.  That returns a triple consisting of
+# cpu-vendor-os, such as `i686-pc-linux-gnu' (OS=linux-gnu),
+# `sparc-sun-solaris2.9', or `alphaev6-dec-osf5.1'
+#
+# The extensions <p> in platform-list should all have the form
+# `cpu_vendor[_os]', where each of the components `cpu', `vendor' and
+# `os' may be blank.  If not blank, they are matched as a prefix of
+# the corresponding part of the config.guess value.  Thus
+# `_sun_solaris' would match `sparc-sun-solaris2.9' but not
+# `sparc-sun-sunos', and `_sun' would match both.  For a <target-file>
+# file foo.c, this would result in `ln -s foo.c_sun foo.c'
+#
+# Calls AC_LIBSOURCE for each of the implied platform-specific files.
+#
+AC_DEFUN([STAR_PLATFORM_SOURCES],
+         [
+$_star_docs_only && AC_MSG_ERROR([STAR_[]PLATFORM_SOURCES in docs-only dir])
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_LN_S])dnl
+m4_ifval([$1], [], [AC_FATAL([$0: no target-file-list given])])dnl
+m4_ifval([$2], [], [AC_FATAL([$0: no platform-list given])])dnl
+AC_FOREACH([TargetFile], [$1],
+  [AC_FOREACH([Ext], [$2], 
+    [m4_if(Ext, [NONE], , [AC_LIBSOURCE(TargetFile[]Ext)])])])dnl
+AC_MSG_CHECKING([platform-specific source for file(s) $1])
+_star_tmp=
+for platform in $2
+do
+    if test $platform = NONE; then
+        # Special case -- no file required
+        _star_tmp=NONE
+        break;
+    fi
+    if test $platform = default; then
+        _star_tmp=default
+        break;
+    fi
+    if expr $build : `echo $platform | sed 's/_/.*-/g'` >/dev/null; then
+        _star_tmp=$platform
+        break;
+    fi
+done
+if test -z "$_star_tmp"; then
+    # Use default, but it wasn't listed in the platform-list
+    # (though it should have been)
+    AC_MSG_WARN([build platform $build does not match any of ($2): using `default'])
+    _star_tmp=default
+fi    
+if test $_star_tmp = NONE; then
+    AC_MSG_RESULT([none required])
+else
+    AC_MSG_RESULT([using $_star_tmp])
+    for _t in $1
+    do
+        if test -f $srcdir/$_t$_star_tmp; then
+            (cd $srcdir; rm -f $_t; $LN_S $_t$_star_tmp $_t)
+        else
+            AC_MSG_WARN([platform $_star_tmp matched, but no file $_t$_star_tmp found])
+        fi
+    done
+fi
+])# STAR_PLATFORM_SOURCES
+
+
+# STAR_INITIALISE_FORTRAN
+# -----------------------
+#
+# Define a macro which can be used in a C main program to initialise the
+# Fortran RTL, including, for example, doing whatever work is required so that
+# the Fortran getarg() function works.  This defines the macro
+# STAR_INITIALISE_FORTRAN(argc,argv).  The implementation necessarily uses
+# functions which are specific to the Fortran implementation, and the body of
+# this macro is basically a switch to determine the compiler and thus the
+# appropriate compiler-specific magic.  If no implementation is available,
+# then the macro should expand to nothing.
+#
+# Note that the Starlink functions wrapping getarg() are robust against
+# getarg() failing because this information is not available.  This function
+# is nonetheless necessary because some platforms have link problems otherwise
+# (specifically OSX, on which the most readily available compiler is g77,
+# cannot link properly if the getarg() function is referenced by a library,
+# but there is a C main function, so that the Fortran main function's call of
+# f_setarg is omitted).  Thus it is generally harmless to leave this function
+# unimplemented on those platforms which do not have these link problems, and
+# it is harmless that the test below is extremely compiler specific (though we
+# would probably have to add implementations for any other compilers used on
+# OSX).  It's also generally harmless not to call the defined function, or
+# invoke this macro, if your application doesn't have the link problems which
+# makeit necessary, though of course calling it will make getarg() work where
+# it otherwise wouldn't, which may be an advantage.
+#
+# All was well until g95 and gfortran, these are "gnu" compilers, but use
+# different semantics. In the case of g95 the calling the startup code is not
+# optional (docs say that heap initialisation relies on the startup call).
+#
+# The test for g95 relies on the output from `g95 --version' containing the
+# string "G95". Gfortran requires "Fortran 95".  Note that this whole area
+# probably needs rethinking as g95 also has a g95_runtime_stop() function,
+# that should be called.
+#
+AC_DEFUN([STAR_INITIALISE_FORTRAN],
+   [AC_CACHE_CHECK([how to initialise the Fortran RTL],
+       [star_cv_initialise_fortran],
+       [AC_REQUIRE([AC_PROG_FC])
+       if test "$ac_cv_fc_compiler_gnu" = yes; then
+            if "$FC" --version 2>&1 < /dev/null | grep 'G95' > /dev/null; then
+                star_cv_initialise_fortran=g95-start
+            elif "$FC" --version 2>&1 < /dev/null | grep 'Fortran 95' > /dev/null; then
+                star_cv_initialise_fortran=gfortran-setarg
+            else
+                star_cv_initialise_fortran=g77-setarg
+            fi
+        else
+            star_cv_initialise_fortran=
+        fi])
+    AH_TEMPLATE([STAR_INITIALISE@&t@_FORTRAN],
+       [Define to a function call which will initialise the Fortran RTL])
+    case "$star_cv_initialise_fortran" in
+      g77-setarg)
+        AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)],
+                  [{extern void f_setarg(int,char**); f_setarg(argc, argv);}])
+        ;;
+      g95-start)
+        AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)],
+                  [{extern void g95_runtime_start(int,char**); g95_runtime_start(argc, argv);}])
+        ;;
+      gfortran-setarg)
+        AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)],
+                  [{extern void _gfortran_set_args(int,char**); _gfortran_set_args(argc, argv);}])
+        ;;
+      *) 
+        AC_DEFINE([STAR_INITIALISE@&t@_FORTRAN(argc,argv)],[])
+        ;;
+    esac
+dnl    AC_DEFINE_UNQUOTED([STAR_INITIALISE@&t@_FORTRAN(argc,argv)],
+dnl                       $star_cv_initialise_fortran)
+])# STAR_INITIALISE_FORTRAN
+
+
+# STAR_SUPPRESS_BUILD_IF(test, message)
+# -------------------------------------
+# Call once at the end of the configure script.
+#
+# If the given shell test evaluates to true, then suppress the build,
+# without having ./configure fail.  The test is any command which
+# returns true if the build should be suppressed, and may be shell
+# commands `true' or `false', or might be a more complicated test,
+# such as `test -n "$SOMEENV"'.
+#
+# The macro communicates with the generated Makefile.in by creating a file
+# STAR_SUPPRESS_BUILD if the test evaluates to true.  The file contains
+# the text of the explanation.
+AC_DEFUN([STAR_SUPPRESS_BUILD_IF],
+   [m4_ifval([$1], [], [AC_FATAL([$0: needs two arguments])])dnl
+    m4_ifval([$2], [], [AC_FATAL([$0: needs two arguments])])dnl
+    rm -f STAR_SUPPRESS_BUILD
+    if [$1]; then
+        AC_MSG_WARN([Build inhibited:
+        $2])
+        echo "$2" >STAR_SUPPRESS_BUILD
+        ALL_TARGET=all-am-suppress
+    else
+        ALL_TARGET=all-am-normal
+    fi
+    AC_SUBST(ALL_TARGET)
+])# STAR_SUPPRESS_BUILD_IF
+
+
+# starconf internal macros
+
+
+# _STAR_UPCASE(string)
+# --------------------
+# Expands to STRING with all letters translated to uppercase.
+AC_DEFUN([_STAR_UPCASE],
+         [m4_translit([$1], [a-z], [A-Z])])
+
+
+# _STAR_EXTRADIR_COMMON(dir-type, file-list)
+# ------------------------------------------
+#
+# Common handler for STAR_HELP_FILES, etc.  DIR-TYPE is one of
+#
+#    help, etc, docs, examples
+#
+# and `FILE-LIST' is a list of files to be installed in
+# the directory STAR_[DIR-TYPE]_DIR.  This works by defining and
+# AC_SUBSTing the variables `starX_DATA for X=dir-type (eg, `stardocs_DATA').
+#
+# This is now obsolete -- components should use star<dir-type>_DATA in
+# the Makefile.am file instead.  Don't use AC_[]DIAGNOSE([obsolete],...),
+# since those warnings aren't turned on by default.
+AC_DEFUN([_STAR_EXTRADIR_COMMON],
+   [AC_FATAL([Macro STAR_]_STAR_UPCASE($1)[_FILES($2) is obsolete -- use star$1_DATA in Makefile.am instead])
+    AC_FATAL([For STAR@&t@_LATEX_DOCUMENTATION, use stardocs_DATA=@STAR@&t@_LATEX_DOCUMENTATION@ instead])]
+)# _STAR_EXTRADIR_COMMON
+
+
+# _STAR_RESTFP_FIX
+# ----------------
+# Determines if we need to make any library fixes to get things to link 
+# properly.  In fact, there's only a problem on OSX/Darwin, since the
+# GCC installation which provides g77 and the (system) GCC which provides
+# gcc can generate slightly incompatible object code.  The following test
+# is therefore pretty specific to OSX/Darwin.
+#
+# If there are any libraries that need to be added to the path, this adds
+# them to variables <x>_FCLINK_MAGIC.  Compare AC_FC_LIBRARY_LDFLAGS.
+#
+# See the thread: http://lists.apple.com/mhonarc/fortran-dev/msg00768.html
+AC_DEFUN([_STAR_RESTFP_FIX],
+   [AC_CACHE_CHECK([whether we need any library fixups],
+       [star_cv_restfp_fixup],
+       [AC_REQUIRE([AC_CANONICAL_BUILD])
+        AC_REQUIRE([AC_PROG_CC])
+        AC_REQUIRE([AC_PROG_FC])
+        if expr $build_os : 'darwin7' >/dev/null; then
+dnl Only affects OSX/Darwin
+            # Following uses undocumented (but probably fairly stable)
+            # autoconf internal variable.
+            if test "$ac_cv_fc_compiler_gnu" = yes; then
+dnl The problem only affects g77/gcc, so we know we're dealing with these below
+                AC_LANG_PUSH(C)
+                rm -f conftest*
+                star_cv_restfp_fixup=unknown
+                AC_LANG_CONFTEST(AC_LANG_PROGRAM([], restFP()))
+                { AC_TRY_COMMAND($CC -o conftest.x -S conftest.c)
+                  test $ac_status = 0
+                } &&
+                sed 's/_restFP/restFP/g' conftest.x>conftest.s &&
+                { AC_TRY_COMMAND($CC -c -o conftest.$ac_objext conftest.s)
+                  test $ac_status = 0
+                } || star_cv_restfp_fixup=broken
+                AC_LANG_POP(C)
+                if test $star_cv_restfp_fixup = broken; then
+                    AC_MSG_WARN([unable to assemble restFP test])
+                else
+                    # Link this with the C compiler
+                    AC_TRY_COMMAND($CC -o conftest conftest.$ac_objext)
+                    _s_cstatus=$ac_status
+                    # Link this with the Fortran compiler
+                    AC_TRY_COMMAND($FC -o conftest conftest.$ac_objext)
+                    if test $_s_cstatus = 0 -a $ac_status = 0; then
+                        # both compilers can compile it
+                        star_cv_restfp_fixup=no
+                    elif test $_s_cstatus != 0 -a $ac_status != 0; then
+                        # neither compiler can compile it
+                        star_cv_restfp_fixup=no
+                    elif test $_s_cstatus = 0; then
+                        # The C compiler can, but the Fortran cannot
+                        star_cv_restfp_fixup=yes
+                    else
+                        # The C compiler can't compile, but the Fortran can.
+                        # Haven't heard of this case!  Don't know what to do.
+                        star_cv_restfp_fixup=broken
+                    fi
+                fi
+                # Link with -lcc_dynamic.
+                # See http://www.astro.gla.ac.uk/users/norman/note/2004/restFP/
+                if test $star_cv_restfp_fixup = yes; then
+                    AC_TRY_COMMAND($FC -o conftest conftest.$ac_objext -lcc_dynamic)
+                    if test $ac_status = 0; then
+                        star_cv_restfp_fixup=cc_dynamic
+                    fi
+                fi
+                if test $star_cv_restfp_fixup = yes; then
+                    # ooops
+                    AC_MSG_WARN([unable to solve restFP problem])
+                    star_cv_restfp_fixup=broken
+                fi
+                rm -f conftest*
+            elif test -z "$FC"; then
+                # not g77, and indeed no Fortran at all
+                star_cv_restfp_fixup=nofortran
+            else
+                # There is a Fortran, but it's not g77, so either there's no
+                # problem, or it's a mixed-compiler problem that's harder
+                # than we know how to deal with.  But presumably the user
+                # has worked this out.
+                star_cv_restfp_fixup=no
+            fi
+        else # !Darwin
+            star_cv_restfp_fixup=no
+        fi
+        ])
+   C_FC_FCLINK_MAGIC=
+   C_FC_PPFC_FCLINK_MAGIC=
+   case $star_cv_restfp_fixup in
+     cc_dynamic)
+       # Add the required libraries to C_FC_... variables, which are
+       # generated in the required places by (our) automake.
+       C_FC_FCLINK_MAGIC="-lcc_dynamic"
+       C_FC_PPFC_FCLINK_MAGIC="-lcc_dynamic"
+       ;;
+     nofortran)
+       AC_MSG_NOTICE([No Fortran in path, so presumably no g77/gcc library problems])
+       ;;
+     *) ;;
+   esac
+   AC_SUBST(C_FC_FCLINK_MAGIC)
+   AC_SUBST(C_FC_PPFC_FCLINK_MAGIC)
+])# _STAR_RESTFP_FIX
+
+
+# STAR_LARGEFILE_SUPPORT
+# ----------------------
+#
+# Set C macros for compiling C routines that want to make use of large file 
+# support. This is a joining of AC_SYS_LARGEFILE and AC_FUNC_FSEEKO
+# so defines the macros _FILE_OFFSET_BITS, _LARGEFILE_SOURCE and _LARGE_FILES,
+# along with HAVE_FSEEKO. To use large file support you need to use fseeko and
+# ftello when HAVE_FSEEKO is defined (and use off_t for offsets) and compile
+# all C code with the other defines. 
+#
+# This function also gathers the values of _FILE_OFFSET_BITS, _LARGEFILE_SOURCE
+# and _LARGE_FILES and sets the STAR_LARGEFILE_CFLAGS variable (this in useful
+# for passing to packages which are not directly part of the starconf system).
+#
+AC_DEFUN([STAR_LARGEFILE_SUPPORT],
+[dnl Enable autoconf largefile support.
+AC_SYS_LARGEFILE
+AC_FUNC_FSEEKO
+
+# Gather state into a single variable for passing to other packages.
+STAR_LARGEFILE_CFLAGS=
+if test "$ac_cv_sys_file_offset_bits" != "no"; then
+   STAR_LARGEFILE_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
+fi
+
+if test "$ac_cv_sys_large_files" != "no"; then
+   STAR_LARGEFILE_CFLAGS="-D_LARGE_FILES_=$ac_cv_sys_large_files $STAR_LARGEFILE_CFLAGS"
+fi
+
+if test "$ac_cv_sys_largefile_source" != "no"; then
+   STAR_LARGEFILE_CFLAGS="-D_LARGEFILE_SOURCE=$ac_cv_sys_largefile_source $STAR_LARGEFILE_CFLAGS"
+fi
+])# STAR_LARGEFILE_SUPPORT
+
+
+# Obsolete macros
+# ===============
+
+# STAR_HAVE_FC_OPEN_READONLY
+# ---------------------------
+#
+# Tests if the Fortran compiler supports the READONLY option on the
+# OPEN command.  If it does, it defines HAVE_FC_OPEN_READONLY to 1.
+AC_DEFUN([STAR_HAVE_FC_OPEN_READONLY],
+   [AC_FATAL([Macro STAR_HAVE_FC_OPEN_READONLY is obsolete; use AC_FC_OPEN_SPECIFIERS(readonly) instead])])
+
+
+# STAR_FC_LIBRARY_LDFLAGS
+# -----------------------
+#
+# This was once a wrapper for AC_[]FC_LIBRARY_LDFLAGS which added
+# functionality.  That functionality is now incorporated into STAR_[]DEFAULTS,
+# using the helper macro _STAR_[]RESTFP_FIXUP.  Configure.ac files should use
+# use AC_[]FC_LIBRARY_LDFLAGS instead.
+AC_DEFUN([STAR_FC_LIBRARY_LDFLAGS],
+   [AC_FATAL([Macro STAR_FC_LIBRARY_LDFLAGS is obsolete: if necessary, use standard AC_FC_LIBRARY_LDFLAGS instead])])
+
+
+# end of starconf macros
+
+# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.9.6-starlink])])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+	      		     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake.  There are at least two reasons why we must not
+# use `-m 0755':
+#   - it causes special bits like SGID to be ignored,
+#   - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out.  Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
diff --git a/addet.f b/addet.f
new file mode 100644
index 0000000000000000000000000000000000000000..f3d54f1a3cabd7bf6ce353b15a26ab698d905fe9
--- /dev/null
+++ b/addet.f
@@ -0,0 +1,84 @@
+      SUBROUTINE sla_ADDET (RM, DM, EQ, RC, DC)
+*+
+*     - - - - - -
+*      A D D E T
+*     - - - - - -
+*
+*  Add the E-terms (elliptic component of annual aberration)
+*  to a pre IAU 1976 mean place to conform to the old
+*  catalogue convention (double precision)
+*
+*  Given:
+*     RM,DM     dp     RA,Dec (radians) without E-terms
+*     EQ        dp     Besselian epoch of mean equator and equinox
+*
+*  Returned:
+*     RC,DC     dp     RA,Dec (radians) with E-terms included
+*
+*  Note:
+*
+*     Most star positions from pre-1984 optical catalogues (or
+*     derived from astrometry using such stars) embody the
+*     E-terms.  If it is necessary to convert a formal mean
+*     place (for example a pulsar timing position) to one
+*     consistent with such a star catalogue, then the RA,Dec
+*     should be adjusted using this routine.
+*
+*  Reference:
+*     Explanatory Supplement to the Astronomical Ephemeris,
+*     section 2D, page 48.
+*
+*  Called:  sla_ETRMS, sla_DCS2C, sla_DCC2S, sla_DRANRM, sla_DRANGE
+*
+*  P.T.Wallace   Starlink   18 March 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RM,DM,EQ,RC,DC
+
+      DOUBLE PRECISION sla_DRANRM
+
+      DOUBLE PRECISION A(3),V(3)
+
+      INTEGER I
+
+
+
+*  E-terms vector
+      CALL sla_ETRMS(EQ,A)
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(RM,DM,V)
+
+*  Include the E-terms
+      DO I=1,3
+         V(I)=V(I)+A(I)
+      END DO
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V,RC,DC)
+
+*  Bring RA into conventional range
+      RC=sla_DRANRM(RC)
+
+      END
diff --git a/afin.f b/afin.f
new file mode 100644
index 0000000000000000000000000000000000000000..ba1333fdc39fc27ded62754b2fdc8a94ed3165b6
--- /dev/null
+++ b/afin.f
@@ -0,0 +1,119 @@
+      SUBROUTINE sla_AFIN (STRING, IPTR, A, J)
+*+
+*     - - - - -
+*      A F I N
+*     - - - - -
+*
+*  Sexagesimal character string to angle (single precision)
+*
+*  Given:
+*     STRING  c*(*)   string containing deg, arcmin, arcsec fields
+*     IPTR      i     pointer to start of decode (1st = 1)
+*
+*  Returned:
+*     IPTR      i     advanced past the decoded angle
+*     A         r     angle in radians
+*     J         i     status:  0 = OK
+*                             +1 = default, A unchanged
+*                             -1 = bad degrees      )
+*                             -2 = bad arcminutes   )  (note 3)
+*                             -3 = bad arcseconds   )
+*
+*  Example:
+*
+*    argument    before                           after
+*
+*    STRING      '-57 17 44.806  12 34 56.7'      unchanged
+*    IPTR        1                                16 (points to 12...)
+*    A           ?                                -1.00000
+*    J           ?                                0
+*
+*    A further call to sla_AFIN, without adjustment of IPTR, will
+*    decode the second angle, 12deg 34min 56.7sec.
+*
+*  Notes:
+*
+*     1)  The first three "fields" in STRING are degrees, arcminutes,
+*         arcseconds, separated by spaces or commas.  The degrees field
+*         may be signed, but not the others.  The decoding is carried
+*         out by the DFLTIN routine and is free-format.
+*
+*     2)  Successive fields may be absent, defaulting to zero.  For
+*         zero status, the only combinations allowed are degrees alone,
+*         degrees and arcminutes, and all three fields present.  If all
+*         three fields are omitted, a status of +1 is returned and A is
+*         unchanged.  In all other cases A is changed.
+*
+*     3)  Range checking:
+*
+*           The degrees field is not range checked.  However, it is
+*           expected to be integral unless the other two fields are
+*           absent.
+*
+*           The arcminutes field is expected to be 0-59, and integral if
+*           the arcseconds field is present.  If the arcseconds field
+*           is absent, the arcminutes is expected to be 0-59.9999...
+*
+*           The arcseconds field is expected to be 0-59.9999...
+*
+*     4)  Decoding continues even when a check has failed.  Under these
+*         circumstances the field takes the supplied value, defaulting
+*         to zero, and the result A is computed and returned.
+*
+*     5)  Further fields after the three expected ones are not treated
+*         as an error.  The pointer IPTR is left in the correct state
+*         for further decoding with the present routine or with DFLTIN
+*         etc.  See the example, above.
+*
+*     6)  If STRING contains hours, minutes, seconds instead of degrees
+*         etc, or if the required units are turns (or days) instead of
+*         radians, the result A should be multiplied as follows:
+*
+*           for        to obtain    multiply
+*           STRING     A in         A by
+*
+*           d ' "      radians      1       =  1.0
+*           d ' "      turns        1/2pi   =  0.1591549430918953358
+*           h m s      radians      15      =  15.0
+*           h m s      days         15/2pi  =  2.3873241463784300365
+*
+*  Called:  sla_DAFIN
+*
+*  P.T.Wallace   Starlink   13 September 1990
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER IPTR
+      REAL A
+      INTEGER J
+
+      DOUBLE PRECISION AD
+
+
+
+*  Call the double precision version
+      CALL sla_DAFIN(STRING,IPTR,AD,J)
+      IF (J.LE.0) A=REAL(AD)
+
+      END
diff --git a/airmas.f b/airmas.f
new file mode 100644
index 0000000000000000000000000000000000000000..945857f22208c38d5b5023fb57cfbd1733e4b689
--- /dev/null
+++ b/airmas.f
@@ -0,0 +1,75 @@
+      DOUBLE PRECISION FUNCTION sla_AIRMAS (ZD)
+*+
+*     - - - - - - -
+*      A I R M A S
+*     - - - - - - -
+*
+*  Air mass at given zenith distance (double precision)
+*
+*  Given:
+*     ZD     d     Observed zenith distance (radians)
+*
+*  The result is an estimate of the air mass, in units of that
+*  at the zenith.
+*
+*  Notes:
+*
+*  1)  The "observed" zenith distance referred to above means "as
+*      affected by refraction".
+*
+*  2)  Uses Hardie's (1962) polynomial fit to Bemporad's data for
+*      the relative air mass, X, in units of thickness at the zenith
+*      as tabulated by Schoenberg (1929). This is adequate for all
+*      normal needs as it is accurate to better than 0.1% up to X =
+*      6.8 and better than 1% up to X = 10. Bemporad's tabulated
+*      values are unlikely to be trustworthy to such accuracy
+*      because of variations in density, pressure and other
+*      conditions in the atmosphere from those assumed in his work.
+*
+*  3)  The sign of the ZD is ignored.
+*
+*  4)  At zenith distances greater than about ZD = 87 degrees the
+*      air mass is held constant to avoid arithmetic overflows.
+*
+*  References:
+*     Hardie, R.H., 1962, in "Astronomical Techniques"
+*        ed. W.A. Hiltner, University of Chicago Press, p180.
+*     Schoenberg, E., 1929, Hdb. d. Ap.,
+*        Berlin, Julius Springer, 2, 268.
+*
+*  Original code by P.W.Hill, St Andrews
+*
+*  P.T.Wallace   Starlink   18 March 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION ZD
+
+      DOUBLE PRECISION SECZM1
+
+
+      SECZM1 = 1D0/(COS(MIN(1.52D0,ABS(ZD))))-1D0
+      sla_AIRMAS = 1D0 + SECZM1*(0.9981833D0
+     :             - SECZM1*(0.002875D0 + 0.0008083D0*SECZM1))
+
+      END
diff --git a/altaz.f b/altaz.f
new file mode 100644
index 0000000000000000000000000000000000000000..89cb42fb0aff37795b32bc39013867d22cc9e91a
--- /dev/null
+++ b/altaz.f
@@ -0,0 +1,162 @@
+      SUBROUTINE sla_ALTAZ (HA, DEC, PHI,
+     :                      AZ, AZD, AZDD, EL, ELD, ELDD, PA, PAD, PADD)
+*+
+*     - - - - - -
+*      A L T A Z
+*     - - - - - -
+*
+*  Positions, velocities and accelerations for an altazimuth
+*  telescope mount.
+*
+*  (double precision)
+*
+*  Given:
+*     HA      d     hour angle
+*     DEC     d     declination
+*     PHI     d     observatory latitude
+*
+*  Returned:
+*     AZ      d     azimuth
+*     AZD     d        "    velocity
+*     AZDD    d        "    acceleration
+*     EL      d     elevation
+*     ELD     d         "     velocity
+*     ELDD    d         "     acceleration
+*     PA      d     parallactic angle
+*     PAD     d         "      "   velocity
+*     PADD    d         "      "   acceleration
+*
+*  Notes:
+*
+*  1)  Natural units are used throughout.  HA, DEC, PHI, AZ, EL
+*      and ZD are in radians.  The velocities and accelerations
+*      assume constant declination and constant rate of change of
+*      hour angle (as for tracking a star);  the units of AZD, ELD
+*      and PAD are radians per radian of HA, while the units of AZDD,
+*      ELDD and PADD are radians per radian of HA squared.  To
+*      convert into practical degree- and second-based units:
+*
+*        angles * 360/2pi -> degrees
+*        velocities * (2pi/86400)*(360/2pi) -> degree/sec
+*        accelerations * ((2pi/86400)**2)*(360/2pi) -> degree/sec/sec
+*
+*      Note that the seconds here are sidereal rather than SI.  One
+*      sidereal second is about 0.99727 SI seconds.
+*
+*      The velocity and acceleration factors assume the sidereal
+*      tracking case.  Their respective numerical values are (exactly)
+*      1/240 and (approximately) 1/3300236.9.
+*
+*  2)  Azimuth is returned in the range 0-2pi;  north is zero,
+*      and east is +pi/2.  Elevation and parallactic angle are
+*      returned in the range +/-pi.  Parallactic angle is +ve for
+*      a star west of the meridian and is the angle NP-star-zenith.
+*
+*  3)  The latitude is geodetic as opposed to geocentric.  The
+*      hour angle and declination are topocentric.  Refraction and
+*      deficiencies in the telescope mounting are ignored.  The
+*      purpose of the routine is to give the general form of the
+*      quantities.  The details of a real telescope could profoundly
+*      change the results, especially close to the zenith.
+*
+*  4)  No range checking of arguments is carried out.
+*
+*  5)  In applications which involve many such calculations, rather
+*      than calling the present routine it will be more efficient to
+*      use inline code, having previously computed fixed terms such
+*      as sine and cosine of latitude, and (for tracking a star)
+*      sine and cosine of declination.
+*
+*  This revision:  29 October 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION HA,DEC,PHI,AZ,AZD,AZDD,EL,ELD,ELDD,PA,PAD,PADD
+
+      DOUBLE PRECISION DPI,D2PI,TINY
+      PARAMETER (DPI=3.1415926535897932384626433832795D0,
+     :           D2PI=6.283185307179586476925286766559D0,
+     :           TINY=1D-30)
+
+      DOUBLE PRECISION SH,CH,SD,CD,SP,CP,CHCD,SDCP,X,Y,Z,RSQ,R,A,E,C,S,
+     :                 Q,QD,AD,ED,EDR,ADD,EDD,QDD
+
+
+*  Useful functions
+      SH=SIN(HA)
+      CH=COS(HA)
+      SD=SIN(DEC)
+      CD=COS(DEC)
+      SP=SIN(PHI)
+      CP=COS(PHI)
+      CHCD=CH*CD
+      SDCP=SD*CP
+      X=-CHCD*SP+SDCP
+      Y=-SH*CD
+      Z=CHCD*CP+SD*SP
+      RSQ=X*X+Y*Y
+      R=SQRT(RSQ)
+
+*  Azimuth and elevation
+      IF (RSQ.EQ.0D0) THEN
+         A=0D0
+      ELSE
+         A=ATAN2(Y,X)
+      END IF
+      IF (A.LT.0D0) A=A+D2PI
+      E=ATAN2(Z,R)
+
+*  Parallactic angle
+      C=CD*SP-CH*SDCP
+      S=SH*CP
+      IF (C*C+S*S.GT.0) THEN
+         Q=ATAN2(S,C)
+      ELSE
+         Q=DPI-HA
+      END IF
+
+*  Velocities and accelerations (clamped at zenith/nadir)
+      IF (RSQ.LT.TINY) THEN
+         RSQ=TINY
+         R=SQRT(RSQ)
+      END IF
+      QD=-X*CP/RSQ
+      AD=SP+Z*QD
+      ED=CP*Y/R
+      EDR=ED/R
+      ADD=EDR*(Z*SP+(2D0-RSQ)*QD)
+      EDD=-R*QD*AD
+      QDD=EDR*(SP+2D0*Z*QD)
+
+*  Results
+      AZ=A
+      AZD=AD
+      AZDD=ADD
+      EL=E
+      ELD=ED
+      ELDD=EDD
+      PA=Q
+      PAD=QD
+      PADD=QDD
+
+      END
diff --git a/amp.f b/amp.f
new file mode 100644
index 0000000000000000000000000000000000000000..1562cd45df433954ea9d1a9fb24e6eab0a0ee782
--- /dev/null
+++ b/amp.f
@@ -0,0 +1,88 @@
+      SUBROUTINE sla_AMP (RA, DA, DATE, EQ, RM, DM)
+*+
+*     - - - -
+*      A M P
+*     - - - -
+*
+*  Convert star RA,Dec from geocentric apparent to mean place
+*
+*  The mean coordinate system is the post IAU 1976 system,
+*  loosely called FK5.
+*
+*  Given:
+*     RA       d      apparent RA (radians)
+*     DA       d      apparent Dec (radians)
+*     DATE     d      TDB for apparent place (JD-2400000.5)
+*     EQ       d      equinox:  Julian epoch of mean place
+*
+*  Returned:
+*     RM       d      mean RA (radians)
+*     DM       d      mean Dec (radians)
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Notes:
+*
+*  1)  The distinction between the required TDB and TT is always
+*      negligible.  Moreover, for all but the most critical
+*      applications UTC is adequate.
+*
+*  2)  Iterative techniques are used for the aberration and light
+*      deflection corrections so that the routines sla_AMP (or
+*      sla_AMPQK) and sla_MAP (or sla_MAPQK) are accurate inverses;
+*      even at the edge of the Sun's disc the discrepancy is only
+*      about 1 nanoarcsecond.
+*
+*  3)  Where multiple apparent places are to be converted to mean
+*      places, for a fixed date and equinox, it is more efficient to
+*      use the sla_MAPPA routine to compute the required parameters
+*      once, followed by one call to sla_AMPQK per star.
+*
+*  4)  The accuracy is sub-milliarcsecond, limited by the
+*      precession-nutation model (IAU 1976 precession, Shirai &
+*      Fukushima 2001 forced nutation and precession corrections).
+*
+*  5)  The accuracy is further limited by the routine sla_EVP, called
+*      by sla_MAPPA, which computes the Earth position and velocity
+*      using the methods of Stumpff.  The maximum error is about
+*      0.3 mas.
+*
+*  Called:  sla_MAPPA, sla_AMPQK
+*
+*  P.T.Wallace   Starlink   17 September 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RA,DA,DATE,EQ,RM,DM
+
+      DOUBLE PRECISION AMPRMS(21)
+
+
+
+      CALL sla_MAPPA(EQ,DATE,AMPRMS)
+      CALL sla_AMPQK(RA,DA,AMPRMS,RM,DM)
+
+      END
diff --git a/ampqk.f b/ampqk.f
new file mode 100644
index 0000000000000000000000000000000000000000..bc180ceb9e17d16ad48415e122aa7c16f65342e1
--- /dev/null
+++ b/ampqk.f
@@ -0,0 +1,139 @@
+      SUBROUTINE sla_AMPQK (RA, DA, AMPRMS, RM, DM)
+*+
+*     - - - - - -
+*      A M P Q K
+*     - - - - - -
+*
+*  Convert star RA,Dec from geocentric apparent to mean place
+*
+*  The mean coordinate system is the post IAU 1976 system,
+*  loosely called FK5.
+*
+*  Use of this routine is appropriate when efficiency is important
+*  and where many star positions are all to be transformed for
+*  one epoch and equinox.  The star-independent parameters can be
+*  obtained by calling the sla_MAPPA routine.
+*
+*  Given:
+*     RA       d      apparent RA (radians)
+*     DA       d      apparent Dec (radians)
+*
+*     AMPRMS   d(21)  star-independent mean-to-apparent parameters:
+*
+*       (1)      time interval for proper motion (Julian years)
+*       (2-4)    barycentric position of the Earth (AU)
+*       (5-7)    heliocentric direction of the Earth (unit vector)
+*       (8)      (grav rad Sun)*2/(Sun-Earth distance)
+*       (9-11)   ABV: barycentric Earth velocity in units of c
+*       (12)     sqrt(1-v**2) where v=modulus(ABV)
+*       (13-21)  precession/nutation (3,3) matrix
+*
+*  Returned:
+*     RM       d      mean RA (radians)
+*     DM       d      mean Dec (radians)
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Note:
+*
+*     Iterative techniques are used for the aberration and
+*     light deflection corrections so that the routines
+*     sla_AMP (or sla_AMPQK) and sla_MAP (or sla_MAPQK) are
+*     accurate inverses;  even at the edge of the Sun's disc
+*     the discrepancy is only about 1 nanoarcsecond.
+*
+*  Called:  sla_DCS2C, sla_DIMXV, sla_DVDV, sla_DVN, sla_DCC2S,
+*           sla_DRANRM
+*
+*  P.T.Wallace   Starlink   7 May 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RA,DA,AMPRMS(21),RM,DM
+
+      INTEGER I,J
+
+      DOUBLE PRECISION GR2E,AB1,EHN(3),ABV(3),P3(3),P2(3),
+     :                 AB1P1,P1DV,P1DVP1,P1(3),W,PDE,PDEP1,P(3)
+
+      DOUBLE PRECISION sla_DVDV,sla_DRANRM
+
+
+
+*  Unpack scalar and vector parameters
+      GR2E = AMPRMS(8)
+      AB1 = AMPRMS(12)
+      DO I=1,3
+         EHN(I) = AMPRMS(I+4)
+         ABV(I) = AMPRMS(I+8)
+      END DO
+
+*  Apparent RA,Dec to Cartesian
+      CALL sla_DCS2C(RA,DA,P3)
+
+*  Precession and nutation
+      CALL sla_DIMXV(AMPRMS(13),P3,P2)
+
+*  Aberration
+      AB1P1 = AB1+1D0
+      DO I=1,3
+         P1(I) = P2(I)
+      END DO
+      DO J=1,2
+         P1DV = sla_DVDV(P1,ABV)
+         P1DVP1 = 1D0+P1DV
+         W = 1D0+P1DV/AB1P1
+         DO I=1,3
+            P1(I) = (P1DVP1*P2(I)-W*ABV(I))/AB1
+         END DO
+         CALL sla_DVN(P1,P3,W)
+         DO I=1,3
+            P1(I) = P3(I)
+         END DO
+      END DO
+
+*  Light deflection
+      DO I=1,3
+         P(I) = P1(I)
+      END DO
+      DO J=1,5
+         PDE = sla_DVDV(P,EHN)
+         PDEP1 = 1D0+PDE
+         W = PDEP1-GR2E*PDE
+         DO I=1,3
+            P(I) = (PDEP1*P1(I)-GR2E*EHN(I))/W
+         END DO
+         CALL sla_DVN(P,P2,W)
+         DO I=1,3
+            P(I) = P2(I)
+         END DO
+      END DO
+
+*  Mean RA,Dec
+      CALL sla_DCC2S(P,RM,DM)
+      RM = sla_DRANRM(RM)
+
+      END
diff --git a/aop.f b/aop.f
new file mode 100644
index 0000000000000000000000000000000000000000..1594f024f9705cf7042516d0dda6301a9e69a50e
--- /dev/null
+++ b/aop.f
@@ -0,0 +1,191 @@
+      SUBROUTINE sla_AOP ( RAP, DAP, DATE, DUT, ELONGM, PHIM, HM,
+     :                     XP, YP, TDK, PMB, RH, WL, TLR,
+     :                     AOB, ZOB, HOB, DOB, ROB )
+*+
+*     - - - -
+*      A O P
+*     - - - -
+*
+*  Apparent to observed place, for sources distant from the solar
+*  system.
+*
+*  Given:
+*     RAP    d      geocentric apparent right ascension
+*     DAP    d      geocentric apparent declination
+*     DATE   d      UTC date/time (Modified Julian Date, JD-2400000.5)
+*     DUT    d      delta UT:  UT1-UTC (UTC seconds)
+*     ELONGM d      mean longitude of the observer (radians, east +ve)
+*     PHIM   d      mean geodetic latitude of the observer (radians)
+*     HM     d      observer's height above sea level (metres)
+*     XP     d      polar motion x-coordinate (radians)
+*     YP     d      polar motion y-coordinate (radians)
+*     TDK    d      local ambient temperature (K; std=273.15D0)
+*     PMB    d      local atmospheric pressure (mb; std=1013.25D0)
+*     RH     d      local relative humidity (in the range 0D0-1D0)
+*     WL     d      effective wavelength (micron, e.g. 0.55D0)
+*     TLR    d      tropospheric lapse rate (K/metre, e.g. 0.0065D0)
+*
+*  Returned:
+*     AOB    d      observed azimuth (radians: N=0,E=90)
+*     ZOB    d      observed zenith distance (radians)
+*     HOB    d      observed Hour Angle (radians)
+*     DOB    d      observed Declination (radians)
+*     ROB    d      observed Right Ascension (radians)
+*
+*  Notes:
+*
+*   1)  This routine returns zenith distance rather than elevation
+*       in order to reflect the fact that no allowance is made for
+*       depression of the horizon.
+*
+*   2)  The accuracy of the result is limited by the corrections for
+*       refraction.  Providing the meteorological parameters are
+*       known accurately and there are no gross local effects, the
+*       predicted apparent RA,Dec should be within about 0.1 arcsec
+*       for a zenith distance of less than 70 degrees.  Even at a
+*       topocentric zenith distance of 90 degrees, the accuracy in
+*       elevation should be better than 1 arcmin;  useful results
+*       are available for a further 3 degrees, beyond which the
+*       sla_REFRO routine returns a fixed value of the refraction.
+*       The complementary routines sla_AOP (or sla_AOPQK) and sla_OAP
+*       (or sla_OAPQK) are self-consistent to better than 1 micro-
+*       arcsecond all over the celestial sphere.
+*
+*   3)  It is advisable to take great care with units, as even
+*       unlikely values of the input parameters are accepted and
+*       processed in accordance with the models used.
+*
+*   4)  "Apparent" place means the geocentric apparent right ascension
+*       and declination, which is obtained from a catalogue mean place
+*       by allowing for space motion, parallax, precession, nutation,
+*       annual aberration, and the Sun's gravitational lens effect.  For
+*       star positions in the FK5 system (i.e. J2000), these effects can
+*       be applied by means of the sla_MAP etc routines.  Starting from
+*       other mean place systems, additional transformations will be
+*       needed;  for example, FK4 (i.e. B1950) mean places would first
+*       have to be converted to FK5, which can be done with the
+*       sla_FK425 etc routines.
+*
+*   5)  "Observed" Az,El means the position that would be seen by a
+*       perfect theodolite located at the observer.  This is obtained
+*       from the geocentric apparent RA,Dec by allowing for Earth
+*       orientation and diurnal aberration, rotating from equator
+*       to horizon coordinates, and then adjusting for refraction.
+*       The HA,Dec is obtained by rotating back into equatorial
+*       coordinates, using the geodetic latitude corrected for polar
+*       motion, and is the position that would be seen by a perfect
+*       equatorial located at the observer and with its polar axis
+*       aligned to the Earth's axis of rotation (n.b. not to the
+*       refracted pole).  Finally, the RA is obtained by subtracting
+*       the HA from the local apparent ST.
+*
+*   6)  To predict the required setting of a real telescope, the
+*       observed place produced by this routine would have to be
+*       adjusted for the tilt of the azimuth or polar axis of the
+*       mounting (with appropriate corrections for mount flexures),
+*       for non-perpendicularity between the mounting axes, for the
+*       position of the rotator axis and the pointing axis relative
+*       to it, for tube flexure, for gear and encoder errors, and
+*       finally for encoder zero points.  Some telescopes would, of
+*       course, exhibit other properties which would need to be
+*       accounted for at the appropriate point in the sequence.
+*
+*   7)  This routine takes time to execute, due mainly to the
+*       rigorous integration used to evaluate the refraction.
+*       For processing multiple stars for one location and time,
+*       call sla_AOPPA once followed by one call per star to sla_AOPQK.
+*       Where a range of times within a limited period of a few hours
+*       is involved, and the highest precision is not required, call
+*       sla_AOPPA once, followed by a call to sla_AOPPAT each time the
+*       time changes, followed by one call per star to sla_AOPQK.
+*
+*   8)  The DATE argument is UTC expressed as an MJD.  This is,
+*       strictly speaking, wrong, because of leap seconds.  However,
+*       as long as the delta UT and the UTC are consistent there
+*       are no difficulties, except during a leap second.  In this
+*       case, the start of the 61st second of the final minute should
+*       begin a new MJD day and the old pre-leap delta UT should
+*       continue to be used.  As the 61st second completes, the MJD
+*       should revert to the start of the day as, simultaneously,
+*       the delta UTC changes by one second to its post-leap new value.
+*
+*   9)  The delta UT (UT1-UTC) is tabulated in IERS circulars and
+*       elsewhere.  It increases by exactly one second at the end of
+*       each UTC leap second, introduced in order to keep delta UT
+*       within +/- 0.9 seconds.
+*
+*  10)  IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+*       The longitude required by the present routine is east-positive,
+*       in accordance with geographical convention (and right-handed).
+*       In particular, note that the longitudes returned by the
+*       sla_OBS routine are west-positive, following astronomical
+*       usage, and must be reversed in sign before use in the present
+*       routine.
+*
+*  11)  The polar coordinates XP,YP can be obtained from IERS
+*       circulars and equivalent publications.  The maximum amplitude
+*       is about 0.3 arcseconds.  If XP,YP values are unavailable,
+*       use XP=YP=0D0.  See page B60 of the 1988 Astronomical Almanac
+*       for a definition of the two angles.
+*
+*  12)  The height above sea level of the observing station, HM,
+*       can be obtained from the Astronomical Almanac (Section J
+*       in the 1988 edition), or via the routine sla_OBS.  If P,
+*       the pressure in millibars, is available, an adequate
+*       estimate of HM can be obtained from the expression
+*
+*             HM ~ -29.3D0*TSL*LOG(P/1013.25D0).
+*
+*       where TSL is the approximate sea-level air temperature in K
+*       (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+*       section 52).  Similarly, if the pressure P is not known,
+*       it can be estimated from the height of the observing
+*       station, HM, as follows:
+*
+*             P ~ 1013.25D0*EXP(-HM/(29.3D0*TSL)).
+*
+*       Note, however, that the refraction is nearly proportional to the
+*       pressure and that an accurate P value is important for precise
+*       work.
+*
+*  13)  The azimuths etc produced by the present routine are with
+*       respect to the celestial pole.  Corrections to the terrestrial
+*       pole can be computed using sla_POLMO.
+*
+*  Called:  sla_AOPPA, sla_AOPQK
+*
+*  Last revision:   2 December 2005
+*
+*  Copyright P.T.Wallace.   All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RAP,DAP,DATE,DUT,ELONGM,PHIM,HM,
+     :                 XP,YP,TDK,PMB,RH,WL,TLR,AOB,ZOB,HOB,DOB,ROB
+
+      DOUBLE PRECISION AOPRMS(14)
+
+
+      CALL sla_AOPPA(DATE,DUT,ELONGM,PHIM,HM,XP,YP,TDK,PMB,RH,WL,TLR,
+     :               AOPRMS)
+      CALL sla_AOPQK(RAP,DAP,AOPRMS,AOB,ZOB,HOB,DOB,ROB)
+
+      END
diff --git a/aoppa.f b/aoppa.f
new file mode 100644
index 0000000000000000000000000000000000000000..bce2096255d489f794aa9a8021a567a06062d577
--- /dev/null
+++ b/aoppa.f
@@ -0,0 +1,193 @@
+      SUBROUTINE sla_AOPPA ( DATE, DUT, ELONGM, PHIM, HM,
+     :                       XP, YP, TDK, PMB, RH, WL, TLR, AOPRMS )
+*+
+*     - - - - - -
+*      A O P P A
+*     - - - - - -
+*
+*  Precompute apparent to observed place parameters required by
+*  sla_AOPQK and sla_OAPQK.
+*
+*  Given:
+*     DATE   d      UTC date/time (modified Julian Date, JD-2400000.5)
+*     DUT    d      delta UT:  UT1-UTC (UTC seconds)
+*     ELONGM d      mean longitude of the observer (radians, east +ve)
+*     PHIM   d      mean geodetic latitude of the observer (radians)
+*     HM     d      observer's height above sea level (metres)
+*     XP     d      polar motion x-coordinate (radians)
+*     YP     d      polar motion y-coordinate (radians)
+*     TDK    d      local ambient temperature (K; std=273.15D0)
+*     PMB    d      local atmospheric pressure (mb; std=1013.25D0)
+*     RH     d      local relative humidity (in the range 0D0-1D0)
+*     WL     d      effective wavelength (micron, e.g. 0.55D0)
+*     TLR    d      tropospheric lapse rate (K/metre, e.g. 0.0065D0)
+*
+*  Returned:
+*     AOPRMS d(14)  star-independent apparent-to-observed parameters:
+*
+*       (1)      geodetic latitude (radians)
+*       (2,3)    sine and cosine of geodetic latitude
+*       (4)      magnitude of diurnal aberration vector
+*       (5)      height (HM)
+*       (6)      ambient temperature (TDK)
+*       (7)      pressure (PMB)
+*       (8)      relative humidity (RH)
+*       (9)      wavelength (WL)
+*       (10)     lapse rate (TLR)
+*       (11,12)  refraction constants A and B (radians)
+*       (13)     longitude + eqn of equinoxes + sidereal DUT (radians)
+*       (14)     local apparent sidereal time (radians)
+*
+*  Notes:
+*
+*   1)  It is advisable to take great care with units, as even
+*       unlikely values of the input parameters are accepted and
+*       processed in accordance with the models used.
+*
+*   2)  The DATE argument is UTC expressed as an MJD.  This is,
+*       strictly speaking, improper, because of leap seconds.  However,
+*       as long as the delta UT and the UTC are consistent there
+*       are no difficulties, except during a leap second.  In this
+*       case, the start of the 61st second of the final minute should
+*       begin a new MJD day and the old pre-leap delta UT should
+*       continue to be used.  As the 61st second completes, the MJD
+*       should revert to the start of the day as, simultaneously,
+*       the delta UTC changes by one second to its post-leap new value.
+*
+*   3)  The delta UT (UT1-UTC) is tabulated in IERS circulars and
+*       elsewhere.  It increases by exactly one second at the end of
+*       each UTC leap second, introduced in order to keep delta UT
+*       within +/- 0.9 seconds.
+*
+*   4)  IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+*       The longitude required by the present routine is east-positive,
+*       in accordance with geographical convention (and right-handed).
+*       In particular, note that the longitudes returned by the
+*       sla_OBS routine are west-positive, following astronomical
+*       usage, and must be reversed in sign before use in the present
+*       routine.
+*
+*   5)  The polar coordinates XP,YP can be obtained from IERS
+*       circulars and equivalent publications.  The maximum amplitude
+*       is about 0.3 arcseconds.  If XP,YP values are unavailable,
+*       use XP=YP=0D0.  See page B60 of the 1988 Astronomical Almanac
+*       for a definition of the two angles.
+*
+*   6)  The height above sea level of the observing station, HM,
+*       can be obtained from the Astronomical Almanac (Section J
+*       in the 1988 edition), or via the routine sla_OBS.  If P,
+*       the pressure in millibars, is available, an adequate
+*       estimate of HM can be obtained from the expression
+*
+*             HM ~ -29.3D0*TSL*LOG(P/1013.25D0).
+*
+*       where TSL is the approximate sea-level air temperature in K
+*       (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+*       section 52).  Similarly, if the pressure P is not known,
+*       it can be estimated from the height of the observing
+*       station, HM, as follows:
+*
+*             P ~ 1013.25D0*EXP(-HM/(29.3D0*TSL)).
+*
+*       Note, however, that the refraction is nearly proportional to the
+*       pressure and that an accurate P value is important for precise
+*       work.
+*
+*   7)  Repeated, computationally-expensive, calls to sla_AOPPA for
+*       times that are very close together can be avoided by calling
+*       sla_AOPPA just once and then using sla_AOPPAT for the subsequent
+*       times.  Fresh calls to sla_AOPPA will be needed only when
+*       changes in the precession have grown to unacceptable levels or
+*       when anything affecting the refraction has changed.
+*
+*  Called:  sla_GEOC, sla_REFCO, sla_EQEQX, sla_AOPPAT
+*
+*  Last revision:   2 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,DUT,ELONGM,PHIM,HM,XP,YP,TDK,PMB,
+     :                 RH,WL,TLR,AOPRMS(14)
+
+      DOUBLE PRECISION sla_EQEQX
+
+*  2Pi
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925287D0)
+
+*  Seconds of time to radians
+      DOUBLE PRECISION S2R
+      PARAMETER (S2R=7.272205216643039903848712D-5)
+
+*  Speed of light (AU per day)
+      DOUBLE PRECISION C
+      PARAMETER (C=173.14463331D0)
+
+*  Ratio between solar and sidereal time
+      DOUBLE PRECISION SOLSID
+      PARAMETER (SOLSID=1.00273790935D0)
+
+      DOUBLE PRECISION CPHIM,XT,YT,ZT,XC,YC,ZC,ELONG,PHI,UAU,VAU
+
+
+
+*  Observer's location corrected for polar motion
+      CPHIM = COS(PHIM)
+      XT = COS(ELONGM)*CPHIM
+      YT = SIN(ELONGM)*CPHIM
+      ZT = SIN(PHIM)
+      XC = XT-XP*ZT
+      YC = YT+YP*ZT
+      ZC = XP*XT-YP*YT+ZT
+      IF (XC.EQ.0D0.AND.YC.EQ.0D0) THEN
+         ELONG = 0D0
+      ELSE
+         ELONG = ATAN2(YC,XC)
+      END IF
+      PHI = ATAN2(ZC,SQRT(XC*XC+YC*YC))
+      AOPRMS(1) = PHI
+      AOPRMS(2) = SIN(PHI)
+      AOPRMS(3) = COS(PHI)
+
+*  Magnitude of the diurnal aberration vector
+      CALL sla_GEOC(PHI,HM,UAU,VAU)
+      AOPRMS(4) = D2PI*UAU*SOLSID/C
+
+*  Copy the refraction parameters and compute the A & B constants
+      AOPRMS(5) = HM
+      AOPRMS(6) = TDK
+      AOPRMS(7) = PMB
+      AOPRMS(8) = RH
+      AOPRMS(9) = WL
+      AOPRMS(10) = TLR
+      CALL sla_REFCO(HM,TDK,PMB,RH,WL,PHI,TLR,1D-10,
+     :               AOPRMS(11),AOPRMS(12))
+
+*  Longitude + equation of the equinoxes + sidereal equivalent of DUT
+*  (ignoring change in equation of the equinoxes between UTC and TDB)
+      AOPRMS(13) = ELONG+sla_EQEQX(DATE)+DUT*SOLSID*S2R
+
+*  Sidereal time
+      CALL sla_AOPPAT(DATE,AOPRMS)
+
+      END
diff --git a/aoppat.f b/aoppat.f
new file mode 100644
index 0000000000000000000000000000000000000000..c74b1b3243143621e4a6b1aa6f943e80e0d84e81
--- /dev/null
+++ b/aoppat.f
@@ -0,0 +1,62 @@
+      SUBROUTINE sla_AOPPAT (DATE, AOPRMS)
+*+
+*     - - - - - - -
+*      A O P P A T
+*     - - - - - - -
+*
+*  Recompute the sidereal time in the apparent to observed place
+*  star-independent parameter block.
+*
+*  Given:
+*     DATE   d      UTC date/time (modified Julian Date, JD-2400000.5)
+*                   (see AOPPA source for comments on leap seconds)
+*
+*     AOPRMS d(14)  star-independent apparent-to-observed parameters
+*
+*       (1-12)   not required
+*       (13)     longitude + eqn of equinoxes + sidereal DUT
+*       (14)     not required
+*
+*  Returned:
+*     AOPRMS d(14)  star-independent apparent-to-observed parameters:
+*
+*       (1-13)   not changed
+*       (14)     local apparent sidereal time (radians)
+*
+*  For more information, see sla_AOPPA.
+*
+*  Called:  sla_GMST
+*
+*  P.T.Wallace   Starlink   1 July 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,AOPRMS(14)
+
+      DOUBLE PRECISION sla_GMST
+
+
+
+      AOPRMS(14) = sla_GMST(DATE)+AOPRMS(13)
+
+      END
diff --git a/aopqk.f b/aopqk.f
new file mode 100644
index 0000000000000000000000000000000000000000..287fd2298ce42ae7dfcd51d2fd1f49378dbe673f
--- /dev/null
+++ b/aopqk.f
@@ -0,0 +1,259 @@
+      SUBROUTINE sla_AOPQK (RAP, DAP, AOPRMS, AOB, ZOB, HOB, DOB, ROB)
+*+
+*     - - - - - -
+*      A O P Q K
+*     - - - - - -
+*
+*  Quick apparent to observed place (but see note 8, below, for
+*  remarks about speed).
+*
+*  Given:
+*     RAP    d      geocentric apparent right ascension
+*     DAP    d      geocentric apparent declination
+*     AOPRMS d(14)  star-independent apparent-to-observed parameters:
+*
+*       (1)      geodetic latitude (radians)
+*       (2,3)    sine and cosine of geodetic latitude
+*       (4)      magnitude of diurnal aberration vector
+*       (5)      height (HM)
+*       (6)      ambient temperature (T)
+*       (7)      pressure (P)
+*       (8)      relative humidity (RH)
+*       (9)      wavelength (WL)
+*       (10)     lapse rate (TLR)
+*       (11,12)  refraction constants A and B (radians)
+*       (13)     longitude + eqn of equinoxes + sidereal DUT (radians)
+*       (14)     local apparent sidereal time (radians)
+*
+*  Returned:
+*     AOB    d      observed azimuth (radians: N=0,E=90)
+*     ZOB    d      observed zenith distance (radians)
+*     HOB    d      observed Hour Angle (radians)
+*     DOB    d      observed Declination (radians)
+*     ROB    d      observed Right Ascension (radians)
+*
+*  Notes:
+*
+*   1)  This routine returns zenith distance rather than elevation
+*       in order to reflect the fact that no allowance is made for
+*       depression of the horizon.
+*
+*   2)  The accuracy of the result is limited by the corrections for
+*       refraction.  Providing the meteorological parameters are
+*       known accurately and there are no gross local effects, the
+*       observed RA,Dec predicted by this routine should be within
+*       about 0.1 arcsec for a zenith distance of less than 70 degrees.
+*       Even at a topocentric zenith distance of 90 degrees, the
+*       accuracy in elevation should be better than 1 arcmin;  useful
+*       results are available for a further 3 degrees, beyond which
+*       the sla_REFRO routine returns a fixed value of the refraction.
+*       The complementary routines sla_AOP (or sla_AOPQK) and sla_OaAP
+*       (or sla_OAPQK) are self-consistent to better than 1 micro-
+*       arcsecond all over the celestial sphere.
+*
+*   3)  It is advisable to take great care with units, as even
+*       unlikely values of the input parameters are accepted and
+*       processed in accordance with the models used.
+*
+*   4)  "Apparent" place means the geocentric apparent right ascension
+*       and declination, which is obtained from a catalogue mean place
+*       by allowing for space motion, parallax, precession, nutation,
+*       annual aberration, and the Sun's gravitational lens effect.  For
+*       star positions in the FK5 system (i.e. J2000), these effects can
+*       be applied by means of the sla_MAP etc routines.  Starting from
+*       other mean place systems, additional transformations will be
+*       needed;  for example, FK4 (i.e. B1950) mean places would first
+*       have to be converted to FK5, which can be done with the
+*       sla_FK425 etc routines.
+*
+*   5)  "Observed" Az,El means the position that would be seen by a
+*       perfect theodolite located at the observer.  This is obtained
+*       from the geocentric apparent RA,Dec by allowing for Earth
+*       orientation and diurnal aberration, rotating from equator
+*       to horizon coordinates, and then adjusting for refraction.
+*       The HA,Dec is obtained by rotating back into equatorial
+*       coordinates, using the geodetic latitude corrected for polar
+*       motion, and is the position that would be seen by a perfect
+*       equatorial located at the observer and with its polar axis
+*       aligned to the Earth's axis of rotation (n.b. not to the
+*       refracted pole).  Finally, the RA is obtained by subtracting
+*       the HA from the local apparent ST.
+*
+*   6)  To predict the required setting of a real telescope, the
+*       observed place produced by this routine would have to be
+*       adjusted for the tilt of the azimuth or polar axis of the
+*       mounting (with appropriate corrections for mount flexures),
+*       for non-perpendicularity between the mounting axes, for the
+*       position of the rotator axis and the pointing axis relative
+*       to it, for tube flexure, for gear and encoder errors, and
+*       finally for encoder zero points.  Some telescopes would, of
+*       course, exhibit other properties which would need to be
+*       accounted for at the appropriate point in the sequence.
+*
+*   7)  The star-independent apparent-to-observed-place parameters
+*       in AOPRMS may be computed by means of the sla_AOPPA routine.
+*       If nothing has changed significantly except the time, the
+*       sla_AOPPAT routine may be used to perform the requisite
+*       partial recomputation of AOPRMS.
+*
+*   8)  At zenith distances beyond about 76 degrees, the need for
+*       special care with the corrections for refraction causes a
+*       marked increase in execution time.  Moreover, the effect
+*       gets worse with increasing zenith distance.  Adroit
+*       programming in the calling application may allow the
+*       problem to be reduced.  Prepare an alternative AOPRMS array,
+*       computed for zero air-pressure;  this will disable the
+*       refraction corrections and cause rapid execution.  Using
+*       this AOPRMS array, a preliminary call to the present routine
+*       will, depending on the application, produce a rough position
+*       which may be enough to establish whether the full, slow
+*       calculation (using the real AOPRMS array) is worthwhile.
+*       For example, there would be no need for the full calculation
+*       if the preliminary call had already established that the
+*       source was well below the elevation limits for a particular
+*       telescope.
+*
+*  9)   The azimuths etc produced by the present routine are with
+*       respect to the celestial pole.  Corrections to the terrestrial
+*       pole can be computed using sla_POLMO.
+*
+*  Called:  sla_DCS2C, sla_REFZ, sla_REFRO, sla_DCC2S, sla_DRANRM
+*
+*  P.T.Wallace   Starlink   24 October 2003
+*
+*  Copyright (C) 2003 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RAP,DAP,AOPRMS(14),AOB,ZOB,HOB,DOB,ROB
+
+*  Breakpoint for fast/slow refraction algorithm:
+*  ZD greater than arctan(4), (see sla_REFCO routine)
+*  or vector Z less than cosine(arctan(Z)) = 1/sqrt(17)
+      DOUBLE PRECISION ZBREAK
+      PARAMETER (ZBREAK=0.242535625D0)
+
+      INTEGER I
+
+      DOUBLE PRECISION SPHI,CPHI,ST,V(3),XHD,YHD,ZHD,DIURAB,F,
+     :                 XHDT,YHDT,ZHDT,XAET,YAET,ZAET,AZOBS,
+     :                 ZDT,REFA,REFB,ZDOBS,DZD,DREF,CE,
+     :                 XAEO,YAEO,ZAEO,HMOBS,DCOBS,RAOBS
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+*  Sin, cos of latitude
+      SPHI = AOPRMS(2)
+      CPHI = AOPRMS(3)
+
+*  Local apparent sidereal time
+      ST = AOPRMS(14)
+
+*  Apparent RA,Dec to Cartesian -HA,Dec
+      CALL sla_DCS2C(RAP-ST,DAP,V)
+      XHD = V(1)
+      YHD = V(2)
+      ZHD = V(3)
+
+*  Diurnal aberration
+      DIURAB = AOPRMS(4)
+      F = (1D0-DIURAB*YHD)
+      XHDT = F*XHD
+      YHDT = F*(YHD+DIURAB)
+      ZHDT = F*ZHD
+
+*  Cartesian -HA,Dec to Cartesian Az,El (S=0,E=90)
+      XAET = SPHI*XHDT-CPHI*ZHDT
+      YAET = YHDT
+      ZAET = CPHI*XHDT+SPHI*ZHDT
+
+*  Azimuth (N=0,E=90)
+      IF (XAET.EQ.0D0.AND.YAET.EQ.0D0) THEN
+         AZOBS = 0D0
+      ELSE
+         AZOBS = ATAN2(YAET,-XAET)
+      END IF
+
+*  Topocentric zenith distance
+      ZDT = ATAN2(SQRT(XAET*XAET+YAET*YAET),ZAET)
+
+*
+*  Refraction
+*  ----------
+
+*  Fast algorithm using two constant model
+      REFA = AOPRMS(11)
+      REFB = AOPRMS(12)
+      CALL sla_REFZ(ZDT,REFA,REFB,ZDOBS)
+
+*  Large zenith distance?
+      IF (COS(ZDOBS).LT.ZBREAK) THEN
+
+*     Yes: use rigorous algorithm
+
+*     Initialize loop (maximum of 10 iterations)
+         I = 1
+         DZD = 1D1
+         DO WHILE (ABS(DZD).GT.1D-10.AND.I.LE.10)
+
+*        Compute refraction using current estimate of observed ZD
+            CALL sla_REFRO(ZDOBS,AOPRMS(5),AOPRMS(6),AOPRMS(7),
+     :                     AOPRMS(8),AOPRMS(9),AOPRMS(1),
+     :                     AOPRMS(10),1D-8,DREF)
+
+*        Remaining discrepancy
+            DZD = ZDOBS+DREF-ZDT
+
+*        Update the estimate
+            ZDOBS = ZDOBS-DZD
+
+*        Increment the iteration counter
+            I = I+1
+         END DO
+      END IF
+
+*  To Cartesian Az/ZD
+      CE = SIN(ZDOBS)
+      XAEO = -COS(AZOBS)*CE
+      YAEO = SIN(AZOBS)*CE
+      ZAEO = COS(ZDOBS)
+
+*  Cartesian Az/ZD to Cartesian -HA,Dec
+      V(1) = SPHI*XAEO+CPHI*ZAEO
+      V(2) = YAEO
+      V(3) = -CPHI*XAEO+SPHI*ZAEO
+
+*  To spherical -HA,Dec
+      CALL sla_DCC2S(V,HMOBS,DCOBS)
+
+*  Right Ascension
+      RAOBS = sla_DRANRM(ST+HMOBS)
+
+*  Return the results
+      AOB = AZOBS
+      ZOB = ZDOBS
+      HOB = -HMOBS
+      DOB = DCOBS
+      ROB = RAOBS
+
+      END
diff --git a/atmdsp.f b/atmdsp.f
new file mode 100644
index 0000000000000000000000000000000000000000..1831f55833740d4767df4ce6e94f275e34e8aed3
--- /dev/null
+++ b/atmdsp.f
@@ -0,0 +1,140 @@
+      SUBROUTINE sla_ATMDSP (TDK, PMB, RH, WL1, A1, B1, WL2, A2, B2)
+*+
+*     - - - - - - -
+*      A T M D S P
+*     - - - - - - -
+*
+*  Apply atmospheric-dispersion adjustments to refraction coefficients.
+*
+*  Given:
+*     TDK       d       ambient temperature, K
+*     PMB       d       ambient pressure, millibars
+*     RH        d       ambient relative humidity, 0-1
+*     WL1       d       reference wavelength, micrometre (0.4D0 recommended)
+*     A1        d       refraction coefficient A for wavelength WL1 (radians)
+*     B1        d       refraction coefficient B for wavelength WL1 (radians)
+*     WL2       d       wavelength for which adjusted A,B required
+*
+*  Returned:
+*     A2        d       refraction coefficient A for wavelength WL2 (radians)
+*     B2        d       refraction coefficient B for wavelength WL2 (radians)
+*
+*  Notes:
+*
+*  1  To use this routine, first call sla_REFCO specifying WL1 as the
+*     wavelength.  This yields refraction coefficients A1,B1, correct
+*     for that wavelength.  Subsequently, calls to sla_ATMDSP specifying
+*     different wavelengths will produce new, slightly adjusted
+*     refraction coefficients which apply to the specified wavelength.
+*
+*  2  Most of the atmospheric dispersion happens between 0.7 micrometre
+*     and the UV atmospheric cutoff, and the effect increases strongly
+*     towards the UV end.  For this reason a blue reference wavelength
+*     is recommended, for example 0.4 micrometres.
+*
+*  3  The accuracy, for this set of conditions:
+*
+*        height above sea level    2000 m
+*                      latitude    29 deg
+*                      pressure    793 mb
+*                   temperature    17 degC
+*                      humidity    50%
+*                    lapse rate    0.0065 degC/m
+*          reference wavelength    0.4 micrometre
+*                star elevation    15 deg
+*
+*     is about 2.5 mas RMS between 0.3 and 1.0 micrometres, and stays
+*     within 4 mas for the whole range longward of 0.3 micrometres
+*     (compared with a total dispersion from 0.3 to 20.0 micrometres
+*     of about 11 arcsec).  These errors are typical for ordinary
+*     conditions and the given elevation;  in extreme conditions values
+*     a few times this size may occur, while at higher elevations the
+*     errors become much smaller.
+*
+*  4  If either wavelength exceeds 100 micrometres, the radio case
+*     is assumed and the returned refraction coefficients are the
+*     same as the given ones.  Note that radio refraction coefficients
+*     cannot be turned into optical values using this routine, nor
+*     vice versa.
+*
+*  5  The algorithm consists of calculation of the refractivity of the
+*     air at the observer for the two wavelengths, using the methods
+*     of the sla_REFRO routine, and then scaling of the two refraction
+*     coefficients according to classical refraction theory.  This
+*     amounts to scaling the A coefficient in proportion to (n-1) and
+*     the B coefficient almost in the same ratio (see R.M.Green,
+*     "Spherical Astronomy", Cambridge University Press, 1985).
+*
+*  Last revision   2 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION TDK,PMB,RH,WL1,A1,B1,WL2,A2,B2
+
+      DOUBLE PRECISION F,TDKOK,PMBOK,RHOK,
+     :                 PSAT,PWO,W1,WLOK,WLSQ,W2,DN1,DN2
+
+
+*  Check for radio wavelengths
+      IF (WL1.GT.100D0.OR.WL2.GT.100D0) THEN
+
+*     Radio: no dispersion
+         A2 = A1
+         B2 = B1
+      ELSE
+
+*     Optical: keep arguments within safe bounds
+         TDKOK = MIN(MAX(TDK,100D0),500D0)
+         PMBOK = MIN(MAX(PMB,0D0),10000D0)
+         RHOK = MIN(MAX(RH,0D0),1D0)
+
+*     Atmosphere parameters at the observer
+         PSAT = 10D0**(-8.7115D0+0.03477D0*TDKOK)
+         PWO = RHOK*PSAT
+         W1 = 11.2684D-6*PWO
+
+*     Refractivity at the observer for first wavelength
+         WLOK = MAX(WL1,0.1D0)
+         WLSQ = WLOK*WLOK
+         W2 = 77.5317D-6+(0.43909D-6+0.00367D-6/WLSQ)/WLSQ
+         DN1 = (W2*PMBOK-W1)/TDKOK
+
+*     Refractivity at the observer for second wavelength
+         WLOK = MAX(WL2,0.1D0)
+         WLSQ = WLOK*WLOK
+         W2 = 77.5317D-6+(0.43909D-6+0.00367D-6/WLSQ)/WLSQ
+         DN2 = (W2*PMBOK-W1)/TDKOK
+
+*     Scale the refraction coefficients (see Green 4.31, p93)
+         IF (DN1.NE.0D0) THEN
+            F = DN2/DN1
+            A2 = A1*F
+            B2 = B1*F
+            IF (DN1.NE.A1) B2=B2*(1D0+DN1*(DN1-DN2)/(2D0*(DN1-A1)))
+         ELSE
+            A2 = A1
+            B2 = B1
+         END IF
+      END IF
+
+      END
diff --git a/atms.f b/atms.f
new file mode 100644
index 0000000000000000000000000000000000000000..c6d8ac2e7f32bc7e1cdcc1885e2cccce50622b24
--- /dev/null
+++ b/atms.f
@@ -0,0 +1,57 @@
+      SUBROUTINE sla__ATMS (RT, TT, DNT, GAMAL, R, DN, RDNDR)
+*+
+*     - - - - -
+*      A T M S
+*     - - - - -
+*
+*  Internal routine used by REFRO
+*
+*  Refractive index and derivative with respect to height for the
+*  stratosphere.
+*
+*  Given:
+*    RT      d    height of tropopause from centre of the Earth (metre)
+*    TT      d    temperature at the tropopause (K)
+*    DNT     d    refractive index at the tropopause
+*    GAMAL   d    constant of the atmospheric model = G*MD/R
+*    R       d    current distance from the centre of the Earth (metre)
+*
+*  Returned:
+*    DN      d    refractive index at R
+*    RDNDR   d    R * rate the refractive index is changing at R
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RT,TT,DNT,GAMAL,R,DN,RDNDR
+
+      DOUBLE PRECISION B,W
+
+
+      B = GAMAL/TT
+      W = (DNT-1D0)*EXP(-B*(R-RT))
+      DN = 1D0+W
+      RDNDR = -R*B*W
+
+      END
diff --git a/atmt.f b/atmt.f
new file mode 100644
index 0000000000000000000000000000000000000000..625d8f7c938585e7c0583e32a17af9a02fcd1d40
--- /dev/null
+++ b/atmt.f
@@ -0,0 +1,71 @@
+      SUBROUTINE sla__ATMT (R0, T0, ALPHA, GAMM2, DELM2,
+     :                      C1, C2, C3, C4, C5, C6, R, T, DN, RDNDR)
+*+
+*     - - - - -
+*      A T M T
+*     - - - - -
+*
+*  Internal routine used by REFRO
+*
+*  Refractive index and derivative with respect to height for the
+*  troposphere.
+*
+*  Given:
+*    R0      d    height of observer from centre of the Earth (metre)
+*    T0      d    temperature at the observer (K)
+*    ALPHA   d    alpha          )
+*    GAMM2   d    gamma minus 2  ) see HMNAO paper
+*    DELM2   d    delta minus 2  )
+*    C1      d    useful term  )
+*    C2      d    useful term  )
+*    C3      d    useful term  ) see source
+*    C4      d    useful term  ) of sla_REFRO
+*    C5      d    useful term  )
+*    C6      d    useful term  )
+*    R       d    current distance from the centre of the Earth (metre)
+*
+*  Returned:
+*    T       d    temperature at R (K)
+*    DN      d    refractive index at R
+*    RDNDR   d    R * rate the refractive index is changing at R
+*
+*  Note that in the optical case C5 and C6 are zero.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R0,T0,ALPHA,GAMM2,DELM2,C1,C2,C3,C4,C5,C6,
+     :                 R,T,DN,RDNDR
+
+      DOUBLE PRECISION TT0,TT0GM2,TT0DM2
+
+
+      T = MAX(MIN(T0-ALPHA*(R-R0),320D0),100D0)
+      TT0 = T/T0
+      TT0GM2 = TT0**GAMM2
+      TT0DM2 = TT0**DELM2
+      DN = 1D0+(C1*TT0GM2-(C2-C5/T)*TT0DM2)*TT0
+      RDNDR = R*(-C3*TT0GM2+(C4-C6/TT0)*TT0DM2)
+
+      END
diff --git a/av2m.f b/av2m.f
new file mode 100644
index 0000000000000000000000000000000000000000..3788b4cfe7e64a03942fa629a2315f973b81157b
--- /dev/null
+++ b/av2m.f
@@ -0,0 +1,84 @@
+      SUBROUTINE sla_AV2M (AXVEC, RMAT)
+*+
+*     - - - - -
+*      A V 2 M
+*     - - - - -
+*
+*  Form the rotation matrix corresponding to a given axial vector.
+*
+*  (single precision)
+*
+*  A rotation matrix describes a rotation about some arbitrary axis,
+*  called the Euler axis.  The "axial vector" supplied to this routine
+*  has the same direction as the Euler axis, and its magnitude is the
+*  amount of rotation in radians.
+*
+*  Given:
+*    AXVEC  r(3)     axial vector (radians)
+*
+*  Returned:
+*    RMAT   r(3,3)   rotation matrix
+*
+*  If AXVEC is null, the unit matrix is returned.
+*
+*  The reference frame rotates clockwise as seen looking along
+*  the axial vector from the origin.
+*
+*  Last revision:   26 November 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL AXVEC(3),RMAT(3,3)
+
+      REAL X,Y,Z,PHI,S,C,W
+
+
+
+*  Rotation angle - magnitude of axial vector - and functions
+      X = AXVEC(1)
+      Y = AXVEC(2)
+      Z = AXVEC(3)
+      PHI = SQRT(X*X+Y*Y+Z*Z)
+      S = SIN(PHI)
+      C = COS(PHI)
+      W = 1.0-C
+
+*  Euler axis - direction of axial vector (perhaps null)
+      IF (PHI.NE.0.0) THEN
+         X = X/PHI
+         Y = Y/PHI
+         Z = Z/PHI
+      END IF
+
+*  Compute the rotation matrix
+      RMAT(1,1) = X*X*W+C
+      RMAT(1,2) = X*Y*W+Z*S
+      RMAT(1,3) = X*Z*W-Y*S
+      RMAT(2,1) = X*Y*W-Z*S
+      RMAT(2,2) = Y*Y*W+C
+      RMAT(2,3) = Y*Z*W+X*S
+      RMAT(3,1) = X*Z*W+Y*S
+      RMAT(3,2) = Y*Z*W-X*S
+      RMAT(3,3) = Z*Z*W+C
+
+      END
diff --git a/bear.f b/bear.f
new file mode 100644
index 0000000000000000000000000000000000000000..09cfbd398b09db3a36ea854600158531eac5b808
--- /dev/null
+++ b/bear.f
@@ -0,0 +1,59 @@
+      REAL FUNCTION sla_BEAR (A1, B1, A2, B2)
+*+
+*     - - - - -
+*      B E A R
+*     - - - - -
+*
+*  Bearing (position angle) of one point on a sphere relative to another
+*  (single precision)
+*
+*  Given:
+*     A1,B1    r    spherical coordinates of one point
+*     A2,B2    r    spherical coordinates of the other point
+*
+*  (The spherical coordinates are RA,Dec, Long,Lat etc, in radians.)
+*
+*  The result is the bearing (position angle), in radians, of point
+*  A2,B2 as seen from point A1,B1.  It is in the range +/- pi.  If
+*  A2,B2 is due east of A1,B1 the bearing is +pi/2.  Zero is returned
+*  if the two points are coincident.
+*
+*  P.T.Wallace   Starlink   23 March 1991
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL A1,B1,A2,B2
+
+      REAL DA,X,Y
+
+
+      DA=A2-A1
+      Y=SIN(DA)*COS(B2)
+      X=SIN(B2)*COS(B1)-COS(B2)*SIN(B1)*COS(DA)
+      IF (X.NE.0.0.OR.Y.NE.0.0) THEN
+         sla_BEAR=ATAN2(Y,X)
+      ELSE
+         sla_BEAR=0.0
+      END IF
+
+      END
diff --git a/caf2r.f b/caf2r.f
new file mode 100644
index 0000000000000000000000000000000000000000..1209b4407bcff11d2474ebb32c0bf814aa8c5851
--- /dev/null
+++ b/caf2r.f
@@ -0,0 +1,74 @@
+      SUBROUTINE sla_CAF2R (IDEG, IAMIN, ASEC, RAD, J)
+*+
+*     - - - - - -
+*      C A F 2 R
+*     - - - - - -
+*
+*  Convert degrees, arcminutes, arcseconds to radians
+*  (single precision)
+*
+*  Given:
+*     IDEG        int       degrees
+*     IAMIN       int       arcminutes
+*     ASEC        real      arcseconds
+*
+*  Returned:
+*     RAD         real      angle in radians
+*     J           int       status:  0 = OK
+*                                    1 = IDEG outside range 0-359
+*                                    2 = IAMIN outside range 0-59
+*                                    3 = ASEC outside range 0-59.999...
+*
+*  Notes:
+*
+*  1)  The result is computed even if any of the range checks
+*      fail.
+*
+*  2)  The sign must be dealt with outside this routine.
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IDEG,IAMIN
+      REAL ASEC,RAD
+      INTEGER J
+
+*  Arc seconds to radians
+      REAL AS2R
+      PARAMETER (AS2R=0.484813681109535994E-5)
+
+
+
+*  Preset status
+      J=0
+
+*  Validate arcsec, arcmin, deg
+      IF (ASEC.LT.0.0.OR.ASEC.GE.60.0) J=3
+      IF (IAMIN.LT.0.OR.IAMIN.GT.59) J=2
+      IF (IDEG.LT.0.OR.IDEG.GT.359) J=1
+
+*  Compute angle
+      RAD=AS2R*(60.0*(60.0*REAL(IDEG)+REAL(IAMIN))+ASEC)
+
+      END
diff --git a/caldj.f b/caldj.f
new file mode 100644
index 0000000000000000000000000000000000000000..9c91a5358ceeb5ae68f6911fe0dcf1948b2aa143
--- /dev/null
+++ b/caldj.f
@@ -0,0 +1,74 @@
+      SUBROUTINE sla_CALDJ (IY, IM, ID, DJM, J)
+*+
+*     - - - - - -
+*      C A L D J
+*     - - - - - -
+*
+*  Gregorian Calendar to Modified Julian Date
+*
+*  (Includes century default feature:  use sla_CLDJ for years
+*   before 100AD.)
+*
+*  Given:
+*     IY,IM,ID     int    year, month, day in Gregorian calendar
+*
+*  Returned:
+*     DJM          dp     modified Julian Date (JD-2400000.5) for 0 hrs
+*     J            int    status:
+*                           0 = OK
+*                           1 = bad year   (MJD not computed)
+*                           2 = bad month  (MJD not computed)
+*                           3 = bad day    (MJD computed)
+*
+*  Acceptable years are 00-49, interpreted as 2000-2049,
+*                       50-99,     "       "  1950-1999,
+*                       100 upwards, interpreted literally.
+*
+*  Called:  sla_CLDJ
+*
+*  P.T.Wallace   Starlink   November 1985
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IY,IM,ID
+      DOUBLE PRECISION DJM
+      INTEGER J
+
+      INTEGER NY
+
+
+
+
+*  Default century if appropriate
+      IF (IY.GE.0.AND.IY.LE.49) THEN
+         NY=IY+2000
+      ELSE IF (IY.GE.50.AND.IY.LE.99) THEN
+         NY=IY+1900
+      ELSE
+         NY=IY
+      END IF
+
+*  Modified Julian Date
+      CALL sla_CLDJ(NY,IM,ID,DJM,J)
+
+      END
diff --git a/calyd.f b/calyd.f
new file mode 100644
index 0000000000000000000000000000000000000000..710f04aac1111e5091f0ffe7463e1f888a58b246
--- /dev/null
+++ b/calyd.f
@@ -0,0 +1,82 @@
+      SUBROUTINE sla_CALYD (IY, IM, ID, NY, ND, J)
+*+
+*     - - - - - -
+*      C A L Y D
+*     - - - - - -
+*
+*  Gregorian calendar date to year and day in year (in a Julian
+*  calendar aligned to the 20th/21st century Gregorian calendar).
+*
+*  (Includes century default feature:  use sla_CLYD for years
+*   before 100AD.)
+*
+*  Given:
+*     IY,IM,ID   int    year, month, day in Gregorian calendar
+*                       (year may optionally omit the century)
+*  Returned:
+*     NY         int    year (re-aligned Julian calendar)
+*     ND         int    day in year (1 = January 1st)
+*     J          int    status:
+*                         0 = OK
+*                         1 = bad year (before -4711)
+*                         2 = bad month
+*                         3 = bad day (but conversion performed)
+*
+*  Notes:
+*
+*  1  This routine exists to support the low-precision routines
+*     sla_EARTH, sla_MOON and sla_ECOR.
+*
+*  2  Between 1900 March 1 and 2100 February 28 it returns answers
+*     which are consistent with the ordinary Gregorian calendar.
+*     Outside this range there will be a discrepancy which increases
+*     by one day for every non-leap century year.
+*
+*  3  Years in the range 50-99 are interpreted as 1950-1999, and
+*     years in the range 00-49 are interpreted as 2000-2049.
+*
+*  Called:  sla_CLYD
+*
+*  P.T.Wallace   Starlink   23 November 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IY,IM,ID,NY,ND,J
+
+      INTEGER I
+
+
+
+*  Default century if appropriate
+      IF (IY.GE.0.AND.IY.LE.49) THEN
+         I=IY+2000
+      ELSE IF (IY.GE.50.AND.IY.LE.99) THEN
+         I=IY+1900
+      ELSE
+         I=IY
+      END IF
+
+*  Perform the conversion
+      CALL sla_CLYD(I,IM,ID,NY,ND,J)
+
+      END
diff --git a/cc2s.f b/cc2s.f
new file mode 100644
index 0000000000000000000000000000000000000000..d74e4af7b075717e68e10276b6ffde4ed996f292
--- /dev/null
+++ b/cc2s.f
@@ -0,0 +1,69 @@
+      SUBROUTINE sla_CC2S (V, A, B)
+*+
+*     - - - - -
+*      C C 2 S
+*     - - - - -
+*
+*  Cartesian to spherical coordinates (single precision)
+*
+*  Given:
+*     V     r(3)   x,y,z vector
+*
+*  Returned:
+*     A,B   r      spherical coordinates in radians
+*
+*  The spherical coordinates are longitude (+ve anticlockwise looking
+*  from the +ve latitude pole) and latitude.  The Cartesian coordinates
+*  are right handed, with the x axis at zero longitude and latitude, and
+*  the z axis at the +ve latitude pole.
+*
+*  If V is null, zero A and B are returned.  At either pole, zero A is
+*  returned.
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL V(3),A,B
+
+      REAL X,Y,Z,R
+
+
+      X = V(1)
+      Y = V(2)
+      Z = V(3)
+      R = SQRT(X*X+Y*Y)
+
+      IF (R.EQ.0.0) THEN
+         A = 0.0
+      ELSE
+         A = ATAN2(Y,X)
+      END IF
+
+      IF (Z.EQ.0.0) THEN
+         B = 0.0
+      ELSE
+         B = ATAN2(Z,R)
+      END IF
+
+      END
diff --git a/cc62s.f b/cc62s.f
new file mode 100644
index 0000000000000000000000000000000000000000..e5e072c6595b9a938ee1b628b5748ef523e7b161
--- /dev/null
+++ b/cc62s.f
@@ -0,0 +1,99 @@
+      SUBROUTINE sla_CC62S (V, A, B, R, AD, BD, RD)
+*+
+*     - - - - - -
+*      C C 6 2 S
+*     - - - - - -
+*
+*  Conversion of position & velocity in Cartesian coordinates
+*  to spherical coordinates (single precision)
+*
+*  Given:
+*     V      r(6)   Cartesian position & velocity vector
+*
+*  Returned:
+*     A      r      longitude (radians)
+*     B      r      latitude (radians)
+*     R      r      radial coordinate
+*     AD     r      longitude derivative (radians per unit time)
+*     BD     r      latitude derivative (radians per unit time)
+*     RD     r      radial derivative
+*
+*  P.T.Wallace   Starlink   28 April 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL V(6),A,B,R,AD,BD,RD
+
+      REAL X,Y,Z,XD,YD,ZD,RXY2,RXY,R2,XYP
+
+
+
+*  Components of position/velocity vector
+      X=V(1)
+      Y=V(2)
+      Z=V(3)
+      XD=V(4)
+      YD=V(5)
+      ZD=V(6)
+
+*  Component of R in XY plane squared
+      RXY2=X*X+Y*Y
+
+*  Modulus squared
+      R2=RXY2+Z*Z
+
+*  Protection against null vector
+      IF (R2.EQ.0.0) THEN
+         X=XD
+         Y=YD
+         Z=ZD
+         RXY2=X*X+Y*Y
+         R2=RXY2+Z*Z
+      END IF
+
+*  Position and velocity in spherical coordinates
+      RXY=SQRT(RXY2)
+      XYP=X*XD+Y*YD
+      IF (RXY2.NE.0.0) THEN
+         A=ATAN2(Y,X)
+         B=ATAN2(Z,RXY)
+         AD=(X*YD-Y*XD)/RXY2
+         BD=(ZD*RXY2-Z*XYP)/(R2*RXY)
+      ELSE
+         A=0.0
+         IF (Z.NE.0.0) THEN
+            B=ATAN2(Z,RXY)
+         ELSE
+            B=0.0
+         END IF
+         AD=0.0
+         BD=0.0
+      END IF
+      R=SQRT(R2)
+      IF (R.NE.0.0) THEN
+         RD=(XYP+Z*ZD)/R
+      ELSE
+         RD=0.0
+      END IF
+
+      END
diff --git a/cd2tf.f b/cd2tf.f
new file mode 100644
index 0000000000000000000000000000000000000000..95ed79183feba83fc907be439be6d9bee7473792
--- /dev/null
+++ b/cd2tf.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_CD2TF (NDP, DAYS, SIGN, IHMSF)
+*+
+*     - - - - - -
+*      C D 2 T F
+*     - - - - - -
+*
+*  Convert an interval in days into hours, minutes, seconds
+*
+*  (single precision)
+*
+*  Given:
+*     NDP       int      number of decimal places of seconds
+*     DAYS      real     interval in days
+*
+*  Returned:
+*     SIGN      char     '+' or '-'
+*     IHMSF     int(4)   hours, minutes, seconds, fraction
+*
+*  Notes:
+*
+*     1)  NDP less than zero is interpreted as zero.
+*
+*     2)  The largest useful value for NDP is determined by the size of
+*         DAYS, the format of REAL floating-point numbers on the target
+*         machine, and the risk of overflowing IHMSF(4).  On some
+*         architectures, for DAYS up to 1.0, the available floating-
+*         point precision corresponds roughly to NDP=3.  This is well
+*         below the ultimate limit of NDP=9 set by the capacity of a
+*         typical 32-bit IHMSF(4).
+*
+*     3)  The absolute value of DAYS may exceed 1.0.  In cases where it
+*         does not, it is up to the caller to test for and handle the
+*         case where DAYS is very nearly 1.0 and rounds up to 24 hours,
+*         by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+*
+*  Called:  sla_DD2TF
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      REAL DAYS
+      CHARACTER SIGN*(*)
+      INTEGER IHMSF(4)
+
+
+
+*  Call double precision version
+      CALL sla_DD2TF(NDP,DBLE(DAYS),SIGN,IHMSF)
+
+      END
diff --git a/cldj.f b/cldj.f
new file mode 100644
index 0000000000000000000000000000000000000000..47aeb01f1152b55a5f6dd7f1e78a4df07e6648b4
--- /dev/null
+++ b/cldj.f
@@ -0,0 +1,94 @@
+      SUBROUTINE sla_CLDJ (IY, IM, ID, DJM, J)
+*+
+*     - - - - -
+*      C L D J
+*     - - - - -
+*
+*  Gregorian Calendar to Modified Julian Date
+*
+*  Given:
+*     IY,IM,ID     int    year, month, day in Gregorian calendar
+*
+*  Returned:
+*     DJM          dp     modified Julian Date (JD-2400000.5) for 0 hrs
+*     J            int    status:
+*                           0 = OK
+*                           1 = bad year   (MJD not computed)
+*                           2 = bad month  (MJD not computed)
+*                           3 = bad day    (MJD computed)
+*
+*  The year must be -4699 (i.e. 4700BC) or later.
+*
+*  The algorithm is adapted from Hatcher 1984 (QJRAS 25, 53-55).
+*
+*  Last revision:   27 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IY,IM,ID
+      DOUBLE PRECISION DJM
+      INTEGER J
+
+*  Month lengths in days
+      INTEGER MTAB(12)
+      DATA MTAB / 31,28,31,30,31,30,31,31,30,31,30,31 /
+
+
+
+*  Preset status.
+      J = 0
+
+*  Validate year.
+      IF ( IY .LT. -4699 ) THEN
+         J = 1
+      ELSE
+
+*     Validate month.
+         IF ( IM.GE.1 .AND. IM.LE.12 ) THEN
+
+*        Allow for leap year.
+            IF ( MOD(IY,4) .EQ. 0 ) THEN
+               MTAB(2) = 29
+            ELSE
+               MTAB(2) = 28
+            END IF
+            IF ( MOD(IY,100).EQ.0 .AND. MOD(IY,400).NE.0 )
+     :         MTAB(2) = 28
+
+*        Validate day.
+            IF ( ID.LT.1 .OR. ID.GT.MTAB(IM) ) J=3
+
+*        Modified Julian Date.
+            DJM = DBLE ( ( 1461 * ( IY - (12-IM)/10 + 4712 ) ) / 4
+     :               + ( 306 * MOD ( IM+9, 12 ) + 5 ) / 10
+     :               - ( 3 * ( ( IY - (12-IM)/10 + 4900 ) / 100 ) ) / 4
+     :               + ID - 2399904 )
+
+*        Bad month.
+         ELSE
+            J=2
+         END IF
+
+      END IF
+
+      END
diff --git a/clyd.f b/clyd.f
new file mode 100644
index 0000000000000000000000000000000000000000..7876753b44c3d8d6e76b013dd4580c7bc6063e19
--- /dev/null
+++ b/clyd.f
@@ -0,0 +1,118 @@
+      SUBROUTINE sla_CLYD (IY, IM, ID, NY, ND, JSTAT)
+*+
+*     - - - - -
+*      C L Y D
+*     - - - - -
+*
+*  Gregorian calendar to year and day in year (in a Julian calendar
+*  aligned to the 20th/21st century Gregorian calendar).
+*
+*  Given:
+*     IY,IM,ID   i    year, month, day in Gregorian calendar
+*
+*  Returned:
+*     NY         i    year (re-aligned Julian calendar)
+*     ND         i    day in year (1 = January 1st)
+*     JSTAT      i    status:
+*                       0 = OK
+*                       1 = bad year (before -4711)
+*                       2 = bad month
+*                       3 = bad day (but conversion performed)
+*
+*  Notes:
+*
+*  1  This routine exists to support the low-precision routines
+*     sla_EARTH, sla_MOON and sla_ECOR.
+*
+*  2  Between 1900 March 1 and 2100 February 28 it returns answers
+*     which are consistent with the ordinary Gregorian calendar.
+*     Outside this range there will be a discrepancy which increases
+*     by one day for every non-leap century year.
+*
+*  3  The essence of the algorithm is first to express the Gregorian
+*     date as a Julian Day Number and then to convert this back to
+*     a Julian calendar date, with day-in-year instead of month and
+*     day.  See 12.92-1 and 12.95-1 in the reference.
+*
+*  Reference:  Explanatory Supplement to the Astronomical Almanac,
+*              ed P.K.Seidelmann, University Science Books (1992),
+*              p604-606.
+*
+*  P.T.Wallace   Starlink   26 November 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IY,IM,ID,NY,ND,JSTAT
+
+      INTEGER I,J,K,L,N
+
+*  Month lengths in days
+      INTEGER MTAB(12)
+      DATA MTAB/31,28,31,30,31,30,31,31,30,31,30,31/
+
+
+
+*  Preset status
+      JSTAT=0
+
+*  Validate year
+      IF (IY.GE.-4711) THEN
+
+*     Validate month
+         IF (IM.GE.1.AND.IM.LE.12) THEN
+
+*        Allow for (Gregorian) leap year
+            IF (MOD(IY,4).EQ.0.AND.
+     :         (MOD(IY,100).NE.0.OR.MOD(IY,400).EQ.0)) THEN
+               MTAB(2)=29
+            ELSE
+               MTAB(2)=28
+            END IF
+
+*        Validate day
+            IF (ID.LT.1.OR.ID.GT.MTAB(IM)) JSTAT=3
+
+*        Perform the conversion
+            I=(14-IM)/12
+            K=IY-I
+            J=(1461*(K+4800))/4+(367*(IM-2+12*I))/12
+     :        -(3*((K+4900)/100))/4+ID-30660
+            K=(J-1)/1461
+            L=J-1461*K
+            N=(L-1)/365-L/1461
+            J=((80*(L-365*N+30))/2447)/11
+            I=N+J
+            ND=59+L-365*I+((4-N)/4)*(1-J)
+            NY=4*K+I-4716
+
+*        Bad month
+         ELSE
+            JSTAT=2
+         END IF
+      ELSE
+
+*     Bad year
+         JSTAT=1
+      END IF
+
+      END
diff --git a/combn.f b/combn.f
new file mode 100644
index 0000000000000000000000000000000000000000..c823495e1596fe0174e874ec1f85e02e4dfa01c2
--- /dev/null
+++ b/combn.f
@@ -0,0 +1,159 @@
+      SUBROUTINE sla_COMBN ( NSEL, NCAND, LIST, J )
+*+
+*     - - - - - -
+*      C O M B N
+*     - - - - - -
+*
+*  Generate the next combination, a subset of a specified size chosen
+*  from a specified number of items.
+*
+*  Given:
+*     NSEL     i        number of items (subset size)
+*     NCAND    i        number of candidates (set size)
+*
+*  Given and returned:
+*     LIST     i(NSEL)  latest combination, LIST(1)=0 to initialize
+*
+*  Returned:
+*     J        i        status: -1 = illegal NSEL or NCAND
+*                                0 = OK
+*                               +1 = no more combinations available
+*
+*  Notes:
+*
+*  1) NSEL and NCAND must both be at least 1, and NSEL must be less
+*     than or equal to NCAND.
+*
+*  2) This routine returns, in the LIST array, a subset of NSEL integers
+*     chosen from the range 1 to NCAND inclusive, in ascending order.
+*     Before calling the routine for the first time, the caller must set
+*     the first element of the LIST array to zero (any value less than 1
+*     will do) to cause initialization.
+*
+*  2) The first combination to be generated is:
+*
+*        LIST(1)=1, LIST(2)=2, ..., LIST(NSEL)=NSEL
+*
+*     This is also the combination returned for the "finished" (J=1)
+*     case.
+*
+*     The final permutation to be generated is:
+*
+*        LIST(1)=NCAND, LIST(2)=NCAND-1, ..., LIST(NSEL)=NCAND-NSEL+1
+*
+*  3) If the "finished" (J=1) status is ignored, the routine
+*     continues to deliver combinations, the pattern repeating
+*     every NCAND!/(NSEL!*(NCAND-NSEL)!) calls.
+*
+*  4) The algorithm is by R.F.Warren-Smith (private communication).
+*
+*  P.T.Wallace   Starlink   25 August 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NSEL,NCAND,LIST(NSEL),J
+
+      INTEGER I,LISTI,NMAX,M
+      LOGICAL MORE
+
+
+*  Validate, and set status.
+      IF (NSEL.LT.1.OR.NCAND.LT.1.OR.NSEL.GT.NCAND) THEN
+         J = -1
+         GO TO 9999
+      ELSE
+         J = 0
+      END IF
+
+*  Just starting?
+      IF (LIST(1).LT.1) THEN
+
+*     Yes: return 1,2,3...
+         DO I=1,NSEL
+            LIST(I) = I
+         END DO
+
+      ELSE
+
+*     No: find the first selection that we can increment.
+
+*     Start with the first list item.
+         I = 1
+
+*     Loop.
+         MORE = .TRUE.
+         DO WHILE (MORE)
+
+*        Current list item.
+            LISTI = LIST(I)
+
+*        Is this the final list item?
+            IF (I.GE.NSEL) THEN
+
+*           Yes:  comparison value is number of candidates plus one.
+               NMAX = NCAND+1
+            ELSE
+
+*           No:  comparison value is next list item.
+               NMAX = LIST(I+1)
+            END IF
+
+*        Can the current item be incremented?
+            IF (NMAX-LISTI.GT.1) THEN
+
+*           Yes:  increment it.
+               LIST(I) = LISTI+1
+
+*           Reinitialize the preceding items.
+               DO M=1,I-1
+                  LIST(M) = M
+               END DO
+
+*           Break.
+               MORE = .FALSE.
+            ELSE
+
+*           Can't increment the current item:  is it the final one?
+               IF (I.GE.NSEL) THEN
+
+*              Yes:  set the status.
+                  J = 1
+
+*              Restart the sequence.
+                  DO I=1,NSEL
+                     LIST(I) = I
+                  END DO
+
+*              Break.
+                  MORE = .FALSE.
+               ELSE
+
+*              No:  next list item.
+                  I = I+1
+               END IF
+            END IF
+         END DO
+      END IF
+ 9999 CONTINUE
+
+      END
diff --git a/component.xml b/component.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1ec12c8b76b630bffd50b5a7d531c3a33820b6c4
--- /dev/null
+++ b/component.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!DOCTYPE component SYSTEM "componentinfo.dtd">
+<!-- component.xml.  Generated from component.xml.in by configure. -->
+
+<component id="sla" support="S">
+  <version>2.5-4</version>
+  <path>libraries/sla</path>
+  <description>SLALIB --- Positional Astronomy Library</description>
+  <abstract><p>SLALIB is a library used by writers of
+      positional-astronomy applications.  Most of the
+      routines are concerned with astronomical position and time, but
+      a number have wider trigonometrical, numerical or general
+      applications.</p></abstract>
+  <dependencies >
+    <sourceset>star2html</sourceset>
+  </dependencies>
+  <developers>
+    <person>
+      <name>Patrick Wallace</name>
+      <uname>ptw</uname>
+      <email>ptw@star.rl.ac.uk</email>
+      <role>owner</role>
+    </person>
+  </developers>
+  <documentation> sun67</documentation>
+  <bugreports>ussc@star.rl.ac.uk</bugreports>
+  <copyright>
+    <year>1989-2005</year>
+    <name>Council for the Central Laboratory of the Research Councils</name>
+  </copyright>
+</component>
diff --git a/component.xml.in b/component.xml.in
new file mode 100644
index 0000000000000000000000000000000000000000..05cd71696782e1a297d7e11ad32214e52bcc363c
--- /dev/null
+++ b/component.xml.in
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!DOCTYPE component SYSTEM "componentinfo.dtd">
+<!-- @configure_input@ -->
+
+<component id="@PACKAGE@" support="S">
+  <version>@PACKAGE_VERSION@</version>
+  <path>libraries/sla</path>
+  <description>SLALIB --- Positional Astronomy Library</description>
+  <abstract><p>SLALIB is a library used by writers of
+      positional-astronomy applications.  Most of the
+      routines are concerned with astronomical position and time, but
+      a number have wider trigonometrical, numerical or general
+      applications.</p></abstract>
+  <dependencies @STAR_DEPENDENCIES_ATTRIBUTES@>
+    @STAR_DEPENDENCIES_CHILDREN@
+  </dependencies>
+  <developers>
+    <person>
+      <name>Patrick Wallace</name>
+      <uname>ptw</uname>
+      <email>ptw@star.rl.ac.uk</email>
+      <role>owner</role>
+    </person>
+  </developers>
+  <documentation>@STAR_DOCUMENTATION@</documentation>
+  <bugreports>@PACKAGE_BUGREPORT@</bugreports>
+  <copyright>
+    <year>1989-2005</year>
+    <name>Council for the Central Laboratory of the Research Councils</name>
+  </copyright>
+</component>
diff --git a/config.guess b/config.guess
new file mode 100755
index 0000000000000000000000000000000000000000..21a7ad8066e7a2699a024b6522f76a77b3a3af3b
--- /dev/null
+++ b/config.guess
@@ -0,0 +1,1495 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-05-15'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    amd64:OpenBSD:*:*)
+	echo x86_64-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    cats:OpenBSD:*:*)
+	echo arm-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    luna88k:OpenBSD:*:*)
+    	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    macppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    mvmeppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    sgi:OpenBSD:*:*)
+	echo mips64-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    # avoid double evaluation of $set_cc_for_build
+	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    i*:MINGW*:* | i*:windows32*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    x86:Interix*:[34]*)
+	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+	exit ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes@openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf@swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green@stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    *86) UNAME_PROCESSOR=i686 ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.h b/config.h
new file mode 100644
index 0000000000000000000000000000000000000000..cad6d2695edea17ebbeb0102d672668ca85b5a12
--- /dev/null
+++ b/config.h
@@ -0,0 +1,69 @@
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to alternate name for `main' routine that is called from a `main' in
+   the Fortran libraries. */
+#define FC_MAIN main
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* True when Fortran main isn't C main */
+/* #undef HAVE_FC_MAIN */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `rand' function. */
+#define HAVE_RAND 1
+
+/* Define to 1 if you have the `random' function. */
+#define HAVE_RANDOM 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Name of package */
+#define PACKAGE "sla"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "sla"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "sla 2.5-4"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "sla"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.5-4"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "2.5-4"
diff --git a/config.h.in b/config.h.in
new file mode 100644
index 0000000000000000000000000000000000000000..1b458f11943c4aacba797e7adabd42e2165e100c
--- /dev/null
+++ b/config.h.in
@@ -0,0 +1,68 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to alternate name for `main' routine that is called from a `main' in
+   the Fortran libraries. */
+#undef FC_MAIN
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* True when Fortran main isn't C main */
+#undef HAVE_FC_MAIN
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `rand' function. */
+#undef HAVE_RAND
+
+/* Define to 1 if you have the `random' function. */
+#undef HAVE_RANDOM
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/config.log b/config.log
new file mode 100644
index 0000000000000000000000000000000000000000..743710e5cdaa7160e083c8ab6aa22840ccfa0c83
--- /dev/null
+++ b/config.log
@@ -0,0 +1,1784 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by sla configure 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  $ ./configure 
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = cca008
+uname -m = x86_64
+uname -r = 3.10.0-957.1.3.el7.x86_64
+uname -s = Linux
+uname -v = #1 SMP Thu Nov 29 14:49:43 UTC 2018
+
+/usr/bin/uname -p = x86_64
+/bin/uname -X     = unknown
+
+/bin/arch              = x86_64
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+hostinfo               = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /pbs/software/centos-7-x86_64/root/5.34.23//bin
+PATH: /afs/in2p3.fr/cernlib/@sys/pro/bin
+PATH: /sps/km3net/users/kulikovs/data_processing/genhentrunk
+PATH: /afs/in2p3.fr/cernlib/@sys/pro/bin
+PATH: /sps/km3net/users/kulikovs/data_processing/genhentrunk
+PATH: /sps/km3net/users/kulikovs/.pyenv/shims
+PATH: /sps/km3net/users/kulikovs/.pyenv/bin
+PATH: /pbs/software/x86_64_el7/gcc/5.5.0/bin
+PATH: /pbs/throng/km3net/share/geant/v10.01.p03/bin
+PATH: /afs/in2p3.fr/throng/km3net/i3-tools/root-v5.28.00c//bin
+PATH: /pbs/throng/km3net/bin
+PATH: /afs/in2p3.fr/throng/km3net/i3-tools/root-v5.28.00c//bin
+PATH: /opt/sge/bin/lx-amd64
+PATH: /usr/afsws/bin
+PATH: /opt/bin
+PATH: /opt/treqs2-client//prod/bin
+PATH: /pbs/software/centos-7-x86_64/shift/prod/bin
+PATH: /pbs/software/centos-7-x86_64/oracle/12.2.0/instantclient/bin
+PATH: /pbs/software/centos-7-x86_64/ninja/1.8.2/bin
+PATH: /pbs/software/centos-7-x86_64/curl/7.60.0/bin
+PATH: /pbs/software/centos-7-x86_64/cmake/3.11.0/bin
+PATH: /usr/lib64/qt-3.3/bin
+PATH: /opt/puppetlabs/bin
+PATH: /opt/dell/srvadmin/bin
+PATH: /usr/sbin
+PATH: /usr/bin
+PATH: /sbin
+PATH: /bin
+PATH: /usr/local/bin
+PATH: /usr/local/shared/bin
+PATH: /pbs/home/k/kulikovs/bin
+PATH: .
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:1593: checking for a BSD-compatible install
+configure:1648: result: /usr/bin/install -c
+configure:1659: checking whether build environment is sane
+configure:1702: result: yes
+configure:1767: checking for gawk
+configure:1783: found /usr/bin/gawk
+configure:1793: result: gawk
+configure:1803: checking whether make sets $(MAKE)
+configure:1823: result: yes
+configure:2000: checking build system type
+configure:2018: result: x86_64-unknown-linux-gnu
+configure:2038: checking for style of include used by make
+configure:2066: result: GNU
+configure:2137: checking for gcc
+configure:2153: found /pbs/software/x86_64_el7/gcc/5.5.0/bin/gcc
+configure:2163: result: gcc
+configure:2407: checking for C compiler version
+configure:2410: gcc --version </dev/null >&5
+gcc (GCC) 5.5.0
+Copyright (C) 2015 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2413: $? = 0
+configure:2415: gcc -v </dev/null >&5
+Using built-in specs.
+COLLECT_GCC=gcc
+COLLECT_LTO_WRAPPER=/pbs/software/x86_64_el7/gcc/5.5.0/libexec/gcc/x86_64-unknown-linux-gnu/5.5.0/lto-wrapper
+Target: x86_64-unknown-linux-gnu
+Configured with: ../configure --prefix=/pbs/software/centos-7-x86_64/gcc/5.5.0 --enable-shared --enable-threads=posix --disable-multilib
+Thread model: posix
+gcc version 5.5.0 (GCC) 
+configure:2418: $? = 0
+configure:2420: gcc -V </dev/null >&5
+gcc: error: unrecognized command line option '-V'
+gcc: fatal error: no input files
+compilation terminated.
+configure:2423: $? = 1
+configure:2446: checking for C compiler default output file name
+configure:2449: gcc    conftest.c  >&5
+configure:2452: $? = 0
+configure:2498: result: a.out
+configure:2503: checking whether the C compiler works
+configure:2509: ./a.out
+configure:2512: $? = 0
+configure:2529: result: yes
+configure:2536: checking whether we are cross compiling
+configure:2538: result: no
+configure:2541: checking for suffix of executables
+configure:2543: gcc -o conftest    conftest.c  >&5
+configure:2546: $? = 0
+configure:2571: result: 
+configure:2577: checking for suffix of object files
+configure:2598: gcc -c   conftest.c >&5
+configure:2601: $? = 0
+configure:2623: result: o
+configure:2627: checking whether we are using the GNU C compiler
+configure:2651: gcc -c   conftest.c >&5
+configure:2657: $? = 0
+configure:2661: test -z 
+			 || test ! -s conftest.err
+configure:2664: $? = 0
+configure:2667: test -s conftest.o
+configure:2670: $? = 0
+configure:2683: result: yes
+configure:2689: checking whether gcc accepts -g
+configure:2710: gcc -c -g  conftest.c >&5
+configure:2716: $? = 0
+configure:2720: test -z 
+			 || test ! -s conftest.err
+configure:2723: $? = 0
+configure:2726: test -s conftest.o
+configure:2729: $? = 0
+configure:2740: result: yes
+configure:2757: checking for gcc option to accept ANSI C
+configure:2827: gcc  -c -g -O2  conftest.c >&5
+configure:2833: $? = 0
+configure:2837: test -z 
+			 || test ! -s conftest.err
+configure:2840: $? = 0
+configure:2843: test -s conftest.o
+configure:2846: $? = 0
+configure:2864: result: none needed
+configure:2882: gcc -c -g -O2  conftest.c >&5
+conftest.c:2:3: error: unknown type name 'choke'
+   choke me
+   ^
+conftest.c:2:3: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input
+configure:2888: $? = 1
+configure: failed program was:
+| #ifndef __cplusplus
+|   choke me
+| #endif
+configure:3023: checking dependency style of gcc
+configure:3113: result: gcc3
+configure:3181: checking for g95
+configure:3210: result: no
+configure:3181: checking for lf95
+configure:3210: result: no
+configure:3181: checking for f95
+configure:3197: found /usr/bin/f95
+configure:3207: result: f95
+configure:3222: checking for Fortran compiler version
+configure:3225: f95 --version </dev/null >&5
+GNU Fortran (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
+Copyright (C) 2015 Free Software Foundation, Inc.
+
+GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
+You may redistribute copies of GNU Fortran
+under the terms of the GNU General Public License.
+For more information about these matters, see the file named COPYING
+
+configure:3228: $? = 0
+configure:3230: f95 -v </dev/null >&5
+Using built-in specs.
+COLLECT_GCC=f95
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
+Thread model: posix
+gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
+configure:3233: $? = 0
+configure:3235: f95 -V </dev/null >&5
+f95: error: unrecognized command line option '-V'
+f95: fatal error: no input files
+compilation terminated.
+configure:3238: $? = 4
+configure:3251: f95 -c   conftest.f >&5
+configure:3257: $? = 0
+configure:3259: checking for suffix of module files
+configure:3290: result: mod
+configure:3302: checking whether we are using the GNU Fortran compiler
+configure:3316: f95 -c   conftest.F >&5
+configure:3322: $? = 0
+configure:3326: test -z 
+			 || test ! -s conftest.err
+configure:3329: $? = 0
+configure:3332: test -s conftest.o
+configure:3335: $? = 0
+configure:3348: result: yes
+configure:3354: checking whether f95 accepts -g
+configure:3366: f95 -c -g  conftest.f >&5
+configure:3372: $? = 0
+configure:3376: test -z 
+			 || test ! -s conftest.err
+configure:3379: $? = 0
+configure:3382: test -s conftest.o
+configure:3385: $? = 0
+configure:3397: result: yes
+configure:3489: Starlink tree located at /home/vmwareshare/rhel30linux_i386/build/build-root
+configure:3563: checking whether we need any library fixups
+configure:3690: result: no
+configure:3801: checking for pax
+configure:3819: found /usr/bin/pax
+configure:3831: result: /usr/bin/pax
+configure:3842: checking for gnutar
+configure:3875: result: no
+configure:3842: checking for tar
+configure:3860: found /usr/bin/tar
+configure:3872: result: /usr/bin/tar
+configure:3986: checking for Fortran compiler version
+configure:3989: f95 --version </dev/null >&5
+GNU Fortran (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
+Copyright (C) 2015 Free Software Foundation, Inc.
+
+GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
+You may redistribute copies of GNU Fortran
+under the terms of the GNU General Public License.
+For more information about these matters, see the file named COPYING
+
+configure:3992: $? = 0
+configure:3994: f95 -v </dev/null >&5
+Using built-in specs.
+COLLECT_GCC=f95
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
+Thread model: posix
+gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
+configure:3997: $? = 0
+configure:3999: f95 -V </dev/null >&5
+f95: error: unrecognized command line option '-V'
+f95: fatal error: no input files
+compilation terminated.
+configure:4002: $? = 4
+configure:4015: f95 -c -g -O2  conftest.f >&5
+configure:4021: $? = 0
+configure:4023: checking for suffix of module files
+configure:4054: result: mod
+configure:4066: checking whether we are using the GNU Fortran compiler
+configure:4112: result: yes
+configure:4118: checking whether f95 accepts -g
+configure:4161: result: yes
+configure:4190: checking how to run the C preprocessor
+configure:4225: gcc -E  conftest.c
+configure:4231: $? = 0
+configure:4263: gcc -E  conftest.c
+conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
+compilation terminated.
+configure:4269: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:4308: result: gcc -E
+configure:4332: gcc -E  conftest.c
+configure:4338: $? = 0
+configure:4370: gcc -E  conftest.c
+conftest.c:11:28: fatal error: ac_nonexistent.h: No such file or directory
+compilation terminated.
+configure:4376: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:4472: checking for Fortran flag to compile preprocessable .F files
+configure:4500: f95 -c -g -O2  conftest.F >&5
+configure:4506: $? = 0
+configure:4510: test -z 
+			 || test ! -s conftest.err
+configure:4513: $? = 0
+configure:4516: test -s conftest.o
+configure:4519: $? = 0
+configure:4591: result: none
+configure:4784: checking for fixed form Fortran preprocessor features
+configure:4798: f95 -o conftest     conftest.F  >&5
+configure:4804: $? = 0
+configure:4808: test -z 
+			 || test ! -s conftest.err
+configure:4811: $? = 0
+configure:4814: test -s conftest
+configure:4817: $? = 0
+configure:4846: f95 -o conftest  -DOK    conftest.F  >&5
+configure:4852: $? = 0
+configure:4856: test -z 
+			 || test ! -s conftest.err
+configure:4859: $? = 0
+configure:4862: test -s conftest
+configure:4865: $? = 0
+configure:4948: f95 -o conftest  -Iconftst    conftest.F  >&5
+configure:4954: $? = 0
+configure:4958: test -z 
+			 || test ! -s conftest.err
+configure:4961: $? = 0
+configure:4964: test -s conftest
+configure:4967: $? = 0
+configure:4995: f95 -o conftest     conftest.F  >&5
+configure:5001: $? = 0
+configure:5005: test -z 
+			 || test ! -s conftest.err
+configure:5008: $? = 0
+configure:5011: test -s conftest
+configure:5014: $? = 0
+configure:5113: result: done.
+configure:5117: checking whether f95 compiles programs with cpp directives
+configure:5124: result: yes
+configure:5128: checking whether f95 accepts -D
+configure:5135: result: yes
+configure:5140: checking whether f95 accepts -I
+configure:5147: result: yes
+configure:5152: checking whether f95 substitutes macros in Fortran code
+configure:5159: result: yes
+configure:5187: checking whether f95 fulfills requested features
+configure:5194: result: yes
+configure:5215: checking how to preprocess Fortran files
+configure:5397: result: f95 -E
+configure:5399: checking how to redirect f95 -E output
+configure:5406: result:  > conftest.f
+configure:5411: checking whether f95 -E needs the -P option
+configure:5461: f95 -E  conftest.F >conftest.tmp && mv conftest.tmp conftest.f
+configure:5464: $? = 0
+configure:5466: f95 -o conftest -g -O2   conftest.f  >&5
+configure:5469: $? = 0
+configure:5499: result: 
+configure:5887: checking whether f95 -E accepts -D
+configure:5894: result: yes
+configure:5899: checking whether f95 -E accepts -I
+configure:5906: result: yes
+configure:5911: checking whether f95 -E substitutes macros in Fortran code
+configure:5918: result: yes
+configure:6017: checking whether f95 -E fulfills requested features
+configure:6024: result: yes
+configure:6031: checking how to build from preprocessed Fortran sources
+configure:6081: result: direct
+configure:6246: checking host system type
+configure:6260: result: x86_64-unknown-linux-gnu
+configure:6268: checking for a sed that does not truncate output
+configure:6322: result: /usr/bin/sed
+configure:6325: checking for egrep
+configure:6335: result: grep -E
+configure:6351: checking for ld used by gcc
+configure:6418: result: /usr/bin/ld
+configure:6427: checking if the linker (/usr/bin/ld) is GNU ld
+configure:6442: result: yes
+configure:6447: checking for /usr/bin/ld option to reload object files
+configure:6454: result: -r
+configure:6472: checking for BSD-compatible nm
+configure:6514: result: /usr/bin/nm -B
+configure:6518: checking whether ln -s works
+configure:6522: result: yes
+configure:6529: checking how to recognise dependent libraries
+configure:6701: result: pass_all
+configure:6786: gcc -c -g -O2  conftest.c >&5
+configure:6789: $? = 0
+configure:6911: checking for ANSI C header files
+configure:6936: gcc -c -g -O2  conftest.c >&5
+configure:6942: $? = 0
+configure:6946: test -z 
+			 || test ! -s conftest.err
+configure:6949: $? = 0
+configure:6952: test -s conftest.o
+configure:6955: $? = 0
+configure:7044: gcc -o conftest -g -O2   conftest.c  >&5
+conftest.c: In function 'main':
+conftest.c:28:7: warning: implicit declaration of function 'exit' [-Wimplicit-function-declaration]
+       exit(2);
+       ^
+conftest.c:28:7: warning: incompatible implicit declaration of built-in function 'exit'
+conftest.c:28:7: note: include '<stdlib.h>' or provide a declaration of 'exit'
+conftest.c:29:3: warning: incompatible implicit declaration of built-in function 'exit'
+   exit (0);
+   ^
+conftest.c:29:3: note: include '<stdlib.h>' or provide a declaration of 'exit'
+configure:7047: $? = 0
+configure:7049: ./conftest
+configure:7052: $? = 0
+configure:7067: result: yes
+configure:7091: checking for sys/types.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for sys/stat.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for stdlib.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for string.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for memory.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for strings.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for inttypes.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for stdint.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7091: checking for unistd.h
+configure:7107: gcc -c -g -O2  conftest.c >&5
+configure:7113: $? = 0
+configure:7117: test -z 
+			 || test ! -s conftest.err
+configure:7120: $? = 0
+configure:7123: test -s conftest.o
+configure:7126: $? = 0
+configure:7137: result: yes
+configure:7163: checking dlfcn.h usability
+configure:7175: gcc -c -g -O2  conftest.c >&5
+configure:7181: $? = 0
+configure:7185: test -z 
+			 || test ! -s conftest.err
+configure:7188: $? = 0
+configure:7191: test -s conftest.o
+configure:7194: $? = 0
+configure:7204: result: yes
+configure:7208: checking dlfcn.h presence
+configure:7218: gcc -E  conftest.c
+configure:7224: $? = 0
+configure:7244: result: yes
+configure:7279: checking for dlfcn.h
+configure:7286: result: yes
+configure:7351: checking for g++
+configure:7367: found /pbs/software/x86_64_el7/gcc/5.5.0/bin/g++
+configure:7377: result: g++
+configure:7393: checking for C++ compiler version
+configure:7396: g++ --version </dev/null >&5
+g++ (GCC) 5.5.0
+Copyright (C) 2015 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:7399: $? = 0
+configure:7401: g++ -v </dev/null >&5
+Using built-in specs.
+COLLECT_GCC=g++
+COLLECT_LTO_WRAPPER=/pbs/software/x86_64_el7/gcc/5.5.0/libexec/gcc/x86_64-unknown-linux-gnu/5.5.0/lto-wrapper
+Target: x86_64-unknown-linux-gnu
+Configured with: ../configure --prefix=/pbs/software/centos-7-x86_64/gcc/5.5.0 --enable-shared --enable-threads=posix --disable-multilib
+Thread model: posix
+gcc version 5.5.0 (GCC) 
+configure:7404: $? = 0
+configure:7406: g++ -V </dev/null >&5
+g++: error: unrecognized command line option '-V'
+g++: fatal error: no input files
+compilation terminated.
+configure:7409: $? = 1
+configure:7412: checking whether we are using the GNU C++ compiler
+configure:7436: g++ -c   conftest.cc >&5
+configure:7442: $? = 0
+configure:7446: test -z 
+			 || test ! -s conftest.err
+configure:7449: $? = 0
+configure:7452: test -s conftest.o
+configure:7455: $? = 0
+configure:7468: result: yes
+configure:7474: checking whether g++ accepts -g
+configure:7495: g++ -c -g  conftest.cc >&5
+configure:7501: $? = 0
+configure:7505: test -z 
+			 || test ! -s conftest.err
+configure:7508: $? = 0
+configure:7511: test -s conftest.o
+configure:7514: $? = 0
+configure:7525: result: yes
+configure:7567: g++ -c -g -O2  conftest.cc >&5
+configure:7573: $? = 0
+configure:7577: test -z 
+			 || test ! -s conftest.err
+configure:7580: $? = 0
+configure:7583: test -s conftest.o
+configure:7586: $? = 0
+configure:7612: g++ -c -g -O2  conftest.cc >&5
+conftest.cc: In function 'int main()':
+conftest.cc:26:9: error: 'exit' was not declared in this scope
+ exit (42);
+         ^
+configure:7618: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| /* end confdefs.h.  */
+| 
+| int
+| main ()
+| {
+| exit (42);
+|   ;
+|   return 0;
+| }
+configure:7567: g++ -c -g -O2  conftest.cc >&5
+conftest.cc:22:40: error: 'void std::exit(int)' should have been declared inside 'std'
+ extern "C" void std::exit (int) throw (); using std::exit;
+                                        ^
+configure:7573: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| /* end confdefs.h.  */
+| extern "C" void std::exit (int) throw (); using std::exit;
+| #include <stdlib.h>
+| int
+| main ()
+| {
+| exit (42);
+|   ;
+|   return 0;
+| }
+configure:7567: g++ -c -g -O2  conftest.cc >&5
+conftest.cc:22:31: error: 'void std::exit(int)' should have been declared inside 'std'
+ extern "C" void std::exit (int); using std::exit;
+                               ^
+In file included from conftest.cc:23:0:
+/usr/include/stdlib.h:542:70: error: declaration of 'void std::exit(int) throw ()' has a different exception specifier
+ extern void exit (int __status) __THROW __attribute__ ((__noreturn__));
+                                                                      ^
+conftest.cc:22:17: error: from previous declaration 'void std::exit(int)'
+ extern "C" void std::exit (int); using std::exit;
+                 ^
+configure:7573: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| /* end confdefs.h.  */
+| extern "C" void std::exit (int); using std::exit;
+| #include <stdlib.h>
+| int
+| main ()
+| {
+| exit (42);
+|   ;
+|   return 0;
+| }
+configure:7567: g++ -c -g -O2  conftest.cc >&5
+configure:7573: $? = 0
+configure:7577: test -z 
+			 || test ! -s conftest.err
+configure:7580: $? = 0
+configure:7583: test -s conftest.o
+configure:7586: $? = 0
+configure:7612: g++ -c -g -O2  conftest.cc >&5
+configure:7618: $? = 0
+configure:7622: test -z 
+			 || test ! -s conftest.err
+configure:7625: $? = 0
+configure:7628: test -s conftest.o
+configure:7631: $? = 0
+configure:7656: checking dependency style of g++
+configure:7746: result: gcc3
+configure:7773: checking how to run the C++ preprocessor
+configure:7804: g++ -E  conftest.cc
+configure:7810: $? = 0
+configure:7842: g++ -E  conftest.cc
+conftest.cc:25:28: fatal error: ac_nonexistent.h: No such file or directory
+compilation terminated.
+configure:7848: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:7887: result: g++ -E
+configure:7911: g++ -E  conftest.cc
+configure:7917: $? = 0
+configure:7949: g++ -E  conftest.cc
+conftest.cc:25:28: fatal error: ac_nonexistent.h: No such file or directory
+compilation terminated.
+configure:7955: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:8052: checking for g77
+configure:8081: result: no
+configure:8052: checking for f77
+configure:8081: result: no
+configure:8052: checking for xlf
+configure:8081: result: no
+configure:8052: checking for frt
+configure:8081: result: no
+configure:8052: checking for pgf77
+configure:8081: result: no
+configure:8052: checking for fort77
+configure:8081: result: no
+configure:8052: checking for fl32
+configure:8081: result: no
+configure:8052: checking for af77
+configure:8081: result: no
+configure:8052: checking for f77
+configure:8081: result: no
+configure:8052: checking for f90
+configure:8081: result: no
+configure:8052: checking for xlf90
+configure:8081: result: no
+configure:8052: checking for pgf90
+configure:8081: result: no
+configure:8052: checking for epcf90
+configure:8081: result: no
+configure:8052: checking for g95
+configure:8081: result: no
+configure:8052: checking for lf95
+configure:8081: result: no
+configure:8052: checking for f95
+configure:8068: found /usr/bin/f95
+configure:8078: result: f95
+configure:8093: checking for Fortran 77 compiler version
+configure:8096: f95 --version </dev/null >&5
+GNU Fortran (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
+Copyright (C) 2015 Free Software Foundation, Inc.
+
+GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
+You may redistribute copies of GNU Fortran
+under the terms of the GNU General Public License.
+For more information about these matters, see the file named COPYING
+
+configure:8099: $? = 0
+configure:8101: f95 -v </dev/null >&5
+Using built-in specs.
+COLLECT_GCC=f95
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
+Thread model: posix
+gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
+configure:8104: $? = 0
+configure:8106: f95 -V </dev/null >&5
+f95: error: unrecognized command line option '-V'
+f95: fatal error: no input files
+compilation terminated.
+configure:8109: $? = 4
+configure:8122: f95 -c  conftest.f >&5
+configure:8128: $? = 0
+configure:8130: checking for suffix of module files
+configure:8161: result: mod
+configure:8173: checking whether we are using the GNU Fortran 77 compiler
+configure:8187: f95 -c  conftest.F >&5
+configure:8193: $? = 0
+configure:8197: test -z 
+			 || test ! -s conftest.err
+configure:8200: $? = 0
+configure:8203: test -s conftest.o
+configure:8206: $? = 0
+configure:8219: result: yes
+configure:8225: checking whether f95 accepts -g
+configure:8237: f95 -c -g conftest.f >&5
+configure:8243: $? = 0
+configure:8247: test -z 
+			 || test ! -s conftest.err
+configure:8250: $? = 0
+configure:8253: test -s conftest.o
+configure:8256: $? = 0
+configure:8268: result: yes
+configure:8298: checking the maximum length of command line arguments
+configure:8390: result: 32768
+configure:8401: checking command to parse /usr/bin/nm -B output from gcc object
+configure:8497: gcc -c -g -O2  conftest.c >&5
+configure:8500: $? = 0
+configure:8504: /usr/bin/nm -B conftest.o \| sed -n -e 's/^.*[ 	]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm
+configure:8507: $? = 0
+configure:8559: gcc -o conftest -g -O2   conftest.c conftstm.o >&5
+configure:8562: $? = 0
+configure:8600: result: ok
+configure:8604: checking for objdir
+configure:8619: result: .libs
+configure:8709: checking for ar
+configure:8725: found /usr/bin/ar
+configure:8736: result: ar
+configure:8789: checking for ranlib
+configure:8805: found /usr/bin/ranlib
+configure:8816: result: ranlib
+configure:8869: checking for strip
+configure:8885: found /usr/bin/strip
+configure:8896: result: strip
+configure:9183: checking if gcc static flag  works
+configure:9211: result: yes
+configure:9229: checking if gcc supports -fno-rtti -fno-exceptions
+configure:9247: gcc -c -g -O2  -fno-rtti -fno-exceptions conftest.c >&5
+cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C
+configure:9251: $? = 0
+configure:9264: result: no
+configure:9279: checking for gcc option to produce PIC
+configure:9483: result: -fPIC
+configure:9491: checking if gcc PIC flag -fPIC works
+configure:9509: gcc -c -g -O2  -fPIC -DPIC conftest.c >&5
+configure:9513: $? = 0
+configure:9526: result: yes
+configure:9550: checking if gcc supports -c -o file.o
+configure:9571: gcc -c -g -O2  -o out/conftest2.o conftest.c >&5
+configure:9575: $? = 0
+configure:9597: result: yes
+configure:9623: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
+configure:10524: result: yes
+configure:10550: checking whether -lc should be explicitly linked in
+configure:10555: gcc -c -g -O2  conftest.c >&5
+configure:10558: $? = 0
+configure:10572: gcc -shared conftest.o  -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| grep  -lc  \>/dev/null 2\>\&1
+configure:10575: $? = 0
+configure:10587: result: no
+configure:10595: checking dynamic linker characteristics
+configure:11141: result: GNU/Linux ld.so
+configure:11145: checking how to hardcode library paths into programs
+configure:11170: result: immediate
+configure:11184: checking whether stripping libraries is possible
+configure:11189: result: yes
+configure:12019: checking if libtool supports shared libraries
+configure:12021: result: yes
+configure:12024: checking whether to build shared libraries
+configure:12045: result: yes
+configure:12048: checking whether to build static libraries
+configure:12052: result: yes
+configure:12144: creating libtool
+configure:12722: checking for ld used by g++
+configure:12789: result: /usr/bin/ld -m elf_x86_64
+configure:12798: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld
+configure:12813: result: yes
+configure:12864: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
+configure:13751: result: yes
+configure:13769: g++ -c -g -O2  conftest.cc >&5
+configure:13772: $? = 0
+configure:13868: checking for g++ option to produce PIC
+configure:14136: result: -fPIC
+configure:14144: checking if g++ PIC flag -fPIC works
+configure:14162: g++ -c -g -O2  -fPIC -DPIC conftest.cc >&5
+configure:14166: $? = 0
+configure:14179: result: yes
+configure:14203: checking if g++ supports -c -o file.o
+configure:14224: g++ -c -g -O2  -o out/conftest2.o conftest.cc >&5
+configure:14228: $? = 0
+configure:14250: result: yes
+configure:14276: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
+configure:14301: result: yes
+configure:14372: checking dynamic linker characteristics
+configure:14918: result: GNU/Linux ld.so
+configure:14922: checking how to hardcode library paths into programs
+configure:14947: result: immediate
+configure:14961: checking whether stripping libraries is possible
+configure:14966: result: yes
+configure:16302: checking if libtool supports shared libraries
+configure:16304: result: yes
+configure:16307: checking whether to build shared libraries
+configure:16327: result: yes
+configure:16330: checking whether to build static libraries
+configure:16334: result: yes
+configure:16346: checking for f95 option to produce PIC
+configure:16550: result: -fPIC
+configure:16558: checking if f95 PIC flag -fPIC works
+configure:16576: f95 -c -g -O2 -fPIC conftest.f >&5
+configure:16580: $? = 0
+configure:16593: result: yes
+configure:16617: checking if f95 supports -c -o file.o
+configure:16638: f95 -c -g -O2 -o out/conftest2.o conftest.f >&5
+configure:16642: $? = 0
+configure:16664: result: yes
+configure:16690: checking whether the f95 linker (/usr/bin/ld -m elf_x86_64) supports shared libraries
+configure:17571: result: yes
+configure:17642: checking dynamic linker characteristics
+configure:18188: result: GNU/Linux ld.so
+configure:18192: checking how to hardcode library paths into programs
+configure:18217: result: immediate
+configure:18231: checking whether stripping libraries is possible
+configure:18236: result: yes
+configure:22498: checking platform-specific source for file(s) random.F gresid.F wait.f
+configure:22528: result: using default
+configure:22550: checking for rand
+configure:22607: gcc -o conftest -g -O2   conftest.c  >&5
+configure:22613: $? = 0
+configure:22617: test -z 
+			 || test ! -s conftest.err
+configure:22620: $? = 0
+configure:22623: test -s conftest
+configure:22626: $? = 0
+configure:22638: result: yes
+configure:22550: checking for random
+configure:22607: gcc -o conftest -g -O2   conftest.c  >&5
+configure:22613: $? = 0
+configure:22617: test -z 
+			 || test ! -s conftest.err
+configure:22620: $? = 0
+configure:22623: test -s conftest
+configure:22626: $? = 0
+configure:22638: result: yes
+configure:22666: checking how to make Fortran and C play nicely
+configure:22737: result: 
+configure:22754: checking how to get verbose linking output from f95
+configure:22765: f95 -c -g -O2  conftest.f >&5
+configure:22771: $? = 0
+configure:22775: test -z 
+			 || test ! -s conftest.err
+configure:22778: $? = 0
+configure:22781: test -s conftest.o
+configure:22784: $? = 0
+configure:22801: f95 -o conftest -g -O2 -v   conftest.f  >&5
+Using built-in specs.
+COLLECT_GCC=f95
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
+Thread model: posix
+gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/f951 conftest.f -ffixed-form -quiet -dumpbase conftest.f -mtune=generic -march=x86-64 -auxbase conftest -g -O2 -version -fintrinsic-modules-path /usr/lib/gcc/x86_64-redhat-linux/4.8.5/finclude -o /scratch/users/k/kulikovs/cch15JNH.s
+GNU Fortran (GCC) version 4.8.5 20150623 (Red Hat 4.8.5-36) (x86_64-redhat-linux)
+	compiled by GNU C version 4.8.5 20150623 (Red Hat 4.8.5-36), GMP version 6.0.0, MPFR version 3.1.1, MPC version 1.0.1
+GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
+GNU Fortran (GCC) version 4.8.5 20150623 (Red Hat 4.8.5-36) (x86_64-redhat-linux)
+	compiled by GNU C version 4.8.5 20150623 (Red Hat 4.8.5-36), GMP version 6.0.0, MPFR version 3.1.1, MPC version 1.0.1
+GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ as -v --64 -o /scratch/users/k/kulikovs/ccLeRNYq.o /scratch/users/k/kulikovs/cch15JNH.s
+GNU assembler version 2.27 (x86_64-redhat-linux) using BFD version version 2.27-34.base.el7
+Reading specs from /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libgfortran.spec
+rename spec lib to liborig
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/collect2 --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o conftest /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. /scratch/users/k/kulikovs/ccLeRNYq.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o
+configure:22856: result: -v
+configure:22858: checking for Fortran libraries of f95
+configure:22879: f95 -o conftest -g -O2 -v   conftest.f  >&5
+Using built-in specs.
+COLLECT_GCC=f95
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
+Thread model: posix
+gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/f951 conftest.f -ffixed-form -quiet -dumpbase conftest.f -mtune=generic -march=x86-64 -auxbase conftest -g -O2 -version -fintrinsic-modules-path /usr/lib/gcc/x86_64-redhat-linux/4.8.5/finclude -o /scratch/users/k/kulikovs/cc6r5pzT.s
+GNU Fortran (GCC) version 4.8.5 20150623 (Red Hat 4.8.5-36) (x86_64-redhat-linux)
+	compiled by GNU C version 4.8.5 20150623 (Red Hat 4.8.5-36), GMP version 6.0.0, MPFR version 3.1.1, MPC version 1.0.1
+GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
+GNU Fortran (GCC) version 4.8.5 20150623 (Red Hat 4.8.5-36) (x86_64-redhat-linux)
+	compiled by GNU C version 4.8.5 20150623 (Red Hat 4.8.5-36), GMP version 6.0.0, MPFR version 3.1.1, MPC version 1.0.1
+GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ as -v --64 -o /scratch/users/k/kulikovs/cczBuPgD.o /scratch/users/k/kulikovs/cc6r5pzT.s
+GNU assembler version 2.27 (x86_64-redhat-linux) using BFD version version 2.27-34.base.el7
+Reading specs from /usr/lib/gcc/x86_64-redhat-linux/4.8.5/libgfortran.spec
+rename spec lib to liborig
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/
+LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.8.5/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../:/lib/:/usr/lib/
+COLLECT_GCC_OPTIONS='-o' 'conftest' '-g' '-O2' '-v' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
+ /usr/libexec/gcc/x86_64-redhat-linux/4.8.5/collect2 --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o conftest /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbegin.o -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. /scratch/users/k/kulikovs/cczBuPgD.o -lgfortran -lm -lgcc_s -lgcc -lquadmath -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtend.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o
+configure:23040: result:  -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath
+configure:23055: checking for alternate main to link with Fortran libraries
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main MAIN__
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main MAIN_
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main __main
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main MAIN
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main _MAIN
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main __MAIN
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main main_
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main main__
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23092: gcc -o conftest -g -O2   conftest.c   -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath >&5
+/lib/../lib64/crt1.o: In function `_start':
+(.text+0x20): undefined reference to `main'
+collect2: error: ld returned 1 exit status
+configure:23098: $? = 1
+configure: failed program was:
+| /* confdefs.h.  */
+| 
+| #define PACKAGE_NAME "sla"
+| #define PACKAGE_TARNAME "sla"
+| #define PACKAGE_VERSION "2.5-4"
+| #define PACKAGE_STRING "sla 2.5-4"
+| #define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+| #define PACKAGE "sla"
+| #define VERSION "2.5-4"
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_DLFCN_H 1
+| #ifdef __cplusplus
+| extern "C" void exit (int) throw ();
+| #endif
+| #define HAVE_RAND 1
+| #define HAVE_RANDOM 1
+| /* end confdefs.h.  */
+| #ifdef FC_DUMMY_MAIN_EQ_F77
+| #  undef F77_DUMMY_MAIN
+| #  undef FC_DUMMY_MAIN
+| #else
+| #  undef FC_DUMMY_MAIN
+| #endif
+| #define main _main
+| int
+| main ()
+| {
+| 
+|   ;
+|   return 0;
+| }
+configure:23131: result: main
+configure:23156: checking how to get verbose linking output from f95
+configure:23258: result: -v
+configure:23260: checking for Fortran libraries of f95
+configure:23442: result:  -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath
+configure:23461: checking if f95 is in strict f2c compatible mode
+configure:23541: result: no
+configure:23572: checking for star2html
+configure:23604: result: star2html
+configure:23749: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by sla config.status 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on cca008
+
+config.status:762: creating Makefile
+config.status:762: creating component.xml
+config.status:762: creating vers.f
+config.status:762: creating veri.f
+config.status:762: creating f77.h
+config.status:866: creating config.h
+config.status:980: config.h is unchanged
+config.status:1160: executing depfiles commands
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_build=x86_64-unknown-linux-gnu
+ac_cv_build_alias=x86_64-unknown-linux-gnu
+ac_cv_c_compiler_gnu=yes
+ac_cv_cxx_compiler_gnu=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_CXXCPP_set=
+ac_cv_env_CXXCPP_value=
+ac_cv_env_CXXFLAGS_set=
+ac_cv_env_CXXFLAGS_value=
+ac_cv_env_CXX_set=
+ac_cv_env_CXX_value=
+ac_cv_env_F77_set=
+ac_cv_env_F77_value=
+ac_cv_env_FCFLAGS_set=
+ac_cv_env_FCFLAGS_value=
+ac_cv_env_FC_set=
+ac_cv_env_FC_value=
+ac_cv_env_FFLAGS_set=
+ac_cv_env_FFLAGS_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_STAR2HTML_set=
+ac_cv_env_STAR2HTML_value=
+ac_cv_env_STARLINK_set=
+ac_cv_env_STARLINK_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_exeext=
+ac_cv_f77_compiler_gnu=yes
+ac_cv_fc_compiler_gnu=yes
+ac_cv_fc_libs=' -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath'
+ac_cv_fc_main=main
+ac_cv_fortran_main=main
+ac_cv_fpp_build_rule=direct
+ac_cv_fpp_out=' > conftest.f'
+ac_cv_fpp_srcext_F=none
+ac_cv_func_rand=yes
+ac_cv_func_random=yes
+ac_cv_header_dlfcn_h=yes
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_host=x86_64-unknown-linux-gnu
+ac_cv_host_alias=x86_64-unknown-linux-gnu
+ac_cv_objext=o
+ac_cv_path_PAX=/usr/bin/pax
+ac_cv_path_STAR2HTML=star2html
+ac_cv_path_TAR=/usr/bin/tar
+ac_cv_path_install='/usr/bin/install -c'
+ac_cv_prog_AWK=gawk
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_CXXCPP='g++ -E'
+ac_cv_prog_ac_ct_AR=ar
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_ac_ct_CXX=g++
+ac_cv_prog_ac_ct_F77=f95
+ac_cv_prog_ac_ct_FC=f95
+ac_cv_prog_ac_ct_RANLIB=ranlib
+ac_cv_prog_ac_ct_STRIP=strip
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cc_stdc=
+ac_cv_prog_cxx_g=yes
+ac_cv_prog_egrep='grep -E'
+ac_cv_prog_f77_g=yes
+ac_cv_prog_fc_cpp=yes
+ac_cv_prog_fc_cpp_d=yes
+ac_cv_prog_fc_cpp_i=yes
+ac_cv_prog_fc_cpp_ok=yes
+ac_cv_prog_fc_cpp_subs=yes
+ac_cv_prog_fc_g=yes
+ac_cv_prog_fc_v=-v
+ac_cv_prog_fpp='f95 -E'
+ac_cv_prog_fpp_d=yes
+ac_cv_prog_fpp_i=yes
+ac_cv_prog_fpp_ok=yes
+ac_cv_prog_fpp_p=
+ac_cv_prog_fpp_subs=yes
+ac_cv_prog_make_make_set=yes
+am_cv_CC_dependencies_compiler_type=gcc3
+am_cv_CXX_dependencies_compiler_type=gcc3
+lt_cv_deplibs_check_method=pass_all
+lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_ld_reload_flag=-r
+lt_cv_objdir=.libs
+lt_cv_path_LD=/usr/bin/ld
+lt_cv_path_LDCXX='/usr/bin/ld -m elf_x86_64'
+lt_cv_path_NM='/usr/bin/nm -B'
+lt_cv_path_SED=/usr/bin/sed
+lt_cv_prog_compiler_c_o=yes
+lt_cv_prog_compiler_c_o_CXX=yes
+lt_cv_prog_compiler_c_o_F77=yes
+lt_cv_prog_compiler_rtti_exceptions=no
+lt_cv_prog_gnu_ld=yes
+lt_cv_prog_gnu_ldcxx=yes
+lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ 	]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'''
+lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/  {\"\1\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \([^ ]*\) \([^ ]*\)$/  {"\2", (lt_ptr) \&\2},/p'\'''
+lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^. .* \(.*\)$/extern int \1;/p'\'''
+lt_cv_sys_max_cmd_len=32768
+lt_lt_cv_prog_compiler_c_o='"yes"'
+lt_lt_cv_prog_compiler_c_o_CXX='"yes"'
+lt_lt_cv_prog_compiler_c_o_F77='"yes"'
+lt_lt_cv_sys_global_symbol_pipe='"sed -n -e '\''s/^.*[ 	]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ 	][ 	]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'\''"'
+lt_lt_cv_sys_global_symbol_to_c_name_address='"sed -n -e '\''s/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p'\'' -e '\''s/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'\''"'
+lt_lt_cv_sys_global_symbol_to_cdecl='"sed -n -e '\''s/^. .* \\(.*\\)\$/extern int \\1;/p'\''"'
+star_cv_cnf_compatible_symbols=
+star_cv_cnf_f2c_compatible=no
+star_cv_restfp_fixup=no
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+ACLOCAL='${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run aclocal-1.9'
+AMDEPBACKSLASH='\'
+AMDEP_FALSE='#'
+AMDEP_TRUE=''
+AMTAR='${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run tar'
+AR='ar'
+AUTOCONF='${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run autoconf'
+AUTOHEADER='${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run autoheader'
+AUTOMAKE='${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run automake-1.9'
+AWK='gawk'
+CC='gcc'
+CCDEPMODE='depmode=gcc3'
+CFLAGS='-g -O2'
+CPP='gcc -E'
+CPPFLAGS=''
+CXX='g++'
+CXXCPP='g++ -E'
+CXXDEPMODE='depmode=gcc3'
+CXXFLAGS='-g -O2'
+CYGPATH_W='echo'
+C_FC_FCLINK_MAGIC=''
+C_FC_PPFC_FCLINK_MAGIC=''
+DEFS='-DHAVE_CONFIG_H'
+DEPDIR='.deps'
+ECHO='echo'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='grep -E'
+EXEEXT=''
+F77='f95'
+FC='f95'
+FCFLAGS='-g -O2'
+FCLIBS=' -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath'
+FFLAGS='-g -O2'
+FPP='f95 -E'
+FPPFLAGS=' '
+FPPFLAGS_DEF='-D'
+FPPFLAGS_F=''
+FPP_COMPILE_EXT='F'
+FPP_MAKE_FLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)'
+FPP_OUTPUT='>$@'
+FPP_PREPROCESS_EXT='f_in'
+FPP_SRC_EXT='F'
+INSTALL_DATA='${INSTALL} -m 644'
+INSTALL_PROGRAM='${INSTALL}'
+INSTALL_SCRIPT='${INSTALL}'
+INSTALL_STRIP_PROGRAM='${SHELL} $(install_sh) -c -s'
+LATEX2DVI='$$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1"'
+LDFLAGS=''
+LIBOBJS=''
+LIBS=''
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+LN_S='ln -s'
+LTLIBOBJS=''
+MAKEINFO='${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run makeinfo'
+NOPIC_FALSE=''
+NOPIC_TRUE='#'
+OBJEXT='o'
+PACKAGE='sla'
+PACKAGE_BUGREPORT='ussc@star.rl.ac.uk'
+PACKAGE_NAME='sla'
+PACKAGE_STRING='sla 2.5-4'
+PACKAGE_TARNAME='sla'
+PACKAGE_VERSION='2.5-4'
+PACKAGE_VERSION_INTEGER='2005004'
+PACKAGE_VERSION_MAJOR='2'
+PACKAGE_VERSION_MINOR='5'
+PACKAGE_VERSION_RELEASE='4'
+PATH_SEPARATOR=':'
+PAX='/usr/bin/pax'
+PREDIST='#'
+RANLIB='ranlib'
+REAL_FUNCTION_TYPE='float'
+SET_MAKE=''
+SHELL='/bin/sh'
+STAR2HTML='star2html'
+STARLINK='/home/vmwareshare/rhel30linux_i386/build/build-root'
+STAR_CPPFLAGS='-I/home/vmwareshare/rhel30linux_i386/build/build-root/include'
+STAR_DEPENDENCIES_ATTRIBUTES=''
+STAR_DEPENDENCIES_CHILDREN='<sourceset>star2html</sourceset>'
+STAR_DOCUMENTATION=' sun67'
+STAR_FCFLAGS='-I/home/vmwareshare/rhel30linux_i386/build/build-root/include '
+STAR_FFLAGS='-I/home/vmwareshare/rhel30linux_i386/build/build-root/include '
+STAR_LATEX_DOCUMENTATION=' sun67.tex sun67.ps sun67.htx_tar'
+STAR_LDFLAGS='-L/home/vmwareshare/rhel30linux_i386/build/build-root/lib'
+STAR_MANIFEST_DIR='$(prefix)/manifests'
+STRIP='strip'
+TAR='/usr/bin/tar'
+VERSION='2.5-4'
+ac_ct_AR='ar'
+ac_ct_CC='gcc'
+ac_ct_CXX='g++'
+ac_ct_F77='f95'
+ac_ct_FC='f95'
+ac_ct_RANLIB='ranlib'
+ac_ct_STRIP='strip'
+am__fastdepCC_FALSE='#'
+am__fastdepCC_TRUE=''
+am__fastdepCXX_FALSE='#'
+am__fastdepCXX_TRUE=''
+am__include='include'
+am__leading_dot='.'
+am__quote=''
+am__tar='${AMTAR} chof - "$$tardir"'
+am__untar='${AMTAR} xf -'
+bindir='${exec_prefix}/bin'
+build='x86_64-unknown-linux-gnu'
+build_alias=''
+build_cpu='x86_64'
+build_os='linux-gnu'
+build_vendor='unknown'
+datadir='${prefix}/share'
+exec_prefix='${prefix}'
+host='x86_64-unknown-linux-gnu'
+host_alias=''
+host_cpu='x86_64'
+host_os='linux-gnu'
+host_vendor='unknown'
+includedir='${prefix}/include'
+infodir='${prefix}/info'
+install_sh='/sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/install-sh'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+libsla_la_version_info='7:0:0'
+localstatedir='${prefix}/var'
+mandir='${prefix}/man'
+mkdir_p='mkdir -p --'
+oldincludedir='/usr/include'
+prefix='/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4'
+program_transform_name='s,x,x,'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+stardocsdir='${prefix}/docs'
+staretcdir='${prefix}/etc'
+starexamplesdir='${prefix}/examples'
+starfacsdir='${prefix}/help'
+starhelpdir='${prefix}/help'
+starnewsdir='${prefix}/news'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+#define FC_MAIN main
+#define HAVE_DLFCN_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_RAND 1
+#define HAVE_RANDOM 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_UNISTD_H 1
+#define PACKAGE "sla"
+#define PACKAGE_BUGREPORT "ussc@star.rl.ac.uk"
+#define PACKAGE_NAME "sla"
+#define PACKAGE_STRING "sla 2.5-4"
+#define PACKAGE_TARNAME "sla"
+#define PACKAGE_VERSION "2.5-4"
+#define STDC_HEADERS 1
+#define VERSION "2.5-4"
+#endif
+#ifdef __cplusplus
+extern "C" void exit (int) throw ();
+
+configure: exit 0
diff --git a/config.status b/config.status
new file mode 100755
index 0000000000000000000000000000000000000000..449a975dab71135182bd9e8928eaab2d757056a7
--- /dev/null
+++ b/config.status
@@ -0,0 +1,1251 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=${CONFIG_SHELL-/bin/sh}
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by sla $as_me 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+config_files=" Makefile component.xml vers.f veri.f f77.h"
+config_headers=" config.h"
+config_commands=" depfiles"
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+ac_cs_version="\
+sla config.status 2.5-4
+configured by ./configure, generated by Starlink Autoconf 2.59,
+  with options \"\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=.
+INSTALL="/usr/bin/install -c"
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+  echo "running /bin/sh ./configure "  $ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec /bin/sh ./configure  $ac_configure_extra_args --no-create --no-recursion
+fi
+
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="" ac_aux_dir="."
+
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "component.xml" ) CONFIG_FILES="$CONFIG_FILES component.xml" ;;
+  "vers.f" ) CONFIG_FILES="$CONFIG_FILES vers.f" ;;
+  "veri.f" ) CONFIG_FILES="$CONFIG_FILES veri.f" ;;
+  "f77.h" ) CONFIG_FILES="$CONFIG_FILES f77.h" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
+s,@SHELL@,/bin/sh,;t t
+s,@PATH_SEPARATOR@,:,;t t
+s,@PACKAGE_NAME@,sla,;t t
+s,@PACKAGE_TARNAME@,sla,;t t
+s,@PACKAGE_VERSION@,2.5-4,;t t
+s,@PACKAGE_STRING@,sla 2.5-4,;t t
+s,@PACKAGE_BUGREPORT@,ussc@star.rl.ac.uk,;t t
+s,@exec_prefix@,${prefix},;t t
+s,@prefix@,/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4,;t t
+s,@program_transform_name@,s,x,x,,;t t
+s,@bindir@,${exec_prefix}/bin,;t t
+s,@sbindir@,${exec_prefix}/sbin,;t t
+s,@libexecdir@,${exec_prefix}/libexec,;t t
+s,@datadir@,${prefix}/share,;t t
+s,@sysconfdir@,${prefix}/etc,;t t
+s,@sharedstatedir@,${prefix}/com,;t t
+s,@localstatedir@,${prefix}/var,;t t
+s,@libdir@,${exec_prefix}/lib,;t t
+s,@includedir@,${prefix}/include,;t t
+s,@oldincludedir@,/usr/include,;t t
+s,@infodir@,${prefix}/info,;t t
+s,@mandir@,${prefix}/man,;t t
+s,@build_alias@,,;t t
+s,@host_alias@,,;t t
+s,@target_alias@,,;t t
+s,@DEFS@,-DHAVE_CONFIG_H,;t t
+s,@ECHO_C@,,;t t
+s,@ECHO_N@,-n,;t t
+s,@ECHO_T@,,;t t
+s,@LIBS@,,;t t
+s,@libsla_la_version_info@,7:0:0,;t t
+s,@INSTALL_PROGRAM@,${INSTALL},;t t
+s,@INSTALL_SCRIPT@,${INSTALL},;t t
+s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
+s,@CYGPATH_W@,echo,;t t
+s,@PACKAGE@,sla,;t t
+s,@VERSION@,2.5-4,;t t
+s,@ACLOCAL@,${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run aclocal-1.9,;t t
+s,@AUTOCONF@,${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run autoconf,;t t
+s,@AUTOMAKE@,${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run automake-1.9,;t t
+s,@AUTOHEADER@,${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run autoheader,;t t
+s,@MAKEINFO@,${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run makeinfo,;t t
+s,@install_sh@,/sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/install-sh,;t t
+s,@STRIP@,strip,;t t
+s,@ac_ct_STRIP@,strip,;t t
+s,@INSTALL_STRIP_PROGRAM@,${SHELL} $(install_sh) -c -s,;t t
+s,@mkdir_p@,mkdir -p --,;t t
+s,@AWK@,gawk,;t t
+s,@SET_MAKE@,,;t t
+s,@am__leading_dot@,.,;t t
+s,@AMTAR@,${SHELL} /sps/km3net/users/kulikovs/data_processing/sla-2.5.4-CentOS7/missing --run tar,;t t
+s,@am__tar@,${AMTAR} chof - "$$tardir",;t t
+s,@am__untar@,${AMTAR} xf -,;t t
+s,@STARLINK@,/home/vmwareshare/rhel30linux_i386/build/build-root,;t t
+s,@STAR_CPPFLAGS@,-I/home/vmwareshare/rhel30linux_i386/build/build-root/include,;t t
+s,@STAR_FCFLAGS@,-I/home/vmwareshare/rhel30linux_i386/build/build-root/include ,;t t
+s,@STAR_FFLAGS@,-I/home/vmwareshare/rhel30linux_i386/build/build-root/include ,;t t
+s,@STAR_LDFLAGS@,-L/home/vmwareshare/rhel30linux_i386/build/build-root/lib,;t t
+s,@build@,x86_64-unknown-linux-gnu,;t t
+s,@build_cpu@,x86_64,;t t
+s,@build_vendor@,unknown,;t t
+s,@build_os@,linux-gnu,;t t
+s,@CC@,gcc,;t t
+s,@CFLAGS@,-g -O2,;t t
+s,@LDFLAGS@,,;t t
+s,@CPPFLAGS@,,;t t
+s,@ac_ct_CC@,gcc,;t t
+s,@EXEEXT@,,;t t
+s,@OBJEXT@,o,;t t
+s,@DEPDIR@,.deps,;t t
+s,@am__include@,include,;t t
+s,@am__quote@,,;t t
+s,@AMDEP_TRUE@,,;t t
+s,@AMDEP_FALSE@,#,;t t
+s,@AMDEPBACKSLASH@,\,;t t
+s,@CCDEPMODE@,depmode=gcc3,;t t
+s,@am__fastdepCC_TRUE@,,;t t
+s,@am__fastdepCC_FALSE@,#,;t t
+s,@FC@,f95,;t t
+s,@FCFLAGS@,-g -O2,;t t
+s,@ac_ct_FC@,f95,;t t
+s,@C_FC_FCLINK_MAGIC@,,;t t
+s,@C_FC_PPFC_FCLINK_MAGIC@,,;t t
+s,@stardocsdir@,${prefix}/docs,;t t
+s,@staretcdir@,${prefix}/etc,;t t
+s,@starexamplesdir@,${prefix}/examples,;t t
+s,@starfacsdir@,${prefix}/help,;t t
+s,@starhelpdir@,${prefix}/help,;t t
+s,@starnewsdir@,${prefix}/news,;t t
+s,@STAR_DEPENDENCIES_ATTRIBUTES@,,;t t
+s,@STAR_DEPENDENCIES_CHILDREN@,<sourceset>star2html</sourceset>,;t t
+s,@STAR_DOCUMENTATION@, sun67,;t t
+s,@PACKAGE_VERSION_MAJOR@,2,;t t
+s,@PACKAGE_VERSION_MINOR@,5,;t t
+s,@PACKAGE_VERSION_RELEASE@,4,;t t
+s,@PACKAGE_VERSION_INTEGER@,2005004,;t t
+s,@STAR_MANIFEST_DIR@,$(prefix)/manifests,;t t
+s,@PREDIST@,#,;t t
+s,@PAX@,/usr/bin/pax,;t t
+s,@TAR@,/usr/bin/tar,;t t
+s,@CPP@,gcc -E,;t t
+s,@FPPFLAGS_F@,,;t t
+s,@FPPFLAGS_DEF@,-D,;t t
+s,@FPP@,f95 -E,;t t
+s,@FPPFLAGS@, ,;t t
+s,@FPP_OUTPUT@,>$@,;t t
+s,@FPP_MAKE_FLAGS@,$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS),;t t
+s,@FPP_COMPILE_EXT@,F,;t t
+s,@FPP_PREPROCESS_EXT@,f_in,;t t
+s,@FPP_SRC_EXT@,F,;t t
+s,@host@,x86_64-unknown-linux-gnu,;t t
+s,@host_cpu@,x86_64,;t t
+s,@host_vendor@,unknown,;t t
+s,@host_os@,linux-gnu,;t t
+s,@EGREP@,grep -E,;t t
+s,@LN_S@,ln -s,;t t
+s,@ECHO@,echo,;t t
+s,@AR@,ar,;t t
+s,@ac_ct_AR@,ar,;t t
+s,@RANLIB@,ranlib,;t t
+s,@ac_ct_RANLIB@,ranlib,;t t
+s,@CXX@,g++,;t t
+s,@CXXFLAGS@,-g -O2,;t t
+s,@ac_ct_CXX@,g++,;t t
+s,@CXXDEPMODE@,depmode=gcc3,;t t
+s,@am__fastdepCXX_TRUE@,,;t t
+s,@am__fastdepCXX_FALSE@,#,;t t
+s,@CXXCPP@,g++ -E,;t t
+s,@F77@,f95,;t t
+s,@FFLAGS@,-g -O2,;t t
+s,@ac_ct_F77@,f95,;t t
+s,@LIBTOOL@,$(SHELL) $(top_builddir)/libtool,;t t
+s,@NOPIC_TRUE@,#,;t t
+s,@NOPIC_FALSE@,,;t t
+s,@LIBOBJS@,,;t t
+s,@FCLIBS@, -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.. -lgfortran -lm -lgcc_s -lquadmath,;t t
+s,@REAL_FUNCTION_TYPE@,float,;t t
+s,@STAR2HTML@,star2html,;t t
+s,@LATEX2DVI@,$$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1",;t t
+s,@STAR_LATEX_DOCUMENTATION@, sun67.tex sun67.ps sun67.htx_tar,;t t
+s,@LTLIBOBJS@,,;t t
+CEOF
+
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  sed "/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+  # Handle all the #define templates only if necessary.
+  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then
+  # If there are no defines, we may have an empty if/fi
+  :
+  cat >$tmp/defines.sed <<CEOF
+/^[	 ]*#[	 ]*define/!b
+t clr
+: clr
+${ac_dA}PACKAGE_NAME${ac_dB}PACKAGE_NAME${ac_dC}"sla"${ac_dD}
+${ac_dA}PACKAGE_TARNAME${ac_dB}PACKAGE_TARNAME${ac_dC}"sla"${ac_dD}
+${ac_dA}PACKAGE_VERSION${ac_dB}PACKAGE_VERSION${ac_dC}"2.5-4"${ac_dD}
+${ac_dA}PACKAGE_STRING${ac_dB}PACKAGE_STRING${ac_dC}"sla 2.5-4"${ac_dD}
+${ac_dA}PACKAGE_BUGREPORT${ac_dB}PACKAGE_BUGREPORT${ac_dC}"ussc@star.rl.ac.uk"${ac_dD}
+${ac_dA}PACKAGE${ac_dB}PACKAGE${ac_dC}"sla"${ac_dD}
+${ac_dA}VERSION${ac_dB}VERSION${ac_dC}"2.5-4"${ac_dD}
+${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_TYPES_H${ac_dB}HAVE_SYS_TYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_SYS_STAT_H${ac_dB}HAVE_SYS_STAT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDLIB_H${ac_dB}HAVE_STDLIB_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRING_H${ac_dB}HAVE_STRING_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_MEMORY_H${ac_dB}HAVE_MEMORY_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STRINGS_H${ac_dB}HAVE_STRINGS_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_STDINT_H${ac_dB}HAVE_STDINT_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_DLFCN_H${ac_dB}HAVE_DLFCN_H${ac_dC}1${ac_dD}
+${ac_dA}HAVE_RAND${ac_dB}HAVE_RAND${ac_dC}1${ac_dD}
+${ac_dA}HAVE_RANDOM${ac_dB}HAVE_RANDOM${ac_dC}1${ac_dD}
+${ac_dA}FC_MAIN${ac_dB}FC_MAIN${ac_dC}main${ac_dD}
+CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+
+  fi # grep
+
+  # Handle all the #undef templates
+  cat >$tmp/undefs.sed <<CEOF
+/^[	 ]*#[	 ]*undef/!b
+t clr
+: clr
+${ac_uA}PACKAGE_NAME${ac_uB}PACKAGE_NAME${ac_uC}"sla"${ac_uD}
+${ac_uA}PACKAGE_TARNAME${ac_uB}PACKAGE_TARNAME${ac_uC}"sla"${ac_uD}
+${ac_uA}PACKAGE_VERSION${ac_uB}PACKAGE_VERSION${ac_uC}"2.5-4"${ac_uD}
+${ac_uA}PACKAGE_STRING${ac_uB}PACKAGE_STRING${ac_uC}"sla 2.5-4"${ac_uD}
+${ac_uA}PACKAGE_BUGREPORT${ac_uB}PACKAGE_BUGREPORT${ac_uC}"ussc@star.rl.ac.uk"${ac_uD}
+${ac_uA}PACKAGE${ac_uB}PACKAGE${ac_uC}"sla"${ac_uD}
+${ac_uA}VERSION${ac_uB}VERSION${ac_uC}"2.5-4"${ac_uD}
+${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_TYPES_H${ac_uB}HAVE_SYS_TYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_SYS_STAT_H${ac_uB}HAVE_SYS_STAT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDLIB_H${ac_uB}HAVE_STDLIB_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRING_H${ac_uB}HAVE_STRING_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_MEMORY_H${ac_uB}HAVE_MEMORY_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STRINGS_H${ac_uB}HAVE_STRINGS_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_STDINT_H${ac_uB}HAVE_STDINT_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_DLFCN_H${ac_uB}HAVE_DLFCN_H${ac_uC}1${ac_uD}
+${ac_uA}HAVE_RAND${ac_uB}HAVE_RAND${ac_uC}1${ac_uD}
+${ac_uA}HAVE_RANDOM${ac_uB}HAVE_RANDOM${ac_uC}1${ac_uD}
+${ac_uA}FC_MAIN${ac_uB}FC_MAIN${ac_uC}main${ac_uD}
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X$ac_file : 'X\(//\)[^/]' \| \
+	 X$ac_file : 'X\(//\)$' \| \
+	 X$ac_file : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_dest" : 'X\(//\)[^/]' \| \
+	 X"$ac_dest" : 'X\(//\)$' \| \
+	 X"$ac_dest" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+  esac
+done
+
+{ (exit 0); exit 0; }
diff --git a/config.sub b/config.sub
new file mode 100755
index 0000000000000000000000000000000000000000..519f2cd0066c56a2f4ea646d4c8648561402a80a
--- /dev/null
+++ b/config.sub
@@ -0,0 +1,1570 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-05-12'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| msp430 \
+	| ns16k | ns32k \
+	| openrisc | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| msp430-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* | -skyos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure b/configure
new file mode 100755
index 0000000000000000000000000000000000000000..dc9ca8dceea7ea0f605868b11e38d9758a32882d
--- /dev/null
+++ b/configure
@@ -0,0 +1,25106 @@
+#! /bin/sh
+# From configure.ac Revision: 1.15 .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Starlink Autoconf 2.59 for sla 2.5-4.
+#
+# Report bugs to <ussc@star.rl.ac.uk>.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='sla'
+PACKAGE_TARNAME='sla'
+PACKAGE_VERSION='2.5-4'
+PACKAGE_STRING='sla 2.5-4'
+PACKAGE_BUGREPORT='ussc@star.rl.ac.uk'
+
+ac_unique_file="sla_link"
+ac_default_prefix=/afs/in2p3.fr/home/throng/antares/src/sla/sla-2.5.4
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libsla_la_version_info INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar STARLINK STAR_CPPFLAGS STAR_FCFLAGS STAR_FFLAGS STAR_LDFLAGS build build_cpu build_vendor build_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE FC FCFLAGS ac_ct_FC C_FC_FCLINK_MAGIC C_FC_PPFC_FCLINK_MAGIC stardocsdir staretcdir starexamplesdir starfacsdir starhelpdir starnewsdir STAR_DEPENDENCIES_ATTRIBUTES STAR_DEPENDENCIES_CHILDREN STAR_DOCUMENTATION PACKAGE_VERSION_MAJOR PACKAGE_VERSION_MINOR PACKAGE_VERSION_RELEASE PACKAGE_VERSION_INTEGER STAR_MANIFEST_DIR PREDIST PAX TAR CPP FPPFLAGS_F FPPFLAGS_DEF FPP FPPFLAGS FPP_OUTPUT FPP_MAKE_FLAGS FPP_COMPILE_EXT FPP_PREPROCESS_EXT FPP_SRC_EXT host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL NOPIC_TRUE NOPIC_FALSE LIBOBJS FCLIBS REAL_FUNCTION_TYPE STAR2HTML LATEX2DVI STAR_LATEX_DOCUMENTATION LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_STARLINK_set=${STARLINK+set}
+ac_env_STARLINK_value=$STARLINK
+ac_cv_env_STARLINK_set=${STARLINK+set}
+ac_cv_env_STARLINK_value=$STARLINK
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_FC_set=${FC+set}
+ac_env_FC_value=$FC
+ac_cv_env_FC_set=${FC+set}
+ac_cv_env_FC_value=$FC
+ac_env_FCFLAGS_set=${FCFLAGS+set}
+ac_env_FCFLAGS_value=$FCFLAGS
+ac_cv_env_FCFLAGS_set=${FCFLAGS+set}
+ac_cv_env_FCFLAGS_value=$FCFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+ac_env_STAR2HTML_set=${STAR2HTML+set}
+ac_env_STAR2HTML_value=$STAR2HTML
+ac_cv_env_STAR2HTML_set=${STAR2HTML+set}
+ac_cv_env_STAR2HTML_value=$STAR2HTML
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures sla 2.5-4 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of sla 2.5-4:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-shared[=PKGS]
+                          build shared libraries [default=yes]
+  --enable-static[=PKGS]
+                          build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-starlink         Starlink tree to use (default
+                          ${STARLINK:=/home/vmwareshare/rhel30linux_i386/build/build-root})
+  --without-stardocs      Do not install built documentation (default --with)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]
+                          include additional configurations [automatic]
+
+Some influential environment variables:
+  STARLINK    Location of a current Starlink tree (used if necessary)
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  FC          Fortran compiler command
+  FCFLAGS     Fortran compiler flags
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  STAR2HTML   Location of the star2html application
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <ussc@star.rl.ac.uk>.
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+sla configure 2.5-4
+generated by Starlink Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by sla $as_me 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Version-info specifications.  See SSN/78 for guidelines, and update the table
+# below for ANY change of version number.
+#
+# The library version numbers below match PTW's LIB_VERS 1.6 and 1.7
+# respectively, as it happens.  There is no need to continue this pattern
+# with any future changes, since these should respect the rather different
+# rules for the -version-info numbers.  Instead the PTW makefile LIB_VERS
+# changes should be regarded as guidelines for which changes are and are
+# not backwards-compatible.
+#
+#   Release    libsla.la
+#    2.4-12       6:0:0
+#    2.5-2        7:0:0
+libsla_la_version_info=7:0:0
+
+
+
+am__api_version="1.9"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='sla'
+ VERSION='2.5-4'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+DEPDIR="${am__leading_dot}deps"
+
+          ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+	;;
+    conftest.$ac_ext )
+	# This is the source file.
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	# FIXME: I believe we export ac_cv_exeext for Libtool,
+	# but it would be cool to find out if it's true.  Does anybody
+	# maintain Libtool? --akim.
+	export ac_cv_exeext
+	break;;
+    * )
+	break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  export ac_cv_exeext
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$FC"; then
+  ac_cv_prog_FC="$FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+FC=$ac_cv_prog_FC
+if test -n "$FC"; then
+  echo "$as_me:$LINENO: result: $FC" >&5
+echo "${ECHO_T}$FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$FC" && break
+  done
+fi
+if test -z "$FC"; then
+  ac_ct_FC=$FC
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_FC"; then
+  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_FC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_FC=$ac_cv_prog_ac_ct_FC
+if test -n "$ac_ct_FC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+echo "${ECHO_T}$ac_ct_FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_FC" && break
+done
+
+  FC=$ac_ct_FC
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:3222:" \
+     "checking for Fortran compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+
+ac_mod_ext=
+ac_fc_mod_uppercase=no
+cat > conftest.$ac_ext << \_ACEOF
+      module conftest
+       implicit none
+       integer :: i
+      end module conftest
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+echo "$as_me:$LINENO: checking for suffix of module files" >&5
+echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6
+for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none
+do
+  if test -f $ac_mod_file; then
+    break;
+  fi
+done
+rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD
+#
+case $ac_mod_file in
+  conftest.mod)
+    ac_mod_ext=mod
+    ;;
+  conftest.MOD)
+    ac_mod_ext=MOD
+    ;;
+  conftest.M)
+    ac_mod_ext=M
+    ;;
+  CONFTEST.MOD)
+    ac_mod_ext=MOD
+    ac_fc_mod_uppercase=yes
+    ;;
+  none)
+    { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5
+echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;}
+    ;;
+esac
+
+if test $ac_mod_file != none; then
+  echo "$as_me:$LINENO: result: $ac_mod_ext" >&5
+echo "${ECHO_T}$ac_mod_ext" >&6
+fi
+if test $ac_fc_mod_uppercase = yes; then
+  { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5
+echo "$as_me: Fortran module filenames are uppercase." >&6;}
+fi
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6
+if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_fc_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FCFLAGS+set}
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS=
+echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FCFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_fc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FCFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_fc_g = yes; then
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-g -O2"
+  else
+    FCFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-O2"
+  else
+    FCFLAGS=
+  fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+##
+
+
+
+
+
+
+test -n "$_star_per_package_dirs" || _star_per_package_dirs=false
+test -n "$_star_docs_only"        || _star_docs_only=false
+
+
+# Ensure that STARLINK has a value, defaulting to
+# /home/vmwareshare/rhel30linux_i386/build/build-root.  Note that this directory may be
+# different from /star, and reflects the value of
+# STARCONF_DEFAULT_STARLINK that the `starconf' package was configured
+# with before its installation.
+#
+# We use $STARLINK as the location of any other Starlink tools we need
+# to use during the building of our packages, and for the location of
+# any manifests we need to check.  It is permissable for it to be
+# different from $(prefix): this is partly because we have no way of
+# enforcing that the two be the same, since the user can set
+# prefix=xxx on the `make install' command line, and partly so that it
+# is possible to make a test version of a new package, using tools
+# from an old installation, but installing in a new place.
+#
+# However, we install software in /home/vmwareshare/rhel30linux_i386/build/build-root by
+# default.  This is so even if $STARLINK and STARCONF_DEFAULT_STARLINK
+# are different, because in this case we are planning to use a
+# previous installation in $STARLINK or $STARCONF_DEFAULT_STARLINK,
+# but install the newly built tool elsewhere.
+#
+# In most cases, including the most important case where we are
+# building the tree from scratch, in a checked out directory,
+# STARLINK, STARCONF_DEFAULT_STARLINK and STARCONF_DEFAULT_PREFIX will
+# all be the same.  That's OK because a separate aspect of the build
+# process, respecting the various dependencies expresses in source
+# directories, ensures that we don't use (and install) any Starlink
+# tools in one component before that component has been build and
+# installed.
+
+
+test -n "$STARLINK" || STARLINK=/home/vmwareshare/rhel30linux_i386/build/build-root
+
+# Handle the --with-starlink option.  If --with-starlink is present
+# with no argument (the default), we do nothing as this simply
+# indicates that this is part of a Starlink tree.  If it has an
+# argument, then this overrides the location of the Starlink tree.
+# Option --without-starlink or --with-starlink=no indicates that this
+# is being built _not_ as part of a Starlink build (that is, it's
+# being distributed as something other than a Starlink package).  In
+# this case, the variable STARLINK is unset.
+
+# Check whether --with-starlink or --without-starlink was given.
+if test "${with_starlink+set}" = set; then
+  withval="$with_starlink"
+  if test -z "$withval" -o "$withval" = yes; then
+                 : nothing needs to be done
+             elif test "X$withval" = Xno; then
+                 unset STARLINK
+             elif test -d "$withval"; then
+                 STARLINK="$withval"
+             else
+                 { echo "$as_me:$LINENO: WARNING: --with-starlink given nonexistent directory; ignored: using default $STARLINK instead" >&5
+echo "$as_me: WARNING: --with-starlink given nonexistent directory; ignored: using default $STARLINK instead" >&2;}
+             fi
+fi;
+if test -n "$STARLINK"; then
+    { echo "$as_me:$LINENO: Starlink tree located at $STARLINK" >&5
+echo "$as_me: Starlink tree located at $STARLINK" >&6;}
+else
+    { echo "$as_me:$LINENO: Not being built as part of the Starlink tree" >&5
+echo "$as_me: Not being built as part of the Starlink tree" >&6;}
+fi
+
+# Handle --without-stardocs.  Don't build and install documentation.
+# Default is --with-stardocs.
+_star_build_docs=:
+
+# Check whether --with-stardocs or --without-stardocs was given.
+if test "${with_stardocs+set}" = set; then
+  withval="$with_stardocs"
+  if test -z "$withval"; then
+                 _star_build_docs=: # default
+             elif test "X$withval" = Xno; then
+                 _star_build_docs=false
+             elif test "X$withval" = Xyes; then
+                 _star_build_docs=:
+             else
+                 { echo "$as_me:$LINENO: WARNING: bad arg to --with-stardocs: using yes" >&5
+echo "$as_me: WARNING: bad arg to --with-stardocs: using yes" >&2;}
+                 _star_build_docs=:
+             fi
+fi;
+
+if $_star_docs_only; then
+    if $_star_build_docs; then
+        : OK
+    else
+        { echo "$as_me:$LINENO: WARNING: Building without documentation in a docs-only directory" >&5
+echo "$as_me: WARNING: Building without documentation in a docs-only directory" >&2;}
+    fi
+fi
+
+# Everything depends on where /star is.  Declare STARLINK as a
+# `precious variable'.  Amongst other things, this will make
+# ./configure squeal if the package is re-configured with an
+# inconsistent value of this variable.
+
+# AC_SUBST the STARLINK variable.  Macro AC_ARG_VAR does this anyway,
+# but automake doesn't know that (in 1.6 at least): however any
+# variable that automake finds has been AC_SUBSTed, it includes in
+# Makefile.in, and we need that.
+
+
+# Use the above information: $STARLINK indicates a preexisting
+# Starlink tree.
+#
+# Avoid doing anything if $STARLINK was unset above.
+#
+# Add library search paths using STAR_LDFLAGS.  Do it this way, rather than
+# by defining LIBS (which is also a non-user variable): (a) these are
+# really options to the linker, rather than adjustments to the set of
+# libraries, so this makes sense; also (b) adding them to LIBS is too
+# late, since that adds -L _after_ any -l options found in *_LDADD.
+if test -n "$STARLINK"; then
+    STAR_CPPFLAGS="-I$STARLINK/include"
+    STAR_FCFLAGS="-I$STARLINK/include"
+    STAR_FFLAGS="-I$STARLINK/include"
+    STAR_LDFLAGS="-L$STARLINK/lib"
+else
+    STAR_CPPFLAGS=
+    STAR_FCFLAGS=
+    STAR_FFLAGS=
+    STAR_LDFLAGS=
+fi
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking whether we need any library fixups" >&5
+echo $ECHO_N "checking whether we need any library fixups... $ECHO_C" >&6
+if test "${star_cv_restfp_fixup+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+        if expr $build_os : 'darwin7' >/dev/null; then
+            # Following uses undocumented (but probably fairly stable)
+            # autoconf internal variable.
+            if test "$ac_cv_fc_compiler_gnu" = yes; then
+                ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+                rm -f conftest*
+                star_cv_restfp_fixup=unknown
+                cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+restFP()
+  ;
+  return 0;
+}
+_ACEOF
+                { { ac_try='$CC -o conftest.x -S conftest.c'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                  test $ac_status = 0
+                } &&
+                sed 's/_restFP/restFP/g' conftest.x>conftest.s &&
+                { { ac_try='$CC -c -o conftest.$ac_objext conftest.s'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                  test $ac_status = 0
+                } || star_cv_restfp_fixup=broken
+                ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+                if test $star_cv_restfp_fixup = broken; then
+                    { echo "$as_me:$LINENO: WARNING: unable to assemble restFP test" >&5
+echo "$as_me: WARNING: unable to assemble restFP test" >&2;}
+                else
+                    # Link this with the C compiler
+                    { ac_try='$CC -o conftest conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                    _s_cstatus=$ac_status
+                    # Link this with the Fortran compiler
+                    { ac_try='$FC -o conftest conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                    if test $_s_cstatus = 0 -a $ac_status = 0; then
+                        # both compilers can compile it
+                        star_cv_restfp_fixup=no
+                    elif test $_s_cstatus != 0 -a $ac_status != 0; then
+                        # neither compiler can compile it
+                        star_cv_restfp_fixup=no
+                    elif test $_s_cstatus = 0; then
+                        # The C compiler can, but the Fortran cannot
+                        star_cv_restfp_fixup=yes
+                    else
+                        # The C compiler can't compile, but the Fortran can.
+                        # Haven't heard of this case!  Don't know what to do.
+                        star_cv_restfp_fixup=broken
+                    fi
+                fi
+                # Link with -lcc_dynamic.
+                # See http://www.astro.gla.ac.uk/users/norman/note/2004/restFP/
+                if test $star_cv_restfp_fixup = yes; then
+                    { ac_try='$FC -o conftest conftest.$ac_objext -lcc_dynamic'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                    if test $ac_status = 0; then
+                        star_cv_restfp_fixup=cc_dynamic
+                    fi
+                fi
+                if test $star_cv_restfp_fixup = yes; then
+                    # ooops
+                    { echo "$as_me:$LINENO: WARNING: unable to solve restFP problem" >&5
+echo "$as_me: WARNING: unable to solve restFP problem" >&2;}
+                    star_cv_restfp_fixup=broken
+                fi
+                rm -f conftest*
+            elif test -z "$FC"; then
+                # not g77, and indeed no Fortran at all
+                star_cv_restfp_fixup=nofortran
+            else
+                # There is a Fortran, but it's not g77, so either there's no
+                # problem, or it's a mixed-compiler problem that's harder
+                # than we know how to deal with.  But presumably the user
+                # has worked this out.
+                star_cv_restfp_fixup=no
+            fi
+        else # !Darwin
+            star_cv_restfp_fixup=no
+        fi
+
+fi
+echo "$as_me:$LINENO: result: $star_cv_restfp_fixup" >&5
+echo "${ECHO_T}$star_cv_restfp_fixup" >&6
+   C_FC_FCLINK_MAGIC=
+   C_FC_PPFC_FCLINK_MAGIC=
+   case $star_cv_restfp_fixup in
+     cc_dynamic)
+       # Add the required libraries to C_FC_... variables, which are
+       # generated in the required places by (our) automake.
+       C_FC_FCLINK_MAGIC="-lcc_dynamic"
+       C_FC_PPFC_FCLINK_MAGIC="-lcc_dynamic"
+       ;;
+     nofortran)
+       { echo "$as_me:$LINENO: No Fortran in path, so presumably no g77/gcc library problems" >&5
+echo "$as_me: No Fortran in path, so presumably no g77/gcc library problems" >&6;}
+       ;;
+     *) ;;
+   esac
+
+
+
+
+# Installation directory options (these are no longer handled
+# by _STAR_EXTRADIR_COMMON).  There should be an entry here for each of
+# Starlink's special installation locations.
+stardocsdir='${prefix}/docs'
+staretcdir='${prefix}/etc'
+starexamplesdir='${prefix}/examples'
+starfacsdir='${prefix}/help'
+starhelpdir='${prefix}/help'
+starnewsdir='${prefix}/news'
+
+# Certain directories are affected by the $_star_per_package_dir variable;
+# if it's true, then add the $PACKAGE_NAME to the directory.
+# The directories currently adjusted by this are bin and help;
+# there are others: see PWD's message of 2004-02-16
+# <http://www.jiscmail.ac.uk/cgi-bin/wa.exe?A2=ind0402&L=stardev&T=0&F=&S=&P=5153>
+if $_star_per_package_dirs; then
+    bindir="$bindir/$PACKAGE_NAME"
+    starhelpdir="$starhelpdir/$PACKAGE_NAME"
+    staretcdir="$staretcdir/$PACKAGE_NAME"
+    { echo "$as_me:$LINENO: STAR_DEFAULTS has option per-package-dirs:" >&5
+echo "$as_me: STAR_DEFAULTS has option per-package-dirs:" >&6;}
+    { echo "$as_me:$LINENO:     bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir" >&5
+echo "$as_me:     bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir" >&6;}
+    # Note that starfacsdir is unaffected by per-package-dirs -- facility
+    # files must always be installed in .../help (this also facilitates
+    # changing this installation location in future, to somewhere with a
+    # more logical name than .../help).
+fi
+
+
+# Dependency declarations and checks.
+# Everything is dependent on starconf, so we don't have to declare that
+# for each package separately.
+# STAR_DEPENDENCIES_ATTRIBUTES is currently not used.
+STAR_DEPENDENCIES_ATTRIBUTES=''
+STAR_DEPENDENCIES_CHILDREN=''
+
+
+
+# List of documentation.  See [STAR_LATEX_DOCUMENTATION].
+# STAR_DOCUMENTATION is a list of document codes,
+STAR_DOCUMENTATION=
+
+
+# Create a PACKAGE_VERSION_INTEGER variable, which contains the
+# package's version number as an integer major*1e6+minor*1e3+release.
+eval `echo $VERSION | sed -e 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/PACKAGE_VERSION_MAJOR=\1; PACKAGE_VERSION_MINOR=\2; PACKAGE_VERSION_RELEASE=\3;/'`
+test -n "$PACKAGE_VERSION_MAJOR"   || PACKAGE_VERSION_MAJOR=0
+test -n "$PACKAGE_VERSION_MINOR"   || PACKAGE_VERSION_MINOR=0
+test -n "$PACKAGE_VERSION_RELEASE" || PACKAGE_VERSION_RELEASE=0
+PACKAGE_VERSION_INTEGER=`expr $PACKAGE_VERSION_MAJOR \* 1000000 + $PACKAGE_VERSION_MINOR \* 1000 + $PACKAGE_VERSION_RELEASE`
+
+
+
+
+
+# When we do dependency checking, using the dependencies declared in
+# the package's configure.ac, we do so by looking at what tools have
+# already been installed in the Starlink tree.  The tree in question
+# is to be found under $STARLINK (see above), so we check that a
+# package is installed by checking that its manifest can be found in
+# $STARLINK/manifests.  We don't AC_SUBST this.
+current_MANIFESTS=$STARLINK/manifests
+
+# When we install manifests, however, they should go in the
+# installation directory.  Allow this to be defaulted from the environment.
+# In particular, if it is set to null in the environment, this will
+# suppress the installation of manifests.
+: ${STAR_MANIFEST_DIR='$(prefix)/manifests'}
+
+
+# Although PACKAGE_VERSION is a default output variable, it isn't
+# added as a Makefile variable by default.  We need it below, however,
+# so add it now.
+
+
+# Initialise state of predist/postdist flags (see STAR_PREDIST_SOURCES).
+# The value of _star_predist_status must be inherited by any
+# ./configure run in a subdirectory, so that we there avoid the predist
+# test of starconf.status: in a pre-distribution state, this file must
+# be present in the component directory (where we are running
+# ./configure), but must not be present in any subdirectory.
+_star_predist_status=unknown
+PREDIST='#'  # safe default
+
+
+# pax and/or tar are used in some install targets.
+# Note: value-if-not-found should be blank, so this can be tested for.
+# Extract the first word of "pax", so it can be a program name with args.
+set dummy pax; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PAX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PAX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PAX="$PAX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PAX="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PAX=$ac_cv_path_PAX
+
+if test -n "$PAX"; then
+  echo "$as_me:$LINENO: result: $PAX" >&5
+echo "${ECHO_T}$PAX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+for ac_prog in gnutar tar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TAR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $TAR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+TAR=$ac_cv_path_TAR
+
+if test -n "$TAR"; then
+  echo "$as_me:$LINENO: result: $TAR" >&5
+echo "${ECHO_T}$TAR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$TAR" && break
+done
+
+
+ALL_TARGET=all-am-normal
+
+# Default $prefix.  This is done by the standard autoconf configure, but at
+# a slightly later stage than this.  Doing it here, as part of STAR_[]DEFAULTS
+# means that the defaulted value of $prefix can be used within the body of
+# the configure.ac, for example to pass it to a ./configure in a subdirectory.
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$FC"; then
+  ac_cv_prog_FC="$FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+FC=$ac_cv_prog_FC
+if test -n "$FC"; then
+  echo "$as_me:$LINENO: result: $FC" >&5
+echo "${ECHO_T}$FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$FC" && break
+  done
+fi
+if test -z "$FC"; then
+  ac_ct_FC=$FC
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_FC"; then
+  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_FC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_FC=$ac_cv_prog_ac_ct_FC
+if test -n "$ac_ct_FC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+echo "${ECHO_T}$ac_ct_FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_FC" && break
+done
+
+  FC=$ac_ct_FC
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:3986:" \
+     "checking for Fortran compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+
+ac_mod_ext=
+ac_fc_mod_uppercase=no
+cat > conftest.$ac_ext << \_ACEOF
+      module conftest
+       implicit none
+       integer :: i
+      end module conftest
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+echo "$as_me:$LINENO: checking for suffix of module files" >&5
+echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6
+for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none
+do
+  if test -f $ac_mod_file; then
+    break;
+  fi
+done
+rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD
+#
+case $ac_mod_file in
+  conftest.mod)
+    ac_mod_ext=mod
+    ;;
+  conftest.MOD)
+    ac_mod_ext=MOD
+    ;;
+  conftest.M)
+    ac_mod_ext=M
+    ;;
+  CONFTEST.MOD)
+    ac_mod_ext=MOD
+    ac_fc_mod_uppercase=yes
+    ;;
+  none)
+    { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5
+echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;}
+    ;;
+esac
+
+if test $ac_mod_file != none; then
+  echo "$as_me:$LINENO: result: $ac_mod_ext" >&5
+echo "${ECHO_T}$ac_mod_ext" >&6
+fi
+if test $ac_fc_mod_uppercase = yes; then
+  { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5
+echo "$as_me: Fortran module filenames are uppercase." >&6;}
+fi
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6
+if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_fc_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FCFLAGS+set}
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS=
+echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FCFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_fc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FCFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_fc_g = yes; then
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-g -O2"
+  else
+    FCFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-O2"
+  else
+    FCFLAGS=
+  fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+# Prefer AC_PROG_FC to AC_PROG_F77
+if test "X$F77" != X; then
+    { echo "$as_me:$LINENO: WARNING: Use AC_PROG_FC with AC_PROG_FPP, instead of AC_PROG_F77" >&5
+echo "$as_me: WARNING: Use AC_PROG_FC with AC_PROG_FPP, instead of AC_PROG_F77" >&2;}
+fi
+
+# defaults for needed features
+ac_fpp_need_d=yes
+ac_fpp_need_i=yes
+ac_fpp_need_subs=yes
+ac_fpp_need_wrap=no
+ac_fpp_need_cstyle=no
+ac_fpp_need_CSTYLE=no
+for _t in  nil
+do
+    case $_t in
+        d*)    ac_fpp_need_d=yes    ;;
+        nod*)  ac_fpp_need_d=no     ;;
+        i*)    ac_fpp_need_i=yes    ;;
+        noi*)  ac_fpp_need_i=no     ;;
+        s*)    ac_fpp_need_subs=yes    ;;
+        nos*)  ac_fpp_need_subs=no     ;;
+        w*)    ac_fpp_need_wrap=yes   ;;
+        now*)  ac_fpp_need_wrap=no    ;;
+        c*)    ac_fpp_need_cstyle=yes ;;
+        noc*)  ac_fpp_need_cstyle=no  ;;
+        C*)    ac_fpp_need_CSTYLE=yes ;;
+        noC*)  ac_fpp_need_CSTYLE=no  ;;
+        nil)   ;;
+    esac
+done
+# Wrapping requires substitution
+test $ac_fpp_need_wrap = yes && ac_fpp_need_subs=yes
+# Both CSTYLE and cstyle cannot be requested
+# CSTYLE has precedence, since if it is not fulfilled,
+# compile errors may arise
+test $ac_fpp_need_CSTYLE = yes && ac_fpp_need_cstyle=no
+
+
+# Default optional second argument to F
+FPP_SRC_EXT=F
+
+# Test FPP_SRC_EXT
+ac_fpp_srcext_failed=no
+echo "$as_me:$LINENO: checking for Fortran flag to compile preprocessable .F files" >&5
+echo $ECHO_N "checking for Fortran flag to compile preprocessable .F files... $ECHO_C" >&6
+if test "${ac_cv_fpp_srcext_F+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=F
+ac_fpp_srcext_FPPFLAGS_SRCEXT_save=$FPPFLAGS_SRCEXT
+FPPFLAGS_SRCEXT=""
+ac_cv_fpp_srcext_F=unknown
+for ac_flag in none -qsuffix=cpp=F -cpp -fpp '-lfe "-Cpp"'; do
+ test "x$ac_flag" != xnone && FPPFLAGS_SRCEXT="$ac_flag"
+  if test "x$ac_cv_fpp_build_rule" = x; then
+     # We're probably being called from AC_FPP_PROG. We don't know
+     # how to compile fpp programs yet.
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ## Force ac_ext to be the extension we're testing, carefully
+     ## ignoring the one defaulted in the statement above.
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  else
+     # We already know what ac_fpp_compile etc. are:
+     ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+#if 1
+      end
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  fi
+done
+rm -f conftest.$ac_objext conftest.F
+FPPFLAGS_SRCEXT=$ac_fpp_srcext_FPPFLAGS_SRCEXT_save
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_srcext_F" >&5
+echo "${ECHO_T}$ac_cv_fpp_srcext_F" >&6
+if test "x$ac_cv_fpp_srcext_F" = xunknown; then
+  ac_fpp_srcext_failed=yes
+else
+  FPP_SRCEXT=F
+  if test "x$ac_cv_fpp_srcext_F" = xnone; then
+    FPPFLAGS_SRCEXT=""
+    FPPFLAGS_F="$FPPFLAGS_F"
+  else
+    FPPFLAGS_SRCEXT=$ac_cv_fpp_srcext_F
+    FPPFLAGS_F="$FPPFLAGS_F $ac_cv_fpp_srcext_F"
+  fi
+
+
+fi
+
+if test $ac_fpp_srcext_failed = yes -a "" != F; then
+    { echo "$as_me:$LINENO: Could not use .$FPP_SRC_EXT as extension; trying .F" >&5
+echo "$as_me: Could not use .$FPP_SRC_EXT as extension; trying .F" >&6;}
+    FPP_SRC_EXT=F
+    echo "$as_me:$LINENO: checking for Fortran flag to compile preprocessable .F files" >&5
+echo $ECHO_N "checking for Fortran flag to compile preprocessable .F files... $ECHO_C" >&6
+if test "${ac_cv_fpp_srcext_F+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=F
+ac_fpp_srcext_FPPFLAGS_SRCEXT_save=$FPPFLAGS_SRCEXT
+FPPFLAGS_SRCEXT=""
+ac_cv_fpp_srcext_F=unknown
+for ac_flag in none -qsuffix=cpp=F -cpp -fpp '-lfe "-Cpp"'; do
+ test "x$ac_flag" != xnone && FPPFLAGS_SRCEXT="$ac_flag"
+  if test "x$ac_cv_fpp_build_rule" = x; then
+     # We're probably being called from AC_FPP_PROG. We don't know
+     # how to compile fpp programs yet.
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ## Force ac_ext to be the extension we're testing, carefully
+     ## ignoring the one defaulted in the statement above.
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  else
+     # We already know what ac_fpp_compile etc. are:
+     ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+#if 1
+      end
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  fi
+done
+rm -f conftest.$ac_objext conftest.F
+FPPFLAGS_SRCEXT=$ac_fpp_srcext_FPPFLAGS_SRCEXT_save
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_srcext_F" >&5
+echo "${ECHO_T}$ac_cv_fpp_srcext_F" >&6
+if test "x$ac_cv_fpp_srcext_F" = xunknown; then
+  { { echo "$as_me:$LINENO: error: Fortran could not compile .F files" >&5
+echo "$as_me: error: Fortran could not compile .F files" >&2;}
+   { (exit 1); exit 1; }; }
+else
+  FPP_SRCEXT=F
+  if test "x$ac_cv_fpp_srcext_F" = xnone; then
+    FPPFLAGS_SRCEXT=""
+    FPPFLAGS_F="$FPPFLAGS_F"
+  else
+    FPPFLAGS_SRCEXT=$ac_cv_fpp_srcext_F
+    FPPFLAGS_F="$FPPFLAGS_F $ac_cv_fpp_srcext_F"
+  fi
+
+
+fi
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# We first try to use FC for compiling the source directly
+# into object files
+ac_fpp_compile='${FC-fc} -c $FPPFLAGS $FFLAGS $FPPFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_fpp_link='${FC-fc} -o conftest${ac_exeext} $FPPFLAGS $FFLAGS $LDFLAGS $FPPFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+
+ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+# _AC_PROG_FC_CPP stores results of the feature checks in non-cv variables,
+# which we copy to cv variables afterwards.
+# The reason for that is reusability of the macro for other cv variables (see below)
+ac_fpp_ok=yes
+ac_prog_fc_cpp=no
+ac_prog_fc_cpp_d=no
+ac_prog_fc_cpp_i=no
+ac_prog_fc_cpp_subs=no
+ac_prog_fc_cpp_wrap=no
+ac_prog_fc_cpp_CSTYLE=no
+
+
+echo "$as_me:$LINENO: checking for fixed form Fortran preprocessor features" >&5
+echo $ECHO_N "checking for fixed form Fortran preprocessor features... $ECHO_C" >&6
+# We must use AC_LINK_IFELSE because Lahey Fortran (and maybe others) have
+# broken exit status when compiling
+cat >conftest.$ac_ext <<_ACEOF
+#define OK
+      program main
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+if test $ac_prog_fc_cpp = yes; then
+
+    if test $ac_fpp_need_d = yes; then
+       ac_prog_fc_cpp_d=no
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -DOK"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+:
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       FPPFLAGS=$ac_save_FPPFLAGS
+       if test $ac_prog_fc_cpp_d = no; then
+	  # stupid ibm compiler
+          ac_save_FPPFLAGS=$FPPFLAGS
+          FPPFLAGS="$FPPFLAGS -WF,-DOK"
+          cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-WF,-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+          FPPFLAGS=$ac_save_FPPFLAGS
+       fi
+    fi
+
+
+    if test $ac_fpp_need_i = yes; then
+       mkdir conftst
+       cat > conftst/conftest.inc << \_ACEOF
+!     This statement overrides the IMPLICIT statement in the program
+      REAL cc
+_ACEOF
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -Iconftst"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      IMPLICIT CHARACTER (c)
+!     Comments in test programs should be freeform compliant just in case.
+!     conftest.inc contains the Fortran statement "REAL cc"
+#include "conftest.inc"
+      cc=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_i=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       rm -rf conftst
+       FPPFLAGS=$ac_save_FPPFLAGS
+    fi
+
+    if test $ac_fpp_need_subs = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define NM xxxx
+
+      program main
+      IMPLICIT CHARACTER (n)
+      REAL xxxx
+      NM=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_subs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_wrap = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define LONG '901234567890123456789012345678901234567890123456789012345678901234567890'
+
+      program main
+      CHARACTER*80 A
+      A=LONG
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_wrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_CSTYLE = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      A=1. /* C-style comment */
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_CSTYLE=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+fi
+echo "$as_me:$LINENO: result: done." >&5
+echo "${ECHO_T}done." >&6
+
+
+echo "$as_me:$LINENO: checking whether $FC compiles programs with cpp directives" >&5
+echo $ECHO_N "checking whether $FC compiles programs with cpp directives... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp=$ac_prog_fc_cpp
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp" >&6
+
+if test $ac_fpp_need_d = yes; then
+  echo "$as_me:$LINENO: checking whether $FC accepts -D" >&5
+echo $ECHO_N "checking whether $FC accepts -D... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_d+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_d=$ac_prog_fc_cpp_d
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_d" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_d" >&6
+fi
+
+if test $ac_fpp_need_i = yes; then
+  echo "$as_me:$LINENO: checking whether $FC accepts -I" >&5
+echo $ECHO_N "checking whether $FC accepts -I... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_i+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_i=$ac_prog_fc_cpp_i
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_i" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_i" >&6
+fi
+
+if test $ac_fpp_need_subs = yes; then
+  echo "$as_me:$LINENO: checking whether $FC substitutes macros in Fortran code" >&5
+echo $ECHO_N "checking whether $FC substitutes macros in Fortran code... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_subs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_subs=$ac_prog_fc_cpp_subs
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_subs" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_subs" >&6
+fi
+
+if test $ac_fpp_need_wrap = yes; then
+  echo "$as_me:$LINENO: checking whether $FC wraps long lines automatically" >&5
+echo $ECHO_N "checking whether $FC wraps long lines automatically... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_wrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_wrap=$ac_prog_fc_cpp_wrap
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_wrap" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_wrap" >&6
+fi
+
+if test $ac_fpp_need_CSTYLE = yes; then
+  echo "$as_me:$LINENO: checking whether $FC handles C-style comments" >&5
+echo $ECHO_N "checking whether $FC handles C-style comments... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_CSTYLE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_CSTYLE=$ac_prog_fc_cpp_CSTYLE
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_CSTYLE" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_CSTYLE" >&6
+fi
+
+echo "$as_me:$LINENO: checking whether $FC fulfills requested features" >&5
+echo $ECHO_N "checking whether $FC fulfills requested features... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_ok+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_ok=$ac_fpp_ok
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_ok" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_ok" >&6
+
+if test $ac_fpp_ok = yes; then
+    :
+else
+    { echo "$as_me:$LINENO: $FC cannot deal with preprocessed Fortran; press on..." >&5
+echo "$as_me: $FC cannot deal with preprocessed Fortran; press on..." >&6;}
+fi
+##if test $ac_fpp_ok = yes; then
+##    m4_default([],[:])
+##else
+##    m4_default([],[AC_MSG_ERROR([$FC cannot deal with preprocessed Fortran])])
+##fi
+
+
+
+# Now we check how to invoke a preprocessor that outputs Fortran code
+# that FC can understand
+# The next macro sets FPP (unless already set by the user)
+ac_ext=F
+echo "$as_me:$LINENO: checking how to preprocess Fortran files" >&5
+echo $ECHO_N "checking how to preprocess Fortran files... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp=
+
+
+# Let the user specify FPP
+if test -n "$FPP"; then
+  rm -f conftest*
+cat >conftest.$ac_ext << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+ac_fpp_command=$FPP
+if eval '$ac_fpp_command conftest.$ac_ext > conftest.log 2>/dev/null'; then
+  if test -f conftest.f; then
+    if cmp conftest.$ac_ext conftest.f >/dev/null; then
+      # ooops -- these two are the same file.  Ie, this is a
+      # case-insensitive filesystem, so ignore this file
+      ac_tmp=
+    else
+      ac_tmp=conftest.f
+      ac_fpp_out=
+    fi
+  fi
+  if test -z "$ac_tmp"; then
+    ac_tmp=conftest.log
+    ac_fpp_out=' > conftest.f'
+  fi
+  if grep '^      REAL A' $ac_tmp >/dev/null 2>&1; then
+    # we have Fortran!  That worked...
+    ac_cv_prog_fpp=$ac_fpp_command
+  fi
+  if grep 'syntax error' $ac_tmp >/dev/null 2>&1; then
+    # ...oh no it didn't: this line should have been skipped
+    ac_cv_prog_fpp=
+  fi
+fi
+rm -f conftest*
+
+  if test -z "$ac_cv_prog_fpp"; then
+    { echo "$as_me:$LINENO: WARNING: user-specified \$FPP ($FPP) does not work" >&5
+echo "$as_me: WARNING: user-specified \$FPP ($FPP) does not work" >&2;}
+    FPP=
+  fi
+fi # test -n "$FPP"
+
+if test -z "$ac_cv_prog_fpp" && test $ac_fpp_ok = yes; then
+# We know that the Fortran compiler can directly preprocess and compile.
+# All that remains is to find out how to run only the preprocessor.
+# We check that the compiler does not compile as well as
+# preprocessing, by looking for the file a.out (is this portable?  The
+# single-unix spec says that cc produces an a.out if no -o is given).
+# If we don't do this, and the compiler doesn't recognise, and
+# ignores, one of the options (for example g77 ignores -F
+# and returns without error), then the test appears to succeed.
+#
+# We only know the following methods of invocation: -E and -F
+  for ac_j in "$FC -E" "$FC -F"; do
+    rm -f a.out
+    rm -f conftest*
+cat >conftest.$ac_ext << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+ac_fpp_command=$ac_j
+if eval '$ac_fpp_command conftest.$ac_ext > conftest.log 2>/dev/null'; then
+  if test -f conftest.f; then
+    if cmp conftest.$ac_ext conftest.f >/dev/null; then
+      # ooops -- these two are the same file.  Ie, this is a
+      # case-insensitive filesystem, so ignore this file
+      ac_tmp=
+    else
+      ac_tmp=conftest.f
+      ac_fpp_out=
+    fi
+  fi
+  if test -z "$ac_tmp"; then
+    ac_tmp=conftest.log
+    ac_fpp_out=' > conftest.f'
+  fi
+  if grep '^      REAL A' $ac_tmp >/dev/null 2>&1; then
+    # we have Fortran!  That worked...
+    ac_cv_prog_fpp=$ac_fpp_command
+  fi
+  if grep 'syntax error' $ac_tmp >/dev/null 2>&1; then
+    # ...oh no it didn't: this line should have been skipped
+    ac_cv_prog_fpp=
+  fi
+fi
+rm -f conftest*
+
+    if test -e a.out; then
+        rm -f a.out
+        ac_cv_prog_fpp=  # discard any value there
+    else
+        test -n "$ac_cv_prog_fpp" && break;
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_fpp"; then
+# Either the Fortran compiler can't handle cpp, or doesn't have all the
+# features, or can't be used for pure preprocessing.
+# We must find another way for preprocessing.
+# We try the "best" preprocessors first. At this point, F77 has already
+# proven that it is insufficient, so use it as a last resort only.
+# XXX: is there a more up-to-date list?
+  for ac_j in 'fpp' "$CPP" 'g77 -E' '$CC -E' 'cpp' '/lib/cpp' \
+              '/usr/ccs/lib/cpp' "$F77 -F" "$F77 -E"; do
+    rm -f conftest*
+cat >conftest.$ac_ext << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+ac_fpp_command=$ac_j
+if eval '$ac_fpp_command conftest.$ac_ext > conftest.log 2>/dev/null'; then
+  if test -f conftest.f; then
+    if cmp conftest.$ac_ext conftest.f >/dev/null; then
+      # ooops -- these two are the same file.  Ie, this is a
+      # case-insensitive filesystem, so ignore this file
+      ac_tmp=
+    else
+      ac_tmp=conftest.f
+      ac_fpp_out=
+    fi
+  fi
+  if test -z "$ac_tmp"; then
+    ac_tmp=conftest.log
+    ac_fpp_out=' > conftest.f'
+  fi
+  if grep '^      REAL A' $ac_tmp >/dev/null 2>&1; then
+    # we have Fortran!  That worked...
+    ac_cv_prog_fpp=$ac_fpp_command
+  fi
+  if grep 'syntax error' $ac_tmp >/dev/null 2>&1; then
+    # ...oh no it didn't: this line should have been skipped
+    ac_cv_prog_fpp=
+  fi
+fi
+rm -f conftest*
+
+    test -n "$ac_cv_prog_fpp" && break;
+  done
+fi # test -z "$ac_cv_prog_fpp"
+
+if test -z "$ac_cv_prog_fpp"; then
+# This is only fatal if direct compilation doesn't work either
+  if test $ac_cv_prog_fc_cpp = no; then
+    { { echo "$as_me:$LINENO: error: cannot find a working Fortran preprocessor" >&5
+echo "$as_me: error: cannot find a working Fortran preprocessor" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me:$LINENO: WARNING: cannot find a working Fortran preprocessor" >&5
+echo "$as_me: WARNING: cannot find a working Fortran preprocessor" >&2;}
+  fi
+fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp" >&6
+echo "$as_me:$LINENO: checking how to redirect $ac_cv_prog_fpp output" >&5
+echo $ECHO_N "checking how to redirect $ac_cv_prog_fpp output... $ECHO_C" >&6
+if test "${ac_cv_fpp_out+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_fpp_out=$ac_fpp_out
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_out" >&5
+echo "${ECHO_T}$ac_cv_fpp_out" >&6
+FPP=$ac_cv_prog_fpp
+ac_fpp_out=$ac_cv_fpp_out
+
+echo "$as_me:$LINENO: checking whether $FPP needs the -P option" >&5
+echo $ECHO_N "checking whether $FPP needs the -P option... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_p+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_p=unknown
+
+# Note we force extension .$FPP_SRC_EXT here and in the ac_cmd lines below, to
+# make sure that we don't use the default extension for the language.
+# We mustn't blindly set ac_ext=$FPP_SRC_EXT, however, or else this
+# would break the $(ac_link) command below.  Yes, this test file has
+# the literal extension .FPP_SRC_EXT (see below).
+cat > conftest.FPP_SRC_EXT << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+# We must not fail, here, in the case where the filesystem is
+# case-insensitive, so that conftest.F and conftest.f are the same
+# file.
+if test -n "$ac_fpp_out"; then
+   # If $ac_fpp_out is non-null, then preprocessor output goes to
+   # stdout, which we send to conftest.f _without_ immediately clobbering
+   # the input file as it is being read.  We do clobber it in the
+   # end, however, which is why we copy .FPP_SRC_EXT to .$FPP_SRC_EXT
+   # each time.
+   ac_tmp='>conftest.tmp && mv conftest.tmp conftest.f'
+else
+   # conftest.F is preprocessed directly to conftest.f.  We can
+   # assume that the filesystem is case-sensitive, since otherwise
+   # this compiler/preprocessor would be simply non-functional on
+   # this platform.
+   ac_tmp=
+fi
+cp conftest.FPP_SRC_EXT conftest.$FPP_SRC_EXT
+ac_cmd='$FPP $FPPFLAGS conftest.$FPP_SRC_EXT '"$ac_tmp"
+## use ac_link from the Fortran language
+if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+     { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+   ac_cv_prog_fpp_p=
+else
+   cp conftest.FPP_SRC_EXT conftest.$FPP_SRC_EXT
+   ac_save_FPPFLAGS=$FPPFLAGS
+   FPPFLAGS="$FPPFLAGS -P"
+   if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+       { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+     ac_cv_prog_fpp_p=-P
+   fi
+   FPPFLAGS=$ac_save_FPPFLAGS
+fi
+rm -f conftest*
+ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_p" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_p" >&6
+if test "x$ac_cv_prog_fpp_p" = "xunknown"; then
+   { { echo "$as_me:$LINENO: error: $FPP cannot produce code that $FC compiles" >&5
+echo "$as_me: error: $FPP cannot produce code that $FC compiles" >&2;}
+   { (exit 1); exit 1; }; }
+else
+   FPPFLAGS="$FPPFLAGS $ac_cv_prog_fpp_p"
+fi
+
+
+# Now, we check the features of the preprocessor/compiler combination
+# It only makes sense to carry out further tests if FPP is a different
+# program from FC
+ac_fpp_name=`expr "x$FPP" : "x\([^ ]*\)"`
+ac_fc_name=`expr "x$FC" : "x\([^ ]*\)"`
+if test "x$ac_fc_name" != "x$ac_fpp_name"; then
+  ac_fpp_equals_fc=no
+
+# Redefine the compile and link commands for indirect compilation
+  ac_fpp_compile='${FPP-fpp} $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"' && ${FC-fc} -c $FFLAGS conftest.f >&5'
+  ac_fpp_link='${FPP-fpp} $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"' && ${FC-fc} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.f $LIBS >&5'
+
+# PWD: we are not picking up indirection compilation for the following
+# tests, maybe we need to reset more than the above variables.
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+# Redo all the feature checks for indirect compilation: perhaps we have an
+# external preprocessor that does a better job than FC
+  ac_fpp_ok=yes
+ac_prog_fc_cpp=no
+ac_prog_fc_cpp_d=no
+ac_prog_fc_cpp_i=no
+ac_prog_fc_cpp_subs=no
+ac_prog_fc_cpp_wrap=no
+ac_prog_fc_cpp_CSTYLE=no
+
+
+echo "$as_me:$LINENO: checking for fixed form Fortran preprocessor features" >&5
+echo $ECHO_N "checking for fixed form Fortran preprocessor features... $ECHO_C" >&6
+# We must use AC_LINK_IFELSE because Lahey Fortran (and maybe others) have
+# broken exit status when compiling
+cat >conftest.$ac_ext <<_ACEOF
+#define OK
+      program main
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+if test $ac_prog_fc_cpp = yes; then
+
+    if test $ac_fpp_need_d = yes; then
+       ac_prog_fc_cpp_d=no
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -DOK"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+:
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       FPPFLAGS=$ac_save_FPPFLAGS
+       if test $ac_prog_fc_cpp_d = no; then
+	  # stupid ibm compiler
+          ac_save_FPPFLAGS=$FPPFLAGS
+          FPPFLAGS="$FPPFLAGS -WF,-DOK"
+          cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-WF,-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+          FPPFLAGS=$ac_save_FPPFLAGS
+       fi
+    fi
+
+
+    if test $ac_fpp_need_i = yes; then
+       mkdir conftst
+       cat > conftst/conftest.inc << \_ACEOF
+!     This statement overrides the IMPLICIT statement in the program
+      REAL cc
+_ACEOF
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -Iconftst"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      IMPLICIT CHARACTER (c)
+!     Comments in test programs should be freeform compliant just in case.
+!     conftest.inc contains the Fortran statement "REAL cc"
+#include "conftest.inc"
+      cc=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_i=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       rm -rf conftst
+       FPPFLAGS=$ac_save_FPPFLAGS
+    fi
+
+    if test $ac_fpp_need_subs = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define NM xxxx
+
+      program main
+      IMPLICIT CHARACTER (n)
+      REAL xxxx
+      NM=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_subs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_wrap = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define LONG '901234567890123456789012345678901234567890123456789012345678901234567890'
+
+      program main
+      CHARACTER*80 A
+      A=LONG
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_wrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_CSTYLE = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      A=1. /* C-style comment */
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_CSTYLE=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+fi
+echo "$as_me:$LINENO: result: done." >&5
+echo "${ECHO_T}done." >&6
+
+
+else
+  ac_fpp_equals_fc=yes
+fi
+
+if test $ac_fpp_need_d = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP accepts -D" >&5
+echo $ECHO_N "checking whether $FPP accepts -D... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_d+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_d=$ac_prog_fc_cpp_d
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_d" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_d" >&6
+fi
+
+if test $ac_fpp_need_i = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP accepts -I" >&5
+echo $ECHO_N "checking whether $FPP accepts -I... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_i+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_i=$ac_prog_fc_cpp_i
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_i" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_i" >&6
+fi
+
+if test $ac_fpp_need_subs = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP substitutes macros in Fortran code" >&5
+echo $ECHO_N "checking whether $FPP substitutes macros in Fortran code... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_subs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_subs=$ac_prog_fc_cpp_subs
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_subs" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_subs" >&6
+fi
+
+if test $ac_fpp_need_wrap = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP wraps long lines automatically" >&5
+echo $ECHO_N "checking whether $FPP wraps long lines automatically... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_wrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_wrap=$ac_prog_fc_cpp_wrap
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_wrap" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_wrap" >&6
+fi
+
+if test $ac_fpp_need_CSTYLE = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP suppresses C-style comments" >&5
+echo $ECHO_N "checking whether $FPP suppresses C-style comments... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_CSTYLE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_CSTYLE=$ac_prog_fc_cpp_CSTYLE
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_CSTYLE" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_CSTYLE" >&6
+
+elif test $ac_fpp_need_cstyle = yes; then
+# It only makes sense to test this for indirect compilation,
+# i.e., if .f files are generated
+    echo "$as_me:$LINENO: checking how to pass C-style comments to $FC" >&5
+echo $ECHO_N "checking how to pass C-style comments to $FC... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_cstyle+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_cstyle=unknown
+
+cat > conftest.$ac_ext << \_ACEOF
+
+      program main
+
+      A=1. /* C-style comment */
+
+      end
+_ACEOF
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+ac_cmd='$FPP $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"
+if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+   cat conftest.f | grep '[*]/.*[*]/' >/dev/null 2>&1; then
+   ac_cv_prog_fpp_cstyle=
+else
+   ac_save_FPPFLAGS=$FPPFLAGS
+   ac_name=`expr "x$FPP" : 'x\(fpp\)'`
+   if test "x$ac_name" = xfpp; then
+     ac_flag="-c_com=no"
+   else
+     ac_flag="-C"
+   fi
+   FPPFLAGS="$FPPFLAGS $ac_flag"
+   ac_cmd='$FPP $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"
+   if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+     cat conftest.f | grep '/[*].*[*]/' >/dev/null 2>&1; then
+     ac_cv_prog_fpp_cstyle=$ac_flag
+   fi
+   FPPFLAGS=$ac_save_FPPFLAGS
+fi
+rm -f conftest*
+ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_cstyle" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_cstyle" >&6
+if test "x$ac_cv_prog_fpp_cstyle" = "xunknown"; then
+  { echo "$as_me:$LINENO: WARNING: cannot find a way to make $FPP pass C-style comments" >&5
+echo "$as_me: WARNING: cannot find a way to make $FPP pass C-style comments" >&2;}
+else
+  FPPFLAGS="$FPPFLAGS $ac_cv_prog_fpp_cstyle"
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking whether $FPP fulfills requested features" >&5
+echo $ECHO_N "checking whether $FPP fulfills requested features... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_ok+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_ok=$ac_fpp_ok
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_ok" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_ok" >&6
+
+# We have all necessary information.
+# It remains to construct optimal build rules
+# (direct: .F.o or indirect: .F.f)
+# and carry out the substitutions.
+echo "$as_me:$LINENO: checking how to build from preprocessed Fortran sources" >&5
+echo $ECHO_N "checking how to build from preprocessed Fortran sources... $ECHO_C" >&6
+if test "${ac_cv_fpp_build_rule+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_fpp_build_rule=
+if test $ac_cv_prog_fc_cpp_ok = yes; then
+   ac_cv_fpp_build_rule=direct
+   ac_fpp_status=ok
+elif test $ac_cv_prog_fpp_ok = yes; then
+   ac_cv_fpp_build_rule=indirect
+   ac_fpp_status=ok
+elif test $ac_cv_prog_fc_cpp = no -a $ac_cv_prog_fpp = no; then
+   ac_cv_fpp_build_rule=
+   ac_fpp_status=fatal
+elif test $ac_cv_prog_fc_cpp = no; then
+   ac_cv_fpp_build_rule=indirect
+   ac_fpp_status=fail
+elif test -z "$ac_cv_prog_fpp"; then
+   ac_cv_fpp_build_rule=direct
+   ac_fpp_status=fail
+elif test $ac_fpp_equals_fc = yes; then
+   ac_cv_fpp_build_rule=direct
+   ac_fpp_status=fail
+else
+   ac_fpp_status=fail
+# Both methods - direct and indirect - fail to meet some requirements
+# We use a simple approach to choose the best alternative
+   ac_fc_score=0
+   ac_fpp_score=0
+   for ac_i in d i subs wrap cstyle CSTYLE; do
+      ac_tmp="\$ac_fpp_need_$ac_i"
+      ac_need=`eval echo $ac_tmp`
+      if test $ac_need = yes; then
+        ac_tmp="\$ac_cv_prog_fc_cpp_$ac_i"
+        ac_v_fc=`eval echo $ac_tmp`
+        ac_tmp="\$ac_cv_prog_fpp_$ac_i"
+        ac_v_fpp=`eval echo $ac_tmp`
+        test "x$ac_v_fc" = xyes && ac_fc_score=`expr $ac_fc_score + 1`
+        test "x$ac_v_fpp" = xyes && ac_fpp_score=`expr $ac_fpp_score + 1`
+      fi
+   done
+   if test $ac_fpp_score -gt $ac_fc_score; then
+     ac_cv_fpp_build_rule=indirect
+   else
+     ac_cv_fpp_build_rule=direct
+   fi
+fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_build_rule" >&5
+echo "${ECHO_T}$ac_cv_fpp_build_rule" >&6
+
+if test -z "$ac_fpp_status"; then
+    # must be non-empty below
+    ac_fpp_status=cached
+fi
+
+if test $ac_fpp_status = fatal; then
+
+  { { echo "$as_me:$LINENO: error: cannot find a valid build rule for Fortran/cpp source: consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&5
+echo "$as_me: error: cannot find a valid build rule for Fortran/cpp source: consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&2;}
+   { (exit 1); exit 1; }; }
+
+elif test $ac_fpp_status = fail; then
+
+  { echo "$as_me:$LINENO: WARNING: cannot find a build rule for Fortran/cpp source that fulfills all requirements.  The compilation may fail or run time errors may arise.  Consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&5
+echo "$as_me: WARNING: cannot find a build rule for Fortran/cpp source that fulfills all requirements.  The compilation may fail or run time errors may arise.  Consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&2;}
+
+fi
+
+# Before we go any further, check that we're not courting disaster,
+# here, by using indirect compilation (.F -> .f -> .o) on a
+# case-insensitive filesystem.  If we are, there's nothing we can do
+# other than fail noisily.
+if test $ac_cv_fpp_build_rule = indirect; then
+    echo "$as_me:$LINENO: checking whether the filesystem is case-insensitive" >&5
+echo $ECHO_N "checking whether the filesystem is case-insensitive... $ECHO_C" >&6
+if test "${ac_cv_fc_cifs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f conftest.*
+        echo wibble >conftest.F
+        ac_cv_fc_cifs=no
+        if test -f conftest.f -a `cat conftest.f` = wibble; then
+            ac_cv_fc_cifs=yes
+        fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_cifs" >&5
+echo "${ECHO_T}$ac_cv_fc_cifs" >&6
+    if test $ac_cv_fc_cifs = yes; then
+        { { echo "$as_me:$LINENO: error: disaster: this Fortran needs indirect compilation, but we
+ have a case-insensitive filesystem, so .F -> .f would fail; further compilation isn't going to work -- consider filing a bug" >&5
+echo "$as_me: error: disaster: this Fortran needs indirect compilation, but we
+ have a case-insensitive filesystem, so .F -> .f would fail; further compilation isn't going to work -- consider filing a bug" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+fi
+
+# The flags here are those included in the 'compile' field of the
+# 'ppfc' language in automake.in, minus the {AM_,}FCFLAGS variables.
+# It's not _absolutely_ guaranteed that these are the correct ones,
+# and I (NG) would be open to argument about both {AM_,}CPPFLAGS and
+# {AM_,}FCFLAGS, but this set appears to work.  The .f_in extension
+# doesn't mean anything particular, but it's a useful and harmless
+# default, which can potentially be used in a user rule for an
+# explicit preprocessing step.
+if test $ac_cv_fpp_build_rule = direct; then
+    FPP_COMPILE_EXT=$FPP_SRC_EXT
+    FPP_PREPROCESS_EXT=f_in
+    FPP_MAKE_FLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)'
+else
+    FPP_COMPILE_EXT=DUMMYf
+    FPP_PREPROCESS_EXT=$FPP_SRC_EXT
+
+#  PWD: seem to need mainly for getting DEFAULT_INCLUDES and INCLUDES
+#  to the FC compiler (i.e $FC -I$(INCLUDES) to get local include files).
+    FPP_MAKE_FLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS)'
+fi
+if test -z "$ac_fpp_out"; then
+   FPP_OUTPUT=" "
+else
+   FPP_OUTPUT=">\$@"
+fi
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi;
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 6748 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to ussc@star.rl.ac.uk ##
+## --------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' f90 xlf90 pgf90 epcf90 g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' f90 xlf90 pgf90 epcf90 g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:8093:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+
+ac_mod_ext=
+ac_fc_mod_uppercase=no
+cat > conftest.$ac_ext << \_ACEOF
+      module conftest
+       implicit none
+       integer :: i
+      end module conftest
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+echo "$as_me:$LINENO: checking for suffix of module files" >&5
+echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6
+for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none
+do
+  if test -f $ac_mod_file; then
+    break;
+  fi
+done
+rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD
+#
+case $ac_mod_file in
+  conftest.mod)
+    ac_mod_ext=mod
+    ;;
+  conftest.MOD)
+    ac_mod_ext=MOD
+    ;;
+  conftest.M)
+    ac_mod_ext=M
+    ;;
+  CONFTEST.MOD)
+    ac_mod_ext=MOD
+    ac_fc_mod_uppercase=yes
+    ;;
+  none)
+    { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5
+echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;}
+    ;;
+esac
+
+if test $ac_mod_file != none; then
+  echo "$as_me:$LINENO: result: $ac_mod_ext" >&5
+echo "${ECHO_T}$ac_mod_ext" >&6
+fi
+if test $ac_fc_mod_uppercase = yes; then
+  { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5
+echo "$as_me: Fortran module filenames are uppercase." >&6;}
+fi
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDGIRSTW]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDRT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AR=$ac_ct_AR
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    lt_prog_cc_shlib='-belf'
+    ;;
+  esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | grep "[ 	]$lt_prog_cc_shlib[ 	]" >/dev/null; then :
+  else
+    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+       $SED '/^$/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works=yes
+       fi
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9247: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:9251: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic='-qnocommon'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic='-Kpic'
+      lt_prog_compiler_static='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9509: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:9513: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9571: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:9575: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L=yes
+  	  hardcode_libdir_flag_spec='-L$libdir'
+  	  hardcode_libdir_separator=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec=' '
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc=no
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec=''
+      link_all_deplibs=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+archive_cmds='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      hardcode_shlibpath_var=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec=
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc=no
+        else
+	  archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var" || \
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 11816 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 11914 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+  withval="$with_tags"
+  tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct_CXX=yes
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	fi
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	no_undefined_flag_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	always_export_symbols_CXX=yes
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX=' '
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      archive_cmds_need_lc_CXX=no
+      hardcode_direct_CXX=no
+      hardcode_automatic_CXX=yes
+      hardcode_shlibpath_var_CXX=unsupported
+      whole_archive_flag_spec_CXX=''
+      link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+        module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_CXX=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | kfreebsd*-gnu | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC*)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+	hardcode_libdir_separator_CXX=:
+        ;;
+      ia64*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+        ;;
+      *)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      aCC*)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	archive_cmds_need_lc_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    ld_shlibs_CXX=no
+    ;;
+  openbsd*)
+    hardcode_direct_CXX=yes
+    hardcode_shlibpath_var_CXX=no
+    archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      export_dynamic_flag_spec_CXX='${wl}-E'
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sco*)
+    archive_cmds_need_lc_CXX=no
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           lt_prog_compiler_pic_CXX='-qnocommon'
+           lt_prog_compiler_wl_CXX='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14162: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:14166: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14224: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:14228: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var_CXX" || \
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 15593 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 15691 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-fpic'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_F77='-Kpic'
+      lt_prog_compiler_static_F77='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16576: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16580: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16638: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:16642: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_F77=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77=' '
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+archive_cmds_F77='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_F77='-L$libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_F77=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_F77=
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var_F77" || \
+   test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:18765: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:18769: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_GCJ='-qnocommon'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-fpic'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_GCJ='-Kpic'
+      lt_prog_compiler_static_GCJ='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19027: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:19031: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19089: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:19093: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_GCJ=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_GCJ=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ=' '
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_GCJ=no
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ=''
+      link_all_deplibs_GCJ=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+archive_cmds_GCJ='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_GCJ=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_GCJ=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_GCJ=
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 21334 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 21432 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test x$pic_mode = xno; then
+  NOPIC_TRUE=
+  NOPIC_FALSE='#'
+else
+  NOPIC_TRUE='#'
+  NOPIC_FALSE=
+fi
+
+
+
+$_star_docs_only && { { echo "$as_me:$LINENO: error: STAR_PLATFORM_SOURCES in docs-only dir" >&5
+echo "$as_me: error: STAR_PLATFORM_SOURCES in docs-only dir" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking platform-specific source for file(s) random.F gresid.F wait.f" >&5
+echo $ECHO_N "checking platform-specific source for file(s) random.F gresid.F wait.f... $ECHO_C" >&6
+_star_tmp=
+for platform in __vms __win default
+do
+    if test $platform = NONE; then
+        # Special case -- no file required
+        _star_tmp=NONE
+        break;
+    fi
+    if test $platform = default; then
+        _star_tmp=default
+        break;
+    fi
+    if expr $build : `echo $platform | sed 's/_/.*-/g'` >/dev/null; then
+        _star_tmp=$platform
+        break;
+    fi
+done
+if test -z "$_star_tmp"; then
+    # Use default, but it wasn't listed in the platform-list
+    # (though it should have been)
+    { echo "$as_me:$LINENO: WARNING: build platform $build does not match any of (__vms __win default): using \`default'" >&5
+echo "$as_me: WARNING: build platform $build does not match any of (__vms __win default): using \`default'" >&2;}
+    _star_tmp=default
+fi
+if test $_star_tmp = NONE; then
+    echo "$as_me:$LINENO: result: none required" >&5
+echo "${ECHO_T}none required" >&6
+else
+    echo "$as_me:$LINENO: result: using $_star_tmp" >&5
+echo "${ECHO_T}using $_star_tmp" >&6
+    for _t in random.F gresid.F wait.f
+    do
+        if test -f $srcdir/$_t$_star_tmp; then
+            (cd $srcdir; rm -f $_t; $LN_S $_t$_star_tmp $_t)
+        else
+            { echo "$as_me:$LINENO: WARNING: platform $_star_tmp matched, but no file $_t$_star_tmp found" >&5
+echo "$as_me: WARNING: platform $_star_tmp matched, but no file $_t$_star_tmp found" >&2;}
+        fi
+    done
+fi
+
+
+if cmp -s random.F random.Fdefault; then
+    # The unix version, to be configured
+    found_random=false
+
+
+for ac_func in rand random
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ found_random=true
+fi
+done
+
+    if $found_random; then
+        : OK
+    else
+        case $LIBOBJS in
+    "rtl_random.$ac_objext"   | \
+  *" rtl_random.$ac_objext"   | \
+    "rtl_random.$ac_objext "* | \
+  *" rtl_random.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS rtl_random.$ac_objext" ;;
+esac
+
+    fi
+fi
+
+$_star_docs_only &&
+        { { echo "$as_me:$LINENO: error: STAR_CNF_COMPATIBLE_SYMBOLS in docs-only dir" >&5
+echo "$as_me: error: STAR_CNF_COMPATIBLE_SYMBOLS in docs-only dir" >&2;}
+   { (exit 1); exit 1; }; }
+    echo "$as_me:$LINENO: checking how to make Fortran and C play nicely" >&5
+echo $ECHO_N "checking how to make Fortran and C play nicely... $ECHO_C" >&6
+if test "${star_cv_cnf_compatible_symbols+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+                  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+void funcone_() { return; }
+void func_two_() { return; }
+
+_ACEOF
+        if (eval $ac_compile) 2>&5
+        then
+            mv conftest.$ac_objext c-conftest.$ac_objext
+        else
+            { { echo "$as_me:$LINENO: error: cannot compile a C program!" >&5
+echo "$as_me: error: cannot compile a C program!" >&2;}
+   { (exit 1); exit 1; }; }
+        fi
+        ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+        ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+        cat >conftest.$ac_ext <<_ACEOF
+
+      PROGRAM conftest
+      CALL funcone
+      CALL func_two
+      END
+
+_ACEOF
+        star_cv_cnf_compatible_symbols=cantlink
+        # The only Fortran we (need to) handle at present is
+        # g77, which has a -fno-second-underscore option for
+        # simplifying the mangling here.  Other Fortrans we've
+        # used do only the single-underscore mangling.
+        for opt in "" "-fno-second-underscore"
+        do
+            if $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5
+            then
+                star_cv_cnf_compatible_symbols=$opt
+                break
+            fi
+        done
+        ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+        rm -f conftest* c-conftest*
+
+fi
+echo "$as_me:$LINENO: result: $star_cv_cnf_compatible_symbols" >&5
+echo "${ECHO_T}$star_cv_cnf_compatible_symbols" >&6
+    if test "$star_cv_cnf_compatible_symbols" = cantlink
+    then
+        { { echo "$as_me:$LINENO: error: cannot work out how" >&5
+echo "$as_me: error: cannot work out how" >&2;}
+   { (exit 1); exit 1; }; }
+    else
+        STAR_FCFLAGS="$STAR_FCFLAGS $star_cv_cnf_compatible_symbols"
+        STAR_FFLAGS="$STAR_FFLAGS $star_cv_cnf_compatible_symbols"
+    fi
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+echo "$as_me:$LINENO: checking how to get verbose linking output from $FC" >&5
+echo $ECHO_N "checking how to get verbose linking output from $FC... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_v+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_v=
+# Try some options frequently used verbose output
+for ac_verb in -v -verbose --verbose -V -\#\#\#; do
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_verb"
+(eval echo $as_me:22801: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+  # look for -l* and *.a constructs in the output
+  for ac_arg in $ac_fc_v_output; do
+     case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+          ac_cv_prog_fc_v=$ac_verb
+          break 2 ;;
+     esac
+  done
+done
+if test -z "$ac_cv_prog_fc_v"; then
+   { echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $FC" >&5
+echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;}
+fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+echo "$as_me: WARNING: compilation failed" >&2;}
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_v" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_v" >&6
+echo "$as_me:$LINENO: checking for Fortran libraries of $FC" >&5
+echo $ECHO_N "checking for Fortran libraries of $FC... $ECHO_C" >&6
+if test "${ac_cv_fc_libs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$FCLIBS" != "x"; then
+  ac_cv_fc_libs="$FCLIBS" # Let the user override the test.
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
+(eval echo $as_me:22879: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+
+ac_cv_fc_libs=
+
+# Save positional arguments (if any)
+ac_save_positional="$@"
+
+set X $ac_fc_v_output
+while test $# != 1; do
+  shift
+  ac_arg=$1
+  case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+        -bI:*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_arg; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+fi
+
+          ;;
+          # Ignore these flags.
+        -lang* | -lcrt*.o | -lc | -lgcc | -libmil | -LANG:=*)
+          ;;
+        -lkernel32)
+          test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+          ;;
+        -[LRuY])
+          # These flags, when seen by themselves, take an argument.
+          # We remove the space between option and argument and re-iterate
+          # unless we find an empty arg or a new option (starting with -)
+	  case $2 in
+	     "" | -*);;
+	     *)
+		ac_arg="$ac_arg$2"
+		shift; shift
+		set X $ac_arg "$@"
+		;;
+	  esac
+          ;;
+        -YP,*)
+          for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+              ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_j" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_arg="$ac_arg $ac_j"
+                               ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
+fi
+
+          done
+          ;;
+        -[lLR]*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+          # Ignore everything else.
+  esac
+done
+# restore positional arguments
+set X $ac_save_positional; shift
+
+# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,
+# then we insist that the "run path" must be an absolute path (i.e. it
+# must begin with a "/").
+case `(uname -sr) 2>/dev/null` in
+   "SunOS 5"*)
+      ac_ld_run_path=`echo $ac_fc_v_output |
+                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+      test "x$ac_ld_run_path" != x &&
+        if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_ld_run_path; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_ld_run_path"
+fi
+      ;;
+esac
+fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_libs" >&5
+echo "${ECHO_T}$ac_cv_fc_libs" >&6
+FCLIBS="$ac_cv_fc_libs"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+echo "$as_me:$LINENO: checking for alternate main to link with Fortran libraries" >&5
+echo $ECHO_N "checking for alternate main to link with Fortran libraries... $ECHO_C" >&6
+if test "${ac_cv_fc_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_fc_m_save_LIBS=$LIBS
+ LIBS="$LIBS $FCLIBS"
+ ac_fortran_dm_var=FC_DUMMY_MAIN
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ ac_cv_fortran_main="main" # default entry point name
+ for ac_func in MAIN__ MAIN_ __main MAIN _MAIN __MAIN main_ main__ _main; do
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef FC_DUMMY_MAIN_EQ_F77
+#  undef F77_DUMMY_MAIN
+#  undef FC_DUMMY_MAIN
+#else
+#  undef $ac_fortran_dm_var
+#endif
+#define main $ac_func
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fortran_main=$ac_func; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+ done
+ ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+ ac_cv_fc_main=$ac_cv_fortran_main
+ rm -f conftest*
+ LIBS=$ac_fc_m_save_LIBS
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_main" >&5
+echo "${ECHO_T}$ac_cv_fc_main" >&6
+if test "$ac_cv_fc_main" != "main"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FC_MAIN 1
+_ACEOF
+
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define FC_MAIN $ac_cv_fc_main
+_ACEOF
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+echo "$as_me:$LINENO: checking how to get verbose linking output from $FC" >&5
+echo $ECHO_N "checking how to get verbose linking output from $FC... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_v+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_v=
+# Try some options frequently used verbose output
+for ac_verb in -v -verbose --verbose -V -\#\#\#; do
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_verb"
+(eval echo $as_me:23203: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+  # look for -l* and *.a constructs in the output
+  for ac_arg in $ac_fc_v_output; do
+     case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+          ac_cv_prog_fc_v=$ac_verb
+          break 2 ;;
+     esac
+  done
+done
+if test -z "$ac_cv_prog_fc_v"; then
+   { echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $FC" >&5
+echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;}
+fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+echo "$as_me: WARNING: compilation failed" >&2;}
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_v" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_v" >&6
+echo "$as_me:$LINENO: checking for Fortran libraries of $FC" >&5
+echo $ECHO_N "checking for Fortran libraries of $FC... $ECHO_C" >&6
+if test "${ac_cv_fc_libs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$FCLIBS" != "x"; then
+  ac_cv_fc_libs="$FCLIBS" # Let the user override the test.
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
+(eval echo $as_me:23281: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+
+ac_cv_fc_libs=
+
+# Save positional arguments (if any)
+ac_save_positional="$@"
+
+set X $ac_fc_v_output
+while test $# != 1; do
+  shift
+  ac_arg=$1
+  case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+        -bI:*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_arg; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+fi
+
+          ;;
+          # Ignore these flags.
+        -lang* | -lcrt*.o | -lc | -lgcc | -libmil | -LANG:=*)
+          ;;
+        -lkernel32)
+          test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+          ;;
+        -[LRuY])
+          # These flags, when seen by themselves, take an argument.
+          # We remove the space between option and argument and re-iterate
+          # unless we find an empty arg or a new option (starting with -)
+	  case $2 in
+	     "" | -*);;
+	     *)
+		ac_arg="$ac_arg$2"
+		shift; shift
+		set X $ac_arg "$@"
+		;;
+	  esac
+          ;;
+        -YP,*)
+          for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+              ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_j" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_arg="$ac_arg $ac_j"
+                               ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
+fi
+
+          done
+          ;;
+        -[lLR]*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+          # Ignore everything else.
+  esac
+done
+# restore positional arguments
+set X $ac_save_positional; shift
+
+# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,
+# then we insist that the "run path" must be an absolute path (i.e. it
+# must begin with a "/").
+case `(uname -sr) 2>/dev/null` in
+   "SunOS 5"*)
+      ac_ld_run_path=`echo $ac_fc_v_output |
+                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+      test "x$ac_ld_run_path" != x &&
+        if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_ld_run_path; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_ld_run_path"
+fi
+      ;;
+esac
+fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_libs" >&5
+echo "${ECHO_T}$ac_cv_fc_libs" >&6
+FCLIBS="$ac_cv_fc_libs"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#  Perform the check that configures f77.h.in for the return type of REAL
+#  Fortran functions. On 64-bit g77 with f2c compatibility this is double
+#  not float.
+$_star_docs_only &&
+        { { echo "$as_me:$LINENO: error: STAR_CNF_F2C_SYMBOLS in docs-only dir" >&5
+echo "$as_me: error: STAR_CNF_F2C_SYMBOLS in docs-only dir" >&2;}
+   { (exit 1); exit 1; }; }
+    echo "$as_me:$LINENO: checking if $FC is in strict f2c compatible mode" >&5
+echo $ECHO_N "checking if $FC is in strict f2c compatible mode... $ECHO_C" >&6
+if test "${star_cv_cnf_f2c_compatible+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+          if test "$ac_cv_fc_compiler_gnu" = yes; then
+                      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+float fred_() {
+   return 1.0f;
+}
+
+_ACEOF
+           if (eval $ac_compile) 2>&5
+           then
+               mv conftest.$ac_objext c-conftest.$ac_objext
+           else
+               { { echo "$as_me:$LINENO: error: cannot compile a C function!" >&5
+echo "$as_me: error: cannot compile a C function!" >&2;}
+   { (exit 1); exit 1; }; }
+           fi
+           ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+           ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+           cat >conftest.$ac_ext <<_ACEOF
+
+      PROGRAM F2CTEST
+      REAL FRED
+      REAL R
+      R = FRED()
+      IF ( R .NE. 0.0 ) THEN
+         WRITE(*,*) 'no'
+      ELSE
+         WRITE(*,*) 'yes'
+      ENDIF
+      END
+
+_ACEOF
+           star_cv_cnf_f2c_compatible=yes
+           $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5
+           if test -r conftest
+           then
+              star_cv_cnf_f2c_compatible=`eval conftest | sed 's/\ //g'` > /dev/null
+           else
+              { { echo "$as_me:$LINENO: error: failed to link program" >&5
+echo "$as_me: error: failed to link program" >&2;}
+   { (exit 1); exit 1; }; }
+           fi
+           ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+           rm -f conftest* c-conftest*
+      else
+         # Not a GNU compiler.
+         star_cv_cnf_f2c_compatible=no
+      fi
+
+fi
+echo "$as_me:$LINENO: result: $star_cv_cnf_f2c_compatible" >&5
+echo "${ECHO_T}$star_cv_cnf_f2c_compatible" >&6
+    if test "$star_cv_cnf_f2c_compatible" = "yes"
+    then
+        REAL_FUNCTION_TYPE=double
+
+    else
+        REAL_FUNCTION_TYPE=float
+
+    fi
+
+
+          ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+    STAR_DOCUMENTATION="$STAR_DOCUMENTATION sun67"
+            if $_star_build_docs; then
+            STAR_LATEX_DOCUMENTATION="$STAR_LATEX_DOCUMENTATION sun67.tex sun67.ps sun67.htx_tar"
+
+        fi
+              for _star_tmp in star2html
+  do
+    STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN<sourceset>$_star_tmp</sourceset>"
+  done
+
+        eval default_bindir=`echo $bindir | sed 's,\${exec_prefix},$ac_default_prefix,'`
+
+                      # Extract the first word of "star2html", so it can be a program name with args.
+set dummy star2html; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_STAR2HTML+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $STAR2HTML in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_STAR2HTML="$STAR2HTML" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$STARLINK/Perl/bin:$STARLINK/starjava/bin:$STARLINK/bin:$default_bindir:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_STAR2HTML="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_STAR2HTML" && ac_cv_path_STAR2HTML="star2html"
+  ;;
+esac
+fi
+STAR2HTML=$ac_cv_path_STAR2HTML
+
+if test -n "$STAR2HTML"; then
+  echo "$as_me:$LINENO: result: $STAR2HTML" >&5
+echo "${ECHO_T}$STAR2HTML" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+
+
+    if $_star_build_docs; then
+        : ${LATEX2DVI='$$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1"'}
+
+    else
+        { echo "$as_me:$LINENO: WARNING: not installing docs sun67" >&5
+echo "$as_me: WARNING: not installing docs sun67" >&2;}
+    fi
+
+
+                                                  ac_config_files="$ac_config_files Makefile component.xml vers.f veri.f f77.h"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${NOPIC_TRUE}" && test -z "${NOPIC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"NOPIC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"NOPIC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by sla $as_me 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+sla config.status 2.5-4
+configured by $0, generated by Starlink Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "component.xml" ) CONFIG_FILES="$CONFIG_FILES component.xml" ;;
+  "vers.f" ) CONFIG_FILES="$CONFIG_FILES vers.f" ;;
+  "veri.f" ) CONFIG_FILES="$CONFIG_FILES veri.f" ;;
+  "f77.h" ) CONFIG_FILES="$CONFIG_FILES f77.h" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@libsla_la_version_info@,$libsla_la_version_info,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@CYGPATH_W@,$CYGPATH_W,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@ACLOCAL@,$ACLOCAL,;t t
+s,@AUTOCONF@,$AUTOCONF,;t t
+s,@AUTOMAKE@,$AUTOMAKE,;t t
+s,@AUTOHEADER@,$AUTOHEADER,;t t
+s,@MAKEINFO@,$MAKEINFO,;t t
+s,@install_sh@,$install_sh,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
+s,@AWK@,$AWK,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
+s,@STARLINK@,$STARLINK,;t t
+s,@STAR_CPPFLAGS@,$STAR_CPPFLAGS,;t t
+s,@STAR_FCFLAGS@,$STAR_FCFLAGS,;t t
+s,@STAR_FFLAGS@,$STAR_FFLAGS,;t t
+s,@STAR_LDFLAGS@,$STAR_LDFLAGS,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@DEPDIR@,$DEPDIR,;t t
+s,@am__include@,$am__include,;t t
+s,@am__quote@,$am__quote,;t t
+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s,@CCDEPMODE@,$CCDEPMODE,;t t
+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@FC@,$FC,;t t
+s,@FCFLAGS@,$FCFLAGS,;t t
+s,@ac_ct_FC@,$ac_ct_FC,;t t
+s,@C_FC_FCLINK_MAGIC@,$C_FC_FCLINK_MAGIC,;t t
+s,@C_FC_PPFC_FCLINK_MAGIC@,$C_FC_PPFC_FCLINK_MAGIC,;t t
+s,@stardocsdir@,$stardocsdir,;t t
+s,@staretcdir@,$staretcdir,;t t
+s,@starexamplesdir@,$starexamplesdir,;t t
+s,@starfacsdir@,$starfacsdir,;t t
+s,@starhelpdir@,$starhelpdir,;t t
+s,@starnewsdir@,$starnewsdir,;t t
+s,@STAR_DEPENDENCIES_ATTRIBUTES@,$STAR_DEPENDENCIES_ATTRIBUTES,;t t
+s,@STAR_DEPENDENCIES_CHILDREN@,$STAR_DEPENDENCIES_CHILDREN,;t t
+s,@STAR_DOCUMENTATION@,$STAR_DOCUMENTATION,;t t
+s,@PACKAGE_VERSION_MAJOR@,$PACKAGE_VERSION_MAJOR,;t t
+s,@PACKAGE_VERSION_MINOR@,$PACKAGE_VERSION_MINOR,;t t
+s,@PACKAGE_VERSION_RELEASE@,$PACKAGE_VERSION_RELEASE,;t t
+s,@PACKAGE_VERSION_INTEGER@,$PACKAGE_VERSION_INTEGER,;t t
+s,@STAR_MANIFEST_DIR@,$STAR_MANIFEST_DIR,;t t
+s,@PREDIST@,$PREDIST,;t t
+s,@PAX@,$PAX,;t t
+s,@TAR@,$TAR,;t t
+s,@CPP@,$CPP,;t t
+s,@FPPFLAGS_F@,$FPPFLAGS_F,;t t
+s,@FPPFLAGS_DEF@,$FPPFLAGS_DEF,;t t
+s,@FPP@,$FPP,;t t
+s,@FPPFLAGS@,$FPPFLAGS,;t t
+s,@FPP_OUTPUT@,$FPP_OUTPUT,;t t
+s,@FPP_MAKE_FLAGS@,$FPP_MAKE_FLAGS,;t t
+s,@FPP_COMPILE_EXT@,$FPP_COMPILE_EXT,;t t
+s,@FPP_PREPROCESS_EXT@,$FPP_PREPROCESS_EXT,;t t
+s,@FPP_SRC_EXT@,$FPP_SRC_EXT,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@NOPIC_TRUE@,$NOPIC_TRUE,;t t
+s,@NOPIC_FALSE@,$NOPIC_FALSE,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@FCLIBS@,$FCLIBS,;t t
+s,@REAL_FUNCTION_TYPE@,$REAL_FUNCTION_TYPE,;t t
+s,@STAR2HTML@,$STAR2HTML,;t t
+s,@LATEX2DVI@,$LATEX2DVI,;t t
+s,@STAR_LATEX_DOCUMENTATION@,$STAR_LATEX_DOCUMENTATION,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X$ac_file : 'X\(//\)[^/]' \| \
+	 X$ac_file : 'X\(//\)$' \| \
+	 X$ac_file : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_dest" : 'X\(//\)[^/]' \| \
+	 X"$ac_dest" : 'X\(//\)$' \| \
+	 X"$ac_dest" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000000000000000000000000000000000000..1cd18f2ef40f6f89abbaef2668e638dbbd6e191a
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,95 @@
+dnl    Process this file with autoconf to produce a configure script
+AC_REVISION($Revision: 1.15 $)
+
+dnl    Initialisation: package name and version number
+AC_INIT(sla, 2.5-4, ussc@star.rl.ac.uk)
+# Version-info specifications.  See SSN/78 for guidelines, and update the table
+# below for ANY change of version number.
+#
+# The library version numbers below match PTW's LIB_VERS 1.6 and 1.7
+# respectively, as it happens.  There is no need to continue this pattern
+# with any future changes, since these should respect the rather different
+# rules for the -version-info numbers.  Instead the PTW makefile LIB_VERS
+# changes should be regarded as guidelines for which changes are and are
+# not backwards-compatible.
+#
+#   Release    libsla.la
+#    2.4-12       6:0:0
+#    2.5-2        7:0:0
+AC_SUBST(libsla_la_version_info, 7:0:0)
+
+dnl    Require autoconf-2.50 at least
+AC_PREREQ(2.50)
+dnl    Require automake-1.8.2-starlink at least
+AM_INIT_AUTOMAKE(1.8.2-starlink)
+
+dnl    Sanity-check: name a file in the source directory -- if this
+dnl    isn't found then configure will complain
+AC_CONFIG_SRCDIR([sla_link])
+
+dnl    Include defaults for Starlink configurations
+STAR_DEFAULTS
+
+dnl    Find required versions of the programs we need for configuration
+AC_PROG_FC
+AC_PROG_FPP
+AC_PROG_LIBTOOL
+
+dnl    If --with-pic=no is set we should honour that.
+AM_CONDITIONAL(NOPIC, test x$pic_mode = xno)
+
+dnl    Platform-dependent/preprocessed sources.  This is slightly
+dnl    subtle: file random.F is a preprocessable file.  However,
+dnl    there are also versions available for VAX/VMS
+dnl    (random.F__vms) and Microsoft Fortran (random.F__win), and
+dnl    these are sufficiently distinct that it's not worth just
+dnl    configuring the function name.
+dnl
+dnl    The random and gresid VMS and Windows files have a .F
+dnl    extension: there's no preprocessable code in them, but they
+dnl    have to have the same name as the file which does have.
+dnl
+dnl    Problem: Is the code in the *__win files specific to Windows
+dnl    or to MSFortran?  Since you'd only get MSFortran on Windows, I
+dnl    suppose it's the former (or might as well be).
+dnl    
+dnl    The __vms files will never be matched by this macro (will the
+dnl    __win files?), since config.guess doesn't cover VMS at all, but
+dnl    the following, as well as documenting the relationship, also
+dnl    causes the corresponding files to be included in the
+dnl    distribution, where they might be of use to someone.
+STAR_PLATFORM_SOURCES([random.F gresid.F wait.f],
+                      [__vms __win default])
+
+if cmp -s random.F random.Fdefault; then
+    # The unix version, to be configured
+    found_random=false
+    AC_CHECK_FUNCS([rand random], [found_random=true])
+    if $found_random; then
+        : OK
+    else
+        AC_LIBOBJ([rtl_random])
+    fi
+fi
+
+STAR_CNF_COMPATIBLE_SYMBOLS
+
+dnl   We need this for the tests
+AC_FC_MAIN
+AC_FC_LIBRARY_LDFLAGS
+
+#  Perform the check that configures f77.h.in for the return type of REAL
+#  Fortran functions. On 64-bit g77 with f2c compatibility this is double
+#  not float.
+STAR_CNF_F2C_COMPATIBLE
+
+AC_CONFIG_HEADERS([config.h])
+
+dnl    Declare the build and use dependencies for this package
+dnl    There are neither build nor use dependencies
+
+STAR_LATEX_DOCUMENTATION(sun67)
+
+AC_CONFIG_FILES(Makefile component.xml vers.f veri.f f77.h)
+
+AC_OUTPUT
diff --git a/configure~ b/configure~
new file mode 100755
index 0000000000000000000000000000000000000000..24a0eaf37a7270574f101f4c4814fad3c8ff27f9
--- /dev/null
+++ b/configure~
@@ -0,0 +1,25106 @@
+#! /bin/sh
+# From configure.ac Revision: 1.15 .
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by Starlink Autoconf 2.59 for sla 2.5-4.
+#
+# Report bugs to <ussc@star.rl.ac.uk>.
+#
+# Copyright (C) 2003 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_config_libobj_dir=.
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete.  It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+# Identity of this package.
+PACKAGE_NAME='sla'
+PACKAGE_TARNAME='sla'
+PACKAGE_VERSION='2.5-4'
+PACKAGE_STRING='sla 2.5-4'
+PACKAGE_BUGREPORT='ussc@star.rl.ac.uk'
+
+ac_unique_file="sla_link"
+ac_default_prefix=/home/vmwareshare/rhel30linux_i386/build/build-root
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#if HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#if STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# if HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#if HAVE_STRING_H
+# if !STDC_HEADERS && HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#if HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+#  include <stdint.h>
+# endif
+#endif
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libsla_la_version_info INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar STARLINK STAR_CPPFLAGS STAR_FCFLAGS STAR_FFLAGS STAR_LDFLAGS build build_cpu build_vendor build_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE FC FCFLAGS ac_ct_FC C_FC_FCLINK_MAGIC C_FC_PPFC_FCLINK_MAGIC stardocsdir staretcdir starexamplesdir starfacsdir starhelpdir starnewsdir STAR_DEPENDENCIES_ATTRIBUTES STAR_DEPENDENCIES_CHILDREN STAR_DOCUMENTATION PACKAGE_VERSION_MAJOR PACKAGE_VERSION_MINOR PACKAGE_VERSION_RELEASE PACKAGE_VERSION_INTEGER STAR_MANIFEST_DIR PREDIST PAX TAR CPP FPPFLAGS_F FPPFLAGS_DEF FPP FPPFLAGS FPP_OUTPUT FPP_MAKE_FLAGS FPP_COMPILE_EXT FPP_PREPROCESS_EXT FPP_SRC_EXT host host_cpu host_vendor host_os EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL NOPIC_TRUE NOPIC_FALSE LIBOBJS FCLIBS REAL_FUNCTION_TYPE STAR2HTML LATEX2DVI STAR_LATEX_DOCUMENTATION LTLIBOBJS'
+ac_subst_files=''
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+ac_prev=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_option in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    eval "enable_$ac_feature=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_$ac_feature='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case $ac_option in
+      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_$ac_package='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/-/_/g'`
+    eval "with_$ac_package=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+    eval "$ac_envvar='$ac_optarg'"
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+	      localstatedir libdir includedir oldincludedir infodir mandir
+do
+  eval ac_val=$`echo $ac_var`
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* ) ;;
+    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_confdir=`(dirname "$0") 2>/dev/null ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+  fi
+fi
+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null ||
+  { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2
+   { (exit 1); exit 1; }; }
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_STARLINK_set=${STARLINK+set}
+ac_env_STARLINK_value=$STARLINK
+ac_cv_env_STARLINK_set=${STARLINK+set}
+ac_cv_env_STARLINK_value=$STARLINK
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_FC_set=${FC+set}
+ac_env_FC_value=$FC
+ac_cv_env_FC_set=${FC+set}
+ac_cv_env_FC_value=$FC
+ac_env_FCFLAGS_set=${FCFLAGS+set}
+ac_env_FCFLAGS_value=$FCFLAGS
+ac_cv_env_FCFLAGS_set=${FCFLAGS+set}
+ac_cv_env_FCFLAGS_value=$FCFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+ac_env_F77_set=${F77+set}
+ac_env_F77_value=$F77
+ac_cv_env_F77_set=${F77+set}
+ac_cv_env_F77_value=$F77
+ac_env_FFLAGS_set=${FFLAGS+set}
+ac_env_FFLAGS_value=$FFLAGS
+ac_cv_env_FFLAGS_set=${FFLAGS+set}
+ac_cv_env_FFLAGS_value=$FFLAGS
+ac_env_STAR2HTML_set=${STAR2HTML+set}
+ac_env_STAR2HTML_value=$STAR2HTML
+ac_cv_env_STAR2HTML_set=${STAR2HTML+set}
+ac_cv_env_STAR2HTML_value=$STAR2HTML
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures sla 2.5-4 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+_ACEOF
+
+  cat <<_ACEOF
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --infodir=DIR          info documentation [PREFIX/info]
+  --mandir=DIR           man documentation [PREFIX/man]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of sla 2.5-4:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-shared[=PKGS]
+                          build shared libraries [default=yes]
+  --enable-static[=PKGS]
+                          build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-starlink         Starlink tree to use (default
+                          ${STARLINK:=/home/vmwareshare/rhel30linux_i386/build/build-root})
+  --without-stardocs      Do not install built documentation (default --with)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]
+                          include additional configurations [automatic]
+
+Some influential environment variables:
+  STARLINK    Location of a current Starlink tree (used if necessary)
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  FC          Fortran compiler command
+  FCFLAGS     Fortran compiler flags
+  CPP         C preprocessor
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  STAR2HTML   Location of the star2html application
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <ussc@star.rl.ac.uk>.
+_ACEOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  ac_popdir=`pwd`
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d $ac_dir || continue
+    ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+    cd $ac_dir
+    # Check for guested configure; otherwise get Cygnus style configure.
+    if test -f $ac_srcdir/configure.gnu; then
+      echo
+      $SHELL $ac_srcdir/configure.gnu  --help=recursive
+    elif test -f $ac_srcdir/configure; then
+      echo
+      $SHELL $ac_srcdir/configure  --help=recursive
+    elif test -f $ac_srcdir/configure.ac ||
+	   test -f $ac_srcdir/configure.in; then
+      echo
+      $ac_configure --help
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi
+    cd $ac_popdir
+  done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+  cat <<\_ACEOF
+sla configure 2.5-4
+generated by Starlink Autoconf 2.59
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit 0
+fi
+exec 5>config.log
+cat >&5 <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by sla $as_me 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_sep=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+      # Get rid of the leading space.
+      ac_sep=" "
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Be sure not to use single quotes in there, as some shells,
+# such as our DU 5.0 friend, will then `close' the trap.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+{
+  (set) 2>&1 |
+    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      sed -n \
+	"s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+      ;;
+    *)
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+}
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=$`echo $ac_var`
+      echo "$ac_var='"'"'$ac_val'"'"'"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------- ##
+## Output files. ##
+## ------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=$`echo $ac_var`
+	echo "$ac_var='"'"'$ac_val'"'"'"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      sed "/^$/d" confdefs.h | sort
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core &&
+  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+     ' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . $cache_file;;
+      *)                      . ./$cache_file;;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+	       sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+  eval ac_new_val="\$ac_env_${ac_var}_value"
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Version-info specifications.  See SSN/78 for guidelines, and update the table
+# below for ANY change of version number.
+#
+# The library version numbers below match PTW's LIB_VERS 1.6 and 1.7
+# respectively, as it happens.  There is no need to continue this pattern
+# with any future changes, since these should respect the rather different
+# rules for the -version-info numbers.  Instead the PTW makefile LIB_VERS
+# changes should be regarded as guidelines for which changes are and are
+# not backwards-compatible.
+#
+#   Release    libsla.la
+#    2.4-12       6:0:0
+#    2.5-2        7:0:0
+libsla_la_version_info=7:0:0
+
+
+
+am__api_version="1.9"
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f $ac_dir/shtool; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
+
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  We don't cache a
+    # path for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the path is relative.
+    INSTALL=$ac_install_sh
+  fi
+fi
+echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+test "$program_prefix" != NONE &&
+  program_transform_name="s,^,$program_prefix,;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$AWK" && break
+done
+
+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'`
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+all:
+	@echo 'ac_maketemp="$(MAKE)"'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+  eval ac_cv_prog_make_${ac_make}_set=yes
+else
+  eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+  SET_MAKE=
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='sla'
+ VERSION='2.5-4'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+  ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6
+build=$ac_cv_build
+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+DEPDIR="${am__leading_dot}deps"
+
+          ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval="$enable_dependency_tracking"
+
+fi;
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  CC=$ac_ct_CC
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CC" && break
+done
+
+  CC=$ac_ct_CC
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
+  (eval $ac_link_default) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Find the output, starting from the most likely.  This scheme is
+# not robust to junk in `.', hence go to wildcards (a.*) only as a last
+# resort.
+
+# Be careful to initialize this variable, since it used to be cached.
+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile.
+ac_cv_exeext=
+# b.out is created by i960 compilers.
+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj )
+	;;
+    conftest.$ac_ext )
+	# This is the source file.
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+	ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	# FIXME: I believe we export ac_cv_exeext for Libtool,
+	# but it would be cool to find out if it's true.  Does anybody
+	# maintain Libtool? --akim.
+	export ac_cv_exeext
+	break;;
+    * )
+	break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6
+
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  export ac_cv_exeext
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+CFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5
+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6
+if test "${ac_cv_prog_cc_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std1 is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std1.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX			-qlanglvl=ansi
+# Ultrix and OSF/1	-std1
+# HP-UX 10.20 and later	-Ae
+# HP-UX older versions	-Aa -D_HPUX_SOURCE
+# SVR4			-Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
+
+case "x$ac_cv_prog_cc_stdc" in
+  x|xno)
+    echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+  *)
+    echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+    CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# Some people use a C++ compiler to compile C.  Since we use `exit',
+# in C++ we need to declare it.  In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+  choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CC"   am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$FC"; then
+  ac_cv_prog_FC="$FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+FC=$ac_cv_prog_FC
+if test -n "$FC"; then
+  echo "$as_me:$LINENO: result: $FC" >&5
+echo "${ECHO_T}$FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$FC" && break
+  done
+fi
+if test -z "$FC"; then
+  ac_ct_FC=$FC
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_FC"; then
+  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_FC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_FC=$ac_cv_prog_ac_ct_FC
+if test -n "$ac_ct_FC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+echo "${ECHO_T}$ac_ct_FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_FC" && break
+done
+
+  FC=$ac_ct_FC
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:3222:" \
+     "checking for Fortran compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+
+ac_mod_ext=
+ac_fc_mod_uppercase=no
+cat > conftest.$ac_ext << \_ACEOF
+      module conftest
+       implicit none
+       integer :: i
+      end module conftest
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+echo "$as_me:$LINENO: checking for suffix of module files" >&5
+echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6
+for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none
+do
+  if test -f $ac_mod_file; then
+    break;
+  fi
+done
+rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD
+#
+case $ac_mod_file in
+  conftest.mod)
+    ac_mod_ext=mod
+    ;;
+  conftest.MOD)
+    ac_mod_ext=MOD
+    ;;
+  conftest.M)
+    ac_mod_ext=M
+    ;;
+  CONFTEST.MOD)
+    ac_mod_ext=MOD
+    ac_fc_mod_uppercase=yes
+    ;;
+  none)
+    { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5
+echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;}
+    ;;
+esac
+
+if test $ac_mod_file != none; then
+  echo "$as_me:$LINENO: result: $ac_mod_ext" >&5
+echo "${ECHO_T}$ac_mod_ext" >&6
+fi
+if test $ac_fc_mod_uppercase = yes; then
+  { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5
+echo "$as_me: Fortran module filenames are uppercase." >&6;}
+fi
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6
+if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_fc_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FCFLAGS+set}
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS=
+echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FCFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_fc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FCFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_fc_g = yes; then
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-g -O2"
+  else
+    FCFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-O2"
+  else
+    FCFLAGS=
+  fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+##
+
+
+
+
+
+
+test -n "$_star_per_package_dirs" || _star_per_package_dirs=false
+test -n "$_star_docs_only"        || _star_docs_only=false
+
+
+# Ensure that STARLINK has a value, defaulting to
+# /home/vmwareshare/rhel30linux_i386/build/build-root.  Note that this directory may be
+# different from /star, and reflects the value of
+# STARCONF_DEFAULT_STARLINK that the `starconf' package was configured
+# with before its installation.
+#
+# We use $STARLINK as the location of any other Starlink tools we need
+# to use during the building of our packages, and for the location of
+# any manifests we need to check.  It is permissable for it to be
+# different from $(prefix): this is partly because we have no way of
+# enforcing that the two be the same, since the user can set
+# prefix=xxx on the `make install' command line, and partly so that it
+# is possible to make a test version of a new package, using tools
+# from an old installation, but installing in a new place.
+#
+# However, we install software in /home/vmwareshare/rhel30linux_i386/build/build-root by
+# default.  This is so even if $STARLINK and STARCONF_DEFAULT_STARLINK
+# are different, because in this case we are planning to use a
+# previous installation in $STARLINK or $STARCONF_DEFAULT_STARLINK,
+# but install the newly built tool elsewhere.
+#
+# In most cases, including the most important case where we are
+# building the tree from scratch, in a checked out directory,
+# STARLINK, STARCONF_DEFAULT_STARLINK and STARCONF_DEFAULT_PREFIX will
+# all be the same.  That's OK because a separate aspect of the build
+# process, respecting the various dependencies expresses in source
+# directories, ensures that we don't use (and install) any Starlink
+# tools in one component before that component has been build and
+# installed.
+
+
+test -n "$STARLINK" || STARLINK=/home/vmwareshare/rhel30linux_i386/build/build-root
+
+# Handle the --with-starlink option.  If --with-starlink is present
+# with no argument (the default), we do nothing as this simply
+# indicates that this is part of a Starlink tree.  If it has an
+# argument, then this overrides the location of the Starlink tree.
+# Option --without-starlink or --with-starlink=no indicates that this
+# is being built _not_ as part of a Starlink build (that is, it's
+# being distributed as something other than a Starlink package).  In
+# this case, the variable STARLINK is unset.
+
+# Check whether --with-starlink or --without-starlink was given.
+if test "${with_starlink+set}" = set; then
+  withval="$with_starlink"
+  if test -z "$withval" -o "$withval" = yes; then
+                 : nothing needs to be done
+             elif test "X$withval" = Xno; then
+                 unset STARLINK
+             elif test -d "$withval"; then
+                 STARLINK="$withval"
+             else
+                 { echo "$as_me:$LINENO: WARNING: --with-starlink given nonexistent directory; ignored: using default $STARLINK instead" >&5
+echo "$as_me: WARNING: --with-starlink given nonexistent directory; ignored: using default $STARLINK instead" >&2;}
+             fi
+fi;
+if test -n "$STARLINK"; then
+    { echo "$as_me:$LINENO: Starlink tree located at $STARLINK" >&5
+echo "$as_me: Starlink tree located at $STARLINK" >&6;}
+else
+    { echo "$as_me:$LINENO: Not being built as part of the Starlink tree" >&5
+echo "$as_me: Not being built as part of the Starlink tree" >&6;}
+fi
+
+# Handle --without-stardocs.  Don't build and install documentation.
+# Default is --with-stardocs.
+_star_build_docs=:
+
+# Check whether --with-stardocs or --without-stardocs was given.
+if test "${with_stardocs+set}" = set; then
+  withval="$with_stardocs"
+  if test -z "$withval"; then
+                 _star_build_docs=: # default
+             elif test "X$withval" = Xno; then
+                 _star_build_docs=false
+             elif test "X$withval" = Xyes; then
+                 _star_build_docs=:
+             else
+                 { echo "$as_me:$LINENO: WARNING: bad arg to --with-stardocs: using yes" >&5
+echo "$as_me: WARNING: bad arg to --with-stardocs: using yes" >&2;}
+                 _star_build_docs=:
+             fi
+fi;
+
+if $_star_docs_only; then
+    if $_star_build_docs; then
+        : OK
+    else
+        { echo "$as_me:$LINENO: WARNING: Building without documentation in a docs-only directory" >&5
+echo "$as_me: WARNING: Building without documentation in a docs-only directory" >&2;}
+    fi
+fi
+
+# Everything depends on where /star is.  Declare STARLINK as a
+# `precious variable'.  Amongst other things, this will make
+# ./configure squeal if the package is re-configured with an
+# inconsistent value of this variable.
+
+# AC_SUBST the STARLINK variable.  Macro AC_ARG_VAR does this anyway,
+# but automake doesn't know that (in 1.6 at least): however any
+# variable that automake finds has been AC_SUBSTed, it includes in
+# Makefile.in, and we need that.
+
+
+# Use the above information: $STARLINK indicates a preexisting
+# Starlink tree.
+#
+# Avoid doing anything if $STARLINK was unset above.
+#
+# Add library search paths using STAR_LDFLAGS.  Do it this way, rather than
+# by defining LIBS (which is also a non-user variable): (a) these are
+# really options to the linker, rather than adjustments to the set of
+# libraries, so this makes sense; also (b) adding them to LIBS is too
+# late, since that adds -L _after_ any -l options found in *_LDADD.
+if test -n "$STARLINK"; then
+    STAR_CPPFLAGS="-I$STARLINK/include"
+    STAR_FCFLAGS="-I$STARLINK/include"
+    STAR_FFLAGS="-I$STARLINK/include"
+    STAR_LDFLAGS="-L$STARLINK/lib"
+else
+    STAR_CPPFLAGS=
+    STAR_FCFLAGS=
+    STAR_FFLAGS=
+    STAR_LDFLAGS=
+fi
+
+
+
+
+
+
+echo "$as_me:$LINENO: checking whether we need any library fixups" >&5
+echo $ECHO_N "checking whether we need any library fixups... $ECHO_C" >&6
+if test "${star_cv_restfp_fixup+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+        if expr $build_os : 'darwin7' >/dev/null; then
+            # Following uses undocumented (but probably fairly stable)
+            # autoconf internal variable.
+            if test "$ac_cv_fc_compiler_gnu" = yes; then
+                ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+                rm -f conftest*
+                star_cv_restfp_fixup=unknown
+                cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+restFP()
+  ;
+  return 0;
+}
+_ACEOF
+                { { ac_try='$CC -o conftest.x -S conftest.c'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                  test $ac_status = 0
+                } &&
+                sed 's/_restFP/restFP/g' conftest.x>conftest.s &&
+                { { ac_try='$CC -c -o conftest.$ac_objext conftest.s'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                  test $ac_status = 0
+                } || star_cv_restfp_fixup=broken
+                ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+                if test $star_cv_restfp_fixup = broken; then
+                    { echo "$as_me:$LINENO: WARNING: unable to assemble restFP test" >&5
+echo "$as_me: WARNING: unable to assemble restFP test" >&2;}
+                else
+                    # Link this with the C compiler
+                    { ac_try='$CC -o conftest conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                    _s_cstatus=$ac_status
+                    # Link this with the Fortran compiler
+                    { ac_try='$FC -o conftest conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                    if test $_s_cstatus = 0 -a $ac_status = 0; then
+                        # both compilers can compile it
+                        star_cv_restfp_fixup=no
+                    elif test $_s_cstatus != 0 -a $ac_status != 0; then
+                        # neither compiler can compile it
+                        star_cv_restfp_fixup=no
+                    elif test $_s_cstatus = 0; then
+                        # The C compiler can, but the Fortran cannot
+                        star_cv_restfp_fixup=yes
+                    else
+                        # The C compiler can't compile, but the Fortran can.
+                        # Haven't heard of this case!  Don't know what to do.
+                        star_cv_restfp_fixup=broken
+                    fi
+                fi
+                # Link with -lcc_dynamic.
+                # See http://www.astro.gla.ac.uk/users/norman/note/2004/restFP/
+                if test $star_cv_restfp_fixup = yes; then
+                    { ac_try='$FC -o conftest conftest.$ac_objext -lcc_dynamic'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+                    if test $ac_status = 0; then
+                        star_cv_restfp_fixup=cc_dynamic
+                    fi
+                fi
+                if test $star_cv_restfp_fixup = yes; then
+                    # ooops
+                    { echo "$as_me:$LINENO: WARNING: unable to solve restFP problem" >&5
+echo "$as_me: WARNING: unable to solve restFP problem" >&2;}
+                    star_cv_restfp_fixup=broken
+                fi
+                rm -f conftest*
+            elif test -z "$FC"; then
+                # not g77, and indeed no Fortran at all
+                star_cv_restfp_fixup=nofortran
+            else
+                # There is a Fortran, but it's not g77, so either there's no
+                # problem, or it's a mixed-compiler problem that's harder
+                # than we know how to deal with.  But presumably the user
+                # has worked this out.
+                star_cv_restfp_fixup=no
+            fi
+        else # !Darwin
+            star_cv_restfp_fixup=no
+        fi
+
+fi
+echo "$as_me:$LINENO: result: $star_cv_restfp_fixup" >&5
+echo "${ECHO_T}$star_cv_restfp_fixup" >&6
+   C_FC_FCLINK_MAGIC=
+   C_FC_PPFC_FCLINK_MAGIC=
+   case $star_cv_restfp_fixup in
+     cc_dynamic)
+       # Add the required libraries to C_FC_... variables, which are
+       # generated in the required places by (our) automake.
+       C_FC_FCLINK_MAGIC="-lcc_dynamic"
+       C_FC_PPFC_FCLINK_MAGIC="-lcc_dynamic"
+       ;;
+     nofortran)
+       { echo "$as_me:$LINENO: No Fortran in path, so presumably no g77/gcc library problems" >&5
+echo "$as_me: No Fortran in path, so presumably no g77/gcc library problems" >&6;}
+       ;;
+     *) ;;
+   esac
+
+
+
+
+# Installation directory options (these are no longer handled
+# by _STAR_EXTRADIR_COMMON).  There should be an entry here for each of
+# Starlink's special installation locations.
+stardocsdir='${prefix}/docs'
+staretcdir='${prefix}/etc'
+starexamplesdir='${prefix}/examples'
+starfacsdir='${prefix}/help'
+starhelpdir='${prefix}/help'
+starnewsdir='${prefix}/news'
+
+# Certain directories are affected by the $_star_per_package_dir variable;
+# if it's true, then add the $PACKAGE_NAME to the directory.
+# The directories currently adjusted by this are bin and help;
+# there are others: see PWD's message of 2004-02-16
+# <http://www.jiscmail.ac.uk/cgi-bin/wa.exe?A2=ind0402&L=stardev&T=0&F=&S=&P=5153>
+if $_star_per_package_dirs; then
+    bindir="$bindir/$PACKAGE_NAME"
+    starhelpdir="$starhelpdir/$PACKAGE_NAME"
+    staretcdir="$staretcdir/$PACKAGE_NAME"
+    { echo "$as_me:$LINENO: STAR_DEFAULTS has option per-package-dirs:" >&5
+echo "$as_me: STAR_DEFAULTS has option per-package-dirs:" >&6;}
+    { echo "$as_me:$LINENO:     bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir" >&5
+echo "$as_me:     bindir=$bindir starhelpdir=$starhelpdir staretcdir=$staretcdir" >&6;}
+    # Note that starfacsdir is unaffected by per-package-dirs -- facility
+    # files must always be installed in .../help (this also facilitates
+    # changing this installation location in future, to somewhere with a
+    # more logical name than .../help).
+fi
+
+
+# Dependency declarations and checks.
+# Everything is dependent on starconf, so we don't have to declare that
+# for each package separately.
+# STAR_DEPENDENCIES_ATTRIBUTES is currently not used.
+STAR_DEPENDENCIES_ATTRIBUTES=''
+STAR_DEPENDENCIES_CHILDREN=''
+
+
+
+# List of documentation.  See [STAR_LATEX_DOCUMENTATION].
+# STAR_DOCUMENTATION is a list of document codes,
+STAR_DOCUMENTATION=
+
+
+# Create a PACKAGE_VERSION_INTEGER variable, which contains the
+# package's version number as an integer major*1e6+minor*1e3+release.
+eval `echo $VERSION | sed -e 's/\([0-9]*\)[^0-9]*\([0-9]*\)[^0-9]*\([0-9]*\).*/PACKAGE_VERSION_MAJOR=\1; PACKAGE_VERSION_MINOR=\2; PACKAGE_VERSION_RELEASE=\3;/'`
+test -n "$PACKAGE_VERSION_MAJOR"   || PACKAGE_VERSION_MAJOR=0
+test -n "$PACKAGE_VERSION_MINOR"   || PACKAGE_VERSION_MINOR=0
+test -n "$PACKAGE_VERSION_RELEASE" || PACKAGE_VERSION_RELEASE=0
+PACKAGE_VERSION_INTEGER=`expr $PACKAGE_VERSION_MAJOR \* 1000000 + $PACKAGE_VERSION_MINOR \* 1000 + $PACKAGE_VERSION_RELEASE`
+
+
+
+
+
+# When we do dependency checking, using the dependencies declared in
+# the package's configure.ac, we do so by looking at what tools have
+# already been installed in the Starlink tree.  The tree in question
+# is to be found under $STARLINK (see above), so we check that a
+# package is installed by checking that its manifest can be found in
+# $STARLINK/manifests.  We don't AC_SUBST this.
+current_MANIFESTS=$STARLINK/manifests
+
+# When we install manifests, however, they should go in the
+# installation directory.  Allow this to be defaulted from the environment.
+# In particular, if it is set to null in the environment, this will
+# suppress the installation of manifests.
+: ${STAR_MANIFEST_DIR='$(prefix)/manifests'}
+
+
+# Although PACKAGE_VERSION is a default output variable, it isn't
+# added as a Makefile variable by default.  We need it below, however,
+# so add it now.
+
+
+# Initialise state of predist/postdist flags (see STAR_PREDIST_SOURCES).
+# The value of _star_predist_status must be inherited by any
+# ./configure run in a subdirectory, so that we there avoid the predist
+# test of starconf.status: in a pre-distribution state, this file must
+# be present in the component directory (where we are running
+# ./configure), but must not be present in any subdirectory.
+_star_predist_status=unknown
+PREDIST='#'  # safe default
+
+
+# pax and/or tar are used in some install targets.
+# Note: value-if-not-found should be blank, so this can be tested for.
+# Extract the first word of "pax", so it can be a program name with args.
+set dummy pax; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PAX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $PAX in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PAX="$PAX" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PAX="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+PAX=$ac_cv_path_PAX
+
+if test -n "$PAX"; then
+  echo "$as_me:$LINENO: result: $PAX" >&5
+echo "${ECHO_T}$PAX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+for ac_prog in gnutar tar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_TAR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $TAR in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_TAR="$TAR" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_TAR="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  ;;
+esac
+fi
+TAR=$ac_cv_path_TAR
+
+if test -n "$TAR"; then
+  echo "$as_me:$LINENO: result: $TAR" >&5
+echo "${ECHO_T}$TAR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$TAR" && break
+done
+
+
+ALL_TARGET=all-am-normal
+
+# Default $prefix.  This is done by the standard autoconf configure, but at
+# a slightly later stage than this.  Doing it here, as part of STAR_[]DEFAULTS
+# means that the defaulted value of $prefix can be used within the body of
+# the configure.ac, for example to pass it to a ./configure in a subdirectory.
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$FC"; then
+  ac_cv_prog_FC="$FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_FC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+FC=$ac_cv_prog_FC
+if test -n "$FC"; then
+  echo "$as_me:$LINENO: result: $FC" >&5
+echo "${ECHO_T}$FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$FC" && break
+  done
+fi
+if test -z "$FC"; then
+  ac_ct_FC=$FC
+  for ac_prog in g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran f90 xlf90 pgf90 epcf90 g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77'
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_FC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_FC"; then
+  ac_cv_prog_ac_ct_FC="$ac_ct_FC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_FC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_FC=$ac_cv_prog_ac_ct_FC
+if test -n "$ac_ct_FC"; then
+  echo "$as_me:$LINENO: result: $ac_ct_FC" >&5
+echo "${ECHO_T}$ac_ct_FC" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_FC" && break
+done
+
+  FC=$ac_ct_FC
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:3986:" \
+     "checking for Fortran compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+
+ac_mod_ext=
+ac_fc_mod_uppercase=no
+cat > conftest.$ac_ext << \_ACEOF
+      module conftest
+       implicit none
+       integer :: i
+      end module conftest
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+echo "$as_me:$LINENO: checking for suffix of module files" >&5
+echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6
+for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none
+do
+  if test -f $ac_mod_file; then
+    break;
+  fi
+done
+rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD
+#
+case $ac_mod_file in
+  conftest.mod)
+    ac_mod_ext=mod
+    ;;
+  conftest.MOD)
+    ac_mod_ext=MOD
+    ;;
+  conftest.M)
+    ac_mod_ext=M
+    ;;
+  CONFTEST.MOD)
+    ac_mod_ext=MOD
+    ac_fc_mod_uppercase=yes
+    ;;
+  none)
+    { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5
+echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;}
+    ;;
+esac
+
+if test $ac_mod_file != none; then
+  echo "$as_me:$LINENO: result: $ac_mod_ext" >&5
+echo "${ECHO_T}$ac_mod_ext" >&6
+fi
+if test $ac_fc_mod_uppercase = yes; then
+  { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5
+echo "$as_me: Fortran module filenames are uppercase." >&6;}
+fi
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran compiler... $ECHO_C" >&6
+if test "${ac_cv_fc_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_fc_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_fc_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FCFLAGS+set}
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS=
+echo "$as_me:$LINENO: checking whether $FC accepts -g" >&5
+echo $ECHO_N "checking whether $FC accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FCFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_fc_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FCFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_fc_g = yes; then
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-g -O2"
+  else
+    FCFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_fc_compiler_gnu" = xyes; then
+    FCFLAGS="-O2"
+  else
+    FCFLAGS=
+  fi
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+# Prefer AC_PROG_FC to AC_PROG_F77
+if test "X$F77" != X; then
+    { echo "$as_me:$LINENO: WARNING: Use AC_PROG_FC with AC_PROG_FPP, instead of AC_PROG_F77" >&5
+echo "$as_me: WARNING: Use AC_PROG_FC with AC_PROG_FPP, instead of AC_PROG_F77" >&2;}
+fi
+
+# defaults for needed features
+ac_fpp_need_d=yes
+ac_fpp_need_i=yes
+ac_fpp_need_subs=yes
+ac_fpp_need_wrap=no
+ac_fpp_need_cstyle=no
+ac_fpp_need_CSTYLE=no
+for _t in  nil
+do
+    case $_t in
+        d*)    ac_fpp_need_d=yes    ;;
+        nod*)  ac_fpp_need_d=no     ;;
+        i*)    ac_fpp_need_i=yes    ;;
+        noi*)  ac_fpp_need_i=no     ;;
+        s*)    ac_fpp_need_subs=yes    ;;
+        nos*)  ac_fpp_need_subs=no     ;;
+        w*)    ac_fpp_need_wrap=yes   ;;
+        now*)  ac_fpp_need_wrap=no    ;;
+        c*)    ac_fpp_need_cstyle=yes ;;
+        noc*)  ac_fpp_need_cstyle=no  ;;
+        C*)    ac_fpp_need_CSTYLE=yes ;;
+        noC*)  ac_fpp_need_CSTYLE=no  ;;
+        nil)   ;;
+    esac
+done
+# Wrapping requires substitution
+test $ac_fpp_need_wrap = yes && ac_fpp_need_subs=yes
+# Both CSTYLE and cstyle cannot be requested
+# CSTYLE has precedence, since if it is not fulfilled,
+# compile errors may arise
+test $ac_fpp_need_CSTYLE = yes && ac_fpp_need_cstyle=no
+
+
+# Default optional second argument to F
+FPP_SRC_EXT=F
+
+# Test FPP_SRC_EXT
+ac_fpp_srcext_failed=no
+echo "$as_me:$LINENO: checking for Fortran flag to compile preprocessable .F files" >&5
+echo $ECHO_N "checking for Fortran flag to compile preprocessable .F files... $ECHO_C" >&6
+if test "${ac_cv_fpp_srcext_F+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=F
+ac_fpp_srcext_FPPFLAGS_SRCEXT_save=$FPPFLAGS_SRCEXT
+FPPFLAGS_SRCEXT=""
+ac_cv_fpp_srcext_F=unknown
+for ac_flag in none -qsuffix=cpp=F -cpp -fpp '-lfe "-Cpp"'; do
+ test "x$ac_flag" != xnone && FPPFLAGS_SRCEXT="$ac_flag"
+  if test "x$ac_cv_fpp_build_rule" = x; then
+     # We're probably being called from AC_FPP_PROG. We don't know
+     # how to compile fpp programs yet.
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ## Force ac_ext to be the extension we're testing, carefully
+     ## ignoring the one defaulted in the statement above.
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  else
+     # We already know what ac_fpp_compile etc. are:
+     ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+#if 1
+      end
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  fi
+done
+rm -f conftest.$ac_objext conftest.F
+FPPFLAGS_SRCEXT=$ac_fpp_srcext_FPPFLAGS_SRCEXT_save
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_srcext_F" >&5
+echo "${ECHO_T}$ac_cv_fpp_srcext_F" >&6
+if test "x$ac_cv_fpp_srcext_F" = xunknown; then
+  ac_fpp_srcext_failed=yes
+else
+  FPP_SRCEXT=F
+  if test "x$ac_cv_fpp_srcext_F" = xnone; then
+    FPPFLAGS_SRCEXT=""
+    FPPFLAGS_F="$FPPFLAGS_F"
+  else
+    FPPFLAGS_SRCEXT=$ac_cv_fpp_srcext_F
+    FPPFLAGS_F="$FPPFLAGS_F $ac_cv_fpp_srcext_F"
+  fi
+
+
+fi
+
+if test $ac_fpp_srcext_failed = yes -a "" != F; then
+    { echo "$as_me:$LINENO: Could not use .$FPP_SRC_EXT as extension; trying .F" >&5
+echo "$as_me: Could not use .$FPP_SRC_EXT as extension; trying .F" >&6;}
+    FPP_SRC_EXT=F
+    echo "$as_me:$LINENO: checking for Fortran flag to compile preprocessable .F files" >&5
+echo $ECHO_N "checking for Fortran flag to compile preprocessable .F files... $ECHO_C" >&6
+if test "${ac_cv_fpp_srcext_F+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=F
+ac_fpp_srcext_FPPFLAGS_SRCEXT_save=$FPPFLAGS_SRCEXT
+FPPFLAGS_SRCEXT=""
+ac_cv_fpp_srcext_F=unknown
+for ac_flag in none -qsuffix=cpp=F -cpp -fpp '-lfe "-Cpp"'; do
+ test "x$ac_flag" != xnone && FPPFLAGS_SRCEXT="$ac_flag"
+  if test "x$ac_cv_fpp_build_rule" = x; then
+     # We're probably being called from AC_FPP_PROG. We don't know
+     # how to compile fpp programs yet.
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ## Force ac_ext to be the extension we're testing, carefully
+     ## ignoring the one defaulted in the statement above.
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  else
+     # We already know what ac_fpp_compile etc. are:
+     ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+     ac_ext=F
+     cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+#if 1
+      end
+#endif
+
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fpp_srcext_F=$ac_flag; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+     ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+  fi
+done
+rm -f conftest.$ac_objext conftest.F
+FPPFLAGS_SRCEXT=$ac_fpp_srcext_FPPFLAGS_SRCEXT_save
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_srcext_F" >&5
+echo "${ECHO_T}$ac_cv_fpp_srcext_F" >&6
+if test "x$ac_cv_fpp_srcext_F" = xunknown; then
+  { { echo "$as_me:$LINENO: error: Fortran could not compile .F files" >&5
+echo "$as_me: error: Fortran could not compile .F files" >&2;}
+   { (exit 1); exit 1; }; }
+else
+  FPP_SRCEXT=F
+  if test "x$ac_cv_fpp_srcext_F" = xnone; then
+    FPPFLAGS_SRCEXT=""
+    FPPFLAGS_F="$FPPFLAGS_F"
+  else
+    FPPFLAGS_SRCEXT=$ac_cv_fpp_srcext_F
+    FPPFLAGS_F="$FPPFLAGS_F $ac_cv_fpp_srcext_F"
+  fi
+
+
+fi
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# We first try to use FC for compiling the source directly
+# into object files
+ac_fpp_compile='${FC-fc} -c $FPPFLAGS $FFLAGS $FPPFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_fpp_link='${FC-fc} -o conftest${ac_exeext} $FPPFLAGS $FFLAGS $LDFLAGS $FPPFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+
+ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+# _AC_PROG_FC_CPP stores results of the feature checks in non-cv variables,
+# which we copy to cv variables afterwards.
+# The reason for that is reusability of the macro for other cv variables (see below)
+ac_fpp_ok=yes
+ac_prog_fc_cpp=no
+ac_prog_fc_cpp_d=no
+ac_prog_fc_cpp_i=no
+ac_prog_fc_cpp_subs=no
+ac_prog_fc_cpp_wrap=no
+ac_prog_fc_cpp_CSTYLE=no
+
+
+echo "$as_me:$LINENO: checking for fixed form Fortran preprocessor features" >&5
+echo $ECHO_N "checking for fixed form Fortran preprocessor features... $ECHO_C" >&6
+# We must use AC_LINK_IFELSE because Lahey Fortran (and maybe others) have
+# broken exit status when compiling
+cat >conftest.$ac_ext <<_ACEOF
+#define OK
+      program main
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+if test $ac_prog_fc_cpp = yes; then
+
+    if test $ac_fpp_need_d = yes; then
+       ac_prog_fc_cpp_d=no
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -DOK"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+:
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       FPPFLAGS=$ac_save_FPPFLAGS
+       if test $ac_prog_fc_cpp_d = no; then
+	  # stupid ibm compiler
+          ac_save_FPPFLAGS=$FPPFLAGS
+          FPPFLAGS="$FPPFLAGS -WF,-DOK"
+          cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-WF,-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+          FPPFLAGS=$ac_save_FPPFLAGS
+       fi
+    fi
+
+
+    if test $ac_fpp_need_i = yes; then
+       mkdir conftst
+       cat > conftst/conftest.inc << \_ACEOF
+!     This statement overrides the IMPLICIT statement in the program
+      REAL cc
+_ACEOF
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -Iconftst"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      IMPLICIT CHARACTER (c)
+!     Comments in test programs should be freeform compliant just in case.
+!     conftest.inc contains the Fortran statement "REAL cc"
+#include "conftest.inc"
+      cc=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_i=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       rm -rf conftst
+       FPPFLAGS=$ac_save_FPPFLAGS
+    fi
+
+    if test $ac_fpp_need_subs = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define NM xxxx
+
+      program main
+      IMPLICIT CHARACTER (n)
+      REAL xxxx
+      NM=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_subs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_wrap = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define LONG '901234567890123456789012345678901234567890123456789012345678901234567890'
+
+      program main
+      CHARACTER*80 A
+      A=LONG
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_wrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_CSTYLE = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      A=1. /* C-style comment */
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_CSTYLE=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+fi
+echo "$as_me:$LINENO: result: done." >&5
+echo "${ECHO_T}done." >&6
+
+
+echo "$as_me:$LINENO: checking whether $FC compiles programs with cpp directives" >&5
+echo $ECHO_N "checking whether $FC compiles programs with cpp directives... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp=$ac_prog_fc_cpp
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp" >&6
+
+if test $ac_fpp_need_d = yes; then
+  echo "$as_me:$LINENO: checking whether $FC accepts -D" >&5
+echo $ECHO_N "checking whether $FC accepts -D... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_d+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_d=$ac_prog_fc_cpp_d
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_d" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_d" >&6
+fi
+
+if test $ac_fpp_need_i = yes; then
+  echo "$as_me:$LINENO: checking whether $FC accepts -I" >&5
+echo $ECHO_N "checking whether $FC accepts -I... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_i+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_i=$ac_prog_fc_cpp_i
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_i" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_i" >&6
+fi
+
+if test $ac_fpp_need_subs = yes; then
+  echo "$as_me:$LINENO: checking whether $FC substitutes macros in Fortran code" >&5
+echo $ECHO_N "checking whether $FC substitutes macros in Fortran code... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_subs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_subs=$ac_prog_fc_cpp_subs
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_subs" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_subs" >&6
+fi
+
+if test $ac_fpp_need_wrap = yes; then
+  echo "$as_me:$LINENO: checking whether $FC wraps long lines automatically" >&5
+echo $ECHO_N "checking whether $FC wraps long lines automatically... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_wrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_wrap=$ac_prog_fc_cpp_wrap
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_wrap" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_wrap" >&6
+fi
+
+if test $ac_fpp_need_CSTYLE = yes; then
+  echo "$as_me:$LINENO: checking whether $FC handles C-style comments" >&5
+echo $ECHO_N "checking whether $FC handles C-style comments... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_CSTYLE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_CSTYLE=$ac_prog_fc_cpp_CSTYLE
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_CSTYLE" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_CSTYLE" >&6
+fi
+
+echo "$as_me:$LINENO: checking whether $FC fulfills requested features" >&5
+echo $ECHO_N "checking whether $FC fulfills requested features... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_cpp_ok+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fc_cpp_ok=$ac_fpp_ok
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_cpp_ok" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_cpp_ok" >&6
+
+if test $ac_fpp_ok = yes; then
+    :
+else
+    { echo "$as_me:$LINENO: $FC cannot deal with preprocessed Fortran; press on..." >&5
+echo "$as_me: $FC cannot deal with preprocessed Fortran; press on..." >&6;}
+fi
+##if test $ac_fpp_ok = yes; then
+##    m4_default([],[:])
+##else
+##    m4_default([],[AC_MSG_ERROR([$FC cannot deal with preprocessed Fortran])])
+##fi
+
+
+
+# Now we check how to invoke a preprocessor that outputs Fortran code
+# that FC can understand
+# The next macro sets FPP (unless already set by the user)
+ac_ext=F
+echo "$as_me:$LINENO: checking how to preprocess Fortran files" >&5
+echo $ECHO_N "checking how to preprocess Fortran files... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp=
+
+
+# Let the user specify FPP
+if test -n "$FPP"; then
+  rm -f conftest*
+cat >conftest.$ac_ext << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+ac_fpp_command=$FPP
+if eval '$ac_fpp_command conftest.$ac_ext > conftest.log 2>/dev/null'; then
+  if test -f conftest.f; then
+    if cmp conftest.$ac_ext conftest.f >/dev/null; then
+      # ooops -- these two are the same file.  Ie, this is a
+      # case-insensitive filesystem, so ignore this file
+      ac_tmp=
+    else
+      ac_tmp=conftest.f
+      ac_fpp_out=
+    fi
+  fi
+  if test -z "$ac_tmp"; then
+    ac_tmp=conftest.log
+    ac_fpp_out=' > conftest.f'
+  fi
+  if grep '^      REAL A' $ac_tmp >/dev/null 2>&1; then
+    # we have Fortran!  That worked...
+    ac_cv_prog_fpp=$ac_fpp_command
+  fi
+  if grep 'syntax error' $ac_tmp >/dev/null 2>&1; then
+    # ...oh no it didn't: this line should have been skipped
+    ac_cv_prog_fpp=
+  fi
+fi
+rm -f conftest*
+
+  if test -z "$ac_cv_prog_fpp"; then
+    { echo "$as_me:$LINENO: WARNING: user-specified \$FPP ($FPP) does not work" >&5
+echo "$as_me: WARNING: user-specified \$FPP ($FPP) does not work" >&2;}
+    FPP=
+  fi
+fi # test -n "$FPP"
+
+if test -z "$ac_cv_prog_fpp" && test $ac_fpp_ok = yes; then
+# We know that the Fortran compiler can directly preprocess and compile.
+# All that remains is to find out how to run only the preprocessor.
+# We check that the compiler does not compile as well as
+# preprocessing, by looking for the file a.out (is this portable?  The
+# single-unix spec says that cc produces an a.out if no -o is given).
+# If we don't do this, and the compiler doesn't recognise, and
+# ignores, one of the options (for example g77 ignores -F
+# and returns without error), then the test appears to succeed.
+#
+# We only know the following methods of invocation: -E and -F
+  for ac_j in "$FC -E" "$FC -F"; do
+    rm -f a.out
+    rm -f conftest*
+cat >conftest.$ac_ext << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+ac_fpp_command=$ac_j
+if eval '$ac_fpp_command conftest.$ac_ext > conftest.log 2>/dev/null'; then
+  if test -f conftest.f; then
+    if cmp conftest.$ac_ext conftest.f >/dev/null; then
+      # ooops -- these two are the same file.  Ie, this is a
+      # case-insensitive filesystem, so ignore this file
+      ac_tmp=
+    else
+      ac_tmp=conftest.f
+      ac_fpp_out=
+    fi
+  fi
+  if test -z "$ac_tmp"; then
+    ac_tmp=conftest.log
+    ac_fpp_out=' > conftest.f'
+  fi
+  if grep '^      REAL A' $ac_tmp >/dev/null 2>&1; then
+    # we have Fortran!  That worked...
+    ac_cv_prog_fpp=$ac_fpp_command
+  fi
+  if grep 'syntax error' $ac_tmp >/dev/null 2>&1; then
+    # ...oh no it didn't: this line should have been skipped
+    ac_cv_prog_fpp=
+  fi
+fi
+rm -f conftest*
+
+    if test -e a.out; then
+        rm -f a.out
+        ac_cv_prog_fpp=  # discard any value there
+    else
+        test -n "$ac_cv_prog_fpp" && break;
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_fpp"; then
+# Either the Fortran compiler can't handle cpp, or doesn't have all the
+# features, or can't be used for pure preprocessing.
+# We must find another way for preprocessing.
+# We try the "best" preprocessors first. At this point, F77 has already
+# proven that it is insufficient, so use it as a last resort only.
+# XXX: is there a more up-to-date list?
+  for ac_j in 'fpp' "$CPP" 'g77 -E' '$CC -E' 'cpp' '/lib/cpp' \
+              '/usr/ccs/lib/cpp' "$F77 -F" "$F77 -E"; do
+    rm -f conftest*
+cat >conftest.$ac_ext << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+ac_fpp_command=$ac_j
+if eval '$ac_fpp_command conftest.$ac_ext > conftest.log 2>/dev/null'; then
+  if test -f conftest.f; then
+    if cmp conftest.$ac_ext conftest.f >/dev/null; then
+      # ooops -- these two are the same file.  Ie, this is a
+      # case-insensitive filesystem, so ignore this file
+      ac_tmp=
+    else
+      ac_tmp=conftest.f
+      ac_fpp_out=
+    fi
+  fi
+  if test -z "$ac_tmp"; then
+    ac_tmp=conftest.log
+    ac_fpp_out=' > conftest.f'
+  fi
+  if grep '^      REAL A' $ac_tmp >/dev/null 2>&1; then
+    # we have Fortran!  That worked...
+    ac_cv_prog_fpp=$ac_fpp_command
+  fi
+  if grep 'syntax error' $ac_tmp >/dev/null 2>&1; then
+    # ...oh no it didn't: this line should have been skipped
+    ac_cv_prog_fpp=
+  fi
+fi
+rm -f conftest*
+
+    test -n "$ac_cv_prog_fpp" && break;
+  done
+fi # test -z "$ac_cv_prog_fpp"
+
+if test -z "$ac_cv_prog_fpp"; then
+# This is only fatal if direct compilation doesn't work either
+  if test $ac_cv_prog_fc_cpp = no; then
+    { { echo "$as_me:$LINENO: error: cannot find a working Fortran preprocessor" >&5
+echo "$as_me: error: cannot find a working Fortran preprocessor" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    { echo "$as_me:$LINENO: WARNING: cannot find a working Fortran preprocessor" >&5
+echo "$as_me: WARNING: cannot find a working Fortran preprocessor" >&2;}
+  fi
+fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp" >&6
+echo "$as_me:$LINENO: checking how to redirect $ac_cv_prog_fpp output" >&5
+echo $ECHO_N "checking how to redirect $ac_cv_prog_fpp output... $ECHO_C" >&6
+if test "${ac_cv_fpp_out+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_fpp_out=$ac_fpp_out
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_out" >&5
+echo "${ECHO_T}$ac_cv_fpp_out" >&6
+FPP=$ac_cv_prog_fpp
+ac_fpp_out=$ac_cv_fpp_out
+
+echo "$as_me:$LINENO: checking whether $FPP needs the -P option" >&5
+echo $ECHO_N "checking whether $FPP needs the -P option... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_p+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_p=unknown
+
+# Note we force extension .$FPP_SRC_EXT here and in the ac_cmd lines below, to
+# make sure that we don't use the default extension for the language.
+# We mustn't blindly set ac_ext=$FPP_SRC_EXT, however, or else this
+# would break the $(ac_link) command below.  Yes, this test file has
+# the literal extension .FPP_SRC_EXT (see below).
+cat > conftest.FPP_SRC_EXT << \_ACEOF
+#define OK
+      program main
+#ifdef OK
+      REAL A
+#else
+      syntax error
+#endif
+
+      end
+_ACEOF
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+# We must not fail, here, in the case where the filesystem is
+# case-insensitive, so that conftest.F and conftest.f are the same
+# file.
+if test -n "$ac_fpp_out"; then
+   # If $ac_fpp_out is non-null, then preprocessor output goes to
+   # stdout, which we send to conftest.f _without_ immediately clobbering
+   # the input file as it is being read.  We do clobber it in the
+   # end, however, which is why we copy .FPP_SRC_EXT to .$FPP_SRC_EXT
+   # each time.
+   ac_tmp='>conftest.tmp && mv conftest.tmp conftest.f'
+else
+   # conftest.F is preprocessed directly to conftest.f.  We can
+   # assume that the filesystem is case-sensitive, since otherwise
+   # this compiler/preprocessor would be simply non-functional on
+   # this platform.
+   ac_tmp=
+fi
+cp conftest.FPP_SRC_EXT conftest.$FPP_SRC_EXT
+ac_cmd='$FPP $FPPFLAGS conftest.$FPP_SRC_EXT '"$ac_tmp"
+## use ac_link from the Fortran language
+if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+     { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+   ac_cv_prog_fpp_p=
+else
+   cp conftest.FPP_SRC_EXT conftest.$FPP_SRC_EXT
+   ac_save_FPPFLAGS=$FPPFLAGS
+   FPPFLAGS="$FPPFLAGS -P"
+   if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+       { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+     ac_cv_prog_fpp_p=-P
+   fi
+   FPPFLAGS=$ac_save_FPPFLAGS
+fi
+rm -f conftest*
+ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_p" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_p" >&6
+if test "x$ac_cv_prog_fpp_p" = "xunknown"; then
+   { { echo "$as_me:$LINENO: error: $FPP cannot produce code that $FC compiles" >&5
+echo "$as_me: error: $FPP cannot produce code that $FC compiles" >&2;}
+   { (exit 1); exit 1; }; }
+else
+   FPPFLAGS="$FPPFLAGS $ac_cv_prog_fpp_p"
+fi
+
+
+# Now, we check the features of the preprocessor/compiler combination
+# It only makes sense to carry out further tests if FPP is a different
+# program from FC
+ac_fpp_name=`expr "x$FPP" : "x\([^ ]*\)"`
+ac_fc_name=`expr "x$FC" : "x\([^ ]*\)"`
+if test "x$ac_fc_name" != "x$ac_fpp_name"; then
+  ac_fpp_equals_fc=no
+
+# Redefine the compile and link commands for indirect compilation
+  ac_fpp_compile='${FPP-fpp} $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"' && ${FC-fc} -c $FFLAGS conftest.f >&5'
+  ac_fpp_link='${FPP-fpp} $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"' && ${FC-fc} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.f $LIBS >&5'
+
+# PWD: we are not picking up indirection compilation for the following
+# tests, maybe we need to reset more than the above variables.
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+
+# Redo all the feature checks for indirect compilation: perhaps we have an
+# external preprocessor that does a better job than FC
+  ac_fpp_ok=yes
+ac_prog_fc_cpp=no
+ac_prog_fc_cpp_d=no
+ac_prog_fc_cpp_i=no
+ac_prog_fc_cpp_subs=no
+ac_prog_fc_cpp_wrap=no
+ac_prog_fc_cpp_CSTYLE=no
+
+
+echo "$as_me:$LINENO: checking for fixed form Fortran preprocessor features" >&5
+echo $ECHO_N "checking for fixed form Fortran preprocessor features... $ECHO_C" >&6
+# We must use AC_LINK_IFELSE because Lahey Fortran (and maybe others) have
+# broken exit status when compiling
+cat >conftest.$ac_ext <<_ACEOF
+#define OK
+      program main
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+
+if test $ac_prog_fc_cpp = yes; then
+
+    if test $ac_fpp_need_d = yes; then
+       ac_prog_fc_cpp_d=no
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -DOK"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+:
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       FPPFLAGS=$ac_save_FPPFLAGS
+       if test $ac_prog_fc_cpp_d = no; then
+	  # stupid ibm compiler
+          ac_save_FPPFLAGS=$FPPFLAGS
+          FPPFLAGS="$FPPFLAGS -WF,-DOK"
+          cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+#ifndef OK
+      syntax error
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_d=yes; FPPFLAGS_DEF="-WF,-D"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+          FPPFLAGS=$ac_save_FPPFLAGS
+       fi
+    fi
+
+
+    if test $ac_fpp_need_i = yes; then
+       mkdir conftst
+       cat > conftst/conftest.inc << \_ACEOF
+!     This statement overrides the IMPLICIT statement in the program
+      REAL cc
+_ACEOF
+       ac_save_FPPFLAGS=$FPPFLAGS
+       FPPFLAGS="$FPPFLAGS -Iconftst"
+       cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      IMPLICIT CHARACTER (c)
+!     Comments in test programs should be freeform compliant just in case.
+!     conftest.inc contains the Fortran statement "REAL cc"
+#include "conftest.inc"
+      cc=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_i=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+       rm -rf conftst
+       FPPFLAGS=$ac_save_FPPFLAGS
+    fi
+
+    if test $ac_fpp_need_subs = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define NM xxxx
+
+      program main
+      IMPLICIT CHARACTER (n)
+      REAL xxxx
+      NM=1.
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_subs=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_wrap = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+#define LONG '901234567890123456789012345678901234567890123456789012345678901234567890'
+
+      program main
+      CHARACTER*80 A
+      A=LONG
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_wrap=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+
+    if test $ac_fpp_need_CSTYLE = yes; then
+        cat >conftest.$ac_ext <<_ACEOF
+
+      program main
+
+      A=1. /* C-style comment */
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fpp_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_prog_fc_cpp_CSTYLE=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_fpp_ok=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+    fi
+fi
+echo "$as_me:$LINENO: result: done." >&5
+echo "${ECHO_T}done." >&6
+
+
+else
+  ac_fpp_equals_fc=yes
+fi
+
+if test $ac_fpp_need_d = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP accepts -D" >&5
+echo $ECHO_N "checking whether $FPP accepts -D... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_d+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_d=$ac_prog_fc_cpp_d
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_d" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_d" >&6
+fi
+
+if test $ac_fpp_need_i = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP accepts -I" >&5
+echo $ECHO_N "checking whether $FPP accepts -I... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_i+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_i=$ac_prog_fc_cpp_i
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_i" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_i" >&6
+fi
+
+if test $ac_fpp_need_subs = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP substitutes macros in Fortran code" >&5
+echo $ECHO_N "checking whether $FPP substitutes macros in Fortran code... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_subs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_subs=$ac_prog_fc_cpp_subs
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_subs" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_subs" >&6
+fi
+
+if test $ac_fpp_need_wrap = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP wraps long lines automatically" >&5
+echo $ECHO_N "checking whether $FPP wraps long lines automatically... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_wrap+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_wrap=$ac_prog_fc_cpp_wrap
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_wrap" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_wrap" >&6
+fi
+
+if test $ac_fpp_need_CSTYLE = yes; then
+  echo "$as_me:$LINENO: checking whether $FPP suppresses C-style comments" >&5
+echo $ECHO_N "checking whether $FPP suppresses C-style comments... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_CSTYLE+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_CSTYLE=$ac_prog_fc_cpp_CSTYLE
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_CSTYLE" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_CSTYLE" >&6
+
+elif test $ac_fpp_need_cstyle = yes; then
+# It only makes sense to test this for indirect compilation,
+# i.e., if .f files are generated
+    echo "$as_me:$LINENO: checking how to pass C-style comments to $FC" >&5
+echo $ECHO_N "checking how to pass C-style comments to $FC... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_cstyle+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_cstyle=unknown
+
+cat > conftest.$ac_ext << \_ACEOF
+
+      program main
+
+      A=1. /* C-style comment */
+
+      end
+_ACEOF
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+ac_cmd='$FPP $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"
+if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+   cat conftest.f | grep '[*]/.*[*]/' >/dev/null 2>&1; then
+   ac_cv_prog_fpp_cstyle=
+else
+   ac_save_FPPFLAGS=$FPPFLAGS
+   ac_name=`expr "x$FPP" : 'x\(fpp\)'`
+   if test "x$ac_name" = xfpp; then
+     ac_flag="-c_com=no"
+   else
+     ac_flag="-C"
+   fi
+   FPPFLAGS="$FPPFLAGS $ac_flag"
+   ac_cmd='$FPP $FPPFLAGS conftest.$ac_ext '"$ac_fpp_out"
+   if { (eval echo "$as_me:$LINENO: \"$ac_cmd\"") >&5
+  (eval $ac_cmd) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+     cat conftest.f | grep '/[*].*[*]/' >/dev/null 2>&1; then
+     ac_cv_prog_fpp_cstyle=$ac_flag
+   fi
+   FPPFLAGS=$ac_save_FPPFLAGS
+fi
+rm -f conftest*
+ac_ext=$FPP_SRC_EXT
+# We need to use variables because compilation depends on whether
+# $F77 supports direct compilation of source with cpp directives
+ac_compile=$ac_fpp_compile
+ac_link=$ac_fpp_link
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_cstyle" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_cstyle" >&6
+if test "x$ac_cv_prog_fpp_cstyle" = "xunknown"; then
+  { echo "$as_me:$LINENO: WARNING: cannot find a way to make $FPP pass C-style comments" >&5
+echo "$as_me: WARNING: cannot find a way to make $FPP pass C-style comments" >&2;}
+else
+  FPPFLAGS="$FPPFLAGS $ac_cv_prog_fpp_cstyle"
+fi
+
+fi
+
+echo "$as_me:$LINENO: checking whether $FPP fulfills requested features" >&5
+echo $ECHO_N "checking whether $FPP fulfills requested features... $ECHO_C" >&6
+if test "${ac_cv_prog_fpp_ok+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_fpp_ok=$ac_fpp_ok
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fpp_ok" >&5
+echo "${ECHO_T}$ac_cv_prog_fpp_ok" >&6
+
+# We have all necessary information.
+# It remains to construct optimal build rules
+# (direct: .F.o or indirect: .F.f)
+# and carry out the substitutions.
+echo "$as_me:$LINENO: checking how to build from preprocessed Fortran sources" >&5
+echo $ECHO_N "checking how to build from preprocessed Fortran sources... $ECHO_C" >&6
+if test "${ac_cv_fpp_build_rule+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_fpp_build_rule=
+if test $ac_cv_prog_fc_cpp_ok = yes; then
+   ac_cv_fpp_build_rule=direct
+   ac_fpp_status=ok
+elif test $ac_cv_prog_fpp_ok = yes; then
+   ac_cv_fpp_build_rule=indirect
+   ac_fpp_status=ok
+elif test $ac_cv_prog_fc_cpp = no -a $ac_cv_prog_fpp = no; then
+   ac_cv_fpp_build_rule=
+   ac_fpp_status=fatal
+elif test $ac_cv_prog_fc_cpp = no; then
+   ac_cv_fpp_build_rule=indirect
+   ac_fpp_status=fail
+elif test -z "$ac_cv_prog_fpp"; then
+   ac_cv_fpp_build_rule=direct
+   ac_fpp_status=fail
+elif test $ac_fpp_equals_fc = yes; then
+   ac_cv_fpp_build_rule=direct
+   ac_fpp_status=fail
+else
+   ac_fpp_status=fail
+# Both methods - direct and indirect - fail to meet some requirements
+# We use a simple approach to choose the best alternative
+   ac_fc_score=0
+   ac_fpp_score=0
+   for ac_i in d i subs wrap cstyle CSTYLE; do
+      ac_tmp="\$ac_fpp_need_$ac_i"
+      ac_need=`eval echo $ac_tmp`
+      if test $ac_need = yes; then
+        ac_tmp="\$ac_cv_prog_fc_cpp_$ac_i"
+        ac_v_fc=`eval echo $ac_tmp`
+        ac_tmp="\$ac_cv_prog_fpp_$ac_i"
+        ac_v_fpp=`eval echo $ac_tmp`
+        test "x$ac_v_fc" = xyes && ac_fc_score=`expr $ac_fc_score + 1`
+        test "x$ac_v_fpp" = xyes && ac_fpp_score=`expr $ac_fpp_score + 1`
+      fi
+   done
+   if test $ac_fpp_score -gt $ac_fc_score; then
+     ac_cv_fpp_build_rule=indirect
+   else
+     ac_cv_fpp_build_rule=direct
+   fi
+fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fpp_build_rule" >&5
+echo "${ECHO_T}$ac_cv_fpp_build_rule" >&6
+
+if test -z "$ac_fpp_status"; then
+    # must be non-empty below
+    ac_fpp_status=cached
+fi
+
+if test $ac_fpp_status = fatal; then
+
+  { { echo "$as_me:$LINENO: error: cannot find a valid build rule for Fortran/cpp source: consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&5
+echo "$as_me: error: cannot find a valid build rule for Fortran/cpp source: consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&2;}
+   { (exit 1); exit 1; }; }
+
+elif test $ac_fpp_status = fail; then
+
+  { echo "$as_me:$LINENO: WARNING: cannot find a build rule for Fortran/cpp source that fulfills all requirements.  The compilation may fail or run time errors may arise.  Consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&5
+echo "$as_me: WARNING: cannot find a build rule for Fortran/cpp source that fulfills all requirements.  The compilation may fail or run time errors may arise.  Consider installing the free Fortran preprocessor fpp from ftp.netlib.org/fortran" >&2;}
+
+fi
+
+# Before we go any further, check that we're not courting disaster,
+# here, by using indirect compilation (.F -> .f -> .o) on a
+# case-insensitive filesystem.  If we are, there's nothing we can do
+# other than fail noisily.
+if test $ac_cv_fpp_build_rule = indirect; then
+    echo "$as_me:$LINENO: checking whether the filesystem is case-insensitive" >&5
+echo $ECHO_N "checking whether the filesystem is case-insensitive... $ECHO_C" >&6
+if test "${ac_cv_fc_cifs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f conftest.*
+        echo wibble >conftest.F
+        ac_cv_fc_cifs=no
+        if test -f conftest.f -a `cat conftest.f` = wibble; then
+            ac_cv_fc_cifs=yes
+        fi
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_cifs" >&5
+echo "${ECHO_T}$ac_cv_fc_cifs" >&6
+    if test $ac_cv_fc_cifs = yes; then
+        { { echo "$as_me:$LINENO: error: disaster: this Fortran needs indirect compilation, but we
+ have a case-insensitive filesystem, so .F -> .f would fail; further compilation isn't going to work -- consider filing a bug" >&5
+echo "$as_me: error: disaster: this Fortran needs indirect compilation, but we
+ have a case-insensitive filesystem, so .F -> .f would fail; further compilation isn't going to work -- consider filing a bug" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+fi
+
+# The flags here are those included in the 'compile' field of the
+# 'ppfc' language in automake.in, minus the {AM_,}FCFLAGS variables.
+# It's not _absolutely_ guaranteed that these are the correct ones,
+# and I (NG) would be open to argument about both {AM_,}CPPFLAGS and
+# {AM_,}FCFLAGS, but this set appears to work.  The .f_in extension
+# doesn't mean anything particular, but it's a useful and harmless
+# default, which can potentially be used in a user rule for an
+# explicit preprocessing step.
+if test $ac_cv_fpp_build_rule = direct; then
+    FPP_COMPILE_EXT=$FPP_SRC_EXT
+    FPP_PREPROCESS_EXT=f_in
+    FPP_MAKE_FLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)'
+else
+    FPP_COMPILE_EXT=DUMMYf
+    FPP_PREPROCESS_EXT=$FPP_SRC_EXT
+
+#  PWD: seem to need mainly for getting DEFAULT_INCLUDES and INCLUDES
+#  to the FC compiler (i.e $FC -I$(INCLUDES) to get local include files).
+    FPP_MAKE_FLAGS='$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS)'
+fi
+if test -z "$ac_fpp_out"; then
+   FPP_OUTPUT=" "
+else
+   FPP_OUTPUT=">\$@"
+fi
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Check whether --enable-shared or --disable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval="$enable_shared"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi;
+
+# Check whether --enable-static or --disable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval="$enable_static"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi;
+
+# Check whether --enable-fast-install or --disable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval="$enable_fast_install"
+  p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi;
+
+echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_host_alias=$host_alias
+test -z "$ac_cv_host_alias" &&
+  ac_cv_host_alias=$ac_cv_build_alias
+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
+  { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6
+host=$ac_cv_host
+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+
+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6
+
+echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
+if test "${ac_cv_prog_egrep+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
+    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+      # Check to see if the nm accepts a BSD-compat flag.
+      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+      #   nm: unknown option "B" ignored
+      # Tru64's nm complains that /dev/null is an invalid object file
+      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+      */dev/null* | *'Invalid file or object type'*)
+	lt_cv_path_NM="$tmp_nm -B"
+	break
+        ;;
+      *)
+	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	*/dev/null*)
+	  lt_cv_path_NM="$tmp_nm -p"
+	  break
+	  ;;
+	*)
+	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	  ;;
+	esac
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6
+NM="$lt_cv_path_NM"
+
+echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+  echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
+fi
+
+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case "$host_cpu" in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sco3.2v5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 6748 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case "`/usr/bin/file conftest.o`" in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+lt_cv_cc_needs_belf=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_header_stdc=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      exit(2);
+  exit (0);
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    (
+      cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to ussc@star.rl.ac.uk ##
+## --------------------------------- ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+  CXX=$ac_ct_CXX
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO:" \
+     "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-g"
+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_cxx_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+for ac_declaration in \
+   '' \
+   'extern "C" void std::exit (int) throw (); using std::exit;' \
+   'extern "C" void std::exit (int); using std::exit;' \
+   'extern "C" void exit (int) throw ();' \
+   'extern "C" void exit (int);' \
+   'void exit (int);'
+do
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+#include <stdlib.h>
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+continue
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_declaration
+int
+main ()
+{
+exit (42);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+rm -f conftest*
+if test -n "$ac_declaration"; then
+  echo '#ifdef __cplusplus' >>confdefs.h
+  echo $ac_declaration      >>confdefs.h
+  echo '#endif'             >>confdefs.h
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether non-existent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_cxx_preproc_warn_flag
+    ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' f90 xlf90 pgf90 epcf90 g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 'f77 -old_f77' f90 xlf90 pgf90 epcf90 g95 lf95 f95 fort xlf95 ifc efc pgf95 gfortran
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  test -n "$ac_ct_F77" && break
+done
+
+  F77=$ac_ct_F77
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:8093:" \
+     "checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
+  (eval $ac_compiler --version </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
+  (eval $ac_compiler -v </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
+  (eval $ac_compiler -V </dev/null >&5) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+
+ac_mod_ext=
+ac_fc_mod_uppercase=no
+cat > conftest.$ac_ext << \_ACEOF
+      module conftest
+       implicit none
+       integer :: i
+      end module conftest
+_ACEOF
+{ (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+echo "$as_me:$LINENO: checking for suffix of module files" >&5
+echo $ECHO_N "checking for suffix of module files... $ECHO_C" >&6
+for ac_mod_file in conftest.mod conftest.MOD conftest.M CONFTEST.MOD none
+do
+  if test -f $ac_mod_file; then
+    break;
+  fi
+done
+rm -f conftest.$ac_ext conftest.$ac_exe_ext conftest.mod conftest.MOD conftest.M CONFTEST.MOD
+#
+case $ac_mod_file in
+  conftest.mod)
+    ac_mod_ext=mod
+    ;;
+  conftest.MOD)
+    ac_mod_ext=MOD
+    ;;
+  conftest.M)
+    ac_mod_ext=M
+    ;;
+  CONFTEST.MOD)
+    ac_mod_ext=MOD
+    ac_fc_mod_uppercase=yes
+    ;;
+  none)
+    { echo "$as_me:$LINENO: WARNING: Could not find Fortran module file extension." >&5
+echo "$as_me: WARNING: Could not find Fortran module file extension." >&2;}
+    ;;
+esac
+
+if test $ac_mod_file != none; then
+  echo "$as_me:$LINENO: result: $ac_mod_ext" >&5
+echo "${ECHO_T}$ac_mod_ext" >&6
+fi
+if test $ac_fc_mod_uppercase = yes; then
+  { echo "$as_me:$LINENO: Fortran module filenames are uppercase." >&5
+echo "$as_me: Fortran module filenames are uppercase." >&6;}
+fi
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_compiler_gnu=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_prog_f77_g=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6
+else
+  echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDGIRSTW]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris* | sysv5*)
+  symcode='[BDRT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6
+else
+  echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+fi
+
+echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  AR=$ac_ct_AR
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  RANLIB=$ac_ct_RANLIB
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":"
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  STRIP=$ac_ct_STRIP
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    ;;
+  *)
+    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock or --disable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval="$enable_libtool_lock"
+
+fi;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic or --without-pic was given.
+if test "${with_pic+set}" = set; then
+  withval="$with_pic"
+  pic_mode="$withval"
+else
+  pic_mode=default
+fi;
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+#
+# Check for any special shared library compilation flags.
+#
+lt_prog_cc_shlib=
+if test "$GCC" = no; then
+  case $host_os in
+  sco3.2v5*)
+    lt_prog_cc_shlib='-belf'
+    ;;
+  esac
+fi
+if test -n "$lt_prog_cc_shlib"; then
+  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
+echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
+  if echo "$old_CC $old_CFLAGS " | grep "[ 	]$lt_prog_cc_shlib[ 	]" >/dev/null; then :
+  else
+    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
+echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
+    lt_cv_prog_cc_can_build_shared=no
+  fi
+fi
+
+
+#
+# Check to make sure the static flag actually works.
+#
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
+       $SED '/^$/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works=yes
+       fi
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9247: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:9251: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic='-qnocommon'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic='-Kpic'
+      lt_prog_compiler_static='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9509: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:9513: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9571: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:9575: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L=yes
+  	  hardcode_libdir_flag_spec='-L$libdir'
+  	  hardcode_libdir_separator=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec=' '
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc=no
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec=''
+      link_all_deplibs=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+archive_cmds='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator=:
+	  hardcode_direct=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=no
+      hardcode_shlibpath_var=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec=
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc=no
+        else
+	  archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var" || \
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 11816 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 11914 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which librarie types wil actually be built
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags or --without-tags was given.
+if test "${with_tags+set}" = set; then
+  withval="$with_tags"
+  tagnames="$withval"
+fi;
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  ac_ext=cc
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cc
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld or --without-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval="$with_gnu_ld"
+  test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6
+else
+  echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some GNU ld's only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct_CXX=yes
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	fi
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	no_undefined_flag_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# -bexpall does not export symbols beginning with underscore (_)
+	always_export_symbols_CXX=yes
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX=' '
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds it's shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      archive_cmds_need_lc_CXX=no
+      hardcode_direct_CXX=no
+      hardcode_automatic_CXX=yes
+      hardcode_shlibpath_var_CXX=unsupported
+      whole_archive_flag_spec_CXX=''
+      link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+        module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_CXX=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | kfreebsd*-gnu | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC*)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      case "$host_cpu" in
+      hppa*64*)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+	hardcode_libdir_separator_CXX=:
+        ;;
+      ia64*)
+	hardcode_libdir_flag_spec_CXX='-L$libdir'
+        ;;
+      *)
+	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case "$host_cpu" in
+    hppa*64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      aCC*)
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case "$host_cpu" in
+	    ia64*|hppa*64*)
+	      archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	archive_cmds_need_lc_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    ld_shlibs_CXX=no
+    ;;
+  openbsd*)
+    hardcode_direct_CXX=yes
+    hardcode_shlibpath_var_CXX=no
+    archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      export_dynamic_flag_spec_CXX='${wl}-E'
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sco*)
+    archive_cmds_need_lc_CXX=no
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=yes
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           lt_prog_compiler_pic_CXX='-qnocommon'
+           lt_prog_compiler_wl_CXX='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    case "$host_cpu" in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      sco*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      unixware*)
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14162: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:14166: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14224: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:14228: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var_CXX" || \
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_cxx_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 15593 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 15691 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
+
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
+
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-fpic'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_F77='-Kpic'
+      lt_prog_compiler_static_F77='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16576: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16580: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16638: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:16642: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_F77=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77=' '
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+archive_cmds_F77='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_F77='-L$libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_F77=:
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_F77=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_F77=
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var_F77" || \
+   test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:18765: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:18769: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_GCJ='-qnocommon'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case "$host_cpu" in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      pgcc* | pgf77* | pgf90*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-fpic'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    sco3.2v5*)
+      lt_prog_compiler_pic_GCJ='-Kpic'
+      lt_prog_compiler_static_GCJ='-dn'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19027: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:19031: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
+     $SED '/^$/d' conftest.err >conftest.er2
+     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case "$host_os" in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:19089: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:19093: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
+     $SED '/^$/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w .
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris* | sysv5*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$link_static_flag"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_GCJ=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  fi
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+  	if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+  	fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # -bexpall does not export symbols beginning with underscore (_)
+	  always_export_symbols_GCJ=yes
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ=' '
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds it's shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case "$host_os" in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_GCJ=no
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ=''
+      link_all_deplibs_GCJ=yes
+    if test "$GCC" = yes ; then
+#        echo "G77=$G77,compiler=$compiler,tagname=$tagname"
+        if test "$tagname" = "F77"; then
+archive_cmds_GCJ='$CC -dynamiclib -single_module -nostdlib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        else
+archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+    	output_verbose_link_cmd='echo'
+      module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_GCJ=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10* | hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case "$host_cpu" in
+	hppa*64*|ia64*)
+	  archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	case "$host_cpu" in
+	hppa*64*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	ia64*)
+	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	*)
+	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_GCJ=:
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    sco3.2v5*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4.2uw2*)
+      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_runpath_var=yes
+      runpath_var=LD_RUN_PATH
+      ;;
+
+   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z ${wl}text'
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv5*)
+      no_undefined_flag_GCJ=' -z text'
+      # $CC -shared without GNU ld will not create a library from C++
+      # object files and a static libstdc++, better avoid it by now
+      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      hardcode_libdir_flag_spec_GCJ=
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case "$host_cpu" in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+       else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+       ;;
+   *)
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+char (*f) () = shl_load;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != shl_load;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char shl_load ();
+int
+main ()
+{
+shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_shl_load=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+char (*f) () = dlopen;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != dlopen;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_func_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dl_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dlopen ();
+int
+main ()
+{
+dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_svld_dlopen=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char dld_link ();
+int
+main ()
+{
+dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_dld_dld_link=no
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 21334 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      LDFLAGS="$LDFLAGS $link_static_flag"
+      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 21432 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test x$pic_mode = xno; then
+  NOPIC_TRUE=
+  NOPIC_FALSE='#'
+else
+  NOPIC_TRUE='#'
+  NOPIC_FALSE=
+fi
+
+
+
+$_star_docs_only && { { echo "$as_me:$LINENO: error: STAR_PLATFORM_SOURCES in docs-only dir" >&5
+echo "$as_me: error: STAR_PLATFORM_SOURCES in docs-only dir" >&2;}
+   { (exit 1); exit 1; }; }
+echo "$as_me:$LINENO: checking platform-specific source for file(s) random.F gresid.F wait.f" >&5
+echo $ECHO_N "checking platform-specific source for file(s) random.F gresid.F wait.f... $ECHO_C" >&6
+_star_tmp=
+for platform in __vms __win default
+do
+    if test $platform = NONE; then
+        # Special case -- no file required
+        _star_tmp=NONE
+        break;
+    fi
+    if test $platform = default; then
+        _star_tmp=default
+        break;
+    fi
+    if expr $build : `echo $platform | sed 's/_/.*-/g'` >/dev/null; then
+        _star_tmp=$platform
+        break;
+    fi
+done
+if test -z "$_star_tmp"; then
+    # Use default, but it wasn't listed in the platform-list
+    # (though it should have been)
+    { echo "$as_me:$LINENO: WARNING: build platform $build does not match any of (__vms __win default): using \`default'" >&5
+echo "$as_me: WARNING: build platform $build does not match any of (__vms __win default): using \`default'" >&2;}
+    _star_tmp=default
+fi
+if test $_star_tmp = NONE; then
+    echo "$as_me:$LINENO: result: none required" >&5
+echo "${ECHO_T}none required" >&6
+else
+    echo "$as_me:$LINENO: result: using $_star_tmp" >&5
+echo "${ECHO_T}using $_star_tmp" >&6
+    for _t in random.F gresid.F wait.f
+    do
+        if test -f $srcdir/$_t$_star_tmp; then
+            (cd $srcdir; rm -f $_t; $LN_S $_t$_star_tmp $_t)
+        else
+            { echo "$as_me:$LINENO: WARNING: platform $_star_tmp matched, but no file $_t$_star_tmp found" >&5
+echo "$as_me: WARNING: platform $_star_tmp matched, but no file $_t$_star_tmp found" >&2;}
+        fi
+    done
+fi
+
+
+if cmp -s random.F random.Fdefault; then
+    # The unix version, to be configured
+    found_random=false
+
+
+for ac_func in rand random
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+char (*f) () = $ac_func;
+#endif
+#ifdef __cplusplus
+}
+#endif
+
+int
+main ()
+{
+return f != $ac_func;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+eval "$as_ac_var=no"
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+ found_random=true
+fi
+done
+
+    if $found_random; then
+        : OK
+    else
+        case $LIBOBJS in
+    "rtl_random.$ac_objext"   | \
+  *" rtl_random.$ac_objext"   | \
+    "rtl_random.$ac_objext "* | \
+  *" rtl_random.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS rtl_random.$ac_objext" ;;
+esac
+
+    fi
+fi
+
+$_star_docs_only &&
+        { { echo "$as_me:$LINENO: error: STAR_CNF_COMPATIBLE_SYMBOLS in docs-only dir" >&5
+echo "$as_me: error: STAR_CNF_COMPATIBLE_SYMBOLS in docs-only dir" >&2;}
+   { (exit 1); exit 1; }; }
+    echo "$as_me:$LINENO: checking how to make Fortran and C play nicely" >&5
+echo $ECHO_N "checking how to make Fortran and C play nicely... $ECHO_C" >&6
+if test "${star_cv_cnf_compatible_symbols+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+                  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+void funcone_() { return; }
+void func_two_() { return; }
+
+_ACEOF
+        if (eval $ac_compile) 2>&5
+        then
+            mv conftest.$ac_objext c-conftest.$ac_objext
+        else
+            { { echo "$as_me:$LINENO: error: cannot compile a C program!" >&5
+echo "$as_me: error: cannot compile a C program!" >&2;}
+   { (exit 1); exit 1; }; }
+        fi
+        ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+        ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+        cat >conftest.$ac_ext <<_ACEOF
+
+      PROGRAM conftest
+      CALL funcone
+      CALL func_two
+      END
+
+_ACEOF
+        star_cv_cnf_compatible_symbols=cantlink
+        # The only Fortran we (need to) handle at present is
+        # g77, which has a -fno-second-underscore option for
+        # simplifying the mangling here.  Other Fortrans we've
+        # used do only the single-underscore mangling.
+        for opt in "" "-fno-second-underscore"
+        do
+            if $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5
+            then
+                star_cv_cnf_compatible_symbols=$opt
+                break
+            fi
+        done
+        ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+        rm -f conftest* c-conftest*
+
+fi
+echo "$as_me:$LINENO: result: $star_cv_cnf_compatible_symbols" >&5
+echo "${ECHO_T}$star_cv_cnf_compatible_symbols" >&6
+    if test "$star_cv_cnf_compatible_symbols" = cantlink
+    then
+        { { echo "$as_me:$LINENO: error: cannot work out how" >&5
+echo "$as_me: error: cannot work out how" >&2;}
+   { (exit 1); exit 1; }; }
+    else
+        STAR_FCFLAGS="$STAR_FCFLAGS $star_cv_cnf_compatible_symbols"
+        STAR_FFLAGS="$STAR_FFLAGS $star_cv_cnf_compatible_symbols"
+    fi
+
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+echo "$as_me:$LINENO: checking how to get verbose linking output from $FC" >&5
+echo $ECHO_N "checking how to get verbose linking output from $FC... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_v+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_v=
+# Try some options frequently used verbose output
+for ac_verb in -v -verbose --verbose -V -\#\#\#; do
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_verb"
+(eval echo $as_me:22801: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+  # look for -l* and *.a constructs in the output
+  for ac_arg in $ac_fc_v_output; do
+     case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+          ac_cv_prog_fc_v=$ac_verb
+          break 2 ;;
+     esac
+  done
+done
+if test -z "$ac_cv_prog_fc_v"; then
+   { echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $FC" >&5
+echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;}
+fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+echo "$as_me: WARNING: compilation failed" >&2;}
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_v" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_v" >&6
+echo "$as_me:$LINENO: checking for Fortran libraries of $FC" >&5
+echo $ECHO_N "checking for Fortran libraries of $FC... $ECHO_C" >&6
+if test "${ac_cv_fc_libs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$FCLIBS" != "x"; then
+  ac_cv_fc_libs="$FCLIBS" # Let the user override the test.
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
+(eval echo $as_me:22879: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+
+ac_cv_fc_libs=
+
+# Save positional arguments (if any)
+ac_save_positional="$@"
+
+set X $ac_fc_v_output
+while test $# != 1; do
+  shift
+  ac_arg=$1
+  case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+        -bI:*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_arg; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+fi
+
+          ;;
+          # Ignore these flags.
+        -lang* | -lcrt*.o | -lc | -lgcc | -libmil | -LANG:=*)
+          ;;
+        -lkernel32)
+          test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+          ;;
+        -[LRuY])
+          # These flags, when seen by themselves, take an argument.
+          # We remove the space between option and argument and re-iterate
+          # unless we find an empty arg or a new option (starting with -)
+	  case $2 in
+	     "" | -*);;
+	     *)
+		ac_arg="$ac_arg$2"
+		shift; shift
+		set X $ac_arg "$@"
+		;;
+	  esac
+          ;;
+        -YP,*)
+          for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+              ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_j" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_arg="$ac_arg $ac_j"
+                               ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
+fi
+
+          done
+          ;;
+        -[lLR]*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+          # Ignore everything else.
+  esac
+done
+# restore positional arguments
+set X $ac_save_positional; shift
+
+# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,
+# then we insist that the "run path" must be an absolute path (i.e. it
+# must begin with a "/").
+case `(uname -sr) 2>/dev/null` in
+   "SunOS 5"*)
+      ac_ld_run_path=`echo $ac_fc_v_output |
+                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+      test "x$ac_ld_run_path" != x &&
+        if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_ld_run_path; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_ld_run_path"
+fi
+      ;;
+esac
+fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_libs" >&5
+echo "${ECHO_T}$ac_cv_fc_libs" >&6
+FCLIBS="$ac_cv_fc_libs"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+echo "$as_me:$LINENO: checking for alternate main to link with Fortran libraries" >&5
+echo $ECHO_N "checking for alternate main to link with Fortran libraries... $ECHO_C" >&6
+if test "${ac_cv_fc_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_fc_m_save_LIBS=$LIBS
+ LIBS="$LIBS $FCLIBS"
+ ac_fortran_dm_var=FC_DUMMY_MAIN
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+ ac_cv_fortran_main="main" # default entry point name
+ for ac_func in MAIN__ MAIN_ __main MAIN _MAIN __MAIN main_ main__ _main; do
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef FC_DUMMY_MAIN_EQ_F77
+#  undef F77_DUMMY_MAIN
+#  undef FC_DUMMY_MAIN
+#else
+#  undef $ac_fortran_dm_var
+#endif
+#define main $ac_func
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_c_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_fortran_main=$ac_func; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+ done
+ ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+ ac_cv_fc_main=$ac_cv_fortran_main
+ rm -f conftest*
+ LIBS=$ac_fc_m_save_LIBS
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_main" >&5
+echo "${ECHO_T}$ac_cv_fc_main" >&6
+if test "$ac_cv_fc_main" != "main"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FC_MAIN 1
+_ACEOF
+
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define FC_MAIN $ac_cv_fc_main
+_ACEOF
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+echo "$as_me:$LINENO: checking how to get verbose linking output from $FC" >&5
+echo $ECHO_N "checking how to get verbose linking output from $FC... $ECHO_C" >&6
+if test "${ac_cv_prog_fc_v+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_fc_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_prog_fc_v=
+# Try some options frequently used verbose output
+for ac_verb in -v -verbose --verbose -V -\#\#\#; do
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_verb"
+(eval echo $as_me:23203: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+  # look for -l* and *.a constructs in the output
+  for ac_arg in $ac_fc_v_output; do
+     case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a | -[lLRu]*)
+          ac_cv_prog_fc_v=$ac_verb
+          break 2 ;;
+     esac
+  done
+done
+if test -z "$ac_cv_prog_fc_v"; then
+   { echo "$as_me:$LINENO: WARNING: cannot determine how to obtain linking information from $FC" >&5
+echo "$as_me: WARNING: cannot determine how to obtain linking information from $FC" >&2;}
+fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ echo "$as_me:$LINENO: WARNING: compilation failed" >&5
+echo "$as_me: WARNING: compilation failed" >&2;}
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_prog_fc_v" >&5
+echo "${ECHO_T}$ac_cv_prog_fc_v" >&6
+echo "$as_me:$LINENO: checking for Fortran libraries of $FC" >&5
+echo $ECHO_N "checking for Fortran libraries of $FC... $ECHO_C" >&6
+if test "${ac_cv_fc_libs+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$FCLIBS" != "x"; then
+  ac_cv_fc_libs="$FCLIBS" # Let the user override the test.
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+
+# Compile and link our simple test program by passing a flag (argument
+# 1 to this macro) to the Fortran compiler in order to get
+# "verbose" output that we can then parse for the Fortran linker
+# flags.
+ac_save_FFLAGS=$FCFLAGS
+FCFLAGS="$FCFLAGS $ac_cv_prog_fc_v"
+(eval echo $as_me:23281: \"$ac_link\") >&5
+ac_fc_v_output=`eval $ac_link 5>&1 2>&1 | grep -v 'Driving:'`
+echo "$ac_fc_v_output" >&5
+FCFLAGS=$ac_save_FFLAGS
+
+rm -f conftest*
+
+# On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where
+# /foo, /bar, and /baz are search directories for the Fortran linker.
+# Here, we change these into -L/foo -L/bar -L/baz (and put it first):
+ac_fc_v_output="`echo $ac_fc_v_output |
+	grep 'LPATH is:' |
+	sed 's,.*LPATH is\(: *[^ ]*\).*,\1,;s,: */, -L/,g'` $ac_fc_v_output"
+
+case $ac_fc_v_output in
+  # If we are using xlf then replace all the commas with spaces.
+  *xlfentry*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/,/ /g'` ;;
+
+  # With Intel ifc, ignore the quoted -mGLOB_options_string stuff (quoted
+  # $LIBS confuse us, and the libraries appear later in the output anyway).
+  *mGLOB_options_string*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed 's/\"-mGLOB[^\"]*\"/ /g'` ;;
+
+  # If we are using Cray Fortran then delete quotes.
+  # Use "\"" instead of '"' for font-lock-mode.
+  # FIXME: a more general fix for quoted arguments with spaces?
+  *cft90*)
+    ac_fc_v_output=`echo $ac_fc_v_output | sed "s/\"//g"` ;;
+esac
+
+
+
+ac_cv_fc_libs=
+
+# Save positional arguments (if any)
+ac_save_positional="$@"
+
+set X $ac_fc_v_output
+while test $# != 1; do
+  shift
+  ac_arg=$1
+  case $ac_arg in
+        [\\/]*.a | ?:[\\/]*.a)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+        -bI:*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_arg; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+fi
+
+          ;;
+          # Ignore these flags.
+        -lang* | -lcrt*.o | -lc | -lgcc | -libmil | -LANG:=*)
+          ;;
+        -lkernel32)
+          test x"$CYGWIN" != xyes && ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+          ;;
+        -[LRuY])
+          # These flags, when seen by themselves, take an argument.
+          # We remove the space between option and argument and re-iterate
+          # unless we find an empty arg or a new option (starting with -)
+	  case $2 in
+	     "" | -*);;
+	     *)
+		ac_arg="$ac_arg$2"
+		shift; shift
+		set X $ac_arg "$@"
+		;;
+	  esac
+          ;;
+        -YP,*)
+          for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do
+              ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_j" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_arg="$ac_arg $ac_j"
+                               ac_cv_fc_libs="$ac_cv_fc_libs $ac_j"
+fi
+
+          done
+          ;;
+        -[lLR]*)
+            ac_exists=false
+  for ac_i in $ac_cv_fc_libs; do
+    if test x"$ac_arg" = x"$ac_i"; then
+      ac_exists=true
+      break
+    fi
+  done
+
+  if test x"$ac_exists" = xtrue; then
+  :
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_arg"
+fi
+
+          ;;
+          # Ignore everything else.
+  esac
+done
+# restore positional arguments
+set X $ac_save_positional; shift
+
+# We only consider "LD_RUN_PATH" on Solaris systems.  If this is seen,
+# then we insist that the "run path" must be an absolute path (i.e. it
+# must begin with a "/").
+case `(uname -sr) 2>/dev/null` in
+   "SunOS 5"*)
+      ac_ld_run_path=`echo $ac_fc_v_output |
+                        sed -n 's,^.*LD_RUN_PATH *= *\(/[^ ]*\).*$,-R\1,p'`
+      test "x$ac_ld_run_path" != x &&
+        if test "$ac_compiler_gnu" = yes; then
+  for ac_link_opt in $ac_ld_run_path; do
+    ac_cv_fc_libs="$ac_cv_fc_libs -Xlinker $ac_link_opt"
+  done
+else
+  ac_cv_fc_libs="$ac_cv_fc_libs $ac_ld_run_path"
+fi
+      ;;
+esac
+fi # test "x$[]_AC_LANG_PREFIX[]LIBS" = "x"
+
+fi
+echo "$as_me:$LINENO: result: $ac_cv_fc_libs" >&5
+echo "${ECHO_T}$ac_cv_fc_libs" >&6
+FCLIBS="$ac_cv_fc_libs"
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#  Perform the check that configures f77.h.in for the return type of REAL
+#  Fortran functions. On 64-bit g77 with f2c compatibility this is double
+#  not float.
+$_star_docs_only &&
+        { { echo "$as_me:$LINENO: error: STAR_CNF_F2C_SYMBOLS in docs-only dir" >&5
+echo "$as_me: error: STAR_CNF_F2C_SYMBOLS in docs-only dir" >&2;}
+   { (exit 1); exit 1; }; }
+    echo "$as_me:$LINENO: checking if $FC is in strict f2c compatible mode" >&5
+echo $ECHO_N "checking if $FC is in strict f2c compatible mode... $ECHO_C" >&6
+if test "${star_cv_cnf_f2c_compatible+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+          if test "$ac_cv_fc_compiler_gnu" = yes; then
+                      ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+           cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+float fred_() {
+   return 1.0f;
+}
+
+_ACEOF
+           if (eval $ac_compile) 2>&5
+           then
+               mv conftest.$ac_objext c-conftest.$ac_objext
+           else
+               { { echo "$as_me:$LINENO: error: cannot compile a C function!" >&5
+echo "$as_me: error: cannot compile a C function!" >&2;}
+   { (exit 1); exit 1; }; }
+           fi
+           ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+           ac_ext=${FC_SRCEXT-f}
+ac_compile='$FC -c $FCFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext >&5'
+ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $FCFLAGS_SRCEXT conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_fc_compiler_gnu
+
+           cat >conftest.$ac_ext <<_ACEOF
+
+      PROGRAM F2CTEST
+      REAL FRED
+      REAL R
+      R = FRED()
+      IF ( R .NE. 0.0 ) THEN
+         WRITE(*,*) 'no'
+      ELSE
+         WRITE(*,*) 'yes'
+      ENDIF
+      END
+
+_ACEOF
+           star_cv_cnf_f2c_compatible=yes
+           $FC $FCFLAGS $opt -o conftest conftest.f c-conftest.$ac_objext 2>&5
+           if test -r conftest
+           then
+              star_cv_cnf_f2c_compatible=`eval conftest | sed 's/\ //g'` > /dev/null
+           else
+              { { echo "$as_me:$LINENO: error: failed to link program" >&5
+echo "$as_me: error: failed to link program" >&2;}
+   { (exit 1); exit 1; }; }
+           fi
+           ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+           rm -f conftest* c-conftest*
+      else
+         # Not a GNU compiler.
+         star_cv_cnf_f2c_compatible=no
+      fi
+
+fi
+echo "$as_me:$LINENO: result: $star_cv_cnf_f2c_compatible" >&5
+echo "${ECHO_T}$star_cv_cnf_f2c_compatible" >&6
+    if test "$star_cv_cnf_f2c_compatible" = "yes"
+    then
+        REAL_FUNCTION_TYPE=double
+
+    else
+        REAL_FUNCTION_TYPE=float
+
+    fi
+
+
+          ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+    STAR_DOCUMENTATION="$STAR_DOCUMENTATION sun67"
+            if $_star_build_docs; then
+            STAR_LATEX_DOCUMENTATION="$STAR_LATEX_DOCUMENTATION sun67.tex sun67.ps sun67.htx_tar"
+
+        fi
+              for _star_tmp in star2html
+  do
+    STAR_DEPENDENCIES_CHILDREN="$STAR_DEPENDENCIES_CHILDREN<sourceset>$_star_tmp</sourceset>"
+  done
+
+        eval default_bindir=`echo $bindir | sed 's,\${exec_prefix},$ac_default_prefix,'`
+
+                      # Extract the first word of "star2html", so it can be a program name with args.
+set dummy star2html; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_STAR2HTML+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $STAR2HTML in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_STAR2HTML="$STAR2HTML" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy="$STARLINK/Perl/bin:$STARLINK/starjava/bin:$STARLINK/bin:$default_bindir:$PATH"
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_STAR2HTML="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_STAR2HTML" && ac_cv_path_STAR2HTML="star2html"
+  ;;
+esac
+fi
+STAR2HTML=$ac_cv_path_STAR2HTML
+
+if test -n "$STAR2HTML"; then
+  echo "$as_me:$LINENO: result: $STAR2HTML" >&5
+echo "${ECHO_T}$STAR2HTML" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
+
+
+    if $_star_build_docs; then
+        : ${LATEX2DVI='$$LATEX "\\batchmode\\input $$1" && $$LATEX "\\batchmode\\input $$1"'}
+
+    else
+        { echo "$as_me:$LINENO: WARNING: not installing docs sun67" >&5
+echo "$as_me: WARNING: not installing docs sun67" >&2;}
+    fi
+
+
+                                                  ac_config_files="$ac_config_files Makefile component.xml vers.f veri.f f77.h"
+
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+{
+  (set) 2>&1 |
+    case `(ac_space=' '; set | grep ac_space) 2>&1` in
+    *ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;;
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n \
+	"s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+      ;;
+    esac;
+} |
+  sed '
+     t clear
+     : clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     : end' >>confcache
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
+  if test -w $cache_file; then
+    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+    cat confcache >$cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[	 ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[	 ]*$//;
+}'
+fi
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_i=`echo "$ac_i" |
+	 sed 's/\$U\././;s/\.o$//;s/\.obj$//'`
+  # 2. Add them.
+  ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${NOPIC_TRUE}" && test -z "${NOPIC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"NOPIC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"NOPIC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+  set -o posix
+fi
+DUALCASE=1; export DUALCASE # for MKS sh
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# Work around bugs in pre-3.0 UWIN ksh.
+$as_unset ENV MAIL MAILPATH
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)$' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
+  	  /^X\/\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\/\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+
+
+# PATH needs CR, and LINENO needs CR and PATH.
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
+  # Find who we are.  Look in the path if we contain no path at all
+  # relative or not.
+  case $0 in
+    *[\\/]* ) as_myself=$0 ;;
+    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+
+       ;;
+  esac
+  # We did not find ourselves, most probably we were run as `sh COMMAND'
+  # in which case we are not to be found in the path.
+  if test "x$as_myself" = x; then
+    as_myself=$0
+  fi
+  if test ! -f "$as_myself"; then
+    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+  case $CONFIG_SHELL in
+  '')
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for as_base in sh bash ksh sh5; do
+	 case $as_dir in
+	 /*)
+	   if ("$as_dir/$as_base" -c '
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
+	     $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; }
+	     $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; }
+	     CONFIG_SHELL=$as_dir/$as_base
+	     export CONFIG_SHELL
+	     exec "$CONFIG_SHELL" "$0" ${1+"$@"}
+	   fi;;
+	 esac
+       done
+done
+;;
+  esac
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line before each line; the second 'sed' does the real
+  # work.  The second script uses 'N' to pair each line-number line
+  # with the numbered line, and appends trailing '-' during
+  # substitution so that $LINENO is not a special case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
+  sed '=' <$as_myself |
+    sed '
+      N
+      s,$,-,
+      : loop
+      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
+      t loop
+      s,-$,,
+      s,^['$as_cr_digits']*\n,,
+    ' >$as_me.lineno &&
+  chmod +x $as_me.lineno ||
+    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensible to this).
+  . ./$as_me.lineno
+  # Exit status is that of the last command.
+  exit
+}
+
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+  *c*,-n*) ECHO_N= ECHO_C='
+' ECHO_T='	' ;;
+  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
+  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  # We could just check for DJGPP; but this test a) works b) is more generic
+  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+  if test -f conf$$.exe; then
+    # Don't use ln at all; we don't have any links
+    as_ln_s='cp -p'
+  else
+    as_ln_s='ln -s'
+  fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+as_executable_p="test -f"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" 	$as_nl"
+
+# CDPATH.
+$as_unset CDPATH
+
+exec 6>&1
+
+# Open the log real soon, to keep \$[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.  Logging --version etc. is OK.
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+cat >&5 <<_CSEOF
+
+This file was extended by sla $as_me 2.5-4, which was
+generated by Starlink Autoconf 2.59.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+_CSEOF
+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
+echo >&5
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+sla config.status 2.5-4
+configured by $0, generated by Starlink Autoconf 2.59,
+  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2003 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "x$1" : 'x\([^=]*\)='`
+    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  -*)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  *) # This is not an option, so the user has probably given explicit
+     # arguments.
+     ac_option=$1
+     ac_need_defaults=false;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --vers* | -V )
+    echo "$ac_cs_version"; exit 0 ;;
+  --he | --h)
+    # Conflict between --help and --header
+    { { echo "$as_me:$LINENO: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit 0 ;;
+  --debug | --d* | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&5
+echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2;}
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1" ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS section.
+#
+
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_config_target in $ac_config_targets
+do
+  case "$ac_config_target" in
+  # Handling of arguments.
+  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "component.xml" ) CONFIG_FILES="$CONFIG_FILES component.xml" ;;
+  "vers.f" ) CONFIG_FILES="$CONFIG_FILES vers.f" ;;
+  "veri.f" ) CONFIG_FILES="$CONFIG_FILES veri.f" ;;
+  "f77.h" ) CONFIG_FILES="$CONFIG_FILES f77.h" ;;
+  "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+  "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason to put it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./confstat$$-$RANDOM
+  (umask 077 && mkdir $tmp)
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+  # Protect against being on the right side of a sed subst in config.status.
+  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@DEFS@,$DEFS,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@LIBS@,$LIBS,;t t
+s,@libsla_la_version_info@,$libsla_la_version_info,;t t
+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
+s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@CYGPATH_W@,$CYGPATH_W,;t t
+s,@PACKAGE@,$PACKAGE,;t t
+s,@VERSION@,$VERSION,;t t
+s,@ACLOCAL@,$ACLOCAL,;t t
+s,@AUTOCONF@,$AUTOCONF,;t t
+s,@AUTOMAKE@,$AUTOMAKE,;t t
+s,@AUTOHEADER@,$AUTOHEADER,;t t
+s,@MAKEINFO@,$MAKEINFO,;t t
+s,@install_sh@,$install_sh,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t
+s,@mkdir_p@,$mkdir_p,;t t
+s,@AWK@,$AWK,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@am__leading_dot@,$am__leading_dot,;t t
+s,@AMTAR@,$AMTAR,;t t
+s,@am__tar@,$am__tar,;t t
+s,@am__untar@,$am__untar,;t t
+s,@STARLINK@,$STARLINK,;t t
+s,@STAR_CPPFLAGS@,$STAR_CPPFLAGS,;t t
+s,@STAR_FCFLAGS@,$STAR_FCFLAGS,;t t
+s,@STAR_FFLAGS@,$STAR_FFLAGS,;t t
+s,@STAR_LDFLAGS@,$STAR_LDFLAGS,;t t
+s,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@DEPDIR@,$DEPDIR,;t t
+s,@am__include@,$am__include,;t t
+s,@am__quote@,$am__quote,;t t
+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t
+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t
+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
+s,@CCDEPMODE@,$CCDEPMODE,;t t
+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@FC@,$FC,;t t
+s,@FCFLAGS@,$FCFLAGS,;t t
+s,@ac_ct_FC@,$ac_ct_FC,;t t
+s,@C_FC_FCLINK_MAGIC@,$C_FC_FCLINK_MAGIC,;t t
+s,@C_FC_PPFC_FCLINK_MAGIC@,$C_FC_PPFC_FCLINK_MAGIC,;t t
+s,@stardocsdir@,$stardocsdir,;t t
+s,@staretcdir@,$staretcdir,;t t
+s,@starexamplesdir@,$starexamplesdir,;t t
+s,@starfacsdir@,$starfacsdir,;t t
+s,@starhelpdir@,$starhelpdir,;t t
+s,@starnewsdir@,$starnewsdir,;t t
+s,@STAR_DEPENDENCIES_ATTRIBUTES@,$STAR_DEPENDENCIES_ATTRIBUTES,;t t
+s,@STAR_DEPENDENCIES_CHILDREN@,$STAR_DEPENDENCIES_CHILDREN,;t t
+s,@STAR_DOCUMENTATION@,$STAR_DOCUMENTATION,;t t
+s,@PACKAGE_VERSION_MAJOR@,$PACKAGE_VERSION_MAJOR,;t t
+s,@PACKAGE_VERSION_MINOR@,$PACKAGE_VERSION_MINOR,;t t
+s,@PACKAGE_VERSION_RELEASE@,$PACKAGE_VERSION_RELEASE,;t t
+s,@PACKAGE_VERSION_INTEGER@,$PACKAGE_VERSION_INTEGER,;t t
+s,@STAR_MANIFEST_DIR@,$STAR_MANIFEST_DIR,;t t
+s,@PREDIST@,$PREDIST,;t t
+s,@PAX@,$PAX,;t t
+s,@TAR@,$TAR,;t t
+s,@CPP@,$CPP,;t t
+s,@FPPFLAGS_F@,$FPPFLAGS_F,;t t
+s,@FPPFLAGS_DEF@,$FPPFLAGS_DEF,;t t
+s,@FPP@,$FPP,;t t
+s,@FPPFLAGS@,$FPPFLAGS,;t t
+s,@FPP_OUTPUT@,$FPP_OUTPUT,;t t
+s,@FPP_MAKE_FLAGS@,$FPP_MAKE_FLAGS,;t t
+s,@FPP_COMPILE_EXT@,$FPP_COMPILE_EXT,;t t
+s,@FPP_PREPROCESS_EXT@,$FPP_PREPROCESS_EXT,;t t
+s,@FPP_SRC_EXT@,$FPP_SRC_EXT,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@EGREP@,$EGREP,;t t
+s,@LN_S@,$LN_S,;t t
+s,@ECHO@,$ECHO,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+s,@CXXDEPMODE@,$CXXDEPMODE,;t t
+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t
+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@F77@,$F77,;t t
+s,@FFLAGS@,$FFLAGS,;t t
+s,@ac_ct_F77@,$ac_ct_F77,;t t
+s,@LIBTOOL@,$LIBTOOL,;t t
+s,@NOPIC_TRUE@,$NOPIC_TRUE,;t t
+s,@NOPIC_FALSE@,$NOPIC_FALSE,;t t
+s,@LIBOBJS@,$LIBOBJS,;t t
+s,@FCLIBS@,$FCLIBS,;t t
+s,@REAL_FUNCTION_TYPE@,$REAL_FUNCTION_TYPE,;t t
+s,@STAR2HTML@,$STAR2HTML,;t t
+s,@LATEX2DVI@,$LATEX2DVI,;t t
+s,@STAR_LATEX_DOCUMENTATION@,$STAR_LATEX_DOCUMENTATION,;t t
+s,@LTLIBOBJS@,$LTLIBOBJS,;t t
+CEOF
+
+_ACEOF
+
+  cat >>$CONFIG_STATUS <<\_ACEOF
+  # Split the substitutions into bite-sized pieces for seds with
+  # small command number limits, like on Digital OSF/1 and HP-UX.
+  ac_max_sed_lines=48
+  ac_sed_frag=1 # Number of current file.
+  ac_beg=1 # First line for current file.
+  ac_end=$ac_max_sed_lines # Line after last line for current file.
+  ac_more_lines=:
+  ac_sed_cmds=
+  while $ac_more_lines; do
+    if test $ac_beg -gt 1; then
+      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    else
+      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+    fi
+    if test ! -s $tmp/subs.frag; then
+      ac_more_lines=false
+    else
+      # The purpose of the label and of the branching condition is to
+      # speed up the sed processing (if there are no `@' at all, there
+      # is no need to browse any of the substitutions).
+      # These are the two extra sed commands mentioned above.
+      (echo ':t
+  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
+      if test -z "$ac_sed_cmds"; then
+	ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
+      else
+	ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
+      fi
+      ac_sed_frag=`expr $ac_sed_frag + 1`
+      ac_beg=$ac_end
+      ac_end=`expr $ac_end + $ac_max_sed_lines`
+    fi
+  done
+  if test -z "$ac_sed_cmds"; then
+    ac_sed_cmds=cat
+  fi
+fi # test -n "$CONFIG_FILES"
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
+  esac
+
+  if test x"$ac_file" != x-; then
+    { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    rm -f "$ac_file"
+  fi
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    configure_input=
+  else
+    configure_input="$ac_file.  "
+  fi
+  configure_input=$configure_input"Generated from `echo $ac_file_in |
+				     sed 's,.*/,,'` by configure."
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@abs_srcdir@,$ac_abs_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
+s,@builddir@,$ac_builddir,;t t
+s,@abs_builddir@,$ac_abs_builddir,;t t
+s,@top_builddir@,$ac_top_builddir,;t t
+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+  rm -f $tmp/stdin
+  if test x"$ac_file" != x-; then
+    mv $tmp/out $ac_file
+  else
+    cat $tmp/out
+    rm -f $tmp/out
+  fi
+
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_HEADER section.
+#
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s,^\([	 ]*\)#\([	 ]*define[	 ][	 ]*\)'
+ac_dB='[	 ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([	 ]*\)#\([	 ]*\)undef\([	 ][	 ]*\)'
+ac_uB='$,\1#\2define\3'
+ac_uC=' '
+ac_uD=',;t'
+
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case $ac_file in
+  - | *:- | *:-:* ) # input from stdin
+	cat >$tmp/stdin
+	ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+	ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+  * )   ac_file_in=$ac_file.in ;;
+  esac
+
+  test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+  # First look for the input files in the build tree, otherwise in the
+  # src tree.
+  ac_file_inputs=`IFS=:
+    for f in $ac_file_in; do
+      case $f in
+      -) echo $tmp/stdin ;;
+      [\\/$]*)
+	 # Absolute (can't be DOS-style, as IFS=:)
+	 test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 # Do quote $f, to prevent DOS paths from being IFS'd.
+	 echo "$f";;
+      *) # Relative
+	 if test -f "$f"; then
+	   # Build tree
+	   echo "$f"
+	 elif test -f "$srcdir/$f"; then
+	   # Source tree
+	   echo "$srcdir/$f"
+	 else
+	   # /dev/null tree
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+   { (exit 1); exit 1; }; }
+	 fi;;
+      esac
+    done` || { (exit 1); exit 1; }
+  # Remove the trailing spaces.
+  sed 's/[	 ]*$//' $ac_file_inputs >$tmp/in
+
+_ACEOF
+
+# Transform confdefs.h into two sed scripts, `conftest.defines' and
+# `conftest.undefs', that substitutes the proper values into
+# config.h.in to produce config.h.  The first handles `#define'
+# templates, and the second `#undef' templates.
+# And first: Protect against being on the right side of a sed subst in
+# config.status.  Protect against being in an unquoted here document
+# in config.status.
+rm -f conftest.defines conftest.undefs
+# Using a here document instead of a string reduces the quoting nightmare.
+# Putting comments in sed scripts is not portable.
+#
+# `end' is used to avoid that the second main sed command (meant for
+# 0-ary CPP macros) applies to n-ary macro definitions.
+# See the Autoconf documentation for `clear'.
+cat >confdef2sed.sed <<\_ACEOF
+s/[\\&,]/\\&/g
+s,[\\$`],\\&,g
+t clear
+: clear
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*\)\(([^)]*)\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp
+t end
+s,^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 ][^	 ]*\)[	 ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp
+: end
+_ACEOF
+# If some macros were called several times there might be several times
+# the same #defines, which is useless.  Nevertheless, we may not want to
+# sort them, since we want the *last* AC-DEFINE to be honored.
+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines
+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs
+rm -f confdef2sed.sed
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >>conftest.undefs <<\_ACEOF
+s,^[	 ]*#[	 ]*undef[	 ][	 ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */,
+_ACEOF
+
+# Break up conftest.defines because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS
+echo '  if grep "^[	 ]*#[	 ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS
+echo '  # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS
+echo '  :' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.defines >/dev/null
+do
+  # Write a limited-size here document to $tmp/defines.sed.
+  echo '  cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#define' lines.
+  echo '/^[	 ]*#[	 ]*define/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/defines.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines
+echo '  fi # grep' >>$CONFIG_STATUS
+echo >>$CONFIG_STATUS
+
+# Break up conftest.undefs because some shells have a limit on the size
+# of here documents, and old seds have small limits too (100 cmds).
+echo '  # Handle all the #undef templates' >>$CONFIG_STATUS
+rm -f conftest.tail
+while grep . conftest.undefs >/dev/null
+do
+  # Write a limited-size here document to $tmp/undefs.sed.
+  echo '  cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS
+  # Speed up: don't consider the non `#undef'
+  echo '/^[	 ]*#[	 ]*undef/!b' >>$CONFIG_STATUS
+  # Work around the forget-to-reset-the-flag bug.
+  echo 't clr' >>$CONFIG_STATUS
+  echo ': clr' >>$CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS
+  echo 'CEOF
+  sed -f $tmp/undefs.sed $tmp/in >$tmp/out
+  rm -f $tmp/in
+  mv $tmp/out $tmp/in
+' >>$CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail
+  rm -f conftest.undefs
+  mv conftest.tail conftest.undefs
+done
+rm -f conftest.undefs
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+  # Let's still pretend it is `configure' which instantiates (i.e., don't
+  # use $as_me), people would be surprised to read:
+  #    /* config.h.  Generated by config.status.  */
+  if test x"$ac_file" = x-; then
+    echo "/* Generated by configure.  */" >$tmp/config.h
+  else
+    echo "/* $ac_file.  Generated by configure.  */" >$tmp/config.h
+  fi
+  cat $tmp/in >>$tmp/config.h
+  rm -f $tmp/in
+  if test x"$ac_file" != x-; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      ac_dir=`(dirname "$ac_file") 2>/dev/null ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+      { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+      rm -f $ac_file
+      mv $tmp/config.h $ac_file
+    fi
+  else
+    cat $tmp/config.h
+    rm -f $tmp/config.h
+  fi
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X$ac_file : 'X\(//\)[^/]' \| \
+	 X$ac_file : 'X\(//\)$' \| \
+	 X$ac_file : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`/stamp-h$_am_stamp_count
+done
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+  ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+  ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+  ac_dir=`(dirname "$ac_dest") 2>/dev/null ||
+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_dest" : 'X\(//\)[^/]' \| \
+	 X"$ac_dest" : 'X\(//\)$' \| \
+	 X"$ac_dest" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$ac_dest" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  { if $as_mkdir_p; then
+    mkdir -p "$ac_dir"
+  else
+    as_dir="$ac_dir"
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5
+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+  ac_builddir=.
+
+if test "$ac_dir" != .; then
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A "../" for each directory in $ac_dir_suffix.
+  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
+else
+  ac_dir_suffix= ac_top_builddir=
+fi
+
+case $srcdir in
+  .)  # No --srcdir option.  We are building in place.
+    ac_srcdir=.
+    if test -z "$ac_top_builddir"; then
+       ac_top_srcdir=.
+    else
+       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
+    fi ;;
+  [\\/]* | ?:[\\/]* )  # Absolute path.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir ;;
+  *) # Relative path.
+    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_builddir$srcdir ;;
+esac
+
+# Do not use `cd foo && pwd` to compute absolute paths, because
+# the directories may not exist.
+case `pwd` in
+.) ac_abs_builddir="$ac_dir";;
+*)
+  case "$ac_dir" in
+  .) ac_abs_builddir=`pwd`;;
+  [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";;
+  *) ac_abs_builddir=`pwd`/"$ac_dir";;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_builddir=${ac_top_builddir}.;;
+*)
+  case ${ac_top_builddir}. in
+  .) ac_abs_top_builddir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;;
+  *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_srcdir=$ac_srcdir;;
+*)
+  case $ac_srcdir in
+  .) ac_abs_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;;
+  *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;;
+  esac;;
+esac
+case $ac_abs_builddir in
+.) ac_abs_top_srcdir=$ac_top_srcdir;;
+*)
+  case $ac_top_srcdir in
+  .) ac_abs_top_srcdir=$ac_abs_builddir;;
+  [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;;
+  *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;;
+  esac;;
+esac
+
+
+  { echo "$as_me:$LINENO: executing $ac_dest commands" >&5
+echo "$as_me: executing $ac_dest commands" >&6;}
+  case $ac_dest in
+    depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`(dirname "$mf") 2>/dev/null ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`(dirname "$file") 2>/dev/null ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    { if $as_mkdir_p; then
+    mkdir -p $dirpart/$fdir
+  else
+    as_dir=$dirpart/$fdir
+    as_dirs=
+    while test ! -d "$as_dir"; do
+      as_dirs="$as_dir $as_dirs"
+      as_dir=`(dirname "$as_dir") 2>/dev/null ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| \
+	 .     : '\(.\)' 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+  	  /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+  	  /^X\(\/\/\)$/{ s//\1/; q; }
+  	  /^X\(\/\).*/{ s//\1/; q; }
+  	  s/.*/./; q'`
+    done
+    test ! -n "$as_dirs" || mkdir $as_dirs
+  fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5
+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;}
+   { (exit 1); exit 1; }; }; }
+
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+  esac
+done
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+
diff --git a/cr2af.f b/cr2af.f
new file mode 100644
index 0000000000000000000000000000000000000000..1e621442c268d69a129c342a6d7f1c37fe2b7ddb
--- /dev/null
+++ b/cr2af.f
@@ -0,0 +1,75 @@
+      SUBROUTINE sla_CR2AF (NDP, ANGLE, SIGN, IDMSF)
+*+
+*     - - - - - -
+*      C R 2 A F
+*     - - - - - -
+*
+*  Convert an angle in radians into degrees, arcminutes, arcseconds
+*  (single precision)
+*
+*  Given:
+*     NDP       int      number of decimal places of arcseconds
+*     ANGLE     real     angle in radians
+*
+*  Returned:
+*     SIGN      char     '+' or '-'
+*     IDMSF     int(4)   degrees, arcminutes, arcseconds, fraction
+*
+*  Notes:
+*
+*     1)  NDP less than zero is interpreted as zero.
+*
+*     2)  The largest useful value for NDP is determined by the size of
+*         ANGLE, the format of REAL floating-point numbers on the target
+*         machine, and the risk of overflowing IDMSF(4).  On some
+*         architectures, for ANGLE up to 2pi, the available floating-
+*         point precision corresponds roughly to NDP=3.  This is well
+*         below the ultimate limit of NDP=9 set by the capacity of a
+*         typical 32-bit IDMSF(4).
+*
+*     3)  The absolute value of ANGLE may exceed 2pi.  In cases where it
+*         does not, it is up to the caller to test for and handle the
+*         case where ANGLE is very nearly 2pi and rounds up to 360 deg,
+*         by testing for IDMSF(1)=360 and setting IDMSF(1-4) to zero.
+*
+*  Called:  sla_CD2TF
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      REAL ANGLE
+      CHARACTER SIGN*(*)
+      INTEGER IDMSF(4)
+
+*  Hours to degrees * radians to turns
+      REAL F
+      PARAMETER (F=15.0/6.283185307179586476925287)
+
+
+
+*  Scale then use days to h,m,s routine
+      CALL sla_CD2TF(NDP,ANGLE*F,SIGN,IDMSF)
+
+      END
diff --git a/cr2tf.f b/cr2tf.f
new file mode 100644
index 0000000000000000000000000000000000000000..e0d7ec212fccab0f3f27765d4cfe0c644d94fda5
--- /dev/null
+++ b/cr2tf.f
@@ -0,0 +1,75 @@
+      SUBROUTINE sla_CR2TF (NDP, ANGLE, SIGN, IHMSF)
+*+
+*     - - - - - -
+*      C R 2 T F
+*     - - - - - -
+*
+*  Convert an angle in radians into hours, minutes, seconds
+*  (single precision)
+*
+*  Given:
+*     NDP       int      number of decimal places of seconds
+*     ANGLE     real     angle in radians
+*
+*  Returned:
+*     SIGN      char     '+' or '-'
+*     IHMSF     int(4)   hours, minutes, seconds, fraction
+*
+*  Notes:
+*
+*  1)  NDP less than zero is interpreted as zero.
+*
+*  2)  The largest useful value for NDP is determined by the size of
+*      ANGLE, the format of REAL floating-point numbers on the target
+*      machine, and the risk of overflowing IHMSF(4).  On some
+*      architectures, for ANGLE up to 2pi, the available floating-point
+*      precision corresponds roughly to NDP=3.  This is well below
+*      the ultimate limit of NDP=9 set by the capacity of a typical
+*      32-bit IHMSF(4).
+*
+*  3)  The absolute value of ANGLE may exceed 2pi.  In cases where it
+*      does not, it is up to the caller to test for and handle the
+*      case where ANGLE is very nearly 2pi and rounds up to 24 hours,
+*      by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+*
+*  Called:  sla_CD2TF
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      REAL ANGLE
+      CHARACTER SIGN*(*)
+      INTEGER IHMSF(4)
+
+*  Turns to radians
+      REAL T2R
+      PARAMETER (T2R=6.283185307179586476925287)
+
+
+
+*  Scale then use days to h,m,s routine
+      CALL sla_CD2TF(NDP,ANGLE/T2R,SIGN,IHMSF)
+
+      END
diff --git a/cs2c.f b/cs2c.f
new file mode 100644
index 0000000000000000000000000000000000000000..ab210214d7c094a7a8efe89a3b21da710c6bd9be
--- /dev/null
+++ b/cs2c.f
@@ -0,0 +1,57 @@
+      SUBROUTINE sla_CS2C (A, B, V)
+*+
+*     - - - - -
+*      C S 2 C
+*     - - - - -
+*
+*  Spherical coordinates to direction cosines (single precision)
+*
+*  Given:
+*     A,B      real      spherical coordinates in radians
+*                           (RA,Dec), (long,lat) etc.
+*
+*  Returned:
+*     V        real(3)   x,y,z unit vector
+*
+*  The spherical coordinates are longitude (+ve anticlockwise looking
+*  from the +ve latitude pole) and latitude.  The Cartesian coordinates
+*  are right handed, with the x axis at zero longitude and latitude, and
+*  the z axis at the +ve latitude pole.
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL A,B,V(3)
+
+      REAL COSB
+
+
+
+      COSB = COS(B)
+
+      V(1) = COS(A)*COSB
+      V(2) = SIN(A)*COSB
+      V(3) = SIN(B)
+
+      END
diff --git a/cs2c6.f b/cs2c6.f
new file mode 100644
index 0000000000000000000000000000000000000000..5b714d41b22495f6a38d60535facbc128d605040
--- /dev/null
+++ b/cs2c6.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_CS2C6 ( A, B, R, AD, BD, RD, V )
+*+
+*     - - - - - -
+*      C S 2 C 6
+*     - - - - - -
+*
+*  Conversion of position & velocity in spherical coordinates
+*  to Cartesian coordinates (single precision)
+*
+*  Given:
+*     A     r      longitude (radians)
+*     B     r      latitude (radians)
+*     R     r      radial coordinate
+*     AD    r      longitude derivative (radians per unit time)
+*     BD    r      latitude derivative (radians per unit time)
+*     RD    r      radial derivative
+*
+*  Returned:
+*     V     r(6)   Cartesian position & velocity vector
+*
+*  Last revision:   11 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL A, B, R, AD, BD, RD, V(6)
+
+      REAL SA, CA, SB, CB, RCB, X, Y, RBD, W
+
+
+
+*  Useful functions.
+      SA = SIN(A)
+      CA = COS(A)
+      SB = SIN(B)
+      CB = COS(B)
+      RCB = R*CB
+      X = RCB*CA
+      Y = RCB*SA
+      RBD = R*BD
+      W = RBD*SB-CB*RD
+
+*  Position.
+      V(1) = X
+      V(2) = Y
+      V(3) = R*SB
+
+*  Velocity.
+      V(4) = -Y*AD-W*CA
+      V(5) = X*AD-W*SA
+      V(6) = RBD*CB+SB*RD
+
+      END
diff --git a/ctf2d.f b/ctf2d.f
new file mode 100644
index 0000000000000000000000000000000000000000..9de8fef234fdf92393ecc3daac104bb58999f13f
--- /dev/null
+++ b/ctf2d.f
@@ -0,0 +1,73 @@
+      SUBROUTINE sla_CTF2D (IHOUR, IMIN, SEC, DAYS, J)
+*+
+*     - - - - - -
+*      C T F 2 D
+*     - - - - - -
+*
+*  Convert hours, minutes, seconds to days (single precision)
+*
+*  Given:
+*     IHOUR       int       hours
+*     IMIN        int       minutes
+*     SEC         real      seconds
+*
+*  Returned:
+*     DAYS        real      interval in days
+*     J           int       status:  0 = OK
+*                                    1 = IHOUR outside range 0-23
+*                                    2 = IMIN outside range 0-59
+*                                    3 = SEC outside range 0-59.999...
+*
+*  Notes:
+*
+*  1)  The result is computed even if any of the range checks
+*      fail.
+*
+*  2)  The sign must be dealt with outside this routine.
+*
+*  P.T.Wallace   Starlink   November 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IHOUR,IMIN
+      REAL SEC,DAYS
+      INTEGER J
+
+*  Seconds per day
+      REAL D2S
+      PARAMETER (D2S=86400.0)
+
+
+
+*  Preset status
+      J=0
+
+*  Validate sec, min, hour
+      IF (SEC.LT.0.0.OR.SEC.GE.60.0) J=3
+      IF (IMIN.LT.0.OR.IMIN.GT.59) J=2
+      IF (IHOUR.LT.0.OR.IHOUR.GT.23) J=1
+
+*  Compute interval
+      DAYS=(60.0*(60.0*REAL(IHOUR)+REAL(IMIN))+SEC)/D2S
+
+      END
diff --git a/ctf2r.f b/ctf2r.f
new file mode 100644
index 0000000000000000000000000000000000000000..83ecb5df4573357f75d7a5bdf8d0633d394622e7
--- /dev/null
+++ b/ctf2r.f
@@ -0,0 +1,71 @@
+      SUBROUTINE sla_CTF2R (IHOUR, IMIN, SEC, RAD, J)
+*+
+*     - - - - - -
+*      C T F 2 R
+*     - - - - - -
+*
+*  Convert hours, minutes, seconds to radians (single precision)
+*
+*  Given:
+*     IHOUR       int       hours
+*     IMIN        int       minutes
+*     SEC         real      seconds
+*
+*  Returned:
+*     RAD         real      angle in radians
+*     J           int       status:  0 = OK
+*                                    1 = IHOUR outside range 0-23
+*                                    2 = IMIN outside range 0-59
+*                                    3 = SEC outside range 0-59.999...
+*
+*  Called:
+*     sla_CTF2D
+*
+*  Notes:
+*
+*  1)  The result is computed even if any of the range checks
+*      fail.
+*
+*  2)  The sign must be dealt with outside this routine.
+*
+*  P.T.Wallace   Starlink   November 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IHOUR,IMIN
+      REAL SEC,RAD
+      INTEGER J
+
+      REAL TURNS
+
+*  Turns to radians
+      REAL T2R
+      PARAMETER (T2R=6.283185307179586476925287)
+
+
+
+*  Convert to turns then radians
+      CALL sla_CTF2D(IHOUR,IMIN,SEC,TURNS,J)
+      RAD=T2R*TURNS
+
+      END
diff --git a/daf2r.f b/daf2r.f
new file mode 100644
index 0000000000000000000000000000000000000000..f13f0a3e083fd9b5f466ee43bf368c9a7772920b
--- /dev/null
+++ b/daf2r.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_DAF2R (IDEG, IAMIN, ASEC, RAD, J)
+*+
+*     - - - - - -
+*      D A F 2 R
+*     - - - - - -
+*
+*  Convert degrees, arcminutes, arcseconds to radians
+*  (double precision)
+*
+*  Given:
+*     IDEG        int       degrees
+*     IAMIN       int       arcminutes
+*     ASEC        dp        arcseconds
+*
+*  Returned:
+*     RAD         dp        angle in radians
+*     J           int       status:  0 = OK
+*                                    1 = IDEG outside range 0-359
+*                                    2 = IAMIN outside range 0-59
+*                                    3 = ASEC outside range 0-59.999...
+*
+*  Notes:
+*     1)  The result is computed even if any of the range checks
+*         fail.
+*     2)  The sign must be dealt with outside this routine.
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IDEG,IAMIN
+      DOUBLE PRECISION ASEC,RAD
+      INTEGER J
+
+*  Arc seconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+
+
+*  Preset status
+      J=0
+
+*  Validate arcsec, arcmin, deg
+      IF (ASEC.LT.0D0.OR.ASEC.GE.60D0) J=3
+      IF (IAMIN.LT.0.OR.IAMIN.GT.59) J=2
+      IF (IDEG.LT.0.OR.IDEG.GT.359) J=1
+
+*  Compute angle
+      RAD=AS2R*(60D0*(60D0*DBLE(IDEG)+DBLE(IAMIN))+ASEC)
+
+      END
diff --git a/dafin.f b/dafin.f
new file mode 100644
index 0000000000000000000000000000000000000000..05969d7b0a13dab784636898e7a0c1d68a8bf7b9
--- /dev/null
+++ b/dafin.f
@@ -0,0 +1,180 @@
+      SUBROUTINE sla_DAFIN (STRING, IPTR, A, J)
+*+
+*     - - - - - -
+*      D A F I N
+*     - - - - - -
+*
+*  Sexagesimal character string to angle (double precision)
+*
+*  Given:
+*     STRING  c*(*)   string containing deg, arcmin, arcsec fields
+*     IPTR      i     pointer to start of decode (1st = 1)
+*
+*  Returned:
+*     IPTR      i     advanced past the decoded angle
+*     A         d     angle in radians
+*     J         i     status:  0 = OK
+*                             +1 = default, A unchanged
+*                             -1 = bad degrees      )
+*                             -2 = bad arcminutes   )  (note 3)
+*                             -3 = bad arcseconds   )
+*
+*  Example:
+*
+*    argument    before                           after
+*
+*    STRING      '-57 17 44.806  12 34 56.7'      unchanged
+*    IPTR        1                                16 (points to 12...)
+*    A           ?                                -1.00000D0
+*    J           ?                                0
+*
+*    A further call to sla_DAFIN, without adjustment of IPTR, will
+*    decode the second angle, 12deg 34min 56.7sec.
+*
+*  Notes:
+*
+*     1)  The first three "fields" in STRING are degrees, arcminutes,
+*         arcseconds, separated by spaces or commas.  The degrees field
+*         may be signed, but not the others.  The decoding is carried
+*         out by the DFLTIN routine and is free-format.
+*
+*     2)  Successive fields may be absent, defaulting to zero.  For
+*         zero status, the only combinations allowed are degrees alone,
+*         degrees and arcminutes, and all three fields present.  If all
+*         three fields are omitted, a status of +1 is returned and A is
+*         unchanged.  In all other cases A is changed.
+*
+*     3)  Range checking:
+*
+*           The degrees field is not range checked.  However, it is
+*           expected to be integral unless the other two fields are absent.
+*
+*           The arcminutes field is expected to be 0-59, and integral if
+*           the arcseconds field is present.  If the arcseconds field
+*           is absent, the arcminutes is expected to be 0-59.9999...
+*
+*           The arcseconds field is expected to be 0-59.9999...
+*
+*     4)  Decoding continues even when a check has failed.  Under these
+*         circumstances the field takes the supplied value, defaulting
+*         to zero, and the result A is computed and returned.
+*
+*     5)  Further fields after the three expected ones are not treated
+*         as an error.  The pointer IPTR is left in the correct state
+*         for further decoding with the present routine or with DFLTIN
+*         etc. See the example, above.
+*
+*     6)  If STRING contains hours, minutes, seconds instead of degrees
+*         etc, or if the required units are turns (or days) instead of
+*         radians, the result A should be multiplied as follows:
+*
+*           for        to obtain    multiply
+*           STRING     A in         A by
+*
+*           d ' "      radians      1       =  1D0
+*           d ' "      turns        1/2pi   =  0.1591549430918953358D0
+*           h m s      radians      15      =  15D0
+*           h m s      days         15/2pi  =  2.3873241463784300365D0
+*
+*  Called:  sla_DFLTIN
+*
+*  P.T.Wallace   Starlink   1 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER IPTR
+      DOUBLE PRECISION A
+      INTEGER J
+
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=4.84813681109535993589914102358D-6)
+      INTEGER JF,JD,JM,JS
+      DOUBLE PRECISION DEG,ARCMIN,ARCSEC
+
+
+
+*  Preset the status to OK
+      JF=0
+
+*  Defaults
+      DEG=0D0
+      ARCMIN=0D0
+      ARCSEC=0D0
+
+*  Decode degrees, arcminutes, arcseconds
+      CALL sla_DFLTIN(STRING,IPTR,DEG,JD)
+      IF (JD.GT.1) THEN
+         JF=-1
+      ELSE
+         CALL sla_DFLTIN(STRING,IPTR,ARCMIN,JM)
+         IF (JM.LT.0.OR.JM.GT.1) THEN
+            JF=-2
+         ELSE
+            CALL sla_DFLTIN(STRING,IPTR,ARCSEC,JS)
+            IF (JS.LT.0.OR.JS.GT.1) THEN
+               JF=-3
+
+*        See if the combination of fields is credible
+            ELSE IF (JD.GT.0) THEN
+*           No degrees:  arcmin, arcsec ought also to be absent
+               IF (JM.EQ.0) THEN
+*              Suspect arcmin
+                  JF=-2
+               ELSE IF (JS.EQ.0) THEN
+*              Suspect arcsec
+                  JF=-3
+               ELSE
+*              All three fields absent
+                  JF=1
+               END IF
+*        Degrees present:  if arcsec present so ought arcmin to be
+            ELSE IF (JM.NE.0.AND.JS.EQ.0) THEN
+               JF=-3
+
+*        Tests for range and integrality
+
+*        Degrees
+            ELSE IF (JM.EQ.0.AND.DINT(DEG).NE.DEG) THEN
+               JF=-1
+*        Arcminutes
+            ELSE IF ((JS.EQ.0.AND.DINT(ARCMIN).NE.ARCMIN).OR.
+     :               ARCMIN.GE.60D0) THEN
+               JF=-2
+*        Arcseconds
+            ELSE IF (ARCSEC.GE.60D0) THEN
+               JF=-3
+            END IF
+         END IF
+      END IF
+
+*  Unless all three fields absent, compute angle value
+      IF (JF.LE.0) THEN
+         A=AS2R*(60D0*(60D0*ABS(DEG)+ARCMIN)+ARCSEC)
+         IF (JD.LT.0) A=-A
+      END IF
+
+*  Return the status
+      J=JF
+
+      END
diff --git a/dat.f b/dat.f
new file mode 100644
index 0000000000000000000000000000000000000000..29c1d553632bf4f99934e6007bf1003ccb9b79a2
--- /dev/null
+++ b/dat.f
@@ -0,0 +1,240 @@
+      DOUBLE PRECISION FUNCTION sla_DAT (UTC)
+*+
+*     - - - -
+*      D A T
+*     - - - -
+*
+*  Increment to be applied to Coordinated Universal Time UTC to give
+*  International Atomic Time TAI (double precision)
+*
+*  Given:
+*     UTC      d      UTC date as a modified JD (JD-2400000.5)
+*
+*  Result:  TAI-UTC in seconds
+*
+*  Notes:
+*
+*  1  The UTC is specified to be a date rather than a time to indicate
+*     that care needs to be taken not to specify an instant which lies
+*     within a leap second.  Though in most cases UTC can include the
+*     fractional part, correct behaviour on the day of a leap second
+*     can only be guaranteed up to the end of the second 23:59:59.
+*
+*  2  For epochs from 1961 January 1 onwards, the expressions from the
+*     file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used.
+*
+*  3  The 5ms time step at 1961 January 1 is taken from 2.58.1 (p87) of
+*     the 1992 Explanatory Supplement.
+*
+*  4  UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper
+*     to call the routine with an earlier epoch.  However, if this
+*     is attempted, the TAI-UTC expression for the year 1960 is used.
+*
+*
+*     :-----------------------------------------:
+*     :                                         :
+*     :                IMPORTANT                :
+*     :                                         :
+*     :  This routine must be updated on each   :
+*     :     occasion that a leap second is      :
+*     :                announced                :
+*     :                                         :
+*     :  Latest leap second:  2006 January 1    :
+*     :                                         :
+*     :-----------------------------------------:
+*
+*  Last revision:   11 July 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION UTC
+
+      DOUBLE PRECISION DT
+
+
+
+      IF (.FALSE.) THEN
+
+* - - - - - - - - - - - - - - - - - - - - - - *
+*  Add new code here on each occasion that a  *
+*  leap second is announced, and update the   *
+*  preamble comments appropriately.           *
+* - - - - - - - - - - - - - - - - - - - - - - *
+
+*     2006 January 1
+      ELSE IF (UTC.GE.53736D0) THEN
+         DT=33D0
+
+*     1999 January 1
+      ELSE IF (UTC.GE.51179D0) THEN
+         DT=32D0
+
+*     1997 July 1
+      ELSE IF (UTC.GE.50630D0) THEN
+         DT=31D0
+
+*     1996 January 1
+      ELSE IF (UTC.GE.50083D0) THEN
+         DT=30D0
+
+*     1994 July 1
+      ELSE IF (UTC.GE.49534D0) THEN
+         DT=29D0
+
+*     1993 July 1
+      ELSE IF (UTC.GE.49169D0) THEN
+         DT=28D0
+
+*     1992 July 1
+      ELSE IF (UTC.GE.48804D0) THEN
+         DT=27D0
+
+*     1991 January 1
+      ELSE IF (UTC.GE.48257D0) THEN
+         DT=26D0
+
+*     1990 January 1
+      ELSE IF (UTC.GE.47892D0) THEN
+         DT=25D0
+
+*     1988 January 1
+      ELSE IF (UTC.GE.47161D0) THEN
+         DT=24D0
+
+*     1985 July 1
+      ELSE IF (UTC.GE.46247D0) THEN
+         DT=23D0
+
+*     1983 July 1
+      ELSE IF (UTC.GE.45516D0) THEN
+         DT=22D0
+
+*     1982 July 1
+      ELSE IF (UTC.GE.45151D0) THEN
+         DT=21D0
+
+*     1981 July 1
+      ELSE IF (UTC.GE.44786D0) THEN
+         DT=20D0
+
+*     1980 January 1
+      ELSE IF (UTC.GE.44239D0) THEN
+         DT=19D0
+
+*     1979 January 1
+      ELSE IF (UTC.GE.43874D0) THEN
+         DT=18D0
+
+*     1978 January 1
+      ELSE IF (UTC.GE.43509D0) THEN
+         DT=17D0
+
+*     1977 January 1
+      ELSE IF (UTC.GE.43144D0) THEN
+         DT=16D0
+
+*     1976 January 1
+      ELSE IF (UTC.GE.42778D0) THEN
+         DT=15D0
+
+*     1975 January 1
+      ELSE IF (UTC.GE.42413D0) THEN
+         DT=14D0
+
+*     1974 January 1
+      ELSE IF (UTC.GE.42048D0) THEN
+         DT=13D0
+
+*     1973 January 1
+      ELSE IF (UTC.GE.41683D0) THEN
+         DT=12D0
+
+*     1972 July 1
+      ELSE IF (UTC.GE.41499D0) THEN
+         DT=11D0
+
+*     1972 January 1
+      ELSE IF (UTC.GE.41317D0) THEN
+         DT=10D0
+
+*     1968 February 1
+      ELSE IF (UTC.GE.39887D0) THEN
+         DT=4.2131700D0+(UTC-39126D0)*0.002592D0
+
+*     1966 January 1
+      ELSE IF (UTC.GE.39126D0) THEN
+         DT=4.3131700D0+(UTC-39126D0)*0.002592D0
+
+*     1965 September 1
+      ELSE IF (UTC.GE.39004D0) THEN
+         DT=3.8401300D0+(UTC-38761D0)*0.001296D0
+
+*     1965 July 1
+      ELSE IF (UTC.GE.38942D0) THEN
+         DT=3.7401300D0+(UTC-38761D0)*0.001296D0
+
+*     1965 March 1
+      ELSE IF (UTC.GE.38820D0) THEN
+         DT=3.6401300D0+(UTC-38761D0)*0.001296D0
+
+*     1965 January 1
+      ELSE IF (UTC.GE.38761D0) THEN
+         DT=3.5401300D0+(UTC-38761D0)*0.001296D0
+
+*     1964 September 1
+      ELSE IF (UTC.GE.38639D0) THEN
+         DT=3.4401300D0+(UTC-38761D0)*0.001296D0
+
+*     1964 April 1
+      ELSE IF (UTC.GE.38486D0) THEN
+         DT=3.3401300D0+(UTC-38761D0)*0.001296D0
+
+*     1964 January 1
+      ELSE IF (UTC.GE.38395D0) THEN
+         DT=3.2401300D0+(UTC-38761D0)*0.001296D0
+
+*     1963 November 1
+      ELSE IF (UTC.GE.38334D0) THEN
+         DT=1.9458580D0+(UTC-37665D0)*0.0011232D0
+
+*     1962 January 1
+      ELSE IF (UTC.GE.37665D0) THEN
+         DT=1.8458580D0+(UTC-37665D0)*0.0011232D0
+
+*     1961 August 1
+      ELSE IF (UTC.GE.37512D0) THEN
+         DT=1.3728180D0+(UTC-37300D0)*0.001296D0
+
+*     1961 January 1
+      ELSE IF (UTC.GE.37300D0) THEN
+         DT=1.4228180D0+(UTC-37300D0)*0.001296D0
+
+*     Before that
+      ELSE
+         DT=1.4178180D0+(UTC-37300D0)*0.001296D0
+
+      END IF
+
+      sla_DAT=DT
+
+      END
diff --git a/dav2m.f b/dav2m.f
new file mode 100644
index 0000000000000000000000000000000000000000..994d4ff918dbd6a02d11195dd56110484b2197e1
--- /dev/null
+++ b/dav2m.f
@@ -0,0 +1,83 @@
+      SUBROUTINE sla_DAV2M (AXVEC, RMAT)
+*+
+*     - - - - - -
+*      D A V 2 M
+*     - - - - - -
+*
+*  Form the rotation matrix corresponding to a given axial vector.
+*  (double precision)
+*
+*  A rotation matrix describes a rotation about some arbitrary axis,
+*  called the Euler axis.  The "axial vector" supplied to this routine
+*  has the same direction as the Euler axis, and its magnitude is the
+*  amount of rotation in radians.
+*
+*  Given:
+*    AXVEC  d(3)     axial vector (radians)
+*
+*  Returned:
+*    RMAT   d(3,3)   rotation matrix
+*
+*  If AXVEC is null, the unit matrix is returned.
+*
+*  The reference frame rotates clockwise as seen looking along
+*  the axial vector from the origin.
+*
+*  Last revision:   26 November 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION AXVEC(3),RMAT(3,3)
+
+      DOUBLE PRECISION X,Y,Z,PHI,S,C,W
+
+
+
+*  Rotation angle - magnitude of axial vector - and functions
+      X = AXVEC(1)
+      Y = AXVEC(2)
+      Z = AXVEC(3)
+      PHI = SQRT(X*X+Y*Y+Z*Z)
+      S = SIN(PHI)
+      C = COS(PHI)
+      W = 1D0-C
+
+*  Euler axis - direction of axial vector (perhaps null)
+      IF (PHI.NE.0D0) THEN
+         X = X/PHI
+         Y = Y/PHI
+         Z = Z/PHI
+      END IF
+
+*  Compute the rotation matrix
+      RMAT(1,1) = X*X*W+C
+      RMAT(1,2) = X*Y*W+Z*S
+      RMAT(1,3) = X*Z*W-Y*S
+      RMAT(2,1) = X*Y*W-Z*S
+      RMAT(2,2) = Y*Y*W+C
+      RMAT(2,3) = Y*Z*W+X*S
+      RMAT(3,1) = X*Z*W+Y*S
+      RMAT(3,2) = Y*Z*W-X*S
+      RMAT(3,3) = Z*Z*W+C
+
+      END
diff --git a/dbear.f b/dbear.f
new file mode 100644
index 0000000000000000000000000000000000000000..b452f789551ce3d8e316477248541d2d932d90f7
--- /dev/null
+++ b/dbear.f
@@ -0,0 +1,59 @@
+      DOUBLE PRECISION FUNCTION sla_DBEAR (A1, B1, A2, B2)
+*+
+*     - - - - - -
+*      D B E A R
+*     - - - - - -
+*
+*  Bearing (position angle) of one point on a sphere relative to another
+*  (double precision)
+*
+*  Given:
+*     A1,B1    d    spherical coordinates of one point
+*     A2,B2    d    spherical coordinates of the other point
+*
+*  (The spherical coordinates are RA,Dec, Long,Lat etc, in radians.)
+*
+*  The result is the bearing (position angle), in radians, of point
+*  A2,B2 as seen from point A1,B1.  It is in the range +/- pi.  If
+*  A2,B2 is due east of A1,B1 the bearing is +pi/2.  Zero is returned
+*  if the two points are coincident.
+*
+*  P.T.Wallace   Starlink   23 March 1991
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION A1,B1,A2,B2
+
+      DOUBLE PRECISION DA,X,Y
+
+
+      DA=A2-A1
+      Y=SIN(DA)*COS(B2)
+      X=SIN(B2)*COS(B1)-COS(B2)*SIN(B1)*COS(DA)
+      IF (X.NE.0D0.OR.Y.NE.0D0) THEN
+         sla_DBEAR=ATAN2(Y,X)
+      ELSE
+         sla_DBEAR=0D0
+      END IF
+
+      END
diff --git a/dbjin.f b/dbjin.f
new file mode 100644
index 0000000000000000000000000000000000000000..6e319ad7559b040c95f5f521aead41522ec4333c
--- /dev/null
+++ b/dbjin.f
@@ -0,0 +1,130 @@
+      SUBROUTINE sla_DBJIN (STRING, NSTRT, DRESLT, J1, J2)
+*+
+*     - - - - - -
+*      D B J I N
+*     - - - - - -
+*
+*  Convert free-format input into double precision floating point,
+*  using DFLTIN but with special syntax extensions.
+*
+*  The purpose of the syntax extensions is to help cope with mixed
+*  FK4 and FK5 data.  In addition to the syntax accepted by DFLTIN,
+*  the following two extensions are recognized by DBJIN:
+*
+*     1)  A valid non-null field preceded by the character 'B'
+*         (or 'b') is accepted.
+*
+*     2)  A valid non-null field preceded by the character 'J'
+*         (or 'j') is accepted.
+*
+*  The calling program is notified of the incidence of either of these
+*  extensions through an supplementary status argument.  The rest of
+*  the arguments are as for DFLTIN.
+*
+*  Given:
+*     STRING      char       string containing field to be decoded
+*     NSTRT       int        pointer to 1st character of field in string
+*
+*  Returned:
+*     NSTRT       int        incremented
+*     DRESLT      double     result
+*     J1          int        DFLTIN status: -1 = -OK
+*                                            0 = +OK
+*                                           +1 = null field
+*                                           +2 = error
+*     J2          int        syntax flag:  0 = normal DFLTIN syntax
+*                                         +1 = 'B' or 'b'
+*                                         +2 = 'J' or 'j'
+*
+*  Called:  sla_DFLTIN
+*
+*  For details of the basic syntax, see sla_DFLTIN.
+*
+*  P.T.Wallace   Starlink   23 November 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER NSTRT
+      DOUBLE PRECISION DRESLT
+      INTEGER J1,J2
+
+      INTEGER J2A,LENSTR,NA,J1A,NB,J1B
+      CHARACTER C
+
+
+
+*   Preset syntax flag
+      J2A=0
+
+*   Length of string
+      LENSTR=LEN(STRING)
+
+*   Pointer to current character
+      NA=NSTRT
+
+*   Attempt normal decode
+      CALL sla_DFLTIN(STRING,NA,DRESLT,J1A)
+
+*   Proceed only if pointer still within string
+      IF (NA.GE.1.AND.NA.LE.LENSTR) THEN
+
+*      See if DFLTIN reported a null field
+         IF (J1A.EQ.1) THEN
+
+*         It did: examine character it stuck on
+            C=STRING(NA:NA)
+            IF (C.EQ.'B'.OR.C.EQ.'b') THEN
+*            'B' - provisionally note
+               J2A=1
+            ELSE IF (C.EQ.'J'.OR.C.EQ.'j') THEN
+*            'J' - provisionally note
+               J2A=2
+            END IF
+
+*         Following B or J, attempt to decode a number
+            IF (J2A.EQ.1.OR.J2A.EQ.2) THEN
+               NB=NA+1
+               CALL sla_DFLTIN(STRING,NB,DRESLT,J1B)
+
+*            If successful, copy pointer and status
+               IF (J1B.LE.0) THEN
+                  NA=NB
+                  J1A=J1B
+*            If not, forget about the B or J
+               ELSE
+                  J2A=0
+               END IF
+
+            END IF
+
+         END IF
+
+      END IF
+
+*   Return argument values and exit
+      NSTRT=NA
+      J1=J1A
+      J2=J2A
+
+      END
diff --git a/dc62s.f b/dc62s.f
new file mode 100644
index 0000000000000000000000000000000000000000..f2f4c8b2e2c3568c5c2bf1d18dc8d0061aba8438
--- /dev/null
+++ b/dc62s.f
@@ -0,0 +1,99 @@
+      SUBROUTINE sla_DC62S (V, A, B, R, AD, BD, RD)
+*+
+*     - - - - - -
+*      D C 6 2 S
+*     - - - - - -
+*
+*  Conversion of position & velocity in Cartesian coordinates
+*  to spherical coordinates (double precision)
+*
+*  Given:
+*     V      d(6)   Cartesian position & velocity vector
+*
+*  Returned:
+*     A      d      longitude (radians)
+*     B      d      latitude (radians)
+*     R      d      radial coordinate
+*     AD     d      longitude derivative (radians per unit time)
+*     BD     d      latitude derivative (radians per unit time)
+*     RD     d      radial derivative
+*
+*  P.T.Wallace   Starlink   28 April 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION V(6),A,B,R,AD,BD,RD
+
+      DOUBLE PRECISION X,Y,Z,XD,YD,ZD,RXY2,RXY,R2,XYP
+
+
+
+*  Components of position/velocity vector
+      X=V(1)
+      Y=V(2)
+      Z=V(3)
+      XD=V(4)
+      YD=V(5)
+      ZD=V(6)
+
+*  Component of R in XY plane squared
+      RXY2=X*X+Y*Y
+
+*  Modulus squared
+      R2=RXY2+Z*Z
+
+*  Protection against null vector
+      IF (R2.EQ.0D0) THEN
+         X=XD
+         Y=YD
+         Z=ZD
+         RXY2=X*X+Y*Y
+         R2=RXY2+Z*Z
+      END IF
+
+*  Position and velocity in spherical coordinates
+      RXY=SQRT(RXY2)
+      XYP=X*XD+Y*YD
+      IF (RXY2.NE.0D0) THEN
+         A=ATAN2(Y,X)
+         B=ATAN2(Z,RXY)
+         AD=(X*YD-Y*XD)/RXY2
+         BD=(ZD*RXY2-Z*XYP)/(R2*RXY)
+      ELSE
+         A=0D0
+         IF (Z.NE.0D0) THEN
+            B=ATAN2(Z,RXY)
+         ELSE
+            B=0D0
+         END IF
+         AD=0D0
+         BD=0D0
+      END IF
+      R=SQRT(R2)
+      IF (R.NE.0D0) THEN
+         RD=(XYP+Z*ZD)/R
+      ELSE
+         RD=0D0
+      END IF
+
+      END
diff --git a/dcc2s.f b/dcc2s.f
new file mode 100644
index 0000000000000000000000000000000000000000..7752a6705de1626926c5fa98de5cd684793fd280
--- /dev/null
+++ b/dcc2s.f
@@ -0,0 +1,69 @@
+      SUBROUTINE sla_DCC2S (V, A, B)
+*+
+*     - - - - - -
+*      D C C 2 S
+*     - - - - - -
+*
+*  Cartesian to spherical coordinates (double precision)
+*
+*  Given:
+*     V     d(3)   x,y,z vector
+*
+*  Returned:
+*     A,B   d      spherical coordinates in radians
+*
+*  The spherical coordinates are longitude (+ve anticlockwise looking
+*  from the +ve latitude pole) and latitude.  The Cartesian coordinates
+*  are right handed, with the x axis at zero longitude and latitude, and
+*  the z axis at the +ve latitude pole.
+*
+*  If V is null, zero A and B are returned.  At either pole, zero A is
+*  returned.
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION V(3),A,B
+
+      DOUBLE PRECISION X,Y,Z,R
+
+
+      X = V(1)
+      Y = V(2)
+      Z = V(3)
+      R = SQRT(X*X+Y*Y)
+
+      IF (R.EQ.0D0) THEN
+         A = 0D0
+      ELSE
+         A = ATAN2(Y,X)
+      END IF
+
+      IF (Z.EQ.0D0) THEN
+         B = 0D0
+      ELSE
+         B = ATAN2(Z,R)
+      END IF
+
+      END
diff --git a/dcmpf.f b/dcmpf.f
new file mode 100644
index 0000000000000000000000000000000000000000..d6013b5b8b36e9452d5b77650d0f22c2a393f517
--- /dev/null
+++ b/dcmpf.f
@@ -0,0 +1,159 @@
+      SUBROUTINE sla_DCMPF (COEFFS,XZ,YZ,XS,YS,PERP,ORIENT)
+*+
+*     - - - - - -
+*      D C M P F
+*     - - - - - -
+*
+*  Decompose an [X,Y] linear fit into its constituent parameters:
+*  zero points, scales, nonperpendicularity and orientation.
+*
+*  Given:
+*     COEFFS  d(6)      transformation coefficients (see note)
+*
+*  Returned:
+*     XZ       d        x zero point
+*     YZ       d        y zero point
+*     XS       d        x scale
+*     YS       d        y scale
+*     PERP     d        nonperpendicularity (radians)
+*     ORIENT   d        orientation (radians)
+*
+*  Called:  sla_DRANGE
+*
+*  The model relates two sets of [X,Y] coordinates as follows.
+*  Naming the elements of COEFFS:
+*
+*     COEFFS(1) = A
+*     COEFFS(2) = B
+*     COEFFS(3) = C
+*     COEFFS(4) = D
+*     COEFFS(5) = E
+*     COEFFS(6) = F
+*
+*  the model transforms coordinates [X1,Y1] into coordinates
+*  [X2,Y2] as follows:
+*
+*     X2 = A + B*X1 + C*Y1
+*     Y2 = D + E*X1 + F*Y1
+*
+*  The transformation can be decomposed into four steps:
+*
+*     1)  Zero points:
+*
+*             x' = XZ + X1
+*             y' = YZ + Y1
+*
+*     2)  Scales:
+*
+*             x'' = XS*x'
+*             y'' = YS*y'
+*
+*     3)  Nonperpendicularity:
+*
+*             x''' = cos(PERP/2)*x'' + sin(PERP/2)*y''
+*             y''' = sin(PERP/2)*x'' + cos(PERP/2)*y''
+*
+*     4)  Orientation:
+*
+*             X2 = cos(ORIENT)*x''' + sin(ORIENT)*y'''
+*             Y2 =-sin(ORIENT)*y''' + cos(ORIENT)*y'''
+*
+*  See also sla_FITXY, sla_PXY, sla_INVF, sla_XY2XY
+*
+*  P.T.Wallace   Starlink   19 December 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION COEFFS(6),XZ,YZ,XS,YS,PERP,ORIENT
+
+      DOUBLE PRECISION A,B,C,D,E,F,RB2E2,RC2F2,XSC,YSC,P1,P2,P,WS,WC,
+     :                 OR,HP,SHP,CHP,SOR,COR,DET,X0,Y0,sla_DRANGE
+
+
+
+*  Copy the six coefficients.
+      A = COEFFS(1)
+      B = COEFFS(2)
+      C = COEFFS(3)
+      D = COEFFS(4)
+      E = COEFFS(5)
+      F = COEFFS(6)
+
+*  Scales.
+      RB2E2 = SQRT(B*B+E*E)
+      RC2F2 = SQRT(C*C+F*F)
+      IF (B*F-C*E.GE.0D0) THEN
+         XSC = RB2E2
+      ELSE
+         B = -B
+         E = -E
+         XSC = -RB2E2
+      END IF
+      YSC = RC2F2
+
+*  Non-perpendicularity.
+      IF (C.NE.0D0.OR.F.NE.0D0) THEN
+         P1 = ATAN2(C,F)
+      ELSE
+         P1 = 0D0
+      END IF
+      IF (E.NE.0D0.OR.B.NE.0D0) THEN
+         P2 = ATAN2(E,B)
+      ELSE
+         P2 = 0D0
+      END IF
+      P = sla_DRANGE(P1+P2)
+
+*  Orientation.
+      WS = C*RB2E2-E*RC2F2
+      WC = B*RC2F2+F*RB2E2
+      IF (WS.NE.0D0.OR.WC.NE.0D0) THEN
+         OR = ATAN2(WS,WC)
+      ELSE
+         OR = 0D0
+      END IF
+
+*  Zero points.
+      HP = P/2D0
+      SHP = SIN(HP)
+      CHP = COS(HP)
+      SOR = SIN(OR)
+      COR = COS(OR)
+      DET = XSC*YSC*(CHP+SHP)*(CHP-SHP)
+      IF (ABS(DET).GT.0D0) THEN
+         X0 = YSC*(A*(CHP*COR-SHP*SOR)-D*(CHP*SOR+SHP*COR))/DET
+         Y0 = XSC*(A*(CHP*SOR-SHP*COR)+D*(CHP*COR+SHP*SOR))/DET
+      ELSE
+         X0 = 0D0
+         Y0 = 0D0
+      END IF
+
+*  Results.
+      XZ = X0
+      YZ = Y0
+      XS = XSC
+      YS = YSC
+      PERP = P
+      ORIENT = OR
+
+      END
diff --git a/dcs2c.f b/dcs2c.f
new file mode 100644
index 0000000000000000000000000000000000000000..5b02c6fd39425d117dea124dbc1eadd84e0317a8
--- /dev/null
+++ b/dcs2c.f
@@ -0,0 +1,56 @@
+      SUBROUTINE sla_DCS2C (A, B, V)
+*+
+*     - - - - - -
+*      D C S 2 C
+*     - - - - - -
+*
+*  Spherical coordinates to direction cosines (double precision)
+*
+*  Given:
+*     A,B       d      spherical coordinates in radians
+*                         (RA,Dec), (long,lat) etc.
+*
+*  Returned:
+*     V         d(3)   x,y,z unit vector
+*
+*  The spherical coordinates are longitude (+ve anticlockwise looking
+*  from the +ve latitude pole) and latitude.  The Cartesian coordinates
+*  are right handed, with the x axis at zero longitude and latitude, and
+*  the z axis at the +ve latitude pole.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION A,B,V(3)
+
+      DOUBLE PRECISION COSB
+
+
+      COSB = COS(B)
+
+      V(1) = COS(A)*COSB
+      V(2) = SIN(A)*COSB
+      V(3) = SIN(B)
+
+      END
diff --git a/dd2tf.f b/dd2tf.f
new file mode 100644
index 0000000000000000000000000000000000000000..596ff5b4c489e4bd0ffa4b4827aaef309524ee05
--- /dev/null
+++ b/dd2tf.f
@@ -0,0 +1,106 @@
+      SUBROUTINE sla_DD2TF (NDP, DAYS, SIGN, IHMSF)
+*+
+*     - - - - - -
+*      D D 2 T F
+*     - - - - - -
+*
+*  Convert an interval in days into hours, minutes, seconds
+*  (double precision)
+*
+*  Given:
+*     NDP      i      number of decimal places of seconds
+*     DAYS     d      interval in days
+*
+*  Returned:
+*     SIGN     c      '+' or '-'
+*     IHMSF    i(4)   hours, minutes, seconds, fraction
+*
+*  Notes:
+*
+*     1)  NDP less than zero is interpreted as zero.
+*
+*     2)  The largest useful value for NDP is determined by the size
+*         of DAYS, the format of DOUBLE PRECISION floating-point numbers
+*         on the target machine, and the risk of overflowing IHMSF(4).
+*         On some architectures, for DAYS up to 1D0, the available
+*         floating-point precision corresponds roughly to NDP=12.
+*         However, the practical limit is NDP=9, set by the capacity of
+*         a typical 32-bit IHMSF(4).
+*
+*     3)  The absolute value of DAYS may exceed 1D0.  In cases where it
+*         does not, it is up to the caller to test for and handle the
+*         case where DAYS is very nearly 1D0 and rounds up to 24 hours,
+*         by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      DOUBLE PRECISION DAYS
+      CHARACTER SIGN*(*)
+      INTEGER IHMSF(4)
+
+*  Days to seconds
+      DOUBLE PRECISION D2S
+      PARAMETER (D2S=86400D0)
+
+      INTEGER NRS,N
+      DOUBLE PRECISION RS,RM,RH,A,AH,AM,AS,AF
+
+
+
+*  Handle sign
+      IF (DAYS.GE.0D0) THEN
+         SIGN='+'
+      ELSE
+         SIGN='-'
+      END IF
+
+*  Field units in terms of least significant figure
+      NRS=1
+      DO N=1,NDP
+         NRS=NRS*10
+      END DO
+      RS=DBLE(NRS)
+      RM=RS*60D0
+      RH=RM*60D0
+
+*  Round interval and express in smallest units required
+      A=ANINT(RS*D2S*ABS(DAYS))
+
+*  Separate into fields
+      AH=AINT(A/RH)
+      A=A-AH*RH
+      AM=AINT(A/RM)
+      A=A-AM*RM
+      AS=AINT(A/RS)
+      AF=A-AS*RS
+
+*  Return results
+      IHMSF(1)=MAX(NINT(AH),0)
+      IHMSF(2)=MAX(MIN(NINT(AM),59),0)
+      IHMSF(3)=MAX(MIN(NINT(AS),59),0)
+      IHMSF(4)=MAX(NINT(MIN(AF,RS-1D0)),0)
+
+      END
diff --git a/de2h.f b/de2h.f
new file mode 100644
index 0000000000000000000000000000000000000000..523e7b40f3e7ec5e4f1e216f8547ba814fd0006b
--- /dev/null
+++ b/de2h.f
@@ -0,0 +1,106 @@
+      SUBROUTINE sla_DE2H (HA, DEC, PHI, AZ, EL)
+*+
+*     - - - - -
+*      D E 2 H
+*     - - - - -
+*
+*  Equatorial to horizon coordinates:  HA,Dec to Az,El
+*
+*  (double precision)
+*
+*  Given:
+*     HA      d     hour angle
+*     DEC     d     declination
+*     PHI     d     observatory latitude
+*
+*  Returned:
+*     AZ      d     azimuth
+*     EL      d     elevation
+*
+*  Notes:
+*
+*  1)  All the arguments are angles in radians.
+*
+*  2)  Azimuth is returned in the range 0-2pi;  north is zero,
+*      and east is +pi/2.  Elevation is returned in the range
+*      +/-pi/2.
+*
+*  3)  The latitude must be geodetic.  In critical applications,
+*      corrections for polar motion should be applied.
+*
+*  4)  In some applications it will be important to specify the
+*      correct type of hour angle and declination in order to
+*      produce the required type of azimuth and elevation.  In
+*      particular, it may be important to distinguish between
+*      elevation as affected by refraction, which would
+*      require the "observed" HA,Dec, and the elevation
+*      in vacuo, which would require the "topocentric" HA,Dec.
+*      If the effects of diurnal aberration can be neglected, the
+*      "apparent" HA,Dec may be used instead of the topocentric
+*      HA,Dec.
+*
+*  5)  No range checking of arguments is carried out.
+*
+*  6)  In applications which involve many such calculations, rather
+*      than calling the present routine it will be more efficient to
+*      use inline code, having previously computed fixed terms such
+*      as sine and cosine of latitude, and (for tracking a star)
+*      sine and cosine of declination.
+*
+*  P.T.Wallace   Starlink   9 July 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION HA,DEC,PHI,AZ,EL
+
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925286766559D0)
+
+      DOUBLE PRECISION SH,CH,SD,CD,SP,CP,X,Y,Z,R,A
+
+
+*  Useful trig functions
+      SH=SIN(HA)
+      CH=COS(HA)
+      SD=SIN(DEC)
+      CD=COS(DEC)
+      SP=SIN(PHI)
+      CP=COS(PHI)
+
+*  Az,El as x,y,z
+      X=-CH*CD*SP+SD*CP
+      Y=-SH*CD
+      Z=CH*CD*CP+SD*SP
+
+*  To spherical
+      R=SQRT(X*X+Y*Y)
+      IF (R.EQ.0D0) THEN
+         A=0D0
+      ELSE
+         A=ATAN2(Y,X)
+      END IF
+      IF (A.LT.0D0) A=A+D2PI
+      AZ=A
+      EL=ATAN2(Z,R)
+
+      END
diff --git a/depcomp b/depcomp
new file mode 100755
index 0000000000000000000000000000000000000000..04701da536f33a7c39d7bb01b87a70ae3a776df5
--- /dev/null
+++ b/depcomp
@@ -0,0 +1,530 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2005-07-09.11
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mecanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/deuler.f b/deuler.f
new file mode 100644
index 0000000000000000000000000000000000000000..7f67f317b07d4a3e3945d644a1851cf2e58dd347
--- /dev/null
+++ b/deuler.f
@@ -0,0 +1,180 @@
+      SUBROUTINE sla_DEULER (ORDER, PHI, THETA, PSI, RMAT)
+*+
+*     - - - - - - -
+*      D E U L E R
+*     - - - - - - -
+*
+*  Form a rotation matrix from the Euler angles - three successive
+*  rotations about specified Cartesian axes (double precision)
+*
+*  Given:
+*    ORDER   c*(*)   specifies about which axes the rotations occur
+*    PHI     d       1st rotation (radians)
+*    THETA   d       2nd rotation (   "   )
+*    PSI     d       3rd rotation (   "   )
+*
+*  Returned:
+*    RMAT    d(3,3)  rotation matrix
+*
+*  A rotation is positive when the reference frame rotates
+*  anticlockwise as seen looking towards the origin from the
+*  positive region of the specified axis.
+*
+*  The characters of ORDER define which axes the three successive
+*  rotations are about.  A typical value is 'ZXZ', indicating that
+*  RMAT is to become the direction cosine matrix corresponding to
+*  rotations of the reference frame through PHI radians about the
+*  old Z-axis, followed by THETA radians about the resulting X-axis,
+*  then PSI radians about the resulting Z-axis.
+*
+*  The axis names can be any of the following, in any order or
+*  combination:  X, Y, Z, uppercase or lowercase, 1, 2, 3.  Normal
+*  axis labelling/numbering conventions apply;  the xyz (=123)
+*  triad is right-handed.  Thus, the 'ZXZ' example given above
+*  could be written 'zxz' or '313' (or even 'ZxZ' or '3xZ').  ORDER
+*  is terminated by length or by the first unrecognized character.
+*
+*  Fewer than three rotations are acceptable, in which case the later
+*  angle arguments are ignored.  If all rotations are zero, the
+*  identity matrix is produced.
+*
+*  P.T.Wallace   Starlink   23 May 1997
+*
+*  Copyright (C) 1997 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) ORDER
+      DOUBLE PRECISION PHI,THETA,PSI,RMAT(3,3)
+
+      INTEGER J,I,L,N,K
+      DOUBLE PRECISION RESULT(3,3),ROTN(3,3),ANGLE,S,C,W,WM(3,3)
+      CHARACTER AXIS
+
+
+
+*  Initialize result matrix
+      DO J=1,3
+         DO I=1,3
+            IF (I.NE.J) THEN
+               RESULT(I,J) = 0D0
+            ELSE
+               RESULT(I,J) = 1D0
+            END IF
+         END DO
+      END DO
+
+*  Establish length of axis string
+      L = LEN(ORDER)
+
+*  Look at each character of axis string until finished
+      DO N=1,3
+         IF (N.LE.L) THEN
+
+*        Initialize rotation matrix for the current rotation
+            DO J=1,3
+               DO I=1,3
+                  IF (I.NE.J) THEN
+                     ROTN(I,J) = 0D0
+                  ELSE
+                     ROTN(I,J) = 1D0
+                  END IF
+               END DO
+            END DO
+
+*        Pick up the appropriate Euler angle and take sine & cosine
+            IF (N.EQ.1) THEN
+               ANGLE = PHI
+            ELSE IF (N.EQ.2) THEN
+               ANGLE = THETA
+            ELSE
+               ANGLE = PSI
+            END IF
+            S = SIN(ANGLE)
+            C = COS(ANGLE)
+
+*        Identify the axis
+            AXIS = ORDER(N:N)
+            IF (AXIS.EQ.'X'.OR.
+     :          AXIS.EQ.'x'.OR.
+     :          AXIS.EQ.'1') THEN
+
+*           Matrix for x-rotation
+               ROTN(2,2) = C
+               ROTN(2,3) = S
+               ROTN(3,2) = -S
+               ROTN(3,3) = C
+
+            ELSE IF (AXIS.EQ.'Y'.OR.
+     :               AXIS.EQ.'y'.OR.
+     :               AXIS.EQ.'2') THEN
+
+*           Matrix for y-rotation
+               ROTN(1,1) = C
+               ROTN(1,3) = -S
+               ROTN(3,1) = S
+               ROTN(3,3) = C
+
+            ELSE IF (AXIS.EQ.'Z'.OR.
+     :               AXIS.EQ.'z'.OR.
+     :               AXIS.EQ.'3') THEN
+
+*           Matrix for z-rotation
+               ROTN(1,1) = C
+               ROTN(1,2) = S
+               ROTN(2,1) = -S
+               ROTN(2,2) = C
+
+            ELSE
+
+*           Unrecognized character - fake end of string
+               L = 0
+
+            END IF
+
+*        Apply the current rotation (matrix ROTN x matrix RESULT)
+            DO I=1,3
+               DO J=1,3
+                  W = 0D0
+                  DO K=1,3
+                     W = W+ROTN(I,K)*RESULT(K,J)
+                  END DO
+                  WM(I,J) = W
+               END DO
+            END DO
+            DO J=1,3
+               DO I=1,3
+                  RESULT(I,J) = WM(I,J)
+               END DO
+            END DO
+
+         END IF
+
+      END DO
+
+*  Copy the result
+      DO J=1,3
+         DO I=1,3
+            RMAT(I,J) = RESULT(I,J)
+         END DO
+      END DO
+
+      END
diff --git a/dfltin.f b/dfltin.f
new file mode 100644
index 0000000000000000000000000000000000000000..1bad6ed77062a2594c2b828a9ff3fb05e4c7778c
--- /dev/null
+++ b/dfltin.f
@@ -0,0 +1,297 @@
+      SUBROUTINE sla_DFLTIN (STRING, NSTRT, DRESLT, JFLAG)
+*+
+*     - - - - - - -
+*      D F L T I N
+*     - - - - - - -
+*
+*  Convert free-format input into double precision floating point
+*
+*  Given:
+*     STRING     c     string containing number to be decoded
+*     NSTRT      i     pointer to where decoding is to start
+*     DRESLT     d     current value of result
+*
+*  Returned:
+*     NSTRT      i      advanced to next number
+*     DRESLT     d      result
+*     JFLAG      i      status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
+*
+*  Notes:
+*
+*     1     The reason DFLTIN has separate OK status values for +
+*           and - is to enable minus zero to be detected.   This is
+*           of crucial importance when decoding mixed-radix numbers.
+*           For example, an angle expressed as deg, arcmin, arcsec
+*           may have a leading minus sign but a zero degrees field.
+*
+*     2     A TAB is interpreted as a space, and lowercase characters
+*           are interpreted as uppercase.
+*
+*     3     The basic format is the sequence of fields #^.^@#^, where
+*           # is a sign character + or -, ^ means a string of decimal
+*           digits, and @, which indicates an exponent, means D or E.
+*           Various combinations of these fields can be omitted, and
+*           embedded blanks are permissible in certain places.
+*
+*     4     Spaces:
+*
+*             .  Leading spaces are ignored.
+*
+*             .  Embedded spaces are allowed only after +, -, D or E,
+*                and after the decomal point if the first sequence of
+*                digits is absent.
+*
+*             .  Trailing spaces are ignored;  the first signifies
+*                end of decoding and subsequent ones are skipped.
+*
+*     5     Delimiters:
+*
+*             .  Any character other than +,-,0-9,.,D,E or space may be
+*                used to signal the end of the number and terminate
+*                decoding.
+*
+*             .  Comma is recognized by DFLTIN as a special case;  it
+*                is skipped, leaving the pointer on the next character.
+*                See 13, below.
+*
+*     6     Both signs are optional.  The default is +.
+*
+*     7     The mantissa ^.^ defaults to 1.
+*
+*     8     The exponent @#^ defaults to D0.
+*
+*     9     The strings of decimal digits may be of any length.
+*
+*     10    The decimal point is optional for whole numbers.
+*
+*     11    A "null result" occurs when the string of characters being
+*           decoded does not begin with +,-,0-9,.,D or E, or consists
+*           entirely of spaces.  When this condition is detected, JFLAG
+*           is set to 1 and DRESLT is left untouched.
+*
+*     12    NSTRT = 1 for the first character in the string.
+*
+*     13    On return from DFLTIN, NSTRT is set ready for the next
+*           decode - following trailing blanks and any comma.  If a
+*           delimiter other than comma is being used, NSTRT must be
+*           incremented before the next call to DFLTIN, otherwise
+*           all subsequent calls will return a null result.
+*
+*     14    Errors (JFLAG=2) occur when:
+*
+*             .  a +, -, D or E is left unsatisfied;  or
+*
+*             .  the decimal point is present without at least
+*                one decimal digit before or after it;  or
+*
+*             .  an exponent more than 100 has been presented.
+*
+*     15    When an error has been detected, NSTRT is left
+*           pointing to the character following the last
+*           one used before the error came to light.  This
+*           may be after the point at which a more sophisticated
+*           program could have detected the error.  For example,
+*           DFLTIN does not detect that '1D999' is unacceptable
+*           (on a computer where this is so) until the entire number
+*           has been decoded.
+*
+*     16    Certain highly unlikely combinations of mantissa &
+*           exponent can cause arithmetic faults during the
+*           decode, in some cases despite the fact that they
+*           together could be construed as a valid number.
+*
+*     17    Decoding is left to right, one pass.
+*
+*     18    See also FLOTIN and INTIN
+*
+*  Called:  sla__IDCHF
+*
+*  P.T.Wallace   Starlink   18 March 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER NSTRT
+      DOUBLE PRECISION DRESLT
+      INTEGER JFLAG
+
+      INTEGER NPTR,MSIGN,NEXP,NDP,NVEC,NDIGIT,ISIGNX,J
+      DOUBLE PRECISION DMANT,DIGIT
+
+
+
+*  Current character
+      NPTR=NSTRT
+
+*  Set defaults: mantissa & sign, exponent & sign, decimal place count
+      DMANT=0D0
+      MSIGN=1
+      NEXP=0
+      ISIGNX=1
+      NDP=0
+
+*  Look for sign
+ 100  CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO ( 400,  100,  800,  500,  300,  200, 9110, 9100, 9110),NVEC
+*             0-9    SP   D/E    .     +     -     ,   ELSE   END
+
+*  Negative
+ 200  CONTINUE
+      MSIGN=-1
+
+*  Look for first leading decimal
+ 300  CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO ( 400, 300,  800,  500, 9200, 9200, 9200, 9200, 9210),NVEC
+*             0-9   SP   D/E    .     +     -     ,   ELSE   END
+
+*  Accept leading decimals
+ 400  CONTINUE
+      DMANT=DMANT*1D1+DIGIT
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO ( 400, 1310,  900,  600, 1300, 1300, 1300, 1300, 1310),NVEC
+*             0-9   SP    D/E    .     +     -     ,   ELSE   END
+
+*  Look for decimal when none preceded the point
+ 500  CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO ( 700, 500, 9200, 9200, 9200, 9200, 9200, 9200, 9210),NVEC
+*             0-9   SP   D/E    .     +     -     ,   ELSE   END
+
+*  Look for trailing decimals
+ 600  CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO ( 700, 1310,  900, 1300, 1300, 1300, 1300, 1300, 1310),NVEC
+*             0-9   SP    D/E    .     +     -     ,   ELSE   END
+
+*  Accept trailing decimals
+ 700  CONTINUE
+      NDP=NDP+1
+      DMANT=DMANT*1D1+DIGIT
+      GO TO 600
+
+*  Exponent symbol first in field: default mantissa to 1
+ 800  CONTINUE
+      DMANT=1D0
+
+*  Look for sign of exponent
+ 900  CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO (1200, 900, 9200, 9200, 1100, 1000, 9200, 9200, 9210),NVEC
+*             0-9   SP   D/E    .     +     -     ,   ELSE   END
+
+*  Exponent negative
+ 1000 CONTINUE
+      ISIGNX=-1
+
+*  Look for first digit of exponent
+ 1100 CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO (1200, 1100, 9200, 9200, 9200, 9200, 9200, 9200, 9210),NVEC
+*             0-9   SP    D/E    .     +     -     ,   ELSE   END
+
+*  Use exponent digit
+ 1200 CONTINUE
+      NEXP=NEXP*10+NDIGIT
+      IF (NEXP.GT.100) GO TO 9200
+
+*  Look for subsequent digits of exponent
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO (1200, 1310, 1300, 1300, 1300, 1300, 1300, 1300, 1310),NVEC
+*             0-9   SP    D/E    .     +     -     ,   ELSE   END
+
+*  Combine exponent and decimal place count
+ 1300 CONTINUE
+      NPTR=NPTR-1
+ 1310 CONTINUE
+      NEXP=NEXP*ISIGNX-NDP
+
+*  Skip if net exponent negative
+      IF (NEXP.LT.0) GO TO 1500
+
+*  Positive exponent: scale up
+ 1400 CONTINUE
+      IF (NEXP.LT.10) GO TO 1410
+      DMANT=DMANT*1D10
+      NEXP=NEXP-10
+      GO TO 1400
+ 1410 CONTINUE
+      IF (NEXP.LT.1) GO TO 1600
+      DMANT=DMANT*1D1
+      NEXP=NEXP-1
+      GO TO 1410
+
+*  Negative exponent: scale down
+ 1500 CONTINUE
+      IF (NEXP.GT.-10) GO TO 1510
+      DMANT=DMANT/1D10
+      NEXP=NEXP+10
+      GO TO 1500
+ 1510 CONTINUE
+      IF (NEXP.GT.-1) GO TO 1600
+      DMANT=DMANT/1D1
+      NEXP=NEXP+1
+      GO TO 1510
+
+*  Get result & status
+ 1600 CONTINUE
+      J=0
+      IF (MSIGN.EQ.1) GO TO 1610
+      J=-1
+      DMANT=-DMANT
+ 1610 CONTINUE
+      DRESLT=DMANT
+
+*  Skip to end of field
+ 1620 CONTINUE
+      CALL sla__IDCHF(STRING,NPTR,NVEC,NDIGIT,DIGIT)
+      GO TO (1720, 1620, 1720, 1720, 1720, 1720, 9900, 1720, 9900),NVEC
+*             0-9   SP    D/E    .     +     -     ,   ELSE   END
+
+ 1720 CONTINUE
+      NPTR=NPTR-1
+      GO TO 9900
+
+
+*  Exits
+
+*  Null field
+ 9100 CONTINUE
+      NPTR=NPTR-1
+ 9110 CONTINUE
+      J=1
+      GO TO 9900
+
+*  Errors
+ 9200 CONTINUE
+      NPTR=NPTR-1
+ 9210 CONTINUE
+      J=2
+
+*  Return
+ 9900 CONTINUE
+      NSTRT=NPTR
+      JFLAG=J
+
+      END
diff --git a/dh2e.f b/dh2e.f
new file mode 100644
index 0000000000000000000000000000000000000000..24c0f5603e8c516e8c32a3d48b5b3c5474c11d73
--- /dev/null
+++ b/dh2e.f
@@ -0,0 +1,100 @@
+      SUBROUTINE sla_DH2E (AZ, EL, PHI, HA, DEC)
+*+
+*     - - - - -
+*      D E 2 H
+*     - - - - -
+*
+*  Horizon to equatorial coordinates:  Az,El to HA,Dec
+*
+*  (double precision)
+*
+*  Given:
+*     AZ      d     azimuth
+*     EL      d     elevation
+*     PHI     d     observatory latitude
+*
+*  Returned:
+*     HA      d     hour angle
+*     DEC     d     declination
+*
+*  Notes:
+*
+*  1)  All the arguments are angles in radians.
+*
+*  2)  The sign convention for azimuth is north zero, east +pi/2.
+*
+*  3)  HA is returned in the range +/-pi.  Declination is returned
+*      in the range +/-pi/2.
+*
+*  4)  The latitude is (in principle) geodetic.  In critical
+*      applications, corrections for polar motion should be applied.
+*
+*  5)  In some applications it will be important to specify the
+*      correct type of elevation in order to produce the required
+*      type of HA,Dec.  In particular, it may be important to
+*      distinguish between the elevation as affected by refraction,
+*      which will yield the "observed" HA,Dec, and the elevation
+*      in vacuo, which will yield the "topocentric" HA,Dec.  If the
+*      effects of diurnal aberration can be neglected, the
+*      topocentric HA,Dec may be used as an approximation to the
+*      "apparent" HA,Dec.
+*
+*  6)  No range checking of arguments is done.
+*
+*  7)  In applications which involve many such calculations, rather
+*      than calling the present routine it will be more efficient to
+*      use inline code, having previously computed fixed terms such
+*      as sine and cosine of latitude.
+*
+*  P.T.Wallace   Starlink   21 February 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION AZ,EL,PHI,HA,DEC
+
+      DOUBLE PRECISION SA,CA,SE,CE,SP,CP,X,Y,Z,R
+
+
+*  Useful trig functions
+      SA=SIN(AZ)
+      CA=COS(AZ)
+      SE=SIN(EL)
+      CE=COS(EL)
+      SP=SIN(PHI)
+      CP=COS(PHI)
+
+*  HA,Dec as x,y,z
+      X=-CA*CE*SP+SE*CP
+      Y=-SA*CE
+      Z=CA*CE*CP+SE*SP
+
+*  To HA,Dec
+      R=SQRT(X*X+Y*Y)
+      IF (R.EQ.0D0) THEN
+         HA=0D0
+      ELSE
+         HA=ATAN2(Y,X)
+      END IF
+      DEC=ATAN2(Z,R)
+
+      END
diff --git a/dimxv.f b/dimxv.f
new file mode 100644
index 0000000000000000000000000000000000000000..8442144e400be665b139e3485787112aa7229790
--- /dev/null
+++ b/dimxv.f
@@ -0,0 +1,68 @@
+      SUBROUTINE sla_DIMXV (DM, VA, VB)
+*+
+*     - - - - - -
+*      D I M X V
+*     - - - - - -
+*
+*  Performs the 3-D backward unitary transformation:
+*
+*     vector VB = (inverse of matrix DM) * vector VA
+*
+*  (double precision)
+*
+*  (n.b.  the matrix must be unitary, as this routine assumes that
+*   the inverse and transpose are identical)
+*
+*  Given:
+*     DM       dp(3,3)    matrix
+*     VA       dp(3)      vector
+*
+*  Returned:
+*     VB       dp(3)      result vector
+*
+*  P.T.Wallace   Starlink   March 1986
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DM(3,3),VA(3),VB(3)
+
+      INTEGER I,J
+      DOUBLE PRECISION W,VW(3)
+
+
+
+*  Inverse of matrix DM * vector VA -> vector VW
+      DO J=1,3
+         W=0D0
+         DO I=1,3
+            W=W+DM(I,J)*VA(I)
+         END DO
+         VW(J)=W
+      END DO
+
+*  Vector VW -> vector VB
+      DO J=1,3
+         VB(J)=VW(J)
+      END DO
+
+      END
diff --git a/djcal.f b/djcal.f
new file mode 100644
index 0000000000000000000000000000000000000000..3cd7d2e59aea2f1ee7639c569ea509385e31f177
--- /dev/null
+++ b/djcal.f
@@ -0,0 +1,92 @@
+      SUBROUTINE sla_DJCAL (NDP, DJM, IYMDF, J)
+*+
+*     - - - - - -
+*      D J C A L
+*     - - - - - -
+*
+*  Modified Julian Date to Gregorian Calendar, expressed
+*  in a form convenient for formatting messages (namely
+*  rounded to a specified precision, and with the fields
+*  stored in a single array)
+*
+*  Given:
+*     NDP      i      number of decimal places of days in fraction
+*     DJM      d      modified Julian Date (JD-2400000.5)
+*
+*  Returned:
+*     IYMDF    i(4)   year, month, day, fraction in Gregorian
+*                     calendar
+*     J        i      status:  nonzero = out of range
+*
+*  Any date after 4701BC March 1 is accepted.
+*
+*  NDP should be 4 or less if internal overflows are to be avoided
+*  on machines which use 32-bit integers.
+*
+*  The algorithm is adapted from Hatcher 1984 (QJRAS 25, 53-55).
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      DOUBLE PRECISION DJM
+      INTEGER IYMDF(4),J
+
+      INTEGER NFD
+      DOUBLE PRECISION FD,DF,F,D
+      INTEGER JD,N4,ND10
+
+
+*  Validate.
+      IF ( DJM.LE.-2395520D0 .OR. DJM.GE.1D9 ) THEN
+         J = -1
+      ELSE
+         J = 0
+
+*     Denominator of fraction.
+         NFD = 10**MAX(NDP,0)
+         FD = DBLE(NFD)
+
+*     Round date and express in units of fraction.
+         DF = ANINT(DJM*FD)
+
+*     Separate day and fraction.
+         F = MOD(DF,FD)
+         IF (F.LT.0D0) F = F+FD
+         D = (DF-F)/FD
+
+*     Express day in Gregorian calendar.
+         JD = NINT(D)+2400001
+
+         N4 = 4*(JD+((2*((4*JD-17918)/146097)*3)/4+1)/2-37)
+         ND10 = 10*(MOD(N4-237,1461)/4)+5
+
+         IYMDF(1) = N4/1461-4712
+         IYMDF(2) = MOD(ND10/306+2,12)+1
+         IYMDF(3) = MOD(ND10,306)/10+1
+         IYMDF(4) = NINT(F)
+
+      END IF
+
+      END
diff --git a/djcl.f b/djcl.f
new file mode 100644
index 0000000000000000000000000000000000000000..91561e6bde7071a6e56d780fafb3508f286043a4
--- /dev/null
+++ b/djcl.f
@@ -0,0 +1,83 @@
+      SUBROUTINE sla_DJCL (DJM, IY, IM, ID, FD, J)
+*+
+*     - - - - -
+*      D J C L
+*     - - - - -
+*
+*  Modified Julian Date to Gregorian year, month, day,
+*  and fraction of a day.
+*
+*  Given:
+*     DJM      dp     modified Julian Date (JD-2400000.5)
+*
+*  Returned:
+*     IY       int    year
+*     IM       int    month
+*     ID       int    day
+*     FD       dp     fraction of day
+*     J        int    status:
+*                       0 = OK
+*                      -1 = unacceptable date (before 4701BC March 1)
+*
+*  The algorithm is adapted from Hatcher 1984 (QJRAS 25, 53-55).
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DJM
+      INTEGER IY,IM,ID
+      DOUBLE PRECISION FD
+      INTEGER J
+
+      DOUBLE PRECISION F,D
+      INTEGER JD,N4,ND10
+
+
+*  Check if date is acceptable.
+      IF ( DJM.LE.-2395520D0 .OR. DJM.GE.1D9 ) THEN
+         J = -1
+      ELSE
+         J = 0
+
+*     Separate day and fraction.
+         F = MOD(DJM,1D0)
+         IF (F.LT.0D0) F = F+1D0
+         D = ANINT(DJM-F)
+
+*     Express day in Gregorian calendar.
+         JD = NINT(D)+2400001
+
+         N4 = 4*(JD+((6*((4*JD-17918)/146097))/4+1)/2-37)
+         ND10 = 10*(MOD(N4-237,1461)/4)+5
+
+         IY = N4/1461-4712
+         IM = MOD(ND10/306+2,12)+1
+         ID = MOD(ND10,306)/10+1
+         FD = F
+
+         J=0
+
+      END IF
+
+      END
diff --git a/dm2av.f b/dm2av.f
new file mode 100644
index 0000000000000000000000000000000000000000..32bf074fcd9a64b9c0c420b221dcf40d6d7ea9c9
--- /dev/null
+++ b/dm2av.f
@@ -0,0 +1,74 @@
+      SUBROUTINE sla_DM2AV (RMAT, AXVEC)
+*+
+*     - - - - - -
+*      D M 2 A V
+*     - - - - - -
+*
+*  From a rotation matrix, determine the corresponding axial vector.
+*  (double precision)
+*
+*  A rotation matrix describes a rotation about some arbitrary axis,
+*  called the Euler axis.  The "axial vector" returned by this routine
+*  has the same direction as the Euler axis, and its magnitude is the
+*  amount of rotation in radians.  (The magnitude and direction can be
+*  separated by means of the routine sla_DVN.)
+*
+*  Given:
+*    RMAT   d(3,3)   rotation matrix
+*
+*  Returned:
+*    AXVEC  d(3)     axial vector (radians)
+*
+*  The reference frame rotates clockwise as seen looking along
+*  the axial vector from the origin.
+*
+*  If RMAT is null, so is the result.
+*
+*  Last revision:   26 November 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RMAT(3,3),AXVEC(3)
+
+      DOUBLE PRECISION X,Y,Z,S2,C2,PHI,F
+
+
+
+      X = RMAT(2,3)-RMAT(3,2)
+      Y = RMAT(3,1)-RMAT(1,3)
+      Z = RMAT(1,2)-RMAT(2,1)
+      S2 = SQRT(X*X+Y*Y+Z*Z)
+      IF (S2.NE.0D0) THEN
+         C2 = RMAT(1,1)+RMAT(2,2)+RMAT(3,3)-1D0
+         PHI = ATAN2(S2,C2)
+         F = PHI/S2
+         AXVEC(1) = X*F
+         AXVEC(2) = Y*F
+         AXVEC(3) = Z*F
+      ELSE
+         AXVEC(1) = 0D0
+         AXVEC(2) = 0D0
+         AXVEC(3) = 0D0
+      END IF
+
+      END
diff --git a/dmat.f b/dmat.f
new file mode 100644
index 0000000000000000000000000000000000000000..d2cfa87bf8cf3b39349ca6cdec5fa87d960a84cc
--- /dev/null
+++ b/dmat.f
@@ -0,0 +1,157 @@
+      SUBROUTINE sla_DMAT (N, A, Y, D, JF, IW)
+*+
+*     - - - - -
+*      D M A T
+*     - - - - -
+*
+*  Matrix inversion & solution of simultaneous equations
+*  (double precision)
+*
+*  For the set of n simultaneous equations in n unknowns:
+*     A.Y = X
+*
+*  where:
+*     A is a non-singular N x N matrix
+*     Y is the vector of N unknowns
+*     X is the known vector
+*
+*  DMATRX computes:
+*     the inverse of matrix A
+*     the determinant of matrix A
+*     the vector of N unknowns
+*
+*  Arguments:
+*
+*     symbol  type   dimension           before              after
+*
+*       N      i                    no. of unknowns       unchanged
+*       A      d      (N,N)             matrix             inverse
+*       Y      d       (N)            known vector      solution vector
+*       D      d                           -             determinant
+*     * JF     i                           -           singularity flag
+*       IW     i       (N)                 -              workspace
+*
+*  * JF is the singularity flag.  If the matrix is non-singular, JF=0
+*    is returned.  If the matrix is singular, JF=-1 & D=0D0 are
+*    returned.  In the latter case, the contents of array A on return
+*    are undefined.
+*
+*  Algorithm:
+*     Gaussian elimination with partial pivoting.
+*
+*  Speed:
+*     Very fast.
+*
+*  Accuracy:
+*     Fairly accurate - errors 1 to 4 times those of routines optimized
+*     for accuracy.
+*
+*  P.T.Wallace   Starlink   4 December 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER N
+      DOUBLE PRECISION A(N,N),Y(N),D
+      INTEGER JF
+      INTEGER IW(N)
+
+      DOUBLE PRECISION SFA
+      PARAMETER (SFA=1D-20)
+
+      INTEGER K,IMX,I,J,NP1MK,KI
+      DOUBLE PRECISION AMX,T,AKK,YK,AIK
+
+
+      JF=0
+      D=1D0
+      DO K=1,N
+         AMX=DABS(A(K,K))
+         IMX=K
+         IF (K.NE.N) THEN
+            DO I=K+1,N
+               T=DABS(A(I,K))
+               IF (T.GT.AMX) THEN
+                  AMX=T
+                  IMX=I
+               END IF
+            END DO
+         END IF
+         IF (AMX.LT.SFA) THEN
+            JF=-1
+         ELSE
+            IF (IMX.NE.K) THEN
+               DO J=1,N
+                  T=A(K,J)
+                  A(K,J)=A(IMX,J)
+                  A(IMX,J)=T
+               END DO
+               T=Y(K)
+               Y(K)=Y(IMX)
+               Y(IMX)=T
+               D=-D
+            END IF
+            IW(K)=IMX
+            AKK=A(K,K)
+            D=D*AKK
+            IF (DABS(D).LT.SFA) THEN
+               JF=-1
+            ELSE
+               AKK=1D0/AKK
+               A(K,K)=AKK
+               DO J=1,N
+                  IF (J.NE.K) A(K,J)=A(K,J)*AKK
+               END DO
+               YK=Y(K)*AKK
+               Y(K)=YK
+               DO I=1,N
+                  AIK=A(I,K)
+                  IF (I.NE.K) THEN
+                     DO J=1,N
+                        IF (J.NE.K) A(I,J)=A(I,J)-AIK*A(K,J)
+                     END DO
+                     Y(I)=Y(I)-AIK*YK
+                  END IF
+               END DO
+               DO I=1,N
+                  IF (I.NE.K) A(I,K)=-A(I,K)*AKK
+               END DO
+            END IF
+         END IF
+      END DO
+      IF (JF.NE.0) THEN
+         D=0D0
+      ELSE
+         DO K=1,N
+            NP1MK=N+1-K
+            KI=IW(NP1MK)
+            IF (NP1MK.NE.KI) THEN
+               DO I=1,N
+                  T=A(I,NP1MK)
+                  A(I,NP1MK)=A(I,KI)
+                  A(I,KI)=T
+               END DO
+            END IF
+         END DO
+      END IF
+
+      END
diff --git a/dmoon.f b/dmoon.f
new file mode 100644
index 0000000000000000000000000000000000000000..dc6819b37e10ab70dbcfad546aaa12fa04ff1ecd
--- /dev/null
+++ b/dmoon.f
@@ -0,0 +1,658 @@
+      SUBROUTINE sla_DMOON (DATE, PV)
+*+
+*     - - - - - -
+*      D M O O N
+*     - - - - - -
+*
+*  Approximate geocentric position and velocity of the Moon
+*  (double precision)
+*
+*  Given:
+*     DATE       D       TDB (loosely ET) as a Modified Julian Date
+*                                                    (JD-2400000.5)
+*
+*  Returned:
+*     PV         D(6)    Moon x,y,z,xdot,ydot,zdot, mean equator and
+*                                         equinox of date (AU, AU/s)
+*
+*  Notes:
+*
+*  1  This routine is a full implementation of the algorithm
+*     published by Meeus (see reference).
+*
+*  2  Meeus quotes accuracies of 10 arcsec in longitude, 3 arcsec in
+*     latitude and 0.2 arcsec in HP (equivalent to about 20 km in
+*     distance).  Comparison with JPL DE200 over the interval
+*     1960-2025 gives RMS errors of 3.7 arcsec and 83 mas/hour in
+*     longitude, 2.3 arcsec and 48 mas/hour in latitude, 11 km
+*     and 81 mm/s in distance.  The maximum errors over the same
+*     interval are 18 arcsec and 0.50 arcsec/hour in longitude,
+*     11 arcsec and 0.24 arcsec/hour in latitude, 40 km and 0.29 m/s
+*     in distance.
+*
+*  3  The original algorithm is expressed in terms of the obsolete
+*     timescale Ephemeris Time.  Either TDB or TT can be used, but
+*     not UT without incurring significant errors (30 arcsec at
+*     the present time) due to the Moon's 0.5 arcsec/sec movement.
+*
+*  4  The algorithm is based on pre IAU 1976 standards.  However,
+*     the result has been moved onto the new (FK5) equinox, an
+*     adjustment which is in any case much smaller than the
+*     intrinsic accuracy of the procedure.
+*
+*  5  Velocity is obtained by a complete analytical differentiation
+*     of the Meeus model.
+*
+*  Reference:
+*     Meeus, l'Astronomie, June 1984, p348.
+*
+*  P.T.Wallace   Starlink   22 January 1998
+*
+*  Copyright (C) 1998 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,PV(6)
+
+*  Degrees, arcseconds and seconds of time to radians
+      DOUBLE PRECISION D2R,DAS2R,DS2R
+      PARAMETER (D2R=0.0174532925199432957692369D0,
+     :           DAS2R=4.848136811095359935899141D-6,
+     :           DS2R=7.272205216643039903848712D-5)
+
+*  Seconds per Julian century (86400*36525)
+      DOUBLE PRECISION CJ
+      PARAMETER (CJ=3155760000D0)
+
+*  Julian epoch of B1950
+      DOUBLE PRECISION B1950
+      PARAMETER (B1950=1949.9997904423D0)
+
+*  Earth equatorial radius in AU ( = 6378.137 / 149597870 )
+      DOUBLE PRECISION ERADAU
+      PARAMETER (ERADAU=4.2635212653763D-5)
+
+      DOUBLE PRECISION T,THETA,SINOM,COSOM,DOMCOM,WA,DWA,WB,DWB,WOM,
+     :                 DWOM,SINWOM,COSWOM,V,DV,COEFF,EMN,EMPN,DN,FN,EN,
+     :                 DEN,DTHETA,FTHETA,EL,DEL,B,DB,BF,DBF,P,DP,SP,R,
+     :                 DR,X,Y,Z,XD,YD,ZD,SEL,CEL,SB,CB,RCB,RBD,W,EPJ,
+     :                 EQCOR,EPS,SINEPS,COSEPS,ES,EC
+      INTEGER N,I
+
+*
+*  Coefficients for fundamental arguments
+*
+*   at J1900:  T**0, T**1, T**2, T**3
+*   at epoch:  T**0, T**1
+*
+*  Units are degrees for position and Julian centuries for time
+*
+
+*  Moon's mean longitude
+      DOUBLE PRECISION ELP0,ELP1,ELP2,ELP3,ELP,DELP
+      PARAMETER (ELP0=270.434164D0,
+     :           ELP1=481267.8831D0,
+     :           ELP2=-0.001133D0,
+     :           ELP3=0.0000019D0)
+
+*  Sun's mean anomaly
+      DOUBLE PRECISION EM0,EM1,EM2,EM3,EM,DEM
+      PARAMETER (EM0=358.475833D0,
+     :           EM1=35999.0498D0,
+     :           EM2=-0.000150D0,
+     :           EM3=-0.0000033D0)
+
+*  Moon's mean anomaly
+      DOUBLE PRECISION EMP0,EMP1,EMP2,EMP3,EMP,DEMP
+      PARAMETER (EMP0=296.104608D0,
+     :           EMP1=477198.8491D0,
+     :           EMP2=0.009192D0,
+     :           EMP3=0.0000144D0)
+
+*  Moon's mean elongation
+      DOUBLE PRECISION D0,D1,D2,D3,D,DD
+      PARAMETER (D0=350.737486D0,
+     :           D1=445267.1142D0,
+     :           D2=-0.001436D0,
+     :           D3=0.0000019D0)
+
+*  Mean distance of the Moon from its ascending node
+      DOUBLE PRECISION F0,F1,F2,F3,F,DF
+      PARAMETER (F0=11.250889D0,
+     :           F1=483202.0251D0,
+     :           F2=-0.003211D0,
+     :           F3=-0.0000003D0)
+
+*  Longitude of the Moon's ascending node
+      DOUBLE PRECISION OM0,OM1,OM2,OM3,OM,DOM
+      PARAMETER (OM0=259.183275D0,
+     :           OM1=-1934.1420D0,
+     :           OM2=0.002078D0,
+     :           OM3=0.0000022D0)
+
+*  Coefficients for (dimensionless) E factor
+      DOUBLE PRECISION E1,E2,E,DE,ESQ,DESQ
+      PARAMETER (E1=-0.002495D0,E2=-0.00000752D0)
+
+*  Coefficients for periodic variations etc
+      DOUBLE PRECISION PAC,PA0,PA1
+      PARAMETER (PAC=0.000233D0,PA0=51.2D0,PA1=20.2D0)
+      DOUBLE PRECISION PBC
+      PARAMETER (PBC=-0.001778D0)
+      DOUBLE PRECISION PCC
+      PARAMETER (PCC=0.000817D0)
+      DOUBLE PRECISION PDC
+      PARAMETER (PDC=0.002011D0)
+      DOUBLE PRECISION PEC,PE0,PE1,PE2
+      PARAMETER (PEC=0.003964D0,
+     :                     PE0=346.560D0,PE1=132.870D0,PE2=-0.0091731D0)
+      DOUBLE PRECISION PFC
+      PARAMETER (PFC=0.001964D0)
+      DOUBLE PRECISION PGC
+      PARAMETER (PGC=0.002541D0)
+      DOUBLE PRECISION PHC
+      PARAMETER (PHC=0.001964D0)
+      DOUBLE PRECISION PIC
+      PARAMETER (PIC=-0.024691D0)
+      DOUBLE PRECISION PJC,PJ0,PJ1
+      PARAMETER (PJC=-0.004328D0,PJ0=275.05D0,PJ1=-2.30D0)
+      DOUBLE PRECISION CW1
+      PARAMETER (CW1=0.0004664D0)
+      DOUBLE PRECISION CW2
+      PARAMETER (CW2=0.0000754D0)
+
+*
+*  Coefficients for Moon position
+*
+*   Tx(N)       = coefficient of L, B or P term (deg)
+*   ITx(N,1-5)  = coefficients of M, M', D, F, E**n in argument
+*
+      INTEGER NL,NB,NP
+      PARAMETER (NL=50,NB=45,NP=31)
+      DOUBLE PRECISION TL(NL),TB(NB),TP(NP)
+      INTEGER ITL(5,NL),ITB(5,NB),ITP(5,NP)
+*
+*  Longitude
+*                                         M   M'  D   F   n
+      DATA TL( 1)/            +6.288750D0                     /,
+     :     (ITL(I, 1),I=1,5)/            +0, +1, +0, +0,  0   /
+      DATA TL( 2)/            +1.274018D0                     /,
+     :     (ITL(I, 2),I=1,5)/            +0, -1, +2, +0,  0   /
+      DATA TL( 3)/            +0.658309D0                     /,
+     :     (ITL(I, 3),I=1,5)/            +0, +0, +2, +0,  0   /
+      DATA TL( 4)/            +0.213616D0                     /,
+     :     (ITL(I, 4),I=1,5)/            +0, +2, +0, +0,  0   /
+      DATA TL( 5)/            -0.185596D0                     /,
+     :     (ITL(I, 5),I=1,5)/            +1, +0, +0, +0,  1   /
+      DATA TL( 6)/            -0.114336D0                     /,
+     :     (ITL(I, 6),I=1,5)/            +0, +0, +0, +2,  0   /
+      DATA TL( 7)/            +0.058793D0                     /,
+     :     (ITL(I, 7),I=1,5)/            +0, -2, +2, +0,  0   /
+      DATA TL( 8)/            +0.057212D0                     /,
+     :     (ITL(I, 8),I=1,5)/            -1, -1, +2, +0,  1   /
+      DATA TL( 9)/            +0.053320D0                     /,
+     :     (ITL(I, 9),I=1,5)/            +0, +1, +2, +0,  0   /
+      DATA TL(10)/            +0.045874D0                     /,
+     :     (ITL(I,10),I=1,5)/            -1, +0, +2, +0,  1   /
+      DATA TL(11)/            +0.041024D0                     /,
+     :     (ITL(I,11),I=1,5)/            -1, +1, +0, +0,  1   /
+      DATA TL(12)/            -0.034718D0                     /,
+     :     (ITL(I,12),I=1,5)/            +0, +0, +1, +0,  0   /
+      DATA TL(13)/            -0.030465D0                     /,
+     :     (ITL(I,13),I=1,5)/            +1, +1, +0, +0,  1   /
+      DATA TL(14)/            +0.015326D0                     /,
+     :     (ITL(I,14),I=1,5)/            +0, +0, +2, -2,  0   /
+      DATA TL(15)/            -0.012528D0                     /,
+     :     (ITL(I,15),I=1,5)/            +0, +1, +0, +2,  0   /
+      DATA TL(16)/            -0.010980D0                     /,
+     :     (ITL(I,16),I=1,5)/            +0, -1, +0, +2,  0   /
+      DATA TL(17)/            +0.010674D0                     /,
+     :     (ITL(I,17),I=1,5)/            +0, -1, +4, +0,  0   /
+      DATA TL(18)/            +0.010034D0                     /,
+     :     (ITL(I,18),I=1,5)/            +0, +3, +0, +0,  0   /
+      DATA TL(19)/            +0.008548D0                     /,
+     :     (ITL(I,19),I=1,5)/            +0, -2, +4, +0,  0   /
+      DATA TL(20)/            -0.007910D0                     /,
+     :     (ITL(I,20),I=1,5)/            +1, -1, +2, +0,  1   /
+      DATA TL(21)/            -0.006783D0                     /,
+     :     (ITL(I,21),I=1,5)/            +1, +0, +2, +0,  1   /
+      DATA TL(22)/            +0.005162D0                     /,
+     :     (ITL(I,22),I=1,5)/            +0, +1, -1, +0,  0   /
+      DATA TL(23)/            +0.005000D0                     /,
+     :     (ITL(I,23),I=1,5)/            +1, +0, +1, +0,  1   /
+      DATA TL(24)/            +0.004049D0                     /,
+     :     (ITL(I,24),I=1,5)/            -1, +1, +2, +0,  1   /
+      DATA TL(25)/            +0.003996D0                     /,
+     :     (ITL(I,25),I=1,5)/            +0, +2, +2, +0,  0   /
+      DATA TL(26)/            +0.003862D0                     /,
+     :     (ITL(I,26),I=1,5)/            +0, +0, +4, +0,  0   /
+      DATA TL(27)/            +0.003665D0                     /,
+     :     (ITL(I,27),I=1,5)/            +0, -3, +2, +0,  0   /
+      DATA TL(28)/            +0.002695D0                     /,
+     :     (ITL(I,28),I=1,5)/            -1, +2, +0, +0,  1   /
+      DATA TL(29)/            +0.002602D0                     /,
+     :     (ITL(I,29),I=1,5)/            +0, +1, -2, -2,  0   /
+      DATA TL(30)/            +0.002396D0                     /,
+     :     (ITL(I,30),I=1,5)/            -1, -2, +2, +0,  1   /
+      DATA TL(31)/            -0.002349D0                     /,
+     :     (ITL(I,31),I=1,5)/            +0, +1, +1, +0,  0   /
+      DATA TL(32)/            +0.002249D0                     /,
+     :     (ITL(I,32),I=1,5)/            -2, +0, +2, +0,  2   /
+      DATA TL(33)/            -0.002125D0                     /,
+     :     (ITL(I,33),I=1,5)/            +1, +2, +0, +0,  1   /
+      DATA TL(34)/            -0.002079D0                     /,
+     :     (ITL(I,34),I=1,5)/            +2, +0, +0, +0,  2   /
+      DATA TL(35)/            +0.002059D0                     /,
+     :     (ITL(I,35),I=1,5)/            -2, -1, +2, +0,  2   /
+      DATA TL(36)/            -0.001773D0                     /,
+     :     (ITL(I,36),I=1,5)/            +0, +1, +2, -2,  0   /
+      DATA TL(37)/            -0.001595D0                     /,
+     :     (ITL(I,37),I=1,5)/            +0, +0, +2, +2,  0   /
+      DATA TL(38)/            +0.001220D0                     /,
+     :     (ITL(I,38),I=1,5)/            -1, -1, +4, +0,  1   /
+      DATA TL(39)/            -0.001110D0                     /,
+     :     (ITL(I,39),I=1,5)/            +0, +2, +0, +2,  0   /
+      DATA TL(40)/            +0.000892D0                     /,
+     :     (ITL(I,40),I=1,5)/            +0, +1, -3, +0,  0   /
+      DATA TL(41)/            -0.000811D0                     /,
+     :     (ITL(I,41),I=1,5)/            +1, +1, +2, +0,  1   /
+      DATA TL(42)/            +0.000761D0                     /,
+     :     (ITL(I,42),I=1,5)/            -1, -2, +4, +0,  1   /
+      DATA TL(43)/            +0.000717D0                     /,
+     :     (ITL(I,43),I=1,5)/            -2, +1, +0, +0,  2   /
+      DATA TL(44)/            +0.000704D0                     /,
+     :     (ITL(I,44),I=1,5)/            -2, +1, -2, +0,  2   /
+      DATA TL(45)/            +0.000693D0                     /,
+     :     (ITL(I,45),I=1,5)/            +1, -2, +2, +0,  1   /
+      DATA TL(46)/            +0.000598D0                     /,
+     :     (ITL(I,46),I=1,5)/            -1, +0, +2, -2,  1   /
+      DATA TL(47)/            +0.000550D0                     /,
+     :     (ITL(I,47),I=1,5)/            +0, +1, +4, +0,  0   /
+      DATA TL(48)/            +0.000538D0                     /,
+     :     (ITL(I,48),I=1,5)/            +0, +4, +0, +0,  0   /
+      DATA TL(49)/            +0.000521D0                     /,
+     :     (ITL(I,49),I=1,5)/            -1, +0, +4, +0,  1   /
+      DATA TL(50)/            +0.000486D0                     /,
+     :     (ITL(I,50),I=1,5)/            +0, +2, -1, +0,  0   /
+*
+*  Latitude
+*                                         M   M'  D   F   n
+      DATA TB( 1)/            +5.128189D0                     /,
+     :     (ITB(I, 1),I=1,5)/            +0, +0, +0, +1,  0   /
+      DATA TB( 2)/            +0.280606D0                     /,
+     :     (ITB(I, 2),I=1,5)/            +0, +1, +0, +1,  0   /
+      DATA TB( 3)/            +0.277693D0                     /,
+     :     (ITB(I, 3),I=1,5)/            +0, +1, +0, -1,  0   /
+      DATA TB( 4)/            +0.173238D0                     /,
+     :     (ITB(I, 4),I=1,5)/            +0, +0, +2, -1,  0   /
+      DATA TB( 5)/            +0.055413D0                     /,
+     :     (ITB(I, 5),I=1,5)/            +0, -1, +2, +1,  0   /
+      DATA TB( 6)/            +0.046272D0                     /,
+     :     (ITB(I, 6),I=1,5)/            +0, -1, +2, -1,  0   /
+      DATA TB( 7)/            +0.032573D0                     /,
+     :     (ITB(I, 7),I=1,5)/            +0, +0, +2, +1,  0   /
+      DATA TB( 8)/            +0.017198D0                     /,
+     :     (ITB(I, 8),I=1,5)/            +0, +2, +0, +1,  0   /
+      DATA TB( 9)/            +0.009267D0                     /,
+     :     (ITB(I, 9),I=1,5)/            +0, +1, +2, -1,  0   /
+      DATA TB(10)/            +0.008823D0                     /,
+     :     (ITB(I,10),I=1,5)/            +0, +2, +0, -1,  0   /
+      DATA TB(11)/            +0.008247D0                     /,
+     :     (ITB(I,11),I=1,5)/            -1, +0, +2, -1,  1   /
+      DATA TB(12)/            +0.004323D0                     /,
+     :     (ITB(I,12),I=1,5)/            +0, -2, +2, -1,  0   /
+      DATA TB(13)/            +0.004200D0                     /,
+     :     (ITB(I,13),I=1,5)/            +0, +1, +2, +1,  0   /
+      DATA TB(14)/            +0.003372D0                     /,
+     :     (ITB(I,14),I=1,5)/            -1, +0, -2, +1,  1   /
+      DATA TB(15)/            +0.002472D0                     /,
+     :     (ITB(I,15),I=1,5)/            -1, -1, +2, +1,  1   /
+      DATA TB(16)/            +0.002222D0                     /,
+     :     (ITB(I,16),I=1,5)/            -1, +0, +2, +1,  1   /
+      DATA TB(17)/            +0.002072D0                     /,
+     :     (ITB(I,17),I=1,5)/            -1, -1, +2, -1,  1   /
+      DATA TB(18)/            +0.001877D0                     /,
+     :     (ITB(I,18),I=1,5)/            -1, +1, +0, +1,  1   /
+      DATA TB(19)/            +0.001828D0                     /,
+     :     (ITB(I,19),I=1,5)/            +0, -1, +4, -1,  0   /
+      DATA TB(20)/            -0.001803D0                     /,
+     :     (ITB(I,20),I=1,5)/            +1, +0, +0, +1,  1   /
+      DATA TB(21)/            -0.001750D0                     /,
+     :     (ITB(I,21),I=1,5)/            +0, +0, +0, +3,  0   /
+      DATA TB(22)/            +0.001570D0                     /,
+     :     (ITB(I,22),I=1,5)/            -1, +1, +0, -1,  1   /
+      DATA TB(23)/            -0.001487D0                     /,
+     :     (ITB(I,23),I=1,5)/            +0, +0, +1, +1,  0   /
+      DATA TB(24)/            -0.001481D0                     /,
+     :     (ITB(I,24),I=1,5)/            +1, +1, +0, +1,  1   /
+      DATA TB(25)/            +0.001417D0                     /,
+     :     (ITB(I,25),I=1,5)/            -1, -1, +0, +1,  1   /
+      DATA TB(26)/            +0.001350D0                     /,
+     :     (ITB(I,26),I=1,5)/            -1, +0, +0, +1,  1   /
+      DATA TB(27)/            +0.001330D0                     /,
+     :     (ITB(I,27),I=1,5)/            +0, +0, -1, +1,  0   /
+      DATA TB(28)/            +0.001106D0                     /,
+     :     (ITB(I,28),I=1,5)/            +0, +3, +0, +1,  0   /
+      DATA TB(29)/            +0.001020D0                     /,
+     :     (ITB(I,29),I=1,5)/            +0, +0, +4, -1,  0   /
+      DATA TB(30)/            +0.000833D0                     /,
+     :     (ITB(I,30),I=1,5)/            +0, -1, +4, +1,  0   /
+      DATA TB(31)/            +0.000781D0                     /,
+     :     (ITB(I,31),I=1,5)/            +0, +1, +0, -3,  0   /
+      DATA TB(32)/            +0.000670D0                     /,
+     :     (ITB(I,32),I=1,5)/            +0, -2, +4, +1,  0   /
+      DATA TB(33)/            +0.000606D0                     /,
+     :     (ITB(I,33),I=1,5)/            +0, +0, +2, -3,  0   /
+      DATA TB(34)/            +0.000597D0                     /,
+     :     (ITB(I,34),I=1,5)/            +0, +2, +2, -1,  0   /
+      DATA TB(35)/            +0.000492D0                     /,
+     :     (ITB(I,35),I=1,5)/            -1, +1, +2, -1,  1   /
+      DATA TB(36)/            +0.000450D0                     /,
+     :     (ITB(I,36),I=1,5)/            +0, +2, -2, -1,  0   /
+      DATA TB(37)/            +0.000439D0                     /,
+     :     (ITB(I,37),I=1,5)/            +0, +3, +0, -1,  0   /
+      DATA TB(38)/            +0.000423D0                     /,
+     :     (ITB(I,38),I=1,5)/            +0, +2, +2, +1,  0   /
+      DATA TB(39)/            +0.000422D0                     /,
+     :     (ITB(I,39),I=1,5)/            +0, -3, +2, -1,  0   /
+      DATA TB(40)/            -0.000367D0                     /,
+     :     (ITB(I,40),I=1,5)/            +1, -1, +2, +1,  1   /
+      DATA TB(41)/            -0.000353D0                     /,
+     :     (ITB(I,41),I=1,5)/            +1, +0, +2, +1,  1   /
+      DATA TB(42)/            +0.000331D0                     /,
+     :     (ITB(I,42),I=1,5)/            +0, +0, +4, +1,  0   /
+      DATA TB(43)/            +0.000317D0                     /,
+     :     (ITB(I,43),I=1,5)/            -1, +1, +2, +1,  1   /
+      DATA TB(44)/            +0.000306D0                     /,
+     :     (ITB(I,44),I=1,5)/            -2, +0, +2, -1,  2   /
+      DATA TB(45)/            -0.000283D0                     /,
+     :     (ITB(I,45),I=1,5)/            +0, +1, +0, +3,  0   /
+*
+*  Parallax
+*                                         M   M'  D   F   n
+      DATA TP( 1)/            +0.950724D0                     /,
+     :     (ITP(I, 1),I=1,5)/            +0, +0, +0, +0,  0   /
+      DATA TP( 2)/            +0.051818D0                     /,
+     :     (ITP(I, 2),I=1,5)/            +0, +1, +0, +0,  0   /
+      DATA TP( 3)/            +0.009531D0                     /,
+     :     (ITP(I, 3),I=1,5)/            +0, -1, +2, +0,  0   /
+      DATA TP( 4)/            +0.007843D0                     /,
+     :     (ITP(I, 4),I=1,5)/            +0, +0, +2, +0,  0   /
+      DATA TP( 5)/            +0.002824D0                     /,
+     :     (ITP(I, 5),I=1,5)/            +0, +2, +0, +0,  0   /
+      DATA TP( 6)/            +0.000857D0                     /,
+     :     (ITP(I, 6),I=1,5)/            +0, +1, +2, +0,  0   /
+      DATA TP( 7)/            +0.000533D0                     /,
+     :     (ITP(I, 7),I=1,5)/            -1, +0, +2, +0,  1   /
+      DATA TP( 8)/            +0.000401D0                     /,
+     :     (ITP(I, 8),I=1,5)/            -1, -1, +2, +0,  1   /
+      DATA TP( 9)/            +0.000320D0                     /,
+     :     (ITP(I, 9),I=1,5)/            -1, +1, +0, +0,  1   /
+      DATA TP(10)/            -0.000271D0                     /,
+     :     (ITP(I,10),I=1,5)/            +0, +0, +1, +0,  0   /
+      DATA TP(11)/            -0.000264D0                     /,
+     :     (ITP(I,11),I=1,5)/            +1, +1, +0, +0,  1   /
+      DATA TP(12)/            -0.000198D0                     /,
+     :     (ITP(I,12),I=1,5)/            +0, -1, +0, +2,  0   /
+      DATA TP(13)/            +0.000173D0                     /,
+     :     (ITP(I,13),I=1,5)/            +0, +3, +0, +0,  0   /
+      DATA TP(14)/            +0.000167D0                     /,
+     :     (ITP(I,14),I=1,5)/            +0, -1, +4, +0,  0   /
+      DATA TP(15)/            -0.000111D0                     /,
+     :     (ITP(I,15),I=1,5)/            +1, +0, +0, +0,  1   /
+      DATA TP(16)/            +0.000103D0                     /,
+     :     (ITP(I,16),I=1,5)/            +0, -2, +4, +0,  0   /
+      DATA TP(17)/            -0.000084D0                     /,
+     :     (ITP(I,17),I=1,5)/            +0, +2, -2, +0,  0   /
+      DATA TP(18)/            -0.000083D0                     /,
+     :     (ITP(I,18),I=1,5)/            +1, +0, +2, +0,  1   /
+      DATA TP(19)/            +0.000079D0                     /,
+     :     (ITP(I,19),I=1,5)/            +0, +2, +2, +0,  0   /
+      DATA TP(20)/            +0.000072D0                     /,
+     :     (ITP(I,20),I=1,5)/            +0, +0, +4, +0,  0   /
+      DATA TP(21)/            +0.000064D0                     /,
+     :     (ITP(I,21),I=1,5)/            -1, +1, +2, +0,  1   /
+      DATA TP(22)/            -0.000063D0                     /,
+     :     (ITP(I,22),I=1,5)/            +1, -1, +2, +0,  1   /
+      DATA TP(23)/            +0.000041D0                     /,
+     :     (ITP(I,23),I=1,5)/            +1, +0, +1, +0,  1   /
+      DATA TP(24)/            +0.000035D0                     /,
+     :     (ITP(I,24),I=1,5)/            -1, +2, +0, +0,  1   /
+      DATA TP(25)/            -0.000033D0                     /,
+     :     (ITP(I,25),I=1,5)/            +0, +3, -2, +0,  0   /
+      DATA TP(26)/            -0.000030D0                     /,
+     :     (ITP(I,26),I=1,5)/            +0, +1, +1, +0,  0   /
+      DATA TP(27)/            -0.000029D0                     /,
+     :     (ITP(I,27),I=1,5)/            +0, +0, -2, +2,  0   /
+      DATA TP(28)/            -0.000029D0                     /,
+     :     (ITP(I,28),I=1,5)/            +1, +2, +0, +0,  1   /
+      DATA TP(29)/            +0.000026D0                     /,
+     :     (ITP(I,29),I=1,5)/            -2, +0, +2, +0,  2   /
+      DATA TP(30)/            -0.000023D0                     /,
+     :     (ITP(I,30),I=1,5)/            +0, +1, -2, +2,  0   /
+      DATA TP(31)/            +0.000019D0                     /,
+     :     (ITP(I,31),I=1,5)/            -1, -1, +4, +0,  1   /
+
+
+
+*  Centuries since J1900
+      T=(DATE-15019.5D0)/36525D0
+
+*
+*  Fundamental arguments (radians) and derivatives (radians per
+*  Julian century) for the current epoch
+*
+
+*  Moon's mean longitude
+      ELP=D2R*MOD(ELP0+(ELP1+(ELP2+ELP3*T)*T)*T,360D0)
+      DELP=D2R*(ELP1+(2D0*ELP2+3D0*ELP3*T)*T)
+
+*  Sun's mean anomaly
+      EM=D2R*MOD(EM0+(EM1+(EM2+EM3*T)*T)*T,360D0)
+      DEM=D2R*(EM1+(2D0*EM2+3D0*EM3*T)*T)
+
+*  Moon's mean anomaly
+      EMP=D2R*MOD(EMP0+(EMP1+(EMP2+EMP3*T)*T)*T,360D0)
+      DEMP=D2R*(EMP1+(2D0*EMP2+3D0*EMP3*T)*T)
+
+*  Moon's mean elongation
+      D=D2R*MOD(D0+(D1+(D2+D3*T)*T)*T,360D0)
+      DD=D2R*(D1+(2D0*D2+3D0*D3*T)*T)
+
+*  Mean distance of the Moon from its ascending node
+      F=D2R*MOD(F0+(F1+(F2+F3*T)*T)*T,360D0)
+      DF=D2R*(F1+(2D0*F2+3D0*F3*T)*T)
+
+*  Longitude of the Moon's ascending node
+      OM=D2R*MOD(OM0+(OM1+(OM2+OM3*T)*T)*T,360D0)
+      DOM=D2R*(OM1+(2D0*OM2+3D0*OM3*T)*T)
+      SINOM=SIN(OM)
+      COSOM=COS(OM)
+      DOMCOM=DOM*COSOM
+
+*  Add the periodic variations
+      THETA=D2R*(PA0+PA1*T)
+      WA=SIN(THETA)
+      DWA=D2R*PA1*COS(THETA)
+      THETA=D2R*(PE0+(PE1+PE2*T)*T)
+      WB=PEC*SIN(THETA)
+      DWB=D2R*PEC*(PE1+2D0*PE2*T)*COS(THETA)
+      ELP=ELP+D2R*(PAC*WA+WB+PFC*SINOM)
+      DELP=DELP+D2R*(PAC*DWA+DWB+PFC*DOMCOM)
+      EM=EM+D2R*PBC*WA
+      DEM=DEM+D2R*PBC*DWA
+      EMP=EMP+D2R*(PCC*WA+WB+PGC*SINOM)
+      DEMP=DEMP+D2R*(PCC*DWA+DWB+PGC*DOMCOM)
+      D=D+D2R*(PDC*WA+WB+PHC*SINOM)
+      DD=DD+D2R*(PDC*DWA+DWB+PHC*DOMCOM)
+      WOM=OM+D2R*(PJ0+PJ1*T)
+      DWOM=DOM+D2R*PJ1
+      SINWOM=SIN(WOM)
+      COSWOM=COS(WOM)
+      F=F+D2R*(WB+PIC*SINOM+PJC*SINWOM)
+      DF=DF+D2R*(DWB+PIC*DOMCOM+PJC*DWOM*COSWOM)
+
+*  E-factor, and square
+      E=1D0+(E1+E2*T)*T
+      DE=E1+2D0*E2*T
+      ESQ=E*E
+      DESQ=2D0*E*DE
+
+*
+*  Series expansions
+*
+
+*  Longitude
+      V=0D0
+      DV=0D0
+      DO N=NL,1,-1
+         COEFF=TL(N)
+         EMN=DBLE(ITL(1,N))
+         EMPN=DBLE(ITL(2,N))
+         DN=DBLE(ITL(3,N))
+         FN=DBLE(ITL(4,N))
+         I=ITL(5,N)
+         IF (I.EQ.0) THEN
+            EN=1D0
+            DEN=0D0
+         ELSE IF (I.EQ.1) THEN
+            EN=E
+            DEN=DE
+         ELSE
+            EN=ESQ
+            DEN=DESQ
+         END IF
+         THETA=EMN*EM+EMPN*EMP+DN*D+FN*F
+         DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF
+         FTHETA=SIN(THETA)
+         V=V+COEFF*FTHETA*EN
+         DV=DV+COEFF*(COS(THETA)*DTHETA*EN+FTHETA*DEN)
+      END DO
+      EL=ELP+D2R*V
+      DEL=(DELP+D2R*DV)/CJ
+
+*  Latitude
+      V=0D0
+      DV=0D0
+      DO N=NB,1,-1
+         COEFF=TB(N)
+         EMN=DBLE(ITB(1,N))
+         EMPN=DBLE(ITB(2,N))
+         DN=DBLE(ITB(3,N))
+         FN=DBLE(ITB(4,N))
+         I=ITB(5,N)
+         IF (I.EQ.0) THEN
+            EN=1D0
+            DEN=0D0
+         ELSE IF (I.EQ.1) THEN
+            EN=E
+            DEN=DE
+         ELSE
+            EN=ESQ
+            DEN=DESQ
+         END IF
+         THETA=EMN*EM+EMPN*EMP+DN*D+FN*F
+         DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF
+         FTHETA=SIN(THETA)
+         V=V+COEFF*FTHETA*EN
+         DV=DV+COEFF*(COS(THETA)*DTHETA*EN+FTHETA*DEN)
+      END DO
+      BF=1D0-CW1*COSOM-CW2*COSWOM
+      DBF=CW1*DOM*SINOM+CW2*DWOM*SINWOM
+      B=D2R*V*BF
+      DB=D2R*(DV*BF+V*DBF)/CJ
+
+*  Parallax
+      V=0D0
+      DV=0D0
+      DO N=NP,1,-1
+         COEFF=TP(N)
+         EMN=DBLE(ITP(1,N))
+         EMPN=DBLE(ITP(2,N))
+         DN=DBLE(ITP(3,N))
+         FN=DBLE(ITP(4,N))
+         I=ITP(5,N)
+         IF (I.EQ.0) THEN
+            EN=1D0
+            DEN=0D0
+         ELSE IF (I.EQ.1) THEN
+            EN=E
+            DEN=DE
+         ELSE
+            EN=ESQ
+            DEN=DESQ
+         END IF
+         THETA=EMN*EM+EMPN*EMP+DN*D+FN*F
+         DTHETA=EMN*DEM+EMPN*DEMP+DN*DD+FN*DF
+         FTHETA=COS(THETA)
+         V=V+COEFF*FTHETA*EN
+         DV=DV+COEFF*(-SIN(THETA)*DTHETA*EN+FTHETA*DEN)
+      END DO
+      P=D2R*V
+      DP=D2R*DV/CJ
+
+*
+*  Transformation into final form
+*
+
+*  Parallax to distance (AU, AU/sec)
+      SP=SIN(P)
+      R=ERADAU/SP
+      DR=-R*DP*COS(P)/SP
+
+*  Longitude, latitude to x,y,z (AU)
+      SEL=SIN(EL)
+      CEL=COS(EL)
+      SB=SIN(B)
+      CB=COS(B)
+      RCB=R*CB
+      RBD=R*DB
+      W=RBD*SB-CB*DR
+      X=RCB*CEL
+      Y=RCB*SEL
+      Z=R*SB
+      XD=-Y*DEL-W*CEL
+      YD=X*DEL-W*SEL
+      ZD=RBD*CB+SB*DR
+
+*  Julian centuries since J2000
+      T=(DATE-51544.5D0)/36525D0
+
+*  Fricke equinox correction
+      EPJ=2000D0+T*100D0
+      EQCOR=DS2R*(0.035D0+0.00085D0*(EPJ-B1950))
+
+*  Mean obliquity (IAU 1976)
+      EPS=DAS2R*(84381.448D0+(-46.8150D0+(-0.00059D0+0.001813D0*T)*T)*T)
+
+*  To the equatorial system, mean of date, FK5 system
+      SINEPS=SIN(EPS)
+      COSEPS=COS(EPS)
+      ES=EQCOR*SINEPS
+      EC=EQCOR*COSEPS
+      PV(1)=X-EC*Y+ES*Z
+      PV(2)=EQCOR*X+Y*COSEPS-Z*SINEPS
+      PV(3)=Y*SINEPS+Z*COSEPS
+      PV(4)=XD-EC*YD+ES*ZD
+      PV(5)=EQCOR*XD+YD*COSEPS-ZD*SINEPS
+      PV(6)=YD*SINEPS+ZD*COSEPS
+
+      END
diff --git a/dmxm.f b/dmxm.f
new file mode 100644
index 0000000000000000000000000000000000000000..3409d2a23a4916234d628ca63e2c9d9b039d5792
--- /dev/null
+++ b/dmxm.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_DMXM (A, B, C)
+*+
+*     - - - - -
+*      D M X M
+*     - - - - -
+*
+*  Product of two 3x3 matrices:
+*
+*      matrix C  =  matrix A  x  matrix B
+*
+*  (double precision)
+*
+*  Given:
+*      A      dp(3,3)        matrix
+*      B      dp(3,3)        matrix
+*
+*  Returned:
+*      C      dp(3,3)        matrix result
+*
+*  To comply with the ANSI Fortran 77 standard, A, B and C must
+*  be different arrays.  However, the routine is coded so as to
+*  work properly on many platforms even if this rule is violated.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION A(3,3),B(3,3),C(3,3)
+
+      INTEGER I,J,K
+      DOUBLE PRECISION W,WM(3,3)
+
+
+*  Multiply into scratch matrix
+      DO I=1,3
+         DO J=1,3
+            W=0D0
+            DO K=1,3
+               W=W+A(I,K)*B(K,J)
+            END DO
+            WM(I,J)=W
+         END DO
+      END DO
+
+*  Return the result
+      DO J=1,3
+         DO I=1,3
+            C(I,J)=WM(I,J)
+         END DO
+      END DO
+
+      END
diff --git a/dmxv.f b/dmxv.f
new file mode 100644
index 0000000000000000000000000000000000000000..c4a9186637f4c24d5e79188772328eb7c8980c21
--- /dev/null
+++ b/dmxv.f
@@ -0,0 +1,68 @@
+      SUBROUTINE sla_DMXV (DM, VA, VB)
+*+
+*     - - - - -
+*      D M X V
+*     - - - - -
+*
+*  Performs the 3-D forward unitary transformation:
+*
+*     vector VB = matrix DM * vector VA
+*
+*  (double precision)
+*
+*  Given:
+*     DM       dp(3,3)    matrix
+*     VA       dp(3)      vector
+*
+*  Returned:
+*     VB       dp(3)      result vector
+*
+*  To comply with the ANSI Fortran 77 standard, VA and VB must be
+*  different arrays.  However, the routine is coded so as to work
+*  properly on many platforms even if this rule is violated.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DM(3,3),VA(3),VB(3)
+
+      INTEGER I,J
+      DOUBLE PRECISION W,VW(3)
+
+
+*  Matrix DM * vector VA -> vector VW
+      DO J=1,3
+         W=0D0
+         DO I=1,3
+            W=W+DM(J,I)*VA(I)
+         END DO
+         VW(J)=W
+      END DO
+
+*  Vector VW -> vector VB
+      DO J=1,3
+         VB(J)=VW(J)
+      END DO
+
+      END
diff --git a/dpav.f b/dpav.f
new file mode 100644
index 0000000000000000000000000000000000000000..5407ba2f09b67128afba4855266c6e0b0b4e82e7
--- /dev/null
+++ b/dpav.f
@@ -0,0 +1,81 @@
+      DOUBLE PRECISION FUNCTION sla_DPAV ( V1, V2 )
+*+
+*     - - - - -
+*      D P A V
+*     - - - - -
+*
+*  Position angle of one celestial direction with respect to another.
+*
+*  (double precision)
+*
+*  Given:
+*     V1    d(3)    direction cosines of one point
+*     V2    d(3)    direction cosines of the other point
+*
+*  (The coordinate frames correspond to RA,Dec, Long,Lat etc.)
+*
+*  The result is the bearing (position angle), in radians, of point
+*  V2 with respect to point V1.  It is in the range +/- pi.  The
+*  sense is such that if V2 is a small distance east of V1, the
+*  bearing is about +pi/2.  Zero is returned if the two points
+*  are coincident.
+*
+*  V1 and V2 need not be unit vectors.
+*
+*  The routine sla_DBEAR performs an equivalent function except
+*  that the points are specified in the form of spherical
+*  coordinates.
+*
+*  Last revision:   16 March 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION V1(3),V2(3)
+
+      DOUBLE PRECISION X1,Y1,Z1,W,X2,Y2,Z2,SQ,CQ
+
+
+
+*  The unit vector to point 1.
+      X1 = V1(1)
+      Y1 = V1(2)
+      Z1 = V1(3)
+      W = SQRT(X1*X1+Y1*Y1+Z1*Z1)
+      IF (W.NE.0D0) THEN
+         X1 = X1/W
+         Y1 = Y1/W
+         Z1 = Z1/W
+      END IF
+
+*  The vector to point 2.
+      X2 = V2(1)
+      Y2 = V2(2)
+      Z2 = V2(3)
+
+*  Position angle.
+      SQ = Y2*X1-X2*Y1
+      CQ = Z2*(X1*X1+Y1*Y1)-Z1*(X2*X1+Y2*Y1)
+      IF (SQ.EQ.0D0.AND.CQ.EQ.0D0) CQ=1D0
+      sla_DPAV = ATAN2(SQ,CQ)
+
+      END
diff --git a/dr2af.f b/dr2af.f
new file mode 100644
index 0000000000000000000000000000000000000000..9d09c918ce7f455f2316753b0e1887418eca4613
--- /dev/null
+++ b/dr2af.f
@@ -0,0 +1,75 @@
+      SUBROUTINE sla_DR2AF (NDP, ANGLE, SIGN, IDMSF)
+*+
+*     - - - - - -
+*      D R 2 A F
+*     - - - - - -
+*
+*  Convert an angle in radians to degrees, arcminutes, arcseconds
+*  (double precision)
+*
+*  Given:
+*     NDP      i      number of decimal places of arcseconds
+*     ANGLE    d      angle in radians
+*
+*  Returned:
+*     SIGN     c      '+' or '-'
+*     IDMSF    i(4)   degrees, arcminutes, arcseconds, fraction
+*
+*  Notes:
+*
+*     1)  NDP less than zero is interpreted as zero.
+*
+*     2)  The largest useful value for NDP is determined by the size
+*         of ANGLE, the format of DOUBLE PRECISION floating-point
+*         numbers on the target machine, and the risk of overflowing
+*         IDMSF(4).  On some architectures, for ANGLE up to 2pi, the
+*         available floating-point precision corresponds roughly to
+*         NDP=12.  However, the practical limit is NDP=9, set by the
+*         capacity of a typical 32-bit IDMSF(4).
+*
+*     3)  The absolute value of ANGLE may exceed 2pi.  In cases where it
+*         does not, it is up to the caller to test for and handle the
+*         case where ANGLE is very nearly 2pi and rounds up to 360 deg,
+*         by testing for IDMSF(1)=360 and setting IDMSF(1-4) to zero.
+*
+*  Called:  sla_DD2TF
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      DOUBLE PRECISION ANGLE
+      CHARACTER SIGN*(*)
+      INTEGER IDMSF(4)
+
+*  Hours to degrees * radians to turns
+      DOUBLE PRECISION F
+      PARAMETER (F=15D0/6.283185307179586476925287D0)
+
+
+
+*  Scale then use days to h,m,s routine
+      CALL sla_DD2TF(NDP,ANGLE*F,SIGN,IDMSF)
+
+      END
diff --git a/dr2tf.f b/dr2tf.f
new file mode 100644
index 0000000000000000000000000000000000000000..d610797cb117d3cb6249469957ebe1be67f00710
--- /dev/null
+++ b/dr2tf.f
@@ -0,0 +1,75 @@
+      SUBROUTINE sla_DR2TF (NDP, ANGLE, SIGN, IHMSF)
+*+
+*     - - - - - -
+*      D R 2 T F
+*     - - - - - -
+*
+*  Convert an angle in radians to hours, minutes, seconds
+*  (double precision)
+*
+*  Given:
+*     NDP      i      number of decimal places of seconds
+*     ANGLE    d      angle in radians
+*
+*  Returned:
+*     SIGN     c      '+' or '-'
+*     IHMSF    i(4)   hours, minutes, seconds, fraction
+*
+*  Notes:
+*
+*     1)  NDP less than zero is interpreted as zero.
+*
+*     2)  The largest useful value for NDP is determined by the size
+*         of ANGLE, the format of DOUBLE PRECISION floating-point
+*         numbers on the target machine, and the risk of overflowing
+*         IHMSF(4).  On some architectures, for ANGLE up to 2pi, the
+*         available floating-point precision corresponds roughly to
+*         NDP=12.  However, the practical limit is NDP=9, set by the
+*         capacity of a typical 32-bit IHMSF(4).
+*
+*     3)  The absolute value of ANGLE may exceed 2pi.  In cases where it
+*         does not, it is up to the caller to test for and handle the
+*         case where ANGLE is very nearly 2pi and rounds up to 24 hours,
+*         by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+*
+*  Called:  sla_DD2TF
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NDP
+      DOUBLE PRECISION ANGLE
+      CHARACTER SIGN*(*)
+      INTEGER IHMSF(4)
+
+*  Turns to radians
+      DOUBLE PRECISION T2R
+      PARAMETER (T2R=6.283185307179586476925287D0)
+
+
+
+*  Scale then use days to h,m,s routine
+      CALL sla_DD2TF(NDP,ANGLE/T2R,SIGN,IHMSF)
+
+      END
diff --git a/drange.f b/drange.f
new file mode 100644
index 0000000000000000000000000000000000000000..43312ba6da208ad381ec8b9d3b96125bfdb6bcd1
--- /dev/null
+++ b/drange.f
@@ -0,0 +1,49 @@
+      DOUBLE PRECISION FUNCTION sla_DRANGE (ANGLE)
+*+
+*     - - - - - - -
+*      D R A N G E
+*     - - - - - - -
+*
+*  Normalize angle into range +/- pi  (double precision)
+*
+*  Given:
+*     ANGLE     dp      the angle in radians
+*
+*  The result (double precision) is ANGLE expressed in the range +/- pi.
+*
+*  P.T.Wallace   Starlink   23 November 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION ANGLE
+
+      DOUBLE PRECISION DPI,D2PI
+      PARAMETER (DPI=3.141592653589793238462643D0)
+      PARAMETER (D2PI=6.283185307179586476925287D0)
+
+
+      sla_DRANGE=MOD(ANGLE,D2PI)
+      IF (ABS(sla_DRANGE).GE.DPI)
+     :          sla_DRANGE=sla_DRANGE-SIGN(D2PI,ANGLE)
+
+      END
diff --git a/dranrm.f b/dranrm.f
new file mode 100644
index 0000000000000000000000000000000000000000..6f9ed657114feb8d336b25d1ab79d33a6aadcd58
--- /dev/null
+++ b/dranrm.f
@@ -0,0 +1,47 @@
+      DOUBLE PRECISION FUNCTION sla_DRANRM (ANGLE)
+*+
+*     - - - - - - -
+*      D R A N R M
+*     - - - - - - -
+*
+*  Normalize angle into range 0-2 pi  (double precision)
+*
+*  Given:
+*     ANGLE     dp      the angle in radians
+*
+*  The result is ANGLE expressed in the range 0-2 pi.
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION ANGLE
+
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925286766559D0)
+
+
+      sla_DRANRM = MOD(ANGLE,D2PI)
+      IF (sla_DRANRM.LT.0D0) sla_DRANRM = sla_DRANRM+D2PI
+
+      END
diff --git a/ds2c6.f b/ds2c6.f
new file mode 100644
index 0000000000000000000000000000000000000000..da2726bb049741e6b2b3113e85d648886a647f94
--- /dev/null
+++ b/ds2c6.f
@@ -0,0 +1,74 @@
+      SUBROUTINE sla_DS2C6 (A, B, R, AD, BD, RD, V)
+*+
+*     - - - - - -
+*      D S 2 C 6
+*     - - - - - -
+*
+*  Conversion of position & velocity in spherical coordinates
+*  to Cartesian coordinates
+*
+*  (double precision)
+*
+*  Given:
+*     A     dp      longitude (radians)
+*     B     dp      latitude (radians)
+*     R     dp      radial coordinate
+*     AD    dp      longitude derivative (radians per unit time)
+*     BD    dp      latitude derivative (radians per unit time)
+*     RD    dp      radial derivative
+*
+*  Returned:
+*     V     dp(6)   Cartesian position & velocity vector
+*
+*  P.T.Wallace   Starlink   10 July 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION A,B,R,AD,BD,RD,V(6)
+
+      DOUBLE PRECISION SA,CA,SB,CB,RCB,X,Y,RBD,W
+
+
+
+*  Useful functions
+      SA=SIN(A)
+      CA=COS(A)
+      SB=SIN(B)
+      CB=COS(B)
+      RCB=R*CB
+      X=RCB*CA
+      Y=RCB*SA
+      RBD=R*BD
+      W=RBD*SB-CB*RD
+
+*  Position
+      V(1)=X
+      V(2)=Y
+      V(3)=R*SB
+
+*  Velocity
+      V(4)=-Y*AD-W*CA
+      V(5)=X*AD-W*SA
+      V(6)=RBD*CB+SB*RD
+
+      END
diff --git a/ds2tp.f b/ds2tp.f
new file mode 100644
index 0000000000000000000000000000000000000000..b54e7fa70605003a7306a04318728759e9aaa942
--- /dev/null
+++ b/ds2tp.f
@@ -0,0 +1,84 @@
+      SUBROUTINE sla_DS2TP (RA, DEC, RAZ, DECZ, XI, ETA, J)
+*+
+*     - - - - - -
+*      D S 2 T P
+*     - - - - - -
+*
+*  Projection of spherical coordinates onto tangent plane:
+*  "gnomonic" projection - "standard coordinates" (double precision)
+*
+*  Given:
+*     RA,DEC      dp   spherical coordinates of point to be projected
+*     RAZ,DECZ    dp   spherical coordinates of tangent point
+*
+*  Returned:
+*     XI,ETA      dp   rectangular coordinates on tangent plane
+*     J           int  status:   0 = OK, star on tangent plane
+*                                1 = error, star too far from axis
+*                                2 = error, antistar on tangent plane
+*                                3 = error, antistar too far from axis
+*
+*  P.T.Wallace   Starlink   18 July 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RA,DEC,RAZ,DECZ,XI,ETA
+      INTEGER J
+
+      DOUBLE PRECISION SDECZ,SDEC,CDECZ,CDEC,
+     :                 RADIF,SRADIF,CRADIF,DENOM
+
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-6)
+
+
+*  Trig functions
+      SDECZ=SIN(DECZ)
+      SDEC=SIN(DEC)
+      CDECZ=COS(DECZ)
+      CDEC=COS(DEC)
+      RADIF=RA-RAZ
+      SRADIF=SIN(RADIF)
+      CRADIF=COS(RADIF)
+
+*  Reciprocal of star vector length to tangent plane
+      DENOM=SDEC*SDECZ+CDEC*CDECZ*CRADIF
+
+*  Handle vectors too far from axis
+      IF (DENOM.GT.TINY) THEN
+         J=0
+      ELSE IF (DENOM.GE.0D0) THEN
+         J=1
+         DENOM=TINY
+      ELSE IF (DENOM.GT.-TINY) THEN
+         J=2
+         DENOM=-TINY
+      ELSE
+         J=3
+      END IF
+
+*  Compute tangent plane coordinates (even in dubious cases)
+      XI=CDEC*SRADIF/DENOM
+      ETA=(SDEC*CDECZ-CDEC*SDECZ*CRADIF)/DENOM
+
+      END
diff --git a/dsep.f b/dsep.f
new file mode 100644
index 0000000000000000000000000000000000000000..5a0928e447e2bac500400452273deddd9f96ce2a
--- /dev/null
+++ b/dsep.f
@@ -0,0 +1,60 @@
+      DOUBLE PRECISION FUNCTION sla_DSEP (A1, B1, A2, B2)
+*+
+*     - - - - -
+*      D S E P
+*     - - - - -
+*
+*  Angle between two points on a sphere.
+*
+*  (double precision)
+*
+*  Given:
+*     A1,B1    d     spherical coordinates of one point
+*     A2,B2    d     spherical coordinates of the other point
+*
+*  (The spherical coordinates are [RA,Dec], [Long,Lat] etc, in radians.)
+*
+*  The result is the angle, in radians, between the two points.  It
+*  is always positive.
+*
+*  Called:  sla_DCS2C, sla_DSEPV
+*
+*  Last revision:   7 May 2000
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION A1,B1,A2,B2
+
+      DOUBLE PRECISION V1(3),V2(3)
+      DOUBLE PRECISION sla_DSEPV
+
+
+
+*  Convert coordinates from spherical to Cartesian.
+      CALL sla_DCS2C(A1,B1,V1)
+      CALL sla_DCS2C(A2,B2,V2)
+
+*  Angle between the vectors.
+      sla_DSEP = sla_DSEPV(V1,V2)
+
+      END
diff --git a/dsepv.f b/dsepv.f
new file mode 100644
index 0000000000000000000000000000000000000000..b73b2e462156443888420c5de850eadc2072b09d
--- /dev/null
+++ b/dsepv.f
@@ -0,0 +1,76 @@
+      DOUBLE PRECISION FUNCTION sla_DSEPV (V1, V2)
+*+
+*     - - - - - -
+*      D S E P V
+*     - - - - - -
+*
+*  Angle between two vectors.
+*
+*  (double precision)
+*
+*  Given:
+*     V1      d(3)    first vector
+*     V2      d(3)    second vector
+*
+*  The result is the angle, in radians, between the two vectors.  It
+*  is always positive.
+*
+*  Notes:
+*
+*  1  There is no requirement for the vectors to be unit length.
+*
+*  2  If either vector is null, zero is returned.
+*
+*  3  The simplest formulation would use dot product alone.  However,
+*     this would reduce the accuracy for angles near zero and pi.  The
+*     algorithm uses both cross product and dot product, which maintains
+*     accuracy for all sizes of angle.
+*
+*  Called:  sla_DVXV, sla_DVN, sla_DVDV
+*
+*  Last revision:   14 June 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION V1(3),V2(3)
+
+      DOUBLE PRECISION V1XV2(3),WV(3),S,C
+      DOUBLE PRECISION sla_DVDV
+
+
+
+*  Modulus of cross product = sine multiplied by the two moduli.
+      CALL sla_DVXV(V1,V2,V1XV2)
+      CALL sla_DVN(V1XV2,WV,S)
+
+*  Dot product = cosine multiplied by the two moduli.
+      C = sla_DVDV(V1,V2)
+
+*  Angle between the vectors.
+      IF ( S.NE.0D0 .OR. C.NE.0D0 ) THEN
+         sla_DSEPV = ATAN2(S,C)
+      ELSE
+         sla_DSEPV = 0D0
+      END IF
+
+      END
diff --git a/dt.f b/dt.f
new file mode 100644
index 0000000000000000000000000000000000000000..ba9e2a606706d6450c792066fcb0d09126414314
--- /dev/null
+++ b/dt.f
@@ -0,0 +1,96 @@
+      DOUBLE PRECISION FUNCTION sla_DT (EPOCH)
+*+
+*     - - -
+*      D T
+*     - - -
+*
+*  Estimate the offset between dynamical time and Universal Time
+*  for a given historical epoch.
+*
+*  Given:
+*     EPOCH       d        (Julian) epoch (e.g. 1850D0)
+*
+*  The result is a rough estimate of ET-UT (after 1984, TT-UT) at
+*  the given epoch, in seconds.
+*
+*  Notes:
+*
+*  1  Depending on the epoch, one of three parabolic approximations
+*     is used:
+*
+*      before 979    Stephenson & Morrison's 390 BC to AD 948 model
+*      979 to 1708   Stephenson & Morrison's 948 to 1600 model
+*      after 1708    McCarthy & Babcock's post-1650 model
+*
+*     The breakpoints are chosen to ensure continuity:  they occur
+*     at places where the adjacent models give the same answer as
+*     each other.
+*
+*  2  The accuracy is modest, with errors of up to 20 sec during
+*     the interval since 1650, rising to perhaps 30 min by 1000 BC.
+*     Comparatively accurate values from AD 1600 are tabulated in
+*     the Astronomical Almanac (see section K8 of the 1995 AA).
+*
+*  3  The use of double-precision for both argument and result is
+*     purely for compatibility with other SLALIB time routines.
+*
+*  4  The models used are based on a lunar tidal acceleration value
+*     of -26.00 arcsec per century.
+*
+*  Reference:  Explanatory Supplement to the Astronomical Almanac,
+*              ed P.K.Seidelmann, University Science Books (1992),
+*              section 2.553, p83.  This contains references to
+*              the Stephenson & Morrison and McCarthy & Babcock
+*              papers.
+*
+*  P.T.Wallace   Starlink   1 March 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EPOCH
+      DOUBLE PRECISION T,W,S
+
+
+*  Centuries since 1800
+      T=(EPOCH-1800D0)/100D0
+
+*  Select model
+      IF (EPOCH.GE.1708.185161980887D0) THEN
+
+*     Post-1708: use McCarthy & Babcock
+         W=T-0.19D0
+         S=5.156D0+13.3066D0*W*W
+      ELSE IF (EPOCH.GE.979.0258204760233D0) THEN
+
+*     979-1708: use Stephenson & Morrison's 948-1600 model
+         S=25.5D0*T*T
+      ELSE
+
+*     Pre-979: use Stephenson & Morrison's 390 BC to AD 948 model
+         S=1360.0D0+(320D0+44.3D0*T)*T
+      END IF
+
+*  Result
+      sla_DT=S
+
+      END
diff --git a/dtf2d.f b/dtf2d.f
new file mode 100644
index 0000000000000000000000000000000000000000..315eae6f6f48494d080abc8b125d971e4989c549
--- /dev/null
+++ b/dtf2d.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_DTF2D (IHOUR, IMIN, SEC, DAYS, J)
+*+
+*     - - - - - -
+*      D T F 2 D
+*     - - - - - -
+*
+*  Convert hours, minutes, seconds to days (double precision)
+*
+*  Given:
+*     IHOUR       int       hours
+*     IMIN        int       minutes
+*     SEC         dp        seconds
+*
+*  Returned:
+*     DAYS        dp        interval in days
+*     J           int       status:  0 = OK
+*                                    1 = IHOUR outside range 0-23
+*                                    2 = IMIN outside range 0-59
+*                                    3 = SEC outside range 0-59.999...
+*
+*  Notes:
+*
+*     1)  The result is computed even if any of the range checks fail.
+*
+*     2)  The sign must be dealt with outside this routine.
+*
+*  P.T.Wallace   Starlink   July 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IHOUR,IMIN
+      DOUBLE PRECISION SEC,DAYS
+      INTEGER J
+
+*  Seconds per day
+      DOUBLE PRECISION D2S
+      PARAMETER (D2S=86400D0)
+
+
+
+*  Preset status
+      J=0
+
+*  Validate sec, min, hour
+      IF (SEC.LT.0D0.OR.SEC.GE.60D0) J=3
+      IF (IMIN.LT.0.OR.IMIN.GT.59) J=2
+      IF (IHOUR.LT.0.OR.IHOUR.GT.23) J=1
+
+*  Compute interval
+      DAYS=(60D0*(60D0*DBLE(IHOUR)+DBLE(IMIN))+SEC)/D2S
+
+      END
diff --git a/dtf2r.f b/dtf2r.f
new file mode 100644
index 0000000000000000000000000000000000000000..d13a6655139511650d03f2b62a702a6393c8242e
--- /dev/null
+++ b/dtf2r.f
@@ -0,0 +1,70 @@
+      SUBROUTINE sla_DTF2R (IHOUR, IMIN, SEC, RAD, J)
+*+
+*     - - - - - -
+*      D T F 2 R
+*     - - - - - -
+*
+*  Convert hours, minutes, seconds to radians (double precision)
+*
+*  Given:
+*     IHOUR       int       hours
+*     IMIN        int       minutes
+*     SEC         dp        seconds
+*
+*  Returned:
+*     RAD         dp        angle in radians
+*     J           int       status:  0 = OK
+*                                    1 = IHOUR outside range 0-23
+*                                    2 = IMIN outside range 0-59
+*                                    3 = SEC outside range 0-59.999...
+*
+*  Called:
+*     sla_DTF2D
+*
+*  Notes:
+*
+*     1)  The result is computed even if any of the range checks fail.
+*
+*     2)  The sign must be dealt with outside this routine.
+*
+*  P.T.Wallace   Starlink   July 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IHOUR,IMIN
+      DOUBLE PRECISION SEC,RAD
+      INTEGER J
+
+      DOUBLE PRECISION TURNS
+
+*  Turns to radians
+      DOUBLE PRECISION T2R
+      PARAMETER (T2R=6.283185307179586476925287D0)
+
+
+
+*  Convert to turns then radians
+      CALL sla_DTF2D(IHOUR,IMIN,SEC,TURNS,J)
+      RAD=T2R*TURNS
+
+      END
diff --git a/dtp2s.f b/dtp2s.f
new file mode 100644
index 0000000000000000000000000000000000000000..e5118305458e4f7191379c9e8e84fd53ab04c55b
--- /dev/null
+++ b/dtp2s.f
@@ -0,0 +1,59 @@
+      SUBROUTINE sla_DTP2S (XI, ETA, RAZ, DECZ, RA, DEC)
+*+
+*     - - - - - -
+*      D T P 2 S
+*     - - - - - -
+*
+*  Transform tangent plane coordinates into spherical
+*  (double precision)
+*
+*  Given:
+*     XI,ETA      dp   tangent plane rectangular coordinates
+*     RAZ,DECZ    dp   spherical coordinates of tangent point
+*
+*  Returned:
+*     RA,DEC      dp   spherical coordinates (0-2pi,+/-pi/2)
+*
+*  Called:        sla_DRANRM
+*
+*  P.T.Wallace   Starlink   24 July 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION XI,ETA,RAZ,DECZ,RA,DEC
+
+      DOUBLE PRECISION sla_DRANRM
+
+      DOUBLE PRECISION SDECZ,CDECZ,DENOM
+
+
+
+      SDECZ=SIN(DECZ)
+      CDECZ=COS(DECZ)
+
+      DENOM=CDECZ-ETA*SDECZ
+
+      RA=sla_DRANRM(ATAN2(XI,DENOM)+RAZ)
+      DEC=ATAN2(SDECZ+ETA*CDECZ,SQRT(XI*XI+DENOM*DENOM))
+
+      END
diff --git a/dtp2v.f b/dtp2v.f
new file mode 100644
index 0000000000000000000000000000000000000000..234b5df3f9dfec6566502a1cafe0b2c0734f8f85
--- /dev/null
+++ b/dtp2v.f
@@ -0,0 +1,73 @@
+      SUBROUTINE sla_DTP2V (XI, ETA, V0, V)
+*+
+*     - - - - - -
+*      D T P 2 V
+*     - - - - - -
+*
+*  Given the tangent-plane coordinates of a star and the direction
+*  cosines of the tangent point, determine the direction cosines
+*  of the star.
+*
+*  (double precision)
+*
+*  Given:
+*     XI,ETA    d       tangent plane coordinates of star
+*     V0        d(3)    direction cosines of tangent point
+*
+*  Returned:
+*     V         d(3)    direction cosines of star
+*
+*  Notes:
+*
+*  1  If vector V0 is not of unit length, the returned vector V will
+*     be wrong.
+*
+*  2  If vector V0 points at a pole, the returned vector V will be
+*     based on the arbitrary assumption that the RA of the tangent
+*     point is zero.
+*
+*  3  This routine is the Cartesian equivalent of the routine sla_DTP2S.
+*
+*  P.T.Wallace   Starlink   11 February 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION XI,ETA,V0(3),V(3)
+
+      DOUBLE PRECISION X,Y,Z,F,R
+
+
+      X=V0(1)
+      Y=V0(2)
+      Z=V0(3)
+      F=SQRT(1D0+XI*XI+ETA*ETA)
+      R=SQRT(X*X+Y*Y)
+      IF (R.EQ.0D0) THEN
+         R=1D-20
+         X=R
+      END IF
+      V(1)=(X-(XI*Y+ETA*X*Z)/R)/F
+      V(2)=(Y+(XI*X-ETA*Y*Z)/R)/F
+      V(3)=(Z+ETA*R)/F
+
+      END
diff --git a/dtps2c.f b/dtps2c.f
new file mode 100644
index 0000000000000000000000000000000000000000..edb43783f3c4817df284d6e5c5de0d8a76d2b3ca
--- /dev/null
+++ b/dtps2c.f
@@ -0,0 +1,108 @@
+      SUBROUTINE sla_DTPS2C (XI, ETA, RA, DEC, RAZ1, DECZ1,
+     :                                         RAZ2, DECZ2, N)
+*+
+*     - - - - - - -
+*      D T P S 2 C
+*     - - - - - - -
+*
+*  From the tangent plane coordinates of a star of known RA,Dec,
+*  determine the RA,Dec of the tangent point.
+*
+*  (double precision)
+*
+*  Given:
+*     XI,ETA      d    tangent plane rectangular coordinates
+*     RA,DEC      d    spherical coordinates
+*
+*  Returned:
+*     RAZ1,DECZ1  d    spherical coordinates of tangent point, solution 1
+*     RAZ2,DECZ2  d    spherical coordinates of tangent point, solution 2
+*     N           i    number of solutions:
+*                        0 = no solutions returned (note 2)
+*                        1 = only the first solution is useful (note 3)
+*                        2 = both solutions are useful (note 3)
+*
+*  Notes:
+*
+*  1  The RAZ1 and RAZ2 values are returned in the range 0-2pi.
+*
+*  2  Cases where there is no solution can only arise near the poles.
+*     For example, it is clearly impossible for a star at the pole
+*     itself to have a non-zero XI value, and hence it is
+*     meaningless to ask where the tangent point would have to be
+*     to bring about this combination of XI and DEC.
+*
+*  3  Also near the poles, cases can arise where there are two useful
+*     solutions.  The argument N indicates whether the second of the
+*     two solutions returned is useful.  N=1 indicates only one useful
+*     solution, the usual case;  under these circumstances, the second
+*     solution corresponds to the "over-the-pole" case, and this is
+*     reflected in the values of RAZ2 and DECZ2 which are returned.
+*
+*  4  The DECZ1 and DECZ2 values are returned in the range +/-pi, but
+*     in the usual, non-pole-crossing, case, the range is +/-pi/2.
+*
+*  5  This routine is the spherical equivalent of the routine sla_DTPV2C.
+*
+*  Called:  sla_DRANRM
+*
+*  P.T.Wallace   Starlink   5 June 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION XI,ETA,RA,DEC,RAZ1,DECZ1,RAZ2,DECZ2
+      INTEGER N
+
+      DOUBLE PRECISION X2,Y2,SD,CD,SDF,R2,R,S,C
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+      X2=XI*XI
+      Y2=ETA*ETA
+      SD=SIN(DEC)
+      CD=COS(DEC)
+      SDF=SD*SQRT(1D0+X2+Y2)
+      R2=CD*CD*(1D0+Y2)-SD*SD*X2
+      IF (R2.GE.0D0) THEN
+         R=SQRT(R2)
+         S=SDF-ETA*R
+         C=SDF*ETA+R
+         IF (XI.EQ.0D0.AND.R.EQ.0D0) R=1D0
+         RAZ1=sla_DRANRM(RA-ATAN2(XI,R))
+         DECZ1=ATAN2(S,C)
+         R=-R
+         S=SDF-ETA*R
+         C=SDF*ETA+R
+         RAZ2=sla_DRANRM(RA-ATAN2(XI,R))
+         DECZ2=ATAN2(S,C)
+         IF (ABS(SDF).LT.1D0) THEN
+            N=1
+         ELSE
+            N=2
+         END IF
+      ELSE
+         N=0
+      END IF
+
+      END
diff --git a/dtpv2c.f b/dtpv2c.f
new file mode 100644
index 0000000000000000000000000000000000000000..8cb7f2e8592726fb0a11fa041c66149cad8ddf5f
--- /dev/null
+++ b/dtpv2c.f
@@ -0,0 +1,100 @@
+      SUBROUTINE sla_DTPV2C (XI, ETA, V, V01, V02, N)
+*+
+*     - - - - - - -
+*      D T P V 2 C
+*     - - - - - - -
+*
+*  Given the tangent-plane coordinates of a star and its direction
+*  cosines, determine the direction cosines of the tangent-point.
+*
+*  (double precision)
+*
+*  Given:
+*     XI,ETA    d       tangent plane coordinates of star
+*     V         d(3)    direction cosines of star
+*
+*  Returned:
+*     V01       d(3)    direction cosines of tangent point, solution 1
+*     V02       d(3)    direction cosines of tangent point, solution 2
+*     N         i       number of solutions:
+*                         0 = no solutions returned (note 2)
+*                         1 = only the first solution is useful (note 3)
+*                         2 = both solutions are useful (note 3)
+*
+*  Notes:
+*
+*  1  The vector V must be of unit length or the result will be wrong.
+*
+*  2  Cases where there is no solution can only arise near the poles.
+*     For example, it is clearly impossible for a star at the pole
+*     itself to have a non-zero XI value, and hence it is meaningless
+*     to ask where the tangent point would have to be.
+*
+*  3  Also near the poles, cases can arise where there are two useful
+*     solutions.  The argument N indicates whether the second of the
+*     two solutions returned is useful.  N=1 indicates only one useful
+*     solution, the usual case;  under these circumstances, the second
+*     solution can be regarded as valid if the vector V02 is interpreted
+*     as the "over-the-pole" case.
+*
+*  4  This routine is the Cartesian equivalent of the routine sla_DTPS2C.
+*
+*  P.T.Wallace   Starlink   5 June 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION XI,ETA,V(3),V01(3),V02(3)
+      INTEGER N
+
+      DOUBLE PRECISION X,Y,Z,RXY2,XI2,ETA2P1,SDF,R2,R,C
+
+
+      X=V(1)
+      Y=V(2)
+      Z=V(3)
+      RXY2=X*X+Y*Y
+      XI2=XI*XI
+      ETA2P1=ETA*ETA+1D0
+      SDF=Z*SQRT(XI2+ETA2P1)
+      R2=RXY2*ETA2P1-Z*Z*XI2
+      IF (R2.GT.0D0) THEN
+         R=SQRT(R2)
+         C=(SDF*ETA+R)/(ETA2P1*SQRT(RXY2*(R2+XI2)))
+         V01(1)=C*(X*R+Y*XI)
+         V01(2)=C*(Y*R-X*XI)
+         V01(3)=(SDF-ETA*R)/ETA2P1
+         R=-R
+         C=(SDF*ETA+R)/(ETA2P1*SQRT(RXY2*(R2+XI2)))
+         V02(1)=C*(X*R+Y*XI)
+         V02(2)=C*(Y*R-X*XI)
+         V02(3)=(SDF-ETA*R)/ETA2P1
+         IF (ABS(SDF).LT.1D0) THEN
+            N=1
+         ELSE
+            N=2
+         END IF
+      ELSE
+         N=0
+      END IF
+
+      END
diff --git a/dtt.f b/dtt.f
new file mode 100644
index 0000000000000000000000000000000000000000..a084db6bd576f8b9eb4e97b89e3287b07979c915
--- /dev/null
+++ b/dtt.f
@@ -0,0 +1,63 @@
+      DOUBLE PRECISION FUNCTION sla_DTT (UTC)
+*+
+*     - - - -
+*      D T T
+*     - - - -
+*
+*  Increment to be applied to Coordinated Universal Time UTC to give
+*  Terrestrial Time TT (formerly Ephemeris Time ET)
+*
+*  (double precision)
+*
+*  Given:
+*     UTC      d      UTC date as a modified JD (JD-2400000.5)
+*
+*  Result:  TT-UTC in seconds
+*
+*  Notes:
+*
+*  1  The UTC is specified to be a date rather than a time to indicate
+*     that care needs to be taken not to specify an instant which lies
+*     within a leap second.  Though in most cases UTC can include the
+*     fractional part, correct behaviour on the day of a leap second
+*     can only be guaranteed up to the end of the second 23:59:59.
+*
+*  2  Pre 1972 January 1 a fixed value of 10 + ET-TAI is returned.
+*
+*  3  See also the routine sla_DT, which roughly estimates ET-UT for
+*     historical epochs.
+*
+*  Called:  sla_DAT
+*
+*  P.T.Wallace   Starlink   6 December 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION UTC
+
+      DOUBLE PRECISION sla_DAT
+
+
+      sla_DTT=32.184D0+sla_DAT(UTC)
+
+      END
diff --git a/dv2tp.f b/dv2tp.f
new file mode 100644
index 0000000000000000000000000000000000000000..4a0caecb10f39bd328b3a8b78c6b81bbe221cd31
--- /dev/null
+++ b/dv2tp.f
@@ -0,0 +1,95 @@
+      SUBROUTINE sla_DV2TP (V, V0, XI, ETA, J)
+*+
+*     - - - - - -
+*      D V 2 T P
+*     - - - - - -
+*
+*  Given the direction cosines of a star and of the tangent point,
+*  determine the star's tangent-plane coordinates.
+*
+*  (double precision)
+*
+*  Given:
+*     V         d(3)    direction cosines of star
+*     V0        d(3)    direction cosines of tangent point
+*
+*  Returned:
+*     XI,ETA    d       tangent plane coordinates of star
+*     J         i       status:   0 = OK
+*                                 1 = error, star too far from axis
+*                                 2 = error, antistar on tangent plane
+*                                 3 = error, antistar too far from axis
+*
+*  Notes:
+*
+*  1  If vector V0 is not of unit length, or if vector V is of zero
+*     length, the results will be wrong.
+*
+*  2  If V0 points at a pole, the returned XI,ETA will be based on the
+*     arbitrary assumption that the RA of the tangent point is zero.
+*
+*  3  This routine is the Cartesian equivalent of the routine sla_DS2TP.
+*
+*  P.T.Wallace   Starlink   27 November 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION V(3),V0(3),XI,ETA
+      INTEGER J
+
+      DOUBLE PRECISION X,Y,Z,X0,Y0,Z0,R2,R,W,D
+
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-6)
+
+
+      X=V(1)
+      Y=V(2)
+      Z=V(3)
+      X0=V0(1)
+      Y0=V0(2)
+      Z0=V0(3)
+      R2=X0*X0+Y0*Y0
+      R=SQRT(R2)
+      IF (R.EQ.0D0) THEN
+         R=1D-20
+         X0=R
+      END IF
+      W=X*X0+Y*Y0
+      D=W+Z*Z0
+      IF (D.GT.TINY) THEN
+         J=0
+      ELSE IF (D.GE.0D0) THEN
+         J=1
+         D=TINY
+      ELSE IF (D.GT.-TINY) THEN
+         J=2
+         D=-TINY
+      ELSE
+         J=3
+      END IF
+      D=D*R
+      XI=(Y*X0-X*Y0)/D
+      ETA=(Z*R2-Z0*W)/D
+
+      END
diff --git a/dvdv.f b/dvdv.f
new file mode 100644
index 0000000000000000000000000000000000000000..b90545f03d99fa9497727afc90a48ba59a8cb512
--- /dev/null
+++ b/dvdv.f
@@ -0,0 +1,44 @@
+      DOUBLE PRECISION FUNCTION sla_DVDV (VA, VB)
+*+
+*     - - - - -
+*      D V D V
+*     - - - - -
+*
+*  Scalar product of two 3-vectors  (double precision)
+*
+*  Given:
+*      VA      dp(3)     first vector
+*      VB      dp(3)     second vector
+*
+*  The result is the scalar product VA.VB (double precision)
+*
+*  P.T.Wallace   Starlink   November 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION VA(3),VB(3)
+
+
+      sla_DVDV=VA(1)*VB(1)+VA(2)*VB(2)+VA(3)*VB(3)
+
+      END
diff --git a/dvn.f b/dvn.f
new file mode 100644
index 0000000000000000000000000000000000000000..5bfc40262799753d11b3a41b48f2244c36cc41b9
--- /dev/null
+++ b/dvn.f
@@ -0,0 +1,69 @@
+      SUBROUTINE sla_DVN (V, UV, VM)
+*+
+*     - - - -
+*      D V N
+*     - - - -
+*
+*  Normalizes a 3-vector also giving the modulus (double precision)
+*
+*  Given:
+*     V       d(3)      vector
+*
+*  Returned:
+*     UV      d(3)      unit vector in direction of V
+*     VM      d         modulus of V
+*
+*  Notes:
+*
+*  1  If the modulus of V is zero, UV is set to zero as well.
+*
+*  2  To comply with the ANSI Fortran 77 standard, V and UV must be
+*     different arrays.  However, the routine is coded so as to work
+*     properly on most platforms even if this rule is violated.
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION V(3),UV(3),VM
+
+      INTEGER I
+      DOUBLE PRECISION W1,W2
+
+
+*  Modulus.
+      W1 = 0D0
+      DO I=1,3
+         W2 = V(I)
+         W1 = W1+W2*W2
+      END DO
+      W1 = SQRT(W1)
+      VM = W1
+
+*  Normalize the vector.
+      IF (W1.LE.0D0) W1 = 1D0
+      DO I=1,3
+         UV(I) = V(I)/W1
+      END DO
+
+      END
diff --git a/dvxv.f b/dvxv.f
new file mode 100644
index 0000000000000000000000000000000000000000..1d2bafa6b05098c5ca0b63781130a4ce96ca9bcf
--- /dev/null
+++ b/dvxv.f
@@ -0,0 +1,56 @@
+      SUBROUTINE sla_DVXV (VA, VB, VC)
+*+
+*     - - - - -
+*      D V X V
+*     - - - - -
+*
+*  Vector product of two 3-vectors  (double precision)
+*
+*  Given:
+*      VA      dp(3)     first vector
+*      VB      dp(3)     second vector
+*
+*  Returned:
+*      VC      dp(3)     vector result
+*
+*  P.T.Wallace   Starlink   March 1986
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION VA(3),VB(3),VC(3)
+
+      DOUBLE PRECISION VW(3)
+      INTEGER I
+
+
+*  Form the vector product VA cross VB
+      VW(1)=VA(2)*VB(3)-VA(3)*VB(2)
+      VW(2)=VA(3)*VB(1)-VA(1)*VB(3)
+      VW(3)=VA(1)*VB(2)-VA(2)*VB(1)
+
+*  Return the result
+      DO I=1,3
+         VC(I)=VW(I)
+      END DO
+
+      END
diff --git a/e2h.f b/e2h.f
new file mode 100644
index 0000000000000000000000000000000000000000..8ae8f6e7b4af2d1af900f89bb474f57ef81c4894
--- /dev/null
+++ b/e2h.f
@@ -0,0 +1,106 @@
+      SUBROUTINE sla_E2H (HA, DEC, PHI, AZ, EL)
+*+
+*     - - - -
+*      E 2 H
+*     - - - -
+*
+*  Equatorial to horizon coordinates:  HA,Dec to Az,El
+*
+*  (single precision)
+*
+*  Given:
+*     HA      r     hour angle
+*     DEC     r     declination
+*     PHI     r     observatory latitude
+*
+*  Returned:
+*     AZ      r     azimuth
+*     EL      r     elevation
+*
+*  Notes:
+*
+*  1)  All the arguments are angles in radians.
+*
+*  2)  Azimuth is returned in the range 0-2pi;  north is zero,
+*      and east is +pi/2.  Elevation is returned in the range
+*      +/-pi/2.
+*
+*  3)  The latitude must be geodetic.  In critical applications,
+*      corrections for polar motion should be applied.
+*
+*  4)  In some applications it will be important to specify the
+*      correct type of hour angle and declination in order to
+*      produce the required type of azimuth and elevation.  In
+*      particular, it may be important to distinguish between
+*      elevation as affected by refraction, which would
+*      require the "observed" HA,Dec, and the elevation
+*      in vacuo, which would require the "topocentric" HA,Dec.
+*      If the effects of diurnal aberration can be neglected, the
+*      "apparent" HA,Dec may be used instead of the topocentric
+*      HA,Dec.
+*
+*  5)  No range checking of arguments is carried out.
+*
+*  6)  In applications which involve many such calculations, rather
+*      than calling the present routine it will be more efficient to
+*      use inline code, having previously computed fixed terms such
+*      as sine and cosine of latitude, and (for tracking a star)
+*      sine and cosine of declination.
+*
+*  P.T.Wallace   Starlink   9 July 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL HA,DEC,PHI,AZ,EL
+
+      REAL R2PI
+      PARAMETER (R2PI=6.283185307179586476925286766559)
+
+      REAL SH,CH,SD,CD,SP,CP,X,Y,Z,R,A
+
+
+*  Useful trig functions
+      SH=SIN(HA)
+      CH=COS(HA)
+      SD=SIN(DEC)
+      CD=COS(DEC)
+      SP=SIN(PHI)
+      CP=COS(PHI)
+
+*  Az,El as x,y,z
+      X=-CH*CD*SP+SD*CP
+      Y=-SH*CD
+      Z=CH*CD*CP+SD*SP
+
+*  To spherical
+      R=SQRT(X*X+Y*Y)
+      IF (R.EQ.0.0) THEN
+         A=0.0
+      ELSE
+         A=ATAN2(Y,X)
+      END IF
+      IF (A.LT.0.0) A=A+R2PI
+      AZ=A
+      EL=ATAN2(Z,R)
+
+      END
diff --git a/earth.f b/earth.f
new file mode 100644
index 0000000000000000000000000000000000000000..a434e549408d26d19295c10c9b7b87991d14f4e2
--- /dev/null
+++ b/earth.f
@@ -0,0 +1,129 @@
+      SUBROUTINE sla_EARTH (IY, ID, FD, PV)
+*+
+*     - - - - - -
+*      E A R T H
+*     - - - - - -
+*
+*  Approximate heliocentric position and velocity of the Earth
+*
+*  Given:
+*     IY       I       year
+*     ID       I       day in year (1 = Jan 1st)
+*     FD       R       fraction of day
+*
+*  Returned:
+*     PV       R(6)    Earth position & velocity vector
+*
+*  Notes:
+*
+*  1  The date and time is TDB (loosely ET) in a Julian calendar
+*     which has been aligned to the ordinary Gregorian
+*     calendar for the interval 1900 March 1 to 2100 February 28.
+*     The year and day can be obtained by calling sla_CALYD or
+*     sla_CLYD.
+*
+*  2  The Earth heliocentric 6-vector is mean equator and equinox
+*     of date.  Position part, PV(1-3), is in AU;  velocity part,
+*     PV(4-6), is in AU/sec.
+*
+*  3  Max/RMS errors 1950-2050:
+*       13/5 E-5 AU = 19200/7600 km in position
+*       47/26 E-10 AU/s = 0.0070/0.0039 km/s in speed
+*
+*  4  More accurate results are obtainable with the routines sla_EVP
+*     and sla_EPV.
+*
+*  Last revision:   5 April 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IY,ID
+      REAL FD,PV(6)
+
+      INTEGER IY4
+      REAL TWOPI,SPEED,REMB,SEMB,YI,YF,T,ELM,GAMMA,EM,ELT,EPS0,
+     :     E,ESQ,V,R,ELMM,COSELT,SINEPS,COSEPS,W1,W2,SELMM,CELMM
+
+      PARAMETER (TWOPI=6.28318530718)
+
+*  Mean orbital speed of Earth, AU/s
+      PARAMETER (SPEED=1.9913E-7)
+
+*  Mean Earth:EMB distance and speed, AU and AU/s
+      PARAMETER (REMB=3.12E-5,SEMB=8.31E-11)
+
+
+
+*  Whole years & fraction of year, and years since J1900.0
+      YI=FLOAT(IY-1900)
+      IY4=MOD(MOD(IY,4)+4,4)
+      YF=(FLOAT(4*(ID-1/(IY4+1))-IY4-2)+4.0*FD)/1461.0
+      T=YI+YF
+
+*  Geometric mean longitude of Sun
+*  (cf 4.881627938+6.283319509911*T MOD 2PI)
+      ELM=MOD(4.881628+TWOPI*YF+0.00013420*T,TWOPI)
+
+*  Mean longitude of perihelion
+      GAMMA=4.908230+3.0005E-4*T
+
+*  Mean anomaly
+      EM=ELM-GAMMA
+
+*  Mean obliquity
+      EPS0=0.40931975-2.27E-6*T
+
+*  Eccentricity
+      E=0.016751-4.2E-7*T
+      ESQ=E*E
+
+*  True anomaly
+      V=EM+2.0*E*SIN(EM)+1.25*ESQ*SIN(2.0*EM)
+
+*  True ecliptic longitude
+      ELT=V+GAMMA
+
+*  True distance
+      R=(1.0-ESQ)/(1.0+E*COS(V))
+
+*  Moon's mean longitude
+      ELMM=MOD(4.72+83.9971*T,TWOPI)
+
+*  Useful functions
+      COSELT=COS(ELT)
+      SINEPS=SIN(EPS0)
+      COSEPS=COS(EPS0)
+      W1=-R*SIN(ELT)
+      W2=-SPEED*(COSELT+E*COS(GAMMA))
+      SELMM=SIN(ELMM)
+      CELMM=COS(ELMM)
+
+*  Earth position and velocity
+      PV(1)=-R*COSELT-REMB*CELMM
+      PV(2)=(W1-REMB*SELMM)*COSEPS
+      PV(3)=W1*SINEPS
+      PV(4)=SPEED*(SIN(ELT)+E*SIN(GAMMA))+SEMB*SELMM
+      PV(5)=(W2-SEMB*CELMM)*COSEPS
+      PV(6)=W2*SINEPS
+
+      END
diff --git a/ecleq.f b/ecleq.f
new file mode 100644
index 0000000000000000000000000000000000000000..a5e8ae10b39a3daa6042b084e1b60197016d6b14
--- /dev/null
+++ b/ecleq.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_ECLEQ (DL, DB, DATE, DR, DD)
+*+
+*     - - - - - -
+*      E C L E Q
+*     - - - - - -
+*
+*  Transformation from ecliptic coordinates to
+*  J2000.0 equatorial coordinates (double precision)
+*
+*  Given:
+*     DL,DB       dp      ecliptic longitude and latitude
+*                           (mean of date, IAU 1980 theory, radians)
+*     DATE        dp      TDB (loosely ET) as Modified Julian Date
+*                                              (JD-2400000.5)
+*  Returned:
+*     DR,DD       dp      J2000.0 mean RA,Dec (radians)
+*
+*  Called:
+*     sla_DCS2C, sla_ECMAT, sla_DIMXV, sla_PREC, sla_EPJ, sla_DCC2S,
+*     sla_DRANRM, sla_DRANGE
+*
+*  P.T.Wallace   Starlink   March 1986
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DL,DB,DATE,DR,DD
+
+      DOUBLE PRECISION sla_EPJ,sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION RMAT(3,3),V1(3),V2(3)
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DL,DB,V1)
+
+*  Ecliptic to equatorial
+      CALL sla_ECMAT(DATE,RMAT)
+      CALL sla_DIMXV(RMAT,V1,V2)
+
+*  Mean of date to J2000
+      CALL sla_PREC(2000D0,sla_EPJ(DATE),RMAT)
+      CALL sla_DIMXV(RMAT,V2,V1)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V1,DR,DD)
+
+*  Express in conventional ranges
+      DR=sla_DRANRM(DR)
+      DD=sla_DRANGE(DD)
+
+      END
diff --git a/ecmat.f b/ecmat.f
new file mode 100644
index 0000000000000000000000000000000000000000..b30bee591b53f2762d9b2033f856a1344cd566fb
--- /dev/null
+++ b/ecmat.f
@@ -0,0 +1,69 @@
+      SUBROUTINE sla_ECMAT (DATE, RMAT)
+*+
+*     - - - - - -
+*      E C M A T
+*     - - - - - -
+*
+*  Form the equatorial to ecliptic rotation matrix - IAU 1980 theory
+*  (double precision)
+*
+*  Given:
+*     DATE     dp         TDB (loosely ET) as Modified Julian Date
+*                                            (JD-2400000.5)
+*  Returned:
+*     RMAT     dp(3,3)    matrix
+*
+*  Reference:
+*     Murray,C.A., Vectorial Astrometry, section 4.3.
+*
+*  Note:
+*    The matrix is in the sense   V(ecl)  =  RMAT * V(equ);  the
+*    equator, equinox and ecliptic are mean of date.
+*
+*  Called:  sla_DEULER
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,RMAT(3,3)
+
+*  Arc seconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+      DOUBLE PRECISION T,EPS0
+
+
+
+*  Interval between basic epoch J2000.0 and current epoch (JC)
+      T = (DATE-51544.5D0)/36525D0
+
+*  Mean obliquity
+      EPS0 = AS2R*
+     :   (84381.448D0+(-46.8150D0+(-0.00059D0+0.001813D0*T)*T)*T)
+
+*  Matrix
+      CALL sla_DEULER('X',EPS0,0D0,0D0,RMAT)
+
+      END
diff --git a/ecor.f b/ecor.f
new file mode 100644
index 0000000000000000000000000000000000000000..4bc55554c08e7c3687ab6bf99fec6891177499b2
--- /dev/null
+++ b/ecor.f
@@ -0,0 +1,95 @@
+      SUBROUTINE sla_ECOR (RM, DM, IY, ID, FD, RV, TL)
+*+
+*     - - - - -
+*      E C O R
+*     - - - - -
+*
+*  Component of Earth orbit velocity and heliocentric
+*  light time in a given direction (single precision)
+*
+*  Given:
+*     RM,DM    real    mean RA, Dec of date (radians)
+*     IY       int     year
+*     ID       int     day in year (1 = Jan 1st)
+*     FD       real    fraction of day
+*
+*  Returned:
+*     RV       real    component of Earth orbital velocity (km/sec)
+*     TL       real    component of heliocentric light time (sec)
+*
+*  Notes:
+*
+*  1  The date and time is TDB (loosely ET) in a Julian calendar
+*     which has been aligned to the ordinary Gregorian
+*     calendar for the interval 1900 March 1 to 2100 February 28.
+*     The year and day can be obtained by calling sla_CALYD or
+*     sla_CLYD.
+*
+*  2  Sign convention:
+*
+*     The velocity component is +ve when the Earth is receding from
+*     the given point on the sky.  The light time component is +ve
+*     when the Earth lies between the Sun and the given point on
+*     the sky.
+*
+*  3  Accuracy:
+*
+*     The velocity component is usually within 0.004 km/s of the
+*     correct value and is never in error by more than 0.007 km/s.
+*     The error in light time correction is about 0.03s at worst,
+*     but is usually better than 0.01s. For applications requiring
+*     higher accuracy, see the sla_EVP and sla_EPV routines.
+*
+*  Called:  sla_EARTH, sla_CS2C, sla_VDV
+*
+*  Last revision:   5 April 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL RM,DM
+      INTEGER IY,ID
+      REAL FD,RV,TL
+
+      REAL sla_VDV
+
+      REAL PV(6),V(3),AUKM,AUSEC
+
+*  AU to km and light sec (1985 Almanac)
+      PARAMETER (AUKM=1.4959787066E8,
+     :           AUSEC=499.0047837)
+
+
+
+*  Sun:Earth position & velocity vector
+      CALL sla_EARTH(IY,ID,FD,PV)
+
+*  Star position vector
+      CALL sla_CS2C(RM,DM,V)
+
+*  Velocity component
+      RV=-AUKM*sla_VDV(PV(4),V)
+
+*  Light time component
+      TL=AUSEC*sla_VDV(PV(1),V)
+
+      END
diff --git a/eg50.f b/eg50.f
new file mode 100644
index 0000000000000000000000000000000000000000..d03ce728ef714c13ae7c9d39968a5a13747d1c1c
--- /dev/null
+++ b/eg50.f
@@ -0,0 +1,107 @@
+      SUBROUTINE sla_EG50 (DR, DD, DL, DB)
+*+
+*     - - - - -
+*      E G 5 0
+*     - - - - -
+*
+*  Transformation from B1950.0 'FK4' equatorial coordinates to
+*  IAU 1958 galactic coordinates (double precision)
+*
+*  Given:
+*     DR,DD       dp       B1950.0 'FK4' RA,Dec
+*
+*  Returned:
+*     DL,DB       dp       galactic longitude and latitude L2,B2
+*
+*  (all arguments are radians)
+*
+*  Called:
+*     sla_DCS2C, sla_DMXV, sla_DCC2S, sla_SUBET, sla_DRANRM, sla_DRANGE
+*
+*  Note:
+*     The equatorial coordinates are B1950.0 'FK4'.  Use the
+*     routine sla_EQGAL if conversion from J2000.0 coordinates
+*     is required.
+*
+*  Reference:
+*     Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+*
+*  P.T.Wallace   Starlink   5 September 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DR,DD,DL,DB
+
+      DOUBLE PRECISION sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION V1(3),V2(3),R,D
+
+*
+*  L2,B2 system of galactic coordinates
+*
+*  P = 192.25       RA of galactic north pole (mean B1950.0)
+*  Q =  62.6        inclination of galactic to mean B1950.0 equator
+*  R =  33          longitude of ascending node
+*
+*  P,Q,R are degrees
+*
+*
+*  Equatorial to galactic rotation matrix
+*
+*  The Euler angles are P, Q, 90-R, about the z then y then
+*  z axes.
+*
+*         +CP.CQ.SR-SP.CR     +SP.CQ.SR+CP.CR     -SQ.SR
+*
+*         -CP.CQ.CR-SP.SR     -SP.CQ.CR+CP.SR     +SQ.CR
+*
+*         +CP.SQ              +SP.SQ              +CQ
+*
+
+      DOUBLE PRECISION RMAT(3,3)
+      DATA RMAT(1,1),RMAT(1,2),RMAT(1,3),
+     :     RMAT(2,1),RMAT(2,2),RMAT(2,3),
+     :     RMAT(3,1),RMAT(3,2),RMAT(3,3) /
+     : -0.066988739415D0,-0.872755765852D0,-0.483538914632D0,
+     : +0.492728466075D0,-0.450346958020D0,+0.744584633283D0,
+     : -0.867600811151D0,-0.188374601723D0,+0.460199784784D0 /
+
+
+
+*  Remove E-terms
+      CALL sla_SUBET(DR,DD,1950D0,R,D)
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(R,D,V1)
+
+*  Rotate to galactic
+      CALL sla_DMXV(RMAT,V1,V2)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V2,DL,DB)
+
+*  Express angles in conventional ranges
+      DL=sla_DRANRM(DL)
+      DB=sla_DRANGE(DB)
+
+      END
diff --git a/el2ue.f b/el2ue.f
new file mode 100644
index 0000000000000000000000000000000000000000..8d3925a02db6870e33eef4e87c52d0604a8679ea
--- /dev/null
+++ b/el2ue.f
@@ -0,0 +1,328 @@
+      SUBROUTINE sla_EL2UE (DATE, JFORM, EPOCH, ORBINC, ANODE,
+     :                      PERIH, AORQ, E, AORL, DM,
+     :                      U, JSTAT)
+*+
+*     - - - - - -
+*      E L 2 U E
+*     - - - - - -
+*
+*  Transform conventional osculating orbital elements into "universal"
+*  form.
+*
+*  Given:
+*     DATE    d      epoch (TT MJD) of osculation (Note 3)
+*     JFORM   i      choice of element set (1-3, Note 6)
+*     EPOCH   d      epoch (TT MJD) of the elements
+*     ORBINC  d      inclination (radians)
+*     ANODE   d      longitude of the ascending node (radians)
+*     PERIH   d      longitude or argument of perihelion (radians)
+*     AORQ    d      mean distance or perihelion distance (AU)
+*     E       d      eccentricity
+*     AORL    d      mean anomaly or longitude (radians, JFORM=1,2 only)
+*     DM      d      daily motion (radians, JFORM=1 only)
+*
+*  Returned:
+*     U       d(13)  universal orbital elements (Note 1)
+*
+*               (1)  combined mass (M+m)
+*               (2)  total energy of the orbit (alpha)
+*               (3)  reference (osculating) epoch (t0)
+*             (4-6)  position at reference epoch (r0)
+*             (7-9)  velocity at reference epoch (v0)
+*              (10)  heliocentric distance at reference epoch
+*              (11)  r0.v0
+*              (12)  date (t)
+*              (13)  universal eccentric anomaly (psi) of date, approx
+*
+*     JSTAT   i      status:  0 = OK
+*                            -1 = illegal JFORM
+*                            -2 = illegal E
+*                            -3 = illegal AORQ
+*                            -4 = illegal DM
+*                            -5 = numerical error
+*
+*  Called:  sla_UE2PV, sla_PV2UE
+*
+*  Notes
+*
+*  1  The "universal" elements are those which define the orbit for the
+*     purposes of the method of universal variables (see reference).
+*     They consist of the combined mass of the two bodies, an epoch,
+*     and the position and velocity vectors (arbitrary reference frame)
+*     at that epoch.  The parameter set used here includes also various
+*     quantities that can, in fact, be derived from the other
+*     information.  This approach is taken to avoiding unnecessary
+*     computation and loss of accuracy.  The supplementary quantities
+*     are (i) alpha, which is proportional to the total energy of the
+*     orbit, (ii) the heliocentric distance at epoch, (iii) the
+*     outwards component of the velocity at the given epoch, (iv) an
+*     estimate of psi, the "universal eccentric anomaly" at a given
+*     date and (v) that date.
+*
+*  2  The companion routine is sla_UE2PV.  This takes the set of numbers
+*     that the present routine outputs and uses them to derive the
+*     object's position and velocity.  A single prediction requires one
+*     call to the present routine followed by one call to sla_UE2PV;
+*     for convenience, the two calls are packaged as the routine
+*     sla_PLANEL.  Multiple predictions may be made by again calling the
+*     present routine once, but then calling sla_UE2PV multiple times,
+*     which is faster than multiple calls to sla_PLANEL.
+*
+*  3  DATE is the epoch of osculation.  It is in the TT timescale
+*     (formerly Ephemeris Time, ET) and is a Modified Julian Date
+*     (JD-2400000.5).
+*
+*  4  The supplied orbital elements are with respect to the J2000
+*     ecliptic and equinox.  The position and velocity parameters
+*     returned in the array U are with respect to the mean equator and
+*     equinox of epoch J2000, and are for the perihelion prior to the
+*     specified epoch.
+*
+*  5  The universal elements returned in the array U are in canonical
+*     units (solar masses, AU and canonical days).
+*
+*  6  Three different element-format options are available:
+*
+*     Option JFORM=1, suitable for the major planets:
+*
+*     EPOCH  = epoch of elements (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = longitude of perihelion, curly pi (radians)
+*     AORQ   = mean distance, a (AU)
+*     E      = eccentricity, e (range 0 to <1)
+*     AORL   = mean longitude L (radians)
+*     DM     = daily motion (radians)
+*
+*     Option JFORM=2, suitable for minor planets:
+*
+*     EPOCH  = epoch of elements (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = argument of perihelion, little omega (radians)
+*     AORQ   = mean distance, a (AU)
+*     E      = eccentricity, e (range 0 to <1)
+*     AORL   = mean anomaly M (radians)
+*
+*     Option JFORM=3, suitable for comets:
+*
+*     EPOCH  = epoch of perihelion (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = argument of perihelion, little omega (radians)
+*     AORQ   = perihelion distance, q (AU)
+*     E      = eccentricity, e (range 0 to 10)
+*
+*  7  Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are
+*     not accessed.
+*
+*  8  The algorithm was originally adapted from the EPHSLA program of
+*     D.H.P.Jones (private communication, 1996).  The method is based
+*     on Stumpff's Universal Variables.
+*
+*  Reference:  Everhart & Pitkin, Am.J.Phys. 51, 712 (1983).
+*
+*  Last revision:   8 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+      INTEGER JFORM
+      DOUBLE PRECISION EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM,U(13)
+      INTEGER JSTAT
+
+*  Gaussian gravitational constant (exact)
+      DOUBLE PRECISION GCON
+      PARAMETER (GCON=0.01720209895D0)
+
+*  Sin and cos of J2000 mean obliquity (IAU 1976)
+      DOUBLE PRECISION SE,CE
+      PARAMETER (SE=0.3977771559319137D0,
+     :           CE=0.9174820620691818D0)
+
+      INTEGER J
+
+      DOUBLE PRECISION PHT,ARGPH,Q,W,CM,ALPHA,PHS,SW,CW,SI,CI,SO,CO,
+     :                 X,Y,Z,PX,PY,PZ,VX,VY,VZ,DT,FC,FP,PSI,
+     :                 UL(13),PV(6)
+
+
+
+*  Validate arguments.
+      IF (JFORM.LT.1.OR.JFORM.GT.3) THEN
+         JSTAT = -1
+         GO TO 9999
+      END IF
+      IF (E.LT.0D0.OR.E.GT.10D0.OR.(E.GE.1D0.AND.JFORM.NE.3)) THEN
+         JSTAT = -2
+         GO TO 9999
+      END IF
+      IF (AORQ.LE.0D0) THEN
+         JSTAT = -3
+         GO TO 9999
+      END IF
+      IF (JFORM.EQ.1.AND.DM.LE.0D0) THEN
+         JSTAT = -4
+         GO TO 9999
+      END IF
+
+*
+*  Transform elements into standard form:
+*
+*  PHT   = epoch of perihelion passage
+*  ARGPH = argument of perihelion (little omega)
+*  Q     = perihelion distance (q)
+*  CM    = combined mass, M+m (mu)
+
+      IF (JFORM.EQ.1) THEN
+
+*     Major planet.
+         PHT = EPOCH-(AORL-PERIH)/DM
+         ARGPH = PERIH-ANODE
+         Q = AORQ*(1D0-E)
+         W = DM/GCON
+         CM = W*W*AORQ*AORQ*AORQ
+
+      ELSE IF (JFORM.EQ.2) THEN
+
+*     Minor planet.
+         PHT = EPOCH-AORL*SQRT(AORQ*AORQ*AORQ)/GCON
+         ARGPH = PERIH
+         Q = AORQ*(1D0-E)
+         CM = 1D0
+
+      ELSE
+
+*     Comet.
+         PHT = EPOCH
+         ARGPH = PERIH
+         Q = AORQ
+         CM = 1D0
+
+      END IF
+
+*  The universal variable alpha.  This is proportional to the total
+*  energy of the orbit:  -ve for an ellipse, zero for a parabola,
+*  +ve for a hyperbola.
+
+      ALPHA = CM*(E-1D0)/Q
+
+*  Speed at perihelion.
+
+      PHS = SQRT(ALPHA+2D0*CM/Q)
+
+*  In a Cartesian coordinate system which has the x-axis pointing
+*  to perihelion and the z-axis normal to the orbit (such that the
+*  object orbits counter-clockwise as seen from +ve z), the
+*  perihelion position and velocity vectors are:
+*
+*    position   [Q,0,0]
+*    velocity   [0,PHS,0]
+*
+*  To express the results in J2000 equatorial coordinates we make a
+*  series of four rotations of the Cartesian axes:
+*
+*           axis      Euler angle
+*
+*     1      z        argument of perihelion (little omega)
+*     2      x        inclination (i)
+*     3      z        longitude of the ascending node (big omega)
+*     4      x        J2000 obliquity (epsilon)
+*
+*  In each case the rotation is clockwise as seen from the +ve end of
+*  the axis concerned.
+
+*  Functions of the Euler angles.
+      SW = SIN(ARGPH)
+      CW = COS(ARGPH)
+      SI = SIN(ORBINC)
+      CI = COS(ORBINC)
+      SO = SIN(ANODE)
+      CO = COS(ANODE)
+
+*  Position at perihelion (AU).
+      X = Q*CW
+      Y = Q*SW
+      Z = Y*SI
+      Y = Y*CI
+      PX = X*CO-Y*SO
+      Y = X*SO+Y*CO
+      PY = Y*CE-Z*SE
+      PZ = Y*SE+Z*CE
+
+*  Velocity at perihelion (AU per canonical day).
+      X = -PHS*SW
+      Y = PHS*CW
+      Z = Y*SI
+      Y = Y*CI
+      VX = X*CO-Y*SO
+      Y = X*SO+Y*CO
+      VY = Y*CE-Z*SE
+      VZ = Y*SE+Z*CE
+
+*  Time from perihelion to date (in Canonical Days: a canonical day
+*  is 58.1324409... days, defined as 1/GCON).
+
+      DT = (DATE-PHT)*GCON
+
+*  First approximation to the Universal Eccentric Anomaly, PSI,
+*  based on the circle (FC) and parabola (FP) values.
+
+      FC = DT/Q
+      W = (3D0*DT+SQRT(9D0*DT*DT+8D0*Q*Q*Q))**(1D0/3D0)
+      FP = W-2D0*Q/W
+      PSI = (1D0-E)*FC+E*FP
+
+*  Assemble local copy of element set.
+      UL(1) = CM
+      UL(2) = ALPHA
+      UL(3) = PHT
+      UL(4) = PX
+      UL(5) = PY
+      UL(6) = PZ
+      UL(7) = VX
+      UL(8) = VY
+      UL(9) = VZ
+      UL(10) = Q
+      UL(11) = 0D0
+      UL(12) = DATE
+      UL(13) = PSI
+
+*  Predict position+velocity at epoch of osculation.
+      CALL sla_UE2PV(DATE,UL,PV,J)
+      IF (J.NE.0) GO TO 9010
+
+*  Convert back to universal elements.
+      CALL sla_PV2UE(PV,DATE,CM-1D0,U,J)
+      IF (J.NE.0) GO TO 9010
+
+*  OK exit.
+      JSTAT = 0
+      GO TO 9999
+
+*  Quasi-impossible numerical errors.
+ 9010 CONTINUE
+      JSTAT = -5
+
+ 9999 CONTINUE
+      END
diff --git a/epb.f b/epb.f
new file mode 100644
index 0000000000000000000000000000000000000000..29db30ef01da260c8e565248f330627df5afc611
--- /dev/null
+++ b/epb.f
@@ -0,0 +1,47 @@
+      DOUBLE PRECISION FUNCTION sla_EPB (DATE)
+*+
+*     - - - -
+*      E P B
+*     - - - -
+*
+*  Conversion of Modified Julian Date to Besselian Epoch
+*  (double precision)
+*
+*  Given:
+*     DATE     dp       Modified Julian Date (JD - 2400000.5)
+*
+*  The result is the Besselian Epoch.
+*
+*  Reference:
+*     Lieske,J.H., 1979. Astron.Astrophys.,73,282.
+*
+*  P.T.Wallace   Starlink   February 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+
+
+      sla_EPB = 1900D0 + (DATE-15019.81352D0)/365.242198781D0
+
+      END
diff --git a/epb2d.f b/epb2d.f
new file mode 100644
index 0000000000000000000000000000000000000000..13b3e031d0968af225f478a08be92fc751da8c89
--- /dev/null
+++ b/epb2d.f
@@ -0,0 +1,47 @@
+      DOUBLE PRECISION FUNCTION sla_EPB2D (EPB)
+*+
+*     - - - - - -
+*      E P B 2 D
+*     - - - - - -
+*
+*  Conversion of Besselian Epoch to Modified Julian Date
+*  (double precision)
+*
+*  Given:
+*     EPB      dp       Besselian Epoch
+*
+*  The result is the Modified Julian Date (JD - 2400000.5).
+*
+*  Reference:
+*     Lieske,J.H., 1979. Astron.Astrophys.,73,282.
+*
+*  P.T.Wallace   Starlink   February 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EPB
+
+
+      sla_EPB2D = 15019.81352D0 + (EPB-1900D0)*365.242198781D0
+
+      END
diff --git a/epco.f b/epco.f
new file mode 100644
index 0000000000000000000000000000000000000000..f3e5e82e686c35b4aaa4fed4ce1f7f756e95b365
--- /dev/null
+++ b/epco.f
@@ -0,0 +1,68 @@
+      DOUBLE PRECISION FUNCTION sla_EPCO (K0, K, E)
+*+
+*     - - - - -
+*      E P C O
+*     - - - - -
+*
+*  Convert an epoch into the appropriate form - 'B' or 'J'
+*
+*  Given:
+*     K0    char    form of result:  'B'=Besselian, 'J'=Julian
+*     K     char    form of given epoch:  'B' or 'J'
+*     E     dp      epoch
+*
+*  Called:  sla_EPB, sla_EPJ2D, sla_EPJ, sla_EPB2D
+*
+*  Notes:
+*
+*     1) The result is always either equal to or very close to
+*        the given epoch E.  The routine is required only in
+*        applications where punctilious treatment of heterogeneous
+*        mixtures of star positions is necessary.
+*
+*     2) K0 and K are not validated.  They are interpreted as follows:
+*
+*        o  If K0 and K are the same the result is E.
+*        o  If K0 is 'B' or 'b' and K isn't, the conversion is J to B.
+*        o  In all other cases, the conversion is B to J.
+*
+*        Note that K0 and K won't match if their cases differ.
+*
+*  P.T.Wallace   Starlink   5 September 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) K0,K
+      DOUBLE PRECISION E
+      DOUBLE PRECISION sla_EPB,sla_EPJ2D,sla_EPJ,sla_EPB2D
+
+
+      IF (K.EQ.K0) THEN
+         sla_EPCO=E
+      ELSE IF (K0.EQ.'B'.OR.K0.EQ.'b') THEN
+         sla_EPCO=sla_EPB(sla_EPJ2D(E))
+      ELSE
+         sla_EPCO=sla_EPJ(sla_EPB2D(E))
+      END IF
+
+      END
diff --git a/epj.f b/epj.f
new file mode 100644
index 0000000000000000000000000000000000000000..7cffaf9059a817eda44fcc7a0ece959d17071a8b
--- /dev/null
+++ b/epj.f
@@ -0,0 +1,46 @@
+      DOUBLE PRECISION FUNCTION sla_EPJ (DATE)
+*+
+*     - - - -
+*      E P J
+*     - - - -
+*
+*  Conversion of Modified Julian Date to Julian Epoch (double precision)
+*
+*  Given:
+*     DATE     dp       Modified Julian Date (JD - 2400000.5)
+*
+*  The result is the Julian Epoch.
+*
+*  Reference:
+*     Lieske,J.H., 1979. Astron.Astrophys.,73,282.
+*
+*  P.T.Wallace   Starlink   February 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+
+
+      sla_EPJ = 2000D0 + (DATE-51544.5D0)/365.25D0
+
+      END
diff --git a/epj2d.f b/epj2d.f
new file mode 100644
index 0000000000000000000000000000000000000000..b2683a030289b2cb39de642a07e3b7727f3a6e6d
--- /dev/null
+++ b/epj2d.f
@@ -0,0 +1,46 @@
+      DOUBLE PRECISION FUNCTION sla_EPJ2D (EPJ)
+*+
+*     - - - - - -
+*      E P J 2 D
+*     - - - - - -
+*
+*  Conversion of Julian Epoch to Modified Julian Date (double precision)
+*
+*  Given:
+*     EPJ      dp       Julian Epoch
+*
+*  The result is the Modified Julian Date (JD - 2400000.5).
+*
+*  Reference:
+*     Lieske,J.H., 1979. Astron.Astrophys.,73,282.
+*
+*  P.T.Wallace   Starlink   February 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EPJ
+
+
+      sla_EPJ2D = 51544.5D0 + (EPJ-2000D0)*365.25D0
+
+      END
diff --git a/epv.f b/epv.f
new file mode 100644
index 0000000000000000000000000000000000000000..95ab788a82d9ea8779abf0c5af18074f2aa11ebf
--- /dev/null
+++ b/epv.f
@@ -0,0 +1,2508 @@
+      SUBROUTINE sla_EPV ( DATE, PH, VH, PB, VB )
+*+
+*  - - - -
+*   E P V
+*  - - - -
+*
+*  Earth position and velocity, heliocentric and barycentric, with
+*  respect to the Barycentric Celestial Reference System.
+*
+*  Given:
+*     DATE      d         date, TDB Modified Julian Date (Note 1)
+*
+*  Returned:
+*     PH        d(3)      heliocentric Earth position (AU)
+*     VH        d(3)      heliocentric Earth velocity (AU,AU/day)
+*     PB        d(3)      barycentric Earth position (AU)
+*     VB        d(3)      barycentric Earth velocity (AU/day)
+*
+*  Notes:
+*
+*  1) The date is TDB as an MJD (=JD-2400000.5).  TT can be used instead
+*     of TDB in most applications.
+*
+*  2) On return, the arrays PH, VH, PV, PB contain the following:
+*
+*        PH(1)    x       }
+*        PH(2)    y       } heliocentric position, AU
+*        PH(3)    z       }
+*
+*        VH(1)    xdot    }
+*        VH(2)    ydot    } heliocentric velocity, AU/d
+*        VH(3)    zdot    }
+*
+*        PB(1)    x       }
+*        PB(2)    y       } barycentric position, AU
+*        PB(3)    z       }
+*
+*        VB(1)    xdot    }
+*        VB(2)    ydot    } barycentric velocity, AU/d
+*        VB(3)    zdot    }
+*
+*     The vectors are with respect to the Barycentric Celestial
+*     Reference System (BCRS); velocities are in AU per TDB day.
+*
+*  3) The routine is a SIMPLIFIED SOLUTION from the planetary theory
+*     VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics &
+*     Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original
+*     Fortran code supplied by P. Bretagnon (private comm., 2000).
+*
+*  4) Comparisons over the time span 1900-2100 with this simplified
+*     solution and the JPL DE405 ephemeris give the following results:
+*
+*                                RMS    max
+*           Heliocentric:
+*              position error    3.7   11.2   km
+*              velocity error    1.4    5.0   mm/s
+*
+*           Barycentric:
+*              position error    4.6   13.4   km
+*              velocity error    1.4    4.9   mm/s
+*
+*     The results deteriorate outside this time span.
+*
+*  5) The routine sla_EVP is faster but less accurate.  The present
+*     routine targets the case where high accuracy is more important
+*     than CPU time, yet the extra complication of reading a pre-
+*     computed ephemeris is not justified.
+*
+*  Last revision:   7 April 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-----------------------------------------------------------------------
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE, PH(3), VH(3), PB(3), VB(3)
+
+      DOUBLE PRECISION T, T2, XYZ, XYZD, A, B, C, CT, P, CP,
+     :                 HP(3), HV(3), BP(3), BV(3), X, Y, Z
+
+      INTEGER I, J, K
+
+*  Days per Julian year
+      DOUBLE PRECISION DJY
+      PARAMETER ( DJY = 365.25D0 )
+
+*  Reference epoch (J2000), MJD
+      DOUBLE PRECISION DJM0
+      PARAMETER ( DJM0 = 51544.5D0 )
+*
+*  Matrix elements for orienting the analytical model to DE405/ICRF.
+*
+*  The corresponding Euler angles are:
+*
+*                        d  '  "
+*    1st rotation    -  23 26 21.4091 about the x-axis  (obliquity)
+*    2nd rotation    +         0.0475 about the z-axis  (RA offset)
+*
+*  These were obtained empirically, by comparisons with DE405 over
+*  1900-2100.
+*
+      DOUBLE PRECISION AM12, AM13, AM21, AM22, AM23, AM32, AM33
+      PARAMETER ( AM12 = +0.000000211284D0,
+     :            AM13 = -0.000000091603D0,
+     :            AM21 = -0.000000230286D0,
+     :            AM22 = +0.917482137087D0,
+     :            AM23 = -0.397776982902D0,
+     :            AM32 = +0.397776982902D0,
+     :            AM33 = +0.917482137087D0 )
+
+*  ----------------------
+*  Ephemeris Coefficients
+*  ----------------------
+*
+*  The coefficients are stored in arrays of dimension (3,n,3).  There
+*  are separate sets of arrays for (i) the Sun to Earth vector and
+*  (ii) the Solar-System barycenter to Sun vector.  Each of these two
+*  sets contains separate arrays for the terms (n in number) in each
+*  power of time (in Julian years since J2000): T^0, T^1 and T^2.
+*  Within each array, all the Cartesian x-components, elements (i,j,1),
+*  appear first, followed by all the y-components, elements (i,j,2) and
+*  finally all the z-components, elements (i,j,3).  At the lowest level
+*  are groups of three coefficients.  The first coefficient in each
+*  group, element (1,j,k), is the amplitude of the term, the second,
+*  element (2,j,k), is the phase and the third, element (3,j,k), is the
+*  frequency.
+*
+*  The naming scheme is such that a block
+*
+*     DOUBLE PRECISION bn(3,Mbn,3)
+*
+*  applies to body b and time exponent n:
+*
+*    . b can be either E (Earth with respect to Sun) or S (Sun with
+*      respect to Solar-System Barycenter)
+*
+*    . n can be 0, 1 or 2, for T^0, T^1 or T^2
+*
+*  For example, array E2(3,ME2,3) contains the coefficients for
+*  the T^2 terms for the Sun-to-Earth vector.
+*
+*  There is no requirement for the X, Y and Z models for a particular
+*  block to use the same number of coefficients.  The number actually
+*  used is parameterized, the number of terms being used called NbnX,
+*  NbnY, and NbnZ respectively.  The parameter Mbn is the biggest of
+*  the three, and defines the array size.  Unused elements are not
+*  initialized and are never accessed.
+*
+
+      INTEGER NE0(3), NE0X, NE0Y, NE0Z, ME0,
+     :        NE1(3), NE1X, NE1Y, NE1Z, ME1,
+     :        NE2(3), NE2X, NE2Y, NE2Z, ME2,
+     :        NS0(3), NS0X, NS0Y, NS0Z, MS0,
+     :        NS1(3), NS1X, NS1Y, NS1Z, MS1,
+     :        NS2(3), NS2X, NS2Y, NS2Z, MS2
+
+      PARAMETER ( NE0X = 501, NE0Y = 501, NE0Z = 137, ME0 = NE0X,
+     :            NE1X =  79, NE1Y =  80, NE1Z =  12, ME1 = NE1Y,
+     :            NE2X =   5, NE2Y =   5, NE2Z =   3, ME2 = NE2X,
+     :            NS0X = 212, NS0Y = 213, NS0Z =  69, MS0 = NS0Y,
+     :            NS1X =  50, NS1Y =  50, NS1Z =  14, MS1 = NS1X,
+     :            NS2X =   9, NS2Y =   9, NS2Z =   2, MS2 = NS2X )
+
+      DOUBLE PRECISION E0(3,ME0,3), E1(3,ME1,3), E2(3,ME2,3),
+     :                 S0(3,MS0,3), S1(3,MS1,3), S2(3,MS2,3)
+
+      DATA NE0 / NE0X, NE0Y, NE0Z /
+      DATA NE1 / NE1X, NE1Y, NE1Z /
+      DATA NE2 / NE2X, NE2Y, NE2Z /
+      DATA NS0 / NS0X, NS0Y, NS0Z /
+      DATA NS1 / NS1X, NS1Y, NS1Z /
+      DATA NS2 / NS2X, NS2Y, NS2Z /
+
+*  Sun-to-Earth, T^0, X
+      DATA ((E0(I,J,1),I=1,3),J=  1, 10) /
+     :  0.9998292878132D+00, 0.1753485171504D+01, 0.6283075850446D+01,
+     :  0.8352579567414D-02, 0.1710344404582D+01, 0.1256615170089D+02,
+     :  0.5611445335148D-02, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.1046664295572D-03, 0.1667225416770D+01, 0.1884922755134D+02,
+     :  0.3110842534677D-04, 0.6687513390251D+00, 0.8399684731857D+02,
+     :  0.2552413503550D-04, 0.5830637358413D+00, 0.5296909721118D+00,
+     :  0.2137207845781D-04, 0.1092330954011D+01, 0.1577343543434D+01,
+     :  0.1680240182951D-04, 0.4955366134987D+00, 0.6279552690824D+01,
+     :  0.1679012370795D-04, 0.6153014091901D+01, 0.6286599010068D+01,
+     :  0.1445526946777D-04, 0.3472744100492D+01, 0.2352866153506D+01 /
+      DATA ((E0(I,J,1),I=1,3),J= 11, 20) /
+     :  0.1091038246184D-04, 0.3689845786119D+01, 0.5223693906222D+01,
+     :  0.9344399733932D-05, 0.6073934645672D+01, 0.1203646072878D+02,
+     :  0.8993182910652D-05, 0.3175705249069D+01, 0.1021328554739D+02,
+     :  0.5665546034116D-05, 0.2152484672246D+01, 0.1059381944224D+01,
+     :  0.6844146703035D-05, 0.1306964099750D+01, 0.5753384878334D+01,
+     :  0.7346610905565D-05, 0.4354980070466D+01, 0.3981490189893D+00,
+     :  0.6815396474414D-05, 0.2218229211267D+01, 0.4705732307012D+01,
+     :  0.6112787253053D-05, 0.5384788425458D+01, 0.6812766822558D+01,
+     :  0.4518120711239D-05, 0.6087604012291D+01, 0.5884926831456D+01,
+     :  0.4521963430706D-05, 0.1279424524906D+01, 0.6256777527156D+01 /
+      DATA ((E0(I,J,1),I=1,3),J= 21, 30) /
+     :  0.4497426764085D-05, 0.5369129144266D+01, 0.6309374173736D+01,
+     :  0.4062190566959D-05, 0.5436473303367D+00, 0.6681224869435D+01,
+     :  0.5412193480192D-05, 0.7867838528395D+00, 0.7755226100720D+00,
+     :  0.5469839049386D-05, 0.1461440311134D+01, 0.1414349524433D+02,
+     :  0.5205264083477D-05, 0.4432944696116D+01, 0.7860419393880D+01,
+     :  0.2149759935455D-05, 0.4502237496846D+01, 0.1150676975667D+02,
+     :  0.2279109618501D-05, 0.1239441308815D+01, 0.7058598460518D+01,
+     :  0.2259282939683D-05, 0.3272430985331D+01, 0.4694002934110D+01,
+     :  0.2558950271319D-05, 0.2265471086404D+01, 0.1216800268190D+02,
+     :  0.2561581447555D-05, 0.1454740653245D+01, 0.7099330490126D+00 /
+      DATA ((E0(I,J,1),I=1,3),J= 31, 40) /
+     :  0.1781441115440D-05, 0.2962068630206D+01, 0.7962980379786D+00,
+     :  0.1612005874644D-05, 0.1473255041006D+01, 0.5486777812467D+01,
+     :  0.1818630667105D-05, 0.3743903293447D+00, 0.6283008715021D+01,
+     :  0.1818601377529D-05, 0.6274174354554D+01, 0.6283142985870D+01,
+     :  0.1554475925257D-05, 0.1624110906816D+01, 0.2513230340178D+02,
+     :  0.2090948029241D-05, 0.5852052276256D+01, 0.1179062909082D+02,
+     :  0.2000176345460D-05, 0.4072093298513D+01, 0.1778984560711D+02,
+     :  0.1289535917759D-05, 0.5217019331069D+01, 0.7079373888424D+01,
+     :  0.1281135307881D-05, 0.4802054538934D+01, 0.3738761453707D+01,
+     :  0.1518229005692D-05, 0.8691914742502D+00, 0.2132990797783D+00 /
+      DATA ((E0(I,J,1),I=1,3),J= 41, 50) /
+     :  0.9450128579027D-06, 0.4601859529950D+01, 0.1097707878456D+02,
+     :  0.7781119494996D-06, 0.1844352816694D+01, 0.8827390247185D+01,
+     :  0.7733407759912D-06, 0.3582790154750D+01, 0.5507553240374D+01,
+     :  0.7350644318120D-06, 0.2695277788230D+01, 0.1589072916335D+01,
+     :  0.6535928827023D-06, 0.3651327986142D+01, 0.1176985366291D+02,
+     :  0.6324624183656D-06, 0.2241302375862D+01, 0.6262300422539D+01,
+     :  0.6298565300557D-06, 0.4407122406081D+01, 0.6303851278352D+01,
+     :  0.8587037089179D-06, 0.3024307223119D+01, 0.1672837615881D+03,
+     :  0.8299954491035D-06, 0.6192539428237D+01, 0.3340612434717D+01,
+     :  0.6311263503401D-06, 0.2014758795416D+01, 0.7113454667900D-02 /
+      DATA ((E0(I,J,1),I=1,3),J= 51, 60) /
+     :  0.6005646745452D-06, 0.3399500503397D+01, 0.4136910472696D+01,
+     :  0.7917715109929D-06, 0.2493386877837D+01, 0.6069776770667D+01,
+     :  0.7556958099685D-06, 0.4159491740143D+01, 0.6496374930224D+01,
+     :  0.6773228244949D-06, 0.4034162934230D+01, 0.9437762937313D+01,
+     :  0.5370708577847D-06, 0.1562219163734D+01, 0.1194447056968D+01,
+     :  0.5710804266203D-06, 0.2662730803386D+01, 0.6282095334605D+01,
+     :  0.5709824583726D-06, 0.3985828430833D+01, 0.6284056366286D+01,
+     :  0.5143950896447D-06, 0.1308144688689D+01, 0.6290189305114D+01,
+     :  0.5088010604546D-06, 0.5352817214804D+01, 0.6275962395778D+01,
+     :  0.4960369085172D-06, 0.2644267922349D+01, 0.6127655567643D+01 /
+      DATA ((E0(I,J,1),I=1,3),J= 61, 70) /
+     :  0.4803137891183D-06, 0.4008844192080D+01, 0.6438496133249D+01,
+     :  0.5731747768225D-06, 0.3794550174597D+01, 0.3154687086868D+01,
+     :  0.4735947960579D-06, 0.6107118308982D+01, 0.3128388763578D+01,
+     :  0.4808348796625D-06, 0.4771458618163D+01, 0.8018209333619D+00,
+     :  0.4115073743137D-06, 0.3327111335159D+01, 0.8429241228195D+01,
+     :  0.5230575889287D-06, 0.5305708551694D+01, 0.1336797263425D+02,
+     :  0.5133977889215D-06, 0.5784230738814D+01, 0.1235285262111D+02,
+     :  0.5065815825327D-06, 0.2052064793679D+01, 0.1185621865188D+02,
+     :  0.4339831593868D-06, 0.3644994195830D+01, 0.1726015463500D+02,
+     :  0.3952928638953D-06, 0.4930376436758D+01, 0.5481254917084D+01 /
+      DATA ((E0(I,J,1),I=1,3),J= 71, 80) /
+     :  0.4898498111942D-06, 0.4542084219731D+00, 0.9225539266174D+01,
+     :  0.4757490209328D-06, 0.3161126388878D+01, 0.5856477690889D+01,
+     :  0.4727701669749D-06, 0.6214993845446D+00, 0.2544314396739D+01,
+     :  0.3800966681863D-06, 0.3040132339297D+01, 0.4265981595566D+00,
+     :  0.3257301077939D-06, 0.8064977360087D+00, 0.3930209696940D+01,
+     :  0.3255810528674D-06, 0.1974147981034D+01, 0.2146165377750D+01,
+     :  0.3252029748187D-06, 0.2845924913135D+01, 0.4164311961999D+01,
+     :  0.3255505635308D-06, 0.3017900824120D+01, 0.5088628793478D+01,
+     :  0.2801345211990D-06, 0.6109717793179D+01, 0.1256967486051D+02,
+     :  0.3688987740970D-06, 0.2911550235289D+01, 0.1807370494127D+02 /
+      DATA ((E0(I,J,1),I=1,3),J= 81, 90) /
+     :  0.2475153429458D-06, 0.2179146025856D+01, 0.2629832328990D-01,
+     :  0.3033457749150D-06, 0.1994161050744D+01, 0.4535059491685D+01,
+     :  0.2186743763110D-06, 0.5125687237936D+01, 0.1137170464392D+02,
+     :  0.2764777032774D-06, 0.4822646860252D+00, 0.1256262854127D+02,
+     :  0.2199028768592D-06, 0.4637633293831D+01, 0.1255903824622D+02,
+     :  0.2046482824760D-06, 0.1467038733093D+01, 0.7084896783808D+01,
+     :  0.2611209147507D-06, 0.3044718783485D+00, 0.7143069561767D+02,
+     :  0.2286079656818D-06, 0.4764220356805D+01, 0.8031092209206D+01,
+     :  0.1855071202587D-06, 0.3383637774428D+01, 0.1748016358760D+01,
+     :  0.2324669506784D-06, 0.6189088449251D+01, 0.1831953657923D+02 /
+      DATA ((E0(I,J,1),I=1,3),J= 91,100) /
+     :  0.1709528015688D-06, 0.5874966729774D+00, 0.4933208510675D+01,
+     :  0.2168156875828D-06, 0.4302994009132D+01, 0.1044738781244D+02,
+     :  0.2106675556535D-06, 0.3800475419891D+01, 0.7477522907414D+01,
+     :  0.1430213830465D-06, 0.1294660846502D+01, 0.2942463415728D+01,
+     :  0.1388396901944D-06, 0.4594797202114D+01, 0.8635942003952D+01,
+     :  0.1922258844190D-06, 0.4943044543591D+00, 0.1729818233119D+02,
+     :  0.1888460058292D-06, 0.2426943912028D+01, 0.1561374759853D+03,
+     :  0.1789449386107D-06, 0.1582973303499D+00, 0.1592596075957D+01,
+     :  0.1360803685374D-06, 0.5197240440504D+01, 0.1309584267300D+02,
+     :  0.1504038014709D-06, 0.3120360916217D+01, 0.1649636139783D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=101,110) /
+     :  0.1382769533389D-06, 0.6164702888205D+01, 0.7632943190217D+01,
+     :  0.1438059769079D-06, 0.1437423770979D+01, 0.2042657109477D+02,
+     :  0.1326303260037D-06, 0.3609688799679D+01, 0.1213955354133D+02,
+     :  0.1159244950540D-06, 0.5463018167225D+01, 0.5331357529664D+01,
+     :  0.1433118149136D-06, 0.6028909912097D+01, 0.7342457794669D+01,
+     :  0.1234623148594D-06, 0.3109645574997D+01, 0.6279485555400D+01,
+     :  0.1233949875344D-06, 0.3539359332866D+01, 0.6286666145492D+01,
+     :  0.9927196061299D-07, 0.1259321569772D+01, 0.7234794171227D+01,
+     :  0.1242302191316D-06, 0.1065949392609D+01, 0.1511046609763D+02,
+     :  0.1098402195201D-06, 0.2192508743837D+01, 0.1098880815746D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=111,120) /
+     :  0.1158191395315D-06, 0.4054411278650D+01, 0.5729506548653D+01,
+     :  0.9048475596241D-07, 0.5429764748518D+01, 0.9623688285163D+01,
+     :  0.8889853269023D-07, 0.5046586206575D+01, 0.6148010737701D+01,
+     :  0.1048694242164D-06, 0.2628858030806D+01, 0.6836645152238D+01,
+     :  0.1112308378646D-06, 0.4177292719907D+01, 0.1572083878776D+02,
+     :  0.8631729709901D-07, 0.1601345232557D+01, 0.6418140963190D+01,
+     :  0.8527816951664D-07, 0.2463888997513D+01, 0.1471231707864D+02,
+     :  0.7892139456991D-07, 0.3154022088718D+01, 0.2118763888447D+01,
+     :  0.1051782905236D-06, 0.4795035816088D+01, 0.1349867339771D+01,
+     :  0.1048219943164D-06, 0.2952983395230D+01, 0.5999216516294D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=121,130) /
+     :  0.7435760775143D-07, 0.5420547991464D+01, 0.6040347114260D+01,
+     :  0.9869574106949D-07, 0.3695646753667D+01, 0.6566935184597D+01,
+     :  0.9156886364226D-07, 0.3922675306609D+01, 0.5643178611111D+01,
+     :  0.7006834356188D-07, 0.1233968624861D+01, 0.6525804586632D+01,
+     :  0.9806170182601D-07, 0.1919542280684D+01, 0.2122839202813D+02,
+     :  0.9052289673607D-07, 0.4615902724369D+01, 0.4690479774488D+01,
+     :  0.7554200867893D-07, 0.1236863719072D+01, 0.1253985337760D+02,
+     :  0.8215741286498D-07, 0.3286800101559D+00, 0.1097355562493D+02,
+     :  0.7185178575397D-07, 0.5880942158367D+01, 0.6245048154254D+01,
+     :  0.7130726476180D-07, 0.7674871987661D+00, 0.6321103546637D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=131,140) /
+     :  0.6650894461162D-07, 0.6987129150116D+00, 0.5327476111629D+01,
+     :  0.7396888823688D-07, 0.3576824794443D+01, 0.5368044267797D+00,
+     :  0.7420588884775D-07, 0.5033615245369D+01, 0.2354323048545D+02,
+     :  0.6141181642908D-07, 0.9449927045673D+00, 0.1296430071988D+02,
+     :  0.6373557924058D-07, 0.6206342280341D+01, 0.9517183207817D+00,
+     :  0.6359474329261D-07, 0.5036079095757D+01, 0.1990745094947D+01,
+     :  0.5740173582646D-07, 0.6105106371350D+01, 0.9555997388169D+00,
+     :  0.7019864084602D-07, 0.7237747359018D+00, 0.5225775174439D+00,
+     :  0.6398054487042D-07, 0.3976367969666D+01, 0.2407292145756D+02,
+     :  0.7797092650498D-07, 0.4305423910623D+01, 0.2200391463820D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=141,150) /
+     :  0.6466760000900D-07, 0.3500136825200D+01, 0.5230807360890D+01,
+     :  0.7529417043890D-07, 0.3514779246100D+01, 0.1842262939178D+02,
+     :  0.6924571140892D-07, 0.2743457928679D+01, 0.1554202828031D+00,
+     :  0.6220798650222D-07, 0.2242598118209D+01, 0.1845107853235D+02,
+     :  0.5870209391853D-07, 0.2332832707527D+01, 0.6398972393349D+00,
+     :  0.6263953473888D-07, 0.2191105358956D+01, 0.6277552955062D+01,
+     :  0.6257781390012D-07, 0.4457559396698D+01, 0.6288598745829D+01,
+     :  0.5697304945123D-07, 0.3499234761404D+01, 0.1551045220144D+01,
+     :  0.6335438746791D-07, 0.6441691079251D+00, 0.5216580451554D+01,
+     :  0.6377258441152D-07, 0.2252599151092D+01, 0.5650292065779D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=151,160) /
+     :  0.6484841818165D-07, 0.1992812417646D+01, 0.1030928125552D+00,
+     :  0.4735551485250D-07, 0.3744672082942D+01, 0.1431416805965D+02,
+     :  0.4628595996170D-07, 0.1334226211745D+01, 0.5535693017924D+00,
+     :  0.6258152336933D-07, 0.4395836159154D+01, 0.2608790314060D+02,
+     :  0.6196171366594D-07, 0.2587043007997D+01, 0.8467247584405D+02,
+     :  0.6159556952126D-07, 0.4782499769128D+01, 0.2394243902548D+03,
+     :  0.4987741172394D-07, 0.7312257619924D+00, 0.7771377146812D+02,
+     :  0.5459280703142D-07, 0.3001376372532D+01, 0.6179983037890D+01,
+     :  0.4863461189999D-07, 0.3767222128541D+01, 0.9027992316901D+02,
+     :  0.5349912093158D-07, 0.3663594450273D+01, 0.6386168663001D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=161,170) /
+     :  0.5673725607806D-07, 0.4331187919049D+01, 0.6915859635113D+01,
+     :  0.4745485060512D-07, 0.5816195745518D+01, 0.6282970628506D+01,
+     :  0.4745379005326D-07, 0.8323672435672D+00, 0.6283181072386D+01,
+     :  0.4049002796321D-07, 0.3785023976293D+01, 0.6254626709878D+01,
+     :  0.4247084014515D-07, 0.2378220728783D+01, 0.7875671926403D+01,
+     :  0.4026912363055D-07, 0.2864103423269D+01, 0.6311524991013D+01,
+     :  0.4062935011774D-07, 0.2415408595975D+01, 0.3634620989887D+01,
+     :  0.5347771048509D-07, 0.3343479309801D+01, 0.2515860172507D+02,
+     :  0.4829494136505D-07, 0.2821742398262D+01, 0.5760498333002D+01,
+     :  0.4342554404599D-07, 0.5624662458712D+01, 0.7238675589263D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=171,180) /
+     :  0.4021599184361D-07, 0.5557250275009D+00, 0.1101510648075D+02,
+     :  0.4104900474558D-07, 0.3296691780005D+01, 0.6709674010002D+01,
+     :  0.4376532905131D-07, 0.3814443999443D+01, 0.6805653367890D+01,
+     :  0.3314590480650D-07, 0.3560229189250D+01, 0.1259245002418D+02,
+     :  0.3232421839643D-07, 0.5185389180568D+01, 0.1066495398892D+01,
+     :  0.3541176318876D-07, 0.3921381909679D+01, 0.9917696840332D+01,
+     :  0.3689831242681D-07, 0.4190658955386D+01, 0.1192625446156D+02,
+     :  0.3890605376774D-07, 0.5546023371097D+01, 0.7478166569050D-01,
+     :  0.3038559339780D-07, 0.6231032794494D+01, 0.1256621883632D+02,
+     :  0.3137083969782D-07, 0.6207063419190D+01, 0.4292330755499D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=181,190) /
+     :  0.4024004081854D-07, 0.1195257375713D+01, 0.1334167431096D+02,
+     :  0.3300234879283D-07, 0.1804694240998D+01, 0.1057540660594D+02,
+     :  0.3635399155575D-07, 0.5597811343500D+01, 0.6208294184755D+01,
+     :  0.3032668691356D-07, 0.3191059366530D+01, 0.1805292951336D+02,
+     :  0.2809652069058D-07, 0.4094348032570D+01, 0.3523159621801D-02,
+     :  0.3696955383823D-07, 0.5219282738794D+01, 0.5966683958112D+01,
+     :  0.3562894142503D-07, 0.1037247544554D+01, 0.6357857516136D+01,
+     :  0.3510598524148D-07, 0.1430020816116D+01, 0.6599467742779D+01,
+     :  0.3617736142953D-07, 0.3002911403677D+01, 0.6019991944201D+01,
+     :  0.2624524910730D-07, 0.2437046757292D+01, 0.6702560555334D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=191,200) /
+     :  0.2535824204490D-07, 0.1581594689647D+01, 0.3141537925223D+02,
+     :  0.3519787226257D-07, 0.5379863121521D+01, 0.2505706758577D+03,
+     :  0.2578406709982D-07, 0.4904222639329D+01, 0.1673046366289D+02,
+     :  0.3423887981473D-07, 0.3646448997315D+01, 0.6546159756691D+01,
+     :  0.2776083886467D-07, 0.3307829300144D+01, 0.1272157198369D+02,
+     :  0.3379592818379D-07, 0.1747541251125D+01, 0.1494531617769D+02,
+     :  0.3050255426284D-07, 0.1784689432607D-01, 0.4732030630302D+01,
+     :  0.2652378350236D-07, 0.4420055276260D+01, 0.5863591145557D+01,
+     :  0.2374498173768D-07, 0.3629773929208D+01, 0.2388894113936D+01,
+     :  0.2716451255140D-07, 0.3079623706780D+01, 0.1202934727411D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=201,210) /
+     :  0.3038583699229D-07, 0.3312487903507D+00, 0.1256608456547D+02,
+     :  0.2220681228760D-07, 0.5265520401774D+01, 0.1336244973887D+02,
+     :  0.3044156540912D-07, 0.4766664081250D+01, 0.2908881142201D+02,
+     :  0.2731859923561D-07, 0.5069146530691D+01, 0.1391601904066D+02,
+     :  0.2285603018171D-07, 0.5954935112271D+01, 0.6076890225335D+01,
+     :  0.2025006454555D-07, 0.4061789589267D+01, 0.4701116388778D+01,
+     :  0.2012597519804D-07, 0.2485047705241D+01, 0.6262720680387D+01,
+     :  0.2003406962258D-07, 0.4163779209320D+01, 0.6303431020504D+01,
+     :  0.2207863441371D-07, 0.6923839133828D+00, 0.6489261475556D+01,
+     :  0.2481374305624D-07, 0.5944173595676D+01, 0.1204357418345D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=211,220) /
+     :  0.2130923288870D-07, 0.4641013671967D+01, 0.5746271423666D+01,
+     :  0.2446370543391D-07, 0.6125796518757D+01, 0.1495633313810D+00,
+     :  0.1932492759052D-07, 0.2234572324504D+00, 0.1352175143971D+02,
+     :  0.2600122568049D-07, 0.4281012405440D+01, 0.4590910121555D+01,
+     :  0.2431754047488D-07, 0.1429943874870D+00, 0.1162474756779D+01,
+     :  0.1875902869209D-07, 0.9781803816948D+00, 0.6279194432410D+01,
+     :  0.1874381139426D-07, 0.5670368130173D+01, 0.6286957268481D+01,
+     :  0.2156696047173D-07, 0.2008985006833D+01, 0.1813929450232D+02,
+     :  0.1965076182484D-07, 0.2566186202453D+00, 0.4686889479442D+01,
+     :  0.2334816372359D-07, 0.4408121891493D+01, 0.1002183730415D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=221,230) /
+     :  0.1869937408802D-07, 0.5272745038656D+01, 0.2427287361862D+00,
+     :  0.2436236460883D-07, 0.4407720479029D+01, 0.9514313292143D+02,
+     :  0.1761365216611D-07, 0.1943892315074D+00, 0.1351787002167D+02,
+     :  0.2156289480503D-07, 0.1418570924545D+01, 0.6037244212485D+01,
+     :  0.2164748979255D-07, 0.4724603439430D+01, 0.2301353951334D+02,
+     :  0.2222286670853D-07, 0.2400266874598D+01, 0.1266924451345D+02,
+     :  0.2070901414929D-07, 0.5230348028732D+01, 0.6528907488406D+01,
+     :  0.1792745177020D-07, 0.2099190328945D+01, 0.6819880277225D+01,
+     :  0.1841802068445D-07, 0.3467527844848D+00, 0.6514761976723D+02,
+     :  0.1578401631718D-07, 0.7098642356340D+00, 0.2077542790660D-01 /
+      DATA ((E0(I,J,1),I=1,3),J=231,240) /
+     :  0.1561690152531D-07, 0.5943349620372D+01, 0.6272439236156D+01,
+     :  0.1558591045463D-07, 0.7040653478980D+00, 0.6293712464735D+01,
+     :  0.1737356469576D-07, 0.4487064760345D+01, 0.1765478049437D+02,
+     :  0.1434755619991D-07, 0.2993391570995D+01, 0.1102062672231D+00,
+     :  0.1482187806654D-07, 0.2278049198251D+01, 0.1052268489556D+01,
+     :  0.1424812827089D-07, 0.1682114725827D+01, 0.1311972100268D+02,
+     :  0.1380282448623D-07, 0.3262668602579D+01, 0.1017725758696D+02,
+     :  0.1811481244566D-07, 0.3187771221777D+01, 0.1887552587463D+02,
+     :  0.1504446185696D-07, 0.5650162308647D+01, 0.7626583626240D-01,
+     :  0.1740776154137D-07, 0.5487068607507D+01, 0.1965104848470D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=241,250) /
+     :  0.1374339536251D-07, 0.5745688172201D+01, 0.6016468784579D+01,
+     :  0.1761377477704D-07, 0.5748060203659D+01, 0.2593412433514D+02,
+     :  0.1535138225795D-07, 0.6226848505790D+01, 0.9411464614024D+01,
+     :  0.1788140543676D-07, 0.6189318878563D+01, 0.3301902111895D+02,
+     :  0.1375002807996D-07, 0.5371812884394D+01, 0.6327837846670D+00,
+     :  0.1242115758632D-07, 0.1471687569712D+01, 0.3894181736510D+01,
+     :  0.1450977333938D-07, 0.4143836662127D+01, 0.1277945078067D+02,
+     :  0.1297579575023D-07, 0.9003477661957D+00, 0.6549682916313D+01,
+     :  0.1462667934821D-07, 0.5760505536428D+01, 0.1863592847156D+02,
+     :  0.1381774374799D-07, 0.1085471729463D+01, 0.2379164476796D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=251,260) /
+     :  0.1682333169307D-07, 0.5409870870133D+01, 0.1620077269078D+02,
+     :  0.1190812918837D-07, 0.1397205174601D+01, 0.1149965630200D+02,
+     :  0.1221434762106D-07, 0.9001804809095D+00, 0.1257326515556D+02,
+     :  0.1549934644860D-07, 0.4262528275544D+01, 0.1820933031200D+02,
+     :  0.1252138953050D-07, 0.1411642012027D+01, 0.6993008899458D+01,
+     :  0.1237078905387D-07, 0.2844472403615D+01, 0.2435678079171D+02,
+     :  0.1446953389615D-07, 0.5295835522223D+01, 0.3813291813120D-01,
+     :  0.1388446457170D-07, 0.4969428135497D+01, 0.2458316379602D+00,
+     :  0.1019339179228D-07, 0.2491369561806D+01, 0.6112403035119D+01,
+     :  0.1258880815343D-07, 0.4679426248976D+01, 0.5429879531333D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=261,270) /
+     :  0.1297768238261D-07, 0.1074509953328D+01, 0.1249137003520D+02,
+     :  0.9913505718094D-08, 0.4735097918224D+01, 0.6247047890016D+01,
+     :  0.9830453155969D-08, 0.4158649187338D+01, 0.6453748665772D+01,
+     :  0.1192615865309D-07, 0.3438208613699D+01, 0.6290122169689D+01,
+     :  0.9835874798277D-08, 0.1913300781229D+01, 0.6319103810876D+01,
+     :  0.9639087569277D-08, 0.9487683644125D+00, 0.8273820945392D+01,
+     :  0.1175716107001D-07, 0.3228141664287D+01, 0.6276029531202D+01,
+     :  0.1018926508678D-07, 0.2216607854300D+01, 0.1254537627298D+02,
+     :  0.9500087869225D-08, 0.2625116459733D+01, 0.1256517118505D+02,
+     :  0.9664192916575D-08, 0.5860562449214D+01, 0.6259197520765D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=271,280) /
+     :  0.9612858712203D-08, 0.7885682917381D+00, 0.6306954180126D+01,
+     :  0.1117645675413D-07, 0.3932148831189D+01, 0.1779695906178D+02,
+     :  0.1158864052160D-07, 0.9995605521691D+00, 0.1778273215245D+02,
+     :  0.9021043467028D-08, 0.5263769742673D+01, 0.6172869583223D+01,
+     :  0.8836134773563D-08, 0.1496843220365D+01, 0.1692165728891D+01,
+     :  0.1045872200691D-07, 0.7009039517214D+00, 0.2204125344462D+00,
+     :  0.1211463487798D-07, 0.4041544938511D+01, 0.8257698122054D+02,
+     :  0.8541990804094D-08, 0.1447586692316D+01, 0.6393282117669D+01,
+     :  0.1038720703636D-07, 0.4594249718112D+00, 0.1550861511662D+02,
+     :  0.1126722351445D-07, 0.3925550579036D+01, 0.2061856251104D+00 /
+      DATA ((E0(I,J,1),I=1,3),J=281,290) /
+     :  0.8697373859631D-08, 0.4411341856037D+01, 0.9491756770005D+00,
+     :  0.8869380028441D-08, 0.2402659724813D+01, 0.3903911373650D+01,
+     :  0.9247014693258D-08, 0.1401579743423D+01, 0.6267823317922D+01,
+     :  0.9205062930950D-08, 0.5245978000814D+01, 0.6298328382969D+01,
+     :  0.8000745038049D-08, 0.3590803356945D+01, 0.2648454860559D+01,
+     :  0.9168973650819D-08, 0.2470150501679D+01, 0.1498544001348D+03,
+     :  0.1075444949238D-07, 0.1328606161230D+01, 0.3694923081589D+02,
+     :  0.7817298525817D-08, 0.6162256225998D+01, 0.4804209201333D+01,
+     :  0.9541469226356D-08, 0.3942568967039D+01, 0.1256713221673D+02,
+     :  0.9821910122027D-08, 0.2360246287233D+00, 0.1140367694411D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=291,300) /
+     :  0.9897822023777D-08, 0.4619805634280D+01, 0.2280573557157D+02,
+     :  0.7737289283765D-08, 0.3784727847451D+01, 0.7834121070590D+01,
+     :  0.9260204034710D-08, 0.2223352487601D+01, 0.2787043132925D+01,
+     :  0.7320252888486D-08, 0.1288694636874D+01, 0.6282655592598D+01,
+     :  0.7319785780946D-08, 0.5359869567774D+01, 0.6283496108294D+01,
+     :  0.7147219933778D-08, 0.5516616675856D+01, 0.1725663147538D+02,
+     :  0.7946502829878D-08, 0.2630459984567D+01, 0.1241073141809D+02,
+     :  0.9001711808932D-08, 0.2849815827227D+01, 0.6281591679874D+01,
+     :  0.8994041507257D-08, 0.3795244450750D+01, 0.6284560021018D+01,
+     :  0.8298582787358D-08, 0.5236413127363D+00, 0.1241658836951D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=301,310) /
+     :  0.8526596520710D-08, 0.4794605424426D+01, 0.1098419223922D+02,
+     :  0.8209822103197D-08, 0.1578752370328D+01, 0.1096996532989D+02,
+     :  0.6357049861094D-08, 0.5708926113761D+01, 0.1596186371003D+01,
+     :  0.7370473179049D-08, 0.3842402530241D+01, 0.4061219149443D+01,
+     :  0.7232154664726D-08, 0.3067548981535D+01, 0.1610006857377D+03,
+     :  0.6328765494903D-08, 0.1313930030069D+01, 0.1193336791622D+02,
+     :  0.8030064908595D-08, 0.3488500408886D+01, 0.8460828644453D+00,
+     :  0.6275464259232D-08, 0.1532061626198D+01, 0.8531963191132D+00,
+     :  0.7051897446325D-08, 0.3285859929993D+01, 0.5849364236221D+01,
+     :  0.6161593705428D-08, 0.1477341999464D+01, 0.5573142801433D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=311,320) /
+     :  0.7754683957278D-08, 0.1586118663096D+01, 0.8662240327241D+01,
+     :  0.5889928990701D-08, 0.1304887868803D+01, 0.1232342296471D+02,
+     :  0.5705756047075D-08, 0.4555333589350D+01, 0.1258692712880D+02,
+     :  0.5964178808332D-08, 0.3001762842062D+01, 0.5333900173445D+01,
+     :  0.6712446027467D-08, 0.4886780007595D+01, 0.1171295538178D+02,
+     :  0.5941809275464D-08, 0.4701509603824D+01, 0.9779108567966D+01,
+     :  0.5466993627395D-08, 0.4588357817278D+01, 0.1884211409667D+02,
+     :  0.6340512090980D-08, 0.1164543038893D+01, 0.5217580628120D+02,
+     :  0.6325505710045D-08, 0.3919171259645D+01, 0.1041998632314D+02,
+     :  0.6164789509685D-08, 0.2143828253542D+01, 0.6151533897323D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=321,330) /
+     :  0.5263330812430D-08, 0.6066564434241D+01, 0.1885275071096D+02,
+     :  0.5597087780221D-08, 0.2926316429472D+01, 0.4337116142245D+00,
+     :  0.5396556236817D-08, 0.3244303591505D+01, 0.6286362197481D+01,
+     :  0.5396615148223D-08, 0.3404304703662D+01, 0.6279789503410D+01,
+     :  0.7091832443341D-08, 0.8532377803192D+00, 0.4907302013889D+01,
+     :  0.6572352589782D-08, 0.4901966774419D+01, 0.1176433076753D+02,
+     :  0.5960236060795D-08, 0.1874672315797D+01, 0.1422690933580D-01,
+     :  0.5125480043511D-08, 0.3735726064334D+01, 0.1245594543367D+02,
+     :  0.5928241866410D-08, 0.4502033899935D+01, 0.6414617803568D+01,
+     :  0.5249600357424D-08, 0.4372334799878D+01, 0.1151388321134D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=331,340) /
+     :  0.6059171276087D-08, 0.2581617302908D+01, 0.6062663316000D+01,
+     :  0.5295235081662D-08, 0.2974811513158D+01, 0.3496032717521D+01,
+     :  0.5820561875933D-08, 0.1796073748244D+00, 0.2838593341516D+00,
+     :  0.4754696606440D-08, 0.1981998136973D+01, 0.3104930017775D+01,
+     :  0.6385053548955D-08, 0.2559174171605D+00, 0.6133512519065D+01,
+     :  0.6589828273941D-08, 0.2750967106776D+01, 0.4087944051283D+02,
+     :  0.5383376567189D-08, 0.6325947523578D+00, 0.2248384854122D+02,
+     :  0.5928941683538D-08, 0.1672304519067D+01, 0.1581959461667D+01,
+     :  0.4816060709794D-08, 0.3512566172575D+01, 0.9388005868221D+01,
+     :  0.6003381586512D-08, 0.5610932219189D+01, 0.5326786718777D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=341,350) /
+     :  0.5504225393105D-08, 0.4037501131256D+01, 0.6503488384892D+01,
+     :  0.5353772620129D-08, 0.6122774968240D+01, 0.1735668374386D+03,
+     :  0.5786253768544D-08, 0.5527984999515D+01, 0.1350651127443D+00,
+     :  0.5065706702002D-08, 0.9980765573624D+00, 0.1248988586463D+02,
+     :  0.5972838885276D-08, 0.6044489493203D+01, 0.2673594526851D+02,
+     :  0.5323585877961D-08, 0.3924265998147D+01, 0.4171425416666D+01,
+     :  0.5210772682858D-08, 0.6220111376901D+01, 0.2460261242967D+02,
+     :  0.4726549040535D-08, 0.3716043206862D+01, 0.7232251527446D+01,
+     :  0.6029425105059D-08, 0.8548704071116D+00, 0.3227113045244D+03,
+     :  0.4481542826513D-08, 0.1426925072829D+01, 0.5547199253223D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=351,360) /
+     :  0.5836024505068D-08, 0.7135651752625D-01, 0.7285056171570D+02,
+     :  0.4137046613272D-08, 0.5330767643283D+01, 0.1087398597200D+02,
+     :  0.5171977473924D-08, 0.4494262335353D+00, 0.1884570439172D+02,
+     :  0.5694429833732D-08, 0.2952369582215D+01, 0.9723862754494D+02,
+     :  0.4009158925298D-08, 0.3500003416535D+01, 0.6244942932314D+01,
+     :  0.4784939596873D-08, 0.6196709413181D+01, 0.2929661536378D+02,
+     :  0.3983725022610D-08, 0.5103690031897D+01, 0.4274518229222D+01,
+     :  0.3870535232462D-08, 0.3187569587401D+01, 0.6321208768577D+01,
+     :  0.5140501213951D-08, 0.1668924357457D+01, 0.1232032006293D+02,
+     :  0.3849034819355D-08, 0.4445722510309D+01, 0.1726726808967D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=361,370) /
+     :  0.4002383075060D-08, 0.5226224152423D+01, 0.7018952447668D+01,
+     :  0.3890719543549D-08, 0.4371166550274D+01, 0.1491901785440D+02,
+     :  0.4887084607881D-08, 0.5973556689693D+01, 0.1478866649112D+01,
+     :  0.3739939287592D-08, 0.2089084714600D+01, 0.6922973089781D+01,
+     :  0.5031925918209D-08, 0.4658371936827D+01, 0.1715706182245D+02,
+     :  0.4387748764954D-08, 0.4825580552819D+01, 0.2331413144044D+03,
+     :  0.4147398098865D-08, 0.3739003524998D+01, 0.1376059875786D+02,
+     :  0.3719089993586D-08, 0.1148941386536D+01, 0.6297302759782D+01,
+     :  0.3934238461056D-08, 0.1559893008343D+01, 0.7872148766781D+01,
+     :  0.3672471375622D-08, 0.5516145383612D+01, 0.6268848941110D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=371,380) /
+     :  0.3768911277583D-08, 0.6116053700563D+01, 0.4157198507331D+01,
+     :  0.4033388417295D-08, 0.5076821746017D+01, 0.1567108171867D+02,
+     :  0.3764194617832D-08, 0.8164676232075D+00, 0.3185192151914D+01,
+     :  0.4840628226284D-08, 0.1360479453671D+01, 0.1252801878276D+02,
+     :  0.4949443923785D-08, 0.2725622229926D+01, 0.1617106187867D+03,
+     :  0.4117393089971D-08, 0.6054459628492D+00, 0.5642198095270D+01,
+     :  0.3925754020428D-08, 0.8570462135210D+00, 0.2139354194808D+02,
+     :  0.3630551757923D-08, 0.3552067338279D+01, 0.6294805223347D+01,
+     :  0.3627274802357D-08, 0.3096565085313D+01, 0.6271346477544D+01,
+     :  0.3806143885093D-08, 0.6367751709777D+00, 0.1725304118033D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=381,390) /
+     :  0.4433254641565D-08, 0.4848461503937D+01, 0.7445550607224D+01,
+     :  0.3712319846576D-08, 0.1331950643655D+01, 0.4194847048887D+00,
+     :  0.3849847534783D-08, 0.4958368297746D+00, 0.9562891316684D+00,
+     :  0.3483955430165D-08, 0.2237215515707D+01, 0.1161697602389D+02,
+     :  0.3961912730982D-08, 0.3332402188575D+01, 0.2277943724828D+02,
+     :  0.3419978244481D-08, 0.5785600576016D+01, 0.1362553364512D+02,
+     :  0.3329417758177D-08, 0.9812676559709D-01, 0.1685848245639D+02,
+     :  0.4207206893193D-08, 0.9494780468236D+00, 0.2986433403208D+02,
+     :  0.3268548976410D-08, 0.1739332095686D+00, 0.5749861718712D+01,
+     :  0.3321880082685D-08, 0.1423354800666D+01, 0.6279143387820D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=391,400) /
+     :  0.4503173010852D-08, 0.2314972675293D+00, 0.1385561574497D+01,
+     :  0.4316599090954D-08, 0.1012646782616D+00, 0.4176041334900D+01,
+     :  0.3283493323850D-08, 0.5233306881265D+01, 0.6287008313071D+01,
+     :  0.3164033542343D-08, 0.4005597257511D+01, 0.2099539292909D+02,
+     :  0.4159720956725D-08, 0.5365676242020D+01, 0.5905702259363D+01,
+     :  0.3565176892217D-08, 0.4284440620612D+01, 0.3932462625300D-02,
+     :  0.3514440950221D-08, 0.4270562636575D+01, 0.7335344340001D+01,
+     :  0.3540596871909D-08, 0.5953553201060D+01, 0.1234573916645D+02,
+     :  0.2960769905118D-08, 0.1115180417718D+01, 0.2670964694522D+02,
+     :  0.2962213739684D-08, 0.3863811918186D+01, 0.6408777551755D+00 /
+      DATA ((E0(I,J,1),I=1,3),J=401,410) /
+     :  0.3883556700251D-08, 0.1268617928302D+01, 0.6660449441528D+01,
+     :  0.2919225516346D-08, 0.4908605223265D+01, 0.1375773836557D+01,
+     :  0.3115158863370D-08, 0.3744519976885D+01, 0.3802769619140D-01,
+     :  0.4099438144212D-08, 0.4173244670532D+01, 0.4480965020977D+02,
+     :  0.2899531858964D-08, 0.5910601428850D+01, 0.2059724391010D+02,
+     :  0.3289733429855D-08, 0.2488050078239D+01, 0.1081813534213D+02,
+     :  0.3933075612875D-08, 0.1122363652883D+01, 0.3773735910827D+00,
+     :  0.3021403764467D-08, 0.4951973724904D+01, 0.2982630633589D+02,
+     :  0.2798598949757D-08, 0.5117057845513D+01, 0.1937891852345D+02,
+     :  0.3397421302707D-08, 0.6104159180476D+01, 0.6923953605621D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=411,420) /
+     :  0.3720398002179D-08, 0.1184933429829D+01, 0.3066615496545D+02,
+     :  0.3598484186267D-08, 0.3505282086105D+01, 0.6147450479709D+01,
+     :  0.3694594027310D-08, 0.2286651088141D+01, 0.2636725487657D+01,
+     :  0.2680444152969D-08, 0.1871816775482D+00, 0.6816289982179D+01,
+     :  0.3497574865641D-08, 0.3143251755431D+01, 0.6418701221183D+01,
+     :  0.3130274129494D-08, 0.2462167316018D+01, 0.1235996607578D+02,
+     :  0.3241119069551D-08, 0.4256374004686D+01, 0.1652265972112D+02,
+     :  0.2601960842061D-08, 0.4970362941425D+01, 0.1045450126711D+02,
+     :  0.2690601527504D-08, 0.2372657824898D+01, 0.3163918923335D+00,
+     :  0.2908688152664D-08, 0.4232652627721D+01, 0.2828699048865D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=421,430) /
+     :  0.3120456131875D-08, 0.3925747001137D+00, 0.2195415756911D+02,
+     :  0.3148855423384D-08, 0.3093478330445D+01, 0.1172006883645D+02,
+     :  0.3051044261017D-08, 0.5560948248212D+01, 0.6055599646783D+01,
+     :  0.2826006876660D-08, 0.5072790310072D+01, 0.5120601093667D+01,
+     :  0.3100034191711D-08, 0.4998530231096D+01, 0.1799603123222D+02,
+     :  0.2398771640101D-08, 0.2561739802176D+01, 0.6255674361143D+01,
+     :  0.2384002842728D-08, 0.4087420284111D+01, 0.6310477339748D+01,
+     :  0.2842146517568D-08, 0.2515048217955D+01, 0.5469525544182D+01,
+     :  0.2847674371340D-08, 0.5235326497443D+01, 0.1034429499989D+02,
+     :  0.2903722140764D-08, 0.1088200795797D+01, 0.6510552054109D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=431,440) /
+     :  0.3187610710605D-08, 0.4710624424816D+01, 0.1693792562116D+03,
+     :  0.3048869992813D-08, 0.2857975896445D+00, 0.8390110365991D+01,
+     :  0.2860216950984D-08, 0.2241619020815D+01, 0.2243449970715D+00,
+     :  0.2701117683113D-08, 0.6651573305272D-01, 0.6129297044991D+01,
+     :  0.2509891590152D-08, 0.1285135324585D+01, 0.1044027435778D+02,
+     :  0.2623200252223D-08, 0.2981229834530D+00, 0.6436854655901D+01,
+     :  0.2622541669202D-08, 0.6122470726189D+01, 0.9380959548977D+01,
+     :  0.2818435667099D-08, 0.4251087148947D+01, 0.5934151399930D+01,
+     :  0.2365196797465D-08, 0.3465070460790D+01, 0.2470570524223D+02,
+     :  0.2358704646143D-08, 0.5791603815350D+01, 0.8671969964381D+01 /
+      DATA ((E0(I,J,1),I=1,3),J=441,450) /
+     :  0.2388299481390D-08, 0.4142483772941D+01, 0.7096626156709D+01,
+     :  0.1996041217224D-08, 0.2101901889496D+01, 0.1727188400790D+02,
+     :  0.2687593060336D-08, 0.1526689456959D+01, 0.7075506709219D+02,
+     :  0.2618913670810D-08, 0.2397684236095D+01, 0.6632000300961D+01,
+     :  0.2571523050364D-08, 0.5751929456787D+00, 0.6206810014183D+01,
+     :  0.2582135006946D-08, 0.5595464352926D+01, 0.4873985990671D+02,
+     :  0.2372530190361D-08, 0.5092689490655D+01, 0.1590676413561D+02,
+     :  0.2357178484712D-08, 0.4444363527851D+01, 0.3097883698531D+01,
+     :  0.2451590394723D-08, 0.3108251687661D+01, 0.6612329252343D+00,
+     :  0.2370045949608D-08, 0.2608133861079D+01, 0.3459636466239D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=451,460) /
+     :  0.2268997267358D-08, 0.3639717753384D+01, 0.2844914056730D-01,
+     :  0.1731432137906D-08, 0.1741898445707D+00, 0.2019909489111D+02,
+     :  0.1629869741622D-08, 0.3902225646724D+01, 0.3035599730800D+02,
+     :  0.2206215801974D-08, 0.4971131250731D+01, 0.6281667977667D+01,
+     :  0.2205469554680D-08, 0.1677462357110D+01, 0.6284483723224D+01,
+     :  0.2148792362509D-08, 0.4236259604006D+01, 0.1980482729015D+02,
+     :  0.1873733657847D-08, 0.5926814998687D+01, 0.2876692439167D+02,
+     :  0.2026573758959D-08, 0.4349643351962D+01, 0.2449240616245D+02,
+     :  0.1807770325110D-08, 0.5700940482701D+01, 0.2045286941806D+02,
+     :  0.1881174408581D-08, 0.6601286363430D+00, 0.2358125818164D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=461,470) /
+     :  0.1368023671690D-08, 0.2211098592752D+01, 0.2473415438279D+02,
+     :  0.1720017916280D-08, 0.4942488551129D+01, 0.1679593901136D+03,
+     :  0.1702427665131D-08, 0.1452233856386D+01, 0.3338575901272D+03,
+     :  0.1414032510054D-08, 0.5525357721439D+01, 0.1624205518357D+03,
+     :  0.1652626045364D-08, 0.4108794283624D+01, 0.8956999012000D+02,
+     :  0.1642957769686D-08, 0.7344335209984D+00, 0.5267006960365D+02,
+     :  0.1614952403624D-08, 0.3541213951363D+01, 0.3332657872986D+02,
+     :  0.1535988291188D-08, 0.4031094072151D+01, 0.3852657435933D+02,
+     :  0.1593193738177D-08, 0.4185136203609D+01, 0.2282781046519D+03,
+     :  0.1074569126382D-08, 0.1720485636868D+01, 0.8397383534231D+02 /
+      DATA ((E0(I,J,1),I=1,3),J=471,480) /
+     :  0.1074408214509D-08, 0.2758613420318D+01, 0.8401985929482D+02,
+     :  0.9700199670465D-09, 0.4216686842097D+01, 0.7826370942180D+02,
+     :  0.1258433517061D-08, 0.2575068876639D+00, 0.3115650189215D+03,
+     :  0.1240303229539D-08, 0.4800844956756D+00, 0.1784300471910D+03,
+     :  0.9018345948127D-09, 0.3896756361552D+00, 0.5886454391678D+02,
+     :  0.1135301432805D-08, 0.3700805023550D+00, 0.7842370451713D+02,
+     :  0.9215887951370D-09, 0.4364579276638D+01, 0.1014262087719D+03,
+     :  0.1055401054147D-08, 0.2156564222111D+01, 0.5660027930059D+02,
+     :  0.1008725979831D-08, 0.5454015785234D+01, 0.4245678405627D+02,
+     :  0.7217398104321D-09, 0.1597772562175D+01, 0.2457074661053D+03 /
+      DATA ((E0(I,J,1),I=1,3),J=481,490) /
+     :  0.6912033134447D-09, 0.5824090621461D+01, 0.1679936946371D+03,
+     :  0.6833881523549D-09, 0.3578778482835D+01, 0.6053048899753D+02,
+     :  0.4887304205142D-09, 0.3724362812423D+01, 0.9656299901946D+02,
+     :  0.5173709754788D-09, 0.5422427507933D+01, 0.2442876000072D+03,
+     :  0.4671353097145D-09, 0.2396106924439D+01, 0.1435713242844D+03,
+     :  0.5652608439480D-09, 0.2804028838685D+01, 0.8365903305582D+02,
+     :  0.5604061331253D-09, 0.1638816006247D+01, 0.8433466158131D+02,
+     :  0.4712723365400D-09, 0.8979003224474D+00, 0.3164282286739D+03,
+     :  0.4909967465112D-09, 0.3210426725516D+01, 0.4059982187939D+03,
+     :  0.4771358267658D-09, 0.5308027211629D+01, 0.1805255418145D+03 /
+      DATA ((E0(I,J,1),I=1,3),J=491,500) /
+     :  0.3943451445989D-09, 0.2195145341074D+01, 0.2568537517081D+03,
+     :  0.3952109120244D-09, 0.5081189491586D+01, 0.2449975330562D+03,
+     :  0.3788134594789D-09, 0.4345171264441D+01, 0.1568131045107D+03,
+     :  0.3738330190479D-09, 0.2613062847997D+01, 0.3948519331910D+03,
+     :  0.3099866678136D-09, 0.2846760817689D+01, 0.1547176098872D+03,
+     :  0.2002962716768D-09, 0.4921360989412D+01, 0.2268582385539D+03,
+     :  0.2198291338754D-09, 0.1130360117454D+00, 0.1658638954901D+03,
+     :  0.1491958330784D-09, 0.4228195232278D+01, 0.2219950288015D+03,
+     :  0.1475384076173D-09, 0.3005721811604D+00, 0.3052819430710D+03,
+     :  0.1661626624624D-09, 0.7830125621203D+00, 0.2526661704812D+03 /
+      DATA ((E0(I,J,1),I=1,3),J=501,NE0X) /
+     :  0.9015823460025D-10, 0.3807792942715D+01, 0.4171445043968D+03 /
+
+*  Sun-to-Earth, T^1, X
+      DATA ((E1(I,J,1),I=1,3),J=  1, 10) /
+     :  0.1234046326004D-05, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.5150068824701D-06, 0.6002664557501D+01, 0.1256615170089D+02,
+     :  0.1290743923245D-07, 0.5959437664199D+01, 0.1884922755134D+02,
+     :  0.1068615564952D-07, 0.2015529654209D+01, 0.6283075850446D+01,
+     :  0.2079619142538D-08, 0.1732960531432D+01, 0.6279552690824D+01,
+     :  0.2078009243969D-08, 0.4915604476996D+01, 0.6286599010068D+01,
+     :  0.6206330058856D-09, 0.3616457953824D+00, 0.4705732307012D+01,
+     :  0.5989335313746D-09, 0.3802607304474D+01, 0.6256777527156D+01,
+     :  0.5958495663840D-09, 0.2845866560031D+01, 0.6309374173736D+01,
+     :  0.4866923261539D-09, 0.5213203771824D+01, 0.7755226100720D+00 /
+      DATA ((E1(I,J,1),I=1,3),J= 11, 20) /
+     :  0.4267785823142D-09, 0.4368189727818D+00, 0.1059381944224D+01,
+     :  0.4610675141648D-09, 0.1837249181372D-01, 0.7860419393880D+01,
+     :  0.3626989993973D-09, 0.2161590545326D+01, 0.5753384878334D+01,
+     :  0.3563071194389D-09, 0.1452631954746D+01, 0.5884926831456D+01,
+     :  0.3557015642807D-09, 0.4470593393054D+01, 0.6812766822558D+01,
+     :  0.3210412089122D-09, 0.5195926078314D+01, 0.6681224869435D+01,
+     :  0.2875473577986D-09, 0.5916256610193D+01, 0.2513230340178D+02,
+     :  0.2842913681629D-09, 0.1149902426047D+01, 0.6127655567643D+01,
+     :  0.2751248215916D-09, 0.5502088574662D+01, 0.6438496133249D+01,
+     :  0.2481432881127D-09, 0.2921989846637D+01, 0.5486777812467D+01 /
+      DATA ((E1(I,J,1),I=1,3),J= 21, 30) /
+     :  0.2059885976560D-09, 0.3718070376585D+01, 0.7079373888424D+01,
+     :  0.2015522342591D-09, 0.5979395259740D+01, 0.6290189305114D+01,
+     :  0.1995364084253D-09, 0.6772087985494D+00, 0.6275962395778D+01,
+     :  0.1957436436943D-09, 0.2899210654665D+01, 0.5507553240374D+01,
+     :  0.1651609818948D-09, 0.6228206482192D+01, 0.1150676975667D+02,
+     :  0.1822980550699D-09, 0.1469348746179D+01, 0.1179062909082D+02,
+     :  0.1675223159760D-09, 0.3813910555688D+01, 0.7058598460518D+01,
+     :  0.1706491764745D-09, 0.3004380506684D+00, 0.7113454667900D-02,
+     :  0.1392952362615D-09, 0.1440393973406D+01, 0.7962980379786D+00,
+     :  0.1209868266342D-09, 0.4150425791727D+01, 0.4694002934110D+01 /
+      DATA ((E1(I,J,1),I=1,3),J= 31, 40) /
+     :  0.1009827202611D-09, 0.3290040429843D+01, 0.3738761453707D+01,
+     :  0.1047261388602D-09, 0.4229590090227D+01, 0.6282095334605D+01,
+     :  0.1047006652004D-09, 0.2418967680575D+01, 0.6284056366286D+01,
+     :  0.9609993143095D-10, 0.4627943659201D+01, 0.6069776770667D+01,
+     :  0.9590900593873D-10, 0.1894393939924D+01, 0.4136910472696D+01,
+     :  0.9146249188071D-10, 0.2010647519562D+01, 0.6496374930224D+01,
+     :  0.8545274480290D-10, 0.5529846956226D-01, 0.1194447056968D+01,
+     :  0.8224377881194D-10, 0.1254304102174D+01, 0.1589072916335D+01,
+     :  0.6183529510410D-10, 0.3360862168815D+01, 0.8827390247185D+01,
+     :  0.6259255147141D-10, 0.4755628243179D+01, 0.8429241228195D+01 /
+      DATA ((E1(I,J,1),I=1,3),J= 41, 50) /
+     :  0.5539291694151D-10, 0.5371746955142D+01, 0.4933208510675D+01,
+     :  0.7328259466314D-10, 0.4927699613906D+00, 0.4535059491685D+01,
+     :  0.6017835843560D-10, 0.5776682001734D-01, 0.1255903824622D+02,
+     :  0.7079827775243D-10, 0.4395059432251D+01, 0.5088628793478D+01,
+     :  0.5170358878213D-10, 0.5154062619954D+01, 0.1176985366291D+02,
+     :  0.4872301838682D-10, 0.6289611648973D+00, 0.6040347114260D+01,
+     :  0.5249869411058D-10, 0.5617272046949D+01, 0.3154687086868D+01,
+     :  0.4716172354411D-10, 0.3965901800877D+01, 0.5331357529664D+01,
+     :  0.4871214940964D-10, 0.4627507050093D+01, 0.1256967486051D+02,
+     :  0.4598076850751D-10, 0.6023631226459D+01, 0.6525804586632D+01 /
+      DATA ((E1(I,J,1),I=1,3),J= 51, 60) /
+     :  0.4562196089485D-10, 0.4138562084068D+01, 0.3930209696940D+01,
+     :  0.4325493872224D-10, 0.1330845906564D+01, 0.7632943190217D+01,
+     :  0.5673781176748D-10, 0.2558752615657D+01, 0.5729506548653D+01,
+     :  0.3961436642503D-10, 0.2728071734630D+01, 0.7234794171227D+01,
+     :  0.5101868209058D-10, 0.4113444965144D+01, 0.6836645152238D+01,
+     :  0.5257043167676D-10, 0.6195089830590D+01, 0.8031092209206D+01,
+     :  0.5076613989393D-10, 0.2305124132918D+01, 0.7477522907414D+01,
+     :  0.3342169352778D-10, 0.5415998155071D+01, 0.1097707878456D+02,
+     :  0.3545881983591D-10, 0.3727160564574D+01, 0.4164311961999D+01,
+     :  0.3364063738599D-10, 0.2901121049204D+00, 0.1137170464392D+02 /
+      DATA ((E1(I,J,1),I=1,3),J= 61, 70) /
+     :  0.3357039670776D-10, 0.1652229354331D+01, 0.5223693906222D+01,
+     :  0.4307412268687D-10, 0.4938909587445D+01, 0.1592596075957D+01,
+     :  0.3405769115435D-10, 0.2408890766511D+01, 0.3128388763578D+01,
+     :  0.3001926198480D-10, 0.4862239006386D+01, 0.1748016358760D+01,
+     :  0.2778264787325D-10, 0.5241168661353D+01, 0.7342457794669D+01,
+     :  0.2676159480666D-10, 0.3423593942199D+01, 0.2146165377750D+01,
+     :  0.2954273399939D-10, 0.1881721265406D+01, 0.5368044267797D+00,
+     :  0.3309362888795D-10, 0.1931525677349D+01, 0.8018209333619D+00,
+     :  0.2810283608438D-10, 0.2414659495050D+01, 0.5225775174439D+00,
+     :  0.3378045637764D-10, 0.4238019163430D+01, 0.1554202828031D+00 /
+      DATA ((E1(I,J,1),I=1,3),J= 71,NE1X) /
+     :  0.2558134979840D-10, 0.1828225235805D+01, 0.5230807360890D+01,
+     :  0.2273755578447D-10, 0.5858184283998D+01, 0.7084896783808D+01,
+     :  0.2294176037690D-10, 0.4514589779057D+01, 0.1726015463500D+02,
+     :  0.2533506099435D-10, 0.2355717851551D+01, 0.5216580451554D+01,
+     :  0.2716685375812D-10, 0.2221003625100D+01, 0.8635942003952D+01,
+     :  0.2419043435198D-10, 0.5955704951635D+01, 0.4690479774488D+01,
+     :  0.2521232544812D-10, 0.1395676848521D+01, 0.5481254917084D+01,
+     :  0.2630195021491D-10, 0.5727468918743D+01, 0.2629832328990D-01,
+     :  0.2548395840944D-10, 0.2628351859400D-03, 0.1349867339771D+01 /
+
+*  Sun-to-Earth, T^2, X
+      DATA ((E2(I,J,1),I=1,3),J=  1,NE2X) /
+     : -0.4143818297913D-10, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.2171497694435D-10, 0.4398225628264D+01, 0.1256615170089D+02,
+     :  0.9845398442516D-11, 0.2079720838384D+00, 0.6283075850446D+01,
+     :  0.9256833552682D-12, 0.4191264694361D+01, 0.1884922755134D+02,
+     :  0.1022049384115D-12, 0.5381133195658D+01, 0.8399684731857D+02 /
+
+*  Sun-to-Earth, T^0, Y
+      DATA ((E0(I,J,2),I=1,3),J=  1, 10) /
+     :  0.9998921098898D+00, 0.1826583913846D+00, 0.6283075850446D+01,
+     : -0.2442700893735D-01, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.8352929742915D-02, 0.1395277998680D+00, 0.1256615170089D+02,
+     :  0.1046697300177D-03, 0.9641423109763D-01, 0.1884922755134D+02,
+     :  0.3110841876663D-04, 0.5381140401712D+01, 0.8399684731857D+02,
+     :  0.2570269094593D-04, 0.5301016407128D+01, 0.5296909721118D+00,
+     :  0.2147389623610D-04, 0.2662510869850D+01, 0.1577343543434D+01,
+     :  0.1680344384050D-04, 0.5207904119704D+01, 0.6279552690824D+01,
+     :  0.1679117312193D-04, 0.4582187486968D+01, 0.6286599010068D+01,
+     :  0.1440512068440D-04, 0.1900688517726D+01, 0.2352866153506D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 11, 20) /
+     :  0.1135139664999D-04, 0.5273108538556D+01, 0.5223693906222D+01,
+     :  0.9345482571018D-05, 0.4503047687738D+01, 0.1203646072878D+02,
+     :  0.9007418719568D-05, 0.1605621059637D+01, 0.1021328554739D+02,
+     :  0.5671536712314D-05, 0.5812849070861D+00, 0.1059381944224D+01,
+     :  0.7451401861666D-05, 0.2807346794836D+01, 0.3981490189893D+00,
+     :  0.6393470057114D-05, 0.6029224133855D+01, 0.5753384878334D+01,
+     :  0.6814275881697D-05, 0.6472990145974D+00, 0.4705732307012D+01,
+     :  0.6113705628887D-05, 0.3813843419700D+01, 0.6812766822558D+01,
+     :  0.4503851367273D-05, 0.4527804370996D+01, 0.5884926831456D+01,
+     :  0.4522249141926D-05, 0.5991783029224D+01, 0.6256777527156D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 21, 30) /
+     :  0.4501794307018D-05, 0.3798703844397D+01, 0.6309374173736D+01,
+     :  0.5514927480180D-05, 0.3961257833388D+01, 0.5507553240374D+01,
+     :  0.4062862799995D-05, 0.5256247296369D+01, 0.6681224869435D+01,
+     :  0.5414900429712D-05, 0.5499032014097D+01, 0.7755226100720D+00,
+     :  0.5463153987424D-05, 0.6173092454097D+01, 0.1414349524433D+02,
+     :  0.5071611859329D-05, 0.2870244247651D+01, 0.7860419393880D+01,
+     :  0.2195112094455D-05, 0.2952338617201D+01, 0.1150676975667D+02,
+     :  0.2279139233919D-05, 0.5951775132933D+01, 0.7058598460518D+01,
+     :  0.2278386100876D-05, 0.4845456398785D+01, 0.4694002934110D+01,
+     :  0.2559088003308D-05, 0.6945321117311D+00, 0.1216800268190D+02 /
+      DATA ((E0(I,J,2),I=1,3),J= 31, 40) /
+     :  0.2561079286856D-05, 0.6167224608301D+01, 0.7099330490126D+00,
+     :  0.1792755796387D-05, 0.1400122509632D+01, 0.7962980379786D+00,
+     :  0.1818715656502D-05, 0.4703347611830D+01, 0.6283142985870D+01,
+     :  0.1818744924791D-05, 0.5086748900237D+01, 0.6283008715021D+01,
+     :  0.1554518791390D-05, 0.5331008042713D-01, 0.2513230340178D+02,
+     :  0.2063265737239D-05, 0.4283680484178D+01, 0.1179062909082D+02,
+     :  0.1497613520041D-05, 0.6074207826073D+01, 0.5486777812467D+01,
+     :  0.2000617940427D-05, 0.2501426281450D+01, 0.1778984560711D+02,
+     :  0.1289731195580D-05, 0.3646340599536D+01, 0.7079373888424D+01,
+     :  0.1282657998934D-05, 0.3232864804902D+01, 0.3738761453707D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 41, 50) /
+     :  0.1528915968658D-05, 0.5581433416669D+01, 0.2132990797783D+00,
+     :  0.1187304098432D-05, 0.5453576453694D+01, 0.9437762937313D+01,
+     :  0.7842782928118D-06, 0.2823953922273D+00, 0.8827390247185D+01,
+     :  0.7352892280868D-06, 0.1124369580175D+01, 0.1589072916335D+01,
+     :  0.6570189360797D-06, 0.2089154042840D+01, 0.1176985366291D+02,
+     :  0.6324967590410D-06, 0.6704855581230D+00, 0.6262300422539D+01,
+     :  0.6298289872283D-06, 0.2836414855840D+01, 0.6303851278352D+01,
+     :  0.6476686465855D-06, 0.4852433866467D+00, 0.7113454667900D-02,
+     :  0.8587034651234D-06, 0.1453511005668D+01, 0.1672837615881D+03,
+     :  0.8068948788113D-06, 0.9224087798609D+00, 0.6069776770667D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 51, 60) /
+     :  0.8353786011661D-06, 0.4631707184895D+01, 0.3340612434717D+01,
+     :  0.6009324532132D-06, 0.1829498827726D+01, 0.4136910472696D+01,
+     :  0.7558158559566D-06, 0.2588596800317D+01, 0.6496374930224D+01,
+     :  0.5809279504503D-06, 0.5516818853476D+00, 0.1097707878456D+02,
+     :  0.5374131950254D-06, 0.6275674734960D+01, 0.1194447056968D+01,
+     :  0.5711160507326D-06, 0.1091905956872D+01, 0.6282095334605D+01,
+     :  0.5710183170746D-06, 0.2415001635090D+01, 0.6284056366286D+01,
+     :  0.5144373590610D-06, 0.6020336443438D+01, 0.6290189305114D+01,
+     :  0.5103108927267D-06, 0.3775634564605D+01, 0.6275962395778D+01,
+     :  0.4960654697891D-06, 0.1073450946756D+01, 0.6127655567643D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 61, 70) /
+     :  0.4786385689280D-06, 0.2431178012310D+01, 0.6438496133249D+01,
+     :  0.6109911263665D-06, 0.5343356157914D+01, 0.3154687086868D+01,
+     :  0.4839898944024D-06, 0.5830833594047D-01, 0.8018209333619D+00,
+     :  0.4734822623919D-06, 0.4536080134821D+01, 0.3128388763578D+01,
+     :  0.4834741473290D-06, 0.2585090489754D+00, 0.7084896783808D+01,
+     :  0.5134858581156D-06, 0.4213317172603D+01, 0.1235285262111D+02,
+     :  0.5064004264978D-06, 0.4814418806478D+00, 0.1185621865188D+02,
+     :  0.3753476772761D-06, 0.1599953399788D+01, 0.8429241228195D+01,
+     :  0.4935264014283D-06, 0.2157417556873D+01, 0.2544314396739D+01,
+     :  0.3950929600897D-06, 0.3359394184254D+01, 0.5481254917084D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 71, 80) /
+     :  0.4895849789777D-06, 0.5165704376558D+01, 0.9225539266174D+01,
+     :  0.4215241688886D-06, 0.2065368800993D+01, 0.1726015463500D+02,
+     :  0.3796773731132D-06, 0.1468606346612D+01, 0.4265981595566D+00,
+     :  0.3114178142515D-06, 0.3615638079474D+01, 0.2146165377750D+01,
+     :  0.3260664220838D-06, 0.4417134922435D+01, 0.4164311961999D+01,
+     :  0.3976996123008D-06, 0.4700866883004D+01, 0.5856477690889D+01,
+     :  0.2801459672924D-06, 0.4538902060922D+01, 0.1256967486051D+02,
+     :  0.3638931868861D-06, 0.1334197991475D+01, 0.1807370494127D+02,
+     :  0.2487013269476D-06, 0.3749275558275D+01, 0.2629832328990D-01,
+     :  0.3034165481994D-06, 0.4236622030873D+00, 0.4535059491685D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 81, 90) /
+     :  0.2676278825586D-06, 0.5970848007811D+01, 0.3930209696940D+01,
+     :  0.2764903818918D-06, 0.5194636754501D+01, 0.1256262854127D+02,
+     :  0.2485149930507D-06, 0.1002434207846D+01, 0.5088628793478D+01,
+     :  0.2199305540941D-06, 0.3066773098403D+01, 0.1255903824622D+02,
+     :  0.2571106500435D-06, 0.7588312459063D+00, 0.1336797263425D+02,
+     :  0.2049751817158D-06, 0.3444977434856D+01, 0.1137170464392D+02,
+     :  0.2599707296297D-06, 0.1873128542205D+01, 0.7143069561767D+02,
+     :  0.1785018072217D-06, 0.5015891306615D+01, 0.1748016358760D+01,
+     :  0.2324833891115D-06, 0.4618271239730D+01, 0.1831953657923D+02,
+     :  0.1709711119545D-06, 0.5300003455669D+01, 0.4933208510675D+01 /
+      DATA ((E0(I,J,2),I=1,3),J= 91,100) /
+     :  0.2107159351716D-06, 0.2229819815115D+01, 0.7477522907414D+01,
+     :  0.1750333080295D-06, 0.6161485880008D+01, 0.1044738781244D+02,
+     :  0.2000598210339D-06, 0.2967357299999D+01, 0.8031092209206D+01,
+     :  0.1380920248681D-06, 0.3027007923917D+01, 0.8635942003952D+01,
+     :  0.1412460470299D-06, 0.6037597163798D+01, 0.2942463415728D+01,
+     :  0.1888459803001D-06, 0.8561476243374D+00, 0.1561374759853D+03,
+     :  0.1788370542585D-06, 0.4869736290209D+01, 0.1592596075957D+01,
+     :  0.1360893296167D-06, 0.3626411886436D+01, 0.1309584267300D+02,
+     :  0.1506846530160D-06, 0.1550975377427D+01, 0.1649636139783D+02,
+     :  0.1800913376176D-06, 0.2075826033190D+01, 0.1729818233119D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=101,110) /
+     :  0.1436261390649D-06, 0.6148876420255D+01, 0.2042657109477D+02,
+     :  0.1220227114151D-06, 0.4382583879906D+01, 0.7632943190217D+01,
+     :  0.1337883603592D-06, 0.2036644327361D+01, 0.1213955354133D+02,
+     :  0.1159326650738D-06, 0.3892276994687D+01, 0.5331357529664D+01,
+     :  0.1352853128569D-06, 0.1447950649744D+01, 0.1673046366289D+02,
+     :  0.1433408296083D-06, 0.4457854692961D+01, 0.7342457794669D+01,
+     :  0.1234701666518D-06, 0.1538818147151D+01, 0.6279485555400D+01,
+     :  0.1234027192007D-06, 0.1968523220760D+01, 0.6286666145492D+01,
+     :  0.1244024091797D-06, 0.5779803499985D+01, 0.1511046609763D+02,
+     :  0.1097934945516D-06, 0.6210975221388D+00, 0.1098880815746D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=111,120) /
+     :  0.1254611329856D-06, 0.2591963807998D+01, 0.1572083878776D+02,
+     :  0.1158247286784D-06, 0.2483612812670D+01, 0.5729506548653D+01,
+     :  0.9039078252960D-07, 0.3857554579796D+01, 0.9623688285163D+01,
+     :  0.9108024978836D-07, 0.5826368512984D+01, 0.7234794171227D+01,
+     :  0.8887068108436D-07, 0.3475694573987D+01, 0.6148010737701D+01,
+     :  0.8632374035438D-07, 0.3059070488983D-01, 0.6418140963190D+01,
+     :  0.7893186992967D-07, 0.1583194837728D+01, 0.2118763888447D+01,
+     :  0.8297650201172D-07, 0.8519770534637D+00, 0.1471231707864D+02,
+     :  0.1019759578988D-06, 0.1319598738732D+00, 0.1349867339771D+01,
+     :  0.1010037696236D-06, 0.9937860115618D+00, 0.6836645152238D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=121,130) /
+     :  0.1047727548266D-06, 0.1382138405399D+01, 0.5999216516294D+01,
+     :  0.7351993881086D-07, 0.3833397851735D+01, 0.6040347114260D+01,
+     :  0.9868771092341D-07, 0.2124913814390D+01, 0.6566935184597D+01,
+     :  0.7007321959390D-07, 0.5946305343763D+01, 0.6525804586632D+01,
+     :  0.6861411679709D-07, 0.4574654977089D+01, 0.7238675589263D+01,
+     :  0.7554519809614D-07, 0.5949232686844D+01, 0.1253985337760D+02,
+     :  0.9541880448335D-07, 0.3495242990564D+01, 0.2122839202813D+02,
+     :  0.7185606722155D-07, 0.4310113471661D+01, 0.6245048154254D+01,
+     :  0.7131360871710D-07, 0.5480309323650D+01, 0.6321103546637D+01,
+     :  0.6651142021039D-07, 0.5411097713654D+01, 0.5327476111629D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=131,140) /
+     :  0.8538618213667D-07, 0.1827849973951D+01, 0.1101510648075D+02,
+     :  0.8634954288044D-07, 0.5443584943349D+01, 0.5643178611111D+01,
+     :  0.7449415051484D-07, 0.2011535459060D+01, 0.5368044267797D+00,
+     :  0.7421047599169D-07, 0.3464562529249D+01, 0.2354323048545D+02,
+     :  0.6140694354424D-07, 0.5657556228815D+01, 0.1296430071988D+02,
+     :  0.6353525143033D-07, 0.3463816593821D+01, 0.1990745094947D+01,
+     :  0.6221964013447D-07, 0.1532259498697D+01, 0.9517183207817D+00,
+     :  0.5852480257244D-07, 0.1375396598875D+01, 0.9555997388169D+00,
+     :  0.6398637498911D-07, 0.2405645801972D+01, 0.2407292145756D+02,
+     :  0.7039744069878D-07, 0.5397541799027D+01, 0.5225775174439D+00 /
+      DATA ((E0(I,J,2),I=1,3),J=141,150) /
+     :  0.6977997694382D-07, 0.4762347105419D+01, 0.1097355562493D+02,
+     :  0.7460629558396D-07, 0.2711944692164D+01, 0.2200391463820D+02,
+     :  0.5376577536101D-07, 0.2352980430239D+01, 0.1431416805965D+02,
+     :  0.7530607893556D-07, 0.1943940180699D+01, 0.1842262939178D+02,
+     :  0.6822928971605D-07, 0.4337651846959D+01, 0.1554202828031D+00,
+     :  0.6220772380094D-07, 0.6716871369278D+00, 0.1845107853235D+02,
+     :  0.6586950799043D-07, 0.2229714460505D+01, 0.5216580451554D+01,
+     :  0.5873800565771D-07, 0.7627013920580D+00, 0.6398972393349D+00,
+     :  0.6264346929745D-07, 0.6202785478961D+00, 0.6277552955062D+01,
+     :  0.6257929115669D-07, 0.2886775596668D+01, 0.6288598745829D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=151,160) /
+     :  0.5343536033409D-07, 0.1977241012051D+01, 0.4690479774488D+01,
+     :  0.5587849781714D-07, 0.1922923484825D+01, 0.1551045220144D+01,
+     :  0.6905100845603D-07, 0.3570757164631D+01, 0.1030928125552D+00,
+     :  0.6178957066649D-07, 0.5197558947765D+01, 0.5230807360890D+01,
+     :  0.6187270224331D-07, 0.8193497368922D+00, 0.5650292065779D+01,
+     :  0.5385664291426D-07, 0.5406336665586D+01, 0.7771377146812D+02,
+     :  0.6329363917926D-07, 0.2837760654536D+01, 0.2608790314060D+02,
+     :  0.4546018761604D-07, 0.2933580297050D+01, 0.5535693017924D+00,
+     :  0.6196091049375D-07, 0.4157871494377D+01, 0.8467247584405D+02,
+     :  0.6159555108218D-07, 0.3211703561703D+01, 0.2394243902548D+03 /
+      DATA ((E0(I,J,2),I=1,3),J=161,170) /
+     :  0.4995340539317D-07, 0.1459098102922D+01, 0.4732030630302D+01,
+     :  0.5457031243572D-07, 0.1430457676136D+01, 0.6179983037890D+01,
+     :  0.4863461418397D-07, 0.2196425916730D+01, 0.9027992316901D+02,
+     :  0.5342947626870D-07, 0.2086612890268D+01, 0.6386168663001D+01,
+     :  0.5674296648439D-07, 0.2760204966535D+01, 0.6915859635113D+01,
+     :  0.4745783120161D-07, 0.4245368971862D+01, 0.6282970628506D+01,
+     :  0.4745676961198D-07, 0.5544725787016D+01, 0.6283181072386D+01,
+     :  0.4049796869973D-07, 0.2213984363586D+01, 0.6254626709878D+01,
+     :  0.4248333596940D-07, 0.8075781952896D+00, 0.7875671926403D+01,
+     :  0.4027178070205D-07, 0.1293268540378D+01, 0.6311524991013D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=171,180) /
+     :  0.4066543943476D-07, 0.3986141175804D+01, 0.3634620989887D+01,
+     :  0.4858863787880D-07, 0.1276112738231D+01, 0.5760498333002D+01,
+     :  0.5277398263530D-07, 0.4916111741527D+01, 0.2515860172507D+02,
+     :  0.4105635656559D-07, 0.1725805864426D+01, 0.6709674010002D+01,
+     :  0.4376781925772D-07, 0.2243642442106D+01, 0.6805653367890D+01,
+     :  0.3235827894693D-07, 0.3614135118271D+01, 0.1066495398892D+01,
+     :  0.3073244740308D-07, 0.2460873393460D+01, 0.5863591145557D+01,
+     :  0.3088609271373D-07, 0.5678431771790D+01, 0.9917696840332D+01,
+     :  0.3393022279836D-07, 0.3814017477291D+01, 0.1391601904066D+02,
+     :  0.3038686508802D-07, 0.4660216229171D+01, 0.1256621883632D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=181,190) /
+     :  0.4019677752497D-07, 0.5906906243735D+01, 0.1334167431096D+02,
+     :  0.3288834998232D-07, 0.9536146445882D+00, 0.1620077269078D+02,
+     :  0.3889973794631D-07, 0.3942205097644D+01, 0.7478166569050D-01,
+     :  0.3050438987141D-07, 0.1624810271286D+01, 0.1805292951336D+02,
+     :  0.3601142564638D-07, 0.4030467142575D+01, 0.6208294184755D+01,
+     :  0.3689015557141D-07, 0.3648878818694D+01, 0.5966683958112D+01,
+     :  0.3563471893565D-07, 0.5749584017096D+01, 0.6357857516136D+01,
+     :  0.2776183170667D-07, 0.2630124187070D+01, 0.3523159621801D-02,
+     :  0.2922350530341D-07, 0.1790346403629D+01, 0.1272157198369D+02,
+     :  0.3511076917302D-07, 0.6142198301611D+01, 0.6599467742779D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=191,200) /
+     :  0.3619351007632D-07, 0.1432421386492D+01, 0.6019991944201D+01,
+     :  0.2561254711098D-07, 0.2302822475792D+01, 0.1259245002418D+02,
+     :  0.2626903942920D-07, 0.8660470994571D+00, 0.6702560555334D+01,
+     :  0.2550187397083D-07, 0.6069721995383D+01, 0.1057540660594D+02,
+     :  0.2535873526138D-07, 0.1079020331795D-01, 0.3141537925223D+02,
+     :  0.3519786153847D-07, 0.3809066902283D+01, 0.2505706758577D+03,
+     :  0.3424651492873D-07, 0.2075435114417D+01, 0.6546159756691D+01,
+     :  0.2372676630861D-07, 0.2057803120154D+01, 0.2388894113936D+01,
+     :  0.2710980779541D-07, 0.1510068488010D+01, 0.1202934727411D+02,
+     :  0.3038710889704D-07, 0.5043617528901D+01, 0.1256608456547D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=201,210) /
+     :  0.2220364130585D-07, 0.3694793218205D+01, 0.1336244973887D+02,
+     :  0.3025880825460D-07, 0.5450618999049D-01, 0.2908881142201D+02,
+     :  0.2784493486864D-07, 0.3381164084502D+01, 0.1494531617769D+02,
+     :  0.2294414142438D-07, 0.4382309025210D+01, 0.6076890225335D+01,
+     :  0.2012723294724D-07, 0.9142212256518D+00, 0.6262720680387D+01,
+     :  0.2036357831958D-07, 0.5676172293154D+01, 0.4701116388778D+01,
+     :  0.2003474823288D-07, 0.2592767977625D+01, 0.6303431020504D+01,
+     :  0.2207144900109D-07, 0.5404976271180D+01, 0.6489261475556D+01,
+     :  0.2481664905135D-07, 0.4373284587027D+01, 0.1204357418345D+02,
+     :  0.2674949182295D-07, 0.5859182188482D+01, 0.4590910121555D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=211,220) /
+     :  0.2450554720322D-07, 0.4555381557451D+01, 0.1495633313810D+00,
+     :  0.2601975986457D-07, 0.3933165584959D+01, 0.1965104848470D+02,
+     :  0.2199860022848D-07, 0.5227977189087D+01, 0.1351787002167D+02,
+     :  0.2448121172316D-07, 0.4858060353949D+01, 0.1162474756779D+01,
+     :  0.1876014864049D-07, 0.5690546553605D+01, 0.6279194432410D+01,
+     :  0.1874513219396D-07, 0.4099539297446D+01, 0.6286957268481D+01,
+     :  0.2156380842559D-07, 0.4382594769913D+00, 0.1813929450232D+02,
+     :  0.1981691240061D-07, 0.1829784152444D+01, 0.4686889479442D+01,
+     :  0.2329992648539D-07, 0.2836254278973D+01, 0.1002183730415D+02,
+     :  0.1765184135302D-07, 0.2803494925833D+01, 0.4292330755499D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=221,230) /
+     :  0.2436368366085D-07, 0.2836897959677D+01, 0.9514313292143D+02,
+     :  0.2164089203889D-07, 0.6127522446024D+01, 0.6037244212485D+01,
+     :  0.1847755034221D-07, 0.3683163635008D+01, 0.2427287361862D+00,
+     :  0.1674798769966D-07, 0.3316993867246D+00, 0.1311972100268D+02,
+     :  0.2222542124356D-07, 0.8294097805480D+00, 0.1266924451345D+02,
+     :  0.2071074505925D-07, 0.3659492220261D+01, 0.6528907488406D+01,
+     :  0.1608224471835D-07, 0.4774492067182D+01, 0.1352175143971D+02,
+     :  0.1857583439071D-07, 0.2873120597682D+01, 0.8662240327241D+01,
+     :  0.1793018836159D-07, 0.5282441177929D+00, 0.6819880277225D+01,
+     :  0.1575391221692D-07, 0.1320789654258D+01, 0.1102062672231D+00 /
+      DATA ((E0(I,J,2),I=1,3),J=231,240) /
+     :  0.1840132009557D-07, 0.1917110916256D+01, 0.6514761976723D+02,
+     :  0.1760917288281D-07, 0.2972635937132D+01, 0.5746271423666D+01,
+     :  0.1561779518516D-07, 0.4372569261981D+01, 0.6272439236156D+01,
+     :  0.1558687885205D-07, 0.5416424926425D+01, 0.6293712464735D+01,
+     :  0.1951359382579D-07, 0.3094448898752D+01, 0.2301353951334D+02,
+     :  0.1569144275614D-07, 0.2802103689808D+01, 0.1765478049437D+02,
+     :  0.1479130389462D-07, 0.2136435020467D+01, 0.2077542790660D-01,
+     :  0.1467828510764D-07, 0.7072627435674D+00, 0.1052268489556D+01,
+     :  0.1627627337440D-07, 0.3947607143237D+01, 0.6327837846670D+00,
+     :  0.1503498479758D-07, 0.4079248909190D+01, 0.7626583626240D-01 /
+      DATA ((E0(I,J,2),I=1,3),J=241,250) /
+     :  0.1297967708237D-07, 0.6269637122840D+01, 0.1149965630200D+02,
+     :  0.1374416896634D-07, 0.4175657970702D+01, 0.6016468784579D+01,
+     :  0.1783812325219D-07, 0.1476540547560D+01, 0.3301902111895D+02,
+     :  0.1525884228756D-07, 0.4653477715241D+01, 0.9411464614024D+01,
+     :  0.1451067396763D-07, 0.2573001128225D+01, 0.1277945078067D+02,
+     :  0.1297713111950D-07, 0.5612799618771D+01, 0.6549682916313D+01,
+     :  0.1462784012820D-07, 0.4189661623870D+01, 0.1863592847156D+02,
+     :  0.1384185980007D-07, 0.2656915472196D+01, 0.2379164476796D+01,
+     :  0.1221497599801D-07, 0.5612515760138D+01, 0.1257326515556D+02,
+     :  0.1560574525896D-07, 0.4783414317919D+01, 0.1887552587463D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=251,260) /
+     :  0.1544598372036D-07, 0.2694431138063D+01, 0.1820933031200D+02,
+     :  0.1531678928696D-07, 0.4105103489666D+01, 0.2593412433514D+02,
+     :  0.1349321503795D-07, 0.3082437194015D+00, 0.5120601093667D+01,
+     :  0.1252030290917D-07, 0.6124072334087D+01, 0.6993008899458D+01,
+     :  0.1459243816687D-07, 0.3733103981697D+01, 0.3813291813120D-01,
+     :  0.1226103625262D-07, 0.1267127706817D+01, 0.2435678079171D+02,
+     :  0.1019449641504D-07, 0.4367790112269D+01, 0.1725663147538D+02,
+     :  0.1380789433607D-07, 0.3387201768700D+01, 0.2458316379602D+00,
+     :  0.1019453421658D-07, 0.9204143073737D+00, 0.6112403035119D+01,
+     :  0.1297929434405D-07, 0.5786874896426D+01, 0.1249137003520D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=261,270) /
+     :  0.9912677786097D-08, 0.3164232870746D+01, 0.6247047890016D+01,
+     :  0.9829386098599D-08, 0.2586762413351D+01, 0.6453748665772D+01,
+     :  0.1226807746104D-07, 0.6239068436607D+01, 0.5429879531333D+01,
+     :  0.1192691755997D-07, 0.1867380051424D+01, 0.6290122169689D+01,
+     :  0.9836499227081D-08, 0.3424716293727D+00, 0.6319103810876D+01,
+     :  0.9642862564285D-08, 0.5661372990657D+01, 0.8273820945392D+01,
+     :  0.1165184404862D-07, 0.5768367239093D+01, 0.1778273215245D+02,
+     :  0.1175794418818D-07, 0.1657351222943D+01, 0.6276029531202D+01,
+     :  0.1018948635601D-07, 0.6458292350865D+00, 0.1254537627298D+02,
+     :  0.9500383606676D-08, 0.1054306140741D+01, 0.1256517118505D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=271,280) /
+     :  0.1227512202906D-07, 0.2505278379114D+01, 0.2248384854122D+02,
+     :  0.9664792009993D-08, 0.4289737277000D+01, 0.6259197520765D+01,
+     :  0.9613285666331D-08, 0.5500597673141D+01, 0.6306954180126D+01,
+     :  0.1117906736211D-07, 0.2361405953468D+01, 0.1779695906178D+02,
+     :  0.9611378640782D-08, 0.2851310576269D+01, 0.2061856251104D+00,
+     :  0.8845354852370D-08, 0.6208777705343D+01, 0.1692165728891D+01,
+     :  0.1054046966600D-07, 0.5413091423934D+01, 0.2204125344462D+00,
+     :  0.1215539124483D-07, 0.5613969479755D+01, 0.8257698122054D+02,
+     :  0.9932460955209D-08, 0.1106124877015D+01, 0.1017725758696D+02,
+     :  0.8785804715043D-08, 0.2869224476477D+01, 0.9491756770005D+00 /
+      DATA ((E0(I,J,2),I=1,3),J=281,290) /
+     :  0.8538084097562D-08, 0.6159640899344D+01, 0.6393282117669D+01,
+     :  0.8648994369529D-08, 0.1374901198784D+01, 0.4804209201333D+01,
+     :  0.1039063219067D-07, 0.5171080641327D+01, 0.1550861511662D+02,
+     :  0.8867983926439D-08, 0.8317320304902D+00, 0.3903911373650D+01,
+     :  0.8327495955244D-08, 0.3605591969180D+01, 0.6172869583223D+01,
+     :  0.9243088356133D-08, 0.6114299196843D+01, 0.6267823317922D+01,
+     :  0.9205657357835D-08, 0.3675153683737D+01, 0.6298328382969D+01,
+     :  0.1033269714606D-07, 0.3313328813024D+01, 0.5573142801433D+01,
+     :  0.8001706275552D-08, 0.2019980960053D+01, 0.2648454860559D+01,
+     :  0.9171858254191D-08, 0.8992015524177D+00, 0.1498544001348D+03 /
+      DATA ((E0(I,J,2),I=1,3),J=291,300) /
+     :  0.1075327150242D-07, 0.2898669963648D+01, 0.3694923081589D+02,
+     :  0.9884866689828D-08, 0.4946715904478D+01, 0.1140367694411D+02,
+     :  0.9541835576677D-08, 0.2371787888469D+01, 0.1256713221673D+02,
+     :  0.7739903376237D-08, 0.2213775190612D+01, 0.7834121070590D+01,
+     :  0.7311962684106D-08, 0.3429378787739D+01, 0.1192625446156D+02,
+     :  0.9724904869624D-08, 0.6195878564404D+01, 0.2280573557157D+02,
+     :  0.9251628983612D-08, 0.6511509527390D+00, 0.2787043132925D+01,
+     :  0.7320763787842D-08, 0.6001083639421D+01, 0.6282655592598D+01,
+     :  0.7320296650962D-08, 0.3789073265087D+01, 0.6283496108294D+01,
+     :  0.7947032271039D-08, 0.1059659582204D+01, 0.1241073141809D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=301,310) /
+     :  0.9005277053115D-08, 0.1280315624361D+01, 0.6281591679874D+01,
+     :  0.8995601652048D-08, 0.2224439106766D+01, 0.6284560021018D+01,
+     :  0.8288040568796D-08, 0.5234914433867D+01, 0.1241658836951D+02,
+     :  0.6359381347255D-08, 0.4137989441490D+01, 0.1596186371003D+01,
+     :  0.8699572228626D-08, 0.1758411009497D+01, 0.6133512519065D+01,
+     :  0.6456797542736D-08, 0.5919285089994D+01, 0.1685848245639D+02,
+     :  0.7424573475452D-08, 0.5414616938827D+01, 0.4061219149443D+01,
+     :  0.7235671196168D-08, 0.1496516557134D+01, 0.1610006857377D+03,
+     :  0.8104015182733D-08, 0.1919918242764D+01, 0.8460828644453D+00,
+     :  0.8098576535937D-08, 0.3819615855458D+01, 0.3894181736510D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=311,320) /
+     :  0.6275292346625D-08, 0.6244264115141D+01, 0.8531963191132D+00,
+     :  0.6052432989112D-08, 0.5037731872610D+00, 0.1567108171867D+02,
+     :  0.5705651535817D-08, 0.2984557271995D+01, 0.1258692712880D+02,
+     :  0.5789650115138D-08, 0.6087038140697D+01, 0.1193336791622D+02,
+     :  0.5512132153377D-08, 0.5855668994076D+01, 0.1232342296471D+02,
+     :  0.7388890819102D-08, 0.2443128574740D+01, 0.4907302013889D+01,
+     :  0.5467593991798D-08, 0.3017561234194D+01, 0.1884211409667D+02,
+     :  0.6388519802999D-08, 0.5887386712935D+01, 0.5217580628120D+02,
+     :  0.6106777149944D-08, 0.3483461059895D+00, 0.1422690933580D-01,
+     :  0.7383420275489D-08, 0.5417387056707D+01, 0.2358125818164D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=321,330) /
+     :  0.5505208141738D-08, 0.2848193644783D+01, 0.1151388321134D+02,
+     :  0.6310757462877D-08, 0.2349882520828D+01, 0.1041998632314D+02,
+     :  0.6166904929691D-08, 0.5728575944077D+00, 0.6151533897323D+01,
+     :  0.5263442042754D-08, 0.4495796125937D+01, 0.1885275071096D+02,
+     :  0.5591828082629D-08, 0.1355441967677D+01, 0.4337116142245D+00,
+     :  0.5397051680497D-08, 0.1673422864307D+01, 0.6286362197481D+01,
+     :  0.5396992745159D-08, 0.1833502206373D+01, 0.6279789503410D+01,
+     :  0.6572913000726D-08, 0.3331122065824D+01, 0.1176433076753D+02,
+     :  0.5123421866413D-08, 0.2165327142679D+01, 0.1245594543367D+02,
+     :  0.5930495725999D-08, 0.2931146089284D+01, 0.6414617803568D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=331,340) /
+     :  0.6431797403933D-08, 0.4134407994088D+01, 0.1350651127443D+00,
+     :  0.5003182207604D-08, 0.3805420303749D+01, 0.1096996532989D+02,
+     :  0.5587731032504D-08, 0.1082469260599D+01, 0.6062663316000D+01,
+     :  0.5935263407816D-08, 0.8384333678401D+00, 0.5326786718777D+01,
+     :  0.4756019827760D-08, 0.3552588749309D+01, 0.3104930017775D+01,
+     :  0.6599951172637D-08, 0.4320826409528D+01, 0.4087944051283D+02,
+     :  0.5902606868464D-08, 0.4811879454445D+01, 0.5849364236221D+01,
+     :  0.5921147809031D-08, 0.9942628922396D-01, 0.1581959461667D+01,
+     :  0.5505382581266D-08, 0.2466557607764D+01, 0.6503488384892D+01,
+     :  0.5353771071862D-08, 0.4551978748683D+01, 0.1735668374386D+03 /
+      DATA ((E0(I,J,2),I=1,3),J=341,350) /
+     :  0.5063282210946D-08, 0.5710812312425D+01, 0.1248988586463D+02,
+     :  0.5926120403383D-08, 0.1333998428358D+01, 0.2673594526851D+02,
+     :  0.5211016176149D-08, 0.4649315360760D+01, 0.2460261242967D+02,
+     :  0.5347075084894D-08, 0.5512754081205D+01, 0.4171425416666D+01,
+     :  0.4872609773574D-08, 0.1308025299938D+01, 0.5333900173445D+01,
+     :  0.4727711321420D-08, 0.2144908368062D+01, 0.7232251527446D+01,
+     :  0.6029426018652D-08, 0.5567259412084D+01, 0.3227113045244D+03,
+     :  0.4321485284369D-08, 0.5230667156451D+01, 0.9388005868221D+01,
+     :  0.4476406760553D-08, 0.6134081115303D+01, 0.5547199253223D+01,
+     :  0.5835268277420D-08, 0.4783808492071D+01, 0.7285056171570D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=351,360) /
+     :  0.5172183602748D-08, 0.5161817911099D+01, 0.1884570439172D+02,
+     :  0.5693571465184D-08, 0.1381646203111D+01, 0.9723862754494D+02,
+     :  0.4060634965349D-08, 0.3876705259495D+00, 0.4274518229222D+01,
+     :  0.3967398770473D-08, 0.5029491776223D+01, 0.3496032717521D+01,
+     :  0.3943754005255D-08, 0.1923162955490D+01, 0.6244942932314D+01,
+     :  0.4781323427824D-08, 0.4633332586423D+01, 0.2929661536378D+02,
+     :  0.3871483781204D-08, 0.1616650009743D+01, 0.6321208768577D+01,
+     :  0.5141741733997D-08, 0.9817316704659D-01, 0.1232032006293D+02,
+     :  0.4002385978497D-08, 0.3656161212139D+01, 0.7018952447668D+01,
+     :  0.4901092604097D-08, 0.4404098713092D+01, 0.1478866649112D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=361,370) /
+     :  0.3740932630345D-08, 0.5181188732639D+00, 0.6922973089781D+01,
+     :  0.4387283718538D-08, 0.3254859566869D+01, 0.2331413144044D+03,
+     :  0.5019197802033D-08, 0.3086773224677D+01, 0.1715706182245D+02,
+     :  0.3834931695175D-08, 0.2797882673542D+01, 0.1491901785440D+02,
+     :  0.3760413942497D-08, 0.2892676280217D+01, 0.1726726808967D+02,
+     :  0.3719717204628D-08, 0.5861046025739D+01, 0.6297302759782D+01,
+     :  0.4145623530149D-08, 0.2168239627033D+01, 0.1376059875786D+02,
+     :  0.3932788425380D-08, 0.6271811124181D+01, 0.7872148766781D+01,
+     :  0.3686377476857D-08, 0.3936853151404D+01, 0.6268848941110D+01,
+     :  0.3779077950339D-08, 0.1404148734043D+01, 0.4157198507331D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=371,380) /
+     :  0.4091334550598D-08, 0.2452436180854D+01, 0.9779108567966D+01,
+     :  0.3926694536146D-08, 0.6102292739040D+01, 0.1098419223922D+02,
+     :  0.4841000253289D-08, 0.6072760457276D+01, 0.1252801878276D+02,
+     :  0.4949340130240D-08, 0.1154832815171D+01, 0.1617106187867D+03,
+     :  0.3761557737360D-08, 0.5527545321897D+01, 0.3185192151914D+01,
+     :  0.3647396268188D-08, 0.1525035688629D+01, 0.6271346477544D+01,
+     :  0.3932405074189D-08, 0.5570681040569D+01, 0.2139354194808D+02,
+     :  0.3631322501141D-08, 0.1981240601160D+01, 0.6294805223347D+01,
+     :  0.4130007425139D-08, 0.2050060880201D+01, 0.2195415756911D+02,
+     :  0.4433905965176D-08, 0.3277477970321D+01, 0.7445550607224D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=381,390) /
+     :  0.3851814176947D-08, 0.5210690074886D+01, 0.9562891316684D+00,
+     :  0.3485807052785D-08, 0.6653274904611D+00, 0.1161697602389D+02,
+     :  0.3979772816991D-08, 0.1767941436148D+01, 0.2277943724828D+02,
+     :  0.3402607460500D-08, 0.3421746306465D+01, 0.1087398597200D+02,
+     :  0.4049993000926D-08, 0.1127144787547D+01, 0.3163918923335D+00,
+     :  0.3420511182382D-08, 0.4214794779161D+01, 0.1362553364512D+02,
+     :  0.3640772365012D-08, 0.5324905497687D+01, 0.1725304118033D+02,
+     :  0.3323037987501D-08, 0.6135761838271D+01, 0.6279143387820D+01,
+     :  0.4503141663637D-08, 0.1802305450666D+01, 0.1385561574497D+01,
+     :  0.4314560055588D-08, 0.4812299731574D+01, 0.4176041334900D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=391,400) /
+     :  0.3294226949110D-08, 0.3657547059723D+01, 0.6287008313071D+01,
+     :  0.3215657197281D-08, 0.4866676894425D+01, 0.5749861718712D+01,
+     :  0.4129362656266D-08, 0.3809342558906D+01, 0.5905702259363D+01,
+     :  0.3137762976388D-08, 0.2494635174443D+01, 0.2099539292909D+02,
+     :  0.3514010952384D-08, 0.2699961831678D+01, 0.7335344340001D+01,
+     :  0.3327607571530D-08, 0.3318457714816D+01, 0.5436992986000D+01,
+     :  0.3541066946675D-08, 0.4382703582466D+01, 0.1234573916645D+02,
+     :  0.3216179847052D-08, 0.5271066317054D+01, 0.3802769619140D-01,
+     :  0.2959045059570D-08, 0.5819591585302D+01, 0.2670964694522D+02,
+     :  0.3884040326665D-08, 0.5980934960428D+01, 0.6660449441528D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=401,410) /
+     :  0.2922027539886D-08, 0.3337290282483D+01, 0.1375773836557D+01,
+     :  0.4110846382042D-08, 0.5742978187327D+01, 0.4480965020977D+02,
+     :  0.2934508411032D-08, 0.2278075804200D+01, 0.6408777551755D+00,
+     :  0.3966896193000D-08, 0.5835747858477D+01, 0.3773735910827D+00,
+     :  0.3286695827610D-08, 0.5838898193902D+01, 0.3932462625300D-02,
+     :  0.3720643094196D-08, 0.1122212337858D+01, 0.1646033343740D+02,
+     :  0.3285508906174D-08, 0.9182250996416D+00, 0.1081813534213D+02,
+     :  0.3753880575973D-08, 0.5174761973266D+01, 0.5642198095270D+01,
+     :  0.3022129385587D-08, 0.3381611020639D+01, 0.2982630633589D+02,
+     :  0.2798569205621D-08, 0.3546193723922D+01, 0.1937891852345D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=411,420) /
+     :  0.3397872070505D-08, 0.4533203197934D+01, 0.6923953605621D+01,
+     :  0.3708099772977D-08, 0.2756168198616D+01, 0.3066615496545D+02,
+     :  0.3599283541510D-08, 0.1934395469918D+01, 0.6147450479709D+01,
+     :  0.3688702753059D-08, 0.7149920971109D+00, 0.2636725487657D+01,
+     :  0.2681084724003D-08, 0.4899819493154D+01, 0.6816289982179D+01,
+     :  0.3495993460759D-08, 0.1572418915115D+01, 0.6418701221183D+01,
+     :  0.3130770324995D-08, 0.8912190180489D+00, 0.1235996607578D+02,
+     :  0.2744353821941D-08, 0.3800821940055D+01, 0.2059724391010D+02,
+     :  0.2842732906341D-08, 0.2644717440029D+01, 0.2828699048865D+02,
+     :  0.3046882682154D-08, 0.3987793020179D+01, 0.6055599646783D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=421,430) /
+     :  0.2399072455143D-08, 0.9908826440764D+00, 0.6255674361143D+01,
+     :  0.2384306274204D-08, 0.2516149752220D+01, 0.6310477339748D+01,
+     :  0.2977324500559D-08, 0.5849195642118D+01, 0.1652265972112D+02,
+     :  0.3062835258972D-08, 0.1681660100162D+01, 0.1172006883645D+02,
+     :  0.3109682589231D-08, 0.5804143987737D+00, 0.2751146787858D+02,
+     :  0.2903920355299D-08, 0.5800768280123D+01, 0.6510552054109D+01,
+     :  0.2823221989212D-08, 0.9241118370216D+00, 0.5469525544182D+01,
+     :  0.3187949696649D-08, 0.3139776445735D+01, 0.1693792562116D+03,
+     :  0.2922559771655D-08, 0.3549440782984D+01, 0.2630839062450D+00,
+     :  0.2436302066603D-08, 0.4735540696319D+01, 0.3946258593675D+00 /
+      DATA ((E0(I,J,2),I=1,3),J=431,440) /
+     :  0.3049473043606D-08, 0.4998289124561D+01, 0.8390110365991D+01,
+     :  0.2863682575784D-08, 0.6709515671102D+00, 0.2243449970715D+00,
+     :  0.2641750517966D-08, 0.5410978257284D+01, 0.2986433403208D+02,
+     :  0.2704093466243D-08, 0.4778317207821D+01, 0.6129297044991D+01,
+     :  0.2445522177011D-08, 0.6009020662222D+01, 0.1171295538178D+02,
+     :  0.2623608810230D-08, 0.5010449777147D+01, 0.6436854655901D+01,
+     :  0.2079259704053D-08, 0.5980943768809D+01, 0.2019909489111D+02,
+     :  0.2820225596771D-08, 0.2679965110468D+01, 0.5934151399930D+01,
+     :  0.2365221950927D-08, 0.1894231148810D+01, 0.2470570524223D+02,
+     :  0.2359682077149D-08, 0.4220752950780D+01, 0.8671969964381D+01 /
+      DATA ((E0(I,J,2),I=1,3),J=441,450) /
+     :  0.2387577137206D-08, 0.2571783940617D+01, 0.7096626156709D+01,
+     :  0.1982102089816D-08, 0.5169765997119D+00, 0.1727188400790D+02,
+     :  0.2687502389925D-08, 0.6239078264579D+01, 0.7075506709219D+02,
+     :  0.2207751669135D-08, 0.2031184412677D+01, 0.4377611041777D+01,
+     :  0.2618370214274D-08, 0.8266079985979D+00, 0.6632000300961D+01,
+     :  0.2591951887361D-08, 0.8819350522008D+00, 0.4873985990671D+02,
+     :  0.2375055656248D-08, 0.3520944177789D+01, 0.1590676413561D+02,
+     :  0.2472019978911D-08, 0.1551431908671D+01, 0.6612329252343D+00,
+     :  0.2368157127199D-08, 0.4178610147412D+01, 0.3459636466239D+02,
+     :  0.1764846605693D-08, 0.1506764000157D+01, 0.1980094587212D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=451,460) /
+     :  0.2291769608798D-08, 0.2118250611782D+01, 0.2844914056730D-01,
+     :  0.2209997316943D-08, 0.3363255261678D+01, 0.2666070658668D+00,
+     :  0.2292699097923D-08, 0.4200423956460D+00, 0.1484170571900D-02,
+     :  0.1629683015329D-08, 0.2331362582487D+01, 0.3035599730800D+02,
+     :  0.2206492862426D-08, 0.3400274026992D+01, 0.6281667977667D+01,
+     :  0.2205746568257D-08, 0.1066051230724D+00, 0.6284483723224D+01,
+     :  0.2026310767991D-08, 0.2779066487979D+01, 0.2449240616245D+02,
+     :  0.1762977622163D-08, 0.9951450691840D+00, 0.2045286941806D+02,
+     :  0.1368535049606D-08, 0.6402447365817D+00, 0.2473415438279D+02,
+     :  0.1720598775450D-08, 0.2303524214705D+00, 0.1679593901136D+03 /
+      DATA ((E0(I,J,2),I=1,3),J=461,470) /
+     :  0.1702429015449D-08, 0.6164622655048D+01, 0.3338575901272D+03,
+     :  0.1414033197685D-08, 0.3954561185580D+01, 0.1624205518357D+03,
+     :  0.1573768958043D-08, 0.2028286308984D+01, 0.3144167757552D+02,
+     :  0.1650705184447D-08, 0.2304040666128D+01, 0.5267006960365D+02,
+     :  0.1651087618855D-08, 0.2538461057280D+01, 0.8956999012000D+02,
+     :  0.1616409518983D-08, 0.5111054348152D+01, 0.3332657872986D+02,
+     :  0.1537175173581D-08, 0.5601130666603D+01, 0.3852657435933D+02,
+     :  0.1593191980553D-08, 0.2614340453411D+01, 0.2282781046519D+03,
+     :  0.1499480170643D-08, 0.3624721577264D+01, 0.2823723341956D+02,
+     :  0.1493807843235D-08, 0.4214569879008D+01, 0.2876692439167D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=471,480) /
+     :  0.1074571199328D-08, 0.1496911744704D+00, 0.8397383534231D+02,
+     :  0.1074406983417D-08, 0.1187817671922D+01, 0.8401985929482D+02,
+     :  0.9757576855851D-09, 0.2655703035858D+01, 0.7826370942180D+02,
+     :  0.1258432887565D-08, 0.4969896184844D+01, 0.3115650189215D+03,
+     :  0.1240336343282D-08, 0.5192460776926D+01, 0.1784300471910D+03,
+     :  0.9016107005164D-09, 0.1960356923057D+01, 0.5886454391678D+02,
+     :  0.1135392360918D-08, 0.5082427809068D+01, 0.7842370451713D+02,
+     :  0.9216046089565D-09, 0.2793775037273D+01, 0.1014262087719D+03,
+     :  0.1061276615030D-08, 0.3726144311409D+01, 0.5660027930059D+02,
+     :  0.1010110596263D-08, 0.7404080708937D+00, 0.4245678405627D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=481,490) /
+     :  0.7217424756199D-09, 0.2697449980577D-01, 0.2457074661053D+03,
+     :  0.6912003846756D-09, 0.4253296276335D+01, 0.1679936946371D+03,
+     :  0.6871814664847D-09, 0.5148072412354D+01, 0.6053048899753D+02,
+     :  0.4887158016343D-09, 0.2153581148294D+01, 0.9656299901946D+02,
+     :  0.5161802866314D-09, 0.3852750634351D+01, 0.2442876000072D+03,
+     :  0.5652599559057D-09, 0.1233233356270D+01, 0.8365903305582D+02,
+     :  0.4710812608586D-09, 0.5610486976767D+01, 0.3164282286739D+03,
+     :  0.4909977500324D-09, 0.1639629524123D+01, 0.4059982187939D+03,
+     :  0.4772641839378D-09, 0.3737100368583D+01, 0.1805255418145D+03,
+     :  0.4487562567153D-09, 0.1158417054478D+00, 0.8433466158131D+02 /
+      DATA ((E0(I,J,2),I=1,3),J=491,500) /
+     :  0.3943441230497D-09, 0.6243502862796D+00, 0.2568537517081D+03,
+     :  0.3952236913598D-09, 0.3510377382385D+01, 0.2449975330562D+03,
+     :  0.3788898363417D-09, 0.5916128302299D+01, 0.1568131045107D+03,
+     :  0.3738329328831D-09, 0.1042266763456D+01, 0.3948519331910D+03,
+     :  0.2451199165151D-09, 0.1166788435700D+01, 0.1435713242844D+03,
+     :  0.2436734402904D-09, 0.3254726114901D+01, 0.2268582385539D+03,
+     :  0.2213605274325D-09, 0.1687210598530D+01, 0.1658638954901D+03,
+     :  0.1491521204829D-09, 0.2657541786794D+01, 0.2219950288015D+03,
+     :  0.1474995329744D-09, 0.5013089805819D+01, 0.3052819430710D+03,
+     :  0.1661939475656D-09, 0.5495315428418D+01, 0.2526661704812D+03 /
+      DATA ((E0(I,J,2),I=1,3),J=501,NE0Y) /
+     :  0.9015946748003D-10, 0.2236989966505D+01, 0.4171445043968D+03 /
+
+*  Sun-to-Earth, T^1, Y
+      DATA ((E1(I,J,2),I=1,3),J=  1, 10) /
+     :  0.9304690546528D-06, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.5150715570663D-06, 0.4431807116294D+01, 0.1256615170089D+02,
+     :  0.1290825411056D-07, 0.4388610039678D+01, 0.1884922755134D+02,
+     :  0.4645466665386D-08, 0.5827263376034D+01, 0.6283075850446D+01,
+     :  0.2079625310718D-08, 0.1621698662282D+00, 0.6279552690824D+01,
+     :  0.2078189850907D-08, 0.3344713435140D+01, 0.6286599010068D+01,
+     :  0.6207190138027D-09, 0.5074049319576D+01, 0.4705732307012D+01,
+     :  0.5989826532569D-09, 0.2231842216620D+01, 0.6256777527156D+01,
+     :  0.5961360812618D-09, 0.1274975769045D+01, 0.6309374173736D+01,
+     :  0.4874165471016D-09, 0.3642277426779D+01, 0.7755226100720D+00 /
+      DATA ((E1(I,J,2),I=1,3),J= 11, 20) /
+     :  0.4283834034360D-09, 0.5148765510106D+01, 0.1059381944224D+01,
+     :  0.4652389287529D-09, 0.4715794792175D+01, 0.7860419393880D+01,
+     :  0.3751707476401D-09, 0.6617207370325D+00, 0.5753384878334D+01,
+     :  0.3559998806198D-09, 0.6155548875404D+01, 0.5884926831456D+01,
+     :  0.3558447558857D-09, 0.2898827297664D+01, 0.6812766822558D+01,
+     :  0.3211116927106D-09, 0.3625813502509D+01, 0.6681224869435D+01,
+     :  0.2875609914672D-09, 0.4345435813134D+01, 0.2513230340178D+02,
+     :  0.2843109704069D-09, 0.5862263940038D+01, 0.6127655567643D+01,
+     :  0.2744676468427D-09, 0.3926419475089D+01, 0.6438496133249D+01,
+     :  0.2481285237789D-09, 0.1351976572828D+01, 0.5486777812467D+01 /
+      DATA ((E1(I,J,2),I=1,3),J= 21, 30) /
+     :  0.2060338481033D-09, 0.2147556998591D+01, 0.7079373888424D+01,
+     :  0.2015822358331D-09, 0.4408358972216D+01, 0.6290189305114D+01,
+     :  0.2001195944195D-09, 0.5385829822531D+01, 0.6275962395778D+01,
+     :  0.1953667642377D-09, 0.1304933746120D+01, 0.5507553240374D+01,
+     :  0.1839744078713D-09, 0.6173567228835D+01, 0.1179062909082D+02,
+     :  0.1643334294845D-09, 0.4635942997523D+01, 0.1150676975667D+02,
+     :  0.1768051018652D-09, 0.5086283558874D+01, 0.7113454667900D-02,
+     :  0.1674874205489D-09, 0.2243332137241D+01, 0.7058598460518D+01,
+     :  0.1421445397609D-09, 0.6186899771515D+01, 0.7962980379786D+00,
+     :  0.1255163958267D-09, 0.5730238465658D+01, 0.4694002934110D+01 /
+      DATA ((E1(I,J,2),I=1,3),J= 31, 40) /
+     :  0.1013945281961D-09, 0.1726055228402D+01, 0.3738761453707D+01,
+     :  0.1047294335852D-09, 0.2658801228129D+01, 0.6282095334605D+01,
+     :  0.1047103879392D-09, 0.8481047835035D+00, 0.6284056366286D+01,
+     :  0.9530343962826D-10, 0.3079267149859D+01, 0.6069776770667D+01,
+     :  0.9604637611690D-10, 0.3258679792918D+00, 0.4136910472696D+01,
+     :  0.9153518537177D-10, 0.4398599886584D+00, 0.6496374930224D+01,
+     :  0.8562458214922D-10, 0.4772686794145D+01, 0.1194447056968D+01,
+     :  0.8232525360654D-10, 0.5966220721679D+01, 0.1589072916335D+01,
+     :  0.6150223411438D-10, 0.1780985591923D+01, 0.8827390247185D+01,
+     :  0.6272087858000D-10, 0.3184305429012D+01, 0.8429241228195D+01 /
+      DATA ((E1(I,J,2),I=1,3),J= 41, 50) /
+     :  0.5540476311040D-10, 0.3801260595433D+01, 0.4933208510675D+01,
+     :  0.7331901699361D-10, 0.5205948591865D+01, 0.4535059491685D+01,
+     :  0.6018528702791D-10, 0.4770139083623D+01, 0.1255903824622D+02,
+     :  0.5150530724804D-10, 0.3574796899585D+01, 0.1176985366291D+02,
+     :  0.6471933741811D-10, 0.2679787266521D+01, 0.5088628793478D+01,
+     :  0.5317460644174D-10, 0.9528763345494D+00, 0.3154687086868D+01,
+     :  0.4832187748783D-10, 0.5329322498232D+01, 0.6040347114260D+01,
+     :  0.4716763555110D-10, 0.2395235316466D+01, 0.5331357529664D+01,
+     :  0.4871509139861D-10, 0.3056663648823D+01, 0.1256967486051D+02,
+     :  0.4598417696768D-10, 0.4452762609019D+01, 0.6525804586632D+01 /
+      DATA ((E1(I,J,2),I=1,3),J= 51, 60) /
+     :  0.5674189533175D-10, 0.9879680872193D+00, 0.5729506548653D+01,
+     :  0.4073560328195D-10, 0.5939127696986D+01, 0.7632943190217D+01,
+     :  0.5040994945359D-10, 0.4549875824510D+01, 0.8031092209206D+01,
+     :  0.5078185134679D-10, 0.7346659893982D+00, 0.7477522907414D+01,
+     :  0.3769343537061D-10, 0.1071317188367D+01, 0.7234794171227D+01,
+     :  0.4980331365299D-10, 0.2500345341784D+01, 0.6836645152238D+01,
+     :  0.3458236594757D-10, 0.3825159450711D+01, 0.1097707878456D+02,
+     :  0.3578859493602D-10, 0.5299664791549D+01, 0.4164311961999D+01,
+     :  0.3370504646419D-10, 0.5002316301593D+01, 0.1137170464392D+02,
+     :  0.3299873338428D-10, 0.2526123275282D+01, 0.3930209696940D+01 /
+      DATA ((E1(I,J,2),I=1,3),J= 61, 70) /
+     :  0.4304917318409D-10, 0.3368078557132D+01, 0.1592596075957D+01,
+     :  0.3402418753455D-10, 0.8385495425800D+00, 0.3128388763578D+01,
+     :  0.2778460572146D-10, 0.3669905203240D+01, 0.7342457794669D+01,
+     :  0.2782710128902D-10, 0.2691664812170D+00, 0.1748016358760D+01,
+     :  0.2711725179646D-10, 0.4707487217718D+01, 0.5296909721118D+00,
+     :  0.2981760946340D-10, 0.3190260867816D+00, 0.5368044267797D+00,
+     :  0.2811672977772D-10, 0.3196532315372D+01, 0.7084896783808D+01,
+     :  0.2863454474467D-10, 0.2263240324780D+00, 0.5223693906222D+01,
+     :  0.3333464634051D-10, 0.3498451685065D+01, 0.8018209333619D+00,
+     :  0.3312991747609D-10, 0.5839154477412D+01, 0.1554202828031D+00 /
+      DATA ((E1(I,J,2),I=1,3),J= 71,NE1Y) /
+     :  0.2813255564006D-10, 0.8268044346621D+00, 0.5225775174439D+00,
+     :  0.2665098083966D-10, 0.3934021725360D+01, 0.5216580451554D+01,
+     :  0.2349795705216D-10, 0.5197620913779D+01, 0.2146165377750D+01,
+     :  0.2330352293961D-10, 0.2984999231807D+01, 0.1726015463500D+02,
+     :  0.2728001683419D-10, 0.6521679638544D+00, 0.8635942003952D+01,
+     :  0.2484061007669D-10, 0.3468955561097D+01, 0.5230807360890D+01,
+     :  0.2646328768427D-10, 0.1013724533516D+01, 0.2629832328990D-01,
+     :  0.2518630264831D-10, 0.6108081057122D+01, 0.5481254917084D+01,
+     :  0.2421901455384D-10, 0.1651097776260D+01, 0.1349867339771D+01,
+     :  0.6348533267831D-11, 0.3220226560321D+01, 0.8433466158131D+02 /
+
+*  Sun-to-Earth, T^2, Y
+      DATA ((E2(I,J,2),I=1,3),J=  1,NE2Y) /
+     :  0.5063375872532D-10, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.2173815785980D-10, 0.2827805833053D+01, 0.1256615170089D+02,
+     :  0.1010231999920D-10, 0.4634612377133D+01, 0.6283075850446D+01,
+     :  0.9259745317636D-12, 0.2620612076189D+01, 0.1884922755134D+02,
+     :  0.1022202095812D-12, 0.3809562326066D+01, 0.8399684731857D+02 /
+
+*  Sun-to-Earth, T^0, Z
+      DATA ((E0(I,J,3),I=1,3),J=  1, 10) /
+     :  0.2796207639075D-05, 0.3198701560209D+01, 0.8433466158131D+02,
+     :  0.1016042198142D-05, 0.5422360395913D+01, 0.5507553240374D+01,
+     :  0.8044305033647D-06, 0.3880222866652D+01, 0.5223693906222D+01,
+     :  0.4385347909274D-06, 0.3704369937468D+01, 0.2352866153506D+01,
+     :  0.3186156414906D-06, 0.3999639363235D+01, 0.1577343543434D+01,
+     :  0.2272412285792D-06, 0.3984738315952D+01, 0.1047747311755D+01,
+     :  0.1645620103007D-06, 0.3565412516841D+01, 0.5856477690889D+01,
+     :  0.1815836921166D-06, 0.4984507059020D+01, 0.6283075850446D+01,
+     :  0.1447461676364D-06, 0.3702753570108D+01, 0.9437762937313D+01,
+     :  0.1430760876382D-06, 0.3409658712357D+01, 0.1021328554739D+02 /
+      DATA ((E0(I,J,3),I=1,3),J= 11, 20) /
+     :  0.1120445753226D-06, 0.4829561570246D+01, 0.1414349524433D+02,
+     :  0.1090232840797D-06, 0.2080729178066D+01, 0.6812766822558D+01,
+     :  0.9715727346551D-07, 0.3476295881948D+01, 0.4694002934110D+01,
+     :  0.1036267136217D-06, 0.4056639536648D+01, 0.7109288135493D+02,
+     :  0.8752665271340D-07, 0.4448159519911D+01, 0.5753384878334D+01,
+     :  0.8331864956004D-07, 0.4991704044208D+01, 0.7084896783808D+01,
+     :  0.6901658670245D-07, 0.4325358994219D+01, 0.6275962395778D+01,
+     :  0.9144536848998D-07, 0.1141826375363D+01, 0.6620890113188D+01,
+     :  0.7205085037435D-07, 0.3624344170143D+01, 0.5296909721118D+00,
+     :  0.7697874654176D-07, 0.5554257458998D+01, 0.1676215758509D+03 /
+      DATA ((E0(I,J,3),I=1,3),J= 21, 30) /
+     :  0.5197545738384D-07, 0.6251760961735D+01, 0.1807370494127D+02,
+     :  0.5031345378608D-07, 0.2497341091913D+01, 0.4705732307012D+01,
+     :  0.4527110205840D-07, 0.2335079920992D+01, 0.6309374173736D+01,
+     :  0.4753355798089D-07, 0.7094148987474D+00, 0.5884926831456D+01,
+     :  0.4296951977516D-07, 0.1101916352091D+01, 0.6681224869435D+01,
+     :  0.3855341568387D-07, 0.1825495405486D+01, 0.5486777812467D+01,
+     :  0.5253930970990D-07, 0.4424740687208D+01, 0.7860419393880D+01,
+     :  0.4024630496471D-07, 0.5120498157053D+01, 0.1336797263425D+02,
+     :  0.4061069791453D-07, 0.6029771435451D+01, 0.3930209696940D+01,
+     :  0.3797883804205D-07, 0.4435193600836D+00, 0.3154687086868D+01 /
+      DATA ((E0(I,J,3),I=1,3),J= 31, 40) /
+     :  0.2933033225587D-07, 0.5124157356507D+01, 0.1059381944224D+01,
+     :  0.3503000930426D-07, 0.5421830162065D+01, 0.6069776770667D+01,
+     :  0.3670096214050D-07, 0.4582101667297D+01, 0.1219403291462D+02,
+     :  0.2905609437008D-07, 0.1926566420072D+01, 0.1097707878456D+02,
+     :  0.2466827821713D-07, 0.6090174539834D+00, 0.6496374930224D+01,
+     :  0.2691647295332D-07, 0.1393432595077D+01, 0.2200391463820D+02,
+     :  0.2150554667946D-07, 0.4308671715951D+01, 0.5643178611111D+01,
+     :  0.2237481922680D-07, 0.8133968269414D+00, 0.8635942003952D+01,
+     :  0.1817741038157D-07, 0.3755205127454D+01, 0.3340612434717D+01,
+     :  0.2227820762132D-07, 0.2759558596664D+01, 0.1203646072878D+02 /
+      DATA ((E0(I,J,3),I=1,3),J= 41, 50) /
+     :  0.1944713772307D-07, 0.5699645869121D+01, 0.1179062909082D+02,
+     :  0.1527340520662D-07, 0.1986749091746D+01, 0.3981490189893D+00,
+     :  0.1577282574914D-07, 0.3205017217983D+01, 0.5088628793478D+01,
+     :  0.1424738825424D-07, 0.6256747903666D+01, 0.2544314396739D+01,
+     :  0.1616563121701D-07, 0.2601671259394D+00, 0.1729818233119D+02,
+     :  0.1401210391692D-07, 0.4686939173506D+01, 0.7058598460518D+01,
+     :  0.1488726974214D-07, 0.2815862451372D+01, 0.2593412433514D+02,
+     :  0.1692626442388D-07, 0.4956894109797D+01, 0.1564752902480D+03,
+     :  0.1123571582910D-07, 0.2381192697696D+01, 0.3738761453707D+01,
+     :  0.9903308606317D-08, 0.4294851657684D+01, 0.9225539266174D+01 /
+      DATA ((E0(I,J,3),I=1,3),J= 51, 60) /
+     :  0.9174533187191D-08, 0.3075171510642D+01, 0.4164311961999D+01,
+     :  0.8645985631457D-08, 0.5477534821633D+00, 0.8429241228195D+01,
+     : -0.1085876492688D-07, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.9264309077815D-08, 0.5968571670097D+01, 0.7079373888424D+01,
+     :  0.8243116984954D-08, 0.1489098777643D+01, 0.1044738781244D+02,
+     :  0.8268102113708D-08, 0.3512977691983D+01, 0.1150676975667D+02,
+     :  0.9043613988227D-08, 0.1290704408221D+00, 0.1101510648075D+02,
+     :  0.7432912038789D-08, 0.1991086893337D+01, 0.2608790314060D+02,
+     :  0.8586233727285D-08, 0.4238357924414D+01, 0.2986433403208D+02,
+     :  0.7612230060131D-08, 0.2911090150166D+01, 0.4732030630302D+01 /
+      DATA ((E0(I,J,3),I=1,3),J= 61, 70) /
+     :  0.7097787751408D-08, 0.1908938392390D+01, 0.8031092209206D+01,
+     :  0.7640237040175D-08, 0.6129219000168D+00, 0.7962980379786D+00,
+     :  0.7070445688081D-08, 0.1380417036651D+01, 0.2146165377750D+01,
+     :  0.7690770957702D-08, 0.1680504249084D+01, 0.2122839202813D+02,
+     :  0.8051292542594D-08, 0.5127423484511D+01, 0.2942463415728D+01,
+     :  0.5902709104515D-08, 0.2020274190917D+01, 0.7755226100720D+00,
+     :  0.5134567496462D-08, 0.2606778676418D+01, 0.1256615170089D+02,
+     :  0.5525802046102D-08, 0.1613011769663D+01, 0.8018209333619D+00,
+     :  0.5880724784221D-08, 0.4604483417236D+01, 0.4690479774488D+01,
+     :  0.5211699081370D-08, 0.5718964114193D+01, 0.8827390247185D+01 /
+      DATA ((E0(I,J,3),I=1,3),J= 71, 80) /
+     :  0.4891849573562D-08, 0.3689658932196D+01, 0.2132990797783D+00,
+     :  0.5150246069997D-08, 0.4099769855122D+01, 0.6480980550449D+02,
+     :  0.5102434319633D-08, 0.5660834602509D+01, 0.3379454372902D+02,
+     :  0.5083405254252D-08, 0.9842221218974D+00, 0.4136910472696D+01,
+     :  0.4206562585682D-08, 0.1341363634163D+00, 0.3128388763578D+01,
+     :  0.4663249683579D-08, 0.8130132735866D+00, 0.5216580451554D+01,
+     :  0.4099474416530D-08, 0.5791497770644D+01, 0.4265981595566D+00,
+     :  0.4628251220767D-08, 0.1249802769331D+01, 0.1572083878776D+02,
+     :  0.5024068728142D-08, 0.4795684802743D+01, 0.6290189305114D+01,
+     :  0.5120234327758D-08, 0.3810420387208D+01, 0.5230807360890D+01 /
+      DATA ((E0(I,J,3),I=1,3),J= 81, 90) /
+     :  0.5524029815280D-08, 0.1029264714351D+01, 0.2397622045175D+03,
+     :  0.4757415718860D-08, 0.3528044781779D+01, 0.1649636139783D+02,
+     :  0.3915786131127D-08, 0.5593889282646D+01, 0.1589072916335D+01,
+     :  0.4869053149991D-08, 0.3299636454433D+01, 0.7632943190217D+01,
+     :  0.3649365703729D-08, 0.1286049002584D+01, 0.6206810014183D+01,
+     :  0.3992493949002D-08, 0.3100307589464D+01, 0.2515860172507D+02,
+     :  0.3320247477418D-08, 0.6212683940807D+01, 0.1216800268190D+02,
+     :  0.3287123739696D-08, 0.4699118445928D+01, 0.7234794171227D+01,
+     :  0.3472776811103D-08, 0.2630507142004D+01, 0.7342457794669D+01,
+     :  0.3423253294767D-08, 0.2946432844305D+01, 0.9623688285163D+01 /
+      DATA ((E0(I,J,3),I=1,3),J= 91,100) /
+     :  0.3896173898244D-08, 0.1224834179264D+01, 0.6438496133249D+01,
+     :  0.3388455337924D-08, 0.1543807616351D+01, 0.1494531617769D+02,
+     :  0.3062704716523D-08, 0.1191777572310D+01, 0.8662240327241D+01,
+     :  0.3270075600400D-08, 0.5483498767737D+01, 0.1194447056968D+01,
+     :  0.3101209215259D-08, 0.8000833804348D+00, 0.3772475342596D+02,
+     :  0.2780883347311D-08, 0.4077980721888D+00, 0.5863591145557D+01,
+     :  0.2903605931824D-08, 0.2617490302147D+01, 0.1965104848470D+02,
+     :  0.2682014743119D-08, 0.2634703158290D+01, 0.7238675589263D+01,
+     :  0.2534360108492D-08, 0.6102446114873D+01, 0.6836645152238D+01,
+     :  0.2392564882509D-08, 0.3681820208691D+01, 0.5849364236221D+01 /
+      DATA ((E0(I,J,3),I=1,3),J=101,110) /
+     :  0.2656667254856D-08, 0.6216045388886D+01, 0.6133512519065D+01,
+     :  0.2331242096773D-08, 0.5864949777744D+01, 0.4535059491685D+01,
+     :  0.2287898363668D-08, 0.4566628532802D+01, 0.7477522907414D+01,
+     :  0.2336944521306D-08, 0.2442722126930D+01, 0.1137170464392D+02,
+     :  0.3156632236269D-08, 0.1626628050682D+01, 0.2509084901204D+03,
+     :  0.2982612402766D-08, 0.2803604512609D+01, 0.1748016358760D+01,
+     :  0.2774031674807D-08, 0.4654002897158D+01, 0.8223916695780D+02,
+     :  0.2295236548638D-08, 0.4326518333253D+01, 0.3378142627421D+00,
+     :  0.2190714699873D-08, 0.4519614578328D+01, 0.2908881142201D+02,
+     :  0.2191495845045D-08, 0.3012626912549D+01, 0.1673046366289D+02 /
+      DATA ((E0(I,J,3),I=1,3),J=111,120) /
+     :  0.2492901628386D-08, 0.1290101424052D+00, 0.1543797956245D+03,
+     :  0.1993778064319D-08, 0.3864046799414D+01, 0.1778984560711D+02,
+     :  0.1898146479022D-08, 0.5053777235891D+01, 0.2042657109477D+02,
+     :  0.1918280127634D-08, 0.2222470192548D+01, 0.4165496312290D+02,
+     :  0.1916351061607D-08, 0.8719067257774D+00, 0.7737595720538D+02,
+     :  0.1834720181466D-08, 0.4031491098040D+01, 0.2358125818164D+02,
+     :  0.1249201523806D-08, 0.5938379466835D+01, 0.3301902111895D+02,
+     :  0.1477304050539D-08, 0.6544722606797D+00, 0.9548094718417D+02,
+     :  0.1264316431249D-08, 0.2059072853236D+01, 0.8399684731857D+02,
+     :  0.1203526495039D-08, 0.3644813532605D+01, 0.4558517281984D+02 /
+      DATA ((E0(I,J,3),I=1,3),J=121,130) /
+     :  0.9221681059831D-09, 0.3241815055602D+01, 0.7805158573086D+02,
+     :  0.7849278367646D-09, 0.5043812342457D+01, 0.5217580628120D+02,
+     :  0.7983392077387D-09, 0.5000024502753D+01, 0.1501922143975D+03,
+     :  0.7925395431654D-09, 0.1398734871821D-01, 0.9061773743175D+02,
+     :  0.7640473285886D-09, 0.5067111723130D+01, 0.4951538251678D+02,
+     :  0.5398937754482D-09, 0.5597382200075D+01, 0.1613385000004D+03,
+     :  0.5626247550193D-09, 0.2601338209422D+01, 0.7318837597844D+02,
+     :  0.5525197197855D-09, 0.5814832109256D+01, 0.1432335100216D+03,
+     :  0.5407629837898D-09, 0.3384820609076D+01, 0.3230491187871D+03,
+     :  0.3856739119801D-09, 0.1072391840473D+01, 0.2334791286671D+03 /
+      DATA ((E0(I,J,3),I=1,3),J=131,NE0Z) /
+     :  0.3856425239987D-09, 0.2369540393327D+01, 0.1739046517013D+03,
+     :  0.4350867755983D-09, 0.5255575751082D+01, 0.1620484330494D+03,
+     :  0.3844113924996D-09, 0.5482356246182D+01, 0.9757644180768D+02,
+     :  0.2854869155431D-09, 0.9573634763143D+00, 0.1697170704744D+03,
+     :  0.1719227671416D-09, 0.1887203025202D+01, 0.2265204242912D+03,
+     :  0.1527846879755D-09, 0.3982183931157D+01, 0.3341954043900D+03,
+     :  0.1128229264847D-09, 0.2787457156298D+01, 0.3119028331842D+03 /
+
+*  Sun-to-Earth, T^1, Z
+      DATA ((E1(I,J,3),I=1,3),J=  1, 10) /
+     :  0.2278290449966D-05, 0.3413716033863D+01, 0.6283075850446D+01,
+     :  0.5429458209830D-07, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.1903240492525D-07, 0.3370592358297D+01, 0.1256615170089D+02,
+     :  0.2385409276743D-09, 0.3327914718416D+01, 0.1884922755134D+02,
+     :  0.8676928342573D-10, 0.1824006811264D+01, 0.5223693906222D+01,
+     :  0.7765442593544D-10, 0.3888564279247D+01, 0.5507553240374D+01,
+     :  0.7066158332715D-10, 0.5194267231944D+01, 0.2352866153506D+01,
+     :  0.7092175288657D-10, 0.2333246960021D+01, 0.8399684731857D+02,
+     :  0.5357582213535D-10, 0.2224031176619D+01, 0.5296909721118D+00,
+     :  0.3828035865021D-10, 0.2156710933584D+01, 0.6279552690824D+01 /
+      DATA ((E1(I,J,3),I=1,3),J= 11,NE1Z) /
+     :  0.3824857220427D-10, 0.1529755219915D+01, 0.6286599010068D+01,
+     :  0.3286995181628D-10, 0.4879512900483D+01, 0.1021328554739D+02 /
+
+*  Sun-to-Earth, T^2, Z
+      DATA ((E2(I,J,3),I=1,3),J=  1,NE2Z) /
+     :  0.9722666114891D-10, 0.5152219582658D+01, 0.6283075850446D+01,
+     : -0.3494819171909D-11, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.6713034376076D-12, 0.6440188750495D+00, 0.1256615170089D+02 /
+
+*  SSB-to-Sun, T^0, X
+      DATA ((S0(I,J,1),I=1,3),J=  1, 10) /
+     :  0.4956757536410D-02, 0.3741073751789D+01, 0.5296909721118D+00,
+     :  0.2718490072522D-02, 0.4016011511425D+01, 0.2132990797783D+00,
+     :  0.1546493974344D-02, 0.2170528330642D+01, 0.3813291813120D-01,
+     :  0.8366855276341D-03, 0.2339614075294D+01, 0.7478166569050D-01,
+     :  0.2936777942117D-03, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.1201317439469D-03, 0.4090736353305D+01, 0.1059381944224D+01,
+     :  0.7578550887230D-04, 0.3241518088140D+01, 0.4265981595566D+00,
+     :  0.1941787367773D-04, 0.1012202064330D+01, 0.2061856251104D+00,
+     :  0.1889227765991D-04, 0.3892520416440D+01, 0.2204125344462D+00,
+     :  0.1937896968613D-04, 0.4797779441161D+01, 0.1495633313810D+00 /
+      DATA ((S0(I,J,1),I=1,3),J= 11, 20) /
+     :  0.1434506110873D-04, 0.3868960697933D+01, 0.5225775174439D+00,
+     :  0.1406659911580D-04, 0.4759766557397D+00, 0.5368044267797D+00,
+     :  0.1179022300202D-04, 0.7774961520598D+00, 0.7626583626240D-01,
+     :  0.8085864460959D-05, 0.3254654471465D+01, 0.3664874755930D-01,
+     :  0.7622752967615D-05, 0.4227633103489D+01, 0.3961708870310D-01,
+     :  0.6209171139066D-05, 0.2791828325711D+00, 0.7329749511860D-01,
+     :  0.4366435633970D-05, 0.4440454875925D+01, 0.1589072916335D+01,
+     :  0.3792124889348D-05, 0.5156393842356D+01, 0.7113454667900D-02,
+     :  0.3154548963402D-05, 0.6157005730093D+01, 0.4194847048887D+00,
+     :  0.3088359882942D-05, 0.2494567553163D+01, 0.6398972393349D+00 /
+      DATA ((S0(I,J,1),I=1,3),J= 21, 30) /
+     :  0.2788440902136D-05, 0.4934318747989D+01, 0.1102062672231D+00,
+     :  0.3039928456376D-05, 0.4895077702640D+01, 0.6283075850446D+01,
+     :  0.2272258457679D-05, 0.5278394064764D+01, 0.1030928125552D+00,
+     :  0.2162007057957D-05, 0.5802978019099D+01, 0.3163918923335D+00,
+     :  0.1767632855737D-05, 0.3415346595193D-01, 0.1021328554739D+02,
+     :  0.1349413459362D-05, 0.2001643230755D+01, 0.1484170571900D-02,
+     :  0.1170141900476D-05, 0.2424750491620D+01, 0.6327837846670D+00,
+     :  0.1054355266820D-05, 0.3123311487576D+01, 0.4337116142245D+00,
+     :  0.9800822461610D-06, 0.3026258088130D+01, 0.1052268489556D+01,
+     :  0.1091203749931D-05, 0.3157811670347D+01, 0.1162474756779D+01 /
+      DATA ((S0(I,J,1),I=1,3),J= 31, 40) /
+     :  0.6960236715913D-06, 0.8219570542313D+00, 0.1066495398892D+01,
+     :  0.5689257296909D-06, 0.1323052375236D+01, 0.9491756770005D+00,
+     :  0.6613172135802D-06, 0.2765348881598D+00, 0.8460828644453D+00,
+     :  0.6277702517571D-06, 0.5794064466382D+01, 0.1480791608091D+00,
+     :  0.6304884066699D-06, 0.7323555380787D+00, 0.2243449970715D+00,
+     :  0.4897850467382D-06, 0.3062464235399D+01, 0.3340612434717D+01,
+     :  0.3759148598786D-06, 0.4588290469664D+01, 0.3516457698740D-01,
+     :  0.3110520548195D-06, 0.1374299536572D+01, 0.6373574839730D-01,
+     :  0.3064708359780D-06, 0.4222267485047D+01, 0.1104591729320D-01,
+     :  0.2856347168241D-06, 0.3714202944973D+01, 0.1510475019529D+00 /
+      DATA ((S0(I,J,1),I=1,3),J= 41, 50) /
+     :  0.2840945514288D-06, 0.2847972875882D+01, 0.4110125927500D-01,
+     :  0.2378951599405D-06, 0.3762072563388D+01, 0.2275259891141D+00,
+     :  0.2714229481417D-06, 0.1036049980031D+01, 0.2535050500000D-01,
+     :  0.2323551717307D-06, 0.4682388599076D+00, 0.8582758298370D-01,
+     :  0.1881790512219D-06, 0.4790565425418D+01, 0.2118763888447D+01,
+     :  0.2261353968371D-06, 0.1669144912212D+01, 0.7181332454670D-01,
+     :  0.2214546389848D-06, 0.3937717281614D+01, 0.2968341143800D-02,
+     :  0.2184915594933D-06, 0.1129169845099D+00, 0.7775000683430D-01,
+     :  0.2000164937936D-06, 0.4030009638488D+01, 0.2093666171530D+00,
+     :  0.1966105136719D-06, 0.8745955786834D+00, 0.2172315424036D+00 /
+      DATA ((S0(I,J,1),I=1,3),J= 51, 60) /
+     :  0.1904742332624D-06, 0.5919743598964D+01, 0.2022531624851D+00,
+     :  0.1657399705031D-06, 0.2549141484884D+01, 0.7358765972222D+00,
+     :  0.1574070533987D-06, 0.5277533020230D+01, 0.7429900518901D+00,
+     :  0.1832261651039D-06, 0.3064688127777D+01, 0.3235053470014D+00,
+     :  0.1733615346569D-06, 0.3011432799094D+01, 0.1385174140878D+00,
+     :  0.1549124014496D-06, 0.4005569132359D+01, 0.5154640627760D+00,
+     :  0.1637044713838D-06, 0.1831375966632D+01, 0.8531963191132D+00,
+     :  0.1123420082383D-06, 0.1180270407578D+01, 0.1990721704425D+00,
+     :  0.1083754165740D-06, 0.3414101320863D+00, 0.5439178814476D+00,
+     :  0.1156638012655D-06, 0.6130479452594D+00, 0.5257585094865D+00 /
+      DATA ((S0(I,J,1),I=1,3),J= 61, 70) /
+     :  0.1142548785134D-06, 0.3724761948846D+01, 0.5336234347371D+00,
+     :  0.7921463895965D-07, 0.2435425589361D+01, 0.1478866649112D+01,
+     :  0.7428600285231D-07, 0.3542144398753D+01, 0.2164800718209D+00,
+     :  0.8323211246747D-07, 0.3525058072354D+01, 0.1692165728891D+01,
+     :  0.7257595116312D-07, 0.1364299431982D+01, 0.2101180877357D+00,
+     :  0.7111185833236D-07, 0.2460478875808D+01, 0.4155522422634D+00,
+     :  0.6868090383716D-07, 0.4397327670704D+01, 0.1173197218910D+00,
+     :  0.7226419974175D-07, 0.4042647308905D+01, 0.1265567569334D+01,
+     :  0.6955642383177D-07, 0.2865047906085D+01, 0.9562891316684D+00,
+     :  0.7492139296331D-07, 0.5014278994215D+01, 0.1422690933580D-01 /
+      DATA ((S0(I,J,1),I=1,3),J= 71, 80) /
+     :  0.6598363128857D-07, 0.2376730020492D+01, 0.6470106940028D+00,
+     :  0.7381147293385D-07, 0.3272990384244D+01, 0.1581959461667D+01,
+     :  0.6402909624032D-07, 0.5302290955138D+01, 0.9597935788730D-01,
+     :  0.6237454263857D-07, 0.5444144425332D+01, 0.7084920306520D-01,
+     :  0.5241198544016D-07, 0.4215359579205D+01, 0.5265099800692D+00,
+     :  0.5144463853918D-07, 0.1218916689916D+00, 0.5328719641544D+00,
+     :  0.5868164772299D-07, 0.2369402002213D+01, 0.7871412831580D-01,
+     :  0.6233195669151D-07, 0.1254922242403D+01, 0.2608790314060D+02,
+     :  0.6068463791422D-07, 0.5679713760431D+01, 0.1114304132498D+00,
+     :  0.4359361135065D-07, 0.6097219641646D+00, 0.1375773836557D+01 /
+      DATA ((S0(I,J,1),I=1,3),J= 81, 90) /
+     :  0.4686510366826D-07, 0.4786231041431D+01, 0.1143987543936D+00,
+     :  0.3758977287225D-07, 0.1167368068139D+01, 0.1596186371003D+01,
+     :  0.4282051974778D-07, 0.1519471064319D+01, 0.2770348281756D+00,
+     :  0.5153765386113D-07, 0.1860532322984D+01, 0.2228608264996D+00,
+     :  0.4575129387188D-07, 0.7632857887158D+00, 0.1465949902372D+00,
+     :  0.3326844933286D-07, 0.1298219485285D+01, 0.5070101000000D-01,
+     :  0.3748617450984D-07, 0.1046510321062D+01, 0.4903339079539D+00,
+     :  0.2816756661499D-07, 0.3434522346190D+01, 0.2991266627620D+00,
+     :  0.3412750405039D-07, 0.2523766270318D+01, 0.3518164938661D+00,
+     :  0.2655796761776D-07, 0.2904422260194D+01, 0.6256703299991D+00 /
+      DATA ((S0(I,J,1),I=1,3),J= 91,100) /
+     :  0.2963597929458D-07, 0.5923900431149D+00, 0.1099462426779D+00,
+     :  0.2539523734781D-07, 0.4851947722567D+01, 0.1256615170089D+02,
+     :  0.2283087914139D-07, 0.3400498595496D+01, 0.6681224869435D+01,
+     :  0.2321309799331D-07, 0.5789099148673D+01, 0.3368040641550D-01,
+     :  0.2549657649750D-07, 0.3991856479792D-01, 0.1169588211447D+01,
+     :  0.2290462303977D-07, 0.2788567577052D+01, 0.1045155034888D+01,
+     :  0.1945398522914D-07, 0.3290896998176D+01, 0.1155361302111D+01,
+     :  0.1849171512638D-07, 0.2698060129367D+01, 0.4452511715700D-02,
+     :  0.1647199834254D-07, 0.3016735644085D+01, 0.4408250688924D+00,
+     :  0.1529530765273D-07, 0.5573043116178D+01, 0.6521991896920D-01 /
+      DATA ((S0(I,J,1),I=1,3),J=101,110) /
+     :  0.1433199339978D-07, 0.1481192356147D+01, 0.9420622223326D+00,
+     :  0.1729134193602D-07, 0.1422817538933D+01, 0.2108507877249D+00,
+     :  0.1716463931346D-07, 0.3469468901855D+01, 0.2157473718317D+00,
+     :  0.1391206061378D-07, 0.6122436220547D+01, 0.4123712502208D+00,
+     :  0.1404746661924D-07, 0.1647765641936D+01, 0.4258542984690D-01,
+     :  0.1410452399455D-07, 0.5989729161964D+01, 0.2258291676434D+00,
+     :  0.1089828772168D-07, 0.2833705509371D+01, 0.4226656969313D+00,
+     :  0.1047374564948D-07, 0.5090690007331D+00, 0.3092784376656D+00,
+     :  0.1358279126532D-07, 0.5128990262836D+01, 0.7923417740620D-01,
+     :  0.1020456476148D-07, 0.9632772880808D+00, 0.1456308687557D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=111,120) /
+     :  0.1033428735328D-07, 0.3223779318418D+01, 0.1795258541446D+01,
+     :  0.1412435841540D-07, 0.2410271572721D+01, 0.1525316725248D+00,
+     :  0.9722759371574D-08, 0.2333531395690D+01, 0.8434341241180D-01,
+     :  0.9657334084704D-08, 0.6199270974168D+01, 0.1272681024002D+01,
+     :  0.1083641148690D-07, 0.2864222292929D+01, 0.7032915397480D-01,
+     :  0.1067318403838D-07, 0.5833458866568D+00, 0.2123349582968D+00,
+     :  0.1062366201976D-07, 0.4307753989494D+01, 0.2142632012598D+00,
+     :  0.1236364149266D-07, 0.2873917870593D+01, 0.1847279083684D+00,
+     :  0.1092759489593D-07, 0.2959887266733D+01, 0.1370332435159D+00,
+     :  0.8912069362899D-08, 0.5141213702562D+01, 0.2648454860559D+01 /
+      DATA ((S0(I,J,1),I=1,3),J=121,130) /
+     :  0.9656467707970D-08, 0.4532182462323D+01, 0.4376440768498D+00,
+     :  0.8098386150135D-08, 0.2268906338379D+01, 0.2880807454688D+00,
+     :  0.7857714675000D-08, 0.4055544260745D+01, 0.2037373330570D+00,
+     :  0.7288455940646D-08, 0.5357901655142D+01, 0.1129145838217D+00,
+     :  0.9450595950552D-08, 0.4264926963939D+01, 0.5272426800584D+00,
+     :  0.9381718247537D-08, 0.7489366976576D-01, 0.5321392641652D+00,
+     :  0.7079052646038D-08, 0.1923311052874D+01, 0.6288513220417D+00,
+     :  0.9259004415344D-08, 0.2970256853438D+01, 0.1606092486742D+00,
+     :  0.8259801499742D-08, 0.3327056314697D+01, 0.8389694097774D+00,
+     :  0.6476334355779D-08, 0.2954925505727D+01, 0.2008557621224D+01 /
+      DATA ((S0(I,J,1),I=1,3),J=131,140) /
+     :  0.5984021492007D-08, 0.9138753105829D+00, 0.2042657109477D+02,
+     :  0.5989546863181D-08, 0.3244464082031D+01, 0.2111650433779D+01,
+     :  0.6233108606023D-08, 0.4995232638403D+00, 0.4305306221819D+00,
+     :  0.6877299149965D-08, 0.2834987233449D+01, 0.9561746721300D-02,
+     :  0.8311234227190D-08, 0.2202951835758D+01, 0.3801276407308D+00,
+     :  0.6599472832414D-08, 0.4478581462618D+01, 0.1063314406849D+01,
+     :  0.6160491096549D-08, 0.5145858696411D+01, 0.1368660381889D+01,
+     :  0.6164772043891D-08, 0.3762976697911D+00, 0.4234171675140D+00,
+     :  0.6363248684450D-08, 0.3162246718685D+01, 0.1253008786510D-01,
+     :  0.6448587520999D-08, 0.3442693302119D+01, 0.5287268506303D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=141,150) /
+     :  0.6431662283977D-08, 0.8977549136606D+00, 0.5306550935933D+00,
+     :  0.6351223158474D-08, 0.4306447410369D+01, 0.5217580628120D+02,
+     :  0.5476721393451D-08, 0.3888529177855D+01, 0.2221856701002D+01,
+     :  0.5341772572619D-08, 0.2655560662512D+01, 0.7466759693650D-01,
+     :  0.5337055758302D-08, 0.5164990735946D+01, 0.7489573444450D-01,
+     :  0.5373120816787D-08, 0.6041214553456D+01, 0.1274714967946D+00,
+     :  0.5392351705426D-08, 0.9177763485932D+00, 0.1055449481598D+01,
+     :  0.6688495850205D-08, 0.3089608126937D+01, 0.2213766559277D+00,
+     :  0.5072003660362D-08, 0.4311316541553D+01, 0.2132517061319D+00,
+     :  0.5070726650455D-08, 0.5790675464444D+00, 0.2133464534247D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=151,160) /
+     :  0.5658012950032D-08, 0.2703945510675D+01, 0.7287631425543D+00,
+     :  0.4835509924854D-08, 0.2975422976065D+01, 0.7160067364790D-01,
+     :  0.6479821978012D-08, 0.1324168733114D+01, 0.2209183458640D-01,
+     :  0.6230636494980D-08, 0.2860103632836D+01, 0.3306188016693D+00,
+     :  0.4649239516213D-08, 0.4832259763403D+01, 0.7796265773310D-01,
+     :  0.6487325792700D-08, 0.2726165825042D+01, 0.3884652414254D+00,
+     :  0.4682823682770D-08, 0.6966602455408D+00, 0.1073608853559D+01,
+     :  0.5704230804976D-08, 0.5669634104606D+01, 0.8731175355560D-01,
+     :  0.6125413585489D-08, 0.1513386538915D+01, 0.7605151500000D-01,
+     :  0.6035825038187D-08, 0.1983509168227D+01, 0.9846002785331D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=161,170) /
+     :  0.4331123462303D-08, 0.2782892992807D+01, 0.4297791515992D+00,
+     :  0.4681107685143D-08, 0.5337232886836D+01, 0.2127790306879D+00,
+     :  0.4669105829655D-08, 0.5837133792160D+01, 0.2138191288687D+00,
+     :  0.5138823602365D-08, 0.3080560200507D+01, 0.7233337363710D-01,
+     :  0.4615856664534D-08, 0.1661747897471D+01, 0.8603097737811D+00,
+     :  0.4496916702197D-08, 0.2112508027068D+01, 0.7381754420900D-01,
+     :  0.4278479042945D-08, 0.5716528462627D+01, 0.7574578717200D-01,
+     :  0.3840525503932D-08, 0.6424172726492D+00, 0.3407705765729D+00,
+     :  0.4866636509685D-08, 0.4919244697715D+01, 0.7722995774390D-01,
+     :  0.3526100639296D-08, 0.2550821052734D+01, 0.6225157782540D-01 /
+      DATA ((S0(I,J,1),I=1,3),J=171,180) /
+     :  0.3939558488075D-08, 0.3939331491710D+01, 0.5268983110410D-01,
+     :  0.4041268772576D-08, 0.2275337571218D+01, 0.3503323232942D+00,
+     :  0.3948761842853D-08, 0.1999324200790D+01, 0.1451108196653D+00,
+     :  0.3258394550029D-08, 0.9121001378200D+00, 0.5296435984654D+00,
+     :  0.3257897048761D-08, 0.3428428660869D+01, 0.5297383457582D+00,
+     :  0.3842559031298D-08, 0.6132927720035D+01, 0.9098186128426D+00,
+     :  0.3109920095448D-08, 0.7693650193003D+00, 0.3932462625300D-02,
+     :  0.3132237775119D-08, 0.3621293854908D+01, 0.2346394437820D+00,
+     :  0.3942189421510D-08, 0.4841863659733D+01, 0.3180992042600D-02,
+     :  0.3796972285340D-08, 0.1814174994268D+01, 0.1862120789403D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=181,190) /
+     :  0.3995640233688D-08, 0.1386990406091D+01, 0.4549093064213D+00,
+     :  0.2875013727414D-08, 0.9178318587177D+00, 0.1905464808669D+01,
+     :  0.3073719932844D-08, 0.2688923811835D+01, 0.3628624111593D+00,
+     :  0.2731016580075D-08, 0.1188259127584D+01, 0.2131850110243D+00,
+     :  0.2729549896546D-08, 0.3702160634273D+01, 0.2134131485323D+00,
+     :  0.3339372892449D-08, 0.7199163960331D+00, 0.2007689919132D+00,
+     :  0.2898833764204D-08, 0.1916709364999D+01, 0.5291709230214D+00,
+     :  0.2894536549362D-08, 0.2424043195547D+01, 0.5302110212022D+00,
+     :  0.3096872473843D-08, 0.4445894977497D+01, 0.2976424921901D+00,
+     :  0.2635672326810D-08, 0.3814366984117D+01, 0.1485980103780D+01 /
+      DATA ((S0(I,J,1),I=1,3),J=191,200) /
+     :  0.3649302697001D-08, 0.2924200596084D+01, 0.6044726378023D+00,
+     :  0.3127954585895D-08, 0.1842251648327D+01, 0.1084620721060D+00,
+     :  0.2616040173947D-08, 0.4155841921984D+01, 0.1258454114666D+01,
+     :  0.2597395859860D-08, 0.1158045978874D+00, 0.2103781122809D+00,
+     :  0.2593286172210D-08, 0.4771850408691D+01, 0.2162200472757D+00,
+     :  0.2481823585747D-08, 0.4608842558889D+00, 0.1062562936266D+01,
+     :  0.2742219550725D-08, 0.1538781127028D+01, 0.5651155736444D+00,
+     :  0.3199558469610D-08, 0.3226647822878D+00, 0.7036329877322D+00,
+     :  0.2666088542957D-08, 0.1967991731219D+00, 0.1400015846597D+00,
+     :  0.2397067430580D-08, 0.3707036669873D+01, 0.2125476091956D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=201,210) /
+     :  0.2376570772738D-08, 0.1182086628042D+01, 0.2140505503610D+00,
+     :  0.2547228007887D-08, 0.4906256820629D+01, 0.1534957940063D+00,
+     :  0.2265575594114D-08, 0.3414949866857D+01, 0.2235935264888D+00,
+     :  0.2464381430585D-08, 0.4599122275378D+01, 0.2091065926078D+00,
+     :  0.2433408527044D-08, 0.2830751145445D+00, 0.2174915669488D+00,
+     :  0.2443605509076D-08, 0.4212046432538D+01, 0.1739420156204D+00,
+     :  0.2319779262465D-08, 0.9881978408630D+00, 0.7530171478090D-01,
+     :  0.2284622835465D-08, 0.5565347331588D+00, 0.7426161660010D-01,
+     :  0.2467268750783D-08, 0.5655708150766D+00, 0.2526561439362D+00,
+     :  0.2808513492782D-08, 0.1418405053408D+01, 0.5636314030725D+00 /
+      DATA ((S0(I,J,1),I=1,3),J=211,NS0X) /
+     :  0.2329528932532D-08, 0.4069557545675D+01, 0.1056200952181D+01,
+     :  0.9698639532817D-09, 0.1074134313634D+01, 0.7826370942180D+02 /
+
+*  SSB-to-Sun, T^1, X
+      DATA ((S1(I,J,1),I=1,3),J=  1, 10) /
+     : -0.1296310361520D-07, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.8975769009438D-08, 0.1128891609250D+01, 0.4265981595566D+00,
+     :  0.7771113441307D-08, 0.2706039877077D+01, 0.2061856251104D+00,
+     :  0.7538303866642D-08, 0.2191281289498D+01, 0.2204125344462D+00,
+     :  0.6061384579336D-08, 0.3248167319958D+01, 0.1059381944224D+01,
+     :  0.5726994235594D-08, 0.5569981398610D+01, 0.5225775174439D+00,
+     :  0.5616492836424D-08, 0.5057386614909D+01, 0.5368044267797D+00,
+     :  0.1010881584769D-08, 0.3473577116095D+01, 0.7113454667900D-02,
+     :  0.7259606157626D-09, 0.3651858593665D+00, 0.6398972393349D+00,
+     :  0.8755095026935D-09, 0.1662835408338D+01, 0.4194847048887D+00 /
+      DATA ((S1(I,J,1),I=1,3),J= 11, 20) /
+     :  0.5370491182812D-09, 0.1327673878077D+01, 0.4337116142245D+00,
+     :  0.5743773887665D-09, 0.4250200846687D+01, 0.2132990797783D+00,
+     :  0.4408103140300D-09, 0.3598752574277D+01, 0.1589072916335D+01,
+     :  0.3101892374445D-09, 0.4887822983319D+01, 0.1052268489556D+01,
+     :  0.3209453713578D-09, 0.9702272295114D+00, 0.5296909721118D+00,
+     :  0.3017228286064D-09, 0.5484462275949D+01, 0.1066495398892D+01,
+     :  0.3200700038601D-09, 0.2846613338643D+01, 0.1495633313810D+00,
+     :  0.2137637279911D-09, 0.5692163292729D+00, 0.3163918923335D+00,
+     :  0.1899686386727D-09, 0.2061077157189D+01, 0.2275259891141D+00,
+     :  0.1401994545308D-09, 0.4177771136967D+01, 0.1102062672231D+00 /
+      DATA ((S1(I,J,1),I=1,3),J= 21, 30) /
+     :  0.1578057810499D-09, 0.5782460597335D+01, 0.7626583626240D-01,
+     :  0.1237713253351D-09, 0.5705900866881D+01, 0.5154640627760D+00,
+     :  0.1313076837395D-09, 0.5163438179576D+01, 0.3664874755930D-01,
+     :  0.1184963304860D-09, 0.3054804427242D+01, 0.6327837846670D+00,
+     :  0.1238130878565D-09, 0.2317292575962D+01, 0.3961708870310D-01,
+     :  0.1015959527736D-09, 0.2194643645526D+01, 0.7329749511860D-01,
+     :  0.9017954423714D-10, 0.2868603545435D+01, 0.1990721704425D+00,
+     :  0.8668024955603D-10, 0.4923849675082D+01, 0.5439178814476D+00,
+     :  0.7756083930103D-10, 0.3014334135200D+01, 0.9491756770005D+00,
+     :  0.7536503401741D-10, 0.2704886279769D+01, 0.1030928125552D+00 /
+      DATA ((S1(I,J,1),I=1,3),J= 31, 40) /
+     :  0.5483308679332D-10, 0.6010983673799D+01, 0.8531963191132D+00,
+     :  0.5184339620428D-10, 0.1952704573291D+01, 0.2093666171530D+00,
+     :  0.5108658712030D-10, 0.2958575786649D+01, 0.2172315424036D+00,
+     :  0.5019424524650D-10, 0.1736317621318D+01, 0.2164800718209D+00,
+     :  0.4909312625978D-10, 0.3167216416257D+01, 0.2101180877357D+00,
+     :  0.4456638901107D-10, 0.7697579923471D+00, 0.3235053470014D+00,
+     :  0.4227030350925D-10, 0.3490910137928D+01, 0.6373574839730D-01,
+     :  0.4095456040093D-10, 0.5178888984491D+00, 0.6470106940028D+00,
+     :  0.4990537041422D-10, 0.3323887668974D+01, 0.1422690933580D-01,
+     :  0.4321170010845D-10, 0.4288484987118D+01, 0.7358765972222D+00 /
+      DATA ((S1(I,J,1),I=1,3),J= 41,NS1X) /
+     :  0.3544072091802D-10, 0.6021051579251D+01, 0.5265099800692D+00,
+     :  0.3480198638687D-10, 0.4600027054714D+01, 0.5328719641544D+00,
+     :  0.3440287244435D-10, 0.4349525970742D+01, 0.8582758298370D-01,
+     :  0.3330628322713D-10, 0.2347391505082D+01, 0.1104591729320D-01,
+     :  0.2973060707184D-10, 0.4789409286400D+01, 0.5257585094865D+00,
+     :  0.2932606766089D-10, 0.5831693799927D+01, 0.5336234347371D+00,
+     :  0.2876972310953D-10, 0.2692638514771D+01, 0.1173197218910D+00,
+     :  0.2827488278556D-10, 0.2056052487960D+01, 0.2022531624851D+00,
+     :  0.2515028239756D-10, 0.7411863262449D+00, 0.9597935788730D-01,
+     :  0.2853033744415D-10, 0.3948481024894D+01, 0.2118763888447D+01 /
+
+*  SSB-to-Sun, T^2, X
+      DATA ((S2(I,J,1),I=1,3),J=  1,NS2X) /
+     :  0.1603551636587D-11, 0.4404109410481D+01, 0.2061856251104D+00,
+     :  0.1556935889384D-11, 0.4818040873603D+00, 0.2204125344462D+00,
+     :  0.1182594414915D-11, 0.9935762734472D+00, 0.5225775174439D+00,
+     :  0.1158794583180D-11, 0.3353180966450D+01, 0.5368044267797D+00,
+     :  0.9597358943932D-12, 0.5567045358298D+01, 0.2132990797783D+00,
+     :  0.6511516579605D-12, 0.5630872420788D+01, 0.4265981595566D+00,
+     :  0.7419792747688D-12, 0.2156188581957D+01, 0.5296909721118D+00,
+     :  0.3951972655848D-12, 0.1981022541805D+01, 0.1059381944224D+01,
+     :  0.4478223877045D-12, 0.0000000000000D+00, 0.0000000000000D+00 /
+
+*  SSB-to-Sun, T^0, Y
+      DATA ((S0(I,J,2),I=1,3),J=  1, 10) /
+     :  0.4955392320126D-02, 0.2170467313679D+01, 0.5296909721118D+00,
+     :  0.2722325167392D-02, 0.2444433682196D+01, 0.2132990797783D+00,
+     :  0.1546579925346D-02, 0.5992779281546D+00, 0.3813291813120D-01,
+     :  0.8363140252966D-03, 0.7687356310801D+00, 0.7478166569050D-01,
+     :  0.3385792683603D-03, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.1201192221613D-03, 0.2520035601514D+01, 0.1059381944224D+01,
+     :  0.7587125720554D-04, 0.1669954006449D+01, 0.4265981595566D+00,
+     :  0.1964155361250D-04, 0.5707743963343D+01, 0.2061856251104D+00,
+     :  0.1891900364909D-04, 0.2320960679937D+01, 0.2204125344462D+00,
+     :  0.1937373433356D-04, 0.3226940689555D+01, 0.1495633313810D+00 /
+      DATA ((S0(I,J,2),I=1,3),J= 11, 20) /
+     :  0.1437139941351D-04, 0.2301626908096D+01, 0.5225775174439D+00,
+     :  0.1406267683099D-04, 0.5188579265542D+01, 0.5368044267797D+00,
+     :  0.1178703080346D-04, 0.5489483248476D+01, 0.7626583626240D-01,
+     :  0.8079835186041D-05, 0.1683751835264D+01, 0.3664874755930D-01,
+     :  0.7623253594652D-05, 0.2656400462961D+01, 0.3961708870310D-01,
+     :  0.6248667483971D-05, 0.4992775362055D+01, 0.7329749511860D-01,
+     :  0.4366353695038D-05, 0.2869706279678D+01, 0.1589072916335D+01,
+     :  0.3829101568895D-05, 0.3572131359950D+01, 0.7113454667900D-02,
+     :  0.3175733773908D-05, 0.4535372530045D+01, 0.4194847048887D+00,
+     :  0.3092437902159D-05, 0.9230153317909D+00, 0.6398972393349D+00 /
+      DATA ((S0(I,J,2),I=1,3),J= 21, 30) /
+     :  0.2874168812154D-05, 0.3363143761101D+01, 0.1102062672231D+00,
+     :  0.3040119321826D-05, 0.3324250895675D+01, 0.6283075850446D+01,
+     :  0.2699723308006D-05, 0.2917882441928D+00, 0.1030928125552D+00,
+     :  0.2134832683534D-05, 0.4220997202487D+01, 0.3163918923335D+00,
+     :  0.1770412139433D-05, 0.4747318496462D+01, 0.1021328554739D+02,
+     :  0.1377264209373D-05, 0.4305058462401D+00, 0.1484170571900D-02,
+     :  0.1127814538960D-05, 0.8538177240740D+00, 0.6327837846670D+00,
+     :  0.1055608090130D-05, 0.1551800742580D+01, 0.4337116142245D+00,
+     :  0.9802673861420D-06, 0.1459646735377D+01, 0.1052268489556D+01,
+     :  0.1090329461951D-05, 0.1587351228711D+01, 0.1162474756779D+01 /
+      DATA ((S0(I,J,2),I=1,3),J= 31, 40) /
+     :  0.6959590025090D-06, 0.5534442628766D+01, 0.1066495398892D+01,
+     :  0.5664914529542D-06, 0.6030673003297D+01, 0.9491756770005D+00,
+     :  0.6607787763599D-06, 0.4989507233927D+01, 0.8460828644453D+00,
+     :  0.6269725742838D-06, 0.4222951804572D+01, 0.1480791608091D+00,
+     :  0.6301889697863D-06, 0.5444316669126D+01, 0.2243449970715D+00,
+     :  0.4891042662861D-06, 0.1490552839784D+01, 0.3340612434717D+01,
+     :  0.3457083123290D-06, 0.3030475486049D+01, 0.3516457698740D-01,
+     :  0.3032559967314D-06, 0.2652038793632D+01, 0.1104591729320D-01,
+     :  0.2841133988903D-06, 0.1276744786829D+01, 0.4110125927500D-01,
+     :  0.2855564444432D-06, 0.2143368674733D+01, 0.1510475019529D+00 /
+      DATA ((S0(I,J,2),I=1,3),J= 41, 50) /
+     :  0.2765157135038D-06, 0.5444186109077D+01, 0.6373574839730D-01,
+     :  0.2382312465034D-06, 0.2190521137593D+01, 0.2275259891141D+00,
+     :  0.2808060365077D-06, 0.5735195064841D+01, 0.2535050500000D-01,
+     :  0.2332175234405D-06, 0.9481985524859D-01, 0.7181332454670D-01,
+     :  0.2322488199659D-06, 0.5180499361533D+01, 0.8582758298370D-01,
+     :  0.1881850258423D-06, 0.3219788273885D+01, 0.2118763888447D+01,
+     :  0.2196111392808D-06, 0.2366941159761D+01, 0.2968341143800D-02,
+     :  0.2183810335519D-06, 0.4825445110915D+01, 0.7775000683430D-01,
+     :  0.2002733093326D-06, 0.2457148995307D+01, 0.2093666171530D+00,
+     :  0.1967111767229D-06, 0.5586291545459D+01, 0.2172315424036D+00 /
+      DATA ((S0(I,J,2),I=1,3),J= 51, 60) /
+     :  0.1568473250543D-06, 0.3708003123320D+01, 0.7429900518901D+00,
+     :  0.1852528314300D-06, 0.4310638151560D+01, 0.2022531624851D+00,
+     :  0.1832111226447D-06, 0.1494665322656D+01, 0.3235053470014D+00,
+     :  0.1746805502310D-06, 0.1451378500784D+01, 0.1385174140878D+00,
+     :  0.1555730966650D-06, 0.1068040418198D+01, 0.7358765972222D+00,
+     :  0.1554883462559D-06, 0.2442579035461D+01, 0.5154640627760D+00,
+     :  0.1638380568746D-06, 0.2597913420625D+00, 0.8531963191132D+00,
+     :  0.1159938593640D-06, 0.5834512021280D+01, 0.1990721704425D+00,
+     :  0.1083427965695D-06, 0.5054033177950D+01, 0.5439178814476D+00,
+     :  0.1156480369431D-06, 0.5325677432457D+01, 0.5257585094865D+00 /
+      DATA ((S0(I,J,2),I=1,3),J= 61, 70) /
+     :  0.1141308860095D-06, 0.2153403923857D+01, 0.5336234347371D+00,
+     :  0.7913146470946D-07, 0.8642846847027D+00, 0.1478866649112D+01,
+     :  0.7439752463733D-07, 0.1970628496213D+01, 0.2164800718209D+00,
+     :  0.7280277104079D-07, 0.6073307250609D+01, 0.2101180877357D+00,
+     :  0.8319567719136D-07, 0.1954371928334D+01, 0.1692165728891D+01,
+     :  0.7137705549290D-07, 0.8904989440909D+00, 0.4155522422634D+00,
+     :  0.6900825396225D-07, 0.2825717714977D+01, 0.1173197218910D+00,
+     :  0.7245757216635D-07, 0.2481677513331D+01, 0.1265567569334D+01,
+     :  0.6961165696255D-07, 0.1292955312978D+01, 0.9562891316684D+00,
+     :  0.7571804456890D-07, 0.3427517575069D+01, 0.1422690933580D-01 /
+      DATA ((S0(I,J,2),I=1,3),J= 71, 80) /
+     :  0.6605425721904D-07, 0.8052192701492D+00, 0.6470106940028D+00,
+     :  0.7375477357248D-07, 0.1705076390088D+01, 0.1581959461667D+01,
+     :  0.7041664951470D-07, 0.4848356967891D+00, 0.9597935788730D-01,
+     :  0.6322199535763D-07, 0.3878069473909D+01, 0.7084920306520D-01,
+     :  0.5244380279191D-07, 0.2645560544125D+01, 0.5265099800692D+00,
+     :  0.5143125704988D-07, 0.4834486101370D+01, 0.5328719641544D+00,
+     :  0.5871866319373D-07, 0.7981472548900D+00, 0.7871412831580D-01,
+     :  0.6300822573871D-07, 0.5979398788281D+01, 0.2608790314060D+02,
+     :  0.6062154271548D-07, 0.4108655402756D+01, 0.1114304132498D+00,
+     :  0.4361912339976D-07, 0.5322624319280D+01, 0.1375773836557D+01 /
+      DATA ((S0(I,J,2),I=1,3),J= 81, 90) /
+     :  0.4417005920067D-07, 0.6240817359284D+01, 0.2770348281756D+00,
+     :  0.4686806749936D-07, 0.3214977301156D+01, 0.1143987543936D+00,
+     :  0.3758892132305D-07, 0.5879809634765D+01, 0.1596186371003D+01,
+     :  0.5151351332319D-07, 0.2893377688007D+00, 0.2228608264996D+00,
+     :  0.4554683578572D-07, 0.5475427144122D+01, 0.1465949902372D+00,
+     :  0.3442381385338D-07, 0.5992034796640D+01, 0.5070101000000D-01,
+     :  0.2831093954933D-07, 0.5367350273914D+01, 0.3092784376656D+00,
+     :  0.3756267090084D-07, 0.5758171285420D+01, 0.4903339079539D+00,
+     :  0.2816374679892D-07, 0.1863718700923D+01, 0.2991266627620D+00,
+     :  0.3419307025569D-07, 0.9524347534130D+00, 0.3518164938661D+00 /
+      DATA ((S0(I,J,2),I=1,3),J= 91,100) /
+     :  0.2904250494239D-07, 0.5304471615602D+01, 0.1099462426779D+00,
+     :  0.2471734511206D-07, 0.1297069793530D+01, 0.6256703299991D+00,
+     :  0.2539620831872D-07, 0.3281126083375D+01, 0.1256615170089D+02,
+     :  0.2281017868007D-07, 0.1829122133165D+01, 0.6681224869435D+01,
+     :  0.2275319473335D-07, 0.5797198160181D+01, 0.3932462625300D-02,
+     :  0.2547755368442D-07, 0.4752697708330D+01, 0.1169588211447D+01,
+     :  0.2285979669317D-07, 0.1223205292886D+01, 0.1045155034888D+01,
+     :  0.1913386560994D-07, 0.1757532993389D+01, 0.1155361302111D+01,
+     :  0.1809020525147D-07, 0.4246116108791D+01, 0.3368040641550D-01,
+     :  0.1649213300201D-07, 0.1445162890627D+01, 0.4408250688924D+00 /
+      DATA ((S0(I,J,2),I=1,3),J=101,110) /
+     :  0.1834972793932D-07, 0.1126917567225D+01, 0.4452511715700D-02,
+     :  0.1439550648138D-07, 0.6160756834764D+01, 0.9420622223326D+00,
+     :  0.1487645457041D-07, 0.4358761931792D+01, 0.4123712502208D+00,
+     :  0.1731729516660D-07, 0.6134456753344D+01, 0.2108507877249D+00,
+     :  0.1717747163567D-07, 0.1898186084455D+01, 0.2157473718317D+00,
+     :  0.1418190430374D-07, 0.4180286741266D+01, 0.6521991896920D-01,
+     :  0.1404844134873D-07, 0.7654053565412D-01, 0.4258542984690D-01,
+     :  0.1409842846538D-07, 0.4418612420312D+01, 0.2258291676434D+00,
+     :  0.1090948346291D-07, 0.1260615686131D+01, 0.4226656969313D+00,
+     :  0.1357577323612D-07, 0.3558248818690D+01, 0.7923417740620D-01 /
+      DATA ((S0(I,J,2),I=1,3),J=111,120) /
+     :  0.1018154061960D-07, 0.5676087241256D+01, 0.1456308687557D+00,
+     :  0.1412073972109D-07, 0.8394392632422D+00, 0.1525316725248D+00,
+     :  0.1030938326496D-07, 0.1653593274064D+01, 0.1795258541446D+01,
+     :  0.1180081567104D-07, 0.1285802592036D+01, 0.7032915397480D-01,
+     :  0.9708510575650D-08, 0.7631889488106D+00, 0.8434341241180D-01,
+     :  0.9637689663447D-08, 0.4630642649176D+01, 0.1272681024002D+01,
+     :  0.1068910429389D-07, 0.5294934032165D+01, 0.2123349582968D+00,
+     :  0.1063716179336D-07, 0.2736266800832D+01, 0.2142632012598D+00,
+     :  0.1234858713814D-07, 0.1302891146570D+01, 0.1847279083684D+00,
+     :  0.8912631189738D-08, 0.3570415993621D+01, 0.2648454860559D+01 /
+      DATA ((S0(I,J,2),I=1,3),J=121,130) /
+     :  0.1036378285534D-07, 0.4236693440949D+01, 0.1370332435159D+00,
+     :  0.9667798501561D-08, 0.2960768892398D+01, 0.4376440768498D+00,
+     :  0.8108314201902D-08, 0.6987781646841D+00, 0.2880807454688D+00,
+     :  0.7648364324628D-08, 0.2499017863863D+01, 0.2037373330570D+00,
+     :  0.7286136828406D-08, 0.3787426951665D+01, 0.1129145838217D+00,
+     :  0.9448237743913D-08, 0.2694354332983D+01, 0.5272426800584D+00,
+     :  0.9374276106428D-08, 0.4787121277064D+01, 0.5321392641652D+00,
+     :  0.7100226287462D-08, 0.3530238792101D+00, 0.6288513220417D+00,
+     :  0.9253056659571D-08, 0.1399478925664D+01, 0.1606092486742D+00,
+     :  0.6636432145504D-08, 0.3479575438447D+01, 0.1368660381889D+01 /
+      DATA ((S0(I,J,2),I=1,3),J=131,140) /
+     :  0.6469975312932D-08, 0.1383669964800D+01, 0.2008557621224D+01,
+     :  0.7335849729765D-08, 0.1243698166898D+01, 0.9561746721300D-02,
+     :  0.8743421205855D-08, 0.3776164289301D+01, 0.3801276407308D+00,
+     :  0.5993635744494D-08, 0.5627122113596D+01, 0.2042657109477D+02,
+     :  0.5981008479693D-08, 0.1674336636752D+01, 0.2111650433779D+01,
+     :  0.6188535145838D-08, 0.5214925208672D+01, 0.4305306221819D+00,
+     :  0.6596074017566D-08, 0.2907653268124D+01, 0.1063314406849D+01,
+     :  0.6630815126226D-08, 0.2127643669658D+01, 0.8389694097774D+00,
+     :  0.6156772830040D-08, 0.5082160803295D+01, 0.4234171675140D+00,
+     :  0.6446960563014D-08, 0.1872100916905D+01, 0.5287268506303D+00 /
+      DATA ((S0(I,J,2),I=1,3),J=141,150) /
+     :  0.6429324424668D-08, 0.5610276103577D+01, 0.5306550935933D+00,
+     :  0.6302232396465D-08, 0.1592152049607D+01, 0.1253008786510D-01,
+     :  0.6399244436159D-08, 0.2746214421532D+01, 0.5217580628120D+02,
+     :  0.5474965172558D-08, 0.2317666374383D+01, 0.2221856701002D+01,
+     :  0.5339293190692D-08, 0.1084724961156D+01, 0.7466759693650D-01,
+     :  0.5334733683389D-08, 0.3594106067745D+01, 0.7489573444450D-01,
+     :  0.5392665782110D-08, 0.5630254365606D+01, 0.1055449481598D+01,
+     :  0.6682075673789D-08, 0.1518480041732D+01, 0.2213766559277D+00,
+     :  0.5079130495960D-08, 0.2739765115711D+01, 0.2132517061319D+00,
+     :  0.5077759793261D-08, 0.5290711290094D+01, 0.2133464534247D+00 /
+      DATA ((S0(I,J,2),I=1,3),J=151,160) /
+     :  0.4832037368310D-08, 0.1404473217200D+01, 0.7160067364790D-01,
+     :  0.6463279674802D-08, 0.6038381695210D+01, 0.2209183458640D-01,
+     :  0.6240592771560D-08, 0.1290170653666D+01, 0.3306188016693D+00,
+     :  0.4672013521493D-08, 0.3261895939677D+01, 0.7796265773310D-01,
+     :  0.6500650750348D-08, 0.1154522312095D+01, 0.3884652414254D+00,
+     :  0.6344161389053D-08, 0.6206111545062D+01, 0.7605151500000D-01,
+     :  0.4682518370646D-08, 0.5409118796685D+01, 0.1073608853559D+01,
+     :  0.5329460015591D-08, 0.1202985784864D+01, 0.7287631425543D+00,
+     :  0.5701588675898D-08, 0.4098715257064D+01, 0.8731175355560D-01,
+     :  0.6030690867211D-08, 0.4132033218460D+00, 0.9846002785331D+00 /
+      DATA ((S0(I,J,2),I=1,3),J=161,170) /
+     :  0.4336256312655D-08, 0.1211415991827D+01, 0.4297791515992D+00,
+     :  0.4688498808975D-08, 0.3765479072409D+01, 0.2127790306879D+00,
+     :  0.4675578609335D-08, 0.4265540037226D+01, 0.2138191288687D+00,
+     :  0.4225578112158D-08, 0.5237566010676D+01, 0.3407705765729D+00,
+     :  0.5139422230028D-08, 0.1507173079513D+01, 0.7233337363710D-01,
+     :  0.4619995093571D-08, 0.9023957449848D-01, 0.8603097737811D+00,
+     :  0.4494776255461D-08, 0.5414930552139D+00, 0.7381754420900D-01,
+     :  0.4274026276788D-08, 0.4145735303659D+01, 0.7574578717200D-01,
+     :  0.5018141789353D-08, 0.3344408829055D+01, 0.3180992042600D-02,
+     :  0.4866163952181D-08, 0.3348534657607D+01, 0.7722995774390D-01 /
+      DATA ((S0(I,J,2),I=1,3),J=171,180) /
+     :  0.4111986020501D-08, 0.4198823597220D+00, 0.1451108196653D+00,
+     :  0.3356142784950D-08, 0.5609144747180D+01, 0.1274714967946D+00,
+     :  0.4070575554551D-08, 0.7028411059224D+00, 0.3503323232942D+00,
+     :  0.3257451857278D-08, 0.5624697983086D+01, 0.5296435984654D+00,
+     :  0.3256973703026D-08, 0.1857842076707D+01, 0.5297383457582D+00,
+     :  0.3830771508640D-08, 0.4562887279931D+01, 0.9098186128426D+00,
+     :  0.3725024005962D-08, 0.2358058692652D+00, 0.1084620721060D+00,
+     :  0.3136763921756D-08, 0.2049731526845D+01, 0.2346394437820D+00,
+     :  0.3795147256194D-08, 0.2432356296933D+00, 0.1862120789403D+00,
+     :  0.2877342229911D-08, 0.5631101279387D+01, 0.1905464808669D+01 /
+      DATA ((S0(I,J,2),I=1,3),J=181,190) /
+     :  0.3076931798805D-08, 0.1117615737392D+01, 0.3628624111593D+00,
+     :  0.2734765945273D-08, 0.5899826516955D+01, 0.2131850110243D+00,
+     :  0.2733405296885D-08, 0.2130562964070D+01, 0.2134131485323D+00,
+     :  0.2898552353410D-08, 0.3462387048225D+00, 0.5291709230214D+00,
+     :  0.2893736103681D-08, 0.8534352781543D+00, 0.5302110212022D+00,
+     :  0.3095717734137D-08, 0.2875061429041D+01, 0.2976424921901D+00,
+     :  0.2636190425832D-08, 0.2242512846659D+01, 0.1485980103780D+01,
+     :  0.3645512095537D-08, 0.1354016903958D+01, 0.6044726378023D+00,
+     :  0.2808173547723D-08, 0.6705114365631D-01, 0.6225157782540D-01,
+     :  0.2625012866888D-08, 0.4775705748482D+01, 0.5268983110410D-01 /
+      DATA ((S0(I,J,2),I=1,3),J=191,200) /
+     :  0.2572233995651D-08, 0.2638924216139D+01, 0.1258454114666D+01,
+     :  0.2604238824792D-08, 0.4826358927373D+01, 0.2103781122809D+00,
+     :  0.2596886385239D-08, 0.3200388483118D+01, 0.2162200472757D+00,
+     :  0.3228057304264D-08, 0.5384848409563D+01, 0.2007689919132D+00,
+     :  0.2481601798252D-08, 0.5173373487744D+01, 0.1062562936266D+01,
+     :  0.2745977498864D-08, 0.6250966149853D+01, 0.5651155736444D+00,
+     :  0.2669878833811D-08, 0.4906001352499D+01, 0.1400015846597D+00,
+     :  0.3203986611711D-08, 0.5034333010005D+01, 0.7036329877322D+00,
+     :  0.3354961227212D-08, 0.6108262423137D+01, 0.4549093064213D+00,
+     :  0.2400407324558D-08, 0.2135399294955D+01, 0.2125476091956D+00 /
+      DATA ((S0(I,J,2),I=1,3),J=201,210) /
+     :  0.2379905859802D-08, 0.5893721933961D+01, 0.2140505503610D+00,
+     :  0.2550844302187D-08, 0.3331940762063D+01, 0.1534957940063D+00,
+     :  0.2268824211001D-08, 0.1843418461035D+01, 0.2235935264888D+00,
+     :  0.2464700891204D-08, 0.3029548547230D+01, 0.2091065926078D+00,
+     :  0.2436814726024D-08, 0.4994717970364D+01, 0.2174915669488D+00,
+     :  0.2443623894745D-08, 0.2645102591375D+01, 0.1739420156204D+00,
+     :  0.2318701783838D-08, 0.5700547397897D+01, 0.7530171478090D-01,
+     :  0.2284448700256D-08, 0.5268898905872D+01, 0.7426161660010D-01,
+     :  0.2468848123510D-08, 0.5276280575078D+01, 0.2526561439362D+00,
+     :  0.2814052350303D-08, 0.6130168623475D+01, 0.5636314030725D+00 /
+      DATA ((S0(I,J,2),I=1,3),J=211,NS0Y) /
+     :  0.2243662755220D-08, 0.6631692457995D+00, 0.8886590321940D-01,
+     :  0.2330795855941D-08, 0.2499435487702D+01, 0.1056200952181D+01,
+     :  0.9757679038404D-09, 0.5796846023126D+01, 0.7826370942180D+02 /
+
+*  SSB-to-Sun, T^1, Y
+      DATA ((S1(I,J,2),I=1,3),J=  1, 10) /
+     :  0.8989047573576D-08, 0.5840593672122D+01, 0.4265981595566D+00,
+     :  0.7815938401048D-08, 0.1129664707133D+01, 0.2061856251104D+00,
+     :  0.7550926713280D-08, 0.6196589104845D+00, 0.2204125344462D+00,
+     :  0.6056556925895D-08, 0.1677494667846D+01, 0.1059381944224D+01,
+     :  0.5734142698204D-08, 0.4000920852962D+01, 0.5225775174439D+00,
+     :  0.5614341822459D-08, 0.3486722577328D+01, 0.5368044267797D+00,
+     :  0.1028678147656D-08, 0.1877141024787D+01, 0.7113454667900D-02,
+     :  0.7270792075266D-09, 0.5077167301739D+01, 0.6398972393349D+00,
+     :  0.8734141726040D-09, 0.9069550282609D-01, 0.4194847048887D+00,
+     :  0.5377371402113D-09, 0.6039381844671D+01, 0.4337116142245D+00 /
+      DATA ((S1(I,J,2),I=1,3),J= 11, 20) /
+     :  0.4729719431571D-09, 0.2153086311760D+01, 0.2132990797783D+00,
+     :  0.4458052820973D-09, 0.5059830025565D+01, 0.5296909721118D+00,
+     :  0.4406855467908D-09, 0.2027971692630D+01, 0.1589072916335D+01,
+     :  0.3101659310977D-09, 0.3317677981860D+01, 0.1052268489556D+01,
+     :  0.3016749232545D-09, 0.3913703482532D+01, 0.1066495398892D+01,
+     :  0.3198541352656D-09, 0.1275513098525D+01, 0.1495633313810D+00,
+     :  0.2142065389871D-09, 0.5301351614597D+01, 0.3163918923335D+00,
+     :  0.1902615247592D-09, 0.4894943352736D+00, 0.2275259891141D+00,
+     :  0.1613410990871D-09, 0.2449891130437D+01, 0.1102062672231D+00,
+     :  0.1576992165097D-09, 0.4211421447633D+01, 0.7626583626240D-01 /
+      DATA ((S1(I,J,2),I=1,3),J= 21, 30) /
+     :  0.1241637259894D-09, 0.4140803368133D+01, 0.5154640627760D+00,
+     :  0.1313974830355D-09, 0.3591920305503D+01, 0.3664874755930D-01,
+     :  0.1181697118258D-09, 0.1506314382788D+01, 0.6327837846670D+00,
+     :  0.1238239742779D-09, 0.7461405378404D+00, 0.3961708870310D-01,
+     :  0.1010107068241D-09, 0.6271010795475D+00, 0.7329749511860D-01,
+     :  0.9226316616509D-10, 0.1259158839583D+01, 0.1990721704425D+00,
+     :  0.8664946419555D-10, 0.3353244696934D+01, 0.5439178814476D+00,
+     :  0.7757230468978D-10, 0.1447677295196D+01, 0.9491756770005D+00,
+     :  0.7693168628139D-10, 0.1120509896721D+01, 0.1030928125552D+00,
+     :  0.5487897454612D-10, 0.4439380426795D+01, 0.8531963191132D+00 /
+      DATA ((S1(I,J,2),I=1,3),J= 31, 40) /
+     :  0.5196118677218D-10, 0.3788856619137D+00, 0.2093666171530D+00,
+     :  0.5110853339935D-10, 0.1386879372016D+01, 0.2172315424036D+00,
+     :  0.5027804534813D-10, 0.1647881805466D+00, 0.2164800718209D+00,
+     :  0.4922485922674D-10, 0.1594315079862D+01, 0.2101180877357D+00,
+     :  0.6155599524400D-10, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.4447147832161D-10, 0.5480720918976D+01, 0.3235053470014D+00,
+     :  0.4144691276422D-10, 0.1931371033660D+01, 0.6373574839730D-01,
+     :  0.4099950625452D-10, 0.5229611294335D+01, 0.6470106940028D+00,
+     :  0.5060541682953D-10, 0.1731112486298D+01, 0.1422690933580D-01,
+     :  0.4293615946300D-10, 0.2714571038925D+01, 0.7358765972222D+00 /
+      DATA ((S1(I,J,2),I=1,3),J= 41,NS1Y) /
+     :  0.3545659845763D-10, 0.4451041444634D+01, 0.5265099800692D+00,
+     :  0.3479112041196D-10, 0.3029385448081D+01, 0.5328719641544D+00,
+     :  0.3438516493570D-10, 0.2778507143731D+01, 0.8582758298370D-01,
+     :  0.3297341285033D-10, 0.7898709807584D+00, 0.1104591729320D-01,
+     :  0.2972585818015D-10, 0.3218785316973D+01, 0.5257585094865D+00,
+     :  0.2931707295017D-10, 0.4260731012098D+01, 0.5336234347371D+00,
+     :  0.2897198149403D-10, 0.1120753978101D+01, 0.1173197218910D+00,
+     :  0.2832293240878D-10, 0.4597682717827D+00, 0.2022531624851D+00,
+     :  0.2864348326612D-10, 0.2169939928448D+01, 0.9597935788730D-01,
+     :  0.2852714675471D-10, 0.2377659870578D+01, 0.2118763888447D+01 /
+
+*  SSB-to-Sun, T^2, Y
+      DATA ((S2(I,J,2),I=1,3),J=  1,NS2Y) /
+     :  0.1609114495091D-11, 0.2831096993481D+01, 0.2061856251104D+00,
+     :  0.1560330784946D-11, 0.5193058213906D+01, 0.2204125344462D+00,
+     :  0.1183535479202D-11, 0.5707003443890D+01, 0.5225775174439D+00,
+     :  0.1158183066182D-11, 0.1782400404928D+01, 0.5368044267797D+00,
+     :  0.1032868027407D-11, 0.4036925452011D+01, 0.2132990797783D+00,
+     :  0.6540142847741D-12, 0.4058241056717D+01, 0.4265981595566D+00,
+     :  0.7305236491596D-12, 0.6175401942957D+00, 0.5296909721118D+00,
+     : -0.5580725052968D-12, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.3946122651015D-12, 0.4108265279171D+00, 0.1059381944224D+01 /
+
+*  SSB-to-Sun, T^0, Z
+      DATA ((S0(I,J,3),I=1,3),J=  1, 10) /
+     :  0.1181255122986D-03, 0.4607918989164D+00, 0.2132990797783D+00,
+     :  0.1127777651095D-03, 0.4169146331296D+00, 0.5296909721118D+00,
+     :  0.4777754401806D-04, 0.4582657007130D+01, 0.3813291813120D-01,
+     :  0.1129354285772D-04, 0.5758735142480D+01, 0.7478166569050D-01,
+     : -0.1149543637123D-04, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.3298730512306D-05, 0.5978801994625D+01, 0.4265981595566D+00,
+     :  0.2733376706079D-05, 0.7665413691040D+00, 0.1059381944224D+01,
+     :  0.9426389657270D-06, 0.3710201265838D+01, 0.2061856251104D+00,
+     :  0.8187517749552D-06, 0.3390675605802D+00, 0.2204125344462D+00,
+     :  0.4080447871819D-06, 0.4552296640088D+00, 0.5225775174439D+00 /
+      DATA ((S0(I,J,3),I=1,3),J= 11, 20) /
+     :  0.3169973017028D-06, 0.3445455899321D+01, 0.5368044267797D+00,
+     :  0.2438098615549D-06, 0.5664675150648D+01, 0.3664874755930D-01,
+     :  0.2601897517235D-06, 0.1931894095697D+01, 0.1495633313810D+00,
+     :  0.2314558080079D-06, 0.3666319115574D+00, 0.3961708870310D-01,
+     :  0.1962549548002D-06, 0.3167411699020D+01, 0.7626583626240D-01,
+     :  0.2180518287925D-06, 0.1544420746580D+01, 0.7113454667900D-02,
+     :  0.1451382442868D-06, 0.1583756740070D+01, 0.1102062672231D+00,
+     :  0.1358439007389D-06, 0.5239941758280D+01, 0.6398972393349D+00,
+     :  0.1050585898028D-06, 0.2266958352859D+01, 0.3163918923335D+00,
+     :  0.1050029870186D-06, 0.2711495250354D+01, 0.4194847048887D+00 /
+      DATA ((S0(I,J,3),I=1,3),J= 21, 30) /
+     :  0.9934920679800D-07, 0.1116208151396D+01, 0.1589072916335D+01,
+     :  0.1048395331560D-06, 0.3408619600206D+01, 0.1021328554739D+02,
+     :  0.8370147196668D-07, 0.3810459401087D+01, 0.2535050500000D-01,
+     :  0.7989856510998D-07, 0.3769910473647D+01, 0.7329749511860D-01,
+     :  0.5441221655233D-07, 0.2416994903374D+01, 0.1030928125552D+00,
+     :  0.4610812906784D-07, 0.5858503336994D+01, 0.4337116142245D+00,
+     :  0.3923022803444D-07, 0.3354170010125D+00, 0.1484170571900D-02,
+     :  0.2610725582128D-07, 0.5410600646324D+01, 0.6327837846670D+00,
+     :  0.2455279767721D-07, 0.6120216681403D+01, 0.1162474756779D+01,
+     :  0.2375530706525D-07, 0.6055443426143D+01, 0.1052268489556D+01 /
+      DATA ((S0(I,J,3),I=1,3),J= 31, 40) /
+     :  0.1782967577553D-07, 0.3146108708004D+01, 0.8460828644453D+00,
+     :  0.1581687095238D-07, 0.6255496089819D+00, 0.3340612434717D+01,
+     :  0.1594657672461D-07, 0.3782604300261D+01, 0.1066495398892D+01,
+     :  0.1563448615040D-07, 0.1997775733196D+01, 0.2022531624851D+00,
+     :  0.1463624258525D-07, 0.1736316792088D+00, 0.3516457698740D-01,
+     :  0.1331585056673D-07, 0.4331941830747D+01, 0.9491756770005D+00,
+     :  0.1130634557637D-07, 0.6152017751825D+01, 0.2968341143800D-02,
+     :  0.1028949607145D-07, 0.2101792614637D+00, 0.2275259891141D+00,
+     :  0.1024074971618D-07, 0.4071833211074D+01, 0.5070101000000D-01,
+     :  0.8826956060303D-08, 0.4861633688145D+00, 0.2093666171530D+00 /
+      DATA ((S0(I,J,3),I=1,3),J= 41, 50) /
+     :  0.8572230171541D-08, 0.5268190724302D+01, 0.4110125927500D-01,
+     :  0.7649332643544D-08, 0.5134543417106D+01, 0.2608790314060D+02,
+     :  0.8581673291033D-08, 0.2920218146681D+01, 0.1480791608091D+00,
+     :  0.8430589300938D-08, 0.3604576619108D+01, 0.2172315424036D+00,
+     :  0.7776165501012D-08, 0.3772942249792D+01, 0.6373574839730D-01,
+     :  0.8311070234408D-08, 0.6200412329888D+01, 0.3235053470014D+00,
+     :  0.6927365212582D-08, 0.4543353113437D+01, 0.8531963191132D+00,
+     :  0.6791574208598D-08, 0.2882188406238D+01, 0.7181332454670D-01,
+     :  0.5593100811839D-08, 0.1776646892780D+01, 0.7429900518901D+00,
+     :  0.4553381853021D-08, 0.3949617611240D+01, 0.7775000683430D-01 /
+      DATA ((S0(I,J,3),I=1,3),J= 51, 60) /
+     :  0.5758000450068D-08, 0.3859251775075D+01, 0.1990721704425D+00,
+     :  0.4281283457133D-08, 0.1466294631206D+01, 0.2118763888447D+01,
+     :  0.4206935661097D-08, 0.5421776011706D+01, 0.1104591729320D-01,
+     :  0.4213751641837D-08, 0.3412048993322D+01, 0.2243449970715D+00,
+     :  0.5310506239878D-08, 0.5421641370995D+00, 0.5154640627760D+00,
+     :  0.3827450341320D-08, 0.8887314524995D+00, 0.1510475019529D+00,
+     :  0.4292435241187D-08, 0.1405043757194D+01, 0.1422690933580D-01,
+     :  0.3189780702289D-08, 0.1060049293445D+01, 0.1173197218910D+00,
+     :  0.3226611928069D-08, 0.6270858897442D+01, 0.2164800718209D+00,
+     :  0.2893897608830D-08, 0.5117563223301D+01, 0.6470106940028D+00 /
+      DATA ((S0(I,J,3),I=1,3),J= 61,NS0Z) /
+     :  0.3239852024578D-08, 0.4079092237983D+01, 0.2101180877357D+00,
+     :  0.2956892222200D-08, 0.1594917021704D+01, 0.3092784376656D+00,
+     :  0.2980177912437D-08, 0.5258787667564D+01, 0.4155522422634D+00,
+     :  0.3163725690776D-08, 0.3854589225479D+01, 0.8582758298370D-01,
+     :  0.2662262399118D-08, 0.3561326430187D+01, 0.5257585094865D+00,
+     :  0.2766689135729D-08, 0.3180732086830D+00, 0.1385174140878D+00,
+     :  0.2411600278464D-08, 0.3324798335058D+01, 0.5439178814476D+00,
+     :  0.2483527695131D-08, 0.4169069291947D+00, 0.5336234347371D+00,
+     :  0.7788777276590D-09, 0.1900569908215D+01, 0.5217580628120D+02 /
+
+*  SSB-to-Sun, T^1, Z
+      DATA ((S1(I,J,3),I=1,3),J=  1, 10) /
+     :  0.5444220475678D-08, 0.1803825509310D+01, 0.2132990797783D+00,
+     :  0.3883412695596D-08, 0.4668616389392D+01, 0.5296909721118D+00,
+     :  0.1334341434551D-08, 0.0000000000000D+00, 0.0000000000000D+00,
+     :  0.3730001266883D-09, 0.5401405918943D+01, 0.2061856251104D+00,
+     :  0.2894929197956D-09, 0.4932415609852D+01, 0.2204125344462D+00,
+     :  0.2857950357701D-09, 0.3154625362131D+01, 0.7478166569050D-01,
+     :  0.2499226432292D-09, 0.3657486128988D+01, 0.4265981595566D+00,
+     :  0.1937705443593D-09, 0.5740434679002D+01, 0.1059381944224D+01,
+     :  0.1374894396320D-09, 0.1712857366891D+01, 0.5368044267797D+00,
+     :  0.1217248678408D-09, 0.2312090870932D+01, 0.5225775174439D+00 /
+      DATA ((S1(I,J,3),I=1,3),J= 11,NS1Z) /
+     :  0.7961052740870D-10, 0.5283368554163D+01, 0.3813291813120D-01,
+     :  0.4979225949689D-10, 0.4298290471860D+01, 0.4194847048887D+00,
+     :  0.4388552286597D-10, 0.6145515047406D+01, 0.7113454667900D-02,
+     :  0.2586835212560D-10, 0.3019448001809D+01, 0.6398972393349D+00 /
+
+*  SSB-to-Sun, T^2, Z
+      DATA ((S2(I,J,3),I=1,3),J=  1,NS2Z) /
+     :  0.3749920358054D-12, 0.3230285558668D+01, 0.2132990797783D+00,
+     :  0.2735037220939D-12, 0.6154322683046D+01, 0.5296909721118D+00 /
+
+* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+*  Time since reference epoch, years.
+      T = ( DATE - DJM0 ) / DJY
+      T2 = T*T
+
+*  X then Y then Z.
+      DO K=1,3
+
+*     Initialize position and velocity component.
+         XYZ = 0D0
+         XYZD = 0D0
+
+*     ------------------------------------------------
+*     Obtain component of Sun to Earth ecliptic vector
+*     ------------------------------------------------
+
+*     Sun to Earth, T^0 terms.
+         DO J=1,NE0(K)
+            A = E0(1,J,K)
+            B = E0(2,J,K)
+            C = E0(3,J,K)
+            P = B + C*T
+            XYZ  = XYZ  + A*COS(P)
+            XYZD = XYZD - A*C*SIN(P)
+         END DO
+
+*     Sun to Earth, T^1 terms.
+         DO J=1,NE1(K)
+            A = E1(1,J,K)
+            B = E1(2,J,K)
+            C = E1(3,J,K)
+            CT = C*T
+            P = B + CT
+            CP = COS(P)
+            XYZ  = XYZ  + A*T*CP
+            XYZD = XYZD + A*(CP-CT*SIN(P))
+         END DO
+
+*     Sun to Earth, T^2 terms.
+         DO J=1,NE2(K)
+            A = E2(1,J,K)
+            B = E2(2,J,K)
+            C = E2(3,J,K)
+            CT = C*T
+            P = B + CT
+            CP = COS(P)
+            XYZ  = XYZ  + A*T2*CP
+            XYZD = XYZD + A*T*(2D0*CP-CT*SIN(P))
+         END DO
+
+*     Heliocentric Earth position and velocity component.
+         HP(K) = XYZ
+         HV(K) = XYZD / DJY
+
+*     ------------------------------------------------
+*     Obtain component of SSB to Earth ecliptic vector
+*     ------------------------------------------------
+
+*     SSB to Sun, T^0 terms.
+         DO J=1,NS0(K)
+            A = S0(1,J,K)
+            B = S0(2,J,K)
+            C = S0(3,J,K)
+            P = B + C*T
+            XYZ  = XYZ  + A*COS(P)
+            XYZD = XYZD - A*C*SIN(P)
+         END DO
+
+*     SSB to Sun, T^1 terms.
+         DO J=1,NS1(K)
+            A = S1(1,J,K)
+            B = S1(2,J,K)
+            C = S1(3,J,K)
+            CT = C*T
+            P = B + CT
+            CP = COS(P)
+            XYZ  = XYZ  + A*T*CP
+            XYZD = XYZD + A*(CP-CT*SIN(P))
+         END DO
+
+*     SSB to Sun, T^2 terms.
+         DO J=1,NS2(K)
+            A = S2(1,J,K)
+            B = S2(2,J,K)
+            C = S2(3,J,K)
+            CT = C*T
+            P = B + CT
+            CP = COS(P)
+            XYZ  = XYZ  + A*T2*CP
+            XYZD = XYZD + A*T*(2D0*CP-CT*SIN(P))
+         END DO
+
+*     Barycentric Earth position and velocity component.
+         BP(K) = XYZ
+         BV(K) = XYZD / DJY
+
+*     Next Cartesian component.
+      END DO
+
+*  Rotate from ecliptic to ICRS coordinates and return the results.
+      X = HP(1)
+      Y = HP(2)
+      Z = HP(3)
+      PH(1) =      X + AM12*Y + AM13*Z
+      PH(2) = AM21*X + AM22*Y + AM23*Z
+      PH(3) =          AM32*Y + AM33*Z
+      X = HV(1)
+      Y = HV(2)
+      Z = HV(3)
+      VH(1) =      X + AM12*Y + AM13*Z
+      VH(2) = AM21*X + AM22*Y + AM23*Z
+      VH(3) =          AM32*Y + AM33*Z
+      X = BP(1)
+      Y = BP(2)
+      Z = BP(3)
+      PB(1) =      X + AM12*Y + AM13*Z
+      PB(2) = AM21*X + AM22*Y + AM23*Z
+      PB(3) =          AM32*Y + AM33*Z
+      X = BV(1)
+      Y = BV(2)
+      Z = BV(3)
+      VB(1) =      X + AM12*Y + AM13*Z
+      VB(2) = AM21*X + AM22*Y + AM23*Z
+      VB(3) =          AM32*Y + AM33*Z
+
+      END
diff --git a/eqecl.f b/eqecl.f
new file mode 100644
index 0000000000000000000000000000000000000000..dab59eed86e8f8be114d988cd677a611adae3de2
--- /dev/null
+++ b/eqecl.f
@@ -0,0 +1,72 @@
+      SUBROUTINE sla_EQECL (DR, DD, DATE, DL, DB)
+*+
+*     - - - - - -
+*      E Q E C L
+*     - - - - - -
+*
+*  Transformation from J2000.0 equatorial coordinates to
+*  ecliptic coordinates (double precision)
+*
+*  Given:
+*     DR,DD       dp      J2000.0 mean RA,Dec (radians)
+*     DATE        dp      TDB (loosely ET) as Modified Julian Date
+*                                              (JD-2400000.5)
+*  Returned:
+*     DL,DB       dp      ecliptic longitude and latitude
+*                         (mean of date, IAU 1980 theory, radians)
+*
+*  Called:
+*     sla_DCS2C, sla_PREC, sla_EPJ, sla_DMXV, sla_ECMAT, sla_DCC2S,
+*     sla_DRANRM, sla_DRANGE
+*
+*  P.T.Wallace   Starlink   March 1986
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DR,DD,DATE,DL,DB
+
+      DOUBLE PRECISION sla_EPJ,sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION RMAT(3,3),V1(3),V2(3)
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DR,DD,V1)
+
+*  Mean J2000 to mean of date
+      CALL sla_PREC(2000D0,sla_EPJ(DATE),RMAT)
+      CALL sla_DMXV(RMAT,V1,V2)
+
+*  Equatorial to ecliptic
+      CALL sla_ECMAT(DATE,RMAT)
+      CALL sla_DMXV(RMAT,V2,V1)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V1,DL,DB)
+
+*  Express in conventional ranges
+      DL=sla_DRANRM(DL)
+      DB=sla_DRANGE(DB)
+
+      END
diff --git a/eqeqx.f b/eqeqx.f
new file mode 100644
index 0000000000000000000000000000000000000000..51669cb4b9d36477706e891f413ac06a969cf176
--- /dev/null
+++ b/eqeqx.f
@@ -0,0 +1,74 @@
+      DOUBLE PRECISION FUNCTION sla_EQEQX (DATE)
+*+
+*     - - - - - -
+*      E Q E Q X
+*     - - - - - -
+*
+*  Equation of the equinoxes  (IAU 1994, double precision)
+*
+*  Given:
+*     DATE    dp      TDB (loosely ET) as Modified Julian Date
+*                                          (JD-2400000.5)
+*
+*  The result is the equation of the equinoxes (double precision)
+*  in radians:
+*
+*     Greenwich apparent ST = GMST + sla_EQEQX
+*
+*  References:  IAU Resolution C7, Recommendation 3 (1994)
+*               Capitaine, N. & Gontier, A.-M., Astron. Astrophys.,
+*               275, 645-650 (1993)
+*
+*  Called:  sla_NUTC
+*
+*  Patrick Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+
+*  Turns to arc seconds and arc seconds to radians
+      DOUBLE PRECISION T2AS,AS2R
+      PARAMETER (T2AS=1296000D0,
+     :           AS2R=0.484813681109535994D-5)
+
+      DOUBLE PRECISION T,OM,DPSI,DEPS,EPS0
+
+
+
+*  Interval between basic epoch J2000.0 and current epoch (JC)
+      T=(DATE-51544.5D0)/36525D0
+
+*  Longitude of the mean ascending node of the lunar orbit on the
+*   ecliptic, measured from the mean equinox of date
+      OM=AS2R*(450160.280D0+(-5D0*T2AS-482890.539D0
+     :         +(7.455D0+0.008D0*T)*T)*T)
+
+*  Nutation
+      CALL sla_NUTC(DATE,DPSI,DEPS,EPS0)
+
+*  Equation of the equinoxes
+      sla_EQEQX=DPSI*COS(EPS0)+AS2R*(0.00264D0*SIN(OM)+
+     :                               0.000063D0*SIN(OM+OM))
+
+      END
diff --git a/eqgal.f b/eqgal.f
new file mode 100644
index 0000000000000000000000000000000000000000..56b527e6316890e7e7311950e69c6286c78c1a95
--- /dev/null
+++ b/eqgal.f
@@ -0,0 +1,96 @@
+      SUBROUTINE sla_EQGAL (DR, DD, DL, DB)
+*+
+*     - - - - - -
+*      E Q G A L
+*     - - - - - -
+*
+*  Transformation from J2000.0 equatorial coordinates to
+*  IAU 1958 galactic coordinates (double precision)
+*
+*  Given:
+*     DR,DD       dp       J2000.0 RA,Dec
+*
+*  Returned:
+*     DL,DB       dp       galactic longitude and latitude L2,B2
+*
+*  (all arguments are radians)
+*
+*  Called:
+*     sla_DCS2C, sla_DMXV, sla_DCC2S, sla_DRANRM, sla_DRANGE
+*
+*  Note:
+*     The equatorial coordinates are J2000.0.  Use the routine
+*     sla_EG50 if conversion from B1950.0 'FK4' coordinates is
+*     required.
+*
+*  Reference:
+*     Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+*
+*  P.T.Wallace   Starlink   21 September 1998
+*
+*  Copyright (C) 1998 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DR,DD,DL,DB
+
+      DOUBLE PRECISION sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION V1(3),V2(3)
+
+*
+*  L2,B2 system of galactic coordinates
+*
+*  P = 192.25       RA of galactic north pole (mean B1950.0)
+*  Q =  62.6        inclination of galactic to mean B1950.0 equator
+*  R =  33          longitude of ascending node
+*
+*  P,Q,R are degrees
+*
+*  Equatorial to galactic rotation matrix (J2000.0), obtained by
+*  applying the standard FK4 to FK5 transformation, for zero proper
+*  motion in FK5, to the columns of the B1950 equatorial to
+*  galactic rotation matrix:
+*
+      DOUBLE PRECISION RMAT(3,3)
+      DATA RMAT(1,1),RMAT(1,2),RMAT(1,3),
+     :     RMAT(2,1),RMAT(2,2),RMAT(2,3),
+     :     RMAT(3,1),RMAT(3,2),RMAT(3,3)/
+     : -0.054875539726D0,-0.873437108010D0,-0.483834985808D0,
+     : +0.494109453312D0,-0.444829589425D0,+0.746982251810D0,
+     : -0.867666135858D0,-0.198076386122D0,+0.455983795705D0/
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DR,DD,V1)
+
+*  Equatorial to galactic
+      CALL sla_DMXV(RMAT,V1,V2)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V2,DL,DB)
+
+*  Express in conventional ranges
+      DL=sla_DRANRM(DL)
+      DB=sla_DRANGE(DB)
+
+      END
diff --git a/etrms.f b/etrms.f
new file mode 100644
index 0000000000000000000000000000000000000000..bb2696ce7f8295f45c117115667a177824780163
--- /dev/null
+++ b/etrms.f
@@ -0,0 +1,79 @@
+      SUBROUTINE sla_ETRMS (EP, EV)
+*+
+*     - - - - - -
+*      E T R M S
+*     - - - - - -
+*
+*  Compute the E-terms (elliptic component of annual aberration)
+*  vector (double precision)
+*
+*  Given:
+*     EP      dp      Besselian epoch
+*
+*  Returned:
+*     EV      dp(3)   E-terms as (dx,dy,dz)
+*
+*  Note the use of the J2000 aberration constant (20.49552 arcsec).
+*  This is a reflection of the fact that the E-terms embodied in
+*  existing star catalogues were computed from a variety of
+*  aberration constants.  Rather than adopting one of the old
+*  constants the latest value is used here.
+*
+*  References:
+*     1  Smith, C.A. et al., 1989.  Astr.J. 97, 265.
+*     2  Yallop, B.D. et al., 1989.  Astr.J. 97, 274.
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EP,EV(3)
+
+*  Arcseconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+      DOUBLE PRECISION T,E,E0,P,EK,CP
+
+
+
+*  Julian centuries since B1950
+      T=(EP-1950D0)*1.00002135903D-2
+
+*  Eccentricity
+      E=0.01673011D0-(0.00004193D0+0.000000126D0*T)*T
+
+*  Mean obliquity
+      E0=(84404.836D0-(46.8495D0+(0.00319D0+0.00181D0*T)*T)*T)*AS2R
+
+*  Mean longitude of perihelion
+      P=(1015489.951D0+(6190.67D0+(1.65D0+0.012D0*T)*T)*T)*AS2R
+
+*  E-terms
+      EK=E*20.49552D0*AS2R
+      CP=COS(P)
+      EV(1)= EK*SIN(P)
+      EV(2)=-EK*CP*COS(E0)
+      EV(3)=-EK*CP*SIN(E0)
+
+      END
diff --git a/euler.f b/euler.f
new file mode 100644
index 0000000000000000000000000000000000000000..54a6660c8991b189f238b47c56d2ff4523fdd907
--- /dev/null
+++ b/euler.f
@@ -0,0 +1,85 @@
+      SUBROUTINE sla_EULER (ORDER, PHI, THETA, PSI, RMAT)
+*+
+*     - - - - - -
+*      E U L E R
+*     - - - - - -
+*
+*  Form a rotation matrix from the Euler angles - three successive
+*  rotations about specified Cartesian axes (single precision)
+*
+*  Given:
+*    ORDER  c*(*)    specifies about which axes the rotations occur
+*    PHI    r        1st rotation (radians)
+*    THETA  r        2nd rotation (   "   )
+*    PSI    r        3rd rotation (   "   )
+*
+*  Returned:
+*    RMAT   r(3,3)   rotation matrix
+*
+*  A rotation is positive when the reference frame rotates
+*  anticlockwise as seen looking towards the origin from the
+*  positive region of the specified axis.
+*
+*  The characters of ORDER define which axes the three successive
+*  rotations are about.  A typical value is 'ZXZ', indicating that
+*  RMAT is to become the direction cosine matrix corresponding to
+*  rotations of the reference frame through PHI radians about the
+*  old Z-axis, followed by THETA radians about the resulting X-axis,
+*  then PSI radians about the resulting Z-axis.
+*
+*  The axis names can be any of the following, in any order or
+*  combination:  X, Y, Z, uppercase or lowercase, 1, 2, 3.  Normal
+*  axis labelling/numbering conventions apply;  the xyz (=123)
+*  triad is right-handed.  Thus, the 'ZXZ' example given above
+*  could be written 'zxz' or '313' (or even 'ZxZ' or '3xZ').  ORDER
+*  is terminated by length or by the first unrecognized character.
+*
+*  Fewer than three rotations are acceptable, in which case the later
+*  angle arguments are ignored.  If all rotations are zero, the
+*  identity matrix is produced.
+*
+*  Called:  sla_DEULER
+*
+*  P.T.Wallace   Starlink   23 May 1997
+*
+*  Copyright (C) 1997 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) ORDER
+      REAL PHI,THETA,PSI,RMAT(3,3)
+
+      INTEGER J,I
+      DOUBLE PRECISION W(3,3)
+
+
+
+*  Compute matrix in double precision
+      CALL sla_DEULER(ORDER,DBLE(PHI),DBLE(THETA),DBLE(PSI),W)
+
+*  Copy the result
+      DO J=1,3
+         DO I=1,3
+            RMAT(I,J) = REAL(W(I,J))
+         END DO
+      END DO
+
+      END
diff --git a/evp.f b/evp.f
new file mode 100644
index 0000000000000000000000000000000000000000..a71759014027a0dd113449e942a51e968de70c8f
--- /dev/null
+++ b/evp.f
@@ -0,0 +1,456 @@
+      SUBROUTINE sla_EVP (DATE, DEQX, DVB, DPB, DVH, DPH)
+*+
+*     - - - -
+*      E V P
+*     - - - -
+*
+*  Barycentric and heliocentric velocity and position of the Earth
+*
+*  All arguments are double precision
+*
+*  Given:
+*
+*     DATE          TDB (loosely ET) as a Modified Julian Date
+*                                         (JD-2400000.5)
+*
+*     DEQX          Julian Epoch (e.g. 2000.0D0) of mean equator and
+*                   equinox of the vectors returned.  If DEQX .LE. 0D0,
+*                   all vectors are referred to the mean equator and
+*                   equinox (FK5) of epoch DATE.
+*
+*  Returned (all 3D Cartesian vectors):
+*
+*     DVB,DPB       barycentric velocity, position (AU/s, AU)
+*     DVH,DPH       heliocentric velocity, position (AU/s, AU)
+*
+*  Called:  sla_EPJ, sla_PREC
+*
+*  Notes:
+*
+*  1  This routine is accurate enough for many purposes but faster and
+*     more compact than the sla_EPV routine.  The maximum deviations
+*     from the JPL DE96 ephemeris are as follows:
+*
+*       barycentric velocity         0.42  m/s
+*       barycentric position         6900  km
+*
+*       heliocentric velocity        0.42  m/s
+*       heliocentric position        1600  km
+*
+*  2  The routine is adapted from the BARVEL and BARCOR subroutines of
+*     Stumpff (1980).  Most of the changes are merely cosmetic and do
+*     not affect the results at all.  However, some adjustments have
+*     been made so as to give results that refer to the IAU 1976 'FK5'
+*     equinox and precession, although the differences these changes
+*     make relative to the results from Stumpff's original 'FK4' version
+*     are smaller than the inherent accuracy of the algorithm.  One
+*     minor shortcoming in the original routines that has NOT been
+*     corrected is that better numerical accuracy could be achieved if
+*     the various polynomial evaluations were nested.
+*
+*  Reference:
+*
+*    Stumpff, P., Astron.Astrophys.Suppl.Ser. 41, 1-8 (1980).
+*
+*  Last revision:   7 April 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,DEQX,DVB(3),DPB(3),DVH(3),DPH(3)
+
+      INTEGER IDEQ,I,J,K
+
+      REAL CC2PI,CCSEC3,CCSGD,CCKM,CCMLD,CCFDI,CCIM,T,TSQ,A,PERTL,
+     :     PERTLD,PERTR,PERTRD,COSA,SINA,ESQ,E,PARAM,TWOE,TWOG,G,
+     :     PHI,F,SINF,COSF,PHID,PSID,PERTP,PERTPD,TL,SINLM,COSLM,
+     :     SIGMA,B,PLON,POMG,PECC,FLATM,FLAT
+
+      DOUBLE PRECISION DC2PI,DS2R,DCSLD,DC1MME,DT,DTSQ,DLOCAL,DML,
+     :                 DEPS,DPARAM,DPSI,D1PDRO,DRD,DRLD,DTL,DSINLS,
+     :                 DCOSLS,DXHD,DYHD,DZHD,DXBD,DYBD,DZBD,DCOSEP,
+     :                 DSINEP,DYAHD,DZAHD,DYABD,DZABD,DR,
+     :                 DXH,DYH,DZH,DXB,DYB,DZB,DYAH,DZAH,DYAB,
+     :                 DZAB,DEPJ,DEQCOR,B1950
+
+      REAL SN(4),CCSEL(3,17),CCAMPS(5,15),CCSEC(3,4),CCAMPM(4,3),
+     :     CCPAMV(4),CCPAM(4),FORBEL(7),SORBEL(17),SINLP(4),COSLP(4)
+      EQUIVALENCE (SORBEL(1),E),(FORBEL(1),G)
+
+      DOUBLE PRECISION DCFEL(3,8),DCEPS(3),DCARGS(2,15),DCARGM(2,3),
+     :                 DPREMA(3,3),W,VW(3)
+
+      DOUBLE PRECISION sla_EPJ
+
+      PARAMETER (DC2PI=6.2831853071796D0,CC2PI=6.283185)
+      PARAMETER (DS2R=0.7272205216643D-4)
+      PARAMETER (B1950=1949.9997904423D0)
+
+*
+*   Constants DCFEL(I,K) of fast changing elements
+*                     I=1                I=2              I=3
+      DATA DCFEL/ 1.7400353D+00, 6.2833195099091D+02, 5.2796D-06,
+     :            6.2565836D+00, 6.2830194572674D+02,-2.6180D-06,
+     :            4.7199666D+00, 8.3997091449254D+03,-1.9780D-05,
+     :            1.9636505D-01, 8.4334662911720D+03,-5.6044D-05,
+     :            4.1547339D+00, 5.2993466764997D+01, 5.8845D-06,
+     :            4.6524223D+00, 2.1354275911213D+01, 5.6797D-06,
+     :            4.2620486D+00, 7.5025342197656D+00, 5.5317D-06,
+     :            1.4740694D+00, 3.8377331909193D+00, 5.6093D-06/
+
+*
+*   Constants DCEPS and CCSEL(I,K) of slowly changing elements
+*                      I=1           I=2           I=3
+      DATA DCEPS/  4.093198D-01,-2.271110D-04,-2.860401D-08 /
+      DATA CCSEL/  1.675104E-02,-4.179579E-05,-1.260516E-07,
+     :             2.220221E-01, 2.809917E-02, 1.852532E-05,
+     :             1.589963E+00, 3.418075E-02, 1.430200E-05,
+     :             2.994089E+00, 2.590824E-02, 4.155840E-06,
+     :             8.155457E-01, 2.486352E-02, 6.836840E-06,
+     :             1.735614E+00, 1.763719E-02, 6.370440E-06,
+     :             1.968564E+00, 1.524020E-02,-2.517152E-06,
+     :             1.282417E+00, 8.703393E-03, 2.289292E-05,
+     :             2.280820E+00, 1.918010E-02, 4.484520E-06,
+     :             4.833473E-02, 1.641773E-04,-4.654200E-07,
+     :             5.589232E-02,-3.455092E-04,-7.388560E-07,
+     :             4.634443E-02,-2.658234E-05, 7.757000E-08,
+     :             8.997041E-03, 6.329728E-06,-1.939256E-09,
+     :             2.284178E-02,-9.941590E-05, 6.787400E-08,
+     :             4.350267E-02,-6.839749E-05,-2.714956E-07,
+     :             1.348204E-02, 1.091504E-05, 6.903760E-07,
+     :             3.106570E-02,-1.665665E-04,-1.590188E-07/
+
+*
+*   Constants of the arguments of the short-period perturbations
+*   by the planets:   DCARGS(I,K)
+*                       I=1               I=2
+      DATA DCARGS/ 5.0974222D+00,-7.8604195454652D+02,
+     :             3.9584962D+00,-5.7533848094674D+02,
+     :             1.6338070D+00,-1.1506769618935D+03,
+     :             2.5487111D+00,-3.9302097727326D+02,
+     :             4.9255514D+00,-5.8849265665348D+02,
+     :             1.3363463D+00,-5.5076098609303D+02,
+     :             1.6072053D+00,-5.2237501616674D+02,
+     :             1.3629480D+00,-1.1790629318198D+03,
+     :             5.5657014D+00,-1.0977134971135D+03,
+     :             5.0708205D+00,-1.5774000881978D+02,
+     :             3.9318944D+00, 5.2963464780000D+01,
+     :             4.8989497D+00, 3.9809289073258D+01,
+     :             1.3097446D+00, 7.7540959633708D+01,
+     :             3.5147141D+00, 7.9618578146517D+01,
+     :             3.5413158D+00,-5.4868336758022D+02/
+
+*
+*   Amplitudes CCAMPS(N,K) of the short-period perturbations
+*           N=1          N=2          N=3          N=4          N=5
+      DATA CCAMPS/
+     : -2.279594E-5, 1.407414E-5, 8.273188E-6, 1.340565E-5,-2.490817E-7,
+     : -3.494537E-5, 2.860401E-7, 1.289448E-7, 1.627237E-5,-1.823138E-7,
+     :  6.593466E-7, 1.322572E-5, 9.258695E-6,-4.674248E-7,-3.646275E-7,
+     :  1.140767E-5,-2.049792E-5,-4.747930E-6,-2.638763E-6,-1.245408E-7,
+     :  9.516893E-6,-2.748894E-6,-1.319381E-6,-4.549908E-6,-1.864821E-7,
+     :  7.310990E-6,-1.924710E-6,-8.772849E-7,-3.334143E-6,-1.745256E-7,
+     : -2.603449E-6, 7.359472E-6, 3.168357E-6, 1.119056E-6,-1.655307E-7,
+     : -3.228859E-6, 1.308997E-7, 1.013137E-7, 2.403899E-6,-3.736225E-7,
+     :  3.442177E-7, 2.671323E-6, 1.832858E-6,-2.394688E-7,-3.478444E-7,
+     :  8.702406E-6,-8.421214E-6,-1.372341E-6,-1.455234E-6,-4.998479E-8,
+     : -1.488378E-6,-1.251789E-5, 5.226868E-7,-2.049301E-7, 0.0E0,
+     : -8.043059E-6,-2.991300E-6, 1.473654E-7,-3.154542E-7, 0.0E0,
+     :  3.699128E-6,-3.316126E-6, 2.901257E-7, 3.407826E-7, 0.0E0,
+     :  2.550120E-6,-1.241123E-6, 9.901116E-8, 2.210482E-7, 0.0E0,
+     : -6.351059E-7, 2.341650E-6, 1.061492E-6, 2.878231E-7, 0.0E0/
+
+*
+*   Constants of the secular perturbations in longitude
+*   CCSEC3 and CCSEC(N,K)
+*                      N=1           N=2           N=3
+      DATA CCSEC3/-7.757020E-08/,
+     :     CCSEC/  1.289600E-06, 5.550147E-01, 2.076942E+00,
+     :             3.102810E-05, 4.035027E+00, 3.525565E-01,
+     :             9.124190E-06, 9.990265E-01, 2.622706E+00,
+     :             9.793240E-07, 5.508259E+00, 1.559103E+01/
+
+*   Sidereal rate DCSLD in longitude, rate CCSGD in mean anomaly
+      DATA DCSLD/1.990987D-07/,
+     :     CCSGD/1.990969E-07/
+
+*   Some constants used in the calculation of the lunar contribution
+      DATA CCKM/3.122140E-05/,
+     :     CCMLD/2.661699E-06/,
+     :     CCFDI/2.399485E-07/
+
+*
+*   Constants DCARGM(I,K) of the arguments of the perturbations
+*   of the motion of the Moon
+*                       I=1               I=2
+      DATA DCARGM/  5.1679830D+00, 8.3286911095275D+03,
+     :              5.4913150D+00,-7.2140632838100D+03,
+     :              5.9598530D+00, 1.5542754389685D+04/
+
+*
+*   Amplitudes CCAMPM(N,K) of the perturbations of the Moon
+*            N=1          N=2           N=3           N=4
+      DATA CCAMPM/
+     :  1.097594E-01, 2.896773E-07, 5.450474E-02, 1.438491E-07,
+     : -2.223581E-02, 5.083103E-08, 1.002548E-02,-2.291823E-08,
+     :  1.148966E-02, 5.658888E-08, 8.249439E-03, 4.063015E-08/
+
+*
+*   CCPAMV(K)=A*M*DL/DT (planets), DC1MME=1-MASS(Earth+Moon)
+      DATA CCPAMV/8.326827E-11,1.843484E-11,1.988712E-12,1.881276E-12/
+      DATA DC1MME/0.99999696D0/
+
+*   CCPAM(K)=A*M(planets), CCIM=INCLINATION(Moon)
+      DATA CCPAM/4.960906E-3,2.727436E-3,8.392311E-4,1.556861E-3/
+      DATA CCIM/8.978749E-2/
+
+
+
+
+*
+*   EXECUTION
+*   ---------
+
+*   Control parameter IDEQ, and time arguments
+      IDEQ = 0
+      IF (DEQX.GT.0D0) IDEQ=1
+      DT = (DATE-15019.5D0)/36525D0
+      T = REAL(DT)
+      DTSQ = DT*DT
+      TSQ = REAL(DTSQ)
+
+*   Values of all elements for the instant DATE
+      DO K=1,8
+         DLOCAL = MOD(DCFEL(1,K)+DT*DCFEL(2,K)+DTSQ*DCFEL(3,K), DC2PI)
+         IF (K.EQ.1) THEN
+            DML = DLOCAL
+         ELSE
+            FORBEL(K-1) = REAL(DLOCAL)
+         END IF
+      END DO
+      DEPS = MOD(DCEPS(1)+DT*DCEPS(2)+DTSQ*DCEPS(3), DC2PI)
+      DO K=1,17
+         SORBEL(K) = MOD(CCSEL(1,K)+T*CCSEL(2,K)+TSQ*CCSEL(3,K),
+     :                   CC2PI)
+      END DO
+
+*   Secular perturbations in longitude
+      DO K=1,4
+         A = MOD(CCSEC(2,K)+T*CCSEC(3,K), CC2PI)
+         SN(K) = SIN(A)
+      END DO
+
+*   Periodic perturbations of the EMB (Earth-Moon barycentre)
+      PERTL =  CCSEC(1,1)          *SN(1) +CCSEC(1,2)*SN(2)+
+     :        (CCSEC(1,3)+T*CCSEC3)*SN(3) +CCSEC(1,4)*SN(4)
+      PERTLD = 0.0
+      PERTR = 0.0
+      PERTRD = 0.0
+      DO K=1,15
+         A = SNGL(MOD(DCARGS(1,K)+DT*DCARGS(2,K), DC2PI))
+         COSA = COS(A)
+         SINA = SIN(A)
+         PERTL = PERTL + CCAMPS(1,K)*COSA+CCAMPS(2,K)*SINA
+         PERTR = PERTR + CCAMPS(3,K)*COSA+CCAMPS(4,K)*SINA
+         IF (K.LT.11) THEN
+            PERTLD = PERTLD+
+     :               (CCAMPS(2,K)*COSA-CCAMPS(1,K)*SINA)*CCAMPS(5,K)
+            PERTRD = PERTRD+
+     :               (CCAMPS(4,K)*COSA-CCAMPS(3,K)*SINA)*CCAMPS(5,K)
+         END IF
+      END DO
+
+*   Elliptic part of the motion of the EMB
+      ESQ = E*E
+      DPARAM = 1D0-DBLE(ESQ)
+      PARAM = REAL(DPARAM)
+      TWOE = E+E
+      TWOG = G+G
+      PHI = TWOE*((1.0-ESQ*0.125)*SIN(G)+E*0.625*SIN(TWOG)
+     :          +ESQ*0.54166667*SIN(G+TWOG) )
+      F = G+PHI
+      SINF = SIN(F)
+      COSF = COS(F)
+      DPSI = DPARAM/(1D0+DBLE(E*COSF))
+      PHID = TWOE*CCSGD*((1.0+ESQ*1.5)*COSF+E*(1.25-SINF*SINF*0.5))
+      PSID = CCSGD*E*SINF/SQRT(PARAM)
+
+*   Perturbed heliocentric motion of the EMB
+      D1PDRO = 1D0+DBLE(PERTR)
+      DRD = D1PDRO*(DBLE(PSID)+DPSI*DBLE(PERTRD))
+      DRLD = D1PDRO*DPSI*(DCSLD+DBLE(PHID)+DBLE(PERTLD))
+      DTL = MOD(DML+DBLE(PHI)+DBLE(PERTL), DC2PI)
+      DSINLS = SIN(DTL)
+      DCOSLS = COS(DTL)
+      DXHD = DRD*DCOSLS-DRLD*DSINLS
+      DYHD = DRD*DSINLS+DRLD*DCOSLS
+
+*   Influence of eccentricity, evection and variation on the
+*   geocentric motion of the Moon
+      PERTL = 0.0
+      PERTLD = 0.0
+      PERTP = 0.0
+      PERTPD = 0.0
+      DO K=1,3
+         A = SNGL(MOD(DCARGM(1,K)+DT*DCARGM(2,K), DC2PI))
+         SINA = SIN(A)
+         COSA = COS(A)
+         PERTL = PERTL +CCAMPM(1,K)*SINA
+         PERTLD = PERTLD+CCAMPM(2,K)*COSA
+         PERTP = PERTP +CCAMPM(3,K)*COSA
+         PERTPD = PERTPD-CCAMPM(4,K)*SINA
+      END DO
+
+*   Heliocentric motion of the Earth
+      TL = FORBEL(2)+PERTL
+      SINLM = SIN(TL)
+      COSLM = COS(TL)
+      SIGMA = CCKM/(1.0+PERTP)
+      A = SIGMA*(CCMLD+PERTLD)
+      B = SIGMA*PERTPD
+      DXHD = DXHD+DBLE(A*SINLM)+DBLE(B*COSLM)
+      DYHD = DYHD-DBLE(A*COSLM)+DBLE(B*SINLM)
+      DZHD =     -DBLE(SIGMA*CCFDI*COS(FORBEL(3)))
+
+*   Barycentric motion of the Earth
+      DXBD = DXHD*DC1MME
+      DYBD = DYHD*DC1MME
+      DZBD = DZHD*DC1MME
+      DO K=1,4
+         PLON = FORBEL(K+3)
+         POMG = SORBEL(K+1)
+         PECC = SORBEL(K+9)
+         TL = MOD(PLON+2.0*PECC*SIN(PLON-POMG), CC2PI)
+         SINLP(K) = SIN(TL)
+         COSLP(K) = COS(TL)
+         DXBD = DXBD+DBLE(CCPAMV(K)*(SINLP(K)+PECC*SIN(POMG)))
+         DYBD = DYBD-DBLE(CCPAMV(K)*(COSLP(K)+PECC*COS(POMG)))
+         DZBD = DZBD-DBLE(CCPAMV(K)*SORBEL(K+13)*COS(PLON-SORBEL(K+5)))
+      END DO
+
+*   Transition to mean equator of date
+      DCOSEP = COS(DEPS)
+      DSINEP = SIN(DEPS)
+      DYAHD = DCOSEP*DYHD-DSINEP*DZHD
+      DZAHD = DSINEP*DYHD+DCOSEP*DZHD
+      DYABD = DCOSEP*DYBD-DSINEP*DZBD
+      DZABD = DSINEP*DYBD+DCOSEP*DZBD
+
+*   Heliocentric coordinates of the Earth
+      DR = DPSI*D1PDRO
+      FLATM = CCIM*SIN(FORBEL(3))
+      A = SIGMA*COS(FLATM)
+      DXH = DR*DCOSLS-DBLE(A*COSLM)
+      DYH = DR*DSINLS-DBLE(A*SINLM)
+      DZH =          -DBLE(SIGMA*SIN(FLATM))
+
+*   Barycentric coordinates of the Earth
+      DXB = DXH*DC1MME
+      DYB = DYH*DC1MME
+      DZB = DZH*DC1MME
+      DO K=1,4
+         FLAT = SORBEL(K+13)*SIN(FORBEL(K+3)-SORBEL(K+5))
+         A = CCPAM(K)*(1.0-SORBEL(K+9)*COS(FORBEL(K+3)-SORBEL(K+1)))
+         B = A*COS(FLAT)
+         DXB = DXB-DBLE(B*COSLP(K))
+         DYB = DYB-DBLE(B*SINLP(K))
+         DZB = DZB-DBLE(A*SIN(FLAT))
+      END DO
+
+*   Transition to mean equator of date
+      DYAH = DCOSEP*DYH-DSINEP*DZH
+      DZAH = DSINEP*DYH+DCOSEP*DZH
+      DYAB = DCOSEP*DYB-DSINEP*DZB
+      DZAB = DSINEP*DYB+DCOSEP*DZB
+
+*   Copy result components into vectors, correcting for FK4 equinox
+      DEPJ=sla_EPJ(DATE)
+      DEQCOR = DS2R*(0.035D0+0.00085D0*(DEPJ-B1950))
+      DVH(1) = DXHD-DEQCOR*DYAHD
+      DVH(2) = DYAHD+DEQCOR*DXHD
+      DVH(3) = DZAHD
+      DVB(1) = DXBD-DEQCOR*DYABD
+      DVB(2) = DYABD+DEQCOR*DXBD
+      DVB(3) = DZABD
+      DPH(1) = DXH-DEQCOR*DYAH
+      DPH(2) = DYAH+DEQCOR*DXH
+      DPH(3) = DZAH
+      DPB(1) = DXB-DEQCOR*DYAB
+      DPB(2) = DYAB+DEQCOR*DXB
+      DPB(3) = DZAB
+
+*   Was precession to another equinox requested?
+      IF (IDEQ.NE.0) THEN
+
+*     Yes: compute precession matrix from MJD DATE to Julian epoch DEQX
+         CALL sla_PREC(DEPJ,DEQX,DPREMA)
+
+*     Rotate DVH
+         DO J=1,3
+            W=0D0
+            DO I=1,3
+               W=W+DPREMA(J,I)*DVH(I)
+            END DO
+            VW(J)=W
+         END DO
+         DO J=1,3
+            DVH(J)=VW(J)
+         END DO
+
+*     Rotate DVB
+         DO J=1,3
+            W=0D0
+            DO I=1,3
+               W=W+DPREMA(J,I)*DVB(I)
+            END DO
+            VW(J)=W
+         END DO
+         DO J=1,3
+            DVB(J)=VW(J)
+         END DO
+
+*     Rotate DPH
+         DO J=1,3
+            W=0D0
+            DO I=1,3
+               W=W+DPREMA(J,I)*DPH(I)
+            END DO
+            VW(J)=W
+         END DO
+         DO J=1,3
+            DPH(J)=VW(J)
+         END DO
+
+*     Rotate DPB
+         DO J=1,3
+            W=0D0
+            DO I=1,3
+               W=W+DPREMA(J,I)*DPB(I)
+            END DO
+            VW(J)=W
+         END DO
+         DO J=1,3
+            DPB(J)=VW(J)
+         END DO
+      END IF
+
+      END
diff --git a/f77.h b/f77.h
new file mode 100644
index 0000000000000000000000000000000000000000..95ceee83928fc0e254f78ece81f3e71fbf6119d0
--- /dev/null
+++ b/f77.h
@@ -0,0 +1,924 @@
+/*
+*+
+*  Name:
+*     f77.h and cnf.h
+
+*  Purpose:
+*     C - FORTRAN interace macros and prototypes
+
+*  Language:
+*     C (part ANSI, part not)
+
+*  Type of Module:
+*     C include file
+
+*  Description:
+*     Including this file in SLALIB allows SLALIB to remain free of any 
+*     dependencies on the rest of the Starlink Software Collection.
+*
+*     For historical reasons two files, F77.h and cnf.h are required
+*     but the have now been combined and for new code, only one is 
+*     necessary.
+*
+*     This file defines the macros needed to write C functions that are
+*     designed to be called from FORTRAN programs, and to do so in a
+*     portable way. Arguments are normally passed by reference from a
+*     FORTRAN program, and so the F77 macros arrange for a pointer to
+*     all arguments to be available. This requires no work on most
+*     machines, but will actually generate the pointers on a machine
+*     that passes FORTRAN arguments by value.
+
+*  Notes:
+*     -  Macros are provided to handle the conversion of logical data
+*        values between the way that FORTRAN represents a value and the
+*        way that C represents it.
+*     -  Macros are provided to convert variables between the FORTRAN and
+*        C method of representing them. In most cases there is no
+*        conversion required, the macros just arrange for a pointer to
+*        the FORTRAN variable to be set appropriately. The possibility that
+*        FORTRAN and C might use different ways of representing integer
+*        and floating point values is considered remote, the macros are
+*        really only there for completeness and to assist in the automatic 
+*        generation of C interfaces.
+*     -  For character variables the macros convert between
+*        the FORTRAN method of representing them (fixed length, blank
+*        filled strings) and the C method (variable length, null
+*        terminated strings) using calls to the CNF functions.
+
+*  Implementation Deficiencies:
+*     -  The macros support the K&R style of function definition, but
+*        this file may not work with all K&R compilers as it contains
+*        "#if defined" statements. These could be replaced with #ifdef's
+*        if necessary. This has not been done as is would make the code
+*        less clear and the need for support for K&R sytle definitions
+*        should disappear as ANSI compilers become the default.
+
+*  Copyright:
+*     Copyright (C) 1991, 1993 Science & Engineering Research Council
+*     Copyright (C) 2006 Particle Physics and Astronomy Research Council
+
+*  Licence:
+*     This program is free software; you can redistribute it and/or
+*     modify it under the terms of the GNU General Public License as
+*     published by the Free Software Foundation; either version 2 of
+*     the License, or (at your option) any later version.
+*     
+*     This program is distributed in the hope that it will be
+*     useful,but WITHOUT ANY WARRANTY; without even the implied
+*     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+*     PURPOSE. See the GNU General Public License for more details.
+*     
+*     You should have received a copy of the GNU General Public License
+*     along with this program; if not, write to the Free Software
+*     Foundation, Inc., 59 Temple Place,Suite 330, Boston, MA
+*     02111-1307, USA
+
+*  Authors:
+*     PMA: Peter Allan (Starlink, RAL)
+*     AJC: Alan Chipperfield (Starlink, RAL)
+*     DSB: David S Berry (JAC)
+*     PWD: Peter W. Draper (JAC, Durham University)
+*     {enter_new_authors_here}
+
+*  History:
+*     13-JUN-2006 (DSB):
+*        Original version, copied from AST.
+*     22-JUN-2006 (PWD):
+*        Updated to include changes that handle the return type of 
+*        REAL functions (double, not float, on some platforms).
+*     {enter_further_changes_here}
+*        
+
+*  Bugs:
+*     {note_any_bugs_here}
+
+*-
+------------------------------------------------------------------------------
+*/
+#if !defined(CNF_MACROS)
+#define CNF_MACROS
+
+#include <stdlib.h>
+/*  This initial sections defines values for all macros. These are the	    */
+/*  values that are generally appropriate to an ANSI C compiler on Unix.    */
+/*  For macros that have different values on other systems, the macros	    */
+/*  should be undefined and then redefined in the system specific sections. */
+/*  At the end of this section, some macros are redefined if the compiler   */
+/*  is non-ANSI.							    */
+
+
+#if defined(__STDC__) || defined(VMS)
+#define CNF_CONST const
+#else
+#define CNF_CONST
+#endif
+
+/*  -----  Macros common to calling C from FORTRAN and FORTRAN from C  ---- */
+
+
+/*  ---  External Names  ---						    */
+
+/*  Macro to define the name of a Fortran routine or common block. This	    */
+/*  ends in an underscore on many Unix systems.				    */
+
+#define F77_EXTERNAL_NAME(X) X ## _
+
+
+/*  ---  Logical Values  ---						    */
+
+/*  Define the values that are used to represent the logical values TRUE    */
+/*  and FALSE in Fortran.						    */
+
+#define F77_TRUE 1
+#define F77_FALSE 0
+
+/*  Define macros that evaluate to C logical values, given a FORTRAN	    */
+/*  logical value.							    */
+
+#define F77_ISTRUE(X) ( X )
+#define F77_ISFALSE(X) ( !( X ) )
+
+
+/*  ---  Common Blocks  ---						    */
+
+/*  Macros used in referring to FORTRAN common blocks.			    */
+
+#define F77_BLANK_COMMON                _BLNK__
+#define F77_NAMED_COMMON(B)             F77_EXTERNAL_NAME(B)
+
+
+
+/*  ------------------  Calling C from FORTRAN  --------------------------- */
+
+
+/*  ---  Data Types  ---						    */
+
+/*  Define macros for all the Fortran data types (except COMPLEX, which is  */
+/*  not handled by this package).					    */
+
+#define F77_INTEGER_TYPE   int 
+#define F77_REAL_TYPE      float 
+#define F77_REAL_FUNCTION_TYPE      float
+#define F77_DOUBLE_TYPE    double 
+#define F77_LOGICAL_TYPE   int
+#define F77_CHARACTER_TYPE char
+#define F77_BYTE_TYPE      signed char
+#define F77_WORD_TYPE      short int
+#define F77_UBYTE_TYPE     unsigned char
+#define F77_UWORD_TYPE     unsigned short int
+
+/*  Define macros for the type of a CHARACTER and CHARACTER_ARRAY argument  */
+#define F77_CHARACTER_ARG_TYPE char
+#define F77_CHARACTER_ARRAY_ARG_TYPE char
+
+/*  Define a macro to use when passing arguments that STARLINK FORTRAN	    */
+/*  treats as a pointer. From the point of view of C, this type should be   */
+/*  (void *), but it is declared as type unsigned int as we actually pass   */
+/*  an INTEGER from the FORTRAN routine. The distinction is important for   */
+/*  architectures where the size of an INTEGER is not the same as the size  */
+/*  of a pointer.							    */
+
+#define F77_POINTER_TYPE   unsigned int
+
+
+/*  ---  Subroutine Names  ---						    */
+
+/* This declares that the C function returns a value of void.		    */
+
+#define F77_SUBROUTINE(X)  void F77_EXTERNAL_NAME(X)
+
+
+/*  ---  Function Names  ---						    */
+
+/*  Macros to define the types and names of functions that return values.   */
+/*  Due the the different ways that function return values could be	    */
+/*  implemented, it is better not to use functions, but to stick to using   */
+/*  subroutines.							    */
+
+/*  Character functions are implemented, but in a way that cannot be	    */
+/*  guaranteed to be portable although it will work on VMS, SunOS, Ultrix   */
+/*  and DEC OSF/1. It would be better to return the character value as a    */
+/*  subroutine argument where possible, rather than use a character	    */
+/*  function.								    */
+
+#define F77_INTEGER_FUNCTION(X)   F77_INTEGER_TYPE F77_EXTERNAL_NAME(X)
+#define F77_REAL_FUNCTION(X)      F77_REAL_FUNCTION_TYPE F77_EXTERNAL_NAME(X)
+#define F77_DOUBLE_FUNCTION(X)    F77_DOUBLE_TYPE F77_EXTERNAL_NAME(X)
+#define F77_LOGICAL_FUNCTION(X)   F77_LOGICAL_TYPE F77_EXTERNAL_NAME(X)
+#define F77_CHARACTER_FUNCTION(X) void F77_EXTERNAL_NAME(X)
+#define F77_BYTE_FUNCTION(X)      F77_BYTE_TYPE F77_EXTERNAL_NAME(X)
+#define F77_WORD_FUNCTION(X)      F77_WORD_TYPE F77_EXTERNAL_NAME(X)
+#define F77_UBYTE_FUNCTION(X)     F77_UBYTE_TYPE F77_EXTERNAL_NAME(X)
+#define F77_UWORD_FUNCTION(X)     F77_UWORD_TYPE F77_EXTERNAL_NAME(X)
+#define F77_POINTER_FUNCTION(X)   F77_POINTER_TYPE F77_EXTERNAL_NAME(X)
+
+
+/*  ---  Character return value for a function  ---			    */
+
+#define CHARACTER_RETURN_VALUE(X) CHARACTER(X) TRAIL(X)
+#define CHARACTER_RETURN_ARG(X) CHARACTER_ARG(X) TRAIL_ARG(X)
+
+/*  ---  Dummy Arguments  ---						    */
+
+/*  Macros for defining subroutine arguments. All these macros take a	    */
+/*  single argument; the name of the parameter. On most systems, a numeric  */
+/*  argument is passed as a pointer.					    */
+
+#define INTEGER(X)     F77_INTEGER_TYPE *CNF_CONST X
+#define REAL(X)        F77_REAL_TYPE    *CNF_CONST X
+#define DOUBLE(X)      F77_DOUBLE_TYPE  *CNF_CONST X
+#define LOGICAL(X)     F77_LOGICAL_TYPE *CNF_CONST X
+#define BYTE(X)        F77_BYTE_TYPE    *CNF_CONST X
+#define WORD(X)        F77_WORD_TYPE    *CNF_CONST X
+#define UBYTE(X)       F77_UBYTE_TYPE   *CNF_CONST X
+#define UWORD(X)       F77_UWORD_TYPE   *CNF_CONST X
+
+/*  Pointer arguments. Define a pointer type for passing pointer values	    */
+/*  between subroutines.						    */
+
+#define POINTER(X)     F77_POINTER_TYPE *CNF_CONST X
+
+/*  EXTERNAL arguments. Define a passed subroutine or function name */
+#define SUBROUTINE(X)  void (*X)()
+#define INTEGER_FUNCTION(X)  F77_INTEGER_TYPE (*X)()
+#define REAL_FUNCTION(X)  F77_REAL_TYPE (*X)()
+#define DOUBLE_FUNCTION(X)  F77_DOUBLE_TYPE (*X)()
+#define LOGICAL_FUNCTION(X)  F77_LOGICAL_TYPE (*X)()
+#define CHARACTER_FUNCTION(X)  F77_CHARACTER_TYPE (*X)()
+#define BYTE_FUNCTION(X)  F77_BYTE_TYPE (*X)()
+#define WORD_FUNCTION(X)  F77_WORD_TYPE (*X)()
+#define UBYTE_FUNCTION(X)  F77_UBYTE_TYPE (*X)()
+#define UWORD_FUNCTION(X)  F77_UWORD_TYPE (*X)()
+#define POINTER_FUNCTION(X)  F77_POINTER_TYPE (*X)()
+
+/*  Array arguments.							    */
+
+#define INTEGER_ARRAY(X)     F77_INTEGER_TYPE *CNF_CONST X
+#define REAL_ARRAY(X)        F77_REAL_TYPE    *CNF_CONST X
+#define DOUBLE_ARRAY(X)      F77_DOUBLE_TYPE  *CNF_CONST X
+#define LOGICAL_ARRAY(X)     F77_LOGICAL_TYPE *CNF_CONST X
+#define BYTE_ARRAY(X)        F77_BYTE_TYPE    *CNF_CONST X
+#define WORD_ARRAY(X)        F77_WORD_TYPE    *CNF_CONST X
+#define UBYTE_ARRAY(X)       F77_UBYTE_TYPE   *CNF_CONST X
+#define UWORD_ARRAY(X)       F77_UWORD_TYPE   *CNF_CONST X
+
+#define POINTER_ARRAY(X)     F77_POINTER_TYPE *CNF_CONST X
+
+/*  Macros to handle character arguments.				    */
+
+/*  Character arguments can be passed in many ways. The purpose of these    */
+/*  macros and the GENPTR_CHARACTER macro (defined in the next section) is  */
+/*  to generate a pointer to a character variable called ARG and an integer */
+/*  ARG_length containing the length of ARG. If these two variables are	    */
+/*  available directly from the argument list of the routine, then the	    */
+/*  GENPTR_CHARACTER macro is null, otherwise it works on intermediate	    */
+/*  variables.								    */
+
+#define CHARACTER(X)             F77_CHARACTER_TYPE *CNF_CONST X
+#define TRAIL(X)                 ,int X ## _length
+#define CHARACTER_ARRAY(X)       F77_CHARACTER_TYPE *CNF_CONST X
+
+
+/*  ---  Getting Pointers to Arguments  ---				    */
+
+/*  Macros that ensure that a pointer to each argument is available for the */
+/*  programmer to use. Usually this means that these macros are null. On    */
+/*  VMS, a pointer to a character variable has to be generated. If a	    */
+/*  particular machine were to pass arguments by reference, rather than by  */
+/*  value, then these macros would construct the appropriate pointers.	    */
+
+#define GENPTR_INTEGER(X)
+#define GENPTR_REAL(X)
+#define GENPTR_DOUBLE(X)
+#define GENPTR_CHARACTER(X)
+#define GENPTR_LOGICAL(X)
+#define GENPTR_BYTE(X)
+#define GENPTR_WORD(X)
+#define GENPTR_UBYTE(X)
+#define GENPTR_UWORD(X)
+#define GENPTR_POINTER(X)
+
+#define GENPTR_INTEGER_ARRAY(X)
+#define GENPTR_REAL_ARRAY(X)
+#define GENPTR_DOUBLE_ARRAY(X)
+#define GENPTR_CHARACTER_ARRAY(X)
+#define GENPTR_LOGICAL_ARRAY(X)
+#define GENPTR_BYTE_ARRAY(X)
+#define GENPTR_WORD_ARRAY(X)
+#define GENPTR_UBYTE_ARRAY(X)
+#define GENPTR_UWORD_ARRAY(X)
+#define GENPTR_POINTER_ARRAY(X)
+
+#define GENPTR_SUBROUTINE(X)
+#define GENPTR_INTEGER_FUNCTION(X)
+#define GENPTR_REAL_FUNCTION(X)
+#define GENPTR_DOUBLE_FUNCTION(X)
+#define GENPTR_CHARACTER_FUNCTION(X)
+#define GENPTR_LOGICAL_FUNCTION(X)
+#define GENPTR_BYTE_FUNCTION(X)
+#define GENPTR_WORD_FUNCTION(X)
+#define GENPTR_UBYTE_FUNCTION(X)
+#define GENPTR_UWORD_FUNCTION(X)
+#define GENPTR_POINTER_FUNCTION(X)
+
+
+
+/*  ------------------  Calling FORTRAN from C  --------------------------- */
+
+
+/*  ---  Declare variables  ---						    */
+
+#define DECLARE_INTEGER(X) F77_INTEGER_TYPE X
+#define DECLARE_REAL(X)    F77_REAL_TYPE X
+#define DECLARE_DOUBLE(X)  F77_DOUBLE_TYPE X
+#define DECLARE_LOGICAL(X) F77_LOGICAL_TYPE X
+#define DECLARE_BYTE(X)    F77_BYTE_TYPE X
+#define DECLARE_WORD(X)    F77_WORD_TYPE X
+#define DECLARE_UBYTE(X)   F77_UBYTE_TYPE X
+#define DECLARE_UWORD(X)   F77_UWORD_TYPE X
+
+#define DECLARE_POINTER(X) F77_POINTER_TYPE X
+
+#define DECLARE_CHARACTER(X,L) F77_CHARACTER_TYPE X[L]; \
+   const int X##_length = L
+
+
+/*  ---  Declare arrays ---						    */
+
+#define DECLARE_INTEGER_ARRAY(X,D) F77_INTEGER_TYPE X[D]
+#define DECLARE_REAL_ARRAY(X,D)    F77_REAL_TYPE X[D]
+#define DECLARE_DOUBLE_ARRAY(X,D)  F77_DOUBLE_TYPE X[D]
+#define DECLARE_LOGICAL_ARRAY(X,D) F77_LOGICAL_TYPE X[D]
+#define DECLARE_BYTE_ARRAY(X,D)    F77_BYTE_TYPE X[D]
+#define DECLARE_WORD_ARRAY(X,D)    F77_WORD_TYPE X[D]
+#define DECLARE_UBYTE_ARRAY(X,D)   F77_UBYTE_TYPE X[D]
+#define DECLARE_UWORD_ARRAY(X,D)   F77_UWORD_TYPE X[D]
+#define DECLARE_POINTER_ARRAY(X,D) F77_POINTER_TYPE X[D]
+#define DECLARE_CHARACTER_ARRAY(X,L,D) F77_CHARACTER_TYPE X[D][L]; \
+   const int X##_length = L
+
+/*  ---  Declare and construct dynamic CHARACTER arguments ---                      */
+#define DECLARE_CHARACTER_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X##_length
+#define F77_CREATE_CHARACTER(X,L)  X=cnfCref(L);\
+   X##_length = L
+
+/* Declare Dynamic Fortran arrays */
+#define DECLARE_INTEGER_ARRAY_DYN(X) F77_INTEGER_TYPE *X
+#define DECLARE_REAL_ARRAY_DYN(X)    F77_REAL_TYPE *X
+#define DECLARE_DOUBLE_ARRAY_DYN(X)  F77_DOUBLE_TYPE *X
+#define DECLARE_LOGICAL_ARRAY_DYN(X) F77_LOGICAL_TYPE *X
+#define DECLARE_BYTE_ARRAY_DYN(X)    F77_BYTE_TYPE *X
+#define DECLARE_WORD_ARRAY_DYN(X)    F77_WORD_TYPE *X
+#define DECLARE_UBYTE_ARRAY_DYN(X)   F77_UBYTE_TYPE *X
+#define DECLARE_UWORD_ARRAY_DYN(X)   F77_UWORD_TYPE *X
+#define DECLARE_POINTER_ARRAY_DYN(X) F77_POINTER_TYPE *X
+#define DECLARE_CHARACTER_ARRAY_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X##_length
+
+/* Create arrays dynamic Fortran arrays for those types which require */
+/* Separate space for Fortran and C arrays                            */
+/* Character and logical are already defined                          */
+/* For most types there is nothing to do                              */
+#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
+        {int f77dims[1];f77dims[0]=N;X=cnfCrefa(L,1,f77dims);X##_length=L;}
+#define F77_CREATE_CHARACTER_ARRAY_M(X,L,N,D)  X=cnfCrefa(L,N,D);\
+   X##_length = L
+#define F77_CREATE_LOGICAL_ARRAY(X,N) \
+        {int f77dims[1];f77dims[0]=N;X=cnfCrela(1,f77dims);}
+#define F77_CREATE_LOGICAL_ARRAY_M(X,N,D) X=cnfCrela(N,D)
+#define F77_CREATE_INTEGER_ARRAY(X,N)
+#define F77_CREATE_REAL_ARRAY(X,N)
+#define F77_CREATE_DOUBLE_ARRAY(X,N)
+#define F77_CREATE_BYTE_ARRAY(X,N)
+#define F77_CREATE_UBYTE_ARRAY(X,N)
+#define F77_CREATE_WORD_ARRAY(X,N)
+#define F77_CREATE_UWORD_ARRAY(X,N)
+#define F77_CREATE_POINTER_ARRAY(X,N)\
+        X=(F77_POINTER_TYPE *) malloc(N*sizeof(F77_POINTER_TYPE))
+
+/* Associate Fortran arrays with C arrays                             */
+/* These macros ensure that there is space somewhere for the Fortran  */
+/* array. They are complemetary to the CREATE_type_ARRAY macros       */
+#define F77_ASSOC_CHARACTER_ARRAY(F,C)
+#define F77_ASSOC_LOGICAL_ARRAY(F,C)
+#define F77_ASSOC_INTEGER_ARRAY(F,C) F=C
+#define F77_ASSOC_REAL_ARRAY(F,C) F=C
+#define F77_ASSOC_DOUBLE_ARRAY(F,C) F=C
+#define F77_ASSOC_BYTE_ARRAY(F,C) F=C
+#define F77_ASSOC_UBYTE_ARRAY(F,C) F=C
+#define F77_ASSOC_WORD_ARRAY(F,C) F=C
+#define F77_ASSOC_UWORD_ARRAY(F,C) F=C
+#define F77_ASSOC_POINTER_ARRAY(F,C)
+
+/* Free created dynamic arrays */
+/* Character and logical are already defined */
+/* For most types there is nothing to do */
+#define F77_FREE_INTEGER(X)
+#define F77_FREE_REAL(X)
+#define F77_FREE_DOUBLE(X)
+#define F77_FREE_BYTE(X)
+#define F77_FREE_UBYTE(X)
+#define F77_FREE_WORD(X)
+#define F77_FREE_UWORD(X)
+#define F77_FREE_POINTER(X) cnfFree((void *)X);
+#define F77_FREE_CHARACTER(X) cnfFreef( X )
+#define F77_FREE_LOGICAL(X) cnfFree( (char *)X )
+
+/*  ---  IMPORT and EXPORT of values  --- */
+/* Export C variables to Fortran variables */
+#define F77_EXPORT_CHARACTER(C,F,L) cnfExprt(C,F,L)
+#define F77_EXPORT_DOUBLE(C,F) F=C
+#define F77_EXPORT_INTEGER(C,F) F=C
+#define F77_EXPORT_LOGICAL(C,F) F=C?F77_TRUE:F77_FALSE
+#define F77_EXPORT_REAL(C,F) F=C
+#define F77_EXPORT_BYTE(C,F) F=C
+#define F77_EXPORT_WORD(C,F) F=C
+#define F77_EXPORT_UBYTE(C,F) F=C
+#define F77_EXPORT_UWORD(C,F) F=C
+#define F77_EXPORT_POINTER(C,F) F=cnfFptr(C)
+#define F77_EXPORT_LOCATOR(C,F) cnfExpch(C,F,DAT__SZLOC)
+
+/* Export C arrays to Fortran */
+/* Arrays are assumed to be 1-d so just the number of elements is given  */
+/* This may be OK for n-d arrays also */
+/* CHARACTER arrays may be represented in C as arrays of arrays of char or */
+/* as arrays of pointers to char (the _P variant) */
+#define F77_EXPORT_CHARACTER_ARRAY(C,LC,F,LF,N) \
+        {int f77dims[1];f77dims[0]=N;cnfExprta(C,LC,F,LF,1,f77dims);}
+#define F77_EXPORT_CHARACTER_ARRAY_P(C,F,LF,N) \
+        {int f77dims[1];f77dims[0]=N;cnfExprtap(C,F,LF,1,f77dims);}
+#define F77_EXPORT_DOUBLE_ARRAY(C,F,N) F=(F77_DOUBLE_TYPE *)C
+#define F77_EXPORT_INTEGER_ARRAY(C,F,N) F=(F77_INTEGER_TYPE *)C
+#define F77_EXPORT_LOGICAL_ARRAY(C,F,N) \
+        {int f77dims[1];f77dims[0]=N;cnfExpla(C,F,1,f77dims);}
+#define F77_EXPORT_REAL_ARRAY(C,F,N) F=(F77_REAL_TYPE *)C
+#define F77_EXPORT_BYTE_ARRAY(C,F,N) F=(F77_BYTE_TYPE *)C
+#define F77_EXPORT_WORD_ARRAY(C,F,N) F=(F77_WORD_TYPE *)C
+#define F77_EXPORT_UBYTE_ARRAY(C,F,N) F=(F77_UBYTE_TYPE *)C
+#define F77_EXPORT_UWORD_ARRAY(C,F,N) F=(F77_UWORD_TYPE * )C
+#define F77_EXPORT_POINTER_ARRAY(C,F,N) \
+     {int f77i;for (f77i=0;f77i<N;f77i++)F[f77i]=cnfFptr(C[f77i]);}
+#define F77_EXPORT_LOCATOR_ARRAY(C,F,N) \
+        {int f77i;for (f77i=0;f77i<N;f77i++)cnfExpch(C,F,DAT__SZLOC);}
+
+/* Import Fortran variables to C */
+#define F77_IMPORT_CHARACTER(F,L,C) cnfImprt(F,L,C)
+#define F77_IMPORT_DOUBLE(F,C) C=F
+#define F77_IMPORT_INTEGER(F,C) C=F
+#define F77_IMPORT_LOGICAL(F,C) C=F77_ISTRUE(F)
+#define F77_IMPORT_REAL(F,C) C=F
+#define F77_IMPORT_BYTE(F,C) C=F
+#define F77_IMPORT_WORD(F,C) C=F
+#define F77_IMPORT_UBYTE(F,C) C=F
+#define F77_IMPORT_UWORD(F,C) C=F
+#define F77_IMPORT_POINTER(F,C) C=cnfCptr(F)
+#define F77_IMPORT_LOCATOR(F,C) cnfImpch(F,DAT__SZLOC,C)
+
+/* Import Fortran arrays to C */
+/* Arrays are assumed to be 1-d so just the number of elements is given  */
+/* This may be OK for n-d arrays also */
+/* CHARACTER arrays may be represented in C as arrays of arrays of char or */
+/* as arrays of pointers to char (the _P variant) */
+#define F77_IMPORT_CHARACTER_ARRAY(F,LF,C,LC,N) \
+        {int f77dims[1];f77dims[0]=N;cnfImprta(F,LF,C,LC,1,f77dims);}
+#define F77_IMPORT_CHARACTER_ARRAY_P(F,LF,C,LC,N) \
+        {int f77dims[1];f77dims[0]=N;cnfImprtap(F,LF,C,LC,1,f77dims);}
+#define F77_IMPORT_DOUBLE_ARRAY(F,C,N)
+#define F77_IMPORT_INTEGER_ARRAY(F,C,N)
+#define F77_IMPORT_LOGICAL_ARRAY(F,C,N) \
+        {int f77dims[1];f77dims[0]=N;cnfImpla(F,C,1,f77dims);}
+#define F77_IMPORT_REAL_ARRAY(F,C,N)
+#define F77_IMPORT_BYTE_ARRAY(F,C,N)
+#define F77_IMPORT_WORD_ARRAY(F,C,N)
+#define F77_IMPORT_UBYTE_ARRAY(F,C,N)
+#define F77_IMPORT_UWORD_ARRAY(F,C,N)
+#define F77_IMPORT_POINTER_ARRAY(F,C,N) \
+        {int f77i;for (f77i=0;f77i<N;f77i++)C[f77i]=cnfCptr(F[f77i]);}
+#define F77_IMPORT_LOCATOR_ARRAY(F,C,N) \
+        {int f77i;for (f77i=0;f77i<N;f77i++)cnfImpch(F,DAT__SZLOC,C);}
+
+/*  ---  Call a FORTRAN routine  ---					    */
+
+#define F77_CALL(X)  F77_EXTERNAL_NAME(X)
+
+
+/*  ---  Pass arguments to a FORTRAN routine  ---			    */
+
+#define INTEGER_ARG(X)   X
+#define REAL_ARG(X)      X
+#define DOUBLE_ARG(X)    X
+#define LOGICAL_ARG(X)   X
+#define BYTE_ARG(X)      X
+#define WORD_ARG(X)      X
+#define UBYTE_ARG(X)     X
+#define UWORD_ARG(X)     X
+#define POINTER_ARG(X)   X
+#define CHARACTER_ARG(X) X
+#define TRAIL_ARG(X)     ,X##_length
+
+#define SUBROUTINE_ARG(X)  X
+#define INTEGER_FUNCTION_ARG(X)  X
+#define REAL_FUNCTION_ARG(X)  X
+#define DOUBLE_FUNCTION_ARG(X)  X
+#define LOGICAL_FUNCTION_ARG(X)  X
+#define CHARACTER_FUNCTION_ARG(X)  X
+#define BYTE_FUNCTION_ARG(X)  X
+#define WORD_FUNCTION_ARG(X)  X
+#define UBYTE_FUNCTION_ARG(X)  X
+#define UWORD_FUNCTION_ARG(X)  X
+#define POINTER_FUNCTION_ARG(X)  X
+
+#define INTEGER_ARRAY_ARG(X)   (F77_INTEGER_TYPE *)X
+#define REAL_ARRAY_ARG(X)      (F77_REAL_TYPE *)X
+#define DOUBLE_ARRAY_ARG(X)    (F77_DOUBLE_TYPE *)X
+#define LOGICAL_ARRAY_ARG(X)   (F77_LOGICAL_TYPE *)X
+#define BYTE_ARRAY_ARG(X)      (F77_BYTE_TYPE *)X
+#define WORD_ARRAY_ARG(X)      (F77_WORD_TYPE *)X
+#define UBYTE_ARRAY_ARG(X)     (F77_UBYTE_TYPE *)X
+#define UWORD_ARRAY_ARG(X)     (F77_UWORD_TYPE *)X
+#define POINTER_ARRAY_ARG(X)   (F77_POINTER_TYPE *)X
+#define CHARACTER_ARRAY_ARG(X) (F77_CHARACTER_ARRAY_ARG_TYPE *)X
+
+
+/* ------------------------ Non-ansi section ------------------------------ */
+
+/*  The difference between ANSI and non-ANSI compilers, as far as macro	    */
+/*  definition is concerned, is that non-ANSI compilers do not support the  */
+/*  token concatenation operator (##). To work around this, we use the fact */
+/*  that the null comment is preprocessed to produce no characters at all   */
+/*  by our non-ANSI compilers.						    */
+/*  This section does not deal with the fact that some non-ANSI compilers   */
+/*  cannot handle function prototypes. That is handled in the machine 	    */
+/*  specific sections.							    */
+
+#if !defined(__STDC__)
+
+/*  ---  External Name  ---						    */
+
+/*  Macro to define the name of a Fortran routine or common block. This	    */
+/*  ends in an underscore on many Unix systems.				    */
+
+#undef  F77_EXTERNAL_NAME
+#define F77_EXTERNAL_NAME(X) X/**/_
+
+
+/*  ---  Dummy Arguments  ---						    */
+
+/*  Macros to handle character dummy arguments.				    */
+
+#undef  TRAIL
+#define TRAIL(X) ,int X/**/_length
+
+
+/*  ---  Declare variables  ---						    */
+
+#undef  DECLARE_CHARACTER
+#define DECLARE_CHARACTER(X,L)         F77_CHARACTER_TYPE X[L]; \
+   const int X/**/_length = L
+#undef  DECLARE_CHARACTER_ARRAY
+#define DECLARE_CHARACTER_ARRAY(X,L,D) F77_CHARACTER_TYPE X[D][L]; \
+   const int X/**/_length = L
+#undef DECLARE_CHARACTER_DYN
+#define DECLARE_CHARACTER_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X/**/_length
+#undef DECLARE_CHARACTER_ARRAY_DYN
+#define DECLARE_CHARACTER_ARRAY_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X/**/_length
+#undef F77_CREATE_CHARACTER
+#define F77_CREATE_CHARACTER(X,L)  X=cnfCref(L);\
+   X/**/_length = L
+#undef F77_CREATE_CHARACTER_ARRAY
+#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
+        {int f77dims[1];f77dims[0]=N;X=cnfCrefa(L,1,f77dims);X/**/_length=L;}
+
+/*  ---  Pass arguments to a FORTRAN routine  ---			    */
+
+#undef  TRAIL_ARG
+#define TRAIL_ARG(X)     ,X/**/_length
+
+
+#endif  /* of non ANSI redefinitions					    */
+
+
+/* -----------------------------------------------------------------------  */
+
+/* The standard macros defined above are known to work with the following   */
+/* systems:								    */
+ 
+/*--------
+|   Sun   |
+---------*/
+
+/*  On SunOS, the ANSI definitions work with the acc and gcc compilers.     */
+/*  The cc compiler uses the non ANSI definitions. It also needs the K&R    */
+/*  definitions in the file kr.h.					    */
+/*  On Solaris, the standard definitions work with the cc compiler.	    */
+
+#if defined(sun)
+
+#if !defined(__STDC__)
+#if !defined(_F77_KR)
+#define _F77_KR
+#endif
+#endif
+
+#endif	/* Sun								    */
+
+/* -------------------- System dependent sections ------------------------- */
+
+/*------------
+|   VAX/VMS   |
+-------------*/
+
+/* Many macros need to be changed due to the way that VMS handles external  */
+/* names, passes character arguments and handles logical values.	    */
+
+
+#if defined(VMS)
+
+/*  ---  Data Types  ---						    */
+
+/*  Redefine the macro for the byte data type as signed is not valid syntax */
+/*  as the VMS compiler is not ANSI compliant.				    */
+
+#undef  F77_BYTE_TYPE
+#define F77_BYTE_TYPE      char
+
+
+/*  ---  External Names  ---						    */
+
+/*  Macro to define the name of a Fortran routine or common block.	    */
+/*  Fortran and C routines names are the same on VMS.			    */
+
+#undef  F77_EXTERNAL_NAME
+#define F77_EXTERNAL_NAME(X) X
+
+
+/*  ---  Dummy Arguments  ---						    */
+
+/*  Macros to handle character arguments.				    */
+/*  Character string arguments are pointers to character string descriptors */
+/*  and there are no trailing arguments.				    */
+
+#if( VMS != 0 )
+#include <descrip.h>
+#endif
+
+
+#undef  F77_CHARACTER_ARG_TYPE
+#define F77_CHARACTER_ARG_TYPE struct dsc$descriptor_s
+#undef  F77_CHARACTER_ARRAY_ARG_TYPE
+#define F77_CHARACTER_ARRAY_ARG_TYPE struct dsc$descriptor_a
+#undef  CHARACTER
+#define CHARACTER(X) F77_CHARACTER_ARG_TYPE *CNF_CONST X/**/_arg
+#undef  TRAIL
+#define TRAIL(X)
+#undef  CHARACTER_ARRAY
+#define CHARACTER_ARRAY(X)  F77_CHARACTER_ARRAY_ARG_TYPE *CNF_CONST X/**/_arg
+#undef  GENPTR_CHARACTER
+#define GENPTR_CHARACTER(X) \
+   F77_CHARACTER_TYPE *X = X/**/_arg->dsc$a_pointer; \
+   int X/**/_length = X/**/_arg->dsc$w_length;
+#undef  GENPTR_CHARACTER_ARRAY
+#define GENPTR_CHARACTER_ARRAY(X)   GENPTR_CHARACTER(X)
+
+
+/*  ---  Logical Values  ---						    */
+
+#undef  F77_TRUE
+#define F77_TRUE -1
+#undef  F77_ISTRUE
+#define F77_ISTRUE(X) ( (X)&1 )
+#undef  F77_ISFALSE
+#define F77_ISFALSE(X) ( ! ( (X)&1 ) )
+
+
+/*  ---  Common Blocks  ---						    */
+
+#undef  F77_BLANK_COMMON
+#define F77_BLANK_COMMON  $BLANK
+
+
+/*  ---  Declare Variables  ---						    */
+
+#undef  DECLARE_CHARACTER
+#define DECLARE_CHARACTER(X,L) \
+   F77_CHARACTER_TYPE X[L];    const int X/**/_length = L; \
+   F77_CHARACTER_ARG_TYPE X/**/_descr = \
+      { L, DSC$K_DTYPE_T, DSC$K_CLASS_S, X }; \
+   F77_CHARACTER_ARG_TYPE *X/**/_arg = &X/**/_descr
+#undef  DECLARE_CHARACTER_ARRAY
+#define DECLARE_CHARACTER_ARRAY(X,L,D) \
+   F77_CHARACTER_TYPE X[D][L]; const int X/**/_length = L; \
+   F77_CHARACTER_ARRAY_ARG_TYPE X/**/_descr = \
+      { L, DSC$K_DTYPE_T, DSC$K_CLASS_S, X }; \
+   F77_CHARACTER_ARRAY_ARG_TYPE *X/**/_arg = &X/**/_descr
+
+
+/*  ---  The dynamic allocation of character arguments  ---                 */
+#undef DECLARE_CHARACTER_DYN
+#define DECLARE_CHARACTER_DYN(X) int X/**/_length;\
+                                  F77_CHARACTER_ARG_TYPE *X/**/_arg;\
+                                  F77_CHARACTER_TYPE *X
+#undef DECLARE_CHARACTER_ARRAY_DYN
+#define DECLARE_CHARACTER_ARRAY_DYN(X) int X/**/_length;\
+                                  F77_CHARACTER_ARRAY_ARG_TYPE *X/**/_arg;\
+                                  F77_CHARACTER_TYPE *X
+#undef F77_CREATE_CHARACTER
+#define F77_CREATE_CHARACTER(X,L) X/**/_arg = cnfCref(L);\
+                                  X = X/**/_arg->dsc$a_pointer; \
+                                  X/**/_length = X/**/_arg->dsc$w_length
+#undef F77_CREATE_CHARACTER_ARRAY
+#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
+  {int f77dims[1];f77dims[0]=N;X/**/_arg=cnfCrefa(L,1,f77dims);X/**/_length=L;}
+#define F77_CREATE_CHARACTER_ARRAY_M(X,L,N,D) X/**/_arg = cnfCrefa(L,N,D);\
+                                  X = X/**/_arg->dsc$a_pointer; \
+                                  X/**/_length = X/**/_arg->dsc$w_length
+#undef F77_FREE_CHARACTER
+#define F77_FREE_CHARACTER(X)     cnfFreef( X/**/_arg )
+
+/*  ---  Pass arguments to a FORTRAN routine  ---			    */
+
+#undef  CHARACTER_ARG
+#define CHARACTER_ARG(X) X/**/_arg
+#undef  CHARACTER_ARRAY_ARG
+#define CHARACTER_ARRAY_ARG(X) X/**/_arg
+#undef  TRAIL_ARG
+#define TRAIL_ARG(X)
+
+#endif  /* VMS								    */
+
+/* -----------------------------------------------------------------------  */
+
+/*--------------------------
+|   DECstation Ultrix (cc)  |
+|   DECstation Ultrix (c89) |
+|   DECstation OSF/1        |
+|   Alpha OSF/1             |
+ --------------------------*/
+
+/* Do this complicated set of definitions as a single #if cannot be	    */
+/* continued across multiple lines.					    */
+
+#if defined(mips) && defined(ultrix)
+#define _dec_unix 1
+#endif
+#if defined(__mips) && defined(__ultrix)
+#define _dec_unix 1
+#endif
+#if defined(__mips__) && defined(__osf__)
+#define _dec_unix 1
+#endif
+#if defined(__alpha) && defined(__osf__)
+#define _dec_unix 1
+#endif
+
+#if _dec_unix
+
+/*  The macros for Ultrix are the same as the standard ones except for ones */
+/*  dealing with logical values. The ANSI definitions work with the c89	    */
+/*  compiler, and the non ANSI definitions work with the cc compiler.	    */
+/*  The same applies to DEC OSF/1, except that its cc compiler is ANSI	    */
+/*  compliant.								    */
+
+
+/*  ---  Logical Values  ---						    */
+
+/*  Redefine macros that evaluate to a C logical value, given a FORTRAN	    */
+/*  logical value. These definitions are only valid when used with the DEC  */
+/*  FORTRAN for RISC compiler. If you are using the earlier FORTRAN for	    */
+/*  RISC compiler from MIPS, then these macros should be deleted.	    */
+
+#undef  F77_TRUE
+#define F77_TRUE -1
+#undef  F77_ISTRUE
+#define F77_ISTRUE(X) ( (X)&1 )
+#undef  F77_ISFALSE
+#define F77_ISFALSE(X) ( ! ( (X)&1 ) )
+
+
+#endif  /* DEC Unix							    */
+
+/*
+*+
+*  Name:
+*     cnf.h
+
+*  Purpose:
+*     Function prototypes for cnf routines
+
+*  Language:
+*     ANSI C
+
+*  Type of Module:
+*     C include file
+
+*  Description:
+*     These are the prototype definitions for the functions in the CNF
+*     library. They are used used in mixing C and FORTRAN programs.
+
+*  Copyright:
+*     Copyright (C) 1991 Science & Engineering Research Council
+
+*  Authors:
+*     PMA: Peter Allan (Starlink, RAL)
+*     AJC: Alan Chipperfield (Starlink, RAL)
+*     {enter_new_authors_here}
+
+*  History:
+*     23-MAY-1991 (PMA):
+*        Original version.
+*     12-JAN-1996 (AJC):
+*        Add cnf_cref and cnf_freef
+*     14-JUN-1996 (AJC):
+*        Add cnf_crefa, imprta, exprta
+*                crela, impla, expla
+*     18-JUL-1996 (AJC):
+*        Add impch and expch
+*     17-MAR-1998 (AJC):
+*        Add imprtap and exprtap
+*     {enter_changes_here}
+
+*  Bugs:
+*     {note_any_bugs_here}
+
+*-
+------------------------------------------------------------------------------
+*/
+void *cnfCalloc( size_t, size_t );
+void cnfCopyf( const char *source_f, int source_len, char *dest_f,
+                int dest_len );
+void *cnfCptr( F77_POINTER_TYPE );
+char *cnfCreat( int length );
+F77_CHARACTER_ARG_TYPE *cnfCref( int length );
+F77_CHARACTER_ARG_TYPE *cnfCrefa( int length, int ndims, const int *dims );
+char *cnfCreib( const char *source_f, int source_len );
+char *cnfCreim( const char *source_f, int source_len );
+F77_LOGICAL_TYPE *cnfCrela( int ndims, const int *dims );
+void cnfExpch( const char *source_c, char *dest_f, int nchars );
+void cnfExpla( const int *source_c, F77_LOGICAL_TYPE *dest_f, int ndims,
+                const int *dims );
+void cnfExpn( const char *source_c, int max, char *dest_f, int dest_len );
+void cnfExprt( const char *source_c, char *dest_f, int dest_len );
+void cnfExprta( const char *source_c, int source_len, char *dest_f,
+                 int dest_len, int ndims, const int *dims );
+void cnfExprtap( char *const *source_c, char *dest_f, int dest_len, 
+                  int ndims, const int *dims );
+F77_POINTER_TYPE cnfFptr( void *cpointer );
+void cnfFree( void * );
+void cnfFreef( F77_CHARACTER_ARG_TYPE *temp );
+void cnfImpb( const char *source_f, int source_len, char *dest_c );
+void cnfImpbn( const char *source_f, int source_len, int max, char *dest_c );
+void cnfImpch( const char *source_f, int nchars, char *dest_c );
+void cnfImpla( const F77_LOGICAL_TYPE *source_f, int *dest_c,
+                int ndims, const int *dims );
+void cnfImpn( const char *source_f, int source_len, int max, char *dest_c );
+void cnfImprt( const char *source_f, int source_len, char *dest_c );
+void cnfImprta( const char *source_f, int source_len, char *dest_c,
+                 int dest_len, int ndims, const int *dims );
+void cnfImprtap( const char *source_f, int source_len, char *const *dest_c,
+                  int dest_len, int ndims, const int *dims );
+int cnfLenc( const char *source_c );
+int cnfLenf( const char *source_f, int source_len );
+void *cnfMalloc( size_t );
+int cnfRegp( void * );
+void cnfUregp( void * );
+#endif
+
+#ifndef CNF_OLD_DEFINED
+#define CNF_OLD_DEFINED
+/* Define old names to be new names */
+#define cnf_calloc cnfCalloc
+#define cnf_copyf cnfCopyf
+#define cnf_cptr cnfCptr
+#define cnf_creat cnfCreat
+#define cnf_cref cnfCref
+#define cnf_crefa cnfCrefa
+#define cnf_creib cnfCreib
+#define cnf_creim cnfCreim
+#define cnf_crela cnfCrela
+#define cnf_expch cnfExpch
+#define cnf_expla cnfExpla
+#define cnf_expn cnfExpn
+#define cnf_exprt cnfExprt
+#define cnf_exprta cnfExprta
+#define cnf_exprtap cnfExprtap
+#define cnf_fptr cnfFptr
+#define cnf_free cnfFree
+#define cnf_freef cnfFreef
+#define cnf_impb cnfImpb
+#define cnf_impbn cnfImpbn
+#define cnf_impch cnfImpch
+#define cnf_impla cnfImpla
+#define cnf_impn cnfImpn
+#define cnf_imprt cnfImprt
+#define cnf_imprta cnfImprta
+#define cnf_imprtap cnfImprtap
+#define cnf_lenc cnfLenc
+#define cnf_lenf cnfLenf
+#define cnf_malloc cnfMalloc
+#define cnf_regp cnfRegp
+#define cnf_uregp cnfUregp
+
+#endif
diff --git a/f77.h.in b/f77.h.in
new file mode 100644
index 0000000000000000000000000000000000000000..464ffff9cc7ae3dafba4f7a2b8e98014170037c5
--- /dev/null
+++ b/f77.h.in
@@ -0,0 +1,924 @@
+/*
+*+
+*  Name:
+*     f77.h and cnf.h
+
+*  Purpose:
+*     C - FORTRAN interace macros and prototypes
+
+*  Language:
+*     C (part ANSI, part not)
+
+*  Type of Module:
+*     C include file
+
+*  Description:
+*     Including this file in SLALIB allows SLALIB to remain free of any 
+*     dependencies on the rest of the Starlink Software Collection.
+*
+*     For historical reasons two files, F77.h and cnf.h are required
+*     but the have now been combined and for new code, only one is 
+*     necessary.
+*
+*     This file defines the macros needed to write C functions that are
+*     designed to be called from FORTRAN programs, and to do so in a
+*     portable way. Arguments are normally passed by reference from a
+*     FORTRAN program, and so the F77 macros arrange for a pointer to
+*     all arguments to be available. This requires no work on most
+*     machines, but will actually generate the pointers on a machine
+*     that passes FORTRAN arguments by value.
+
+*  Notes:
+*     -  Macros are provided to handle the conversion of logical data
+*        values between the way that FORTRAN represents a value and the
+*        way that C represents it.
+*     -  Macros are provided to convert variables between the FORTRAN and
+*        C method of representing them. In most cases there is no
+*        conversion required, the macros just arrange for a pointer to
+*        the FORTRAN variable to be set appropriately. The possibility that
+*        FORTRAN and C might use different ways of representing integer
+*        and floating point values is considered remote, the macros are
+*        really only there for completeness and to assist in the automatic 
+*        generation of C interfaces.
+*     -  For character variables the macros convert between
+*        the FORTRAN method of representing them (fixed length, blank
+*        filled strings) and the C method (variable length, null
+*        terminated strings) using calls to the CNF functions.
+
+*  Implementation Deficiencies:
+*     -  The macros support the K&R style of function definition, but
+*        this file may not work with all K&R compilers as it contains
+*        "#if defined" statements. These could be replaced with #ifdef's
+*        if necessary. This has not been done as is would make the code
+*        less clear and the need for support for K&R sytle definitions
+*        should disappear as ANSI compilers become the default.
+
+*  Copyright:
+*     Copyright (C) 1991, 1993 Science & Engineering Research Council
+*     Copyright (C) 2006 Particle Physics and Astronomy Research Council
+
+*  Licence:
+*     This program is free software; you can redistribute it and/or
+*     modify it under the terms of the GNU General Public License as
+*     published by the Free Software Foundation; either version 2 of
+*     the License, or (at your option) any later version.
+*     
+*     This program is distributed in the hope that it will be
+*     useful,but WITHOUT ANY WARRANTY; without even the implied
+*     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+*     PURPOSE. See the GNU General Public License for more details.
+*     
+*     You should have received a copy of the GNU General Public License
+*     along with this program; if not, write to the Free Software
+*     Foundation, Inc., 59 Temple Place,Suite 330, Boston, MA
+*     02111-1307, USA
+
+*  Authors:
+*     PMA: Peter Allan (Starlink, RAL)
+*     AJC: Alan Chipperfield (Starlink, RAL)
+*     DSB: David S Berry (JAC)
+*     PWD: Peter W. Draper (JAC, Durham University)
+*     {enter_new_authors_here}
+
+*  History:
+*     13-JUN-2006 (DSB):
+*        Original version, copied from AST.
+*     22-JUN-2006 (PWD):
+*        Updated to include changes that handle the return type of 
+*        REAL functions (double, not float, on some platforms).
+*     {enter_further_changes_here}
+*        
+
+*  Bugs:
+*     {note_any_bugs_here}
+
+*-
+------------------------------------------------------------------------------
+*/
+#if !defined(CNF_MACROS)
+#define CNF_MACROS
+
+#include <stdlib.h>
+/*  This initial sections defines values for all macros. These are the	    */
+/*  values that are generally appropriate to an ANSI C compiler on Unix.    */
+/*  For macros that have different values on other systems, the macros	    */
+/*  should be undefined and then redefined in the system specific sections. */
+/*  At the end of this section, some macros are redefined if the compiler   */
+/*  is non-ANSI.							    */
+
+
+#if defined(__STDC__) || defined(VMS)
+#define CNF_CONST const
+#else
+#define CNF_CONST
+#endif
+
+/*  -----  Macros common to calling C from FORTRAN and FORTRAN from C  ---- */
+
+
+/*  ---  External Names  ---						    */
+
+/*  Macro to define the name of a Fortran routine or common block. This	    */
+/*  ends in an underscore on many Unix systems.				    */
+
+#define F77_EXTERNAL_NAME(X) X ## _
+
+
+/*  ---  Logical Values  ---						    */
+
+/*  Define the values that are used to represent the logical values TRUE    */
+/*  and FALSE in Fortran.						    */
+
+#define F77_TRUE 1
+#define F77_FALSE 0
+
+/*  Define macros that evaluate to C logical values, given a FORTRAN	    */
+/*  logical value.							    */
+
+#define F77_ISTRUE(X) ( X )
+#define F77_ISFALSE(X) ( !( X ) )
+
+
+/*  ---  Common Blocks  ---						    */
+
+/*  Macros used in referring to FORTRAN common blocks.			    */
+
+#define F77_BLANK_COMMON                _BLNK__
+#define F77_NAMED_COMMON(B)             F77_EXTERNAL_NAME(B)
+
+
+
+/*  ------------------  Calling C from FORTRAN  --------------------------- */
+
+
+/*  ---  Data Types  ---						    */
+
+/*  Define macros for all the Fortran data types (except COMPLEX, which is  */
+/*  not handled by this package).					    */
+
+#define F77_INTEGER_TYPE   int 
+#define F77_REAL_TYPE      float 
+#define F77_REAL_FUNCTION_TYPE      @REAL_FUNCTION_TYPE@
+#define F77_DOUBLE_TYPE    double 
+#define F77_LOGICAL_TYPE   int
+#define F77_CHARACTER_TYPE char
+#define F77_BYTE_TYPE      signed char
+#define F77_WORD_TYPE      short int
+#define F77_UBYTE_TYPE     unsigned char
+#define F77_UWORD_TYPE     unsigned short int
+
+/*  Define macros for the type of a CHARACTER and CHARACTER_ARRAY argument  */
+#define F77_CHARACTER_ARG_TYPE char
+#define F77_CHARACTER_ARRAY_ARG_TYPE char
+
+/*  Define a macro to use when passing arguments that STARLINK FORTRAN	    */
+/*  treats as a pointer. From the point of view of C, this type should be   */
+/*  (void *), but it is declared as type unsigned int as we actually pass   */
+/*  an INTEGER from the FORTRAN routine. The distinction is important for   */
+/*  architectures where the size of an INTEGER is not the same as the size  */
+/*  of a pointer.							    */
+
+#define F77_POINTER_TYPE   unsigned int
+
+
+/*  ---  Subroutine Names  ---						    */
+
+/* This declares that the C function returns a value of void.		    */
+
+#define F77_SUBROUTINE(X)  void F77_EXTERNAL_NAME(X)
+
+
+/*  ---  Function Names  ---						    */
+
+/*  Macros to define the types and names of functions that return values.   */
+/*  Due the the different ways that function return values could be	    */
+/*  implemented, it is better not to use functions, but to stick to using   */
+/*  subroutines.							    */
+
+/*  Character functions are implemented, but in a way that cannot be	    */
+/*  guaranteed to be portable although it will work on VMS, SunOS, Ultrix   */
+/*  and DEC OSF/1. It would be better to return the character value as a    */
+/*  subroutine argument where possible, rather than use a character	    */
+/*  function.								    */
+
+#define F77_INTEGER_FUNCTION(X)   F77_INTEGER_TYPE F77_EXTERNAL_NAME(X)
+#define F77_REAL_FUNCTION(X)      F77_REAL_FUNCTION_TYPE F77_EXTERNAL_NAME(X)
+#define F77_DOUBLE_FUNCTION(X)    F77_DOUBLE_TYPE F77_EXTERNAL_NAME(X)
+#define F77_LOGICAL_FUNCTION(X)   F77_LOGICAL_TYPE F77_EXTERNAL_NAME(X)
+#define F77_CHARACTER_FUNCTION(X) void F77_EXTERNAL_NAME(X)
+#define F77_BYTE_FUNCTION(X)      F77_BYTE_TYPE F77_EXTERNAL_NAME(X)
+#define F77_WORD_FUNCTION(X)      F77_WORD_TYPE F77_EXTERNAL_NAME(X)
+#define F77_UBYTE_FUNCTION(X)     F77_UBYTE_TYPE F77_EXTERNAL_NAME(X)
+#define F77_UWORD_FUNCTION(X)     F77_UWORD_TYPE F77_EXTERNAL_NAME(X)
+#define F77_POINTER_FUNCTION(X)   F77_POINTER_TYPE F77_EXTERNAL_NAME(X)
+
+
+/*  ---  Character return value for a function  ---			    */
+
+#define CHARACTER_RETURN_VALUE(X) CHARACTER(X) TRAIL(X)
+#define CHARACTER_RETURN_ARG(X) CHARACTER_ARG(X) TRAIL_ARG(X)
+
+/*  ---  Dummy Arguments  ---						    */
+
+/*  Macros for defining subroutine arguments. All these macros take a	    */
+/*  single argument; the name of the parameter. On most systems, a numeric  */
+/*  argument is passed as a pointer.					    */
+
+#define INTEGER(X)     F77_INTEGER_TYPE *CNF_CONST X
+#define REAL(X)        F77_REAL_TYPE    *CNF_CONST X
+#define DOUBLE(X)      F77_DOUBLE_TYPE  *CNF_CONST X
+#define LOGICAL(X)     F77_LOGICAL_TYPE *CNF_CONST X
+#define BYTE(X)        F77_BYTE_TYPE    *CNF_CONST X
+#define WORD(X)        F77_WORD_TYPE    *CNF_CONST X
+#define UBYTE(X)       F77_UBYTE_TYPE   *CNF_CONST X
+#define UWORD(X)       F77_UWORD_TYPE   *CNF_CONST X
+
+/*  Pointer arguments. Define a pointer type for passing pointer values	    */
+/*  between subroutines.						    */
+
+#define POINTER(X)     F77_POINTER_TYPE *CNF_CONST X
+
+/*  EXTERNAL arguments. Define a passed subroutine or function name */
+#define SUBROUTINE(X)  void (*X)()
+#define INTEGER_FUNCTION(X)  F77_INTEGER_TYPE (*X)()
+#define REAL_FUNCTION(X)  F77_REAL_TYPE (*X)()
+#define DOUBLE_FUNCTION(X)  F77_DOUBLE_TYPE (*X)()
+#define LOGICAL_FUNCTION(X)  F77_LOGICAL_TYPE (*X)()
+#define CHARACTER_FUNCTION(X)  F77_CHARACTER_TYPE (*X)()
+#define BYTE_FUNCTION(X)  F77_BYTE_TYPE (*X)()
+#define WORD_FUNCTION(X)  F77_WORD_TYPE (*X)()
+#define UBYTE_FUNCTION(X)  F77_UBYTE_TYPE (*X)()
+#define UWORD_FUNCTION(X)  F77_UWORD_TYPE (*X)()
+#define POINTER_FUNCTION(X)  F77_POINTER_TYPE (*X)()
+
+/*  Array arguments.							    */
+
+#define INTEGER_ARRAY(X)     F77_INTEGER_TYPE *CNF_CONST X
+#define REAL_ARRAY(X)        F77_REAL_TYPE    *CNF_CONST X
+#define DOUBLE_ARRAY(X)      F77_DOUBLE_TYPE  *CNF_CONST X
+#define LOGICAL_ARRAY(X)     F77_LOGICAL_TYPE *CNF_CONST X
+#define BYTE_ARRAY(X)        F77_BYTE_TYPE    *CNF_CONST X
+#define WORD_ARRAY(X)        F77_WORD_TYPE    *CNF_CONST X
+#define UBYTE_ARRAY(X)       F77_UBYTE_TYPE   *CNF_CONST X
+#define UWORD_ARRAY(X)       F77_UWORD_TYPE   *CNF_CONST X
+
+#define POINTER_ARRAY(X)     F77_POINTER_TYPE *CNF_CONST X
+
+/*  Macros to handle character arguments.				    */
+
+/*  Character arguments can be passed in many ways. The purpose of these    */
+/*  macros and the GENPTR_CHARACTER macro (defined in the next section) is  */
+/*  to generate a pointer to a character variable called ARG and an integer */
+/*  ARG_length containing the length of ARG. If these two variables are	    */
+/*  available directly from the argument list of the routine, then the	    */
+/*  GENPTR_CHARACTER macro is null, otherwise it works on intermediate	    */
+/*  variables.								    */
+
+#define CHARACTER(X)             F77_CHARACTER_TYPE *CNF_CONST X
+#define TRAIL(X)                 ,int X ## _length
+#define CHARACTER_ARRAY(X)       F77_CHARACTER_TYPE *CNF_CONST X
+
+
+/*  ---  Getting Pointers to Arguments  ---				    */
+
+/*  Macros that ensure that a pointer to each argument is available for the */
+/*  programmer to use. Usually this means that these macros are null. On    */
+/*  VMS, a pointer to a character variable has to be generated. If a	    */
+/*  particular machine were to pass arguments by reference, rather than by  */
+/*  value, then these macros would construct the appropriate pointers.	    */
+
+#define GENPTR_INTEGER(X)
+#define GENPTR_REAL(X)
+#define GENPTR_DOUBLE(X)
+#define GENPTR_CHARACTER(X)
+#define GENPTR_LOGICAL(X)
+#define GENPTR_BYTE(X)
+#define GENPTR_WORD(X)
+#define GENPTR_UBYTE(X)
+#define GENPTR_UWORD(X)
+#define GENPTR_POINTER(X)
+
+#define GENPTR_INTEGER_ARRAY(X)
+#define GENPTR_REAL_ARRAY(X)
+#define GENPTR_DOUBLE_ARRAY(X)
+#define GENPTR_CHARACTER_ARRAY(X)
+#define GENPTR_LOGICAL_ARRAY(X)
+#define GENPTR_BYTE_ARRAY(X)
+#define GENPTR_WORD_ARRAY(X)
+#define GENPTR_UBYTE_ARRAY(X)
+#define GENPTR_UWORD_ARRAY(X)
+#define GENPTR_POINTER_ARRAY(X)
+
+#define GENPTR_SUBROUTINE(X)
+#define GENPTR_INTEGER_FUNCTION(X)
+#define GENPTR_REAL_FUNCTION(X)
+#define GENPTR_DOUBLE_FUNCTION(X)
+#define GENPTR_CHARACTER_FUNCTION(X)
+#define GENPTR_LOGICAL_FUNCTION(X)
+#define GENPTR_BYTE_FUNCTION(X)
+#define GENPTR_WORD_FUNCTION(X)
+#define GENPTR_UBYTE_FUNCTION(X)
+#define GENPTR_UWORD_FUNCTION(X)
+#define GENPTR_POINTER_FUNCTION(X)
+
+
+
+/*  ------------------  Calling FORTRAN from C  --------------------------- */
+
+
+/*  ---  Declare variables  ---						    */
+
+#define DECLARE_INTEGER(X) F77_INTEGER_TYPE X
+#define DECLARE_REAL(X)    F77_REAL_TYPE X
+#define DECLARE_DOUBLE(X)  F77_DOUBLE_TYPE X
+#define DECLARE_LOGICAL(X) F77_LOGICAL_TYPE X
+#define DECLARE_BYTE(X)    F77_BYTE_TYPE X
+#define DECLARE_WORD(X)    F77_WORD_TYPE X
+#define DECLARE_UBYTE(X)   F77_UBYTE_TYPE X
+#define DECLARE_UWORD(X)   F77_UWORD_TYPE X
+
+#define DECLARE_POINTER(X) F77_POINTER_TYPE X
+
+#define DECLARE_CHARACTER(X,L) F77_CHARACTER_TYPE X[L]; \
+   const int X##_length = L
+
+
+/*  ---  Declare arrays ---						    */
+
+#define DECLARE_INTEGER_ARRAY(X,D) F77_INTEGER_TYPE X[D]
+#define DECLARE_REAL_ARRAY(X,D)    F77_REAL_TYPE X[D]
+#define DECLARE_DOUBLE_ARRAY(X,D)  F77_DOUBLE_TYPE X[D]
+#define DECLARE_LOGICAL_ARRAY(X,D) F77_LOGICAL_TYPE X[D]
+#define DECLARE_BYTE_ARRAY(X,D)    F77_BYTE_TYPE X[D]
+#define DECLARE_WORD_ARRAY(X,D)    F77_WORD_TYPE X[D]
+#define DECLARE_UBYTE_ARRAY(X,D)   F77_UBYTE_TYPE X[D]
+#define DECLARE_UWORD_ARRAY(X,D)   F77_UWORD_TYPE X[D]
+#define DECLARE_POINTER_ARRAY(X,D) F77_POINTER_TYPE X[D]
+#define DECLARE_CHARACTER_ARRAY(X,L,D) F77_CHARACTER_TYPE X[D][L]; \
+   const int X##_length = L
+
+/*  ---  Declare and construct dynamic CHARACTER arguments ---                      */
+#define DECLARE_CHARACTER_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X##_length
+#define F77_CREATE_CHARACTER(X,L)  X=cnfCref(L);\
+   X##_length = L
+
+/* Declare Dynamic Fortran arrays */
+#define DECLARE_INTEGER_ARRAY_DYN(X) F77_INTEGER_TYPE *X
+#define DECLARE_REAL_ARRAY_DYN(X)    F77_REAL_TYPE *X
+#define DECLARE_DOUBLE_ARRAY_DYN(X)  F77_DOUBLE_TYPE *X
+#define DECLARE_LOGICAL_ARRAY_DYN(X) F77_LOGICAL_TYPE *X
+#define DECLARE_BYTE_ARRAY_DYN(X)    F77_BYTE_TYPE *X
+#define DECLARE_WORD_ARRAY_DYN(X)    F77_WORD_TYPE *X
+#define DECLARE_UBYTE_ARRAY_DYN(X)   F77_UBYTE_TYPE *X
+#define DECLARE_UWORD_ARRAY_DYN(X)   F77_UWORD_TYPE *X
+#define DECLARE_POINTER_ARRAY_DYN(X) F77_POINTER_TYPE *X
+#define DECLARE_CHARACTER_ARRAY_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X##_length
+
+/* Create arrays dynamic Fortran arrays for those types which require */
+/* Separate space for Fortran and C arrays                            */
+/* Character and logical are already defined                          */
+/* For most types there is nothing to do                              */
+#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
+        {int f77dims[1];f77dims[0]=N;X=cnfCrefa(L,1,f77dims);X##_length=L;}
+#define F77_CREATE_CHARACTER_ARRAY_M(X,L,N,D)  X=cnfCrefa(L,N,D);\
+   X##_length = L
+#define F77_CREATE_LOGICAL_ARRAY(X,N) \
+        {int f77dims[1];f77dims[0]=N;X=cnfCrela(1,f77dims);}
+#define F77_CREATE_LOGICAL_ARRAY_M(X,N,D) X=cnfCrela(N,D)
+#define F77_CREATE_INTEGER_ARRAY(X,N)
+#define F77_CREATE_REAL_ARRAY(X,N)
+#define F77_CREATE_DOUBLE_ARRAY(X,N)
+#define F77_CREATE_BYTE_ARRAY(X,N)
+#define F77_CREATE_UBYTE_ARRAY(X,N)
+#define F77_CREATE_WORD_ARRAY(X,N)
+#define F77_CREATE_UWORD_ARRAY(X,N)
+#define F77_CREATE_POINTER_ARRAY(X,N)\
+        X=(F77_POINTER_TYPE *) malloc(N*sizeof(F77_POINTER_TYPE))
+
+/* Associate Fortran arrays with C arrays                             */
+/* These macros ensure that there is space somewhere for the Fortran  */
+/* array. They are complemetary to the CREATE_type_ARRAY macros       */
+#define F77_ASSOC_CHARACTER_ARRAY(F,C)
+#define F77_ASSOC_LOGICAL_ARRAY(F,C)
+#define F77_ASSOC_INTEGER_ARRAY(F,C) F=C
+#define F77_ASSOC_REAL_ARRAY(F,C) F=C
+#define F77_ASSOC_DOUBLE_ARRAY(F,C) F=C
+#define F77_ASSOC_BYTE_ARRAY(F,C) F=C
+#define F77_ASSOC_UBYTE_ARRAY(F,C) F=C
+#define F77_ASSOC_WORD_ARRAY(F,C) F=C
+#define F77_ASSOC_UWORD_ARRAY(F,C) F=C
+#define F77_ASSOC_POINTER_ARRAY(F,C)
+
+/* Free created dynamic arrays */
+/* Character and logical are already defined */
+/* For most types there is nothing to do */
+#define F77_FREE_INTEGER(X)
+#define F77_FREE_REAL(X)
+#define F77_FREE_DOUBLE(X)
+#define F77_FREE_BYTE(X)
+#define F77_FREE_UBYTE(X)
+#define F77_FREE_WORD(X)
+#define F77_FREE_UWORD(X)
+#define F77_FREE_POINTER(X) cnfFree((void *)X);
+#define F77_FREE_CHARACTER(X) cnfFreef( X )
+#define F77_FREE_LOGICAL(X) cnfFree( (char *)X )
+
+/*  ---  IMPORT and EXPORT of values  --- */
+/* Export C variables to Fortran variables */
+#define F77_EXPORT_CHARACTER(C,F,L) cnfExprt(C,F,L)
+#define F77_EXPORT_DOUBLE(C,F) F=C
+#define F77_EXPORT_INTEGER(C,F) F=C
+#define F77_EXPORT_LOGICAL(C,F) F=C?F77_TRUE:F77_FALSE
+#define F77_EXPORT_REAL(C,F) F=C
+#define F77_EXPORT_BYTE(C,F) F=C
+#define F77_EXPORT_WORD(C,F) F=C
+#define F77_EXPORT_UBYTE(C,F) F=C
+#define F77_EXPORT_UWORD(C,F) F=C
+#define F77_EXPORT_POINTER(C,F) F=cnfFptr(C)
+#define F77_EXPORT_LOCATOR(C,F) cnfExpch(C,F,DAT__SZLOC)
+
+/* Export C arrays to Fortran */
+/* Arrays are assumed to be 1-d so just the number of elements is given  */
+/* This may be OK for n-d arrays also */
+/* CHARACTER arrays may be represented in C as arrays of arrays of char or */
+/* as arrays of pointers to char (the _P variant) */
+#define F77_EXPORT_CHARACTER_ARRAY(C,LC,F,LF,N) \
+        {int f77dims[1];f77dims[0]=N;cnfExprta(C,LC,F,LF,1,f77dims);}
+#define F77_EXPORT_CHARACTER_ARRAY_P(C,F,LF,N) \
+        {int f77dims[1];f77dims[0]=N;cnfExprtap(C,F,LF,1,f77dims);}
+#define F77_EXPORT_DOUBLE_ARRAY(C,F,N) F=(F77_DOUBLE_TYPE *)C
+#define F77_EXPORT_INTEGER_ARRAY(C,F,N) F=(F77_INTEGER_TYPE *)C
+#define F77_EXPORT_LOGICAL_ARRAY(C,F,N) \
+        {int f77dims[1];f77dims[0]=N;cnfExpla(C,F,1,f77dims);}
+#define F77_EXPORT_REAL_ARRAY(C,F,N) F=(F77_REAL_TYPE *)C
+#define F77_EXPORT_BYTE_ARRAY(C,F,N) F=(F77_BYTE_TYPE *)C
+#define F77_EXPORT_WORD_ARRAY(C,F,N) F=(F77_WORD_TYPE *)C
+#define F77_EXPORT_UBYTE_ARRAY(C,F,N) F=(F77_UBYTE_TYPE *)C
+#define F77_EXPORT_UWORD_ARRAY(C,F,N) F=(F77_UWORD_TYPE * )C
+#define F77_EXPORT_POINTER_ARRAY(C,F,N) \
+     {int f77i;for (f77i=0;f77i<N;f77i++)F[f77i]=cnfFptr(C[f77i]);}
+#define F77_EXPORT_LOCATOR_ARRAY(C,F,N) \
+        {int f77i;for (f77i=0;f77i<N;f77i++)cnfExpch(C,F,DAT__SZLOC);}
+
+/* Import Fortran variables to C */
+#define F77_IMPORT_CHARACTER(F,L,C) cnfImprt(F,L,C)
+#define F77_IMPORT_DOUBLE(F,C) C=F
+#define F77_IMPORT_INTEGER(F,C) C=F
+#define F77_IMPORT_LOGICAL(F,C) C=F77_ISTRUE(F)
+#define F77_IMPORT_REAL(F,C) C=F
+#define F77_IMPORT_BYTE(F,C) C=F
+#define F77_IMPORT_WORD(F,C) C=F
+#define F77_IMPORT_UBYTE(F,C) C=F
+#define F77_IMPORT_UWORD(F,C) C=F
+#define F77_IMPORT_POINTER(F,C) C=cnfCptr(F)
+#define F77_IMPORT_LOCATOR(F,C) cnfImpch(F,DAT__SZLOC,C)
+
+/* Import Fortran arrays to C */
+/* Arrays are assumed to be 1-d so just the number of elements is given  */
+/* This may be OK for n-d arrays also */
+/* CHARACTER arrays may be represented in C as arrays of arrays of char or */
+/* as arrays of pointers to char (the _P variant) */
+#define F77_IMPORT_CHARACTER_ARRAY(F,LF,C,LC,N) \
+        {int f77dims[1];f77dims[0]=N;cnfImprta(F,LF,C,LC,1,f77dims);}
+#define F77_IMPORT_CHARACTER_ARRAY_P(F,LF,C,LC,N) \
+        {int f77dims[1];f77dims[0]=N;cnfImprtap(F,LF,C,LC,1,f77dims);}
+#define F77_IMPORT_DOUBLE_ARRAY(F,C,N)
+#define F77_IMPORT_INTEGER_ARRAY(F,C,N)
+#define F77_IMPORT_LOGICAL_ARRAY(F,C,N) \
+        {int f77dims[1];f77dims[0]=N;cnfImpla(F,C,1,f77dims);}
+#define F77_IMPORT_REAL_ARRAY(F,C,N)
+#define F77_IMPORT_BYTE_ARRAY(F,C,N)
+#define F77_IMPORT_WORD_ARRAY(F,C,N)
+#define F77_IMPORT_UBYTE_ARRAY(F,C,N)
+#define F77_IMPORT_UWORD_ARRAY(F,C,N)
+#define F77_IMPORT_POINTER_ARRAY(F,C,N) \
+        {int f77i;for (f77i=0;f77i<N;f77i++)C[f77i]=cnfCptr(F[f77i]);}
+#define F77_IMPORT_LOCATOR_ARRAY(F,C,N) \
+        {int f77i;for (f77i=0;f77i<N;f77i++)cnfImpch(F,DAT__SZLOC,C);}
+
+/*  ---  Call a FORTRAN routine  ---					    */
+
+#define F77_CALL(X)  F77_EXTERNAL_NAME(X)
+
+
+/*  ---  Pass arguments to a FORTRAN routine  ---			    */
+
+#define INTEGER_ARG(X)   X
+#define REAL_ARG(X)      X
+#define DOUBLE_ARG(X)    X
+#define LOGICAL_ARG(X)   X
+#define BYTE_ARG(X)      X
+#define WORD_ARG(X)      X
+#define UBYTE_ARG(X)     X
+#define UWORD_ARG(X)     X
+#define POINTER_ARG(X)   X
+#define CHARACTER_ARG(X) X
+#define TRAIL_ARG(X)     ,X##_length
+
+#define SUBROUTINE_ARG(X)  X
+#define INTEGER_FUNCTION_ARG(X)  X
+#define REAL_FUNCTION_ARG(X)  X
+#define DOUBLE_FUNCTION_ARG(X)  X
+#define LOGICAL_FUNCTION_ARG(X)  X
+#define CHARACTER_FUNCTION_ARG(X)  X
+#define BYTE_FUNCTION_ARG(X)  X
+#define WORD_FUNCTION_ARG(X)  X
+#define UBYTE_FUNCTION_ARG(X)  X
+#define UWORD_FUNCTION_ARG(X)  X
+#define POINTER_FUNCTION_ARG(X)  X
+
+#define INTEGER_ARRAY_ARG(X)   (F77_INTEGER_TYPE *)X
+#define REAL_ARRAY_ARG(X)      (F77_REAL_TYPE *)X
+#define DOUBLE_ARRAY_ARG(X)    (F77_DOUBLE_TYPE *)X
+#define LOGICAL_ARRAY_ARG(X)   (F77_LOGICAL_TYPE *)X
+#define BYTE_ARRAY_ARG(X)      (F77_BYTE_TYPE *)X
+#define WORD_ARRAY_ARG(X)      (F77_WORD_TYPE *)X
+#define UBYTE_ARRAY_ARG(X)     (F77_UBYTE_TYPE *)X
+#define UWORD_ARRAY_ARG(X)     (F77_UWORD_TYPE *)X
+#define POINTER_ARRAY_ARG(X)   (F77_POINTER_TYPE *)X
+#define CHARACTER_ARRAY_ARG(X) (F77_CHARACTER_ARRAY_ARG_TYPE *)X
+
+
+/* ------------------------ Non-ansi section ------------------------------ */
+
+/*  The difference between ANSI and non-ANSI compilers, as far as macro	    */
+/*  definition is concerned, is that non-ANSI compilers do not support the  */
+/*  token concatenation operator (##). To work around this, we use the fact */
+/*  that the null comment is preprocessed to produce no characters at all   */
+/*  by our non-ANSI compilers.						    */
+/*  This section does not deal with the fact that some non-ANSI compilers   */
+/*  cannot handle function prototypes. That is handled in the machine 	    */
+/*  specific sections.							    */
+
+#if !defined(__STDC__)
+
+/*  ---  External Name  ---						    */
+
+/*  Macro to define the name of a Fortran routine or common block. This	    */
+/*  ends in an underscore on many Unix systems.				    */
+
+#undef  F77_EXTERNAL_NAME
+#define F77_EXTERNAL_NAME(X) X/**/_
+
+
+/*  ---  Dummy Arguments  ---						    */
+
+/*  Macros to handle character dummy arguments.				    */
+
+#undef  TRAIL
+#define TRAIL(X) ,int X/**/_length
+
+
+/*  ---  Declare variables  ---						    */
+
+#undef  DECLARE_CHARACTER
+#define DECLARE_CHARACTER(X,L)         F77_CHARACTER_TYPE X[L]; \
+   const int X/**/_length = L
+#undef  DECLARE_CHARACTER_ARRAY
+#define DECLARE_CHARACTER_ARRAY(X,L,D) F77_CHARACTER_TYPE X[D][L]; \
+   const int X/**/_length = L
+#undef DECLARE_CHARACTER_DYN
+#define DECLARE_CHARACTER_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X/**/_length
+#undef DECLARE_CHARACTER_ARRAY_DYN
+#define DECLARE_CHARACTER_ARRAY_DYN(X)   F77_CHARACTER_TYPE *X;\
+   int X/**/_length
+#undef F77_CREATE_CHARACTER
+#define F77_CREATE_CHARACTER(X,L)  X=cnfCref(L);\
+   X/**/_length = L
+#undef F77_CREATE_CHARACTER_ARRAY
+#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
+        {int f77dims[1];f77dims[0]=N;X=cnfCrefa(L,1,f77dims);X/**/_length=L;}
+
+/*  ---  Pass arguments to a FORTRAN routine  ---			    */
+
+#undef  TRAIL_ARG
+#define TRAIL_ARG(X)     ,X/**/_length
+
+
+#endif  /* of non ANSI redefinitions					    */
+
+
+/* -----------------------------------------------------------------------  */
+
+/* The standard macros defined above are known to work with the following   */
+/* systems:								    */
+ 
+/*--------
+|   Sun   |
+---------*/
+
+/*  On SunOS, the ANSI definitions work with the acc and gcc compilers.     */
+/*  The cc compiler uses the non ANSI definitions. It also needs the K&R    */
+/*  definitions in the file kr.h.					    */
+/*  On Solaris, the standard definitions work with the cc compiler.	    */
+
+#if defined(sun)
+
+#if !defined(__STDC__)
+#if !defined(_F77_KR)
+#define _F77_KR
+#endif
+#endif
+
+#endif	/* Sun								    */
+
+/* -------------------- System dependent sections ------------------------- */
+
+/*------------
+|   VAX/VMS   |
+-------------*/
+
+/* Many macros need to be changed due to the way that VMS handles external  */
+/* names, passes character arguments and handles logical values.	    */
+
+
+#if defined(VMS)
+
+/*  ---  Data Types  ---						    */
+
+/*  Redefine the macro for the byte data type as signed is not valid syntax */
+/*  as the VMS compiler is not ANSI compliant.				    */
+
+#undef  F77_BYTE_TYPE
+#define F77_BYTE_TYPE      char
+
+
+/*  ---  External Names  ---						    */
+
+/*  Macro to define the name of a Fortran routine or common block.	    */
+/*  Fortran and C routines names are the same on VMS.			    */
+
+#undef  F77_EXTERNAL_NAME
+#define F77_EXTERNAL_NAME(X) X
+
+
+/*  ---  Dummy Arguments  ---						    */
+
+/*  Macros to handle character arguments.				    */
+/*  Character string arguments are pointers to character string descriptors */
+/*  and there are no trailing arguments.				    */
+
+#if( VMS != 0 )
+#include <descrip.h>
+#endif
+
+
+#undef  F77_CHARACTER_ARG_TYPE
+#define F77_CHARACTER_ARG_TYPE struct dsc$descriptor_s
+#undef  F77_CHARACTER_ARRAY_ARG_TYPE
+#define F77_CHARACTER_ARRAY_ARG_TYPE struct dsc$descriptor_a
+#undef  CHARACTER
+#define CHARACTER(X) F77_CHARACTER_ARG_TYPE *CNF_CONST X/**/_arg
+#undef  TRAIL
+#define TRAIL(X)
+#undef  CHARACTER_ARRAY
+#define CHARACTER_ARRAY(X)  F77_CHARACTER_ARRAY_ARG_TYPE *CNF_CONST X/**/_arg
+#undef  GENPTR_CHARACTER
+#define GENPTR_CHARACTER(X) \
+   F77_CHARACTER_TYPE *X = X/**/_arg->dsc$a_pointer; \
+   int X/**/_length = X/**/_arg->dsc$w_length;
+#undef  GENPTR_CHARACTER_ARRAY
+#define GENPTR_CHARACTER_ARRAY(X)   GENPTR_CHARACTER(X)
+
+
+/*  ---  Logical Values  ---						    */
+
+#undef  F77_TRUE
+#define F77_TRUE -1
+#undef  F77_ISTRUE
+#define F77_ISTRUE(X) ( (X)&1 )
+#undef  F77_ISFALSE
+#define F77_ISFALSE(X) ( ! ( (X)&1 ) )
+
+
+/*  ---  Common Blocks  ---						    */
+
+#undef  F77_BLANK_COMMON
+#define F77_BLANK_COMMON  $BLANK
+
+
+/*  ---  Declare Variables  ---						    */
+
+#undef  DECLARE_CHARACTER
+#define DECLARE_CHARACTER(X,L) \
+   F77_CHARACTER_TYPE X[L];    const int X/**/_length = L; \
+   F77_CHARACTER_ARG_TYPE X/**/_descr = \
+      { L, DSC$K_DTYPE_T, DSC$K_CLASS_S, X }; \
+   F77_CHARACTER_ARG_TYPE *X/**/_arg = &X/**/_descr
+#undef  DECLARE_CHARACTER_ARRAY
+#define DECLARE_CHARACTER_ARRAY(X,L,D) \
+   F77_CHARACTER_TYPE X[D][L]; const int X/**/_length = L; \
+   F77_CHARACTER_ARRAY_ARG_TYPE X/**/_descr = \
+      { L, DSC$K_DTYPE_T, DSC$K_CLASS_S, X }; \
+   F77_CHARACTER_ARRAY_ARG_TYPE *X/**/_arg = &X/**/_descr
+
+
+/*  ---  The dynamic allocation of character arguments  ---                 */
+#undef DECLARE_CHARACTER_DYN
+#define DECLARE_CHARACTER_DYN(X) int X/**/_length;\
+                                  F77_CHARACTER_ARG_TYPE *X/**/_arg;\
+                                  F77_CHARACTER_TYPE *X
+#undef DECLARE_CHARACTER_ARRAY_DYN
+#define DECLARE_CHARACTER_ARRAY_DYN(X) int X/**/_length;\
+                                  F77_CHARACTER_ARRAY_ARG_TYPE *X/**/_arg;\
+                                  F77_CHARACTER_TYPE *X
+#undef F77_CREATE_CHARACTER
+#define F77_CREATE_CHARACTER(X,L) X/**/_arg = cnfCref(L);\
+                                  X = X/**/_arg->dsc$a_pointer; \
+                                  X/**/_length = X/**/_arg->dsc$w_length
+#undef F77_CREATE_CHARACTER_ARRAY
+#define F77_CREATE_CHARACTER_ARRAY(X,L,N) \
+  {int f77dims[1];f77dims[0]=N;X/**/_arg=cnfCrefa(L,1,f77dims);X/**/_length=L;}
+#define F77_CREATE_CHARACTER_ARRAY_M(X,L,N,D) X/**/_arg = cnfCrefa(L,N,D);\
+                                  X = X/**/_arg->dsc$a_pointer; \
+                                  X/**/_length = X/**/_arg->dsc$w_length
+#undef F77_FREE_CHARACTER
+#define F77_FREE_CHARACTER(X)     cnfFreef( X/**/_arg )
+
+/*  ---  Pass arguments to a FORTRAN routine  ---			    */
+
+#undef  CHARACTER_ARG
+#define CHARACTER_ARG(X) X/**/_arg
+#undef  CHARACTER_ARRAY_ARG
+#define CHARACTER_ARRAY_ARG(X) X/**/_arg
+#undef  TRAIL_ARG
+#define TRAIL_ARG(X)
+
+#endif  /* VMS								    */
+
+/* -----------------------------------------------------------------------  */
+
+/*--------------------------
+|   DECstation Ultrix (cc)  |
+|   DECstation Ultrix (c89) |
+|   DECstation OSF/1        |
+|   Alpha OSF/1             |
+ --------------------------*/
+
+/* Do this complicated set of definitions as a single #if cannot be	    */
+/* continued across multiple lines.					    */
+
+#if defined(mips) && defined(ultrix)
+#define _dec_unix 1
+#endif
+#if defined(__mips) && defined(__ultrix)
+#define _dec_unix 1
+#endif
+#if defined(__mips__) && defined(__osf__)
+#define _dec_unix 1
+#endif
+#if defined(__alpha) && defined(__osf__)
+#define _dec_unix 1
+#endif
+
+#if _dec_unix
+
+/*  The macros for Ultrix are the same as the standard ones except for ones */
+/*  dealing with logical values. The ANSI definitions work with the c89	    */
+/*  compiler, and the non ANSI definitions work with the cc compiler.	    */
+/*  The same applies to DEC OSF/1, except that its cc compiler is ANSI	    */
+/*  compliant.								    */
+
+
+/*  ---  Logical Values  ---						    */
+
+/*  Redefine macros that evaluate to a C logical value, given a FORTRAN	    */
+/*  logical value. These definitions are only valid when used with the DEC  */
+/*  FORTRAN for RISC compiler. If you are using the earlier FORTRAN for	    */
+/*  RISC compiler from MIPS, then these macros should be deleted.	    */
+
+#undef  F77_TRUE
+#define F77_TRUE -1
+#undef  F77_ISTRUE
+#define F77_ISTRUE(X) ( (X)&1 )
+#undef  F77_ISFALSE
+#define F77_ISFALSE(X) ( ! ( (X)&1 ) )
+
+
+#endif  /* DEC Unix							    */
+
+/*
+*+
+*  Name:
+*     cnf.h
+
+*  Purpose:
+*     Function prototypes for cnf routines
+
+*  Language:
+*     ANSI C
+
+*  Type of Module:
+*     C include file
+
+*  Description:
+*     These are the prototype definitions for the functions in the CNF
+*     library. They are used used in mixing C and FORTRAN programs.
+
+*  Copyright:
+*     Copyright (C) 1991 Science & Engineering Research Council
+
+*  Authors:
+*     PMA: Peter Allan (Starlink, RAL)
+*     AJC: Alan Chipperfield (Starlink, RAL)
+*     {enter_new_authors_here}
+
+*  History:
+*     23-MAY-1991 (PMA):
+*        Original version.
+*     12-JAN-1996 (AJC):
+*        Add cnf_cref and cnf_freef
+*     14-JUN-1996 (AJC):
+*        Add cnf_crefa, imprta, exprta
+*                crela, impla, expla
+*     18-JUL-1996 (AJC):
+*        Add impch and expch
+*     17-MAR-1998 (AJC):
+*        Add imprtap and exprtap
+*     {enter_changes_here}
+
+*  Bugs:
+*     {note_any_bugs_here}
+
+*-
+------------------------------------------------------------------------------
+*/
+void *cnfCalloc( size_t, size_t );
+void cnfCopyf( const char *source_f, int source_len, char *dest_f,
+                int dest_len );
+void *cnfCptr( F77_POINTER_TYPE );
+char *cnfCreat( int length );
+F77_CHARACTER_ARG_TYPE *cnfCref( int length );
+F77_CHARACTER_ARG_TYPE *cnfCrefa( int length, int ndims, const int *dims );
+char *cnfCreib( const char *source_f, int source_len );
+char *cnfCreim( const char *source_f, int source_len );
+F77_LOGICAL_TYPE *cnfCrela( int ndims, const int *dims );
+void cnfExpch( const char *source_c, char *dest_f, int nchars );
+void cnfExpla( const int *source_c, F77_LOGICAL_TYPE *dest_f, int ndims,
+                const int *dims );
+void cnfExpn( const char *source_c, int max, char *dest_f, int dest_len );
+void cnfExprt( const char *source_c, char *dest_f, int dest_len );
+void cnfExprta( const char *source_c, int source_len, char *dest_f,
+                 int dest_len, int ndims, const int *dims );
+void cnfExprtap( char *const *source_c, char *dest_f, int dest_len, 
+                  int ndims, const int *dims );
+F77_POINTER_TYPE cnfFptr( void *cpointer );
+void cnfFree( void * );
+void cnfFreef( F77_CHARACTER_ARG_TYPE *temp );
+void cnfImpb( const char *source_f, int source_len, char *dest_c );
+void cnfImpbn( const char *source_f, int source_len, int max, char *dest_c );
+void cnfImpch( const char *source_f, int nchars, char *dest_c );
+void cnfImpla( const F77_LOGICAL_TYPE *source_f, int *dest_c,
+                int ndims, const int *dims );
+void cnfImpn( const char *source_f, int source_len, int max, char *dest_c );
+void cnfImprt( const char *source_f, int source_len, char *dest_c );
+void cnfImprta( const char *source_f, int source_len, char *dest_c,
+                 int dest_len, int ndims, const int *dims );
+void cnfImprtap( const char *source_f, int source_len, char *const *dest_c,
+                  int dest_len, int ndims, const int *dims );
+int cnfLenc( const char *source_c );
+int cnfLenf( const char *source_f, int source_len );
+void *cnfMalloc( size_t );
+int cnfRegp( void * );
+void cnfUregp( void * );
+#endif
+
+#ifndef CNF_OLD_DEFINED
+#define CNF_OLD_DEFINED
+/* Define old names to be new names */
+#define cnf_calloc cnfCalloc
+#define cnf_copyf cnfCopyf
+#define cnf_cptr cnfCptr
+#define cnf_creat cnfCreat
+#define cnf_cref cnfCref
+#define cnf_crefa cnfCrefa
+#define cnf_creib cnfCreib
+#define cnf_creim cnfCreim
+#define cnf_crela cnfCrela
+#define cnf_expch cnfExpch
+#define cnf_expla cnfExpla
+#define cnf_expn cnfExpn
+#define cnf_exprt cnfExprt
+#define cnf_exprta cnfExprta
+#define cnf_exprtap cnfExprtap
+#define cnf_fptr cnfFptr
+#define cnf_free cnfFree
+#define cnf_freef cnfFreef
+#define cnf_impb cnfImpb
+#define cnf_impbn cnfImpbn
+#define cnf_impch cnfImpch
+#define cnf_impla cnfImpla
+#define cnf_impn cnfImpn
+#define cnf_imprt cnfImprt
+#define cnf_imprta cnfImprta
+#define cnf_imprtap cnfImprtap
+#define cnf_lenc cnfLenc
+#define cnf_lenf cnfLenf
+#define cnf_malloc cnfMalloc
+#define cnf_regp cnfRegp
+#define cnf_uregp cnfUregp
+
+#endif
diff --git a/fitxy.f b/fitxy.f
new file mode 100644
index 0000000000000000000000000000000000000000..a22efe61d452c9974e7091528f970bdc1277df9e
--- /dev/null
+++ b/fitxy.f
@@ -0,0 +1,328 @@
+      SUBROUTINE sla_FITXY (ITYPE,NP,XYE,XYM,COEFFS,J)
+*+
+*     - - - - - -
+*      F I T X Y
+*     - - - - - -
+*
+*  Fit a linear model to relate two sets of [X,Y] coordinates.
+*
+*  Given:
+*     ITYPE    i        type of model: 4 or 6 (note 1)
+*     NP       i        number of samples (note 2)
+*     XYE     d(2,np)   expected [X,Y] for each sample
+*     XYM     d(2,np)   measured [X,Y] for each sample
+*
+*  Returned:
+*     COEFFS  d(6)      coefficients of model (note 3)
+*     J        i        status:  0 = OK
+*                               -1 = illegal ITYPE
+*                               -2 = insufficient data
+*                               -3 = no solution
+*
+*  Notes:
+*
+*  1)  ITYPE, which must be either 4 or 6, selects the type of model
+*      fitted.  Both allowed ITYPE values produce a model COEFFS which
+*      consists of six coefficients, namely the zero points and, for
+*      each of XE and YE, the coefficient of XM and YM.  For ITYPE=6,
+*      all six coefficients are independent, modelling squash and shear
+*      as well as origin, scale, and orientation.  However, ITYPE=4
+*      selects the "solid body rotation" option;  the model COEFFS
+*      still consists of the same six coefficients, but now two of
+*      them are used twice (appropriately signed).  Origin, scale
+*      and orientation are still modelled, but not squash or shear -
+*      the units of X and Y have to be the same.
+*
+*  2)  For NC=4, NP must be at least 2.  For NC=6, NP must be at
+*      least 3.
+*
+*  3)  The model is returned in the array COEFFS.  Naming the
+*      elements of COEFFS as follows:
+*
+*                  COEFFS(1) = A
+*                  COEFFS(2) = B
+*                  COEFFS(3) = C
+*                  COEFFS(4) = D
+*                  COEFFS(5) = E
+*                  COEFFS(6) = F
+*
+*      the model is:
+*
+*            XE = A + B*XM + C*YM
+*            YE = D + E*XM + F*YM
+*
+*      For the "solid body rotation" option (ITYPE=4), the
+*      magnitudes of B and F, and of C and E, are equal.  The
+*      signs of these coefficients depend on whether there is a
+*      sign reversal between XE,YE and XM,YM;  fits are performed
+*      with and without a sign reversal and the best one chosen.
+*
+*  4)  Error status values J=-1 and -2 leave COEFFS unchanged;
+*      if J=-3 COEFFS may have been changed.
+*
+*  See also sla_PXY, sla_INVF, sla_XY2XY, sla_DCMPF
+*
+*  Called:  sla_DMAT, sla_DMXV
+*
+*  Last revision:   8 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER ITYPE,NP
+      DOUBLE PRECISION XYE(2,NP),XYM(2,NP),COEFFS(6)
+      INTEGER J
+
+      INTEGER I,JSTAT,IW(4),NSOL
+      DOUBLE PRECISION A,B,C,D,AOLD,BOLD,COLD,DOLD,SOLD,
+     :                 P,SXE,SXEXM,SXEYM,SYE,SYEYM,SYEXM,SXM,
+     :                 SYM,SXMXM,SXMYM,SYMYM,XE,YE,
+     :                 XM,YM,V(4),DM3(3,3),DM4(4,4),DET,
+     :                 SGN,SXXYY,SXYYX,SX2Y2,SDR2,XR,YR
+
+
+
+*  Preset the status
+      J=0
+
+*  Variable initializations to avoid compiler warnings
+      A = 0D0
+      B = 0D0
+      C = 0D0
+      D = 0D0
+      AOLD = 0D0
+      BOLD = 0D0
+      COLD = 0D0
+      DOLD = 0D0
+      SOLD = 0D0
+
+*  Float the number of samples
+      P=DBLE(NP)
+
+*  Check ITYPE
+      IF (ITYPE.EQ.6) THEN
+
+*
+*     Six-coefficient linear model
+*     ----------------------------
+
+*     Check enough samples
+         IF (NP.GE.3) THEN
+
+*     Form summations
+         SXE=0D0
+         SXEXM=0D0
+         SXEYM=0D0
+         SYE=0D0
+         SYEYM=0D0
+         SYEXM=0D0
+         SXM=0D0
+         SYM=0D0
+         SXMXM=0D0
+         SXMYM=0D0
+         SYMYM=0D0
+         DO I=1,NP
+            XE=XYE(1,I)
+            YE=XYE(2,I)
+            XM=XYM(1,I)
+            YM=XYM(2,I)
+            SXE=SXE+XE
+            SXEXM=SXEXM+XE*XM
+            SXEYM=SXEYM+XE*YM
+            SYE=SYE+YE
+            SYEYM=SYEYM+YE*YM
+            SYEXM=SYEXM+YE*XM
+            SXM=SXM+XM
+            SYM=SYM+YM
+            SXMXM=SXMXM+XM*XM
+            SXMYM=SXMYM+XM*YM
+            SYMYM=SYMYM+YM*YM
+         END DO
+
+*        Solve for A,B,C in  XE = A + B*XM + C*YM
+            V(1)=SXE
+            V(2)=SXEXM
+            V(3)=SXEYM
+            DM3(1,1)=P
+            DM3(1,2)=SXM
+            DM3(1,3)=SYM
+            DM3(2,1)=SXM
+            DM3(2,2)=SXMXM
+            DM3(2,3)=SXMYM
+            DM3(3,1)=SYM
+            DM3(3,2)=SXMYM
+            DM3(3,3)=SYMYM
+            CALL sla_DMAT(3,DM3,V,DET,JSTAT,IW)
+            IF (JSTAT.EQ.0) THEN
+               DO I=1,3
+                  COEFFS(I)=V(I)
+               END DO
+
+*           Solve for D,E,F in  YE = D + E*XM + F*YM
+               V(1)=SYE
+               V(2)=SYEXM
+               V(3)=SYEYM
+               CALL sla_DMXV(DM3,V,COEFFS(4))
+
+            ELSE
+
+*           No 6-coefficient solution possible
+               J=-3
+
+            END IF
+
+         ELSE
+
+*        Insufficient data for 6-coefficient fit
+            J=-2
+
+         END IF
+
+      ELSE IF (ITYPE.EQ.4) THEN
+
+*
+*     Four-coefficient solid body rotation model
+*     ------------------------------------------
+
+*     Check enough samples
+         IF (NP.GE.2) THEN
+
+*        Try two solutions, first without then with flip in X
+            DO NSOL=1,2
+               IF (NSOL.EQ.1) THEN
+                  SGN=1D0
+               ELSE
+                  SGN=-1D0
+               END IF
+
+*           Form summations
+               SXE=0D0
+               SXXYY=0D0
+               SXYYX=0D0
+               SYE=0D0
+               SXM=0D0
+               SYM=0D0
+               SX2Y2=0D0
+               DO I=1,NP
+                  XE=XYE(1,I)*SGN
+                  YE=XYE(2,I)
+                  XM=XYM(1,I)
+                  YM=XYM(2,I)
+                  SXE=SXE+XE
+                  SXXYY=SXXYY+XE*XM+YE*YM
+                  SXYYX=SXYYX+XE*YM-YE*XM
+                  SYE=SYE+YE
+                  SXM=SXM+XM
+                  SYM=SYM+YM
+                  SX2Y2=SX2Y2+XM*XM+YM*YM
+               END DO
+
+*
+*           Solve for A,B,C,D in:  +/- XE = A + B*XM - C*YM
+*                                    + YE = D + C*XM + B*YM
+               V(1)=SXE
+               V(2)=SXXYY
+               V(3)=SXYYX
+               V(4)=SYE
+               DM4(1,1)=P
+               DM4(1,2)=SXM
+               DM4(1,3)=-SYM
+               DM4(1,4)=0D0
+               DM4(2,1)=SXM
+               DM4(2,2)=SX2Y2
+               DM4(2,3)=0D0
+               DM4(2,4)=SYM
+               DM4(3,1)=SYM
+               DM4(3,2)=0D0
+               DM4(3,3)=-SX2Y2
+               DM4(3,4)=-SXM
+               DM4(4,1)=0D0
+               DM4(4,2)=SYM
+               DM4(4,3)=SXM
+               DM4(4,4)=P
+               CALL sla_DMAT(4,DM4,V,DET,JSTAT,IW)
+               IF (JSTAT.EQ.0) THEN
+                  A=V(1)
+                  B=V(2)
+                  C=V(3)
+                  D=V(4)
+
+*              Determine sum of radial errors squared
+                  SDR2=0D0
+                  DO I=1,NP
+                     XM=XYM(1,I)
+                     YM=XYM(2,I)
+                     XR=A+B*XM-C*YM-XYE(1,I)*SGN
+                     YR=D+C*XM+B*YM-XYE(2,I)
+                     SDR2=SDR2+XR*XR+YR*YR
+                  END DO
+
+               ELSE
+
+*              Singular: set flag
+                  SDR2=-1D0
+
+               END IF
+
+*           If first pass and non-singular, save variables
+               IF (NSOL.EQ.1.AND.JSTAT.EQ.0) THEN
+                  AOLD=A
+                  BOLD=B
+                  COLD=C
+                  DOLD=D
+                  SOLD=SDR2
+               END IF
+
+            END DO
+
+*        Pick the best of the two solutions
+            IF (SOLD.GE.0D0.AND.(SOLD.LE.SDR2.OR.NP.EQ.2)) THEN
+               COEFFS(1)=AOLD
+               COEFFS(2)=BOLD
+               COEFFS(3)=-COLD
+               COEFFS(4)=DOLD
+               COEFFS(5)=COLD
+               COEFFS(6)=BOLD
+            ELSE IF (JSTAT.EQ.0) THEN
+               COEFFS(1)=-A
+               COEFFS(2)=-B
+               COEFFS(3)=C
+               COEFFS(4)=D
+               COEFFS(5)=C
+               COEFFS(6)=B
+            ELSE
+
+*           No 4-coefficient fit possible
+               J=-3
+            END IF
+         ELSE
+
+*        Insufficient data for 4-coefficient fit
+            J=-2
+         END IF
+      ELSE
+
+*     Illegal ITYPE - not 4 or 6
+         J=-1
+      END IF
+
+      END
diff --git a/fk425.f b/fk425.f
new file mode 100644
index 0000000000000000000000000000000000000000..74c1ed4f1c3101e0274dd297c1e9524bd16d29d6
--- /dev/null
+++ b/fk425.f
@@ -0,0 +1,266 @@
+      SUBROUTINE sla_FK425 (R1950,D1950,DR1950,DD1950,P1950,V1950,
+     :                      R2000,D2000,DR2000,DD2000,P2000,V2000)
+*+
+*     - - - - - -
+*      F K 4 2 5
+*     - - - - - -
+*
+*  Convert B1950.0 FK4 star data to J2000.0 FK5 (double precision)
+*
+*  This routine converts stars from the old, Bessel-Newcomb, FK4
+*  system to the new, IAU 1976, FK5, Fricke system.  The precepts
+*  of Smith et al (Ref 1) are followed, using the implementation
+*  by Yallop et al (Ref 2) of a matrix method due to Standish.
+*  Kinoshita's development of Andoyer's post-Newcomb precession is
+*  used.  The numerical constants from Seidelmann et al (Ref 3) are
+*  used canonically.
+*
+*  Given:  (all B1950.0,FK4)
+*     R1950,D1950     dp    B1950.0 RA,Dec (rad)
+*     DR1950,DD1950   dp    B1950.0 proper motions (rad/trop.yr)
+*     P1950           dp    parallax (arcsec)
+*     V1950           dp    radial velocity (km/s, +ve = moving away)
+*
+*  Returned:  (all J2000.0,FK5)
+*     R2000,D2000     dp    J2000.0 RA,Dec (rad)
+*     DR2000,DD2000   dp    J2000.0 proper motions (rad/Jul.yr)
+*     P2000           dp    parallax (arcsec)
+*     V2000           dp    radial velocity (km/s, +ve = moving away)
+*
+*  Notes:
+*
+*  1)  The proper motions in RA are dRA/dt rather than
+*      cos(Dec)*dRA/dt, and are per year rather than per century.
+*
+*  2)  Conversion from Besselian epoch 1950.0 to Julian epoch
+*      2000.0 only is provided for.  Conversions involving other
+*      epochs will require use of the appropriate precession,
+*      proper motion, and E-terms routines before and/or
+*      after FK425 is called.
+*
+*  3)  In the FK4 catalogue the proper motions of stars within
+*      10 degrees of the poles do not embody the differential
+*      E-term effect and should, strictly speaking, be handled
+*      in a different manner from stars outside these regions.
+*      However, given the general lack of homogeneity of the star
+*      data available for routine astrometry, the difficulties of
+*      handling positions that may have been determined from
+*      astrometric fields spanning the polar and non-polar regions,
+*      the likelihood that the differential E-terms effect was not
+*      taken into account when allowing for proper motion in past
+*      astrometry, and the undesirability of a discontinuity in
+*      the algorithm, the decision has been made in this routine to
+*      include the effect of differential E-terms on the proper
+*      motions for all stars, whether polar or not.  At epoch 2000,
+*      and measuring on the sky rather than in terms of dRA, the
+*      errors resulting from this simplification are less than
+*      1 milliarcsecond in position and 1 milliarcsecond per
+*      century in proper motion.
+*
+*  References:
+*
+*     1  Smith, C.A. et al, 1989.  "The transformation of astrometric
+*        catalog systems to the equinox J2000.0".  Astron.J. 97, 265.
+*
+*     2  Yallop, B.D. et al, 1989.  "Transformation of mean star places
+*        from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space".
+*        Astron.J. 97, 274.
+*
+*     3  Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement to
+*        the Astronomical Almanac", ISBN 0-935702-68-7.
+*
+*  P.T.Wallace   Starlink   19 December 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R1950,D1950,DR1950,DD1950,P1950,V1950,
+     :                 R2000,D2000,DR2000,DD2000,P2000,V2000
+
+
+*  Miscellaneous
+      DOUBLE PRECISION R,D,UR,UD,PX,RV,SR,CR,SD,CD,W,WD
+      DOUBLE PRECISION X,Y,Z,XD,YD,ZD
+      DOUBLE PRECISION RXYSQ,RXYZSQ,RXY,RXYZ,SPXY,SPXYZ
+      INTEGER I,J
+
+*  Star position and velocity vectors
+      DOUBLE PRECISION R0(3),RD0(3)
+
+*  Combined position and velocity vectors
+      DOUBLE PRECISION V1(6),V2(6)
+
+*  2Pi
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925287D0)
+
+*  Radians per year to arcsec per century
+      DOUBLE PRECISION PMF
+      PARAMETER (PMF=100D0*60D0*60D0*360D0/D2PI)
+
+*  Small number to avoid arithmetic problems
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-30)
+
+
+*
+*  CANONICAL CONSTANTS  (see references)
+*
+
+*  Km per sec to AU per tropical century
+*  = 86400 * 36524.2198782 / 149597870
+      DOUBLE PRECISION VF
+      PARAMETER (VF=21.095D0)
+
+*  Constant vector and matrix (by columns)
+      DOUBLE PRECISION A(3),AD(3),EM(6,6)
+      DATA A,AD/ -1.62557D-6,  -0.31919D-6, -0.13843D-6,
+     :           +1.245D-3,    -1.580D-3,   -0.659D-3/
+
+      DATA (EM(I,1),I=1,6) / +0.9999256782D0,
+     :                       +0.0111820610D0,
+     :                       +0.0048579479D0,
+     :                       -0.000551D0,
+     :                       +0.238514D0,
+     :                       -0.435623D0 /
+
+      DATA (EM(I,2),I=1,6) / -0.0111820611D0,
+     :                       +0.9999374784D0,
+     :                       -0.0000271474D0,
+     :                       -0.238565D0,
+     :                       -0.002667D0,
+     :                       +0.012254D0 /
+
+      DATA (EM(I,3),I=1,6) / -0.0048579477D0,
+     :                       -0.0000271765D0,
+     :                       +0.9999881997D0,
+     :                       +0.435739D0,
+     :                       -0.008541D0,
+     :                       +0.002117D0 /
+
+      DATA (EM(I,4),I=1,6) / +0.00000242395018D0,
+     :                       +0.00000002710663D0,
+     :                       +0.00000001177656D0,
+     :                       +0.99994704D0,
+     :                       +0.01118251D0,
+     :                       +0.00485767D0 /
+
+      DATA (EM(I,5),I=1,6) / -0.00000002710663D0,
+     :                       +0.00000242397878D0,
+     :                       -0.00000000006582D0,
+     :                       -0.01118251D0,
+     :                       +0.99995883D0,
+     :                       -0.00002714D0 /
+
+      DATA (EM(I,6),I=1,6) / -0.00000001177656D0,
+     :                       -0.00000000006587D0,
+     :                       +0.00000242410173D0,
+     :                       -0.00485767D0,
+     :                       -0.00002718D0,
+     :                       +1.00000956D0 /
+
+
+
+*  Pick up B1950 data (units radians and arcsec/TC)
+      R=R1950
+      D=D1950
+      UR=DR1950*PMF
+      UD=DD1950*PMF
+      PX=P1950
+      RV=V1950
+
+*  Spherical to Cartesian
+      SR=SIN(R)
+      CR=COS(R)
+      SD=SIN(D)
+      CD=COS(D)
+
+      R0(1)=CR*CD
+      R0(2)=SR*CD
+      R0(3)=   SD
+
+      W=VF*RV*PX
+
+      RD0(1)=-SR*CD*UR-CR*SD*UD+W*R0(1)
+      RD0(2)= CR*CD*UR-SR*SD*UD+W*R0(2)
+      RD0(3)=             CD*UD+W*R0(3)
+
+*  Allow for e-terms and express as position+velocity 6-vector
+      W=R0(1)*A(1)+R0(2)*A(2)+R0(3)*A(3)
+      WD=R0(1)*AD(1)+R0(2)*AD(2)+R0(3)*AD(3)
+      DO I=1,3
+         V1(I)=R0(I)-A(I)+W*R0(I)
+         V1(I+3)=RD0(I)-AD(I)+WD*R0(I)
+      END DO
+
+*  Convert position+velocity vector to Fricke system
+      DO I=1,6
+         W=0D0
+         DO J=1,6
+            W=W+EM(I,J)*V1(J)
+         END DO
+         V2(I)=W
+      END DO
+
+*  Revert to spherical coordinates
+      X=V2(1)
+      Y=V2(2)
+      Z=V2(3)
+      XD=V2(4)
+      YD=V2(5)
+      ZD=V2(6)
+
+      RXYSQ=X*X+Y*Y
+      RXYZSQ=RXYSQ+Z*Z
+      RXY=SQRT(RXYSQ)
+      RXYZ=SQRT(RXYZSQ)
+
+      SPXY=X*XD+Y*YD
+      SPXYZ=SPXY+Z*ZD
+
+      IF (X.EQ.0D0.AND.Y.EQ.0D0) THEN
+         R=0D0
+      ELSE
+         R=ATAN2(Y,X)
+         IF (R.LT.0.0D0) R=R+D2PI
+      END IF
+      D=ATAN2(Z,RXY)
+
+      IF (RXY.GT.TINY) THEN
+         UR=(X*YD-Y*XD)/RXYSQ
+         UD=(ZD*RXYSQ-Z*SPXY)/(RXYZSQ*RXY)
+      END IF
+
+      IF (PX.GT.TINY) THEN
+         RV=SPXYZ/(PX*RXYZ*VF)
+         PX=PX/RXYZ
+      END IF
+
+*  Return results
+      R2000=R
+      D2000=D
+      DR2000=UR/PMF
+      DD2000=UD/PMF
+      V2000=RV
+      P2000=PX
+
+      END
diff --git a/fk45z.f b/fk45z.f
new file mode 100644
index 0000000000000000000000000000000000000000..60e76092daf5c9e4be24ffb0e83b8da76556f603
--- /dev/null
+++ b/fk45z.f
@@ -0,0 +1,182 @@
+      SUBROUTINE sla_FK45Z (R1950,D1950,BEPOCH,R2000,D2000)
+*+
+*     - - - - - -
+*      F K 4 5 Z
+*     - - - - - -
+*
+*  Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
+*  proper motion in the FK5 frame (double precision)
+*
+*  This routine converts stars from the old, Bessel-Newcomb, FK4
+*  system to the new, IAU 1976, FK5, Fricke system, in such a
+*  way that the FK5 proper motion is zero.  Because such a star
+*  has, in general, a non-zero proper motion in the FK4 system,
+*  the routine requires the epoch at which the position in the
+*  FK4 system was determined.
+*
+*  The method is from Appendix 2 of Ref 1, but using the constants
+*  of Ref 4.
+*
+*  Given:
+*     R1950,D1950     dp    B1950.0 FK4 RA,Dec at epoch (rad)
+*     BEPOCH          dp    Besselian epoch (e.g. 1979.3D0)
+*
+*  Returned:
+*     R2000,D2000     dp    J2000.0 FK5 RA,Dec (rad)
+*
+*  Notes:
+*
+*  1)  The epoch BEPOCH is strictly speaking Besselian, but
+*      if a Julian epoch is supplied the result will be
+*      affected only to a negligible extent.
+*
+*  2)  Conversion from Besselian epoch 1950.0 to Julian epoch
+*      2000.0 only is provided for.  Conversions involving other
+*      epochs will require use of the appropriate precession,
+*      proper motion, and E-terms routines before and/or
+*      after FK45Z is called.
+*
+*  3)  In the FK4 catalogue the proper motions of stars within
+*      10 degrees of the poles do not embody the differential
+*      E-term effect and should, strictly speaking, be handled
+*      in a different manner from stars outside these regions.
+*      However, given the general lack of homogeneity of the star
+*      data available for routine astrometry, the difficulties of
+*      handling positions that may have been determined from
+*      astrometric fields spanning the polar and non-polar regions,
+*      the likelihood that the differential E-terms effect was not
+*      taken into account when allowing for proper motion in past
+*      astrometry, and the undesirability of a discontinuity in
+*      the algorithm, the decision has been made in this routine to
+*      include the effect of differential E-terms on the proper
+*      motions for all stars, whether polar or not.  At epoch 2000,
+*      and measuring on the sky rather than in terms of dRA, the
+*      errors resulting from this simplification are less than
+*      1 milliarcsecond in position and 1 milliarcsecond per
+*      century in proper motion.
+*
+*  References:
+*
+*     1  Aoki,S., et al, 1983.  Astron.Astrophys., 128, 263.
+*
+*     2  Smith, C.A. et al, 1989.  "The transformation of astrometric
+*        catalog systems to the equinox J2000.0".  Astron.J. 97, 265.
+*
+*     3  Yallop, B.D. et al, 1989.  "Transformation of mean star places
+*        from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space".
+*        Astron.J. 97, 274.
+*
+*     4  Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement to
+*        the Astronomical Almanac", ISBN 0-935702-68-7.
+*
+*  Called:  sla_DCS2C, sla_EPJ, sla_EPB2D, sla_DCC2S, sla_DRANRM
+*
+*  P.T.Wallace   Starlink   21 September 1998
+*
+*  Copyright (C) 1998 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R1950,D1950,BEPOCH,R2000,D2000
+
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925287D0)
+
+      DOUBLE PRECISION W
+      INTEGER I,J
+
+*  Position and position+velocity vectors
+      DOUBLE PRECISION R0(3),A1(3),V1(3),V2(6)
+
+*  Radians per year to arcsec per century
+      DOUBLE PRECISION PMF
+      PARAMETER (PMF=100D0*60D0*60D0*360D0/D2PI)
+
+*  Functions
+      DOUBLE PRECISION sla_EPJ,sla_EPB2D,sla_DRANRM
+
+*
+*  CANONICAL CONSTANTS  (see references)
+*
+
+*  Vectors A and Adot, and matrix M (only half of which is needed here)
+      DOUBLE PRECISION A(3),AD(3),EM(6,3)
+      DATA A,AD/ -1.62557D-6,  -0.31919D-6, -0.13843D-6,
+     :           +1.245D-3,    -1.580D-3,   -0.659D-3/
+
+      DATA (EM(I,1),I=1,6) / +0.9999256782D0,
+     :                       +0.0111820610D0,
+     :                       +0.0048579479D0,
+     :                       -0.000551D0,
+     :                       +0.238514D0,
+     :                       -0.435623D0 /
+
+      DATA (EM(I,2),I=1,6) / -0.0111820611D0,
+     :                       +0.9999374784D0,
+     :                       -0.0000271474D0,
+     :                       -0.238565D0,
+     :                       -0.002667D0,
+     :                       +0.012254D0 /
+
+      DATA (EM(I,3),I=1,6) / -0.0048579477D0,
+     :                       -0.0000271765D0,
+     :                       +0.9999881997D0,
+     :                       +0.435739D0,
+     :                       -0.008541D0,
+     :                       +0.002117D0 /
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(R1950,D1950,R0)
+
+*  Adjust vector A to give zero proper motion in FK5
+      W=(BEPOCH-1950D0)/PMF
+      DO I=1,3
+         A1(I)=A(I)+W*AD(I)
+      END DO
+
+*  Remove e-terms
+      W=R0(1)*A1(1)+R0(2)*A1(2)+R0(3)*A1(3)
+      DO I=1,3
+         V1(I)=R0(I)-A1(I)+W*R0(I)
+      END DO
+
+*  Convert position vector to Fricke system
+      DO I=1,6
+         W=0D0
+         DO J=1,3
+            W=W+EM(I,J)*V1(J)
+         END DO
+         V2(I)=W
+      END DO
+
+*  Allow for fictitious proper motion in FK4
+      W=(sla_EPJ(sla_EPB2D(BEPOCH))-2000D0)/PMF
+      DO I=1,3
+         V2(I)=V2(I)+W*V2(I+3)
+      END DO
+
+*  Revert to spherical coordinates
+      CALL sla_DCC2S(V2,W,D2000)
+      R2000=sla_DRANRM(W)
+
+      END
diff --git a/fk524.f b/fk524.f
new file mode 100644
index 0000000000000000000000000000000000000000..a95dcb068a6c175c6a6cd85ba4a7e1c03a992c4f
--- /dev/null
+++ b/fk524.f
@@ -0,0 +1,274 @@
+      SUBROUTINE sla_FK524 (R2000,D2000,DR2000,DD2000,P2000,V2000,
+     :                      R1950,D1950,DR1950,DD1950,P1950,V1950)
+*+
+*     - - - - - -
+*      F K 5 2 4
+*     - - - - - -
+*
+*  Convert J2000.0 FK5 star data to B1950.0 FK4 (double precision)
+*
+*  This routine converts stars from the new, IAU 1976, FK5, Fricke
+*  system, to the old, Bessel-Newcomb, FK4 system.  The precepts
+*  of Smith et al (Ref 1) are followed, using the implementation
+*  by Yallop et al (Ref 2) of a matrix method due to Standish.
+*  Kinoshita's development of Andoyer's post-Newcomb precession is
+*  used.  The numerical constants from Seidelmann et al (Ref 3) are
+*  used canonically.
+*
+*  Given:  (all J2000.0,FK5)
+*     R2000,D2000     dp    J2000.0 RA,Dec (rad)
+*     DR2000,DD2000   dp    J2000.0 proper motions (rad/Jul.yr)
+*     P2000           dp    parallax (arcsec)
+*     V2000           dp    radial velocity (km/s, +ve = moving away)
+*
+*  Returned:  (all B1950.0,FK4)
+*     R1950,D1950     dp    B1950.0 RA,Dec (rad)
+*     DR1950,DD1950   dp    B1950.0 proper motions (rad/trop.yr)
+*     P1950           dp    parallax (arcsec)
+*     V1950           dp    radial velocity (km/s, +ve = moving away)
+*
+*  Notes:
+*
+*  1)  The proper motions in RA are dRA/dt rather than
+*      cos(Dec)*dRA/dt, and are per year rather than per century.
+*
+*  2)  Note that conversion from Julian epoch 2000.0 to Besselian
+*      epoch 1950.0 only is provided for.  Conversions involving
+*      other epochs will require use of the appropriate precession,
+*      proper motion, and E-terms routines before and/or after
+*      FK524 is called.
+*
+*  3)  In the FK4 catalogue the proper motions of stars within
+*      10 degrees of the poles do not embody the differential
+*      E-term effect and should, strictly speaking, be handled
+*      in a different manner from stars outside these regions.
+*      However, given the general lack of homogeneity of the star
+*      data available for routine astrometry, the difficulties of
+*      handling positions that may have been determined from
+*      astrometric fields spanning the polar and non-polar regions,
+*      the likelihood that the differential E-terms effect was not
+*      taken into account when allowing for proper motion in past
+*      astrometry, and the undesirability of a discontinuity in
+*      the algorithm, the decision has been made in this routine to
+*      include the effect of differential E-terms on the proper
+*      motions for all stars, whether polar or not.  At epoch 2000,
+*      and measuring on the sky rather than in terms of dRA, the
+*      errors resulting from this simplification are less than
+*      1 milliarcsecond in position and 1 milliarcsecond per
+*      century in proper motion.
+*
+*  References:
+*
+*     1  Smith, C.A. et al, 1989.  "The transformation of astrometric
+*        catalog systems to the equinox J2000.0".  Astron.J. 97, 265.
+*
+*     2  Yallop, B.D. et al, 1989.  "Transformation of mean star places
+*        from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space".
+*        Astron.J. 97, 274.
+*
+*     3  Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement to
+*        the Astronomical Almanac", ISBN 0-935702-68-7.
+*
+*  P.T.Wallace   Starlink   19 December 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R2000,D2000,DR2000,DD2000,P2000,V2000,
+     :                 R1950,D1950,DR1950,DD1950,P1950,V1950
+
+
+*  Miscellaneous
+      DOUBLE PRECISION R,D,UR,UD,PX,RV
+      DOUBLE PRECISION SR,CR,SD,CD,X,Y,Z,W
+      DOUBLE PRECISION V1(6),V2(6)
+      DOUBLE PRECISION XD,YD,ZD
+      DOUBLE PRECISION RXYZ,WD,RXYSQ,RXY
+      INTEGER I,J
+
+*  2Pi
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925287D0)
+
+*  Radians per year to arcsec per century
+      DOUBLE PRECISION PMF
+      PARAMETER (PMF=100D0*60D0*60D0*360D0/D2PI)
+
+*  Small number to avoid arithmetic problems
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-30)
+
+*
+*  CANONICAL CONSTANTS  (see references)
+*
+
+*  Km per sec to AU per tropical century
+*  = 86400 * 36524.2198782 / 149597870
+      DOUBLE PRECISION VF
+      PARAMETER (VF=21.095D0)
+
+*  Constant vector and matrix (by columns)
+      DOUBLE PRECISION A(6),EMI(6,6)
+      DATA A/ -1.62557D-6,  -0.31919D-6, -0.13843D-6,
+     :        +1.245D-3,    -1.580D-3,   -0.659D-3/
+
+      DATA (EMI(I,1),I=1,6) / +0.9999256795D0,
+     :                        -0.0111814828D0,
+     :                        -0.0048590040D0,
+     :                        -0.000551D0,
+     :                        -0.238560D0,
+     :                        +0.435730D0 /
+
+      DATA (EMI(I,2),I=1,6) / +0.0111814828D0,
+     :                        +0.9999374849D0,
+     :                        -0.0000271557D0,
+     :                        +0.238509D0,
+     :                        -0.002667D0,
+     :                        -0.008541D0 /
+
+      DATA (EMI(I,3),I=1,6) / +0.0048590039D0,
+     :                        -0.0000271771D0,
+     :                        +0.9999881946D0,
+     :                        -0.435614D0,
+     :                        +0.012254D0,
+     :                        +0.002117D0 /
+
+      DATA (EMI(I,4),I=1,6) / -0.00000242389840D0,
+     :                        +0.00000002710544D0,
+     :                        +0.00000001177742D0,
+     :                        +0.99990432D0,
+     :                        -0.01118145D0,
+     :                        -0.00485852D0 /
+
+      DATA (EMI(I,5),I=1,6) / -0.00000002710544D0,
+     :                        -0.00000242392702D0,
+     :                        +0.00000000006585D0,
+     :                        +0.01118145D0,
+     :                        +0.99991613D0,
+     :                        -0.00002716D0 /
+
+      DATA (EMI(I,6),I=1,6) / -0.00000001177742D0,
+     :                        +0.00000000006585D0,
+     :                        -0.00000242404995D0,
+     :                        +0.00485852D0,
+     :                        -0.00002717D0,
+     :                        +0.99996684D0 /
+
+
+
+*  Pick up J2000 data (units radians and arcsec/JC)
+      R=R2000
+      D=D2000
+      UR=DR2000*PMF
+      UD=DD2000*PMF
+      PX=P2000
+      RV=V2000
+
+*  Spherical to Cartesian
+      SR=SIN(R)
+      CR=COS(R)
+      SD=SIN(D)
+      CD=COS(D)
+
+      X=CR*CD
+      Y=SR*CD
+      Z=   SD
+
+      W=VF*RV*PX
+
+      V1(1)=X
+      V1(2)=Y
+      V1(3)=Z
+
+      V1(4)=-UR*Y-CR*SD*UD+W*X
+      V1(5)= UR*X-SR*SD*UD+W*Y
+      V1(6)=         CD*UD+W*Z
+
+*  Convert position+velocity vector to BN system
+      DO I=1,6
+         W=0D0
+         DO J=1,6
+            W=W+EMI(I,J)*V1(J)
+         END DO
+         V2(I)=W
+      END DO
+
+*  Position vector components and magnitude
+      X=V2(1)
+      Y=V2(2)
+      Z=V2(3)
+      RXYZ=SQRT(X*X+Y*Y+Z*Z)
+
+*  Apply E-terms to position
+      W=X*A(1)+Y*A(2)+Z*A(3)
+      X=X+A(1)*RXYZ-W*X
+      Y=Y+A(2)*RXYZ-W*Y
+      Z=Z+A(3)*RXYZ-W*Z
+
+*  Recompute magnitude
+      RXYZ=SQRT(X*X+Y*Y+Z*Z)
+
+*  Apply E-terms to both position and velocity
+      X=V2(1)
+      Y=V2(2)
+      Z=V2(3)
+      W=X*A(1)+Y*A(2)+Z*A(3)
+      WD=X*A(4)+Y*A(5)+Z*A(6)
+      X=X+A(1)*RXYZ-W*X
+      Y=Y+A(2)*RXYZ-W*Y
+      Z=Z+A(3)*RXYZ-W*Z
+      XD=V2(4)+A(4)*RXYZ-WD*X
+      YD=V2(5)+A(5)*RXYZ-WD*Y
+      ZD=V2(6)+A(6)*RXYZ-WD*Z
+
+*  Convert to spherical
+      RXYSQ=X*X+Y*Y
+      RXY=SQRT(RXYSQ)
+
+      IF (X.EQ.0D0.AND.Y.EQ.0D0) THEN
+         R=0D0
+      ELSE
+         R=ATAN2(Y,X)
+         IF (R.LT.0.0D0) R=R+D2PI
+      END IF
+      D=ATAN2(Z,RXY)
+
+      IF (RXY.GT.TINY) THEN
+         UR=(X*YD-Y*XD)/RXYSQ
+         UD=(ZD*RXYSQ-Z*(X*XD+Y*YD))/((RXYSQ+Z*Z)*RXY)
+      END IF
+
+*  Radial velocity and parallax
+      IF (PX.GT.TINY) THEN
+         RV=(X*XD+Y*YD+Z*ZD)/(PX*VF*RXYZ)
+         PX=PX/RXYZ
+      END IF
+
+*  Return results
+      R1950=R
+      D1950=D
+      DR1950=UR/PMF
+      DD1950=UD/PMF
+      P1950=PX
+      V1950=RV
+
+      END
diff --git a/fk52h.f b/fk52h.f
new file mode 100644
index 0000000000000000000000000000000000000000..30eeb21f0be521e51ce6c301436bb21b6795c0fe
--- /dev/null
+++ b/fk52h.f
@@ -0,0 +1,122 @@
+      SUBROUTINE sla_FK52H (R5,D5,DR5,DD5,RH,DH,DRH,DDH)
+*+
+*     - - - - - -
+*      F K 5 2 H
+*     - - - - - -
+*
+*  Transform FK5 (J2000) star data into the Hipparcos frame.
+*
+*  (double precision)
+*
+*  This routine transforms FK5 star positions and proper motions
+*  into the frame of the Hipparcos catalogue.
+*
+*  Given (all FK5, equinox J2000, epoch J2000):
+*     R5        d      RA (radians)
+*     D5        d      Dec (radians)
+*     DR5       d      proper motion in RA (dRA/dt, rad/Jyear)
+*     DD5       d      proper motion in Dec (dDec/dt, rad/Jyear)
+*
+*  Returned (all Hipparcos, epoch J2000):
+*     RH        d      RA (radians)
+*     DH        d      Dec (radians)
+*     DRH       d      proper motion in RA (dRA/dt, rad/Jyear)
+*     DDH       d      proper motion in Dec (dDec/dt, rad/Jyear)
+*
+*  Called:  sla_DS2C6, sla_DAV2M, sla_DMXV, sla_DVXV, sla_DC62S,
+*           sla_DRANRM
+*
+*  Notes:
+*
+*  1)  The proper motions in RA are dRA/dt rather than
+*      cos(Dec)*dRA/dt, and are per year rather than per century.
+*
+*  2)  The FK5 to Hipparcos transformation consists of a pure
+*      rotation and spin;  zonal errors in the FK5 catalogue are
+*      not taken into account.
+*
+*  3)  The published orientation and spin components are interpreted
+*      as "axial vectors".  An axial vector points at the pole of the
+*      rotation and its length is the amount of rotation in radians.
+*
+*  4)  See also sla_H2FK5, sla_FK5HZ, sla_HFK5Z.
+*
+*  Reference:
+*
+*     M.Feissel & F.Mignard, Astron. Astrophys. 331, L33-L36 (1998).
+*
+*  P.T.Wallace   Starlink   22 June 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R5,D5,DR5,DD5,RH,DH,DRH,DDH
+
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+*  FK5 to Hipparcos orientation and spin (radians, radians/year)
+      DOUBLE PRECISION EPX,EPY,EPZ
+      DOUBLE PRECISION OMX,OMY,OMZ
+
+      PARAMETER ( EPX = -19.9D-3 * AS2R,
+     :            EPY =  -9.1D-3 * AS2R,
+     :            EPZ = +22.9D-3 * AS2R )
+
+      PARAMETER ( OMX = -0.30D-3 * AS2R,
+     :            OMY = +0.60D-3 * AS2R,
+     :            OMZ = +0.70D-3 * AS2R )
+
+      DOUBLE PRECISION PV5(6),ORTN(3),R5H(3,3),S5(3),VV(3),PVH(6),W,R,V
+      INTEGER I
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+*  FK5 barycentric position/velocity 6-vector (normalized).
+      CALL sla_DS2C6(R5,D5,1D0,DR5,DD5,0D0,PV5)
+
+*  FK5 to Hipparcos orientation matrix.
+      ORTN(1) = EPX
+      ORTN(2) = EPY
+      ORTN(3) = EPZ
+      CALL sla_DAV2M(ORTN,R5H)
+
+*  Hipparcos wrt FK5 spin vector.
+      S5(1) = OMX
+      S5(2) = OMY
+      S5(3) = OMZ
+
+*  Orient & spin the 6-vector into the Hipparcos frame.
+      CALL sla_DMXV(R5H,PV5,PVH)
+      CALL sla_DVXV(PV5,S5,VV)
+      DO I=1,3
+         VV(I) = PV5(I+3)+VV(I)
+      END DO
+      CALL sla_DMXV(R5H,VV,PVH(4))
+
+*  Hipparcos 6-vector to spherical.
+      CALL sla_DC62S(PVH,W,DH,R,DRH,DDH,V)
+      RH = sla_DRANRM(W)
+
+      END
diff --git a/fk54z.f b/fk54z.f
new file mode 100644
index 0000000000000000000000000000000000000000..556ca56af44153071dc6e32b24d2147044cae1eb
--- /dev/null
+++ b/fk54z.f
@@ -0,0 +1,86 @@
+      SUBROUTINE sla_FK54Z (R2000,D2000,BEPOCH,
+     :                      R1950,D1950,DR1950,DD1950)
+*+
+*     - - - - - -
+*      F K 5 4 Z
+*     - - - - - -
+*
+*  Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming
+*  zero proper motion and parallax (double precision)
+*
+*  This routine converts star positions from the new, IAU 1976,
+*  FK5, Fricke system to the old, Bessel-Newcomb, FK4 system.
+*
+*  Given:
+*     R2000,D2000     dp    J2000.0 FK5 RA,Dec (rad)
+*     BEPOCH          dp    Besselian epoch (e.g. 1950D0)
+*
+*  Returned:
+*     R1950,D1950     dp    B1950.0 FK4 RA,Dec (rad) at epoch BEPOCH
+*     DR1950,DD1950   dp    B1950.0 FK4 proper motions (rad/trop.yr)
+*
+*  Notes:
+*
+*  1)  The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+*
+*  2)  Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0
+*      only is provided for.  Conversions involving other epochs will
+*      require use of the appropriate precession routines before and
+*      after this routine is called.
+*
+*  3)  Unlike in the sla_FK524 routine, the FK5 proper motions, the
+*      parallax and the radial velocity are presumed zero.
+*
+*  4)  It is the intention that FK5 should be a close approximation
+*      to an inertial frame, so that distant objects have zero proper
+*      motion;  such objects have (in general) non-zero proper motion
+*      in FK4, and this routine returns those fictitious proper
+*      motions.
+*
+*  5)  The position returned by this routine is in the B1950
+*      reference frame but at Besselian epoch BEPOCH.  For
+*      comparison with catalogues the BEPOCH argument will
+*      frequently be 1950D0.
+*
+*  Called:  sla_FK524, sla_PM
+*
+*  P.T.Wallace   Starlink   10 April 1990
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R2000,D2000,BEPOCH,
+     :                 R1950,D1950,DR1950,DD1950
+
+      DOUBLE PRECISION R,D,PX,RV
+
+
+
+*  FK5 equinox J2000 (any epoch) to FK4 equinox B1950 epoch B1950
+      CALL sla_FK524(R2000,D2000,0D0,0D0,0D0,0D0,
+     :               R,D,DR1950,DD1950,PX,RV)
+
+*  Fictitious proper motion to epoch BEPOCH
+      CALL sla_PM(R,D,DR1950,DD1950,0D0,0D0,1950D0,BEPOCH,
+     :            R1950,D1950)
+
+      END
diff --git a/fk5hz.f b/fk5hz.f
new file mode 100644
index 0000000000000000000000000000000000000000..17d1618adb4ce2da3263f87b1d65adb37d7309f5
--- /dev/null
+++ b/fk5hz.f
@@ -0,0 +1,124 @@
+      SUBROUTINE sla_FK5HZ (R5,D5,EPOCH,RH,DH)
+*+
+*     - - - - - -
+*      F K 5 H Z
+*     - - - - - -
+*
+*  Transform an FK5 (J2000) star position into the frame of the
+*  Hipparcos catalogue, assuming zero Hipparcos proper motion.
+*
+*  (double precision)
+*
+*  This routine converts a star position from the FK5 system to
+*  the Hipparcos system, in such a way that the Hipparcos proper
+*  motion is zero.  Because such a star has, in general, a non-zero
+*  proper motion in the FK5 system, the routine requires the epoch
+*  at which the position in the FK5 system was determined.
+*
+*  Given:
+*     R5        d      FK5 RA (radians), equinox J2000, epoch EPOCH
+*     D5        d      FK5 Dec (radians), equinox J2000, epoch EPOCH
+*     EPOCH     d      Julian epoch (TDB)
+*
+*  Returned (all Hipparcos):
+*     RH        d      RA (radians)
+*     DH        d      Dec (radians)
+*
+*  Called:  sla_DCS2C, sla_DAV2M, sla_DIMXV, sla_DMXV, sla_DCC2S,
+*           sla_DRANRM
+*
+*  Notes:
+*
+*  1)  The FK5 to Hipparcos transformation consists of a pure
+*      rotation and spin;  zonal errors in the FK5 catalogue are
+*      not taken into account.
+*
+*  2)  The published orientation and spin components are interpreted
+*      as "axial vectors".  An axial vector points at the pole of the
+*      rotation and its length is the amount of rotation in radians.
+*
+*  3)  See also sla_FK52H, sla_H2FK5, sla_HFK5Z.
+*
+*  Reference:
+*
+*     M.Feissel & F.Mignard, Astron. Astrophys. 331, L33-L36 (1998).
+*
+*  P.T.Wallace   Starlink   22 June 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R5,D5,EPOCH,RH,DH
+
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+*  FK5 to Hipparcos orientation and spin (radians, radians/year)
+      DOUBLE PRECISION EPX,EPY,EPZ
+      DOUBLE PRECISION OMX,OMY,OMZ
+
+      PARAMETER ( EPX = -19.9D-3 * AS2R,
+     :            EPY =  -9.1D-3 * AS2R,
+     :            EPZ = +22.9D-3 * AS2R )
+
+      PARAMETER ( OMX = -0.30D-3 * AS2R,
+     :            OMY = +0.60D-3 * AS2R,
+     :            OMZ = +0.70D-3 * AS2R )
+
+      DOUBLE PRECISION P5E(3),ORTN(3),R5H(3,3),T,VST(3),RST(3,3),
+     :                 P5(3),PH(3),W
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+*  FK5 barycentric position vector.
+      CALL sla_DCS2C(R5,D5,P5E)
+
+*  FK5 to Hipparcos orientation matrix.
+      ORTN(1) = EPX
+      ORTN(2) = EPY
+      ORTN(3) = EPZ
+      CALL sla_DAV2M(ORTN,R5H)
+
+*  Time interval from epoch to J2000.
+      T = 2000D0-EPOCH
+
+*  Axial vector:  accumulated Hipparcos wrt FK5 spin over that interval.
+      VST(1) = OMX*T
+      VST(2) = OMY*T
+      VST(3) = OMZ*T
+
+*  Express the accumulated spin as a rotation matrix.
+      CALL sla_DAV2M(VST,RST)
+
+*  Derotate the vector's FK5 axes back to epoch.
+      CALL sla_DIMXV(RST,P5E,P5)
+
+*  Rotate the vector into the Hipparcos frame.
+      CALL sla_DMXV(R5H,P5,PH)
+
+*  Hipparcos vector to spherical.
+      CALL sla_DCC2S(PH,W,DH)
+      RH = sla_DRANRM(W)
+
+      END
diff --git a/flotin.f b/flotin.f
new file mode 100644
index 0000000000000000000000000000000000000000..56992328556f87b477ec935acc53179b3f890336
--- /dev/null
+++ b/flotin.f
@@ -0,0 +1,145 @@
+      SUBROUTINE sla_FLOTIN (STRING, NSTRT, RESLT, JFLAG)
+*+
+*     - - - - - - -
+*      F L O T I N
+*     - - - - - - -
+*
+*  Convert free-format input into single precision floating point
+*
+*  Given:
+*     STRING     c     string containing number to be decoded
+*     NSTRT      i     pointer to where decoding is to start
+*     RESLT      r     current value of result
+*
+*  Returned:
+*     NSTRT      i      advanced to next number
+*     RESLT      r      result
+*     JFLAG      i      status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
+*
+*  Called:  sla_DFLTIN
+*
+*  Notes:
+*
+*     1     The reason FLOTIN has separate OK status values for +
+*           and - is to enable minus zero to be detected.   This is
+*           of crucial importance when decoding mixed-radix numbers.
+*           For example, an angle expressed as deg, arcmin, arcsec
+*           may have a leading minus sign but a zero degrees field.
+*
+*     2     A TAB is interpreted as a space, and lowercase characters
+*           are interpreted as uppercase.
+*
+*     3     The basic format is the sequence of fields #^.^@#^, where
+*           # is a sign character + or -, ^ means a string of decimal
+*           digits, and @, which indicates an exponent, means D or E.
+*           Various combinations of these fields can be omitted, and
+*           embedded blanks are permissible in certain places.
+*
+*     4     Spaces:
+*
+*             .  Leading spaces are ignored.
+*
+*             .  Embedded spaces are allowed only after +, -, D or E,
+*                and after the decomal point if the first sequence of
+*                digits is absent.
+*
+*             .  Trailing spaces are ignored;  the first signifies
+*                end of decoding and subsequent ones are skipped.
+*
+*     5     Delimiters:
+*
+*             .  Any character other than +,-,0-9,.,D,E or space may be
+*                used to signal the end of the number and terminate
+*                decoding.
+*
+*             .  Comma is recognized by FLOTIN as a special case;  it
+*                is skipped, leaving the pointer on the next character.
+*                See 13, below.
+*
+*     6     Both signs are optional.  The default is +.
+*
+*     7     The mantissa ^.^ defaults to 1.
+*
+*     8     The exponent @#^ defaults to E0.
+*
+*     9     The strings of decimal digits may be of any length.
+*
+*     10    The decimal point is optional for whole numbers.
+*
+*     11    A "null result" occurs when the string of characters being
+*           decoded does not begin with +,-,0-9,.,D or E, or consists
+*           entirely of spaces.  When this condition is detected, JFLAG
+*           is set to 1 and RESLT is left untouched.
+*
+*     12    NSTRT = 1 for the first character in the string.
+*
+*     13    On return from FLOTIN, NSTRT is set ready for the next
+*           decode - following trailing blanks and any comma.  If a
+*           delimiter other than comma is being used, NSTRT must be
+*           incremented before the next call to FLOTIN, otherwise
+*           all subsequent calls will return a null result.
+*
+*     14    Errors (JFLAG=2) occur when:
+*
+*             .  a +, -, D or E is left unsatisfied;  or
+*
+*             .  the decimal point is present without at least
+*                one decimal digit before or after it;  or
+*
+*             .  an exponent more than 100 has been presented.
+*
+*     15    When an error has been detected, NSTRT is left
+*           pointing to the character following the last
+*           one used before the error came to light.  This
+*           may be after the point at which a more sophisticated
+*           program could have detected the error.  For example,
+*           FLOTIN does not detect that '1E999' is unacceptable
+*           (on a computer where this is so) until the entire number
+*           has been decoded.
+*
+*     16    Certain highly unlikely combinations of mantissa &
+*           exponent can cause arithmetic faults during the
+*           decode, in some cases despite the fact that they
+*           together could be construed as a valid number.
+*
+*     17    Decoding is left to right, one pass.
+*
+*     18    See also DFLTIN and INTIN
+*
+*  P.T.Wallace   Starlink   23 November 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER NSTRT
+      REAL RESLT
+      INTEGER JFLAG
+
+      DOUBLE PRECISION DRESLT
+
+
+*  Call the double precision version
+      CALL sla_DFLTIN(STRING,NSTRT,DRESLT,JFLAG)
+      IF (JFLAG.LE.0) RESLT=REAL(DRESLT)
+
+      END
diff --git a/galeq.f b/galeq.f
new file mode 100644
index 0000000000000000000000000000000000000000..3bccf71e8d529078c90c9944050aa3b9dd4952fc
--- /dev/null
+++ b/galeq.f
@@ -0,0 +1,96 @@
+      SUBROUTINE sla_GALEQ (DL, DB, DR, DD)
+*+
+*     - - - - - -
+*      G A L E Q
+*     - - - - - -
+*
+*  Transformation from IAU 1958 galactic coordinates to
+*  J2000.0 equatorial coordinates (double precision)
+*
+*  Given:
+*     DL,DB       dp       galactic longitude and latitude L2,B2
+*
+*  Returned:
+*     DR,DD       dp       J2000.0 RA,Dec
+*
+*  (all arguments are radians)
+*
+*  Called:
+*     sla_DCS2C, sla_DIMXV, sla_DCC2S, sla_DRANRM, sla_DRANGE
+*
+*  Note:
+*     The equatorial coordinates are J2000.0.  Use the routine
+*     sla_GE50 if conversion to B1950.0 'FK4' coordinates is
+*     required.
+*
+*  Reference:
+*     Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+*
+*  P.T.Wallace   Starlink   21 September 1998
+*
+*  Copyright (C) 1998 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DL,DB,DR,DD
+
+      DOUBLE PRECISION sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION V1(3),V2(3)
+
+*
+*  L2,B2 system of galactic coordinates
+*
+*  P = 192.25       RA of galactic north pole (mean B1950.0)
+*  Q =  62.6        inclination of galactic to mean B1950.0 equator
+*  R =  33          longitude of ascending node
+*
+*  P,Q,R are degrees
+*
+*  Equatorial to galactic rotation matrix (J2000.0), obtained by
+*  applying the standard FK4 to FK5 transformation, for zero proper
+*  motion in FK5, to the columns of the B1950 equatorial to
+*  galactic rotation matrix:
+*
+      DOUBLE PRECISION RMAT(3,3)
+      DATA RMAT(1,1),RMAT(1,2),RMAT(1,3),
+     :     RMAT(2,1),RMAT(2,2),RMAT(2,3),
+     :     RMAT(3,1),RMAT(3,2),RMAT(3,3)/
+     : -0.054875539726D0,-0.873437108010D0,-0.483834985808D0,
+     : +0.494109453312D0,-0.444829589425D0,+0.746982251810D0,
+     : -0.867666135858D0,-0.198076386122D0,+0.455983795705D0/
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DL,DB,V1)
+
+*  Galactic to equatorial
+      CALL sla_DIMXV(RMAT,V1,V2)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V2,DR,DD)
+
+*  Express in conventional ranges
+      DR=sla_DRANRM(DR)
+      DD=sla_DRANGE(DD)
+
+      END
diff --git a/galsup.f b/galsup.f
new file mode 100644
index 0000000000000000000000000000000000000000..65b98626de9e21c3c5a68b62a472dcaeec81e6e4
--- /dev/null
+++ b/galsup.f
@@ -0,0 +1,96 @@
+      SUBROUTINE sla_GALSUP (DL, DB, DSL, DSB)
+*+
+*     - - - - - - -
+*      G A L S U P
+*     - - - - - - -
+*
+*  Transformation from IAU 1958 galactic coordinates to
+*  de Vaucouleurs supergalactic coordinates (double precision)
+*
+*  Given:
+*     DL,DB       dp       galactic longitude and latitude L2,B2
+*
+*  Returned:
+*     DSL,DSB     dp       supergalactic longitude and latitude
+*
+*  (all arguments are radians)
+*
+*  Called:
+*     sla_DCS2C, sla_DMXV, sla_DCC2S, sla_DRANRM, sla_DRANGE
+*
+*  References:
+*
+*     de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference
+*     Catalogue of Bright Galaxies, U. Texas, page 8.
+*
+*     Systems & Applied Sciences Corp., Documentation for the
+*     machine-readable version of the above catalogue,
+*     Contract NAS 5-26490.
+*
+*    (These two references give different values for the galactic
+*     longitude of the supergalactic origin.  Both are wrong;  the
+*     correct value is L2=137.37.)
+*
+*  P.T.Wallace   Starlink   25 January 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DL,DB,DSL,DSB
+
+      DOUBLE PRECISION sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION V1(3),V2(3)
+
+*
+*  System of supergalactic coordinates:
+*
+*    SGL   SGB        L2     B2      (deg)
+*     -    +90      47.37  +6.32
+*     0     0         -      0
+*
+*  Galactic to supergalactic rotation matrix:
+*
+      DOUBLE PRECISION RMAT(3,3)
+      DATA RMAT(1,1),RMAT(1,2),RMAT(1,3),
+     :     RMAT(2,1),RMAT(2,2),RMAT(2,3),
+     :     RMAT(3,1),RMAT(3,2),RMAT(3,3)/
+     : -0.735742574804D0,+0.677261296414D0,+0.000000000000D0,
+     : -0.074553778365D0,-0.080991471307D0,+0.993922590400D0,
+     : +0.673145302109D0,+0.731271165817D0,+0.110081262225D0/
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DL,DB,V1)
+
+*  Galactic to supergalactic
+      CALL sla_DMXV(RMAT,V1,V2)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V2,DSL,DSB)
+
+*  Express in conventional ranges
+      DSL=sla_DRANRM(DSL)
+      DSB=sla_DRANGE(DSB)
+
+      END
diff --git a/ge50.f b/ge50.f
new file mode 100644
index 0000000000000000000000000000000000000000..b3e6eb682b3ca92966cb319760b276610a1585a7
--- /dev/null
+++ b/ge50.f
@@ -0,0 +1,107 @@
+      SUBROUTINE sla_GE50 (DL, DB, DR, DD)
+*+
+*     - - - - -
+*      G E 5 0
+*     - - - - -
+*
+*  Transformation from IAU 1958 galactic coordinates to
+*  B1950.0 'FK4' equatorial coordinates (double precision)
+*
+*  Given:
+*     DL,DB       dp       galactic longitude and latitude L2,B2
+*
+*  Returned:
+*     DR,DD       dp       B1950.0 'FK4' RA,Dec
+*
+*  (all arguments are radians)
+*
+*  Called:
+*     sla_DCS2C, sla_DIMXV, sla_DCC2S, sla_ADDET, sla_DRANRM, sla_DRANGE
+*
+*  Note:
+*     The equatorial coordinates are B1950.0 'FK4'.  Use the
+*     routine sla_GALEQ if conversion to J2000.0 coordinates
+*     is required.
+*
+*  Reference:
+*     Blaauw et al, Mon.Not.R.Astron.Soc.,121,123 (1960)
+*
+*  P.T.Wallace   Starlink   5 September 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DL,DB,DR,DD
+
+      DOUBLE PRECISION sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION V1(3),V2(3),R,D,RE,DE
+
+*
+*  L2,B2 system of galactic coordinates
+*
+*  P = 192.25       RA of galactic north pole (mean B1950.0)
+*  Q =  62.6        inclination of galactic to mean B1950.0 equator
+*  R =  33          longitude of ascending node
+*
+*  P,Q,R are degrees
+*
+*
+*  Equatorial to galactic rotation matrix
+*
+*  The Euler angles are P, Q, 90-R, about the z then y then
+*  z axes.
+*
+*         +CP.CQ.SR-SP.CR     +SP.CQ.SR+CP.CR     -SQ.SR
+*
+*         -CP.CQ.CR-SP.SR     -SP.CQ.CR+CP.SR     +SQ.CR
+*
+*         +CP.SQ              +SP.SQ              +CQ
+*
+
+      DOUBLE PRECISION RMAT(3,3)
+      DATA RMAT(1,1),RMAT(1,2),RMAT(1,3),
+     :     RMAT(2,1),RMAT(2,2),RMAT(2,3),
+     :     RMAT(3,1),RMAT(3,2),RMAT(3,3) /
+     : -0.066988739415D0,-0.872755765852D0,-0.483538914632D0,
+     : +0.492728466075D0,-0.450346958020D0,+0.744584633283D0,
+     : -0.867600811151D0,-0.188374601723D0,+0.460199784784D0 /
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DL,DB,V1)
+
+*  Rotate to mean B1950.0
+      CALL sla_DIMXV(RMAT,V1,V2)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V2,R,D)
+
+*  Introduce E-terms
+      CALL sla_ADDET(R,D,1950D0,RE,DE)
+
+*  Express in conventional ranges
+      DR=sla_DRANRM(RE)
+      DD=sla_DRANGE(DE)
+
+      END
diff --git a/geoc.f b/geoc.f
new file mode 100644
index 0000000000000000000000000000000000000000..d2e83ad8ca0be996814a0a8a10212dc4bae30d44
--- /dev/null
+++ b/geoc.f
@@ -0,0 +1,77 @@
+      SUBROUTINE sla_GEOC (P, H, R, Z)
+*+
+*     - - - - -
+*      G E O C
+*     - - - - -
+*
+*  Convert geodetic position to geocentric (double precision)
+*
+*  Given:
+*     P     dp     latitude (geodetic, radians)
+*     H     dp     height above reference spheroid (geodetic, metres)
+*
+*  Returned:
+*     R     dp     distance from Earth axis (AU)
+*     Z     dp     distance from plane of Earth equator (AU)
+*
+*  Notes:
+*
+*  1  Geocentric latitude can be obtained by evaluating ATAN2(Z,R).
+*
+*  2  IAU 1976 constants are used.
+*
+*  Reference:
+*
+*     Green,R.M., Spherical Astronomy, CUP 1985, p98.
+*
+*  Last revision:   22 July 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION P,H,R,Z
+
+*  Earth equatorial radius (metres)
+      DOUBLE PRECISION A0
+      PARAMETER (A0=6378140D0)
+
+*  Reference spheroid flattening factor and useful function
+      DOUBLE PRECISION F,B
+      PARAMETER (F=1D0/298.257D0,B=(1D0-F)**2)
+
+*  Astronomical unit in metres
+      DOUBLE PRECISION AU
+      PARAMETER (AU=1.49597870D11)
+
+      DOUBLE PRECISION SP,CP,C,S
+
+
+
+*  Geodetic to geocentric conversion
+      SP = SIN(P)
+      CP = COS(P)
+      C = 1D0/SQRT(CP*CP+B*SP*SP)
+      S = B*C
+      R = (A0*C+H)*CP/AU
+      Z = (A0*S+H)*SP/AU
+
+      END
diff --git a/gmst.f b/gmst.f
new file mode 100644
index 0000000000000000000000000000000000000000..343a7132e9fb2466721de280b2ce1fbfcfdc50c6
--- /dev/null
+++ b/gmst.f
@@ -0,0 +1,77 @@
+      DOUBLE PRECISION FUNCTION sla_GMST (UT1)
+*+
+*     - - - - -
+*      G M S T
+*     - - - - -
+*
+*  Conversion from universal time to sidereal time (double precision)
+*
+*  Given:
+*    UT1    dp     universal time (strictly UT1) expressed as
+*                  modified Julian Date (JD-2400000.5)
+*
+*  The result is the Greenwich mean sidereal time (double
+*  precision, radians).
+*
+*  The IAU 1982 expression (see page S15 of 1984 Astronomical Almanac)
+*  is used, but rearranged to reduce rounding errors.  This expression
+*  is always described as giving the GMST at 0 hours UT.  In fact, it
+*  gives the difference between the GMST and the UT, which happens to
+*  equal the GMST (modulo 24 hours) at 0 hours UT each day.  In this
+*  routine, the entire UT is used directly as the argument for the
+*  standard formula, and the fractional part of the UT is added
+*  separately.  Note that the factor 1.0027379... does not appear in the
+*  IAU 1982 expression explicitly but in the form of the coefficient
+*  8640184.812866, which is 86400x36525x0.0027379...
+*
+*  See also the routine sla_GMSTA, which delivers better numerical
+*  precision by accepting the UT date and time as separate arguments.
+*
+*  Called:  sla_DRANRM
+*
+*  P.T.Wallace   Starlink   14 October 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION UT1
+
+      DOUBLE PRECISION sla_DRANRM
+
+      DOUBLE PRECISION D2PI,S2R
+      PARAMETER (D2PI=6.283185307179586476925286766559D0,
+     :           S2R=7.272205216643039903848711535369D-5)
+
+      DOUBLE PRECISION TU
+
+
+
+*  Julian centuries from fundamental epoch J2000 to this UT
+      TU=(UT1-51544.5D0)/36525D0
+
+*  GMST at this UT
+      sla_GMST=sla_DRANRM(MOD(UT1,1D0)*D2PI+
+     :                    (24110.54841D0+
+     :                    (8640184.812866D0+
+     :                    (0.093104D0-6.2D-6*TU)*TU)*TU)*S2R)
+
+      END
diff --git a/gmsta.f b/gmsta.f
new file mode 100644
index 0000000000000000000000000000000000000000..5d718b5f24b80ca6c815830640547ac809d20369
--- /dev/null
+++ b/gmsta.f
@@ -0,0 +1,99 @@
+      DOUBLE PRECISION FUNCTION sla_GMSTA (DATE, UT)
+*+
+*     - - - - - -
+*      G M S T A
+*     - - - - - -
+*
+*  Conversion from Universal Time to Greenwich mean sidereal time,
+*  with rounding errors minimized.
+*
+*  double precision
+*
+*  Given:
+*    DATE    d      UT1 date (MJD: integer part of JD-2400000.5))
+*    UT      d      UT1 time (fraction of a day)
+*
+*  The result is the Greenwich mean sidereal time (double precision,
+*  radians, in the range 0 to 2pi).
+*
+*  There is no restriction on how the UT is apportioned between the
+*  DATE and UT arguments.  Either of the two arguments could, for
+*  example, be zero and the entire date+time supplied in the other.
+*  However, the routine is designed to deliver maximum accuracy when
+*  the DATE argument is a whole number and the UT lies in the range
+*  0 to 1 (or vice versa).
+*
+*  The algorithm is based on the IAU 1982 expression (see page S15 of
+*  the 1984 Astronomical Almanac).  This is always described as giving
+*  the GMST at 0 hours UT1.  In fact, it gives the difference between
+*  the GMST and the UT, the steady 4-minutes-per-day drawing-ahead of
+*  ST with respect to UT.  When whole days are ignored, the expression
+*  happens to equal the GMST at 0 hours UT1 each day.  Note that the
+*  factor 1.0027379... does not appear explicitly but in the form of
+*  the coefficient 8640184.812866, which is 86400x36525x0.0027379...
+*
+*  In this routine, the entire UT1 (the sum of the two arguments DATE
+*  and UT) is used directly as the argument for the standard formula.
+*  The UT1 is then added, but omitting whole days to conserve accuracy.
+*
+*  See also the routine sla_GMST, which accepts the UT as a single
+*  argument.  Compared with sla_GMST, the extra numerical precision
+*  delivered by the present routine is unlikely to be important in
+*  an absolute sense, but may be useful when critically comparing
+*  algorithms and in applications where two sidereal times close
+*  together are differenced.
+*
+*  Called:  sla_DRANRM
+*
+*  P.T.Wallace   Starlink   14 October 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,UT
+
+*  Seconds of time to radians
+      DOUBLE PRECISION S2R
+      PARAMETER (S2R=7.272205216643039903848712D-5)
+
+      DOUBLE PRECISION D1,D2,T
+      DOUBLE PRECISION sla_DRANRM
+
+
+*  Julian centuries since J2000.
+      IF (DATE.LT.UT) THEN
+         D1=DATE
+         D2=UT
+      ELSE
+         D1=UT
+         D2=DATE
+      END IF
+      T=(D1+(D2-51544.5D0))/36525D0
+
+*  GMST at this UT1.
+      sla_GMSTA=sla_DRANRM(S2R*(24110.54841D0+
+     :                         (8640184.812866D0+
+     :                         (0.093104D0
+     :                         -6.2D-6*T)*T)*T
+     :                         +86400D0*(MOD(D1,1D0)+MOD(D2,1D0))))
+
+      END
diff --git a/gresid.F b/gresid.F
new file mode 120000
index 0000000000000000000000000000000000000000..1ac59e8d36f6007ce018b994f56adab43afed48a
--- /dev/null
+++ b/gresid.F
@@ -0,0 +1 @@
+gresid.Fdefault
\ No newline at end of file
diff --git a/gresid.F__vms b/gresid.F__vms
new file mode 100644
index 0000000000000000000000000000000000000000..5c64e0a2a06aba4e8a3b7cf1dd1811f7eecf3275
--- /dev/null
+++ b/gresid.F__vms
@@ -0,0 +1,89 @@
+      REAL FUNCTION sla_GRESID (S)
+*+
+*     - - - - - - -
+*      G R E S I D
+*     - - - - - - -
+*
+*  Generate pseudo-random normal deviate ( = 'Gaussian residual')
+*  (single precision)
+*
+*  !!! Version for VAX/VMS and DECstation !!!
+*
+*  Given:
+*     S      real     standard deviation
+*
+*  The results of many calls to this routine will be
+*  normally distributed with mean zero and standard deviation S.
+*
+*  The Box-Muller algorithm is used.  This is described in
+*  Numerical Recipes, section 7.2.
+*
+*  P.T.Wallace   Starlink   14 October 1991
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL S
+
+      REAL X,Y,R,W,GNEXT,G
+      INTEGER ISEED
+      LOGICAL FIRST
+
+      REAL RAN
+
+      SAVE GNEXT,ISEED,FIRST
+      DATA ISEED / 123456789 /
+      DATA FIRST / .TRUE. /
+
+
+
+*  Second normal deviate of the pair available?
+      IF (FIRST) THEN
+
+*     No - generate two random numbers inside unit circle
+         R = 2.0
+         DO WHILE (R.GE.1.0)
+
+*        Generate two random numbers in range +/- 1
+            X = 2.0*RAN(ISEED)-1.0
+            Y = 2.0*RAN(ISEED)-1.0
+
+*        Try again if not in unit circle
+            R = X*X+Y*Y
+         END DO
+
+*     Box-Muller transformation, generating two deviates
+         W = SQRT(-2.0*LOG(R)/MAX(R,1E-20))
+         GNEXT = X*W
+         G = Y*W
+
+*     Set flag to indicate availability of next deviate
+         FIRST = .FALSE.
+      ELSE
+
+*     Return second deviate of the pair & reset flag
+         G = GNEXT
+         FIRST = .TRUE.
+      END IF
+
+*  Scale the deviate by the required standard deviation
+      sla_GRESID = G*S
+
+      END
diff --git a/gresid.F__win b/gresid.F__win
new file mode 100644
index 0000000000000000000000000000000000000000..fb0b137b8b0fdcf5839ff434f0a4d214ae6431ce
--- /dev/null
+++ b/gresid.F__win
@@ -0,0 +1,90 @@
+      REAL FUNCTION sla_GRESID (S)
+*+
+*     - - - - - - -
+*      G R E S I D
+*     - - - - - - -
+*
+*  Generate pseudo-random normal deviate ( = 'Gaussian residual')
+*  (single precision)
+*
+*  Given:
+*     S      real     standard deviation
+*
+*  The results of many calls to this routine will be
+*  normally distributed with mean zero and standard deviation S.
+*
+*  The Box-Muller algorithm is used.  This is described in
+*  Numerical Recipes, section 7.2.
+*
+*  !!!  Microsoft Fortran dependent - calls the RAN routine   !!!
+*  !!!  To seed the random-number generator, either call the  !!!
+*  !!!  Microsoft SEED routine specifying some INTEGER*2      !!!
+*  !!!  seed or call the function sla_RANDOM specifying some  !!!
+*  !!!  REAL seed.                                            !!!
+*
+*  P.T.Wallace   Starlink   1 April 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL S
+
+      REAL X,Y,RV,R,W,GNEXT,G
+      LOGICAL FIRST
+
+      SAVE GNEXT,RV,FIRST
+      DATA FIRST / .TRUE. /
+
+
+
+*  Second normal deviate of the pair available?
+      IF (FIRST) THEN
+
+*     No - generate two random numbers in range +/- 1
+ 1       CONTINUE
+         CALL RANDOM(RV)               !!! PC
+         X = 2.0*RV-1.0
+         CALL RANDOM(RV)               !!! PC
+         Y = 2.0*RV-1.0
+
+*     Try again if not in unit circle
+         R = X*X+Y*Y
+         IF (R.GE.1.0) GO TO 1
+
+*     Box-Muller transformation, generating two deviates
+         W = SQRT(-2.0*LOG(R)/MAX(R,1E-20))
+         GNEXT = X*W
+         G = Y*W
+
+*     Set flag to indicate availability of next deviate
+         FIRST = .FALSE.
+      ELSE
+
+*     Return second deviate of the pair & reset flag
+         G = GNEXT
+         FIRST = .TRUE.
+      END IF
+
+*  Scale the deviate by the required standard deviation
+      sla_GRESID = G*S
+
+      END
diff --git a/gresid.Fdefault b/gresid.Fdefault
new file mode 100644
index 0000000000000000000000000000000000000000..6536607bd712d71c8ea95d3c26ed9d3730481ec0
--- /dev/null
+++ b/gresid.Fdefault
@@ -0,0 +1,113 @@
+#include <config.h>
+      REAL FUNCTION sla_GRESID (S)
+*+
+*     - - - - - - -
+*      G R E S I D
+*     - - - - - - -
+*
+*  Generate pseudo-random normal deviate ( = 'Gaussian residual')
+*  (single precision)
+*
+*  Given:
+*     S      real     standard deviation
+*
+*  The results of many calls to this routine will be
+*  normally distributed with mean zero and standard deviation S.
+*
+*  The Box-Muller algorithm is used.  This is described in
+*  Numerical Recipes, section 7.2.
+*
+*  Called:  RAN or RAND (a REAL function returning a random variate --
+*           the precise function which is called depends on which functions
+*           are available when the library is built).  If neither of these
+*           is available, we use the local substitute RANDOM defined
+*           in rtl_random.c
+*
+*  P.T.Wallace   Starlink   14 October 1991
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*-
+
+      IMPLICIT NONE
+
+      REAL S
+
+      REAL X,Y,R,W,GNEXT,G
+      LOGICAL FTF,FIRST
+
+#if HAVE_RAND
+      REAL RAND
+#elif HAVE_RANDOM
+      REAL RANDOM
+#else
+ error "Can't find random-number function"
+#endif
+
+      SAVE GNEXT,FTF,FIRST
+      DATA FTF,FIRST / .TRUE.,.TRUE. /
+
+      X = 0.0
+      Y = 0.0
+
+*  First time through, initialise the random-number generator
+#if HAVE_RAND
+      IF (FTF) THEN
+         X = RAND(123456789)
+         FTF = .FALSE.
+      END IF
+#endif
+
+*  Second normal deviate of the pair available?
+      IF (FIRST) THEN
+
+*     No - generate two random numbers inside unit circle
+         R = 2.0
+         DO WHILE (R.GE.1.0)
+
+*        Generate two random numbers in range +/- 1
+#if HAVE_RAND
+            X = 2.0*RAND(0)-1.0
+            Y = 2.0*RAND(0)-1.0
+#elif HAVE_RANDOM
+            X = 2.0*RAN(ISEED)-1.0
+            Y = 2.0*RAN(ISEED)-1.0
+#endif
+
+*        Try again if not in unit circle
+            R = X*X+Y*Y
+         END DO
+
+*     Box-Muller transformation, generating two deviates
+         W = SQRT(-2.0*LOG(R)/MAX(R,1E-20))
+         GNEXT = X*W
+         G = Y*W
+
+*     Set flag to indicate availability of next deviate
+         FIRST = .FALSE.
+      ELSE
+
+*     Return second deviate of the pair & reset flag
+         G = GNEXT
+         FIRST = .TRUE.
+      END IF
+
+*  Scale the deviate by the required standard deviation
+      sla_GRESID = G*S
+
+      END
diff --git a/h2e.f b/h2e.f
new file mode 100644
index 0000000000000000000000000000000000000000..51d63dd201b436f6e3ca08e5480ecc54a582e5dd
--- /dev/null
+++ b/h2e.f
@@ -0,0 +1,100 @@
+      SUBROUTINE sla_H2E ( AZ, EL, PHI, HA, DEC )
+*+
+*     - - - - -
+*      D E 2 H
+*     - - - - -
+*
+*  Horizon to equatorial coordinates:  Az,El to HA,Dec
+*
+*  (single precision)
+*
+*  Given:
+*     AZ      r     azimuth
+*     EL      r     elevation
+*     PHI     r     observatory latitude
+*
+*  Returned:
+*     HA      r     hour angle
+*     DEC     r     declination
+*
+*  Notes:
+*
+*  1)  All the arguments are angles in radians.
+*
+*  2)  The sign convention for azimuth is north zero, east +pi/2.
+*
+*  3)  HA is returned in the range +/-pi.  Declination is returned
+*      in the range +/-pi/2.
+*
+*  4)  The latitude is (in principle) geodetic.  In critical
+*      applications, corrections for polar motion should be applied.
+*
+*  5)  In some applications it will be important to specify the
+*      correct type of elevation in order to produce the required
+*      type of HA,Dec.  In particular, it may be important to
+*      distinguish between the elevation as affected by refraction,
+*      which will yield the "observed" HA,Dec, and the elevation
+*      in vacuo, which will yield the "topocentric" HA,Dec.  If the
+*      effects of diurnal aberration can be neglected, the
+*      topocentric HA,Dec may be used as an approximation to the
+*      "apparent" HA,Dec.
+*
+*  6)  No range checking of arguments is done.
+*
+*  7)  In applications which involve many such calculations, rather
+*      than calling the present routine it will be more efficient to
+*      use inline code, having previously computed fixed terms such
+*      as sine and cosine of latitude.
+*
+*  Last revision:   11 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL AZ, EL, PHI, HA, DEC
+
+      DOUBLE PRECISION SA, CA, SE, CE, SP, CP, X, Y, Z, R
+
+
+*  Useful trig functions.
+      SA = SIN(AZ)
+      CA = COS(AZ)
+      SE = SIN(EL)
+      CE = COS(EL)
+      SP = SIN(PHI)
+      CP = COS(PHI)
+
+*  HA,Dec as x,y,z.
+      X = -CA*CE*SP+SE*CP
+      Y = -SA*CE
+      Z = CA*CE*CP+SE*SP
+
+*  To HA,Dec.
+      R = SQRT(X*X+Y*Y)
+      IF (R.EQ.0.0) THEN
+         HA = 0.0
+      ELSE
+         HA = REAL(ATAN2(Y,X))
+      END IF
+      DEC = REAL(ATAN2(Z,R))
+
+      END
diff --git a/h2fk5.f b/h2fk5.f
new file mode 100644
index 0000000000000000000000000000000000000000..559dda6915a2341ec84ebde6e8acc797bb913e5b
--- /dev/null
+++ b/h2fk5.f
@@ -0,0 +1,126 @@
+      SUBROUTINE sla_H2FK5 (RH,DH,DRH,DDH,R5,D5,DR5,DD5)
+*+
+*     - - - - - -
+*      H 2 F K 5
+*     - - - - - -
+*
+*  Transform Hipparcos star data into the FK5 (J2000) system.
+*
+*  (double precision)
+*
+*  This routine transforms Hipparcos star positions and proper
+*  motions into FK5 J2000.
+*
+*  Given (all Hipparcos, epoch J2000):
+*     RH        d      RA (radians)
+*     DH        d      Dec (radians)
+*     DRH       d      proper motion in RA (dRA/dt, rad/Jyear)
+*     DDH       d      proper motion in Dec (dDec/dt, rad/Jyear)
+*
+*  Returned (all FK5, equinox J2000, epoch J2000):
+*     R5        d      RA (radians)
+*     D5        d      Dec (radians)
+*     DR5       d      proper motion in RA (dRA/dt, rad/Jyear)
+*     DD5       d      proper motion in Dec (dDec/dt, rad/Jyear)
+*
+*  Called:  sla_DS2C6, sla_DAV2M, sla_DMXV, sla_DIMXV, sla_DVXV,
+*           sla_DC62S, sla_DRANRM
+*
+*  Notes:
+*
+*  1)  The proper motions in RA are dRA/dt rather than
+*      cos(Dec)*dRA/dt, and are per year rather than per century.
+*
+*  2)  The FK5 to Hipparcos transformation consists of a pure
+*      rotation and spin;  zonal errors in the FK5 catalogue are
+*      not taken into account.
+*
+*  3)  The published orientation and spin components are interpreted
+*      as "axial vectors".  An axial vector points at the pole of the
+*      rotation and its length is the amount of rotation in radians.
+*
+*  4)  See also sla_FK52H, sla_FK5HZ, sla_HFK5Z.
+*
+*  Reference:
+*
+*     M.Feissel & F.Mignard, Astron. Astrophys. 331, L33-L36 (1998).
+*
+*  P.T.Wallace   Starlink   22 June 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RH,DH,DRH,DDH,R5,D5,DR5,DD5
+
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+*  FK5 to Hipparcos orientation and spin (radians, radians/year)
+      DOUBLE PRECISION EPX,EPY,EPZ
+      DOUBLE PRECISION OMX,OMY,OMZ
+
+      PARAMETER ( EPX = -19.9D-3 * AS2R,
+     :            EPY =  -9.1D-3 * AS2R,
+     :            EPZ = +22.9D-3 * AS2R )
+
+      PARAMETER ( OMX = -0.30D-3 * AS2R,
+     :            OMY = +0.60D-3 * AS2R,
+     :            OMZ = +0.70D-3 * AS2R )
+
+      DOUBLE PRECISION PVH(6),ORTN(3),R5H(3,3),S5(3),SH(3),VV(3),
+     :                 PV5(6),W,R,V
+      INTEGER I
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+*  Hipparcos barycentric position/velocity 6-vector (normalized).
+      CALL sla_DS2C6(RH,DH,1D0,DRH,DDH,0D0,PVH)
+
+*  FK5 to Hipparcos orientation matrix.
+      ORTN(1) = EPX
+      ORTN(2) = EPY
+      ORTN(3) = EPZ
+      CALL sla_DAV2M(ORTN,R5H)
+
+*  Hipparcos wrt FK5 spin vector.
+      S5(1) = OMX
+      S5(2) = OMY
+      S5(3) = OMZ
+
+*  Rotate the spin vector into the Hipparcos frame.
+      CALL sla_DMXV(R5H,S5,SH)
+
+*  De-orient & de-spin the 6-vector into FK5 J2000.
+      CALL sla_DIMXV(R5H,PVH,PV5)
+      CALL sla_DVXV(PVH,SH,VV)
+      DO I=1,3
+         VV(I) = PVH(I+3)-VV(I)
+      END DO
+      CALL sla_DIMXV(R5H,VV,PV5(4))
+
+*  FK5 6-vector to spherical.
+      CALL sla_DC62S(PV5,W,D5,R,DR5,DD5,V)
+      R5 = sla_DRANRM(W)
+
+      END
diff --git a/hfk5z.f b/hfk5z.f
new file mode 100644
index 0000000000000000000000000000000000000000..49c33e4d85ca04557ce44a4f23e9550b725532ea
--- /dev/null
+++ b/hfk5z.f
@@ -0,0 +1,139 @@
+      SUBROUTINE sla_HFK5Z (RH,DH,EPOCH,R5,D5,DR5,DD5)
+*+
+*     - - - - - -
+*      H F K 5 Z
+*     - - - - - -
+*
+*  Transform a Hipparcos star position into FK5 J2000, assuming
+*  zero Hipparcos proper motion.
+*
+*  (double precision)
+*
+*  Given:
+*     RH        d      Hipparcos RA (radians)
+*     DH        d      Hipparcos Dec (radians)
+*     EPOCH     d      Julian epoch (TDB)
+*
+*  Returned (all FK5, equinox J2000, epoch EPOCH):
+*     R5        d      RA (radians)
+*     D5        d      Dec (radians)
+*
+*  Called:  sla_DCS2C, sla_DAV2M, sla_DMXV, sla_DMXM,
+*           sla_DIMXV, sla_DVXV, sla_DC62S, sla_DRANRM
+*
+*  Notes:
+*
+*  1)  The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
+*
+*  2)  The FK5 to Hipparcos transformation consists of a pure
+*      rotation and spin;  zonal errors in the FK5 catalogue are
+*      not taken into account.
+*
+*  3)  The published orientation and spin components are interpreted
+*      as "axial vectors".  An axial vector points at the pole of the
+*      rotation and its length is the amount of rotation in radians.
+*
+*  4)  It was the intention that Hipparcos should be a close
+*      approximation to an inertial frame, so that distant objects
+*      have zero proper motion;  such objects have (in general)
+*      non-zero proper motion in FK5, and this routine returns those
+*      fictitious proper motions.
+*
+*  5)  The position returned by this routine is in the FK5 J2000
+*      reference frame but at Julian epoch EPOCH.
+*
+*  6)  See also sla_FK52H, sla_H2FK5, sla_FK5ZHZ.
+*
+*  Reference:
+*
+*     M.Feissel & F.Mignard, Astron. Astrophys. 331, L33-L36 (1998).
+*
+*  P.T.Wallace   Starlink   30 December 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RH,DH,EPOCH,R5,D5,DR5,DD5
+
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+*  FK5 to Hipparcos orientation and spin (radians, radians/year)
+      DOUBLE PRECISION EPX,EPY,EPZ
+      DOUBLE PRECISION OMX,OMY,OMZ
+
+      PARAMETER ( EPX = -19.9D-3 * AS2R,
+     :            EPY =  -9.1D-3 * AS2R,
+     :            EPZ = +22.9D-3 * AS2R )
+
+      PARAMETER ( OMX = -0.30D-3 * AS2R,
+     :            OMY = +0.60D-3 * AS2R,
+     :            OMZ = +0.70D-3 * AS2R )
+
+      DOUBLE PRECISION PH(3),ORTN(3),R5H(3,3),S5(3),SH(3),T,VST(3),
+     :                 RST(3,3),R5HT(3,3),PV5E(6),VV(3),W,R,V
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+*  Hipparcos barycentric position vector (normalized).
+      CALL sla_DCS2C(RH,DH,PH)
+
+*  FK5 to Hipparcos orientation matrix.
+      ORTN(1) = EPX
+      ORTN(2) = EPY
+      ORTN(3) = EPZ
+      CALL sla_DAV2M(ORTN,R5H)
+
+*  Hipparcos wrt FK5 spin vector.
+      S5(1) = OMX
+      S5(2) = OMY
+      S5(3) = OMZ
+
+*  Rotate the spin vector into the Hipparcos frame.
+      CALL sla_DMXV(R5H,S5,SH)
+
+*  Time interval from J2000 to epoch.
+      T = EPOCH-2000D0
+
+*  Axial vector:  accumulated Hipparcos wrt FK5 spin over that interval.
+      VST(1) = OMX*T
+      VST(2) = OMY*T
+      VST(3) = OMZ*T
+
+*  Express the accumulated spin as a rotation matrix.
+      CALL sla_DAV2M(VST,RST)
+
+*  Rotation matrix:  accumulated spin, then FK5 to Hipparcos.
+      CALL sla_DMXM(R5H,RST,R5HT)
+
+*  De-orient & de-spin the vector into FK5 J2000 at epoch.
+      CALL sla_DIMXV(R5HT,PH,PV5E)
+      CALL sla_DVXV(SH,PH,VV)
+      CALL sla_DIMXV(R5HT,VV,PV5E(4))
+
+*  FK5 position/velocity 6-vector to spherical.
+      CALL sla_DC62S(PV5E,W,D5,R,DR5,DD5,V)
+      R5 = sla_DRANRM(W)
+
+      END
diff --git a/idchf.f b/idchf.f
new file mode 100644
index 0000000000000000000000000000000000000000..c3061e27891934515f64a3259c3b2797608e1167
--- /dev/null
+++ b/idchf.f
@@ -0,0 +1,111 @@
+      SUBROUTINE sla__IDCHF (STRING, NPTR, NVEC, NDIGIT, DIGIT)
+*+
+*     - - - - - -
+*      I D C H F
+*     - - - - - -
+*
+*  Internal routine used by DFLTIN
+*
+*  Identify next character in string
+*
+*  Given:
+*     STRING      char        string
+*     NPTR        int         pointer to character to be identified
+*
+*  Returned:
+*     NPTR        int         incremented unless end of field
+*     NVEC        int         vector for identified character
+*     NDIGIT      int         0-9 if character was a numeral
+*     DIGIT       double      equivalent of NDIGIT
+*
+*     NVEC takes the following values:
+*
+*      1     0-9
+*      2     space or TAB   !!! n.b. ASCII TAB assumed !!!
+*      3     D,d,E or e
+*      4     .
+*      5     +
+*      6     -
+*      7     ,
+*      8     else
+*      9     outside field
+*
+*  If the character is not 0-9, NDIGIT and DIGIT are either not
+*  altered or are set to arbitrary values.
+*
+*  P.T.Wallace   Starlink   22 December 1992
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER NPTR,NVEC,NDIGIT
+      DOUBLE PRECISION DIGIT
+
+      CHARACTER K
+      INTEGER NCHAR
+
+*  Character/vector tables
+      INTEGER NCREC
+      PARAMETER (NCREC=19)
+      CHARACTER KCTAB(NCREC)
+      INTEGER KVTAB(NCREC)
+      DATA KCTAB/'0','1','2','3','4','5','6','7','8','9',
+     :           ' ','D','d','E','e','.','+','-',','/
+      DATA KVTAB/10*1,2,4*3,4,5,6,7/
+
+
+*  Handle pointer outside field
+      IF (NPTR.LT.1.OR.NPTR.GT.LEN(STRING)) THEN
+         NVEC=9
+      ELSE
+
+*     Not end of field: identify the character
+         K=STRING(NPTR:NPTR)
+         DO NCHAR=1,NCREC
+            IF (K.EQ.KCTAB(NCHAR)) THEN
+
+*           Recognized
+               NVEC=KVTAB(NCHAR)
+               NDIGIT=NCHAR-1
+               DIGIT=DBLE(NDIGIT)
+               GO TO 2300
+            END IF
+         END DO
+
+*     Not recognized: check for TAB    !!! n.b. ASCII assumed !!!
+         IF (K.EQ.CHAR(9)) THEN
+
+*        TAB: treat as space
+            NVEC=2
+         ELSE
+
+*        Unrecognized
+            NVEC=8
+         END IF
+
+*     Increment pointer
+ 2300    CONTINUE
+         NPTR=NPTR+1
+      END IF
+
+      END
diff --git a/idchi.f b/idchi.f
new file mode 100644
index 0000000000000000000000000000000000000000..9d56d864ae376d74a43a66578c35ab9ae4a4e010
--- /dev/null
+++ b/idchi.f
@@ -0,0 +1,108 @@
+      SUBROUTINE sla__IDCHI (STRING, NPTR, NVEC, DIGIT)
+*+
+*     - - - - - -
+*      I D C H I
+*     - - - - - -
+*
+*  Internal routine used by INTIN
+*
+*  Identify next character in string
+*
+*  Given:
+*     STRING      char        string
+*     NPTR        int         pointer to character to be identified
+*
+*  Returned:
+*     NPTR        int         incremented unless end of field
+*     NVEC        int         vector for identified character
+*     DIGIT       double      double precision digit if 0-9
+*
+*     NVEC takes the following values:
+*
+*      1     0-9
+*      2     space or TAB   !!! n.b. ASCII TAB assumed !!!
+*      3     +
+*      4     -
+*      5     ,
+*      6     else
+*      7     outside string
+*
+*  If the character is not 0-9, DIGIT is either unaltered or
+*  is set to an arbitrary value.
+*
+*  P.T.Wallace   Starlink   22 December 1992
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER NPTR,NVEC
+      DOUBLE PRECISION DIGIT
+
+      CHARACTER K
+      INTEGER NCHAR
+
+*  Character/vector tables
+      INTEGER NCREC
+      PARAMETER (NCREC=14)
+      CHARACTER KCTAB(NCREC)
+      INTEGER KVTAB(NCREC)
+      DATA KCTAB/'0','1','2','3','4','5','6','7','8','9',
+     :           ' ', '+','-',','/
+      DATA KVTAB/10*1,2,3,4,5/
+
+
+
+*  Handle pointer outside field
+      IF (NPTR.LT.1.OR.NPTR.GT.LEN(STRING)) THEN
+         NVEC=7
+      ELSE
+
+*     Not end of field: identify character
+         K=STRING(NPTR:NPTR)
+         DO NCHAR=1,NCREC
+            IF (K.EQ.KCTAB(NCHAR)) THEN
+
+*           Recognized
+               NVEC=KVTAB(NCHAR)
+               DIGIT=DBLE(NCHAR-1)
+               GO TO 2300
+            END IF
+         END DO
+
+*     Not recognized: check for TAB   !!! n.b. ASCII assumed !!!
+         IF (K.EQ.CHAR(9)) THEN
+
+*        TAB: treat as space
+            NVEC=2
+         ELSE
+
+*        Unrecognized
+            NVEC=6
+         END IF
+
+*     Increment pointer
+ 2300    CONTINUE
+         NPTR=NPTR+1
+      END IF
+
+      END
diff --git a/imxv.f b/imxv.f
new file mode 100644
index 0000000000000000000000000000000000000000..7f9042cfd260eceb9a13346deb3c648be95e6742
--- /dev/null
+++ b/imxv.f
@@ -0,0 +1,68 @@
+      SUBROUTINE sla_IMXV (RM, VA, VB)
+*+
+*     - - - - -
+*      I M X V
+*     - - - - -
+*
+*  Performs the 3-D backward unitary transformation:
+*
+*     vector VB = (inverse of matrix RM) * vector VA
+*
+*  (single precision)
+*
+*  (n.b.  the matrix must be unitary, as this routine assumes that
+*   the inverse and transpose are identical)
+*
+*  Given:
+*     RM       real(3,3)    matrix
+*     VA       real(3)      vector
+*
+*  Returned:
+*     VB       real(3)      result vector
+*
+*  P.T.Wallace   Starlink   November 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL RM(3,3),VA(3),VB(3)
+
+      INTEGER I,J
+      REAL W,VW(3)
+
+
+
+*  Inverse of matrix RM * vector VA -> vector VW
+      DO J=1,3
+         W=0.0
+         DO I=1,3
+            W=W+RM(I,J)*VA(I)
+         END DO
+         VW(J)=W
+      END DO
+
+*  Vector VW -> vector VB
+      DO J=1,3
+         VB(J)=VW(J)
+      END DO
+
+      END
diff --git a/install-sh b/install-sh
new file mode 100755
index 0000000000000000000000000000000000000000..4d4a9519eaf88b18fb157dfe5fae59c1c5d005c7
--- /dev/null
+++ b/install-sh
@@ -0,0 +1,323 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2005-05-14.22
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c         (ignored)
+-d         create directories instead of installing files.
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
+--help     display this help and exit.
+--version  display version info and exit.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+  case $1 in
+    -c) shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t) dstarg=$2
+	shift
+	shift
+	continue;;
+
+    -T) no_target_directory=true
+	shift
+	continue;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+	# When -t is used, the destination is already specified.
+	test -n "$dir_arg$dstarg" && break
+        # Otherwise, the last argument is the destination.  Remove it from $@.
+	for arg
+	do
+          if test -n "$dstarg"; then
+	    # $@ is not empty: it contains at least $arg.
+	    set fnord "$@" "$dstarg"
+	    shift # fnord
+	  fi
+	  shift # arg
+	  dstarg=$arg
+	done
+	break;;
+  esac
+done
+
+if test -z "$1"; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src ;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    src=
+
+    if test -d "$dst"; then
+      mkdircmd=:
+      chmodcmd=
+    else
+      mkdircmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dstarg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dstarg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst ;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dstarg: Is a directory" >&2
+	exit 1
+      fi
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+  # Make sure that the destination directory exists.
+
+  # Skip lots of stat calls in the usual case.
+  if test ! -d "$dstdir"; then
+    defaultIFS='
+	 '
+    IFS="${IFS-$defaultIFS}"
+
+    oIFS=$IFS
+    # Some sh's can't handle IFS=/ for some reason.
+    IFS='%'
+    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    shift
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      if test ! -d "$pathcomp"; then
+        $mkdirprog "$pathcomp"
+	# mkdir can fail with a `File exist' error in case several
+	# install-sh are creating the directory concurrently.  This
+	# is OK.
+	test -d "$pathcomp" || exit
+      fi
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $mkdircmd "$dst" \
+      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+  else
+    dstfile=`basename "$dst"`
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+    # Now rename the file to the real destination.
+    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+      || {
+	   # The rename failed, perhaps because mv can't rename something else
+	   # to itself, or perhaps because mv is so ancient that it does not
+	   # support -f.
+
+	   # Now remove or move aside any old file at destination location.
+	   # We try this two ways since rm can't unlink itself on some
+	   # systems and the destination file might be busy for other
+	   # reasons.  In this case, the final cleanup might fail but the new
+	   # file should still install successfully.
+	   {
+	     if test -f "$dstdir/$dstfile"; then
+	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+	       || {
+		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		 (exit 1); exit 1
+	       }
+	     else
+	       :
+	     fi
+	   } &&
+
+	   # Now rename the file to the real destination.
+	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+	 }
+    }
+  fi || { (exit 1); exit 1; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit 0
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/intin.f b/intin.f
new file mode 100644
index 0000000000000000000000000000000000000000..fe056bc8ed37a69bdbc09d7312c8a4af6cce131a
--- /dev/null
+++ b/intin.f
@@ -0,0 +1,193 @@
+      SUBROUTINE sla_INTIN (STRING, NSTRT, IRESLT, JFLAG)
+*+
+*     - - - - - -
+*      I N T I N
+*     - - - - - -
+*
+*  Convert free-format input into an integer
+*
+*  Given:
+*     STRING     c     string containing number to be decoded
+*     NSTRT      i     pointer to where decoding is to start
+*     IRESLT     i     current value of result
+*
+*  Returned:
+*     NSTRT      i      advanced to next number
+*     IRESLT     i      result
+*     JFLAG      i      status: -1 = -OK, 0 = +OK, 1 = null, 2 = error
+*
+*  Called:  sla__IDCHI
+*
+*  Notes:
+*
+*     1     The reason INTIN has separate OK status values for +
+*           and - is to enable minus zero to be detected.   This is
+*           of crucial importance when decoding mixed-radix numbers.
+*           For example, an angle expressed as deg, arcmin, arcsec
+*           may have a leading minus sign but a zero degrees field.
+*
+*     2     A TAB is interpreted as a space.
+*
+*     3     The basic format is the sequence of fields #^, where
+*           # is a sign character + or -, and ^ means a string of
+*           decimal digits.
+*
+*     4     Spaces:
+*
+*             .  Leading spaces are ignored.
+*
+*             .  Spaces between the sign and the number are allowed.
+*
+*             .  Trailing spaces are ignored;  the first signifies
+*                end of decoding and subsequent ones are skipped.
+*
+*     5     Delimiters:
+*
+*             .  Any character other than +,-,0-9 or space may be
+*                used to signal the end of the number and terminate
+*                decoding.
+*
+*             .  Comma is recognized by INTIN as a special case;  it
+*                is skipped, leaving the pointer on the next character.
+*                See 9, below.
+*
+*     6     The sign is optional.  The default is +.
+*
+*     7     A "null result" occurs when the string of characters being
+*           decoded does not begin with +,- or 0-9, or consists
+*           entirely of spaces.  When this condition is detected, JFLAG
+*           is set to 1 and IRESLT is left untouched.
+*
+*     8     NSTRT = 1 for the first character in the string.
+*
+*     9     On return from INTIN, NSTRT is set ready for the next
+*           decode - following trailing blanks and any comma.  If a
+*           delimiter other than comma is being used, NSTRT must be
+*           incremented before the next call to INTIN, otherwise
+*           all subsequent calls will return a null result.
+*
+*     10    Errors (JFLAG=2) occur when:
+*
+*             .  there is a + or - but no number;  or
+*
+*             .  the number is greater than BIG (defined below).
+*
+*     11    When an error has been detected, NSTRT is left
+*           pointing to the character following the last
+*           one used before the error came to light.
+*
+*     12    See also FLOTIN and DFLTIN.
+*
+*  P.T.Wallace   Starlink   27 April 1998
+*
+*  Copyright (C) 1998 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) STRING
+      INTEGER NSTRT,IRESLT,JFLAG
+
+*  Maximum allowed value
+      DOUBLE PRECISION BIG
+      PARAMETER (BIG=2147483647D0)
+
+      INTEGER JPTR,MSIGN,NVEC,J
+      DOUBLE PRECISION DRES,DIGIT
+
+
+
+*  Current character
+      JPTR=NSTRT
+
+*  Set defaults
+      DRES=0D0
+      MSIGN=1
+
+*  Look for sign
+ 100  CONTINUE
+      CALL sla__IDCHI(STRING,JPTR,NVEC,DIGIT)
+      GO TO ( 400, 100,  300,  200, 9110, 9100, 9110),NVEC
+*             0-9   SP     +     -     ,   ELSE   END
+
+*  Negative
+ 200  CONTINUE
+      MSIGN=-1
+
+*  Look for first decimal
+ 300  CONTINUE
+      CALL sla__IDCHI(STRING,JPTR,NVEC,DIGIT)
+      GO TO ( 400, 300, 9200, 9200, 9200, 9200, 9210),NVEC
+*             0-9   SP     +     -     ,   ELSE   END
+
+*  Accept decimals
+ 400  CONTINUE
+      DRES=DRES*1D1+DIGIT
+
+*  Test for overflow
+      IF (DRES.GT.BIG) GO TO 9200
+
+*  Look for subsequent decimals
+      CALL sla__IDCHI(STRING,JPTR,NVEC,DIGIT)
+      GO TO ( 400, 1610, 1600, 1600, 1600, 1600, 1610),NVEC
+*             0-9   SP     +     -     ,   ELSE   END
+
+*  Get result & status
+ 1600 CONTINUE
+      JPTR=JPTR-1
+ 1610 CONTINUE
+      J=0
+      IF (MSIGN.EQ.1) GO TO 1620
+      J=-1
+      DRES=-DRES
+ 1620 CONTINUE
+      IRESLT=NINT(DRES)
+
+*  Skip to end of field
+ 1630 CONTINUE
+      CALL sla__IDCHI(STRING,JPTR,NVEC,DIGIT)
+      GO TO (1720, 1630, 1720, 1720, 9900, 1720, 9900),NVEC
+*             0-9   SP     +     -     ,   ELSE   END
+
+ 1720 CONTINUE
+      JPTR=JPTR-1
+      GO TO 9900
+
+*  Exits
+
+*  Null field
+ 9100 CONTINUE
+      JPTR=JPTR-1
+ 9110 CONTINUE
+      J=1
+      GO TO 9900
+
+*  Errors
+ 9200 CONTINUE
+      JPTR=JPTR-1
+ 9210 CONTINUE
+      J=2
+
+*  Return
+ 9900 CONTINUE
+      NSTRT=JPTR
+      JFLAG=J
+
+      END
diff --git a/invf.f b/invf.f
new file mode 100644
index 0000000000000000000000000000000000000000..3d6a29cd5fae44dd257d9d091da775cc2a656bd0
--- /dev/null
+++ b/invf.f
@@ -0,0 +1,105 @@
+      SUBROUTINE sla_INVF (FWDS,BKWDS,J)
+*+
+*     - - - - -
+*      I N V F
+*     - - - - -
+*
+*  Invert a linear model of the type produced by the sla_FITXY routine.
+*
+*  Given:
+*     FWDS    d(6)      model coefficients
+*
+*  Returned:
+*     BKWDS   d(6)      inverse model
+*     J        i        status:  0 = OK, -1 = no inverse
+*
+*  The models relate two sets of [X,Y] coordinates as follows.
+*  Naming the elements of FWDS:
+*
+*     FWDS(1) = A
+*     FWDS(2) = B
+*     FWDS(3) = C
+*     FWDS(4) = D
+*     FWDS(5) = E
+*     FWDS(6) = F
+*
+*  where two sets of coordinates [X1,Y1] and [X2,Y1] are related
+*  thus:
+*
+*     X2 = A + B*X1 + C*Y1
+*     Y2 = D + E*X1 + F*Y1
+*
+*  the present routine generates a new set of coefficients:
+*
+*     BKWDS(1) = P
+*     BKWDS(2) = Q
+*     BKWDS(3) = R
+*     BKWDS(4) = S
+*     BKWDS(5) = T
+*     BKWDS(6) = U
+*
+*  such that:
+*
+*     X1 = P + Q*X2 + R*Y2
+*     Y1 = S + T*X2 + U*Y2
+*
+*  Two successive calls to sla_INVF will thus deliver a set
+*  of coefficients equal to the starting values.
+*
+*  To comply with the ANSI Fortran standard, FWDS and BKWDS must
+*  not be the same array, even though the routine is coded to
+*  work on many platforms even if this rule is violated.
+*
+*  See also sla_FITXY, sla_PXY, sla_XY2XY, sla_DCMPF
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION FWDS(6),BKWDS(6)
+      INTEGER J
+
+      DOUBLE PRECISION A,B,C,D,E,F,DET
+
+
+
+      A=FWDS(1)
+      B=FWDS(2)
+      C=FWDS(3)
+      D=FWDS(4)
+      E=FWDS(5)
+      F=FWDS(6)
+      DET=B*F-C*E
+      IF (DET.NE.0D0) THEN
+         BKWDS(1)=(C*D-A*F)/DET
+         BKWDS(2)=F/DET
+         BKWDS(3)=-C/DET
+         BKWDS(4)=(A*E-B*D)/DET
+         BKWDS(5)=-E/DET
+         BKWDS(6)=B/DET
+         J=0
+      ELSE
+         J=-1
+      END IF
+
+      END
diff --git a/kbj.f b/kbj.f
new file mode 100644
index 0000000000000000000000000000000000000000..45270d1781554267ce32adca95a2ccd3db625193
--- /dev/null
+++ b/kbj.f
@@ -0,0 +1,73 @@
+      SUBROUTINE sla_KBJ (JB, E, K, J)
+*+
+*     - - - -
+*      K B J
+*     - - - -
+*
+*  Select epoch prefix 'B' or 'J'
+*
+*  Given:
+*     JB     int     sla_DBJIN prefix status:  0=none, 1='B', 2='J'
+*     E      dp      epoch - Besselian or Julian
+*
+*  Returned:
+*     K      char    'B' or 'J'
+*     J      int     status:  0=OK
+*
+*  If JB=0, B is assumed for E < 1984D0, otherwise J.
+*
+*  P.T.Wallace   Starlink   31 July 1989
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER JB
+      DOUBLE PRECISION E
+      CHARACTER K*(*)
+      INTEGER J
+
+*  Preset status
+      J=0
+
+*  If prefix given expressly, use it
+      IF (JB.EQ.1) THEN
+         K='B'
+      ELSE IF (JB.EQ.2) THEN
+         K='J'
+
+*  If no prefix, examine the epoch
+      ELSE IF (JB.EQ.0) THEN
+
+*     If epoch is pre-1984.0, assume Besselian;  otherwise Julian
+         IF (E.LT.1984D0) THEN
+            K='B'
+         ELSE
+            K='J'
+         END IF
+
+*  If illegal prefix, return error status
+      ELSE
+         K=' '
+         J=1
+      END IF
+
+      END
diff --git a/lib b/lib
new file mode 120000
index 0000000000000000000000000000000000000000..9e696c686fefa54eae64fbc8e02878b90364e02a
--- /dev/null
+++ b/lib
@@ -0,0 +1 @@
+.libs
\ No newline at end of file
diff --git a/libtool b/libtool
new file mode 100755
index 0000000000000000000000000000000000000000..aa918c1d4bece46d214d956089e997b7c210d38b
--- /dev/null
+++ b/libtool
@@ -0,0 +1,7456 @@
+#! /bin/sh
+
+# libtoolT - Provide generalized library-building support services.
+# Generated automatically by  (GNU sla 2.5-4)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED="/usr/bin/sed"
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="/usr/bin/sed -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=" CXX F77"
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host cca008:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/sh"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=yes
+
+# Whether or not to build static libraries.
+build_old_libs=yes
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=no
+
+# Whether or not to optimize for fast installation.
+fast_install=yes
+
+# The host system.
+host_alias=
+host=x86_64-unknown-linux-gnu
+host_os=linux-gnu
+
+# The build system.
+build_alias=
+build=x86_64-unknown-linux-gnu
+build_os=linux-gnu
+
+# An echo program that does not interpret backslashes.
+echo="echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# A C compiler.
+LTCC="gcc"
+
+# A language-specific compiler.
+CC="gcc"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# An ERE matcher.
+EGREP="grep -E"
+
+# The linker used to build libraries.
+LD="/usr/bin/ld -m elf_x86_64"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -B"
+
+# A symbol stripping program
+STRIP="strip"
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='.so'
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC -DPIC"
+pic_mode=default
+
+# What is the maximum length of a command?
+max_cmd_len=32768
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Must we lock files when doing compilation?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\${wl}--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=linux
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\${libname}\${release}\${shared_ext}\$major"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build and install a shared archive.
+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
+  cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
+  \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
+	  \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
+postinstall_cmds=""
+postuninstall_cmds=""
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=""
+module_expsym_cmds=""
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=""
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=""
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=""
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="pass_all"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="\$MAGIC_CMD"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ 	]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ 	][ 	]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=LD_RUN_PATH
+
+# This is the shared library path variable.
+shlibpath_var=LD_LIBRARY_PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=no
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=yes
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
+
+# If ld is used when linking, flag to hardcode $libdir into
+# a binary during linking. This must work even if $libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=""
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=no
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=no
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH  LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=" /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/5.5.0/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../x86_64-unknown-linux-gnu/lib/../lib64/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../x86_64-unknown-linux-gnu/5.5.0/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../lib64/ /lib/x86_64-unknown-linux-gnu/5.5.0/ /lib/../lib64/ /usr/lib/x86_64-unknown-linux-gnu/5.5.0/ /usr/lib/../lib64/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../x86_64-unknown-linux-gnu/lib/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../ /lib/ /usr/lib/"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/atlas /usr/lib64/atlas /usr/lib64/dyninst /usr/lib64/mysql /usr/lib/qt-3.3/lib /usr/lib64/qt-3.3/lib /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac7 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-isvc /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64/openmanage/smpop /opt/dell/srvadmin/lib64 /usr/lib/tcl8.5 /usr/lib64/tcl8.5 /usr/lib/xulrunner /usr/lib64/xulrunner "
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL CONFIG
+
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.18
+TIMESTAMP=" (1.1.1.4 2005/07/21 14:39:23)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+  setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+quote_scanset='[[~#^*{};<>?'"'"' 	]'
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      lipo -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    ${rm}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $run
+      ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	qlibobj="$qlibobj" ;;
+    esac
+    if test "X$libobj" != "X$qlibobj"; then
+	$echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+	exit $EXIT_FAILURE
+    fi
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	status=$?
+	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+        darwin_framework)
+	  compiler_flags="$compiler_flags $arg"
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+        prev=darwin_framework
+        compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+        continue
+        ;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		  valid_a_lib=yes
+		fi
+		;;
+	      pass_all)
+		valid_a_lib=yes
+		;;
+            esac
+	    if test "$valid_a_lib" != yes; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $dir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case "$libdir" in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case "$libdir" in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			tmp_deplibs="$tmp_deplibs $test_deplib"
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  fi
+	fi
+	
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*"` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
+	    cwrapper=`$echo ${output}.exe`
+	    $rm $cwrappersource $cwrapper
+	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+	  # we should really use a build-platform specific compiler
+	  # here, but OTOH, the wrappers (shell script and this C one)
+	  # are only useful if you want to execute the "real" binary.
+	  # Since the "real" binary is built for $host, then this
+	  # wrapper might as well be built for $host, too.
+	  $run $LTCC -s -o $cwrapper $cwrappersource
+	  ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*"` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      save_umask=`umask`
+	      umask 0077
+	      if $mkdir "$tmpdir"; then
+	        umask $save_umask
+	      else
+	        umask $save_umask
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test "$mode" = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# Libtool was configured on host cca008:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/sh"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=yes
+
+# Whether or not to build static libraries.
+build_old_libs=yes
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=no
+
+# Whether or not to optimize for fast installation.
+fast_install=yes
+
+# The host system.
+host_alias=
+host=x86_64-unknown-linux-gnu
+host_os=linux-gnu
+
+# The build system.
+build_alias=
+build=x86_64-unknown-linux-gnu
+build_os=linux-gnu
+
+# An echo program that does not interpret backslashes.
+echo="echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# A C compiler.
+LTCC="gcc"
+
+# A language-specific compiler.
+CC="g++"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# An ERE matcher.
+EGREP="grep -E"
+
+# The linker used to build libraries.
+LD="/usr/bin/ld -m elf_x86_64"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -B"
+
+# A symbol stripping program
+STRIP="strip"
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='.so'
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC -DPIC"
+pic_mode=default
+
+# What is the maximum length of a command?
+max_cmd_len=32768
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Must we lock files when doing compilation?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=" -fno-builtin"
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\${wl}--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=linux
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\${libname}\${release}\${shared_ext}\$major"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build and install a shared archive.
+archive_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="\$CC -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib"
+postinstall_cmds=""
+postuninstall_cmds=""
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=""
+module_expsym_cmds=""
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects="/lib/../lib64/crti.o /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/crtbeginS.o"
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects="/pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/crtendS.o /lib/../lib64/crtn.o"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path="-L/pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0 -L/pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../.."
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="pass_all"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="\$MAGIC_CMD"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ 	]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ 	][ 	]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=LD_RUN_PATH
+
+# This is the shared library path variable.
+shlibpath_var=LD_LIBRARY_PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=no
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=yes
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
+
+# If ld is used when linking, flag to hardcode $libdir into
+# a binary during linking. This must work even if $libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=""
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=no
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=no
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=" /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/5.5.0/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../x86_64-unknown-linux-gnu/lib/../lib64/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../x86_64-unknown-linux-gnu/5.5.0/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../lib64/ /lib/x86_64-unknown-linux-gnu/5.5.0/ /lib/../lib64/ /usr/lib/x86_64-unknown-linux-gnu/5.5.0/ /usr/lib/../lib64/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../../x86_64-unknown-linux-gnu/lib/ /pbs/software/centos-7-x86_64/gcc/5.5.0/lib/gcc/x86_64-unknown-linux-gnu/5.5.0/../../../ /lib/ /usr/lib/"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/atlas /usr/lib64/atlas /usr/lib64/dyninst /usr/lib64/mysql /usr/lib/qt-3.3/lib /usr/lib64/qt-3.3/lib /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac7 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-isvc /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64/openmanage/smpop /opt/dell/srvadmin/lib64 /usr/lib/tcl8.5 /usr/lib64/tcl8.5 /usr/lib/xulrunner /usr/lib64/xulrunner "
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=""
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL TAG CONFIG: CXX
+
+# ### BEGIN LIBTOOL TAG CONFIG: F77
+
+# Libtool was configured on host cca008:
+
+# Shell to use when invoking shell scripts.
+SHELL="/bin/sh"
+
+# Whether or not to build shared libraries.
+build_libtool_libs=yes
+
+# Whether or not to build static libraries.
+build_old_libs=yes
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=no
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=no
+
+# Whether or not to optimize for fast installation.
+fast_install=yes
+
+# The host system.
+host_alias=
+host=x86_64-unknown-linux-gnu
+host_os=linux-gnu
+
+# The build system.
+build_alias=
+build=x86_64-unknown-linux-gnu
+build_os=linux-gnu
+
+# An echo program that does not interpret backslashes.
+echo="echo"
+
+# The archiver.
+AR="ar"
+AR_FLAGS="cru"
+
+# A C compiler.
+LTCC="gcc"
+
+# A language-specific compiler.
+CC="f95"
+
+# Is the compiler the GNU C compiler?
+with_gcc=yes
+
+# An ERE matcher.
+EGREP="grep -E"
+
+# The linker used to build libraries.
+LD="/usr/bin/ld -m elf_x86_64"
+
+# Whether we need hard or soft links.
+LN_S="ln -s"
+
+# A BSD-compatible nm program.
+NM="/usr/bin/nm -B"
+
+# A symbol stripping program
+STRIP="strip"
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=file
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="dlltool"
+
+# Used on cygwin: object dumper.
+OBJDUMP="objdump"
+
+# Used on cygwin: assembler.
+AS="as"
+
+# The name of the directory that contains temporary libtool files.
+objdir=.libs
+
+# How to create reloadable object files.
+reload_flag=" -r"
+reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
+
+# How to pass a linker flag through the compiler.
+wl="-Wl,"
+
+# Object file suffix (normally "o").
+objext="o"
+
+# Old archive suffix (normally "a").
+libext="a"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='.so'
+
+# Executable file suffix (normally "").
+exeext=""
+
+# Additional compiler flags for building library objects.
+pic_flag=" -fPIC"
+pic_mode=default
+
+# What is the maximum length of a command?
+max_cmd_len=32768
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o="yes"
+
+# Must we lock files when doing compilation?
+need_locks="no"
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=no
+
+# Do we need a version for libraries?
+need_version=no
+
+# Whether dlopen is supported.
+dlopen_support=unknown
+
+# Whether dlopen of programs is supported.
+dlopen_self=unknown
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=unknown
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag="-static"
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=""
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec="\${wl}--export-dynamic"
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=""
+
+# Library versioning type.
+version_type=linux
+
+# Format of library name prefix.
+libname_spec="lib\$name"
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
+
+# The coded name of the library, if different from the real name.
+soname_spec="\${libname}\${release}\${shared_ext}\$major"
+
+# Commands used to build and install an old-style archive.
+RANLIB="ranlib"
+old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
+old_postinstall_cmds="\$RANLIB \$oldlib~chmod 644 \$oldlib"
+old_postuninstall_cmds=""
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=""
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=""
+
+# Commands used to build and install a shared archive.
+archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
+archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
+  cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
+  \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
+	  \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
+postinstall_cmds=""
+postuninstall_cmds=""
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=""
+module_expsym_cmds=""
+
+# Commands to strip libraries.
+old_striplib="strip --strip-debug"
+striplib="strip --strip-unneeded"
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=""
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=""
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=""
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=""
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method="pass_all"
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd="\$MAGIC_CMD"
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=""
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=""
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=""
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe="sed -n -e 's/^.*[ 	]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ 	][ 	]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"
+
+# This is the shared library runtime path variable.
+runpath_var=LD_RUN_PATH
+
+# This is the shared library path variable.
+shlibpath_var=LD_LIBRARY_PATH
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=no
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=immediate
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=yes
+
+# Flag to hardcode $libdir into a binary during linking.
+# This must work even if $libdir does not exist.
+hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
+
+# If ld is used when linking, flag to hardcode $libdir into
+# a binary during linking. This must work even if $libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=""
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=""
+
+# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=no
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=no
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=unsupported
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=no
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=unknown
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=" /usr/lib/gcc/x86_64-redhat-linux/4.8.5/ /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/lib/x86_64-redhat-linux/4.8.5/ /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/lib/../lib64/ /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../x86_64-redhat-linux/4.8.5/ /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/ /lib/x86_64-redhat-linux/4.8.5/ /lib/../lib64/ /usr/lib/x86_64-redhat-linux/4.8.5/ /usr/lib/../lib64/ /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../x86_64-redhat-linux/lib/ /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../ /lib/ /usr/lib/"
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/atlas /usr/lib64/atlas /usr/lib64/dyninst /usr/lib64/mysql /usr/lib/qt-3.3/lib /usr/lib64/qt-3.3/lib /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-idrac7 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/srvadmin-isvc /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64 /opt/dell/srvadmin/lib64/openmanage /opt/dell/srvadmin/lib64/openmanage/smpop /opt/dell/srvadmin/lib64 /usr/lib/tcl8.5 /usr/lib64/tcl8.5 /usr/lib/xulrunner /usr/lib64/xulrunner "
+
+# Fix the shell variable $srcfile for the compiler.
+fix_srcfile_path=""
+
+# Set to yes if exported symbols are required.
+always_export_symbols=no
+
+# The commands to list exported symbols.
+export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=""
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+
+# Symbols that must always be exported.
+include_expsyms=""
+
+# ### END LIBTOOL TAG CONFIG: F77
+
diff --git a/ltmain.sh b/ltmain.sh
new file mode 100644
index 0000000000000000000000000000000000000000..57fea5a05caf79df321e9b7f9d0712eb51f671c5
--- /dev/null
+++ b/ltmain.sh
@@ -0,0 +1,6500 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.18
+TIMESTAMP=" (1.1.1.4 2005/07/21 14:39:23)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+  setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo A|tr A '\301'` in
+ A) # EBCDIC based system
+  SP2NL="tr '\100' '\n'"
+  NL2SP="tr '\r\n' '\100\100'"
+  ;;
+ *) # Assume ASCII based system
+  SP2NL="tr '\040' '\012'"
+  NL2SP="tr '\015\012' '\040\040'"
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+quote_scanset='[[~#^*{};<>?'"'"' 	]'
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      lipo -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    ${rm}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $run
+      ;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case "$arg_mode" in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	qlibobj="$qlibobj" ;;
+    esac
+    if test "X$libobj" != "X$qlibobj"; then
+	$echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+	exit $EXIT_FAILURE
+    fi
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	status=$?
+	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+        darwin_framework)
+	  compiler_flags="$compiler_flags $arg"
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework)
+        prev=darwin_framework
+        compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+        continue
+        ;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		  valid_a_lib=yes
+		fi
+		;;
+	      pass_all)
+		valid_a_lib=yes
+		;;
+            esac
+	    if test "$valid_a_lib" != yes; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $dir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case "$libdir" in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case "$libdir" in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    convenience="$convenience $dir/$old_library"
+	    old_convenience="$old_convenience $dir/$old_library"
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name="`expr $i : '-l\(.*\)'`"
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			tmp_deplibs="$tmp_deplibs $test_deplib"
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  fi
+	fi
+	
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*"` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
+	    cwrapper=`$echo ${output}.exe`
+	    $rm $cwrappersource $cwrapper
+	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+	  # we should really use a build-platform specific compiler
+	  # here, but OTOH, the wrappers (shell script and this C one)
+	  # are only useful if you want to execute the "real" binary.
+	  # Since the "real" binary is built for $host, then this
+	  # wrapper might as well be built for $host, too.
+	  $run $LTCC -s -o $cwrapper $cwrappersource
+	  ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \$progdir\\\\\$program \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \$progdir/\$program \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*"` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg="$nonopt"
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest="$arg"
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) prev="-f" ;;
+      -g) prev="-g" ;;
+      -m) prev="-m" ;;
+      -o) prev="-o" ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*) ;;
+
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest="$arg"
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # To insure that "foo" is sourced, and not "foo.exe",
+	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
+	  # which disallows the automatic-append-.exe behavior.
+	  case $build in
+	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
+	  *) wrapperdot=${wrapper} ;;
+	  esac
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . ${wrapperdot} ;;
+	  *) . ./${wrapperdot} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      save_umask=`umask`
+	      umask 0077
+	      if $mkdir "$tmpdir"; then
+	        umask $save_umask
+	      else
+	        umask $save_umask
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyways
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test "$mode" = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/m2av.f b/m2av.f
new file mode 100644
index 0000000000000000000000000000000000000000..15d324662eb7d3358efa12d6a487cc11011955a0
--- /dev/null
+++ b/m2av.f
@@ -0,0 +1,74 @@
+      SUBROUTINE sla_M2AV (RMAT, AXVEC)
+*+
+*     - - - - -
+*      M 2 A V
+*     - - - - -
+*
+*  From a rotation matrix, determine the corresponding axial vector
+*  (single precision)
+*
+*  A rotation matrix describes a rotation about some arbitrary axis,
+*  called the Euler axis.  The "axial vector" returned by this routine
+*  has the same direction as the Euler axis, and its magnitude is the
+*  amount of rotation in radians.  (The magnitude and direction can be
+*  separated by means of the routine sla_VN.)
+*
+*  Given:
+*    RMAT   r(3,3)   rotation matrix
+*
+*  Returned:
+*    AXVEC  r(3)     axial vector (radians)
+*
+*  The reference frame rotates clockwise as seen looking along
+*  the axial vector from the origin.
+*
+*  If RMAT is null, so is the result.
+*
+*  Last revision:   26 November 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL RMAT(3,3),AXVEC(3)
+
+      REAL X,Y,Z,S2,C2,PHI,F
+
+
+
+      X = RMAT(2,3)-RMAT(3,2)
+      Y = RMAT(3,1)-RMAT(1,3)
+      Z = RMAT(1,2)-RMAT(2,1)
+      S2 = SQRT(X*X+Y*Y+Z*Z)
+      IF (S2.NE.0.0) THEN
+         C2 = (RMAT(1,1)+RMAT(2,2)+RMAT(3,3)-1.0)
+         PHI = ATAN2(S2/2.0,C2/2.0)
+         F = PHI/S2
+         AXVEC(1) = X*F
+         AXVEC(2) = Y*F
+         AXVEC(3) = Z*F
+      ELSE
+         AXVEC(1) = 0.0
+         AXVEC(2) = 0.0
+         AXVEC(3) = 0.0
+      END IF
+
+      END
diff --git a/map.f b/map.f
new file mode 100644
index 0000000000000000000000000000000000000000..cf83c5f09840dea5e354c8cb4dc4163c1792f3ee
--- /dev/null
+++ b/map.f
@@ -0,0 +1,98 @@
+      SUBROUTINE sla_MAP (RM, DM, PR, PD, PX, RV, EQ, DATE, RA, DA)
+*+
+*     - - - -
+*      M A P
+*     - - - -
+*
+*  Transform star RA,Dec from mean place to geocentric apparent
+*
+*  The reference frames and timescales used are post IAU 1976.
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Given:
+*     RM,DM    dp     mean RA,Dec (rad)
+*     PR,PD    dp     proper motions:  RA,Dec changes per Julian year
+*     PX       dp     parallax (arcsec)
+*     RV       dp     radial velocity (km/sec, +ve if receding)
+*     EQ       dp     epoch and equinox of star data (Julian)
+*     DATE     dp     TDB for apparent place (JD-2400000.5)
+*
+*  Returned:
+*     RA,DA    dp     apparent RA,Dec (rad)
+*
+*  Called:
+*     sla_MAPPA       star-independent parameters
+*     sla_MAPQK       quick mean to apparent
+*
+*  Notes:
+*
+*  1)  EQ is the Julian epoch specifying both the reference frame and
+*      the epoch of the position - usually 2000.  For positions where
+*      the epoch and equinox are different, use the routine sla_PM to
+*      apply proper motion corrections before using this routine.
+*
+*  2)  The distinction between the required TDB and TT is always
+*      negligible.  Moreover, for all but the most critical
+*      applications UTC is adequate.
+*
+*  3)  The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt.
+*
+*  4)  This routine may be wasteful for some applications because it
+*      recomputes the Earth position/velocity and the precession-
+*      nutation matrix each time, and because it allows for parallax
+*      and proper motion.  Where multiple transformations are to be
+*      carried out for one epoch, a faster method is to call the
+*      sla_MAPPA routine once and then either the sla_MAPQK routine
+*      (which includes parallax and proper motion) or sla_MAPQKZ (which
+*      assumes zero parallax and proper motion).
+*
+*  5)  The accuracy is sub-milliarcsecond, limited by the
+*      precession-nutation model (IAU 1976 precession, Shirai &
+*      Fukushima 2001 forced nutation and precession corrections).
+*
+*  6)  The accuracy is further limited by the routine sla_EVP, called
+*      by sla_MAPPA, which computes the Earth position and velocity
+*      using the methods of Stumpff.  The maximum error is about
+*      0.3 mas.
+*
+*  P.T.Wallace   Starlink   17 September 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RM,DM,PR,PD,PX,RV,EQ,DATE,RA,DA
+
+      DOUBLE PRECISION AMPRMS(21)
+
+
+
+*  Star-independent parameters
+      CALL sla_MAPPA(EQ,DATE,AMPRMS)
+
+*  Mean to apparent
+      CALL sla_MAPQK(RM,DM,PR,PD,PX,RV,AMPRMS,RA,DA)
+
+      END
diff --git a/mappa.f b/mappa.f
new file mode 100644
index 0000000000000000000000000000000000000000..8b701d729c1fde6c21fc74e04e3c6baf0eb8799d
--- /dev/null
+++ b/mappa.f
@@ -0,0 +1,128 @@
+      SUBROUTINE sla_MAPPA (EQ, DATE, AMPRMS)
+*+
+*     - - - - - -
+*      M A P P A
+*     - - - - - -
+*
+*  Compute star-independent parameters in preparation for
+*  conversions between mean place and geocentric apparent place.
+*
+*  The parameters produced by this routine are required in the
+*  parallax, light deflection, aberration, and precession/nutation
+*  parts of the mean/apparent transformations.
+*
+*  The reference frames and timescales used are post IAU 1976.
+*
+*  Given:
+*     EQ       d      epoch of mean equinox to be used (Julian)
+*     DATE     d      TDB (JD-2400000.5)
+*
+*  Returned:
+*     AMPRMS   d(21)  star-independent mean-to-apparent parameters:
+*
+*       (1)      time interval for proper motion (Julian years)
+*       (2-4)    barycentric position of the Earth (AU)
+*       (5-7)    heliocentric direction of the Earth (unit vector)
+*       (8)      (grav rad Sun)*2/(Sun-Earth distance)
+*       (9-11)   ABV: barycentric Earth velocity in units of c
+*       (12)     sqrt(1-v**2) where v=modulus(ABV)
+*       (13-21)  precession/nutation (3,3) matrix
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Notes:
+*
+*  1)  For DATE, the distinction between the required TDB and TT
+*      is always negligible.  Moreover, for all but the most
+*      critical applications UTC is adequate.
+*
+*  2)  The vectors AMPRMS(2-4) and AMPRMS(5-7) are referred to
+*      the mean equinox and equator of epoch EQ.
+*
+*  3)  The parameters AMPRMS produced by this routine are used by
+*      sla_AMPQK, sla_MAPQK and sla_MAPQKZ.
+*
+*  4)  The accuracy is sub-milliarcsecond, limited by the
+*      precession-nutation model (IAU 1976 precession, Shirai &
+*      Fukushima 2001 forced nutation and precession corrections).
+*
+*  5)  A further limit to the accuracy of routines using the parameter
+*      array AMPRMS is imposed by the routine sla_EVP, used here to
+*      compute the Earth position and velocity by the methods of
+*      Stumpff.  The maximum error in the resulting aberration
+*      corrections is about 0.3 milliarcsecond.
+*
+*  Called:
+*     sla_EPJ         MDJ to Julian epoch
+*     sla_EVP         earth position & velocity
+*     sla_DVN         normalize vector
+*     sla_PRENUT      precession/nutation matrix
+*
+*  P.T.Wallace   Starlink   24 October 2003
+*
+*  Copyright (C) 2003 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EQ,DATE,AMPRMS(21)
+
+*  Light time for 1 AU (sec)
+      DOUBLE PRECISION CR
+      PARAMETER (CR=499.004782D0)
+
+*  Gravitational radius of the Sun x 2 (2*mu/c**2, AU)
+      DOUBLE PRECISION GR2
+      PARAMETER (GR2=2D0*9.87063D-9)
+
+      INTEGER I
+
+      DOUBLE PRECISION EBD(3),EHD(3),EH(3),E,VN(3),VM
+
+      DOUBLE PRECISION sla_EPJ
+
+
+
+*  Time interval for proper motion correction
+      AMPRMS(1) = sla_EPJ(DATE)-EQ
+
+*  Get Earth barycentric and heliocentric position and velocity
+      CALL sla_EVP(DATE,EQ,EBD,AMPRMS(2),EHD,EH)
+
+*  Heliocentric direction of earth (normalized) and modulus
+      CALL sla_DVN(EH,AMPRMS(5),E)
+
+*  Light deflection parameter
+      AMPRMS(8) = GR2/E
+
+*  Aberration parameters
+      DO I=1,3
+         AMPRMS(I+8) = EBD(I)*CR
+      END DO
+      CALL sla_DVN(AMPRMS(9),VN,VM)
+      AMPRMS(12) = SQRT(1D0-VM*VM)
+
+*  Precession/nutation matrix
+      CALL sla_PRENUT(EQ,DATE,AMPRMS(13))
+
+      END
diff --git a/mapqk.f b/mapqk.f
new file mode 100644
index 0000000000000000000000000000000000000000..1a3111aab6f3264732c4ee65e87063f318a67bea
--- /dev/null
+++ b/mapqk.f
@@ -0,0 +1,159 @@
+      SUBROUTINE sla_MAPQK (RM, DM, PR, PD, PX, RV, AMPRMS, RA, DA)
+*+
+*     - - - - - -
+*      M A P Q K
+*     - - - - - -
+*
+*  Quick mean to apparent place:  transform a star RA,Dec from
+*  mean place to geocentric apparent place, given the
+*  star-independent parameters.
+*
+*  Use of this routine is appropriate when efficiency is important
+*  and where many star positions, all referred to the same equator
+*  and equinox, are to be transformed for one epoch.  The
+*  star-independent parameters can be obtained by calling the
+*  sla_MAPPA routine.
+*
+*  If the parallax and proper motions are zero the sla_MAPQKZ
+*  routine can be used instead.
+*
+*  The reference frames and timescales used are post IAU 1976.
+*
+*  Given:
+*     RM,DM    d      mean RA,Dec (rad)
+*     PR,PD    d      proper motions:  RA,Dec changes per Julian year
+*     PX       d      parallax (arcsec)
+*     RV       d      radial velocity (km/sec, +ve if receding)
+*
+*     AMPRMS   d(21)  star-independent mean-to-apparent parameters:
+*
+*       (1)      time interval for proper motion (Julian years)
+*       (2-4)    barycentric position of the Earth (AU)
+*       (5-7)    heliocentric direction of the Earth (unit vector)
+*       (8)      (grav rad Sun)*2/(Sun-Earth distance)
+*       (9-11)   barycentric Earth velocity in units of c
+*       (12)     sqrt(1-v**2) where v=modulus(ABV)
+*       (13-21)  precession/nutation (3,3) matrix
+*
+*  Returned:
+*     RA,DA    d      apparent RA,Dec (rad)
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Notes:
+*
+*  1)  The vectors AMPRMS(2-4) and AMPRMS(5-7) are referred to
+*      the mean equinox and equator of epoch EQ.
+*
+*  2)  Strictly speaking, the routine is not valid for solar-system
+*      sources, though the error will usually be extremely small.
+*      However, to prevent gross errors in the case where the
+*      position of the Sun is specified, the gravitational
+*      deflection term is restrained within about 920 arcsec of the
+*      centre of the Sun's disc.  The term has a maximum value of
+*      about 1.85 arcsec at this radius, and decreases to zero as
+*      the centre of the disc is approached.
+*
+*  Called:
+*     sla_DCS2C       spherical to Cartesian
+*     sla_DVDV        dot product
+*     sla_DMXV        matrix x vector
+*     sla_DCC2S       Cartesian to spherical
+*     sla_DRANRM      normalize angle 0-2Pi
+*
+*  P.T.Wallace   Starlink   15 January 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RM,DM,PR,PD,PX,RV,AMPRMS(21),RA,DA
+
+*  Arc seconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+*  Km/s to AU/year
+      DOUBLE PRECISION VF
+      PARAMETER (VF=0.21094502D0)
+
+      INTEGER I
+
+      DOUBLE PRECISION PMT,GR2E,AB1,EB(3),EHN(3),ABV(3),
+     :                 Q(3),PXR,W,EM(3),P(3),PN(3),PDE,PDEP1,
+     :                 P1(3),P1DV,P2(3),P3(3)
+
+      DOUBLE PRECISION sla_DVDV,sla_DRANRM
+
+
+
+*  Unpack scalar and vector parameters
+      PMT = AMPRMS(1)
+      GR2E = AMPRMS(8)
+      AB1 = AMPRMS(12)
+      DO I=1,3
+         EB(I) = AMPRMS(I+1)
+         EHN(I) = AMPRMS(I+4)
+         ABV(I) = AMPRMS(I+8)
+      END DO
+
+*  Spherical to x,y,z
+      CALL sla_DCS2C(RM,DM,Q)
+
+*  Space motion (radians per year)
+      PXR = PX*AS2R
+      W = VF*RV*PXR
+      EM(1) = -PR*Q(2)-PD*COS(RM)*SIN(DM)+W*Q(1)
+      EM(2) =  PR*Q(1)-PD*SIN(RM)*SIN(DM)+W*Q(2)
+      EM(3) =          PD*COS(DM)        +W*Q(3)
+
+*  Geocentric direction of star (normalized)
+      DO I=1,3
+         P(I) = Q(I)+PMT*EM(I)-PXR*EB(I)
+      END DO
+      CALL sla_DVN(P,PN,W)
+
+*  Light deflection (restrained within the Sun's disc)
+      PDE = sla_DVDV(PN,EHN)
+      PDEP1 = PDE+1D0
+      W = GR2E/MAX(PDEP1,1D-5)
+      DO I=1,3
+         P1(I) = PN(I)+W*(EHN(I)-PDE*PN(I))
+      END DO
+
+*  Aberration (normalization omitted)
+      P1DV = sla_DVDV(P1,ABV)
+      W = 1D0+P1DV/(AB1+1D0)
+      DO I=1,3
+         P2(I) = AB1*P1(I)+W*ABV(I)
+      END DO
+
+*  Precession and nutation
+      CALL sla_DMXV(AMPRMS(13),P2,P3)
+
+*  Geocentric apparent RA,Dec
+      CALL sla_DCC2S(P3,RA,DA)
+      RA = sla_DRANRM(RA)
+
+      END
diff --git a/mapqkz.f b/mapqkz.f
new file mode 100644
index 0000000000000000000000000000000000000000..981fe2594fcbca8bd032d01e90763761c6a331f4
--- /dev/null
+++ b/mapqkz.f
@@ -0,0 +1,130 @@
+      SUBROUTINE sla_MAPQKZ (RM, DM, AMPRMS, RA, DA)
+*+
+*     - - - - - - -
+*      M A P Q K Z
+*     - - - - - - -
+*
+*  Quick mean to apparent place:  transform a star RA,Dec from
+*  mean place to geocentric apparent place, given the
+*  star-independent parameters, and assuming zero parallax
+*  and proper motion.
+*
+*  Use of this routine is appropriate when efficiency is important
+*  and where many star positions, all with parallax and proper
+*  motion either zero or already allowed for, and all referred to
+*  the same equator and equinox, are to be transformed for one
+*  epoch.  The star-independent parameters can be obtained by
+*  calling the sla_MAPPA routine.
+*
+*  The corresponding routine for the case of non-zero parallax
+*  and proper motion is sla_MAPQK.
+*
+*  The reference frames and timescales used are post IAU 1976.
+*
+*  Given:
+*     RM,DM    d      mean RA,Dec (rad)
+*     AMPRMS   d(21)  star-independent mean-to-apparent parameters:
+*
+*       (1-4)    not used
+*       (5-7)    heliocentric direction of the Earth (unit vector)
+*       (8)      (grav rad Sun)*2/(Sun-Earth distance)
+*       (9-11)   ABV: barycentric Earth velocity in units of c
+*       (12)     sqrt(1-v**2) where v=modulus(ABV)
+*       (13-21)  precession/nutation (3,3) matrix
+*
+*  Returned:
+*     RA,DA    d      apparent RA,Dec (rad)
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Notes:
+*
+*  1)  The vectors AMPRMS(2-4) and AMPRMS(5-7) are referred to the
+*      mean equinox and equator of epoch EQ.
+*
+*  2)  Strictly speaking, the routine is not valid for solar-system
+*      sources, though the error will usually be extremely small.
+*      However, to prevent gross errors in the case where the
+*      position of the Sun is specified, the gravitational
+*      deflection term is restrained within about 920 arcsec of the
+*      centre of the Sun's disc.  The term has a maximum value of
+*      about 1.85 arcsec at this radius, and decreases to zero as
+*      the centre of the disc is approached.
+*
+*  Called:  sla_DCS2C, sla_DVDV, sla_DMXV, sla_DCC2S, sla_DRANRM
+*
+*  P.T.Wallace   Starlink   18 March 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RM,DM,AMPRMS(21),RA,DA
+
+      INTEGER I
+
+      DOUBLE PRECISION GR2E,AB1,EHN(3),ABV(3),
+     :                 P(3),PDE,PDEP1,W,P1(3),P1DV,
+     :                 P1DVP1,P2(3),P3(3)
+
+      DOUBLE PRECISION sla_DVDV,sla_DRANRM
+
+
+
+
+*  Unpack scalar and vector parameters
+      GR2E = AMPRMS(8)
+      AB1 = AMPRMS(12)
+      DO I=1,3
+         EHN(I) = AMPRMS(I+4)
+         ABV(I) = AMPRMS(I+8)
+      END DO
+
+*  Spherical to x,y,z
+      CALL sla_DCS2C(RM,DM,P)
+
+*  Light deflection
+      PDE = sla_DVDV(P,EHN)
+      PDEP1 = PDE+1D0
+      W = GR2E/MAX(PDEP1,1D-5)
+      DO I=1,3
+         P1(I) = P(I)+W*(EHN(I)-PDE*P(I))
+      END DO
+
+*  Aberration
+      P1DV = sla_DVDV(P1,ABV)
+      P1DVP1 = P1DV+1D0
+      W = 1D0+P1DV/(AB1+1D0)
+      DO I=1,3
+         P2(I) = (AB1*P1(I)+W*ABV(I))/P1DVP1
+      END DO
+
+*  Precession and nutation
+      CALL sla_DMXV(AMPRMS(13),P2,P3)
+
+*  Geocentric apparent RA,Dec
+      CALL sla_DCC2S(P3,RA,DA)
+      RA = sla_DRANRM(RA)
+
+      END
diff --git a/missing b/missing
new file mode 100755
index 0000000000000000000000000000000000000000..85b697b2845f37939865d1f48b2fb0a2c29e4462
--- /dev/null
+++ b/missing
@@ -0,0 +1,381 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+# If MISSING_SUPPRESS_RUN is true, then ignore any --run option.
+# Allow MISSING_SUPPRESS_RUN to be defaulted in the environment, but default
+# it to false, giving original behaviour.
+if test -z "$MISSING_SUPPRESS_RUN"; then
+    MISSING_SUPPRESS_RUN=false
+fi
+
+case "$1" in
+--run)
+  if $MISSING_SUPPRESS_RUN; then
+    # Merely shift the --run option off the list: do not run the command,
+    # and do not set $run to be null.
+    shift
+  else
+    # Try to run requested program, and just exit if it succeeds.
+    run=
+    shift
+    "$@" && exit 0
+    # Exit code 63 means version mismatch.  This often happens
+    # when the user tries to use an ancient version of a tool on
+    # a file that requires a minimum version.  In this case
+    # we should proceed as if the program had been absent, or
+    # if --run hadn't been passed.
+    if test $? = 63; then
+      run=:
+      msg="probably too old"
+    fi
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake@gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  true)
+    # Very easy to emulate!  We are almost certainly here because
+    # (i) ./configure is testing us by running `.../missing --run true'
+    # _and_ (ii) RUN_LOCAL_AUTOTOOLS is false, so that we didn't run
+    # `true' at the top.
+    exit 0
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:
diff --git a/moon.f b/moon.f
new file mode 100644
index 0000000000000000000000000000000000000000..a46ebe86656fc0c7035db891087765d3b7c844ce
--- /dev/null
+++ b/moon.f
@@ -0,0 +1,379 @@
+      SUBROUTINE sla_MOON (IY, ID, FD, PV)
+*+
+*     - - - - -
+*      M O O N
+*     - - - - -
+*
+*  Approximate geocentric position and velocity of the Moon
+*  (single precision).
+*
+*  Given:
+*     IY       i       year
+*     ID       i       day in year (1 = Jan 1st)
+*     FD       r       fraction of day
+*
+*  Returned:
+*     PV       r(6)    Moon position & velocity vector
+*
+*  Notes:
+*
+*  1  The date and time is TDB (loosely ET) in a Julian calendar
+*     which has been aligned to the ordinary Gregorian
+*     calendar for the interval 1900 March 1 to 2100 February 28.
+*     The year and day can be obtained by calling sla_CALYD or
+*     sla_CLYD.
+*
+*  2  The Moon 6-vector is Moon centre relative to Earth centre,
+*     mean equator and equinox of date.  Position part, PV(1-3),
+*     is in AU;  velocity part, PV(4-6), is in AU/sec.
+*
+*  3  The position is accurate to better than 0.5 arcminute
+*     in direction and 1000 km in distance.  The velocity
+*     is accurate to better than 0.5"/hour in direction and
+*     4 m/s in distance.  (RMS figures with respect to JPL DE200
+*     for the interval 1960-2025 are 14 arcsec and 0.2 arcsec/hour in
+*     longitude, 9 arcsec and 0.2 arcsec/hour in latitude, 350 km and
+*     2 m/s in distance.)  Note that the distance accuracy is
+*     comparatively poor because this routine is principally intended
+*     for computing topocentric direction.
+*
+*  4  This routine is only a partial implementation of the original
+*     Meeus algorithm (reference below), which offers 4 times the
+*     accuracy in direction and 30 times the accuracy in distance
+*     when fully implemented (as it is in sla_DMOON).
+*
+*  Reference:
+*     Meeus, l'Astronomie, June 1984, p348.
+*
+*  Called:  sla_CS2C6
+*
+*  P.T.Wallace   Starlink   8 December 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IY,ID
+      REAL FD,PV(6)
+
+      INTEGER ITP(4,4),ITL(4,39),ITB(4,29),I,IY4,N
+      REAL D2R,RATCON,ERADAU
+      REAL ELP0,ELP1,ELP1I,ELP1F
+      REAL EM0,EM1,EM1F
+      REAL EMP0,EMP1,EMP1I,EMP1F
+      REAL D0,D1,D1I,D1F
+      REAL F0,F1,F1I,F1F
+      REAL TL(39)
+      REAL TB(29)
+      REAL TP(4)
+      REAL YI,YF,T,ELP,EM,EMP,D,F,EL,ELD,COEFF,CEM,CEMP
+      REAL CD,CF,THETA,THETAD,B,BD,P,PD,SP,R,RD
+      REAL V(6),EPS,SINEPS,COSEPS
+
+*  Degrees to radians
+      PARAMETER (D2R=1.745329252E-2)
+
+*  Rate conversion factor:  D2R**2/(86400*365.25)
+      PARAMETER (RATCON=9.652743551E-12)
+
+*  Earth radius in AU:  6378.137/149597870
+      PARAMETER (ERADAU=4.2635212653763E-5)
+
+*
+*  Coefficients for fundamental arguments
+*
+*  Fixed term (deg), term in T (deg & whole revs + fraction per year)
+*
+*  Moon's mean longitude
+      DATA ELP0,ELP1,ELP1I,ELP1F /
+     :            270.434164, 4812.678831, 4680., 132.678831 /
+*
+*  Sun's mean anomaly
+      DATA EM0,EM1,EM1F /
+     :            358.475833,  359.990498,        359.990498 /
+*
+*  Moon's mean anomaly
+      DATA EMP0,EMP1,EMP1I,EMP1F /
+     :            296.104608, 4771.988491, 4680.,  91.988491 /
+*
+*  Moon's mean elongation
+      DATA D0,D1,D1I,D1F /
+     :            350.737486,  4452.671142, 4320., 132.671142 /
+*
+*  Mean distance of the Moon from its ascending node
+      DATA F0,F1,F1I,F1F /
+     :             11.250889, 4832.020251, 4680., 152.020251 /
+
+*
+*  Coefficients for Moon position
+*
+*   T(N)       = coefficient of term (deg)
+*   IT(N,1-4)  = coefficients of M, M', D, F in argument
+*
+*  Longitude
+*                                         M   M'  D   F
+      DATA TL( 1)/            +6.288750                     /,
+     :     (ITL(I, 1),I=1,4)/             0, +1,  0,  0     /
+      DATA TL( 2)/            +1.274018                     /,
+     :     (ITL(I, 2),I=1,4)/             0, -1, +2,  0     /
+      DATA TL( 3)/            +0.658309                     /,
+     :     (ITL(I, 3),I=1,4)/             0,  0, +2,  0     /
+      DATA TL( 4)/            +0.213616                     /,
+     :     (ITL(I, 4),I=1,4)/             0, +2,  0,  0     /
+      DATA TL( 5)/            -0.185596                     /,
+     :     (ITL(I, 5),I=1,4)/            +1,  0,  0,  0     /
+      DATA TL( 6)/            -0.114336                     /,
+     :     (ITL(I, 6),I=1,4)/             0,  0,  0, +2     /
+      DATA TL( 7)/            +0.058793                     /,
+     :     (ITL(I, 7),I=1,4)/             0, -2, +2,  0     /
+      DATA TL( 8)/            +0.057212                     /,
+     :     (ITL(I, 8),I=1,4)/            -1, -1, +2,  0     /
+      DATA TL( 9)/            +0.053320                     /,
+     :     (ITL(I, 9),I=1,4)/             0, +1, +2,  0     /
+      DATA TL(10)/            +0.045874                     /,
+     :     (ITL(I,10),I=1,4)/            -1,  0, +2,  0     /
+      DATA TL(11)/            +0.041024                     /,
+     :     (ITL(I,11),I=1,4)/            -1, +1,  0,  0     /
+      DATA TL(12)/            -0.034718                     /,
+     :     (ITL(I,12),I=1,4)/             0,  0, +1,  0     /
+      DATA TL(13)/            -0.030465                     /,
+     :     (ITL(I,13),I=1,4)/            +1, +1,  0,  0     /
+      DATA TL(14)/            +0.015326                     /,
+     :     (ITL(I,14),I=1,4)/             0,  0, +2, -2     /
+      DATA TL(15)/            -0.012528                     /,
+     :     (ITL(I,15),I=1,4)/             0, +1,  0, +2     /
+      DATA TL(16)/            -0.010980                     /,
+     :     (ITL(I,16),I=1,4)/             0, -1,  0, +2     /
+      DATA TL(17)/            +0.010674                     /,
+     :     (ITL(I,17),I=1,4)/             0, -1, +4,  0     /
+      DATA TL(18)/            +0.010034                     /,
+     :     (ITL(I,18),I=1,4)/             0, +3,  0,  0     /
+      DATA TL(19)/            +0.008548                     /,
+     :     (ITL(I,19),I=1,4)/             0, -2, +4,  0     /
+      DATA TL(20)/            -0.007910                     /,
+     :     (ITL(I,20),I=1,4)/            +1, -1, +2,  0     /
+      DATA TL(21)/            -0.006783                     /,
+     :     (ITL(I,21),I=1,4)/            +1,  0, +2,  0     /
+      DATA TL(22)/            +0.005162                     /,
+     :     (ITL(I,22),I=1,4)/             0, +1, -1,  0     /
+      DATA TL(23)/            +0.005000                     /,
+     :     (ITL(I,23),I=1,4)/            +1,  0, +1,  0     /
+      DATA TL(24)/            +0.004049                     /,
+     :     (ITL(I,24),I=1,4)/            -1, +1, +2,  0     /
+      DATA TL(25)/            +0.003996                     /,
+     :     (ITL(I,25),I=1,4)/             0, +2, +2,  0     /
+      DATA TL(26)/            +0.003862                     /,
+     :     (ITL(I,26),I=1,4)/             0,  0, +4,  0     /
+      DATA TL(27)/            +0.003665                     /,
+     :     (ITL(I,27),I=1,4)/             0, -3, +2,  0     /
+      DATA TL(28)/            +0.002695                     /,
+     :     (ITL(I,28),I=1,4)/            -1, +2,  0,  0     /
+      DATA TL(29)/            +0.002602                     /,
+     :     (ITL(I,29),I=1,4)/             0, +1, -2, -2     /
+      DATA TL(30)/            +0.002396                     /,
+     :     (ITL(I,30),I=1,4)/            -1, -2, +2,  0     /
+      DATA TL(31)/            -0.002349                     /,
+     :     (ITL(I,31),I=1,4)/             0, +1, +1,  0     /
+      DATA TL(32)/            +0.002249                     /,
+     :     (ITL(I,32),I=1,4)/            -2,  0, +2,  0     /
+      DATA TL(33)/            -0.002125                     /,
+     :     (ITL(I,33),I=1,4)/            +1, +2,  0,  0     /
+      DATA TL(34)/            -0.002079                     /,
+     :     (ITL(I,34),I=1,4)/            +2,  0,  0,  0     /
+      DATA TL(35)/            +0.002059                     /,
+     :     (ITL(I,35),I=1,4)/            -2, -1, +2,  0     /
+      DATA TL(36)/            -0.001773                     /,
+     :     (ITL(I,36),I=1,4)/             0, +1, +2, -2     /
+      DATA TL(37)/            -0.001595                     /,
+     :     (ITL(I,37),I=1,4)/             0,  0, +2, +2     /
+      DATA TL(38)/            +0.001220                     /,
+     :     (ITL(I,38),I=1,4)/            -1, -1, +4,  0     /
+      DATA TL(39)/            -0.001110                     /,
+     :     (ITL(I,39),I=1,4)/             0, +2,  0, +2     /
+*
+*  Latitude
+*                                         M   M'  D   F
+      DATA TB( 1)/            +5.128189                     /,
+     :     (ITB(I, 1),I=1,4)/             0,  0,  0, +1     /
+      DATA TB( 2)/            +0.280606                     /,
+     :     (ITB(I, 2),I=1,4)/             0, +1,  0, +1     /
+      DATA TB( 3)/            +0.277693                     /,
+     :     (ITB(I, 3),I=1,4)/             0, +1,  0, -1     /
+      DATA TB( 4)/            +0.173238                     /,
+     :     (ITB(I, 4),I=1,4)/             0,  0, +2, -1     /
+      DATA TB( 5)/            +0.055413                     /,
+     :     (ITB(I, 5),I=1,4)/             0, -1, +2, +1     /
+      DATA TB( 6)/            +0.046272                     /,
+     :     (ITB(I, 6),I=1,4)/             0, -1, +2, -1     /
+      DATA TB( 7)/            +0.032573                     /,
+     :     (ITB(I, 7),I=1,4)/             0,  0, +2, +1     /
+      DATA TB( 8)/            +0.017198                     /,
+     :     (ITB(I, 8),I=1,4)/             0, +2,  0, +1     /
+      DATA TB( 9)/            +0.009267                     /,
+     :     (ITB(I, 9),I=1,4)/             0, +1, +2, -1     /
+      DATA TB(10)/            +0.008823                     /,
+     :     (ITB(I,10),I=1,4)/             0, +2,  0, -1     /
+      DATA TB(11)/            +0.008247                     /,
+     :     (ITB(I,11),I=1,4)/            -1,  0, +2, -1     /
+      DATA TB(12)/            +0.004323                     /,
+     :     (ITB(I,12),I=1,4)/             0, -2, +2, -1     /
+      DATA TB(13)/            +0.004200                     /,
+     :     (ITB(I,13),I=1,4)/             0, +1, +2, +1     /
+      DATA TB(14)/            +0.003372                     /,
+     :     (ITB(I,14),I=1,4)/            -1,  0, -2, +1     /
+      DATA TB(15)/            +0.002472                     /,
+     :     (ITB(I,15),I=1,4)/            -1, -1, +2, +1     /
+      DATA TB(16)/            +0.002222                     /,
+     :     (ITB(I,16),I=1,4)/            -1,  0, +2, +1     /
+      DATA TB(17)/            +0.002072                     /,
+     :     (ITB(I,17),I=1,4)/            -1, -1, +2, -1     /
+      DATA TB(18)/            +0.001877                     /,
+     :     (ITB(I,18),I=1,4)/            -1, +1,  0, +1     /
+      DATA TB(19)/            +0.001828                     /,
+     :     (ITB(I,19),I=1,4)/             0, -1, +4, -1     /
+      DATA TB(20)/            -0.001803                     /,
+     :     (ITB(I,20),I=1,4)/            +1,  0,  0, +1     /
+      DATA TB(21)/            -0.001750                     /,
+     :     (ITB(I,21),I=1,4)/             0,  0,  0, +3     /
+      DATA TB(22)/            +0.001570                     /,
+     :     (ITB(I,22),I=1,4)/            -1, +1,  0, -1     /
+      DATA TB(23)/            -0.001487                     /,
+     :     (ITB(I,23),I=1,4)/             0,  0, +1, +1     /
+      DATA TB(24)/            -0.001481                     /,
+     :     (ITB(I,24),I=1,4)/            +1, +1,  0, +1     /
+      DATA TB(25)/            +0.001417                     /,
+     :     (ITB(I,25),I=1,4)/            -1, -1,  0, +1     /
+      DATA TB(26)/            +0.001350                     /,
+     :     (ITB(I,26),I=1,4)/            -1,  0,  0, +1     /
+      DATA TB(27)/            +0.001330                     /,
+     :     (ITB(I,27),I=1,4)/             0,  0, -1, +1     /
+      DATA TB(28)/            +0.001106                     /,
+     :     (ITB(I,28),I=1,4)/             0, +3,  0, +1     /
+      DATA TB(29)/            +0.001020                     /,
+     :     (ITB(I,29),I=1,4)/             0,  0, +4, -1     /
+*
+*  Parallax
+*                                         M   M'  D   F
+      DATA TP( 1)/            +0.051818                     /,
+     :     (ITP(I, 1),I=1,4)/             0, +1,  0,  0     /
+      DATA TP( 2)/            +0.009531                     /,
+     :     (ITP(I, 2),I=1,4)/             0, -1, +2,  0     /
+      DATA TP( 3)/            +0.007843                     /,
+     :     (ITP(I, 3),I=1,4)/             0,  0, +2,  0     /
+      DATA TP( 4)/            +0.002824                     /,
+     :     (ITP(I, 4),I=1,4)/             0, +2,  0,  0     /
+
+
+
+*  Whole years & fraction of year, and years since J1900.0
+      YI=FLOAT(IY-1900)
+      IY4=MOD(MOD(IY,4)+4,4)
+      YF=(FLOAT(4*(ID-1/(IY4+1))-IY4-2)+4.0*FD)/1461.0
+      T=YI+YF
+
+*  Moon's mean longitude
+      ELP=D2R*MOD(ELP0+ELP1I*YF+ELP1F*T,360.0)
+
+*  Sun's mean anomaly
+      EM=D2R*MOD(EM0+EM1F*T,360.0)
+
+*  Moon's mean anomaly
+      EMP=D2R*MOD(EMP0+EMP1I*YF+EMP1F*T,360.0)
+
+*  Moon's mean elongation
+      D=D2R*MOD(D0+D1I*YF+D1F*T,360.0)
+
+*  Mean distance of the moon from its ascending node
+      F=D2R*MOD(F0+F1I*YF+F1F*T,360.0)
+
+*  Longitude
+      EL=0.0
+      ELD=0.0
+      DO N=39,1,-1
+         COEFF=TL(N)
+         CEM=FLOAT(ITL(1,N))
+         CEMP=FLOAT(ITL(2,N))
+         CD=FLOAT(ITL(3,N))
+         CF=FLOAT(ITL(4,N))
+         THETA=CEM*EM+CEMP*EMP+CD*D+CF*F
+         THETAD=CEM*EM1+CEMP*EMP1+CD*D1+CF*F1
+         EL=EL+COEFF*SIN(THETA)
+         ELD=ELD+COEFF*COS(THETA)*THETAD
+      END DO
+      EL=EL*D2R+ELP
+      ELD=RATCON*(ELD+ELP1/D2R)
+
+*  Latitude
+      B=0.0
+      BD=0.0
+      DO N=29,1,-1
+         COEFF=TB(N)
+         CEM=FLOAT(ITB(1,N))
+         CEMP=FLOAT(ITB(2,N))
+         CD=FLOAT(ITB(3,N))
+         CF=FLOAT(ITB(4,N))
+         THETA=CEM*EM+CEMP*EMP+CD*D+CF*F
+         THETAD=CEM*EM1+CEMP*EMP1+CD*D1+CF*F1
+         B=B+COEFF*SIN(THETA)
+         BD=BD+COEFF*COS(THETA)*THETAD
+      END DO
+      B=B*D2R
+      BD=RATCON*BD
+
+*  Parallax
+      P=0.0
+      PD=0.0
+      DO N=4,1,-1
+         COEFF=TP(N)
+         CEM=FLOAT(ITP(1,N))
+         CEMP=FLOAT(ITP(2,N))
+         CD=FLOAT(ITP(3,N))
+         CF=FLOAT(ITP(4,N))
+         THETA=CEM*EM+CEMP*EMP+CD*D+CF*F
+         THETAD=CEM*EM1+CEMP*EMP1+CD*D1+CF*F1
+         P=P+COEFF*COS(THETA)
+         PD=PD-COEFF*SIN(THETA)*THETAD
+      END DO
+      P=(P+0.950724)*D2R
+      PD=RATCON*PD
+
+*  Transform parallax to distance (AU, AU/sec)
+      SP=SIN(P)
+      R=ERADAU/SP
+      RD=-R*PD/SP
+
+*  Longitude, latitude to x,y,z (AU)
+      CALL sla_CS2C6(EL,B,R,ELD,BD,RD,V)
+
+*  Mean obliquity
+      EPS=D2R*(23.45229-0.00013*T)
+      SINEPS=SIN(EPS)
+      COSEPS=COS(EPS)
+
+*  Rotate Moon position and velocity into equatorial system
+      PV(1)=V(1)
+      PV(2)=V(2)*COSEPS-V(3)*SINEPS
+      PV(3)=V(2)*SINEPS+V(3)*COSEPS
+      PV(4)=V(4)
+      PV(5)=V(5)*COSEPS-V(6)*SINEPS
+      PV(6)=V(5)*SINEPS+V(6)*COSEPS
+
+      END
diff --git a/mxm.f b/mxm.f
new file mode 100644
index 0000000000000000000000000000000000000000..6950ade2e141e81f93f557ffa0e657467c2421dc
--- /dev/null
+++ b/mxm.f
@@ -0,0 +1,71 @@
+      SUBROUTINE sla_MXM (A, B, C)
+*+
+*     - - - -
+*      M X M
+*     - - - -
+*
+*  Product of two 3x3 matrices:
+*      matrix C  =  matrix A  x  matrix B
+*
+*  (single precision)
+*
+*  Given:
+*      A      real(3,3)        matrix
+*      B      real(3,3)        matrix
+*
+*  Returned:
+*      C      real(3,3)        matrix result
+*
+*  To comply with the ANSI Fortran 77 standard, A, B and C must
+*  be different arrays.  However, the routine is coded so as to
+*  work properly on many platforms even if this rule is violated.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL A(3,3),B(3,3),C(3,3)
+
+      INTEGER I,J,K
+      REAL W,WM(3,3)
+
+
+*  Multiply into scratch matrix
+      DO I=1,3
+         DO J=1,3
+            W=0.0
+            DO K=1,3
+               W=W+A(I,K)*B(K,J)
+            END DO
+            WM(I,J)=W
+         END DO
+      END DO
+
+*  Return the result
+      DO J=1,3
+         DO I=1,3
+            C(I,J)=WM(I,J)
+         END DO
+      END DO
+
+      END
diff --git a/mxv.f b/mxv.f
new file mode 100644
index 0000000000000000000000000000000000000000..1dd091abc094228c9ea33a354205f481204d325f
--- /dev/null
+++ b/mxv.f
@@ -0,0 +1,68 @@
+      SUBROUTINE sla_MXV (RM, VA, VB)
+*+
+*     - - - -
+*      M X V
+*     - - - -
+*
+*  Performs the 3-D forward unitary transformation:
+*
+*     vector VB = matrix RM * vector VA
+*
+*  (single precision)
+*
+*  Given:
+*     RM       real(3,3)    matrix
+*     VA       real(3)      vector
+*
+*  Returned:
+*     VB       real(3)      result vector
+*
+*  To comply with the ANSI Fortran 77 standard, VA and VB must be
+*  different arrays.  However, the routine is coded so as to work
+*  properly on many platforms even if this rule is violated.
+*
+*  Last revision:   26 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL RM(3,3),VA(3),VB(3)
+
+      INTEGER I,J
+      REAL W,VW(3)
+
+
+*  Matrix RM * vector VA -> vector VW
+      DO J=1,3
+         W=0.0
+         DO I=1,3
+            W=W+RM(J,I)*VA(I)
+         END DO
+         VW(J)=W
+      END DO
+
+*  Vector VW -> vector VB
+      DO J=1,3
+         VB(J)=VW(J)
+      END DO
+
+      END
diff --git a/nut.f b/nut.f
new file mode 100644
index 0000000000000000000000000000000000000000..d66dc4ed037a155bb173ae1519a439cc3eda3a11
--- /dev/null
+++ b/nut.f
@@ -0,0 +1,75 @@
+      SUBROUTINE sla_NUT (DATE, RMATN)
+*+
+*     - - - -
+*      N U T
+*     - - - -
+*
+*  Form the matrix of nutation for a given date - Shirai & Fukushima
+*  2001 theory (double precision)
+*
+*  Reference:
+*     Shirai, T. & Fukushima, T., Astron.J. 121, 3270-3283 (2001).
+*
+*  Given:
+*     DATE    d          TDB (loosely ET) as Modified Julian Date
+*                                           (=JD-2400000.5)
+*  Returned:
+*     RMATN   d(3,3)     nutation matrix
+*
+*  Notes:
+*
+*  1  The matrix is in the sense  v(true) = rmatn * v(mean) .
+*     where v(true) is the star vector relative to the true equator and
+*     equinox of date and v(mean) is the star vector relative to the
+*     mean equator and equinox of date.
+*
+*  2  The matrix represents forced nutation (but not free core
+*     nutation) plus corrections to the IAU~1976 precession model.
+*
+*  3  Earth attitude predictions made by combining the present nutation
+*     matrix with IAU~1976 precession are accurate to 1~mas (with
+*     respect to the ICRS) for a few decades around 2000.
+*
+*  4  The distinction between the required TDB and TT is always
+*     negligible.  Moreover, for all but the most critical applications
+*     UTC is adequate.
+*
+*  Called:   sla_NUTC, sla_DEULER
+*
+*  Last revision:   1 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,RMATN(3,3)
+
+      DOUBLE PRECISION DPSI,DEPS,EPS0
+
+
+
+*  Nutation components and mean obliquity
+      CALL sla_NUTC(DATE,DPSI,DEPS,EPS0)
+
+*  Rotation matrix
+      CALL sla_DEULER('XZX',EPS0,-DPSI,-(EPS0+DEPS),RMATN)
+
+      END
diff --git a/nutc.f b/nutc.f
new file mode 100644
index 0000000000000000000000000000000000000000..d0c068eab6c82966daed116f1796232d1d9c1d43
--- /dev/null
+++ b/nutc.f
@@ -0,0 +1,830 @@
+      SUBROUTINE sla_NUTC (DATE, DPSI, DEPS, EPS0)
+*+
+*     - - - - -
+*      N U T C
+*     - - - - -
+*
+*  Nutation:  longitude & obliquity components and mean obliquity,
+*  using the Shirai & Fukushima (2001) theory.
+*
+*  Given:
+*     DATE        d    TDB (loosely ET) as Modified Julian Date
+*                                            (JD-2400000.5)
+*  Returned:
+*     DPSI,DEPS   d    nutation in longitude,obliquity
+*     EPS0        d    mean obliquity
+*
+*  Notes:
+*
+*  1  The routine predicts forced nutation (but not free core nutation)
+*     plus corrections to the IAU 1976 precession model.
+*
+*  2  Earth attitude predictions made by combining the present nutation
+*     model with IAU 1976 precession are accurate to 1 mas (with respect
+*     to the ICRF) for a few decades around 2000.
+*
+*  3  The sla_NUTC80 routine is the equivalent of the present routine
+*     but using the IAU 1980 nutation theory.  The older theory is less
+*     accurate, leading to errors as large as 350 mas over the interval
+*     1900-2100, mainly because of the error in the IAU 1976 precession.
+*
+*  References:
+*
+*     Shirai, T. & Fukushima, T., Astron.J. 121, 3270-3283 (2001).
+*
+*     Fukushima, T., Astron.Astrophys. 244, L11 (1991).
+*
+*     Simon, J. L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+*     Francou, G. & Laskar, J., Astron.Astrophys. 282, 663 (1994).
+*
+*  This revision:   24 November 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,DPSI,DEPS,EPS0
+
+*  Degrees to radians
+      DOUBLE PRECISION DD2R
+      PARAMETER (DD2R=1.745329251994329576923691D-2)
+
+*  Arc seconds to radians
+      DOUBLE PRECISION DAS2R
+      PARAMETER (DAS2R=4.848136811095359935899141D-6)
+
+*  Arc seconds in a full circle
+      DOUBLE PRECISION TURNAS
+      PARAMETER (TURNAS=1296000D0)
+
+*  Reference epoch (J2000), MJD
+      DOUBLE PRECISION DJM0
+      PARAMETER (DJM0=51544.5D0 )
+
+*  Days per Julian century
+      DOUBLE PRECISION DJC
+      PARAMETER (DJC=36525D0)
+
+      INTEGER I,J
+      DOUBLE PRECISION T,EL,ELP,F,D,OM,VE,MA,JU,SA,THETA,C,S,DP,DE
+
+*  Number of terms in the nutation model
+      INTEGER NTERMS
+      PARAMETER (NTERMS=194)
+
+*  The SF2001 forced nutation model
+      INTEGER NA(9,NTERMS)
+      DOUBLE PRECISION PSI(4,NTERMS), EPS(4,NTERMS)
+
+*  Coefficients of fundamental angles
+      DATA ( ( NA(I,J), I=1,9 ), J=1,10 ) /
+     :    0,   0,   0,   0,  -1,   0,   0,   0,   0,
+     :    0,   0,   2,  -2,   2,   0,   0,   0,   0,
+     :    0,   0,   2,   0,   2,   0,   0,   0,   0,
+     :    0,   0,   0,   0,  -2,   0,   0,   0,   0,
+     :    0,   1,   0,   0,   0,   0,   0,   0,   0,
+     :    0,   1,   2,  -2,   2,   0,   0,   0,   0,
+     :    1,   0,   0,   0,   0,   0,   0,   0,   0,
+     :    0,   0,   2,   0,   1,   0,   0,   0,   0,
+     :    1,   0,   2,   0,   2,   0,   0,   0,   0,
+     :    0,  -1,   2,  -2,   2,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=11,20 ) /
+     :    0,   0,   2,  -2,   1,   0,   0,   0,   0,
+     :   -1,   0,   2,   0,   2,   0,   0,   0,   0,
+     :   -1,   0,   0,   2,   0,   0,   0,   0,   0,
+     :    1,   0,   0,   0,   1,   0,   0,   0,   0,
+     :    1,   0,   0,   0,  -1,   0,   0,   0,   0,
+     :   -1,   0,   2,   2,   2,   0,   0,   0,   0,
+     :    1,   0,   2,   0,   1,   0,   0,   0,   0,
+     :   -2,   0,   2,   0,   1,   0,   0,   0,   0,
+     :    0,   0,   0,   2,   0,   0,   0,   0,   0,
+     :    0,   0,   2,   2,   2,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=21,30 ) /
+     :    2,   0,   0,  -2,   0,   0,   0,   0,   0,
+     :    2,   0,   2,   0,   2,   0,   0,   0,   0,
+     :    1,   0,   2,  -2,   2,   0,   0,   0,   0,
+     :   -1,   0,   2,   0,   1,   0,   0,   0,   0,
+     :    2,   0,   0,   0,   0,   0,   0,   0,   0,
+     :    0,   0,   2,   0,   0,   0,   0,   0,   0,
+     :    0,   1,   0,   0,   1,   0,   0,   0,   0,
+     :   -1,   0,   0,   2,   1,   0,   0,   0,   0,
+     :    0,   2,   2,  -2,   2,   0,   0,   0,   0,
+     :    0,   0,   2,  -2,   0,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=31,40 ) /
+     :   -1,   0,   0,   2,  -1,   0,   0,   0,   0,
+     :    0,   1,   0,   0,  -1,   0,   0,   0,   0,
+     :    0,   2,   0,   0,   0,   0,   0,   0,   0,
+     :   -1,   0,   2,   2,   1,   0,   0,   0,   0,
+     :    1,   0,   2,   2,   2,   0,   0,   0,   0,
+     :    0,   1,   2,   0,   2,   0,   0,   0,   0,
+     :   -2,   0,   2,   0,   0,   0,   0,   0,   0,
+     :    0,   0,   2,   2,   1,   0,   0,   0,   0,
+     :    0,  -1,   2,   0,   2,   0,   0,   0,   0,
+     :    0,   0,   0,   2,   1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=41,50 ) /
+     :    1,   0,   2,  -2,   1,   0,   0,   0,   0,
+     :    2,   0,   0,  -2,  -1,   0,   0,   0,   0,
+     :    2,   0,   2,  -2,   2,   0,   0,   0,   0,
+     :    2,   0,   2,   0,   1,   0,   0,   0,   0,
+     :    0,   0,   0,   2,  -1,   0,   0,   0,   0,
+     :    0,  -1,   2,  -2,   1,   0,   0,   0,   0,
+     :   -1,  -1,   0,   2,   0,   0,   0,   0,   0,
+     :    2,   0,   0,  -2,   1,   0,   0,   0,   0,
+     :    1,   0,   0,   2,   0,   0,   0,   0,   0,
+     :    0,   1,   2,  -2,   1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=51,60 ) /
+     :    1,  -1,   0,   0,   0,   0,   0,   0,   0,
+     :   -2,   0,   2,   0,   2,   0,   0,   0,   0,
+     :    0,  -1,   0,   2,   0,   0,   0,   0,   0,
+     :    3,   0,   2,   0,   2,   0,   0,   0,   0,
+     :    0,   0,   0,   1,   0,   0,   0,   0,   0,
+     :    1,  -1,   2,   0,   2,   0,   0,   0,   0,
+     :    1,   0,   0,  -1,   0,   0,   0,   0,   0,
+     :   -1,  -1,   2,   2,   2,   0,   0,   0,   0,
+     :   -1,   0,   2,   0,   0,   0,   0,   0,   0,
+     :    2,   0,   0,   0,  -1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=61,70 ) /
+     :    0,  -1,   2,   2,   2,   0,   0,   0,   0,
+     :    1,   1,   2,   0,   2,   0,   0,   0,   0,
+     :    2,   0,   0,   0,   1,   0,   0,   0,   0,
+     :    1,   1,   0,   0,   0,   0,   0,   0,   0,
+     :    1,   0,  -2,   2,  -1,   0,   0,   0,   0,
+     :    1,   0,   2,   0,   0,   0,   0,   0,   0,
+     :   -1,   1,   0,   1,   0,   0,   0,   0,   0,
+     :    1,   0,   0,   0,   2,   0,   0,   0,   0,
+     :   -1,   0,   1,   0,   1,   0,   0,   0,   0,
+     :    0,   0,   2,   1,   2,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=71,80 ) /
+     :   -1,   1,   0,   1,   1,   0,   0,   0,   0,
+     :   -1,   0,   2,   4,   2,   0,   0,   0,   0,
+     :    0,  -2,   2,  -2,   1,   0,   0,   0,   0,
+     :    1,   0,   2,   2,   1,   0,   0,   0,   0,
+     :    1,   0,   0,   0,  -2,   0,   0,   0,   0,
+     :   -2,   0,   2,   2,   2,   0,   0,   0,   0,
+     :    1,   1,   2,  -2,   2,   0,   0,   0,   0,
+     :   -2,   0,   2,   4,   2,   0,   0,   0,   0,
+     :   -1,   0,   4,   0,   2,   0,   0,   0,   0,
+     :    2,   0,   2,  -2,   1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=81,90 ) /
+     :    1,   0,   0,  -1,  -1,   0,   0,   0,   0,
+     :    2,   0,   2,   2,   2,   0,   0,   0,   0,
+     :    1,   0,   0,   2,   1,   0,   0,   0,   0,
+     :    3,   0,   0,   0,   0,   0,   0,   0,   0,
+     :    0,   0,   2,  -2,  -1,   0,   0,   0,   0,
+     :    3,   0,   2,  -2,   2,   0,   0,   0,   0,
+     :    0,   0,   4,  -2,   2,   0,   0,   0,   0,
+     :   -1,   0,   0,   4,   0,   0,   0,   0,   0,
+     :    0,   1,   2,   0,   1,   0,   0,   0,   0,
+     :    0,   0,   2,  -2,   3,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=91,100 ) /
+     :   -2,   0,   0,   4,   0,   0,   0,   0,   0,
+     :   -1,  -1,   0,   2,   1,   0,   0,   0,   0,
+     :   -2,   0,   2,   0,  -1,   0,   0,   0,   0,
+     :    0,   0,   2,   0,  -1,   0,   0,   0,   0,
+     :    0,  -1,   2,   0,   1,   0,   0,   0,   0,
+     :    0,   1,   0,   0,   2,   0,   0,   0,   0,
+     :    0,   0,   2,  -1,   2,   0,   0,   0,   0,
+     :    2,   1,   0,  -2,   0,   0,   0,   0,   0,
+     :    0,   0,   2,   4,   2,   0,   0,   0,   0,
+     :   -1,  -1,   0,   2,  -1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=101,110 ) /
+     :   -1,   1,   0,   2,   0,   0,   0,   0,   0,
+     :    1,  -1,   0,   0,   1,   0,   0,   0,   0,
+     :    0,  -1,   2,  -2,   0,   0,   0,   0,   0,
+     :    0,   1,   0,   0,  -2,   0,   0,   0,   0,
+     :    1,  -1,   2,   2,   2,   0,   0,   0,   0,
+     :    1,   0,   0,   2,  -1,   0,   0,   0,   0,
+     :   -1,   1,   2,   2,   2,   0,   0,   0,   0,
+     :    3,   0,   2,   0,   1,   0,   0,   0,   0,
+     :    0,   1,   2,   2,   2,   0,   0,   0,   0,
+     :    1,   0,   2,  -2,   0,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=111,120 ) /
+     :   -1,   0,  -2,   4,  -1,   0,   0,   0,   0,
+     :   -1,  -1,   2,   2,   1,   0,   0,   0,   0,
+     :    0,  -1,   2,   2,   1,   0,   0,   0,   0,
+     :    2,  -1,   2,   0,   2,   0,   0,   0,   0,
+     :    0,   0,   0,   2,   2,   0,   0,   0,   0,
+     :    1,  -1,   2,   0,   1,   0,   0,   0,   0,
+     :   -1,   1,   2,   0,   2,   0,   0,   0,   0,
+     :    0,   1,   0,   2,   0,   0,   0,   0,   0,
+     :    0,   1,   2,  -2,   0,   0,   0,   0,   0,
+     :    0,   3,   2,  -2,   2,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=121,130 ) /
+     :    0,   0,   0,   1,   1,   0,   0,   0,   0,
+     :   -1,   0,   2,   2,   0,   0,   0,   0,   0,
+     :    2,   1,   2,   0,   2,   0,   0,   0,   0,
+     :    1,   1,   0,   0,   1,   0,   0,   0,   0,
+     :    2,   0,   0,   2,   0,   0,   0,   0,   0,
+     :    1,   1,   2,   0,   1,   0,   0,   0,   0,
+     :   -1,   0,   0,   2,   2,   0,   0,   0,   0,
+     :    1,   0,  -2,   2,   0,   0,   0,   0,   0,
+     :    0,  -1,   0,   2,  -1,   0,   0,   0,   0,
+     :   -1,   0,   1,   0,   2,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=131,140 ) /
+     :    0,   1,   0,   1,   0,   0,   0,   0,   0,
+     :    1,   0,  -2,   2,  -2,   0,   0,   0,   0,
+     :    0,   0,   0,   1,  -1,   0,   0,   0,   0,
+     :    1,  -1,   0,   0,  -1,   0,   0,   0,   0,
+     :    0,   0,   0,   4,   0,   0,   0,   0,   0,
+     :    1,  -1,   0,   2,   0,   0,   0,   0,   0,
+     :    1,   0,   2,   1,   2,   0,   0,   0,   0,
+     :    1,   0,   2,  -1,   2,   0,   0,   0,   0,
+     :   -1,   0,   0,   2,  -2,   0,   0,   0,   0,
+     :    0,   0,   2,   1,   1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=141,150 ) /
+     :   -1,   0,   2,   0,  -1,   0,   0,   0,   0,
+     :   -1,   0,   2,   4,   1,   0,   0,   0,   0,
+     :    0,   0,   2,   2,   0,   0,   0,   0,   0,
+     :    1,   1,   2,  -2,   1,   0,   0,   0,   0,
+     :    0,   0,   1,   0,   1,   0,   0,   0,   0,
+     :   -1,   0,   2,  -1,   1,   0,   0,   0,   0,
+     :   -2,   0,   2,   2,   1,   0,   0,   0,   0,
+     :    2,  -1,   0,   0,   0,   0,   0,   0,   0,
+     :    4,   0,   2,   0,   2,   0,   0,   0,   0,
+     :    2,   1,   2,  -2,   2,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=151,160 ) /
+     :    0,   1,   2,   1,   2,   0,   0,   0,   0,
+     :    1,   0,   4,  -2,   2,   0,   0,   0,   0,
+     :    1,   1,   0,   0,  -1,   0,   0,   0,   0,
+     :   -2,   0,   2,   4,   1,   0,   0,   0,   0,
+     :    2,   0,   2,   0,   0,   0,   0,   0,   0,
+     :   -1,   0,   1,   0,   0,   0,   0,   0,   0,
+     :    1,   0,   0,   1,   0,   0,   0,   0,   0,
+     :    0,   1,   0,   2,   1,   0,   0,   0,   0,
+     :   -1,   0,   4,   0,   1,   0,   0,   0,   0,
+     :   -1,   0,   0,   4,   1,   0,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=161,170 ) /
+     :    2,   0,   2,   2,   1,   0,   0,   0,   0,
+     :    2,   1,   0,   0,   0,   0,   0,   0,   0,
+     :    0,   0,   5,  -5,   5,  -3,   0,   0,   0,
+     :    0,   0,   0,   0,   0,   0,   0,   2,   0,
+     :    0,   0,   1,  -1,   1,   0,   0,  -1,   0,
+     :    0,   0,  -1,   1,  -1,   1,   0,   0,   0,
+     :    0,   0,  -1,   1,   0,   0,   2,   0,   0,
+     :    0,   0,   3,  -3,   3,   0,   0,  -1,   0,
+     :    0,   0,  -8,   8,  -7,   5,   0,   0,   0,
+     :    0,   0,  -1,   1,  -1,   0,   2,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=171,180 ) /
+     :    0,   0,  -2,   2,  -2,   2,   0,   0,   0,
+     :    0,   0,  -6,   6,  -6,   4,   0,   0,   0,
+     :    0,   0,  -2,   2,  -2,   0,   8,  -3,   0,
+     :    0,   0,   6,  -6,   6,   0,  -8,   3,   0,
+     :    0,   0,   4,  -4,   4,  -2,   0,   0,   0,
+     :    0,   0,  -3,   3,  -3,   2,   0,   0,   0,
+     :    0,   0,   4,  -4,   3,   0,  -8,   3,   0,
+     :    0,   0,  -4,   4,  -5,   0,   8,  -3,   0,
+     :    0,   0,   0,   0,   0,   2,   0,   0,   0,
+     :    0,   0,  -4,   4,  -4,   3,   0,   0,   0 /
+      DATA ( ( NA(I,J), I=1,9 ), J=181,190 ) /
+     :    0,   1,  -1,   1,  -1,   0,   0,   1,   0,
+     :    0,   0,   0,   0,   0,   0,   0,   1,   0,
+     :    0,   0,   1,  -1,   1,   1,   0,   0,   0,
+     :    0,   0,   2,  -2,   2,   0,  -2,   0,   0,
+     :    0,  -1,  -7,   7,  -7,   5,   0,   0,   0,
+     :   -2,   0,   2,   0,   2,   0,   0,  -2,   0,
+     :   -2,   0,   2,   0,   1,   0,   0,  -3,   0,
+     :    0,   0,   2,  -2,   2,   0,   0,  -2,   0,
+     :    0,   0,   1,  -1,   1,   0,   0,   1,   0,
+     :    0,   0,   0,   0,   0,   0,   0,   0,   2 /
+      DATA ( ( NA(I,J), I=1,9 ), J=191,NTERMS ) /
+     :    0,   0,   0,   0,   0,   0,   0,   0,   1,
+     :    2,   0,  -2,   0,  -2,   0,   0,   3,   0,
+     :    0,   0,   1,  -1,   1,   0,   0,  -2,   0,
+     :    0,   0,  -7,   7,  -7,   5,   0,   0,   0 /
+
+*  Nutation series: longitude
+      DATA ( ( PSI(I,J), I=1,4 ), J=1,10 ) /
+     :  3341.5D0, 17206241.8D0,  3.1D0, 17409.5D0,
+     : -1716.8D0, -1317185.3D0,  1.4D0,  -156.8D0,
+     :   285.7D0,  -227667.0D0,  0.3D0,   -23.5D0,
+     :   -68.6D0,  -207448.0D0,  0.0D0,   -21.4D0,
+     :   950.3D0,   147607.9D0, -2.3D0,  -355.0D0,
+     :   -66.7D0,   -51689.1D0,  0.2D0,   122.6D0,
+     :  -108.6D0,    71117.6D0,  0.0D0,     7.0D0,
+     :    35.6D0,   -38740.2D0,  0.1D0,   -36.2D0,
+     :    85.4D0,   -30127.6D0,  0.0D0,    -3.1D0,
+     :     9.0D0,    21583.0D0,  0.1D0,   -50.3D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=11,20 ) /
+     :    22.1D0,    12822.8D0,  0.0D0,    13.3D0,
+     :     3.4D0,    12350.8D0,  0.0D0,     1.3D0,
+     :   -21.1D0,    15699.4D0,  0.0D0,     1.6D0,
+     :     4.2D0,     6313.8D0,  0.0D0,     6.2D0,
+     :   -22.8D0,     5796.9D0,  0.0D0,     6.1D0,
+     :    15.7D0,    -5961.1D0,  0.0D0,    -0.6D0,
+     :    13.1D0,    -5159.1D0,  0.0D0,    -4.6D0,
+     :     1.8D0,     4592.7D0,  0.0D0,     4.5D0,
+     :   -17.5D0,     6336.0D0,  0.0D0,     0.7D0,
+     :    16.3D0,    -3851.1D0,  0.0D0,    -0.4D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=21,30 ) /
+     :    -2.8D0,     4771.7D0,  0.0D0,     0.5D0,
+     :    13.8D0,    -3099.3D0,  0.0D0,    -0.3D0,
+     :     0.2D0,     2860.3D0,  0.0D0,     0.3D0,
+     :     1.4D0,     2045.3D0,  0.0D0,     2.0D0,
+     :    -8.6D0,     2922.6D0,  0.0D0,     0.3D0,
+     :    -7.7D0,     2587.9D0,  0.0D0,     0.2D0,
+     :     8.8D0,    -1408.1D0,  0.0D0,     3.7D0,
+     :     1.4D0,     1517.5D0,  0.0D0,     1.5D0,
+     :    -1.9D0,    -1579.7D0,  0.0D0,     7.7D0,
+     :     1.3D0,    -2178.6D0,  0.0D0,    -0.2D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=31,40 ) /
+     :    -4.8D0,     1286.8D0,  0.0D0,     1.3D0,
+     :     6.3D0,     1267.2D0,  0.0D0,    -4.0D0,
+     :    -1.0D0,     1669.3D0,  0.0D0,    -8.3D0,
+     :     2.4D0,    -1020.0D0,  0.0D0,    -0.9D0,
+     :     4.5D0,     -766.9D0,  0.0D0,     0.0D0,
+     :    -1.1D0,      756.5D0,  0.0D0,    -1.7D0,
+     :    -1.4D0,    -1097.3D0,  0.0D0,    -0.5D0,
+     :     2.6D0,     -663.0D0,  0.0D0,    -0.6D0,
+     :     0.8D0,     -714.1D0,  0.0D0,     1.6D0,
+     :     0.4D0,     -629.9D0,  0.0D0,    -0.6D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=41,50 ) /
+     :     0.3D0,      580.4D0,  0.0D0,     0.6D0,
+     :    -1.6D0,      577.3D0,  0.0D0,     0.5D0,
+     :    -0.9D0,      644.4D0,  0.0D0,     0.0D0,
+     :     2.2D0,     -534.0D0,  0.0D0,    -0.5D0,
+     :    -2.5D0,      493.3D0,  0.0D0,     0.5D0,
+     :    -0.1D0,     -477.3D0,  0.0D0,    -2.4D0,
+     :    -0.9D0,      735.0D0,  0.0D0,    -1.7D0,
+     :     0.7D0,      406.2D0,  0.0D0,     0.4D0,
+     :    -2.8D0,      656.9D0,  0.0D0,     0.0D0,
+     :     0.6D0,      358.0D0,  0.0D0,     2.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=51,60 ) /
+     :    -0.7D0,      472.5D0,  0.0D0,    -1.1D0,
+     :    -0.1D0,     -300.5D0,  0.0D0,     0.0D0,
+     :    -1.2D0,      435.1D0,  0.0D0,    -1.0D0,
+     :     1.8D0,     -289.4D0,  0.0D0,     0.0D0,
+     :     0.6D0,     -422.6D0,  0.0D0,     0.0D0,
+     :     0.8D0,     -287.6D0,  0.0D0,     0.6D0,
+     :   -38.6D0,     -392.3D0,  0.0D0,     0.0D0,
+     :     0.7D0,     -281.8D0,  0.0D0,     0.6D0,
+     :     0.6D0,     -405.7D0,  0.0D0,     0.0D0,
+     :    -1.2D0,      229.0D0,  0.0D0,     0.2D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=61,70 ) /
+     :     1.1D0,     -264.3D0,  0.0D0,     0.5D0,
+     :    -0.7D0,      247.9D0,  0.0D0,    -0.5D0,
+     :    -0.2D0,      218.0D0,  0.0D0,     0.2D0,
+     :     0.6D0,     -339.0D0,  0.0D0,     0.8D0,
+     :    -0.7D0,      198.7D0,  0.0D0,     0.2D0,
+     :    -1.5D0,      334.0D0,  0.0D0,     0.0D0,
+     :     0.1D0,      334.0D0,  0.0D0,     0.0D0,
+     :    -0.1D0,     -198.1D0,  0.0D0,     0.0D0,
+     :  -106.6D0,        0.0D0,  0.0D0,     0.0D0,
+     :    -0.5D0,      165.8D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=71,80 ) /
+     :     0.0D0,      134.8D0,  0.0D0,     0.0D0,
+     :     0.9D0,     -151.6D0,  0.0D0,     0.0D0,
+     :     0.0D0,     -129.7D0,  0.0D0,     0.0D0,
+     :     0.8D0,     -132.8D0,  0.0D0,    -0.1D0,
+     :     0.5D0,     -140.7D0,  0.0D0,     0.0D0,
+     :    -0.1D0,      138.4D0,  0.0D0,     0.0D0,
+     :     0.0D0,      129.0D0,  0.0D0,    -0.3D0,
+     :     0.5D0,     -121.2D0,  0.0D0,     0.0D0,
+     :    -0.3D0,      114.5D0,  0.0D0,     0.0D0,
+     :    -0.1D0,      101.8D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=81,90 ) /
+     :    -3.6D0,     -101.9D0,  0.0D0,     0.0D0,
+     :     0.8D0,     -109.4D0,  0.0D0,     0.0D0,
+     :     0.2D0,      -97.0D0,  0.0D0,     0.0D0,
+     :    -0.7D0,      157.3D0,  0.0D0,     0.0D0,
+     :     0.2D0,      -83.3D0,  0.0D0,     0.0D0,
+     :    -0.3D0,       93.3D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       92.1D0,  0.0D0,     0.0D0,
+     :    -0.5D0,      133.6D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       81.5D0,  0.0D0,     0.0D0,
+     :     0.0D0,      123.9D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=91,100 ) /
+     :    -0.3D0,      128.1D0,  0.0D0,     0.0D0,
+     :     0.1D0,       74.1D0,  0.0D0,    -0.3D0,
+     :    -0.2D0,      -70.3D0,  0.0D0,     0.0D0,
+     :    -0.4D0,       66.6D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -66.7D0,  0.0D0,     0.0D0,
+     :    -0.7D0,       69.3D0,  0.0D0,    -0.3D0,
+     :     0.0D0,      -70.4D0,  0.0D0,     0.0D0,
+     :    -0.1D0,      101.5D0,  0.0D0,     0.0D0,
+     :     0.5D0,      -69.1D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       58.5D0,  0.0D0,     0.2D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=101,110 ) /
+     :     0.1D0,      -94.9D0,  0.0D0,     0.2D0,
+     :     0.0D0,       52.9D0,  0.0D0,    -0.2D0,
+     :     0.1D0,       86.7D0,  0.0D0,    -0.2D0,
+     :    -0.1D0,      -59.2D0,  0.0D0,     0.2D0,
+     :     0.3D0,      -58.8D0,  0.0D0,     0.1D0,
+     :    -0.3D0,       49.0D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       56.9D0,  0.0D0,    -0.1D0,
+     :     0.3D0,      -50.2D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       53.4D0,  0.0D0,    -0.1D0,
+     :     0.1D0,      -76.5D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=111,120 ) /
+     :    -0.2D0,       45.3D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -46.8D0,  0.0D0,     0.0D0,
+     :     0.2D0,      -44.6D0,  0.0D0,     0.0D0,
+     :     0.2D0,      -48.7D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -46.8D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -42.0D0,  0.0D0,     0.0D0,
+     :     0.0D0,       46.4D0,  0.0D0,    -0.1D0,
+     :     0.2D0,      -67.3D0,  0.0D0,     0.1D0,
+     :     0.0D0,      -65.8D0,  0.0D0,     0.2D0,
+     :    -0.1D0,      -43.9D0,  0.0D0,     0.3D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=121,130 ) /
+     :     0.0D0,      -38.9D0,  0.0D0,     0.0D0,
+     :    -0.3D0,       63.9D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       41.2D0,  0.0D0,     0.0D0,
+     :     0.0D0,      -36.1D0,  0.0D0,     0.2D0,
+     :    -0.3D0,       58.5D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       36.1D0,  0.0D0,     0.0D0,
+     :     0.0D0,      -39.7D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -57.7D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       33.4D0,  0.0D0,     0.0D0,
+     :    36.4D0,        0.0D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=131,140 ) /
+     :    -0.1D0,       55.7D0,  0.0D0,    -0.1D0,
+     :     0.1D0,      -35.4D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -31.0D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       30.1D0,  0.0D0,     0.0D0,
+     :    -0.3D0,       49.2D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       49.1D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       33.6D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -33.5D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -31.0D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       28.0D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=141,150 ) /
+     :     0.1D0,      -25.2D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -26.2D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       41.5D0,  0.0D0,     0.0D0,
+     :     0.0D0,       24.5D0,  0.0D0,     0.1D0,
+     :   -16.2D0,        0.0D0,  0.0D0,     0.0D0,
+     :     0.0D0,      -22.3D0,  0.0D0,     0.0D0,
+     :     0.0D0,       23.1D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       37.5D0,  0.0D0,     0.0D0,
+     :     0.2D0,      -25.7D0,  0.0D0,     0.0D0,
+     :     0.0D0,       25.2D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=151,160 ) /
+     :     0.1D0,      -24.5D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       24.3D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -20.7D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -20.8D0,  0.0D0,     0.0D0,
+     :    -0.2D0,       33.4D0,  0.0D0,     0.0D0,
+     :    32.9D0,        0.0D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -32.6D0,  0.0D0,     0.0D0,
+     :     0.0D0,       19.9D0,  0.0D0,     0.0D0,
+     :    -0.1D0,       19.6D0,  0.0D0,     0.0D0,
+     :     0.0D0,      -18.7D0,  0.0D0,     0.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=161,170 ) /
+     :     0.1D0,      -19.0D0,  0.0D0,     0.0D0,
+     :     0.1D0,      -28.6D0,  0.0D0,     0.0D0,
+     :     4.0D0,      178.8D0,-11.8D0,     0.3D0,
+     :    39.8D0,     -107.3D0, -5.6D0,    -1.0D0,
+     :     9.9D0,      164.0D0, -4.1D0,     0.1D0,
+     :    -4.8D0,     -135.3D0, -3.4D0,    -0.1D0,
+     :    50.5D0,       75.0D0,  1.4D0,    -1.2D0,
+     :    -1.1D0,      -53.5D0,  1.3D0,     0.0D0,
+     :   -45.0D0,       -2.4D0, -0.4D0,     6.6D0,
+     :   -11.5D0,      -61.0D0, -0.9D0,     0.4D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=171,180 ) /
+     :     4.4D0,      -68.4D0, -3.4D0,     0.0D0,
+     :     7.7D0,      -47.1D0, -4.7D0,    -1.0D0,
+     :   -42.9D0,      -12.6D0, -1.2D0,     4.2D0,
+     :   -42.8D0,       12.7D0, -1.2D0,    -4.2D0,
+     :    -7.6D0,      -44.1D0,  2.1D0,    -0.5D0,
+     :   -64.1D0,        1.7D0,  0.2D0,     4.5D0,
+     :    36.4D0,      -10.4D0,  1.0D0,     3.5D0,
+     :    35.6D0,       10.2D0,  1.0D0,    -3.5D0,
+     :    -1.7D0,       39.5D0,  2.0D0,     0.0D0,
+     :    50.9D0,       -8.2D0, -0.8D0,    -5.0D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=181,190 ) /
+     :     0.0D0,       52.3D0,  1.2D0,     0.0D0,
+     :   -42.9D0,      -17.8D0,  0.4D0,     0.0D0,
+     :     2.6D0,       34.3D0,  0.8D0,     0.0D0,
+     :    -0.8D0,      -48.6D0,  2.4D0,    -0.1D0,
+     :    -4.9D0,       30.5D0,  3.7D0,     0.7D0,
+     :     0.0D0,      -43.6D0,  2.1D0,     0.0D0,
+     :     0.0D0,      -25.4D0,  1.2D0,     0.0D0,
+     :     2.0D0,       40.9D0, -2.0D0,     0.0D0,
+     :    -2.1D0,       26.1D0,  0.6D0,     0.0D0,
+     :    22.6D0,       -3.2D0, -0.5D0,    -0.5D0 /
+      DATA ( ( PSI(I,J), I=1,4 ), J=191,NTERMS ) /
+     :    -7.6D0,       24.9D0, -0.4D0,    -0.2D0,
+     :    -6.2D0,       34.9D0,  1.7D0,     0.3D0,
+     :     2.0D0,       17.4D0, -0.4D0,     0.1D0,
+     :    -3.9D0,       20.5D0,  2.4D0,     0.6D0 /
+
+*  Nutation series: obliquity
+      DATA ( ( EPS(I,J), I=1,4 ), J=1,10 ) /
+     : 9205365.8D0, -1506.2D0,  885.7D0, -0.2D0,
+     :  573095.9D0,  -570.2D0, -305.0D0, -0.3D0,
+     :   97845.5D0,   147.8D0,  -48.8D0, -0.2D0,
+     :  -89753.6D0,    28.0D0,   46.9D0,  0.0D0,
+     :    7406.7D0,  -327.1D0,  -18.2D0,  0.8D0,
+     :   22442.3D0,   -22.3D0,  -67.6D0,  0.0D0,
+     :    -683.6D0,    46.8D0,    0.0D0,  0.0D0,
+     :   20070.7D0,    36.0D0,    1.6D0,  0.0D0,
+     :   12893.8D0,    39.5D0,   -6.2D0,  0.0D0,
+     :   -9593.2D0,    14.4D0,   30.2D0, -0.1D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=11,20 ) /
+     :   -6899.5D0,     4.8D0,   -0.6D0,  0.0D0,
+     :   -5332.5D0,    -0.1D0,    2.7D0,  0.0D0,
+     :    -125.2D0,    10.5D0,    0.0D0,  0.0D0,
+     :   -3323.4D0,    -0.9D0,   -0.3D0,  0.0D0,
+     :    3142.3D0,     8.9D0,    0.3D0,  0.0D0,
+     :    2552.5D0,     7.3D0,   -1.2D0,  0.0D0,
+     :    2634.4D0,     8.8D0,    0.2D0,  0.0D0,
+     :   -2424.4D0,     1.6D0,   -0.4D0,  0.0D0,
+     :    -123.3D0,     3.9D0,    0.0D0,  0.0D0,
+     :    1642.4D0,     7.3D0,   -0.8D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=21,30 ) /
+     :      47.9D0,     3.2D0,    0.0D0,  0.0D0,
+     :    1321.2D0,     6.2D0,   -0.6D0,  0.0D0,
+     :   -1234.1D0,    -0.3D0,    0.6D0,  0.0D0,
+     :   -1076.5D0,    -0.3D0,    0.0D0,  0.0D0,
+     :     -61.6D0,     1.8D0,    0.0D0,  0.0D0,
+     :     -55.4D0,     1.6D0,    0.0D0,  0.0D0,
+     :     856.9D0,    -4.9D0,   -2.1D0,  0.0D0,
+     :    -800.7D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     685.1D0,    -0.6D0,   -3.8D0,  0.0D0,
+     :     -16.9D0,    -1.5D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=31,40 ) /
+     :     695.7D0,     1.8D0,    0.0D0,  0.0D0,
+     :     642.2D0,    -2.6D0,   -1.6D0,  0.0D0,
+     :      13.3D0,     1.1D0,   -0.1D0,  0.0D0,
+     :     521.9D0,     1.6D0,    0.0D0,  0.0D0,
+     :     325.8D0,     2.0D0,   -0.1D0,  0.0D0,
+     :    -325.1D0,    -0.5D0,    0.9D0,  0.0D0,
+     :      10.1D0,     0.3D0,    0.0D0,  0.0D0,
+     :     334.5D0,     1.6D0,    0.0D0,  0.0D0,
+     :     307.1D0,     0.4D0,   -0.9D0,  0.0D0,
+     :     327.2D0,     0.5D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=41,50 ) /
+     :    -304.6D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     304.0D0,     0.6D0,    0.0D0,  0.0D0,
+     :    -276.8D0,    -0.5D0,    0.1D0,  0.0D0,
+     :     268.9D0,     1.3D0,    0.0D0,  0.0D0,
+     :     271.8D0,     1.1D0,    0.0D0,  0.0D0,
+     :     271.5D0,    -0.4D0,   -0.8D0,  0.0D0,
+     :      -5.2D0,     0.5D0,    0.0D0,  0.0D0,
+     :    -220.5D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -20.1D0,     0.3D0,    0.0D0,  0.0D0,
+     :    -191.0D0,     0.1D0,    0.5D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=51,60 ) /
+     :      -4.1D0,     0.3D0,    0.0D0,  0.0D0,
+     :     130.6D0,    -0.1D0,    0.0D0,  0.0D0,
+     :       3.0D0,     0.3D0,    0.0D0,  0.0D0,
+     :     122.9D0,     0.8D0,    0.0D0,  0.0D0,
+     :       3.7D0,    -0.3D0,    0.0D0,  0.0D0,
+     :     123.1D0,     0.4D0,   -0.3D0,  0.0D0,
+     :     -52.7D0,    15.3D0,    0.0D0,  0.0D0,
+     :     120.7D0,     0.3D0,   -0.3D0,  0.0D0,
+     :       4.0D0,    -0.3D0,    0.0D0,  0.0D0,
+     :     126.5D0,     0.5D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=61,70 ) /
+     :     112.7D0,     0.5D0,   -0.3D0,  0.0D0,
+     :    -106.1D0,    -0.3D0,    0.3D0,  0.0D0,
+     :    -112.9D0,    -0.2D0,    0.0D0,  0.0D0,
+     :       3.6D0,    -0.2D0,    0.0D0,  0.0D0,
+     :     107.4D0,     0.3D0,    0.0D0,  0.0D0,
+     :     -10.9D0,     0.2D0,    0.0D0,  0.0D0,
+     :      -0.9D0,     0.0D0,    0.0D0,  0.0D0,
+     :      85.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :       0.0D0,   -88.8D0,    0.0D0,  0.0D0,
+     :     -71.0D0,    -0.2D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=71,80 ) /
+     :     -70.3D0,     0.0D0,    0.0D0,  0.0D0,
+     :      64.5D0,     0.4D0,    0.0D0,  0.0D0,
+     :      69.8D0,     0.0D0,    0.0D0,  0.0D0,
+     :      66.1D0,     0.4D0,    0.0D0,  0.0D0,
+     :     -61.0D0,    -0.2D0,    0.0D0,  0.0D0,
+     :     -59.5D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     -55.6D0,     0.0D0,    0.2D0,  0.0D0,
+     :      51.7D0,     0.2D0,    0.0D0,  0.0D0,
+     :     -49.0D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     -52.7D0,    -0.1D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=81,90 ) /
+     :     -49.6D0,     1.4D0,    0.0D0,  0.0D0,
+     :      46.3D0,     0.4D0,    0.0D0,  0.0D0,
+     :      49.6D0,     0.1D0,    0.0D0,  0.0D0,
+     :      -5.1D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -44.0D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     -39.9D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     -39.5D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      -3.9D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -42.1D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     -17.2D0,     0.1D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=91,100 ) /
+     :      -2.3D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -39.2D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -38.4D0,     0.1D0,    0.0D0,  0.0D0,
+     :      36.8D0,     0.2D0,    0.0D0,  0.0D0,
+     :      34.6D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -32.7D0,     0.3D0,    0.0D0,  0.0D0,
+     :      30.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :       0.4D0,     0.1D0,    0.0D0,  0.0D0,
+     :      29.3D0,     0.2D0,    0.0D0,  0.0D0,
+     :      31.6D0,     0.1D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=101,110 ) /
+     :       0.8D0,    -0.1D0,    0.0D0,  0.0D0,
+     :     -27.9D0,     0.0D0,    0.0D0,  0.0D0,
+     :       2.9D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -25.3D0,     0.0D0,    0.0D0,  0.0D0,
+     :      25.0D0,     0.1D0,    0.0D0,  0.0D0,
+     :      27.5D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -24.4D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      24.9D0,     0.2D0,    0.0D0,  0.0D0,
+     :     -22.8D0,    -0.1D0,    0.0D0,  0.0D0,
+     :       0.9D0,    -0.1D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=111,120 ) /
+     :      24.4D0,     0.1D0,    0.0D0,  0.0D0,
+     :      23.9D0,     0.1D0,    0.0D0,  0.0D0,
+     :      22.5D0,     0.1D0,    0.0D0,  0.0D0,
+     :      20.8D0,     0.1D0,    0.0D0,  0.0D0,
+     :      20.1D0,     0.0D0,    0.0D0,  0.0D0,
+     :      21.5D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -20.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :       1.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -0.2D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      19.0D0,     0.0D0,   -0.1D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=121,130 ) /
+     :      20.5D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -2.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -17.6D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      19.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -2.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -18.4D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      17.1D0,     0.0D0,    0.0D0,  0.0D0,
+     :       0.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :      18.4D0,     0.1D0,    0.0D0,  0.0D0,
+     :       0.0D0,    17.4D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=131,140 ) /
+     :      -0.6D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -15.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -16.8D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      16.3D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -2.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -1.5D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -14.3D0,    -0.1D0,    0.0D0,  0.0D0,
+     :      14.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -13.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -14.3D0,    -0.1D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=141,150 ) /
+     :     -13.7D0,     0.0D0,    0.0D0,  0.0D0,
+     :      13.1D0,     0.1D0,    0.0D0,  0.0D0,
+     :      -1.7D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -12.8D0,     0.0D0,    0.0D0,  0.0D0,
+     :       0.0D0,   -14.4D0,    0.0D0,  0.0D0,
+     :      12.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -12.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -0.8D0,     0.0D0,    0.0D0,  0.0D0,
+     :      10.9D0,     0.1D0,    0.0D0,  0.0D0,
+     :     -10.8D0,     0.0D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=151,160 ) /
+     :      10.5D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -10.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -11.2D0,     0.0D0,    0.0D0,  0.0D0,
+     :      10.5D0,     0.1D0,    0.0D0,  0.0D0,
+     :      -1.4D0,     0.0D0,    0.0D0,  0.0D0,
+     :       0.0D0,     0.1D0,    0.0D0,  0.0D0,
+     :       0.7D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -10.3D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -10.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :       9.6D0,     0.0D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=161,170 ) /
+     :       9.4D0,     0.1D0,    0.0D0,  0.0D0,
+     :       0.6D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -87.7D0,     4.4D0,   -0.4D0, -6.3D0,
+     :      46.3D0,    22.4D0,    0.5D0, -2.4D0,
+     :      15.6D0,    -3.4D0,    0.1D0,  0.4D0,
+     :       5.2D0,     5.8D0,    0.2D0, -0.1D0,
+     :     -30.1D0,    26.9D0,    0.7D0,  0.0D0,
+     :      23.2D0,    -0.5D0,    0.0D0,  0.6D0,
+     :       1.0D0,    23.2D0,    3.4D0,  0.0D0,
+     :     -12.2D0,    -4.3D0,    0.0D0,  0.0D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=171,180 ) /
+     :      -2.1D0,    -3.7D0,   -0.2D0,  0.1D0,
+     :     -18.6D0,    -3.8D0,   -0.4D0,  1.8D0,
+     :       5.5D0,   -18.7D0,   -1.8D0, -0.5D0,
+     :      -5.5D0,   -18.7D0,    1.8D0, -0.5D0,
+     :      18.4D0,    -3.6D0,    0.3D0,  0.9D0,
+     :      -0.6D0,     1.3D0,    0.0D0,  0.0D0,
+     :      -5.6D0,   -19.5D0,    1.9D0,  0.0D0,
+     :       5.5D0,   -19.1D0,   -1.9D0,  0.0D0,
+     :     -17.3D0,    -0.8D0,    0.0D0,  0.9D0,
+     :      -3.2D0,    -8.3D0,   -0.8D0,  0.3D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=181,190 ) /
+     :      -0.1D0,     0.0D0,    0.0D0,  0.0D0,
+     :      -5.4D0,     7.8D0,   -0.3D0,  0.0D0,
+     :     -14.8D0,     1.4D0,    0.0D0,  0.3D0,
+     :      -3.8D0,     0.4D0,    0.0D0, -0.2D0,
+     :      12.6D0,     3.2D0,    0.5D0, -1.5D0,
+     :       0.1D0,     0.0D0,    0.0D0,  0.0D0,
+     :     -13.6D0,     2.4D0,   -0.1D0,  0.0D0,
+     :       0.9D0,     1.2D0,    0.0D0,  0.0D0,
+     :     -11.9D0,    -0.5D0,    0.0D0,  0.3D0,
+     :       0.4D0,    12.0D0,    0.3D0, -0.2D0 /
+      DATA ( ( EPS(I,J), I=1,4 ), J=191,NTERMS ) /
+     :       8.3D0,     6.1D0,   -0.1D0,  0.1D0,
+     :       0.0D0,     0.0D0,    0.0D0,  0.0D0,
+     :       0.4D0,   -10.8D0,    0.3D0,  0.0D0,
+     :       9.6D0,     2.2D0,    0.3D0, -1.2D0 /
+
+
+
+*  Interval between fundamental epoch J2000.0 and given epoch (JC).
+      T = (DATE-DJM0)/DJC
+
+*  Mean anomaly of the Moon.
+      EL  = 134.96340251D0*DD2R+
+     :      MOD(T*(1717915923.2178D0+
+     :          T*(        31.8792D0+
+     :          T*(         0.051635D0+
+     :          T*(       - 0.00024470D0)))),TURNAS)*DAS2R
+
+*  Mean anomaly of the Sun.
+      ELP = 357.52910918D0*DD2R+
+     :      MOD(T*( 129596581.0481D0+
+     :          T*(       - 0.5532D0+
+     :          T*(         0.000136D0+
+     :          T*(       - 0.00001149D0)))),TURNAS)*DAS2R
+
+*  Mean argument of the latitude of the Moon.
+      F   =  93.27209062D0*DD2R+
+     :      MOD(T*(1739527262.8478D0+
+     :          T*(      - 12.7512D0+
+     :          T*(      -  0.001037D0+
+     :          T*(         0.00000417D0)))),TURNAS)*DAS2R
+
+*  Mean elongation of the Moon from the Sun.
+      D   = 297.85019547D0*DD2R+
+     :      MOD(T*(1602961601.2090D0+
+     :          T*(       - 6.3706D0+
+     :          T*(         0.006539D0+
+     :          T*(       - 0.00003169D0)))),TURNAS)*DAS2R
+
+*  Mean longitude of the ascending node of the Moon.
+      OM  = 125.04455501D0*DD2R+
+     :      MOD(T*( - 6962890.5431D0+
+     :          T*(         7.4722D0+
+     :          T*(         0.007702D0+
+     :          T*(       - 0.00005939D0)))),TURNAS)*DAS2R
+
+*  Mean longitude of Venus.
+      VE    = 181.97980085D0*DD2R+MOD(210664136.433548D0*T,TURNAS)*DAS2R
+
+*  Mean longitude of Mars.
+      MA    = 355.43299958D0*DD2R+MOD( 68905077.493988D0*T,TURNAS)*DAS2R
+
+*  Mean longitude of Jupiter.
+      JU    =  34.35151874D0*DD2R+MOD( 10925660.377991D0*T,TURNAS)*DAS2R
+
+*  Mean longitude of Saturn.
+      SA    =  50.07744430D0*DD2R+MOD(  4399609.855732D0*T,TURNAS)*DAS2R
+
+*  Geodesic nutation (Fukushima 1991) in microarcsec.
+      DP = -153.1D0*SIN(ELP)-1.9D0*SIN(2D0*ELP)
+      DE = 0D0
+
+*  Shirai & Fukushima (2001) nutation series.
+      DO J=NTERMS,1,-1
+         THETA = DBLE(NA(1,J))*EL+
+     :           DBLE(NA(2,J))*ELP+
+     :           DBLE(NA(3,J))*F+
+     :           DBLE(NA(4,J))*D+
+     :           DBLE(NA(5,J))*OM+
+     :           DBLE(NA(6,J))*VE+
+     :           DBLE(NA(7,J))*MA+
+     :           DBLE(NA(8,J))*JU+
+     :           DBLE(NA(9,J))*SA
+         C = COS(THETA)
+         S = SIN(THETA)
+         DP = DP+(PSI(1,J)+PSI(3,J)*T)*C+(PSI(2,J)+PSI(4,J)*T)*S
+         DE = DE+(EPS(1,J)+EPS(3,J)*T)*C+(EPS(2,J)+EPS(4,J)*T)*S
+      END DO
+
+*  Change of units, and addition of the precession correction.
+      DPSI = (DP*1D-6-0.042888D0-0.29856D0*T)*DAS2R
+      DEPS = (DE*1D-6-0.005171D0-0.02408D0*T)*DAS2R
+
+*  Mean obliquity of date (Simon et al. 1994).
+      EPS0 = (84381.412D0+
+     :         (-46.80927D0+
+     :          (-0.000152D0+
+     :           (0.0019989D0+
+     :          (-0.00000051D0+
+     :          (-0.000000025D0)*T)*T)*T)*T)*T)*DAS2R
+
+      END
diff --git a/nutc80.f b/nutc80.f
new file mode 100644
index 0000000000000000000000000000000000000000..b3d728a4bb592489a6e226f6a40f29bd2ca7066f
--- /dev/null
+++ b/nutc80.f
@@ -0,0 +1,475 @@
+      SUBROUTINE sla_NUTC80 (DATE, DPSI, DEPS, EPS0)
+*+
+*     - - - - - - -
+*      N U T C 8 0
+*     - - - - - - -
+*
+*  Nutation:  longitude & obliquity components and mean obliquity,
+*  using the IAU 1980 theory (double precision)
+*
+*  Given:
+*     DATE        d     TDB (loosely ET) as Modified Julian Date
+*                                            (JD-2400000.5)
+*  Returned:
+*     DPSI,DEPS   d     nutation in longitude,obliquity
+*     EPS0        d     mean obliquity
+*
+*  Called:  sla_DRANGE
+*
+*  Notes:
+*
+*  1  Earth attitude predictions made by combining the present nutation
+*     model with IAU 1976 precession are accurate to 0.35 arcsec over
+*     the interval 1900-2100.  (The accuracy is much better near the
+*     middle of the interval.)
+*
+*  2  The sla_NUTC routine is the equivalent of the present routine
+*     but using the Shirai & Fukushima 2001 forced nutation theory
+*     (SF2001).  The newer theory is more accurate than IAU 1980,
+*     within 1 mas (with respect to the ICRF) for a few decades around
+*     2000.  The improvement is mainly because of the corrections to the
+*     IAU 1976 precession that the SF2001 theory includes.
+*
+*  References:
+*     Final report of the IAU Working Group on Nutation,
+*      chairman P.K.Seidelmann, 1980.
+*     Kaplan,G.H., 1981, USNO circular no. 163, pA3-6.
+*
+*  P.T.Wallace   Starlink   7 October 2001
+*
+*  Copyright (C) 2001 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,DPSI,DEPS,EPS0
+
+      DOUBLE PRECISION T2AS,AS2R,U2R
+      DOUBLE PRECISION T,EL,EL2,EL3
+      DOUBLE PRECISION ELP,ELP2
+      DOUBLE PRECISION F,F2,F4
+      DOUBLE PRECISION D,D2,D4
+      DOUBLE PRECISION OM,OM2
+      DOUBLE PRECISION DP,DE
+      DOUBLE PRECISION A
+
+      DOUBLE PRECISION sla_DRANGE
+
+
+*  Turns to arc seconds
+      PARAMETER (T2AS=1296000D0)
+*  Arc seconds to radians
+      PARAMETER (AS2R=0.484813681109535994D-5)
+*  Units of 0.0001 arcsec to radians
+      PARAMETER (U2R=AS2R/1D4)
+
+
+
+
+*  Interval between basic epoch J2000.0 and current epoch (JC)
+      T=(DATE-51544.5D0)/36525D0
+
+*
+*  FUNDAMENTAL ARGUMENTS in the FK5 reference system
+*
+
+*  Mean longitude of the Moon minus mean longitude of the Moon's perigee
+      EL=sla_DRANGE(AS2R*(485866.733D0+(1325D0*T2AS+715922.633D0
+     :                   +(31.310D0+0.064D0*T)*T)*T))
+
+*  Mean longitude of the Sun minus mean longitude of the Sun's perigee
+      ELP=sla_DRANGE(AS2R*(1287099.804D0+(99D0*T2AS+1292581.224D0
+     :                   +(-0.577D0-0.012D0*T)*T)*T))
+
+*  Mean longitude of the Moon minus mean longitude of the Moon's node
+      F=sla_DRANGE(AS2R*(335778.877D0+(1342D0*T2AS+295263.137D0
+     :                   +(-13.257D0+0.011D0*T)*T)*T))
+
+*  Mean elongation of the Moon from the Sun
+      D=sla_DRANGE(AS2R*(1072261.307D0+(1236D0*T2AS+1105601.328D0
+     :                   +(-6.891D0+0.019D0*T)*T)*T))
+
+*  Longitude of the mean ascending node of the lunar orbit on the
+*   ecliptic, measured from the mean equinox of date
+      OM=sla_DRANGE(AS2R*(450160.280D0+(-5D0*T2AS-482890.539D0
+     :                   +(7.455D0+0.008D0*T)*T)*T))
+
+*  Multiples of arguments
+      EL2=EL+EL
+      EL3=EL2+EL
+      ELP2=ELP+ELP
+      F2=F+F
+      F4=F2+F2
+      D2=D+D
+      D4=D2+D2
+      OM2=OM+OM
+
+
+*
+*  SERIES FOR THE NUTATION
+*
+      DP=0D0
+      DE=0D0
+
+*  106
+      DP=DP+SIN(ELP+D)
+*  105
+      DP=DP-SIN(F2+D4+OM2)
+*  104
+      DP=DP+SIN(EL2+D2)
+*  103
+      DP=DP-SIN(EL-F2+D2)
+*  102
+      DP=DP-SIN(EL+ELP-D2+OM)
+*  101
+      DP=DP-SIN(-ELP+F2+OM)
+*  100
+      DP=DP-SIN(EL-F2-D2)
+*  99
+      DP=DP-SIN(ELP+D2)
+*  98
+      DP=DP-SIN(F2-D+OM2)
+*  97
+      DP=DP-SIN(-F2+OM)
+*  96
+      DP=DP+SIN(-EL-ELP+D2+OM)
+*  95
+      DP=DP+SIN(ELP+F2+OM)
+*  94
+      DP=DP-SIN(EL+F2-D2)
+*  93
+      DP=DP+SIN(EL3+F2-D2+OM2)
+*  92
+      DP=DP+SIN(F4-D2+OM2)
+*  91
+      DP=DP-SIN(EL+D2+OM)
+*  90
+      DP=DP-SIN(EL2+F2+D2+OM2)
+*  89
+      A=EL2+F2-D2+OM
+      DP=DP+SIN(A)
+      DE=DE-COS(A)
+*  88
+      DP=DP+SIN(EL-ELP-D2)
+*  87
+      DP=DP+SIN(-EL+F4+OM2)
+*  86
+      A=-EL2+F2+D4+OM2
+      DP=DP-SIN(A)
+      DE=DE+COS(A)
+*  85
+      A=EL+F2+D2+OM
+      DP=DP-SIN(A)
+      DE=DE+COS(A)
+*  84
+      A=EL+ELP+F2-D2+OM2
+      DP=DP+SIN(A)
+      DE=DE-COS(A)
+*  83
+      DP=DP-SIN(EL2-D4)
+*  82
+      A=-EL+F2+D4+OM2
+      DP=DP-2D0*SIN(A)
+      DE=DE+COS(A)
+*  81
+      A=-EL2+F2+D2+OM2
+      DP=DP+SIN(A)
+      DE=DE-COS(A)
+*  80
+      DP=DP-SIN(EL-D4)
+*  79
+      A=-EL+OM2
+      DP=DP+SIN(A)
+      DE=DE-COS(A)
+*  78
+      A=F2+D+OM2
+      DP=DP+2D0*SIN(A)
+      DE=DE-COS(A)
+*  77
+      DP=DP+2D0*SIN(EL3)
+*  76
+      A=EL+OM2
+      DP=DP-2D0*SIN(A)
+      DE=DE+COS(A)
+*  75
+      A=EL2+OM
+      DP=DP+2D0*SIN(A)
+      DE=DE-COS(A)
+*  74
+      A=-EL+F2-D2+OM
+      DP=DP-2D0*SIN(A)
+      DE=DE+COS(A)
+*  73
+      A=EL+ELP+F2+OM2
+      DP=DP+2D0*SIN(A)
+      DE=DE-COS(A)
+*  72
+      A=-ELP+F2+D2+OM2
+      DP=DP-3D0*SIN(A)
+      DE=DE+COS(A)
+*  71
+      A=EL3+F2+OM2
+      DP=DP-3D0*SIN(A)
+      DE=DE+COS(A)
+*  70
+      A=-EL2+OM
+      DP=DP-2D0*SIN(A)
+      DE=DE+COS(A)
+*  69
+      A=-EL-ELP+F2+D2+OM2
+      DP=DP-3D0*SIN(A)
+      DE=DE+COS(A)
+*  68
+      A=EL-ELP+F2+OM2
+      DP=DP-3D0*SIN(A)
+      DE=DE+COS(A)
+*  67
+      DP=DP+3D0*SIN(EL+F2)
+*  66
+      DP=DP-3D0*SIN(EL+ELP)
+*  65
+      DP=DP-4D0*SIN(D)
+*  64
+      DP=DP+4D0*SIN(EL-F2)
+*  63
+      DP=DP-4D0*SIN(ELP-D2)
+*  62
+      A=EL2+F2+OM
+      DP=DP-5D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  61
+      DP=DP+5D0*SIN(EL-ELP)
+*  60
+      A=-D2+OM
+      DP=DP-5D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  59
+      A=EL+F2-D2+OM
+      DP=DP+6D0*SIN(A)
+      DE=DE-3D0*COS(A)
+*  58
+      A=F2+D2+OM
+      DP=DP-7D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  57
+      A=D2+OM
+      DP=DP-6D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  56
+      A=EL2+F2-D2+OM2
+      DP=DP+6D0*SIN(A)
+      DE=DE-3D0*COS(A)
+*  55
+      DP=DP+6D0*SIN(EL+D2)
+*  54
+      A=EL+F2+D2+OM2
+      DP=DP-8D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  53
+      A=-ELP+F2+OM2
+      DP=DP-7D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  52
+      A=ELP+F2+OM2
+      DP=DP+7D0*SIN(A)
+      DE=DE-3D0*COS(A)
+*  51
+      DP=DP-7D0*SIN(EL+ELP-D2)
+*  50
+      A=-EL+F2+D2+OM
+      DP=DP-10D0*SIN(A)
+      DE=DE+5D0*COS(A)
+*  49
+      A=EL-D2+OM
+      DP=DP-13D0*SIN(A)
+      DE=DE+7D0*COS(A)
+*  48
+      A=-EL+D2+OM
+      DP=DP+16D0*SIN(A)
+      DE=DE-8D0*COS(A)
+*  47
+      A=-EL+F2+OM
+      DP=DP+21D0*SIN(A)
+      DE=DE-10D0*COS(A)
+*  46
+      DP=DP+26D0*SIN(F2)
+      DE=DE-COS(F2)
+*  45
+      A=EL2+F2+OM2
+      DP=DP-31D0*SIN(A)
+      DE=DE+13D0*COS(A)
+*  44
+      A=EL+F2-D2+OM2
+      DP=DP+29D0*SIN(A)
+      DE=DE-12D0*COS(A)
+*  43
+      DP=DP+29D0*SIN(EL2)
+      DE=DE-COS(EL2)
+*  42
+      A=F2+D2+OM2
+      DP=DP-38D0*SIN(A)
+      DE=DE+16D0*COS(A)
+*  41
+      A=EL+F2+OM
+      DP=DP-51D0*SIN(A)
+      DE=DE+27D0*COS(A)
+*  40
+      A=-EL+F2+D2+OM2
+      DP=DP-59D0*SIN(A)
+      DE=DE+26D0*COS(A)
+*  39
+      A=-EL+OM
+      DP=DP+(-58D0-0.1D0*T)*SIN(A)
+      DE=DE+32D0*COS(A)
+*  38
+      A=EL+OM
+      DP=DP+(63D0+0.1D0*T)*SIN(A)
+      DE=DE-33D0*COS(A)
+*  37
+      DP=DP+63D0*SIN(D2)
+      DE=DE-2D0*COS(D2)
+*  36
+      A=-EL+F2+OM2
+      DP=DP+123D0*SIN(A)
+      DE=DE-53D0*COS(A)
+*  35
+      A=EL-D2
+      DP=DP-158D0*SIN(A)
+      DE=DE-COS(A)
+*  34
+      A=EL+F2+OM2
+      DP=DP-301D0*SIN(A)
+      DE=DE+(129D0-0.1D0*T)*COS(A)
+*  33
+      A=F2+OM
+      DP=DP+(-386D0-0.4D0*T)*SIN(A)
+      DE=DE+200D0*COS(A)
+*  32
+      DP=DP+(712D0+0.1D0*T)*SIN(EL)
+      DE=DE-7D0*COS(EL)
+*  31
+      A=F2+OM2
+      DP=DP+(-2274D0-0.2D0*T)*SIN(A)
+      DE=DE+(977D0-0.5D0*T)*COS(A)
+*  30
+      DP=DP-SIN(ELP+F2-D2)
+*  29
+      DP=DP+SIN(-EL+D+OM)
+*  28
+      DP=DP+SIN(ELP+OM2)
+*  27
+      DP=DP-SIN(ELP-F2+D2)
+*  26
+      DP=DP+SIN(-F2+D2+OM)
+*  25
+      DP=DP+SIN(EL2+ELP-D2)
+*  24
+      DP=DP-4D0*SIN(EL-D)
+*  23
+      A=ELP+F2-D2+OM
+      DP=DP+4D0*SIN(A)
+      DE=DE-2D0*COS(A)
+*  22
+      A=EL2-D2+OM
+      DP=DP+4D0*SIN(A)
+      DE=DE-2D0*COS(A)
+*  21
+      A=-ELP+F2-D2+OM
+      DP=DP-5D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  20
+      A=-EL2+D2+OM
+      DP=DP-6D0*SIN(A)
+      DE=DE+3D0*COS(A)
+*  19
+      A=-ELP+OM
+      DP=DP-12D0*SIN(A)
+      DE=DE+6D0*COS(A)
+*  18
+      A=ELP2+F2-D2+OM2
+      DP=DP+(-16D0+0.1D0*T)*SIN(A)
+      DE=DE+7D0*COS(A)
+*  17
+      A=ELP+OM
+      DP=DP-15D0*SIN(A)
+      DE=DE+9D0*COS(A)
+*  16
+      DP=DP+(17D0-0.1D0*T)*SIN(ELP2)
+*  15
+      DP=DP-22D0*SIN(F2-D2)
+*  14
+      A=EL2-D2
+      DP=DP+48D0*SIN(A)
+      DE=DE+COS(A)
+*  13
+      A=F2-D2+OM
+      DP=DP+(129D0+0.1D0*T)*SIN(A)
+      DE=DE-70D0*COS(A)
+*  12
+      A=-ELP+F2-D2+OM2
+      DP=DP+(217D0-0.5D0*T)*SIN(A)
+      DE=DE+(-95D0+0.3D0*T)*COS(A)
+*  11
+      A=ELP+F2-D2+OM2
+      DP=DP+(-517D0+1.2D0*T)*SIN(A)
+      DE=DE+(224D0-0.6D0*T)*COS(A)
+*  10
+      DP=DP+(1426D0-3.4D0*T)*SIN(ELP)
+      DE=DE+(54D0-0.1D0*T)*COS(ELP)
+*  9
+      A=F2-D2+OM2
+      DP=DP+(-13187D0-1.6D0*T)*SIN(A)
+      DE=DE+(5736D0-3.1D0*T)*COS(A)
+*  8
+      DP=DP+SIN(EL2-F2+OM)
+*  7
+      A=-ELP2+F2-D2+OM
+      DP=DP-2D0*SIN(A)
+      DE=DE+1D0*COS(A)
+*  6
+      DP=DP-3D0*SIN(EL-ELP-D)
+*  5
+      A=-EL2+F2+OM2
+      DP=DP-3D0*SIN(A)
+      DE=DE+1D0*COS(A)
+*  4
+      DP=DP+11D0*SIN(EL2-F2)
+*  3
+      A=-EL2+F2+OM
+      DP=DP+46D0*SIN(A)
+      DE=DE-24D0*COS(A)
+*  2
+      DP=DP+(2062D0+0.2D0*T)*SIN(OM2)
+      DE=DE+(-895D0+0.5D0*T)*COS(OM2)
+*  1
+      DP=DP+(-171996D0-174.2D0*T)*SIN(OM)
+      DE=DE+(92025D0+8.9D0*T)*COS(OM)
+
+*  Convert results to radians
+      DPSI=DP*U2R
+      DEPS=DE*U2R
+
+*  Mean obliquity
+      EPS0=AS2R*(84381.448D0+
+     :           (-46.8150D0+
+     :           (-0.00059D0+
+     :           0.001813D0*T)*T)*T)
+
+      END
diff --git a/oap.f b/oap.f
new file mode 100644
index 0000000000000000000000000000000000000000..5ca77e6c790e5f42968b5fc5eaed6adda5de742f
--- /dev/null
+++ b/oap.f
@@ -0,0 +1,192 @@
+      SUBROUTINE sla_OAP ( TYPE, OB1, OB2, DATE, DUT, ELONGM, PHIM,
+     :                     HM, XP, YP, TDK, PMB, RH, WL, TLR,
+     :                     RAP, DAP )
+*+
+*     - - - -
+*      O A P
+*     - - - -
+*
+*  Observed to apparent place.
+*
+*  Given:
+*     TYPE   c*(*)  type of coordinates - 'R', 'H' or 'A' (see below)
+*     OB1    d      observed Az, HA or RA (radians; Az is N=0,E=90)
+*     OB2    d      observed ZD or Dec (radians)
+*     DATE   d      UTC date/time (modified Julian Date, JD-2400000.5)
+*     DUT    d      delta UT:  UT1-UTC (UTC seconds)
+*     ELONGM d      mean longitude of the observer (radians, east +ve)
+*     PHIM   d      mean geodetic latitude of the observer (radians)
+*     HM     d      observer's height above sea level (metres)
+*     XP     d      polar motion x-coordinate (radians)
+*     YP     d      polar motion y-coordinate (radians)
+*     TDK    d      local ambient temperature (K; std=273.15D0)
+*     PMB    d      local atmospheric pressure (mb; std=1013.25D0)
+*     RH     d      local relative humidity (in the range 0D0-1D0)
+*     WL     d      effective wavelength (micron, e.g. 0.55D0)
+*     TLR    d      tropospheric lapse rate (K/metre, e.g. 0.0065D0)
+*
+*  Returned:
+*     RAP    d      geocentric apparent right ascension
+*     DAP    d      geocentric apparent declination
+*
+*  Notes:
+*
+*  1)  Only the first character of the TYPE argument is significant.
+*      'R' or 'r' indicates that OBS1 and OBS2 are the observed right
+*      ascension and declination;  'H' or 'h' indicates that they are
+*      hour angle (west +ve) and declination;  anything else ('A' or
+*      'a' is recommended) indicates that OBS1 and OBS2 are azimuth
+*      (north zero, east 90 deg) and zenith distance.  (Zenith
+*      distance is used rather than elevation in order to reflect the
+*      fact that no allowance is made for depression of the horizon.)
+*
+*  2)  The accuracy of the result is limited by the corrections for
+*      refraction.  Providing the meteorological parameters are
+*      known accurately and there are no gross local effects, the
+*      predicted apparent RA,Dec should be within about 0.1 arcsec
+*      for a zenith distance of less than 70 degrees.  Even at a
+*      topocentric zenith distance of 90 degrees, the accuracy in
+*      elevation should be better than 1 arcmin;  useful results
+*      are available for a further 3 degrees, beyond which the
+*      sla_REFRO routine returns a fixed value of the refraction.
+*      The complementary routines sla_AOP (or sla_AOPQK) and sla_OAP
+*      (or sla_OAPQK) are self-consistent to better than 1 micro-
+*      arcsecond all over the celestial sphere.
+*
+*  3)  It is advisable to take great care with units, as even
+*      unlikely values of the input parameters are accepted and
+*      processed in accordance with the models used.
+*
+*  4)  "Observed" Az,El means the position that would be seen by a
+*      perfect theodolite located at the observer.  This is
+*      related to the observed HA,Dec via the standard rotation, using
+*      the geodetic latitude (corrected for polar motion), while the
+*      observed HA and RA are related simply through the local
+*      apparent ST.  "Observed" RA,Dec or HA,Dec thus means the
+*      position that would be seen by a perfect equatorial located
+*      at the observer and with its polar axis aligned to the
+*      Earth's axis of rotation (n.b. not to the refracted pole).
+*      By removing from the observed place the effects of
+*      atmospheric refraction and diurnal aberration, the
+*      geocentric apparent RA,Dec is obtained.
+*
+*  5)  Frequently, mean rather than apparent RA,Dec will be required,
+*      in which case further transformations will be necessary.  The
+*      sla_AMP etc routines will convert the apparent RA,Dec produced
+*      by the present routine into an "FK5" (J2000) mean place, by
+*      allowing for the Sun's gravitational lens effect, annual
+*      aberration, nutation and precession.  Should "FK4" (1950)
+*      coordinates be needed, the routines sla_FK524 etc will also
+*      need to be applied.
+*
+*  6)  To convert to apparent RA,Dec the coordinates read from a
+*      real telescope, corrections would have to be applied for
+*      encoder zero points, gear and encoder errors, tube flexure,
+*      the position of the rotator axis and the pointing axis
+*      relative to it, non-perpendicularity between the mounting
+*      axes, and finally for the tilt of the azimuth or polar axis
+*      of the mounting (with appropriate corrections for mount
+*      flexures).  Some telescopes would, of course, exhibit other
+*      properties which would need to be accounted for at the
+*      appropriate point in the sequence.
+*
+*  7)  This routine takes time to execute, due mainly to the rigorous
+*      integration used to evaluate the refraction.  For processing
+*      multiple stars for one location and time, call sla_AOPPA once
+*      followed by one call per star to sla_OAPQK.  Where a range of
+*      times within a limited period of a few hours is involved, and the
+*      highest precision is not required, call sla_AOPPA once, followed
+*      by a call to sla_AOPPAT each time the time changes, followed by
+*      one call per star to sla_OAPQK.
+*
+*  8)  The DATE argument is UTC expressed as an MJD.  This is, strictly
+*      speaking, wrong, because of leap seconds.  However, as long as
+*      the delta UT and the UTC are consistent there are no
+*      difficulties, except during a leap second.  In this case, the
+*      start of the 61st second of the final minute should begin a new
+*      MJD day and the old pre-leap delta UT should continue to be used.
+*      As the 61st second completes, the MJD should revert to the start
+*      of the day as, simultaneously, the delta UTC changes by one
+*      second to its post-leap new value.
+*
+*  9)  The delta UT (UT1-UTC) is tabulated in IERS circulars and
+*      elsewhere.  It increases by exactly one second at the end of
+*      each UTC leap second, introduced in order to keep delta UT
+*      within +/- 0.9 seconds.
+*
+*  10) IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.
+*      The longitude required by the present routine is east-positive,
+*      in accordance with geographical convention (and right-handed).
+*      In particular, note that the longitudes returned by the
+*      sla_OBS routine are west-positive, following astronomical
+*      usage, and must be reversed in sign before use in the present
+*      routine.
+*
+*  11) The polar coordinates XP,YP can be obtained from IERS
+*      circulars and equivalent publications.  The maximum amplitude
+*      is about 0.3 arcseconds.  If XP,YP values are unavailable,
+*      use XP=YP=0D0.  See page B60 of the 1988 Astronomical Almanac
+*      for a definition of the two angles.
+*
+*  12) The height above sea level of the observing station, HM,
+*      can be obtained from the Astronomical Almanac (Section J
+*      in the 1988 edition), or via the routine sla_OBS.  If P,
+*      the pressure in millibars, is available, an adequate
+*      estimate of HM can be obtained from the expression
+*
+*             HM ~ -29.3D0*TSL*LOG(P/1013.25D0).
+*
+*      where TSL is the approximate sea-level air temperature in K
+*      (see Astrophysical Quantities, C.W.Allen, 3rd edition,
+*      section 52).  Similarly, if the pressure P is not known,
+*      it can be estimated from the height of the observing
+*      station, HM, as follows:
+*
+*             P ~ 1013.25D0*EXP(-HM/(29.3D0*TSL)).
+*
+*      Note, however, that the refraction is nearly proportional to the
+*      pressure and that an accurate P value is important for precise
+*      work.
+*
+*  13) The azimuths etc. used by the present routine are with respect
+*      to the celestial pole.  Corrections from the terrestrial pole
+*      can be computed using sla_POLMO.
+*
+*  Called:  sla_AOPPA, sla_OAPQK
+*
+*  Last revision:   2 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) TYPE
+      DOUBLE PRECISION OB1,OB2,DATE,DUT,ELONGM,PHIM,HM,
+     :                 XP,YP,TDK,PMB,RH,WL,TLR,RAP,DAP
+
+      DOUBLE PRECISION AOPRMS(14)
+
+
+      CALL sla_AOPPA(DATE,DUT,ELONGM,PHIM,HM,XP,YP,TDK,PMB,RH,WL,TLR,
+     :               AOPRMS)
+      CALL sla_OAPQK(TYPE,OB1,OB2,AOPRMS,RAP,DAP)
+
+      END
diff --git a/oapqk.f b/oapqk.f
new file mode 100644
index 0000000000000000000000000000000000000000..2a5ea22b4f3cbbad496d187ee73dfd7e20da3612
--- /dev/null
+++ b/oapqk.f
@@ -0,0 +1,250 @@
+      SUBROUTINE sla_OAPQK (TYPE, OB1, OB2, AOPRMS, RAP, DAP)
+*+
+*     - - - - - -
+*      O A P Q K
+*     - - - - - -
+*
+*  Quick observed to apparent place
+*
+*  Given:
+*     TYPE   c*(*)  type of coordinates - 'R', 'H' or 'A' (see below)
+*     OB1    d      observed Az, HA or RA (radians; Az is N=0,E=90)
+*     OB2    d      observed ZD or Dec (radians)
+*     AOPRMS d(14)  star-independent apparent-to-observed parameters:
+*
+*       (1)      geodetic latitude (radians)
+*       (2,3)    sine and cosine of geodetic latitude
+*       (4)      magnitude of diurnal aberration vector
+*       (5)      height (HM)
+*       (6)      ambient temperature (T)
+*       (7)      pressure (P)
+*       (8)      relative humidity (RH)
+*       (9)      wavelength (WL)
+*       (10)     lapse rate (TLR)
+*       (11,12)  refraction constants A and B (radians)
+*       (13)     longitude + eqn of equinoxes + sidereal DUT (radians)
+*       (14)     local apparent sidereal time (radians)
+*
+*  Returned:
+*     RAP    d      geocentric apparent right ascension
+*     DAP    d      geocentric apparent declination
+*
+*  Notes:
+*
+*  1)  Only the first character of the TYPE argument is significant.
+*      'R' or 'r' indicates that OBS1 and OBS2 are the observed right
+*      ascension and declination;  'H' or 'h' indicates that they are
+*      hour angle (west +ve) and declination;  anything else ('A' or
+*      'a' is recommended) indicates that OBS1 and OBS2 are azimuth
+*      (north zero, east 90 deg) and zenith distance.  (Zenith distance
+*      is used rather than elevation in order to reflect the fact that
+*      no allowance is made for depression of the horizon.)
+*
+*  2)  The accuracy of the result is limited by the corrections for
+*      refraction.  Providing the meteorological parameters are
+*      known accurately and there are no gross local effects, the
+*      predicted apparent RA,Dec should be within about 0.1 arcsec
+*      for a zenith distance of less than 70 degrees.  Even at a
+*      topocentric zenith distance of 90 degrees, the accuracy in
+*      elevation should be better than 1 arcmin;  useful results
+*      are available for a further 3 degrees, beyond which the
+*      sla_REFRO routine returns a fixed value of the refraction.
+*      The complementary routines sla_AOP (or sla_AOPQK) and sla_OAP
+*      (or sla_OAPQK) are self-consistent to better than 1 micro-
+*      arcsecond all over the celestial sphere.
+*
+*  3)  It is advisable to take great care with units, as even
+*      unlikely values of the input parameters are accepted and
+*      processed in accordance with the models used.
+*
+*  5)  "Observed" Az,El means the position that would be seen by a
+*      perfect theodolite located at the observer.  This is
+*      related to the observed HA,Dec via the standard rotation, using
+*      the geodetic latitude (corrected for polar motion), while the
+*      observed HA and RA are related simply through the local
+*      apparent ST.  "Observed" RA,Dec or HA,Dec thus means the
+*      position that would be seen by a perfect equatorial located
+*      at the observer and with its polar axis aligned to the
+*      Earth's axis of rotation (n.b. not to the refracted pole).
+*      By removing from the observed place the effects of
+*      atmospheric refraction and diurnal aberration, the
+*      geocentric apparent RA,Dec is obtained.
+*
+*  5)  Frequently, mean rather than apparent RA,Dec will be required,
+*      in which case further transformations will be necessary.  The
+*      sla_AMP etc routines will convert the apparent RA,Dec produced
+*      by the present routine into an "FK5" (J2000) mean place, by
+*      allowing for the Sun's gravitational lens effect, annual
+*      aberration, nutation and precession.  Should "FK4" (1950)
+*      coordinates be needed, the routines sla_FK524 etc will also
+*      need to be applied.
+*
+*  6)  To convert to apparent RA,Dec the coordinates read from a
+*      real telescope, corrections would have to be applied for
+*      encoder zero points, gear and encoder errors, tube flexure,
+*      the position of the rotator axis and the pointing axis
+*      relative to it, non-perpendicularity between the mounting
+*      axes, and finally for the tilt of the azimuth or polar axis
+*      of the mounting (with appropriate corrections for mount
+*      flexures).  Some telescopes would, of course, exhibit other
+*      properties which would need to be accounted for at the
+*      appropriate point in the sequence.
+*
+*  7)  The star-independent apparent-to-observed-place parameters
+*      in AOPRMS may be computed by means of the sla_AOPPA routine.
+*      If nothing has changed significantly except the time, the
+*      sla_AOPPAT routine may be used to perform the requisite
+*      partial recomputation of AOPRMS.
+*
+*  8) The azimuths etc used by the present routine are with respect
+*     to the celestial pole.  Corrections from the terrestrial pole
+*     can be computed using sla_POLMO.
+*
+*  Called:  sla_DCS2C, sla_DCC2S, sla_REFRO, sla_DRANRM
+*
+*  Last revision:   29 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) TYPE
+      DOUBLE PRECISION OB1,OB2,AOPRMS(14),RAP,DAP
+
+*  Breakpoint for fast/slow refraction algorithm:
+*  ZD greater than arctan(4), (see sla_REFCO routine)
+*  or vector Z less than cosine(arctan(Z)) = 1/sqrt(17)
+      DOUBLE PRECISION ZBREAK
+      PARAMETER (ZBREAK=0.242535625D0)
+
+      CHARACTER C
+      DOUBLE PRECISION C1,C2,SPHI,CPHI,ST,CE,XAEO,YAEO,ZAEO,V(3),
+     :                 XMHDO,YMHDO,ZMHDO,AZ,SZ,ZDO,TZ,DREF,ZDT,
+     :                 XAET,YAET,ZAET,XMHDA,YMHDA,ZMHDA,DIURAB,F,HMA
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+*  Coordinate type
+      C = TYPE(1:1)
+
+*  Coordinates
+      C1 = OB1
+      C2 = OB2
+
+*  Sin, cos of latitude
+      SPHI = AOPRMS(2)
+      CPHI = AOPRMS(3)
+
+*  Local apparent sidereal time
+      ST = AOPRMS(14)
+
+*  Standardise coordinate type
+      IF (C.EQ.'R'.OR.C.EQ.'r') THEN
+         C = 'R'
+      ELSE IF (C.EQ.'H'.OR.C.EQ.'h') THEN
+         C = 'H'
+      ELSE
+         C = 'A'
+      END IF
+
+*  If Az,ZD convert to Cartesian (S=0,E=90)
+      IF (C.EQ.'A') THEN
+         CE = SIN(C2)
+         XAEO = -COS(C1)*CE
+         YAEO = SIN(C1)*CE
+         ZAEO = COS(C2)
+      ELSE
+
+*     If RA,Dec convert to HA,Dec
+         IF (C.EQ.'R') THEN
+            C1 = ST-C1
+         END IF
+
+*     To Cartesian -HA,Dec
+         CALL sla_DCS2C(-C1,C2,V)
+         XMHDO = V(1)
+         YMHDO = V(2)
+         ZMHDO = V(3)
+
+*     To Cartesian Az,El (S=0,E=90)
+         XAEO = SPHI*XMHDO-CPHI*ZMHDO
+         YAEO = YMHDO
+         ZAEO = CPHI*XMHDO+SPHI*ZMHDO
+      END IF
+
+*  Azimuth (S=0,E=90)
+      IF (XAEO.NE.0D0.OR.YAEO.NE.0D0) THEN
+         AZ = ATAN2(YAEO,XAEO)
+      ELSE
+         AZ = 0D0
+      END IF
+
+*  Sine of observed ZD, and observed ZD
+      SZ = SQRT(XAEO*XAEO+YAEO*YAEO)
+      ZDO = ATAN2(SZ,ZAEO)
+
+*
+*  Refraction
+*  ----------
+
+*  Large zenith distance?
+      IF (ZAEO.GE.ZBREAK) THEN
+
+*     Fast algorithm using two constant model
+         TZ = SZ/ZAEO
+         DREF = (AOPRMS(11)+AOPRMS(12)*TZ*TZ)*TZ
+
+      ELSE
+
+*     Rigorous algorithm for large ZD
+         CALL sla_REFRO(ZDO,AOPRMS(5),AOPRMS(6),AOPRMS(7),AOPRMS(8),
+     :                  AOPRMS(9),AOPRMS(1),AOPRMS(10),1D-8,DREF)
+      END IF
+
+      ZDT = ZDO+DREF
+
+*  To Cartesian Az,ZD
+      CE = SIN(ZDT)
+      XAET = COS(AZ)*CE
+      YAET = SIN(AZ)*CE
+      ZAET = COS(ZDT)
+
+*  Cartesian Az,ZD to Cartesian -HA,Dec
+      XMHDA = SPHI*XAET+CPHI*ZAET
+      YMHDA = YAET
+      ZMHDA = -CPHI*XAET+SPHI*ZAET
+
+*  Diurnal aberration
+      DIURAB = -AOPRMS(4)
+      F = (1D0-DIURAB*YMHDA)
+      V(1) = F*XMHDA
+      V(2) = F*(YMHDA+DIURAB)
+      V(3) = F*ZMHDA
+
+*  To spherical -HA,Dec
+      CALL sla_DCC2S(V,HMA,DAP)
+
+*  Right Ascension
+      RAP = sla_DRANRM(ST+HMA)
+
+      END
diff --git a/obs.f b/obs.f
new file mode 100644
index 0000000000000000000000000000000000000000..ad48fee0e490db20131465ec75fc494af9c0b3e0
--- /dev/null
+++ b/obs.f
@@ -0,0 +1,942 @@
+      SUBROUTINE sla_OBS (N, C, NAME, W, P, H)
+*+
+*     - - - -
+*      O B S
+*     - - - -
+*
+*  Parameters of selected groundbased observing stations
+*
+*  Given:
+*     N       int     number specifying observing station
+*
+*  Either given or returned
+*     C       c*(*)   identifier specifying observing station
+*
+*  Returned:
+*     NAME    c*(*)   name of specified observing station
+*     W       dp      longitude (radians, West +ve)
+*     P       dp      geodetic latitude (radians, North +ve)
+*     H       dp      height above sea level (metres)
+*
+*  Notes:
+*
+*     Station identifiers C may be up to 10 characters long,
+*     and station names NAME may be up to 40 characters long.
+*
+*     C and N are alternative ways of specifying the observing
+*     station.  The C option, which is the most generally useful,
+*     may be selected by specifying an N value of zero or less.
+*     If N is 1 or more, the parameters of the Nth station
+*     in the currently supported list are interrogated, and
+*     the station identifier C is returned as well as NAME, W,
+*     P and H.
+*
+*     If the station parameters are not available, either because
+*     the station identifier C is not recognized, or because an
+*     N value greater than the number of stations supported is
+*     given, a name of '?' is returned and C, W, P and H are left
+*     in their current states.
+*
+*     Programs can obtain a list of all currently supported
+*     stations by calling the routine repeatedly, with N=1,2,3...
+*     When NAME='?' is seen, the list of stations has been
+*     exhausted.
+*
+*     Station numbers, identifiers, names and other details are
+*     subject to change and should not be hardwired into
+*     application programs.
+*
+*     All station identifiers C are uppercase only;  lowercase
+*     characters must be converted to uppercase by the calling
+*     program.  The station names returned may contain both upper-
+*     and lowercase.  All characters up to the first space are
+*     checked;  thus an abbreviated ID will return the parameters
+*     for the first station in the list which matches the
+*     abbreviation supplied, and no station in the list will ever
+*     contain embedded spaces.  C must not have leading spaces.
+*
+*     IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION.  The
+*     longitude returned by sla_OBS is west-positive in accordance
+*     with astronomical usage.  However, this sign convention is
+*     left-handed and is the opposite of the one used by geographers;
+*     elsewhere in SLALIB the preferable east-positive convention is
+*     used.  In particular, note that for use in sla_AOP, sla_AOPPA
+*     and sla_OAP the sign of the longitude must be reversed.
+*
+*     Users are urged to inform the author of any improvements
+*     they would like to see made.  For example:
+*
+*         typographical corrections
+*         more accurate parameters
+*         better station identifiers or names
+*         additional stations
+*
+*  P.T.Wallace   Starlink   15 March 2002
+*
+*  Copyright (C) 2002 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER N
+      CHARACTER C*(*),NAME*(*)
+      DOUBLE PRECISION W,P,H
+
+      INTEGER NMAX,M,NS,I
+      CHARACTER*10 CC
+
+      DOUBLE PRECISION AS2R,WEST,NORTH,EAST,SOUTH
+      INTEGER ID,IAM
+      REAL AS
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+*  Table of station identifiers
+      PARAMETER (NMAX=83)
+      CHARACTER*10 CTAB(NMAX)
+      DATA CTAB  (1) /'AAT       '/
+      DATA CTAB  (2) /'LPO4.2    '/
+      DATA CTAB  (3) /'LPO2.5    '/
+      DATA CTAB  (4) /'LPO1      '/
+      DATA CTAB  (5) /'LICK120   '/
+      DATA CTAB  (6) /'MMT       '/
+      DATA CTAB  (7) /'DAO72     '/
+      DATA CTAB  (8) /'DUPONT    '/
+      DATA CTAB  (9) /'MTHOP1.5  '/
+      DATA CTAB (10) /'STROMLO74 '/
+      DATA CTAB (11) /'ANU2.3    '/
+      DATA CTAB (12) /'GBVA140   '/
+      DATA CTAB (13) /'TOLOLO4M  '/
+      DATA CTAB (14) /'TOLOLO1.5M'/
+      DATA CTAB (15) /'TIDBINBLA '/
+      DATA CTAB (16) /'BLOEMF    '/
+      DATA CTAB (17) /'BOSQALEGRE'/
+      DATA CTAB (18) /'FLAGSTF61 '/
+      DATA CTAB (19) /'LOWELL72  '/
+      DATA CTAB (20) /'HARVARD   '/
+      DATA CTAB (21) /'OKAYAMA   '/
+      DATA CTAB (22) /'KPNO158   '/
+      DATA CTAB (23) /'KPNO90    '/
+      DATA CTAB (24) /'KPNO84    '/
+      DATA CTAB (25) /'KPNO36FT  '/
+      DATA CTAB (26) /'KOTTAMIA  '/
+      DATA CTAB (27) /'ESO3.6    '/
+      DATA CTAB (28) /'MAUNAK88  '/
+      DATA CTAB (29) /'UKIRT     '/
+      DATA CTAB (30) /'QUEBEC1.6 '/
+      DATA CTAB (31) /'MTEKAR    '/
+      DATA CTAB (32) /'MTLEMMON60'/
+      DATA CTAB (33) /'MCDONLD2.7'/
+      DATA CTAB (34) /'MCDONLD2.1'/
+      DATA CTAB (35) /'PALOMAR200'/
+      DATA CTAB (36) /'PALOMAR60 '/
+      DATA CTAB (37) /'DUNLAP74  '/
+      DATA CTAB (38) /'HPROV1.93 '/
+      DATA CTAB (39) /'HPROV1.52 '/
+      DATA CTAB (40) /'SANPM83   '/
+      DATA CTAB (41) /'SAAO74    '/
+      DATA CTAB (42) /'TAUTNBG   '/
+      DATA CTAB (43) /'CATALINA61'/
+      DATA CTAB (44) /'STEWARD90 '/
+      DATA CTAB (45) /'USSR6     '/
+      DATA CTAB (46) /'ARECIBO   '/
+      DATA CTAB (47) /'CAMB5KM   '/
+      DATA CTAB (48) /'CAMB1MILE '/
+      DATA CTAB (49) /'EFFELSBERG'/
+      DATA CTAB (50) /'GBVA300   '/
+      DATA CTAB (51) /'JODRELL1  '/
+      DATA CTAB (52) /'PARKES    '/
+      DATA CTAB (53) /'VLA       '/
+      DATA CTAB (54) /'SUGARGROVE'/
+      DATA CTAB (55) /'USSR600   '/
+      DATA CTAB (56) /'NOBEYAMA  '/
+      DATA CTAB (57) /'JCMT      '/
+      DATA CTAB (58) /'ESONTT    '/
+      DATA CTAB (59) /'ST.ANDREWS'/
+      DATA CTAB (60) /'APO3.5    '/
+      DATA CTAB (61) /'KECK1     '/
+      DATA CTAB (62) /'TAUTSCHM  '/
+      DATA CTAB (63) /'PALOMAR48 '/
+      DATA CTAB (64) /'UKST      '/
+      DATA CTAB (65) /'KISO      '/
+      DATA CTAB (66) /'ESOSCHM   '/
+      DATA CTAB (67) /'ATCA      '/
+      DATA CTAB (68) /'MOPRA     '/
+      DATA CTAB (69) /'SUBARU    '/
+      DATA CTAB (70) /'CFHT      '/
+      DATA CTAB (71) /'KECK2     '/
+      DATA CTAB (72) /'GEMININ   '/
+      DATA CTAB (73) /'FCRAO     '/
+      DATA CTAB (74) /'IRTF      '/
+      DATA CTAB (75) /'CSO       '/
+      DATA CTAB (76) /'VLT1      '/
+      DATA CTAB (77) /'VLT2      '/
+      DATA CTAB (78) /'VLT3      '/
+      DATA CTAB (79) /'VLT4      '/
+      DATA CTAB (80) /'GEMINIS   '/
+      DATA CTAB (81) /'KOSMA3M   '/
+      DATA CTAB (82) /'MAGELLAN1 '/
+      DATA CTAB (83) /'MAGELLAN2 '/
+
+*  Degrees, arcminutes, arcseconds to radians
+      WEST(ID,IAM,AS)=AS2R*(DBLE(60*(60*ID+IAM))+DBLE(AS))
+      NORTH(ID,IAM,AS)=WEST(ID,IAM,AS)
+      EAST(ID,IAM,AS)=-WEST(ID,IAM,AS)
+      SOUTH(ID,IAM,AS)=-WEST(ID,IAM,AS)
+
+
+
+
+*  Station specified by number or identifier?
+      IF (N.GT.0) THEN
+
+*     Station specified by number
+         M=N
+         IF (M.LE.NMAX) C=CTAB(M)
+
+      ELSE
+
+*     Station specified by identifier:  determine corresponding number
+         CC=C
+         DO NS=1,NMAX
+            DO I=1,10
+               IF (CC(I:I).EQ.' ') GO TO 5
+               IF (CC(I:I).NE.CTAB(NS)(I:I)) GO TO 1
+            END DO
+            GO TO 5
+ 1          CONTINUE
+         END DO
+         NS=NMAX+1
+ 5       CONTINUE
+         IF (C(1:1).NE.' ') THEN
+            M=NS
+         ELSE
+            M=NMAX+1
+         END IF
+
+      END IF
+
+*
+*  Return parameters of Mth station
+*  --------------------------------
+
+      GO TO (10,20,30,40,50,60,70,80,90,100,
+     :       110,120,130,140,150,160,170,180,190,200,
+     :       210,220,230,240,250,260,270,280,290,300,
+     :       310,320,330,340,350,360,370,380,390,400,
+     :       410,420,430,440,450,460,470,480,490,500,
+     :       510,520,530,540,550,560,570,580,590,600,
+     :       610,620,630,640,650,660,670,680,690,700,
+     :       710,720,730,740,750,760,770,780,790,800,
+     :       810,820,830) M
+      GO TO 9000
+
+*  AAT (Observer's Guide)                                            AAT
+ 10   CONTINUE
+      NAME='Anglo-Australian 3.9m Telescope'
+      W=EAST(149,03,57.91)
+      P=SOUTH(31,16,37.34)
+      H=1164D0
+      GO TO 9999
+
+*  WHT (Gemini, April 1987)                                       LPO4.2
+ 20   CONTINUE
+      NAME='William Herschel 4.2m Telescope'
+      W=WEST(17,52,53.9)
+      P=NORTH(28,45,38.1)
+      H=2332D0
+      GO TO 9999
+
+*  INT (Gemini, April 1987)                                       LPO2.5
+ 30   CONTINUE
+      NAME='Isaac Newton 2.5m Telescope'
+      W=WEST(17,52,39.5)
+      P=NORTH(28,45,43.2)
+      H=2336D0
+      GO TO 9999
+
+*  JKT (Gemini, April 1987)                                         LPO1
+ 40   CONTINUE
+      NAME='Jacobus Kapteyn 1m Telescope'
+      W=WEST(17,52,41.2)
+      P=NORTH(28,45,39.9)
+      H=2364D0
+      GO TO 9999
+
+*  Lick 120" (S.L.Allen, private communication, 2002)            LICK120
+ 50   CONTINUE
+      NAME='Lick 120 inch'
+      W=WEST(121,38,13.689)
+      P=NORTH(37,20,34.931)
+      H=1286D0
+      GO TO 9999
+
+*  MMT 6.5m conversion (MMT Observatory website)                     MMT
+ 60   CONTINUE
+      NAME='MMT 6.5m, Mt Hopkins'
+      W=WEST(110,53,04.4)
+      P=NORTH(31,41,19.6)
+      H=2608D0
+      GO TO 9999
+
+*  Victoria B.C. 1.85m (1984 Almanac)                              DAO72
+ 70   CONTINUE
+      NAME='DAO Victoria BC 1.85 metre'
+      W=WEST(123,25,01.18)
+      P=NORTH(48,31,11.9)
+      H=238D0
+      GO TO 9999
+
+*  Las Campanas (1983 Almanac)                                    DUPONT
+ 80   CONTINUE
+      NAME='Du Pont 2.5m Telescope, Las Campanas'
+      W=WEST(70,42,9.)
+      P=SOUTH(29,00,11.)
+      H=2280D0
+      GO TO 9999
+
+*  Mt Hopkins 1.5m (1983 Almanac)                               MTHOP1.5
+ 90   CONTINUE
+      NAME='Mt Hopkins 1.5 metre'
+      W=WEST(110,52,39.00)
+      P=NORTH(31,40,51.4)
+      H=2344D0
+      GO TO 9999
+
+*  Mt Stromlo 74" (1983 Almanac)                               STROMLO74
+ 100  CONTINUE
+      NAME='Mount Stromlo 74 inch'
+      W=EAST(149,00,27.59)
+      P=SOUTH(35,19,14.3)
+      H=767D0
+      GO TO 9999
+
+*  ANU 2.3m, SSO (Gary Hovey)                                     ANU2.3
+ 110  CONTINUE
+      NAME='Siding Spring 2.3 metre'
+      W=EAST(149,03,40.3)
+      P=SOUTH(31,16,24.1)
+      H=1149D0
+      GO TO 9999
+
+*  Greenbank 140' (1983 Almanac)                                 GBVA140
+ 120  CONTINUE
+      NAME='Greenbank 140 foot'
+      W=WEST(79,50,09.61)
+      P=NORTH(38,26,15.4)
+      H=881D0
+      GO TO 9999
+
+*  Cerro Tololo 4m (1982 Almanac)                               TOLOLO4M
+ 130  CONTINUE
+      NAME='Cerro Tololo 4 metre'
+      W=WEST(70,48,53.6)
+      P=SOUTH(30,09,57.8)
+      H=2235D0
+      GO TO 9999
+
+*  Cerro Tololo 1.5m (1982 Almanac)                           TOLOLO1.5M
+ 140  CONTINUE
+      NAME='Cerro Tololo 1.5 metre'
+      W=WEST(70,48,54.5)
+      P=SOUTH(30,09,56.3)
+      H=2225D0
+      GO TO 9999
+
+*  Tidbinbilla 64m (1982 Almanac)                              TIDBINBLA
+ 150  CONTINUE
+      NAME='Tidbinbilla 64 metre'
+      W=EAST(148,58,48.20)
+      P=SOUTH(35,24,14.3)
+      H=670D0
+      GO TO 9999
+
+*  Bloemfontein 1.52m (1981 Almanac)                              BLOEMF
+ 160  CONTINUE
+      NAME='Bloemfontein 1.52 metre'
+      W=EAST(26,24,18.)
+      P=SOUTH(29,02,18.)
+      H=1387D0
+      GO TO 9999
+
+*  Bosque Alegre 1.54m (1981 Almanac)                         BOSQALEGRE
+ 170  CONTINUE
+      NAME='Bosque Alegre 1.54 metre'
+      W=WEST(64,32,48.0)
+      P=SOUTH(31,35,53.)
+      H=1250D0
+      GO TO 9999
+
+*  USNO 61" astrographic reflector, Flagstaff (1981 Almanac)   FLAGSTF61
+ 180  CONTINUE
+      NAME='USNO 61 inch astrograph, Flagstaff'
+      W=WEST(111,44,23.6)
+      P=NORTH(35,11,02.5)
+      H=2316D0
+      GO TO 9999
+
+*  Lowell 72" (1981 Almanac)                                    LOWELL72
+ 190  CONTINUE
+      NAME='Perkins 72 inch, Lowell'
+      W=WEST(111,32,09.3)
+      P=NORTH(35,05,48.6)
+      H=2198D0
+      GO TO 9999
+
+*  Harvard 1.55m (1981 Almanac)                                  HARVARD
+ 200  CONTINUE
+      NAME='Harvard College Observatory 1.55m'
+      W=WEST(71,33,29.32)
+      P=NORTH(42,30,19.0)
+      H=185D0
+      GO TO 9999
+
+*  Okayama 1.88m (1981 Almanac)                                  OKAYAMA
+ 210  CONTINUE
+      NAME='Okayama 1.88 metre'
+      W=EAST(133,35,47.29)
+      P=NORTH(34,34,26.1)
+      H=372D0
+      GO TO 9999
+
+*  Kitt Peak Mayall 4m (1981 Almanac)                            KPNO158
+ 220  CONTINUE
+      NAME='Kitt Peak 158 inch'
+      W=WEST(111,35,57.61)
+      P=NORTH(31,57,50.3)
+      H=2120D0
+      GO TO 9999
+
+*  Kitt Peak 90 inch (1981 Almanac)                               KPNO90
+ 230  CONTINUE
+      NAME='Kitt Peak 90 inch'
+      W=WEST(111,35,58.24)
+      P=NORTH(31,57,46.9)
+      H=2071D0
+      GO TO 9999
+
+*  Kitt Peak 84 inch (1981 Almanac)                               KPNO84
+ 240  CONTINUE
+      NAME='Kitt Peak 84 inch'
+      W=WEST(111,35,51.56)
+      P=NORTH(31,57,29.2)
+      H=2096D0
+      GO TO 9999
+
+*  Kitt Peak 36 foot (1981 Almanac)                             KPNO36FT
+ 250  CONTINUE
+      NAME='Kitt Peak 36 foot'
+      W=WEST(111,36,51.12)
+      P=NORTH(31,57,12.1)
+      H=1939D0
+      GO TO 9999
+
+*  Kottamia 74" (1981 Almanac)                                  KOTTAMIA
+ 260  CONTINUE
+      NAME='Kottamia 74 inch'
+      W=EAST(31,49,30.)
+      P=NORTH(29,55,54.)
+      H=476D0
+      GO TO 9999
+
+*  La Silla 3.6m (1981 Almanac)                                   ESO3.6
+ 270  CONTINUE
+      NAME='ESO 3.6 metre'
+      W=WEST(70,43,36.)
+      P=SOUTH(29,15,36.)
+      H=2428D0
+      GO TO 9999
+
+*  Mauna Kea 88 inch                                            MAUNAK88
+*  (IfA website, Richard Wainscoat)
+ 280  CONTINUE
+      NAME='Mauna Kea 88 inch'
+      W=WEST(155,28,09.96)
+      P=NORTH(19,49,22.77)
+      H=4213.6D0
+      GO TO 9999
+
+*  UKIRT (IfA website, Richard Wainscoat)                          UKIRT
+ 290  CONTINUE
+      NAME='UK Infra Red Telescope'
+      W=WEST(155,28,13.18)
+      P=NORTH(19,49,20.75)
+      H=4198.5D0
+      GO TO 9999
+
+*  Quebec 1.6m (1981 Almanac)                                  QUEBEC1.6
+ 300  CONTINUE
+      NAME='Quebec 1.6 metre'
+      W=WEST(71,09,09.7)
+      P=NORTH(45,27,20.6)
+      H=1114D0
+      GO TO 9999
+
+*  Mt Ekar 1.82m (1981 Almanac)                                   MTEKAR
+ 310  CONTINUE
+      NAME='Mt Ekar 1.82 metre'
+      W=EAST(11,34,15.)
+      P=NORTH(45,50,48.)
+      H=1365D0
+      GO TO 9999
+
+*  Mt Lemmon 60" (1981 Almanac)                               MTLEMMON60
+ 320  CONTINUE
+      NAME='Mt Lemmon 60 inch'
+      W=WEST(110,42,16.9)
+      P=NORTH(32,26,33.9)
+      H=2790D0
+      GO TO 9999
+
+*  Mt Locke 2.7m (1981 Almanac)                               MCDONLD2.7
+ 330  CONTINUE
+      NAME='McDonald 2.7 metre'
+      W=WEST(104,01,17.60)
+      P=NORTH(30,40,17.7)
+      H=2075D0
+      GO TO 9999
+
+*  Mt Locke 2.1m (1981 Almanac)                               MCDONLD2.1
+ 340  CONTINUE
+      NAME='McDonald 2.1 metre'
+      W=WEST(104,01,20.10)
+      P=NORTH(30,40,17.7)
+      H=2075D0
+      GO TO 9999
+
+*  Palomar 200" (1981 Almanac)                                PALOMAR200
+ 350  CONTINUE
+      NAME='Palomar 200 inch'
+      W=WEST(116,51,50.)
+      P=NORTH(33,21,22.)
+      H=1706D0
+      GO TO 9999
+
+*  Palomar 60" (1981 Almanac)                                  PALOMAR60
+ 360  CONTINUE
+      NAME='Palomar 60 inch'
+      W=WEST(116,51,31.)
+      P=NORTH(33,20,56.)
+      H=1706D0
+      GO TO 9999
+
+*  David Dunlap 74" (1981 Almanac)                              DUNLAP74
+ 370  CONTINUE
+      NAME='David Dunlap 74 inch'
+      W=WEST(79,25,20.)
+      P=NORTH(43,51,46.)
+      H=244D0
+      GO TO 9999
+
+*  Haute Provence 1.93m (1981 Almanac)                         HPROV1.93
+ 380  CONTINUE
+      NAME='Haute Provence 1.93 metre'
+      W=EAST(5,42,46.75)
+      P=NORTH(43,55,53.3)
+      H=665D0
+      GO TO 9999
+
+*  Haute Provence 1.52m (1981 Almanac)                         HPROV1.52
+ 390  CONTINUE
+      NAME='Haute Provence 1.52 metre'
+      W=EAST(5,42,43.82)
+      P=NORTH(43,56,00.2)
+      H=667D0
+      GO TO 9999
+
+*  San Pedro Martir 83" (1981 Almanac)                           SANPM83
+ 400  CONTINUE
+      NAME='San Pedro Martir 83 inch'
+      W=WEST(115,27,47.)
+      P=NORTH(31,02,38.)
+      H=2830D0
+      GO TO 9999
+
+*  Sutherland 74" (1981 Almanac)                                  SAAO74
+ 410  CONTINUE
+      NAME='Sutherland 74 inch'
+      W=EAST(20,48,44.3)
+      P=SOUTH(32,22,43.4)
+      H=1771D0
+      GO TO 9999
+
+*  Tautenburg 2m (1981 Almanac)                                  TAUTNBG
+ 420  CONTINUE
+      NAME='Tautenburg 2 metre'
+      W=EAST(11,42,45.)
+      P=NORTH(50,58,51.)
+      H=331D0
+      GO TO 9999
+
+*  Catalina 61" (1981 Almanac)                                CATALINA61
+ 430  CONTINUE
+      NAME='Catalina 61 inch'
+      W=WEST(110,43,55.1)
+      P=NORTH(32,25,00.7)
+      H=2510D0
+      GO TO 9999
+
+*  Steward 90" (1981 Almanac)                                  STEWARD90
+ 440  CONTINUE
+      NAME='Steward 90 inch'
+      W=WEST(111,35,58.24)
+      P=NORTH(31,57,46.9)
+      H=2071D0
+      GO TO 9999
+
+*  Russian 6m (1981 Almanac)                                       USSR6
+ 450  CONTINUE
+      NAME='USSR 6 metre'
+      W=EAST(41,26,30.0)
+      P=NORTH(43,39,12.)
+      H=2100D0
+      GO TO 9999
+
+*  Arecibo 1000' (1981 Almanac)                                  ARECIBO
+ 460  CONTINUE
+      NAME='Arecibo 1000 foot'
+      W=WEST(66,45,11.1)
+      P=NORTH(18,20,36.6)
+      H=496D0
+      GO TO 9999
+
+*  Cambridge 5km (1981 Almanac)                                  CAMB5KM
+ 470  CONTINUE
+      NAME='Cambridge 5km'
+      W=EAST(0,02,37.23)
+      P=NORTH(52,10,12.2)
+      H=17D0
+      GO TO 9999
+
+*  Cambridge 1 mile (1981 Almanac)                             CAMB1MILE
+ 480  CONTINUE
+      NAME='Cambridge 1 mile'
+      W=EAST(0,02,21.64)
+      P=NORTH(52,09,47.3)
+      H=17D0
+      GO TO 9999
+
+*  Bonn 100m (1981 Almanac)                                   EFFELSBERG
+ 490  CONTINUE
+      NAME='Effelsberg 100 metre'
+      W=EAST(6,53,01.5)
+      P=NORTH(50,31,28.6)
+      H=366D0
+      GO TO 9999
+
+*  Greenbank 300' (1981 Almanac)                        GBVA300 (R.I.P.)
+ 500  CONTINUE
+      NAME='Greenbank 300 foot'
+      W=WEST(79,50,56.36)
+      P=NORTH(38,25,46.3)
+      H=894D0
+      GO TO 9999
+
+*  Jodrell Bank Mk 1 (1981 Almanac)                             JODRELL1
+ 510  CONTINUE
+      NAME='Jodrell Bank 250 foot'
+      W=WEST(2,18,25.)
+      P=NORTH(53,14,10.5)
+      H=78D0
+      GO TO 9999
+
+*  Australia Telescope Parkes Observatory                         PARKES
+*  (Peter te Lintel Hekkert)
+ 520  CONTINUE
+      NAME='Parkes 64 metre'
+      W=EAST(148,15,44.3591)
+      P=SOUTH(32,59,59.8657)
+      H=391.79D0
+      GO TO 9999
+
+*  VLA (1981 Almanac)                                                VLA
+ 530  CONTINUE
+      NAME='Very Large Array'
+      W=WEST(107,37,03.82)
+      P=NORTH(34,04,43.5)
+      H=2124D0
+      GO TO 9999
+
+*  Sugar Grove 150' (1981 Almanac)                            SUGARGROVE
+ 540  CONTINUE
+      NAME='Sugar Grove 150 foot'
+      W=WEST(79,16,23.)
+      P=NORTH(38,31,14.)
+      H=705D0
+      GO TO 9999
+
+*  Russian 600' (1981 Almanac)                                   USSR600
+ 550  CONTINUE
+      NAME='USSR 600 foot'
+      W=EAST(41,35,25.5)
+      P=NORTH(43,49,32.)
+      H=973D0
+      GO TO 9999
+
+*  Nobeyama 45 metre mm dish (based on 1981 Almanac entry)      NOBEYAMA
+ 560  CONTINUE
+      NAME='Nobeyama 45 metre'
+      W=EAST(138,29,12.)
+      P=NORTH(35,56,19.)
+      H=1350D0
+      GO TO 9999
+
+*  James Clerk Maxwell 15 metre mm telescope, Mauna Kea             JCMT
+*  (IfA website, Richard Wainscoat, height from I.Coulson)
+ 570  CONTINUE
+      NAME='JCMT 15 metre'
+      W=WEST(155,28,37.20)
+      P=NORTH(19,49,22.11)
+      H=4111D0
+      GO TO 9999
+
+*  ESO 3.5 metre NTT, La Silla (K.Wirenstrand)                    ESONTT
+ 580  CONTINUE
+      NAME='ESO 3.5 metre NTT'
+      W=WEST(70,43,07.)
+      P=SOUTH(29,15,30.)
+      H=2377D0
+      GO TO 9999
+
+*  St Andrews University Observatory (1982 Almanac)           ST.ANDREWS
+ 590  CONTINUE
+      NAME='St Andrews'
+      W=WEST(2,48,52.5)
+      P=NORTH(56,20,12.)
+      H=30D0
+      GO TO 9999
+
+*  Apache Point 3.5 metre (R.Owen)                                APO3.5
+ 600  CONTINUE
+      NAME='Apache Point 3.5m'
+      W=WEST(105,49,11.56)
+      P=NORTH(32,46,48.96)
+      H=2809D0
+      GO TO 9999
+
+*  W.M.Keck Observatory, Telescope 1                               KECK1
+*  (William Lupton)
+ 610  CONTINUE
+      NAME='Keck 10m Telescope #1'
+      W=WEST(155,28,28.99)
+      P=NORTH(19,49,33.41)
+      H=4160D0
+      GO TO 9999
+
+*  Tautenberg Schmidt (1983 Almanac)                            TAUTSCHM
+ 620  CONTINUE
+      NAME='Tautenberg 1.34 metre Schmidt'
+      W=EAST(11,42,45.0)
+      P=NORTH(50,58,51.0)
+      H=331D0
+      GO TO 9999
+
+*  Palomar Schmidt (1981 Almanac)                              PALOMAR48
+ 630  CONTINUE
+      NAME='Palomar 48-inch Schmidt'
+      W=WEST(116,51,32.0)
+      P=NORTH(33,21,26.0)
+      H=1706D0
+      GO TO 9999
+
+*  UK Schmidt, Siding Spring (1983 Almanac)                         UKST
+ 640  CONTINUE
+      NAME='UK 1.2 metre Schmidt, Siding Spring'
+      W=EAST(149,04,12.8)
+      P=SOUTH(31,16,27.8)
+      H=1145D0
+      GO TO 9999
+
+*  Kiso Schmidt, Japan (1981 Almanac)                               KISO
+ 650  CONTINUE
+      NAME='Kiso 1.05 metre Schmidt, Japan'
+      W=EAST(137,37,42.2)
+      P=NORTH(35,47,38.7)
+      H=1130D0
+      GO TO 9999
+
+*  ESO Schmidt, La Silla (1981 Almanac)                          ESOSCHM
+ 660  CONTINUE
+      NAME='ESO 1 metre Schmidt, La Silla'
+      W=WEST(70,43,46.5)
+      P=SOUTH(29,15,25.8)
+      H=2347D0
+      GO TO 9999
+
+*  Australia Telescope Compact Array                                ATCA
+*  (WGS84 coordinates of Station 35, Mark Calabretta)
+ 670  CONTINUE
+      NAME='Australia Telescope Compact Array'
+      W=EAST(149,33,00.500)
+      P=SOUTH(30,18,46.385)
+      H=236.9D0
+      GO TO 9999
+
+*  Australia Telescope Mopra Observatory                           MOPRA
+*  (Peter te Lintel Hekkert)
+ 680  CONTINUE
+      NAME='ATNF Mopra Observatory'
+      W=EAST(149,05,58.732)
+      P=SOUTH(31,16,04.451)
+      H=850D0
+      GO TO 9999
+
+*  Subaru telescope, Mauna Kea                                     SUBARU
+*  (IfA website, Richard Wainscoat)
+ 690  CONTINUE
+      NAME='Subaru 8m telescope'
+      W=WEST(155,28,33.67)
+      P=NORTH(19,49,31.81)
+      H=4163D0
+      GO TO 9999
+
+*  Canada-France-Hawaii Telescope, Mauna Kea                         CFHT
+*  (IfA website, Richard Wainscoat)
+ 700  CONTINUE
+      NAME='Canada-France-Hawaii 3.6m Telescope'
+      W=WEST(155,28,07.95)
+      P=NORTH(19,49,30.91)
+      H=4204.1D0
+      GO TO 9999
+
+*  W.M.Keck Observatory, Telescope 2                                KECK2
+*  (William Lupton)
+ 710  CONTINUE
+      NAME='Keck 10m Telescope #2'
+      W=WEST(155,28,27.24)
+      P=NORTH(19,49,35.62)
+      H=4159.6D0
+      GO TO 9999
+
+*  Gemini North, Mauna Kea                                        GEMININ
+*  (IfA website, Richard Wainscoat)
+ 720  CONTINUE
+      NAME='Gemini North 8-m telescope'
+      W=WEST(155,28,08.57)
+      P=NORTH(19,49,25.69)
+      H=4213.4D0
+      GO TO 9999
+
+*  Five College Radio Astronomy Observatory                        FCRAO
+*  (Tim Jenness)
+ 730  CONTINUE
+      NAME='Five College Radio Astronomy Obs'
+      W=WEST(72,20,42.0)
+      P=NORTH(42,23,30.0)
+      H=314D0
+      GO TO 9999
+
+*  NASA Infra Red Telescope Facility                                IRTF
+*  (IfA website, Richard Wainscoat)
+ 740  CONTINUE
+      NAME='NASA IR Telescope Facility, Mauna Kea'
+      W=WEST(155,28,19.20)
+      P=NORTH(19,49,34.39)
+      H=4168.1D0
+      GO TO 9999
+
+*  Caltech Submillimeter Observatory                                 CSO
+*  (IfA website, Richard Wainscoat; height estimated)
+ 750  CONTINUE
+      NAME='Caltech Sub-mm Observatory, Mauna Kea'
+      W=WEST(155,28,31.79)
+      P=NORTH(19,49,20.78)
+      H=4080D0
+      GO TO 9999
+
+* ESO VLT, UT1                                                       VLT1
+* (ESO website, VLT Whitebook Chapter 2)
+ 760  CONTINUE
+      NAME='ESO VLT, Paranal, Chile: UT1'
+      W=WEST(70,24,11.642)
+      P=SOUTH(24,37,33.117)
+      H=2635.43
+      GO TO 9999
+
+* ESO VLT, UT2                                                       VLT2
+* (ESO website, VLT Whitebook Chapter 2)
+ 770  CONTINUE
+      NAME='ESO VLT, Paranal, Chile: UT2'
+      W=WEST(70,24,10.855)
+      P=SOUTH(24,37,31.465)
+      H=2635.43
+      GO TO 9999
+
+* ESO VLT, UT3                                                       VLT3
+* (ESO website, VLT Whitebook Chapter 2)
+ 780  CONTINUE
+      NAME='ESO VLT, Paranal, Chile: UT3'
+      W=WEST(70,24,09.896)
+      P=SOUTH(24,37,30.300)
+      H=2635.43
+      GO TO 9999
+
+* ESO VLT, UT4                                                       VLT4
+* (ESO website, VLT Whitebook Chapter 2)
+ 790  CONTINUE
+      NAME='ESO VLT, Paranal, Chile: UT4'
+      W=WEST(70,24,08.000)
+      P=SOUTH(24,37,31.000)
+      H=2635.43
+      GO TO 9999
+
+*  Gemini South, Cerro Pachon                                     GEMINIS
+*  (GPS readings by Patrick Wallace)
+ 800  CONTINUE
+      NAME='Gemini South 8-m telescope'
+      W=WEST(70,44,11.5)
+      P=SOUTH(30,14,26.7)
+      H=2738D0
+      GO TO 9999
+
+*  Cologne Observatory for Submillimeter Astronomy (KOSMA)        KOSMA3M
+*  (Holger Jakob)
+ 810  CONTINUE
+      NAME='KOSMA 3m telescope, Gornergrat'
+      W=EAST(7,47,3.48)
+      P=NORTH(45,58,59.772)
+      H=3141D0
+      GO TO 9999
+
+*  Magellan 1, 6.5m telescope at Las Campanas, Chile            MAGELLAN1
+*  (Skip Schaller)
+ 820  CONTINUE
+      NAME='Magellan 1, 6.5m, Las Campanas'
+      W=WEST(70,41,31.9)
+      P=SOUTH(29,00,51.7)
+      H=2408D0
+      GO TO 9999
+
+*  Magellan 2, 6.5m telescope at Las Campanas, Chile            MAGELLAN2
+*  (Skip Schaller)
+ 830  CONTINUE
+      NAME='Magellan 2, 6.5m, Las Campanas'
+      W=WEST(70,41,33.5)
+      P=SOUTH(29,00,50.3)
+      H=2408D0
+      GO TO 9999
+
+*  Unrecognized station
+ 9000 CONTINUE
+      NAME='?'
+
+*  Exit
+ 9999 CONTINUE
+
+      END
diff --git a/pa.f b/pa.f
new file mode 100644
index 0000000000000000000000000000000000000000..367c4a5ab56c15229fae4ddd049ef09cb6924aab
--- /dev/null
+++ b/pa.f
@@ -0,0 +1,63 @@
+      DOUBLE PRECISION FUNCTION sla_PA (HA, DEC, PHI)
+*+
+*     - - -
+*      P A
+*     - - -
+*
+*  HA, Dec to Parallactic Angle (double precision)
+*
+*  Given:
+*     HA     d     hour angle in radians (geocentric apparent)
+*     DEC    d     declination in radians (geocentric apparent)
+*     PHI    d     observatory latitude in radians (geodetic)
+*
+*  The result is in the range -pi to +pi
+*
+*  Notes:
+*
+*  1)  The parallactic angle at a point in the sky is the position
+*      angle of the vertical, i.e. the angle between the direction to
+*      the pole and to the zenith.  In precise applications care must
+*      be taken only to use geocentric apparent HA,Dec and to consider
+*      separately the effects of atmospheric refraction and telescope
+*      mount errors.
+*
+*  2)  At the pole a zero result is returned.
+*
+*  P.T.Wallace   Starlink   16 August 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION HA,DEC,PHI
+
+      DOUBLE PRECISION CP,SQSZ,CQSZ
+
+
+
+      CP=COS(PHI)
+      SQSZ=CP*SIN(HA)
+      CQSZ=SIN(PHI)*COS(DEC)-CP*SIN(DEC)*COS(HA)
+      IF (SQSZ.EQ.0D0.AND.CQSZ.EQ.0D0) CQSZ=1D0
+      sla_PA=ATAN2(SQSZ,CQSZ)
+
+      END
diff --git a/pav.f b/pav.f
new file mode 100644
index 0000000000000000000000000000000000000000..5fe7c3b1d0921912e9e22f471a8f847896ea0706
--- /dev/null
+++ b/pav.f
@@ -0,0 +1,70 @@
+      REAL FUNCTION sla_PAV ( V1, V2 )
+*+
+*     - - - -
+*      P A V
+*     - - - -
+*
+*  Position angle of one celestial direction with respect to another.
+*
+*  (single precision)
+*
+*  Given:
+*     V1    r(3)    direction cosines of one point
+*     V2    r(3)    direction cosines of the other point
+*
+*  (The coordinate frames correspond to RA,Dec, Long,Lat etc.)
+*
+*  The result is the bearing (position angle), in radians, of point
+*  V2 with respect to point V1.  It is in the range +/- pi.  The
+*  sense is such that if V2 is a small distance east of V1, the
+*  bearing is about +pi/2.  Zero is returned if the two points
+*  are coincident.
+*
+*  V1 and V2 do not have to be unit vectors.
+*
+*  The routine sla_BEAR performs an equivalent function except
+*  that the points are specified in the form of spherical
+*  coordinates.
+*
+*  Called:  sla_DPAV
+*
+*  Last revision:   11 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL V1(3), V2(3)
+
+      INTEGER I
+      DOUBLE PRECISION D1(3), D2(3)
+
+      DOUBLE PRECISION sla_DPAV
+
+
+*  Call the double precision version.
+      DO I=1,3
+         D1(I) = V1(I)
+         D2(I) = V2(I)
+      END DO
+      sla_PAV = REAL(sla_DPAV(D1,D2))
+
+      END
diff --git a/pcd.f b/pcd.f
new file mode 100644
index 0000000000000000000000000000000000000000..46d8a2699b6b39226ed4475a1a5b372e7deedb71
--- /dev/null
+++ b/pcd.f
@@ -0,0 +1,76 @@
+      SUBROUTINE sla_PCD (DISCO,X,Y)
+*+
+*     - - - -
+*      P C D
+*     - - - -
+*
+*  Apply pincushion/barrel distortion to a tangent-plane [x,y].
+*
+*  Given:
+*     DISCO    d      pincushion/barrel distortion coefficient
+*     X,Y      d      tangent-plane coordinates
+*
+*  Returned:
+*     X,Y      d      distorted coordinates
+*
+*  Notes:
+*
+*  1)  The distortion is of the form RP = R*(1 + C*R**2), where R is
+*      the radial distance from the tangent point, C is the DISCO
+*      argument, and RP is the radial distance in the presence of
+*      the distortion.
+*
+*  2)  For pincushion distortion, C is +ve;  for barrel distortion,
+*      C is -ve.
+*
+*  3)  For X,Y in units of one projection radius (in the case of
+*      a photographic plate, the focal length), the following
+*      DISCO values apply:
+*
+*          Geometry          DISCO
+*
+*          astrograph         0.0
+*          Schmidt           -0.3333
+*          AAT PF doublet  +147.069
+*          AAT PF triplet  +178.585
+*          AAT f/8          +21.20
+*          JKT f/8          +13.32
+*
+*  4)  There is a companion routine, sla_UNPCD, which performs the
+*      inverse operation.
+*
+*  P.T.Wallace   Starlink   3 September 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DISCO,X,Y
+
+      DOUBLE PRECISION F
+
+
+
+      F=1D0+DISCO*(X*X+Y*Y)
+      X=X*F
+      Y=Y*F
+
+      END
diff --git a/pda2h.f b/pda2h.f
new file mode 100644
index 0000000000000000000000000000000000000000..c0600ddf24b298be21a5bba51b3f410fa65c0449
--- /dev/null
+++ b/pda2h.f
@@ -0,0 +1,117 @@
+      SUBROUTINE sla_PDA2H (P, D, A, H1, J1, H2, J2)
+*+
+*     - - - - - -
+*      P D A 2 H
+*     - - - - - -
+*
+*  Hour Angle corresponding to a given azimuth
+*
+*  (double precision)
+*
+*  Given:
+*     P       d        latitude
+*     D       d        declination
+*     A       d        azimuth
+*
+*  Returned:
+*     H1      d        hour angle:  first solution if any
+*     J1      i        flag: 0 = solution 1 is valid
+*     H2      d        hour angle:  second solution if any
+*     J2      i        flag: 0 = solution 2 is valid
+*
+*  Called:  sla_DRANGE
+*
+*  P.T.Wallace   Starlink   6 October 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION P,D,A,H1
+      INTEGER J1
+      DOUBLE PRECISION H2
+      INTEGER J2
+
+      DOUBLE PRECISION DPI
+      PARAMETER (DPI=3.141592653589793238462643D0)
+      DOUBLE PRECISION D90
+      PARAMETER (D90=DPI/2D0)
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-12)
+      DOUBLE PRECISION PN,AN,DN,SA,CA,SASP,QT,QB,HPT,T
+      DOUBLE PRECISION sla_DRANGE
+
+
+*  Preset status flags to OK
+      J1=0
+      J2=0
+
+*  Adjust latitude, azimuth, declination to avoid critical values
+      PN=sla_DRANGE(P)
+      IF (ABS(ABS(PN)-D90).LT.TINY) THEN
+         PN=PN-SIGN(TINY,PN)
+      ELSE IF (ABS(PN).LT.TINY) THEN
+         PN=TINY
+      END IF
+      AN=sla_DRANGE(A)
+      IF (ABS(ABS(AN)-DPI).LT.TINY) THEN
+         AN=AN-SIGN(TINY,AN)
+      ELSE IF (ABS(AN).LT.TINY) THEN
+         AN=TINY
+      END IF
+      DN=sla_DRANGE(D)
+      IF (ABS(ABS(DN)-ABS(P)).LT.TINY) THEN
+         DN=DN-SIGN(TINY,DN)
+      ELSE IF (ABS(ABS(DN)-D90).LT.TINY) THEN
+         DN=DN-SIGN(TINY,DN)
+      ELSE IF (ABS(DN).LT.TINY) THEN
+         DN=TINY
+      END IF
+
+*  Useful functions
+      SA=SIN(AN)
+      CA=COS(AN)
+      SASP=SA*SIN(PN)
+
+*  Quotient giving sin(h+t)
+      QT=SIN(DN)*SA*COS(PN)
+      QB=COS(DN)*SQRT(CA*CA+SASP*SASP)
+
+*  Any solutions?
+      IF (ABS(QT).LE.QB) THEN
+
+*     Yes: find h+t and t
+         HPT=ASIN(QT/QB)
+         T=ATAN2(SASP,-CA)
+
+*     The two solutions
+         H1=sla_DRANGE(HPT-T)
+         H2=sla_DRANGE(-HPT-(T+DPI))
+
+*     Reject unless h and A different signs
+         IF (H1*AN.GT.0D0) J1=-1
+         IF (H2*AN.GT.0D0) J2=-1
+      ELSE
+         J1=-1
+         J2=-1
+      END IF
+
+      END
diff --git a/pdq2h.f b/pdq2h.f
new file mode 100644
index 0000000000000000000000000000000000000000..0f565bd3d9845a24cd395afe6f8dc6fb836404fa
--- /dev/null
+++ b/pdq2h.f
@@ -0,0 +1,115 @@
+      SUBROUTINE sla_PDQ2H (P, D, Q, H1, J1, H2, J2)
+*+
+*     - - - - - -
+*      P D Q 2 H
+*     - - - - - -
+*
+*  Hour Angle corresponding to a given parallactic angle
+*
+*  (double precision)
+*
+*  Given:
+*     P       d        latitude
+*     D       d        declination
+*     Q       d        parallactic angle
+*
+*  Returned:
+*     H1      d        hour angle:  first solution if any
+*     J1      i        flag: 0 = solution 1 is valid
+*     H2      d        hour angle:  second solution if any
+*     J2      i        flag: 0 = solution 2 is valid
+*
+*  Called:  sla_DRANGE
+*
+*  P.T.Wallace   Starlink   6 October 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION P,D,Q,H1
+      INTEGER J1
+      DOUBLE PRECISION H2
+      INTEGER J2
+
+      DOUBLE PRECISION DPI
+      PARAMETER (DPI=3.141592653589793238462643D0)
+      DOUBLE PRECISION D90
+      PARAMETER (D90=DPI/2D0)
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-12)
+      DOUBLE PRECISION PN,QN,DN,SQ,CQ,SQSD,QT,QB,HPT,T
+      DOUBLE PRECISION sla_DRANGE
+
+
+*  Preset status flags to OK
+      J1=0
+      J2=0
+
+*  Adjust latitude, declination, parallactic angle to avoid critical values
+      PN=sla_DRANGE(P)
+      IF (ABS(ABS(PN)-D90).LT.TINY) THEN
+         PN=PN-SIGN(TINY,PN)
+      ELSE IF (ABS(PN).LT.TINY) THEN
+         PN=TINY
+      END IF
+      QN=sla_DRANGE(Q)
+      IF (ABS(ABS(QN)-DPI).LT.TINY) THEN
+         QN=QN-SIGN(TINY,QN)
+      ELSE IF (ABS(QN).LT.TINY) THEN
+         QN=TINY
+      END IF
+      DN=sla_DRANGE(D)
+      IF (ABS(ABS(D)-ABS(P)).LT.TINY) THEN
+         DN=DN-SIGN(TINY,DN)
+      ELSE IF (ABS(ABS(D)-D90).LT.TINY) THEN
+         DN=DN-SIGN(TINY,DN)
+      END IF
+
+*  Useful functions
+      SQ=SIN(QN)
+      CQ=COS(QN)
+      SQSD=SQ*SIN(DN)
+
+*  Quotient giving sin(h+t)
+      QT=SIN(PN)*SQ*COS(DN)
+      QB=COS(PN)*SQRT(CQ*CQ+SQSD*SQSD)
+
+*  Any solutions?
+      IF (ABS(QT).LE.QB) THEN
+
+*     Yes: find h+t and t
+         HPT=ASIN(QT/QB)
+         T=ATAN2(SQSD,CQ)
+
+*     The two solutions
+         H1=sla_DRANGE(HPT-T)
+         H2=sla_DRANGE(-HPT-(T+DPI))
+
+*     Reject if h and Q different signs
+         IF (H1*QN.LT.0D0) J1=-1
+         IF (H2*QN.LT.0D0) J2=-1
+      ELSE
+         J1=-1
+         J2=-1
+      END IF
+
+      END
diff --git a/permut.f b/permut.f
new file mode 100644
index 0000000000000000000000000000000000000000..df686ef29164562b9e03971cb43205e2f24979a5
--- /dev/null
+++ b/permut.f
@@ -0,0 +1,159 @@
+      SUBROUTINE sla_PERMUT ( N, ISTATE, IORDER, J )
+*+
+*     - - - - - - -
+*      P E R M U T
+*     - - - - - - -
+*
+*  Generate the next permutation of a specified number of items.
+*
+*  Given:
+*     N         i      number of items:  there will be N! permutations
+*
+*  Given and returned:
+*     ISTATE    i(N)   state, ISTATE(1)=-1 to initialize
+*
+*  Returned:
+*     IORDER    i(N)   next permutation of numbers 1,2,...,N
+*     J         i      status: -1 = illegal N (zero or less is illegal)
+*                               0 = OK
+*                              +1 = no more permutations available
+*
+*  Notes:
+*
+*  1) This routine returns, in the IORDER array, the integers 1 to N
+*     inclusive, in an order that depends on the current contents of
+*     the ISTATE array.  Before calling the routine for the first
+*     time, the caller must set the first element of the ISTATE array
+*     to -1 (any negative number will do) to cause the ISTATE array
+*     to be fully initialized.
+*
+*  2) The first permutation to be generated is:
+*
+*          IORDER(1)=N, IORDER(2)=N-1, ..., IORDER(N)=1
+*
+*     This is also the permutation returned for the "finished"
+*     (J=1) case.
+*
+*     The final permutation to be generated is:
+*
+*          IORDER(1)=1, IORDER(2)=2, ..., IORDER(N)=N
+*
+*  3) If the "finished" (J=1) status is ignored, the routine continues
+*     to deliver permutations, the pattern repeating every N! calls.
+*
+*  Last revision:   19 February 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER N,IORDER(N),ISTATE(N),J
+
+      INTEGER I,IP1,ISLOT,ISKIP
+
+
+*  -------------
+*  Preliminaries
+*  -------------
+
+*  Validate, and set status.
+      IF (N.LT.1) THEN
+         J = -1
+         GO TO 9999
+      ELSE
+         J = 0
+      END IF
+
+*  If just starting, initialize state array
+      IF (ISTATE(1).LT.0) THEN
+         ISTATE(1) = -1
+         DO I=2,N
+            ISTATE(I) = 0
+         END DO
+      END IF
+
+*  --------------------------
+*  Increment the state number
+*  --------------------------
+
+*  The state number, maintained in the ISTATE array, is a mixed-radix
+*  number with N! states.  The least significant digit, with a radix of
+*  1, is in ISTATE(1).  The next digit, in ISTATE(2), has a radix of 2,
+*  and so on.
+
+*  Increment the least-significant digit of the state number.
+      ISTATE(1) = ISTATE(1)+1
+
+*  Digit by digit starting with the least significant.
+      DO I=1,N
+
+*     Carry?
+         IF (ISTATE(I).GE.I) THEN
+
+*        Yes:  reset the current digit.
+            ISTATE(I) = 0
+
+*        Overflow?
+            IF (I.GE.N) THEN
+
+*           Yes:  there are no more permutations.
+               J = 1
+            ELSE
+
+*           No:  carry.
+               IP1 = I+1
+               ISTATE(IP1) = ISTATE(IP1)+1
+            END IF
+         END IF
+      END DO
+
+*  -------------------------------------------------------------------
+*  Translate the state number into the corresponding permutation order
+*  -------------------------------------------------------------------
+
+*  Initialize the order array.  All but one element will be overwritten.
+      DO I=1,N
+         IORDER(I) = 1
+      END DO
+
+*  Look at each state number digit, starting with the most significant.
+      DO I=N,2,-1
+
+*     Initialize the position where the new number will go.
+         ISLOT = 0
+
+*     The state number digit says which unfilled slot is to be used.
+         DO ISKIP=0,ISTATE(I)
+
+*        Increment the slot number until an unused slot is found.
+            ISLOT = ISLOT+1
+            DO WHILE (IORDER(ISLOT).GT.1)
+               ISLOT = ISLOT+1
+            END DO
+         END DO
+
+*     Store the number in the permutation order array.
+         IORDER(ISLOT) = I
+      END DO
+
+ 9999 CONTINUE
+
+      END
diff --git a/pertel.f b/pertel.f
new file mode 100644
index 0000000000000000000000000000000000000000..5cd46f58b3d03aa290dcd86a82a92caa52ee912e
--- /dev/null
+++ b/pertel.f
@@ -0,0 +1,181 @@
+      SUBROUTINE sla_PERTEL (JFORM, DATE0, DATE1,
+     :                 EPOCH0, ORBI0, ANODE0, PERIH0, AORQ0, E0, AM0,
+     :                 EPOCH1, ORBI1, ANODE1, PERIH1, AORQ1, E1, AM1,
+     :                       JSTAT)
+*+
+*     - - - - - - -
+*      P E R T E L
+*     - - - - - - -
+*
+*  Update the osculating orbital elements of an asteroid or comet by
+*  applying planetary perturbations.
+*
+*  Given (format and dates):
+*     JFORM   i    choice of element set (2 or 3; Note 1)
+*     DATE0   d    date of osculation (TT MJD) for the given elements
+*     DATE1   d    date of osculation (TT MJD) for the updated elements
+*
+*  Given (the unperturbed elements):
+*     EPOCH0  d    epoch (TT MJD) of the given element set (Note 2)
+*     ORBI0   d    inclination (radians)
+*     ANODE0  d    longitude of the ascending node (radians)
+*     PERIH0  d    argument of perihelion (radians)
+*     AORQ0   d    mean distance or perihelion distance (AU)
+*     E0      d    eccentricity
+*     AM0     d    mean anomaly (radians, JFORM=2 only)
+*
+*  Returned (the updated elements):
+*     EPOCH1  d    epoch (TT MJD) of the updated element set (Note 2)
+*     ORBI1   d    inclination (radians)
+*     ANODE1  d    longitude of the ascending node (radians)
+*     PERIH1  d    argument of perihelion (radians)
+*     AORQ1   d    mean distance or perihelion distance (AU)
+*     E1      d    eccentricity
+*     AM1     d    mean anomaly (radians, JFORM=2 only)
+*
+*  Returned (status flag):
+*     JSTAT   i    status: +102 = warning, distant epoch
+*                          +101 = warning, large timespan ( > 100 years)
+*                     +1 to +10 = coincident with planet (Note 6)
+*                             0 = OK
+*                            -1 = illegal JFORM
+*                            -2 = illegal E0
+*                            -3 = illegal AORQ0
+*                            -4 = internal error
+*                            -5 = numerical error
+*
+*  Notes:
+*
+*  1  Two different element-format options are available:
+*
+*     Option JFORM=2, suitable for minor planets:
+*
+*     EPOCH   = epoch of elements (TT MJD)
+*     ORBI    = inclination i (radians)
+*     ANODE   = longitude of the ascending node, big omega (radians)
+*     PERIH   = argument of perihelion, little omega (radians)
+*     AORQ    = mean distance, a (AU)
+*     E       = eccentricity, e
+*     AM      = mean anomaly M (radians)
+*
+*     Option JFORM=3, suitable for comets:
+*
+*     EPOCH   = epoch of perihelion (TT MJD)
+*     ORBI    = inclination i (radians)
+*     ANODE   = longitude of the ascending node, big omega (radians)
+*     PERIH   = argument of perihelion, little omega (radians)
+*     AORQ    = perihelion distance, q (AU)
+*     E       = eccentricity, e
+*
+*  2  DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in
+*     the TT timescale (formerly Ephemeris Time, ET), expressed
+*     as Modified Julian Dates (JD-2400000.5).
+*
+*     DATE0 is the instant at which the given (i.e. unperturbed)
+*     osculating elements are correct.
+*
+*     DATE1 is the specified instant at which the updated osculating
+*     elements are correct.
+*
+*     EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1
+*     (respectively) for the JFORM=2 case, normally used for minor
+*     planets.  For the JFORM=3 case, the two epochs will refer to
+*     perihelion passage and so will not, in general, be the same as
+*     DATE0 and/or DATE1 though they may be similar to one another.
+*
+*  3  The elements are with respect to the J2000 ecliptic and equinox.
+*
+*  4  Unused elements (AM0 and AM1 for JFORM=3) are not accessed.
+*
+*  5  See the sla_PERTUE routine for details of the algorithm used.
+*
+*  6  This routine is not intended to be used for major planets, which
+*     is why JFORM=1 is not available and why there is no opportunity
+*     to specify either the longitude of perihelion or the daily
+*     motion.  However, if JFORM=2 elements are somehow obtained for a
+*     major planet and supplied to the routine, sensible results will,
+*     in fact, be produced.  This happens because the sla_PERTUE routine
+*     that is called to perform the calculations checks the separation
+*     between the body and each of the planets and interprets a
+*     suspiciously small value (0.001 AU) as an attempt to apply it to
+*     the planet concerned.  If this condition is detected, the
+*     contribution from that planet is ignored, and the status is set to
+*     the planet number (1-10 = Mercury, Venus, EMB, Mars, Jupiter,
+*     Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+*
+*  Reference:
+*
+*     Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*     Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*
+*  Called:  sla_EL2UE, sla_PERTUE, sla_UE2EL
+*
+*  This revision:   19 June 2004
+*
+*  Copyright (C) 2004 P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+      INTEGER JFORM
+      DOUBLE PRECISION DATE0,DATE1,
+     :                 EPOCH0,ORBI0,ANODE0,PERIH0,AORQ0,E0,AM0,
+     :                 EPOCH1,ORBI1,ANODE1,PERIH1,AORQ1,E1,AM1
+      INTEGER JSTAT
+
+      DOUBLE PRECISION U(13),DM
+      INTEGER J,JF
+
+
+
+*  Check that the elements are either minor-planet or comet format.
+      IF (JFORM.LT.2.OR.JFORM.GT.3) THEN
+         JSTAT = -1
+         GO TO 9999
+      ELSE
+
+*     Provisionally set the status to OK.
+         JSTAT = 0
+      END IF
+
+*  Transform the elements from conventional to universal form.
+      CALL sla_EL2UE(DATE0,JFORM,EPOCH0,ORBI0,ANODE0,PERIH0,
+     :               AORQ0,E0,AM0,0D0,U,J)
+      IF (J.NE.0) THEN
+         JSTAT = J
+         GO TO 9999
+      END IF
+
+*  Update the universal elements.
+      CALL sla_PERTUE(DATE1,U,J)
+      IF (J.GT.0) THEN
+         JSTAT = J
+      ELSE IF (J.LT.0) THEN
+         JSTAT = -5
+         GO TO 9999
+      END IF
+
+*  Transform from universal to conventional elements.
+      CALL sla_UE2EL(U,JFORM,
+     :               JF, EPOCH1, ORBI1, ANODE1, PERIH1,
+     :               AORQ1, E1, AM1, DM, J)
+      IF (JF.NE.JFORM.OR.J.NE.0) JSTAT=-5
+
+ 9999 CONTINUE
+      END
diff --git a/pertue.f b/pertue.f
new file mode 100644
index 0000000000000000000000000000000000000000..de775d5f3d44f60e57799fd9d85e9c48b189abea
--- /dev/null
+++ b/pertue.f
@@ -0,0 +1,642 @@
+      SUBROUTINE sla_PERTUE (DATE, U, JSTAT)
+*+
+*     - - - - - - -
+*      P E R T U E
+*     - - - - - - -
+*
+*  Update the universal elements of an asteroid or comet by applying
+*  planetary perturbations.
+*
+*  Given:
+*     DATE     d       final epoch (TT MJD) for the updated elements
+*
+*  Given and returned:
+*     U        d(13)   universal elements (updated in place)
+*
+*                (1)   combined mass (M+m)
+*                (2)   total energy of the orbit (alpha)
+*                (3)   reference (osculating) epoch (t0)
+*              (4-6)   position at reference epoch (r0)
+*              (7-9)   velocity at reference epoch (v0)
+*               (10)   heliocentric distance at reference epoch
+*               (11)   r0.v0
+*               (12)   date (t)
+*               (13)   universal eccentric anomaly (psi) of date, approx
+*
+*  Returned:
+*     JSTAT    i       status:
+*                          +102 = warning, distant epoch
+*                          +101 = warning, large timespan ( > 100 years)
+*                     +1 to +10 = coincident with major planet (Note 5)
+*                             0 = OK
+*                            -1 = numerical error
+*
+*  Called:  sla_EPJ, sla_PLANET, sla_PV2UE, sla_UE2PV, sla_EPV,
+*           sla_PREC, sla_DMOON, sla_DMXV
+*
+*  Notes:
+*
+*  1  The "universal" elements are those which define the orbit for the
+*     purposes of the method of universal variables (see reference 2).
+*     They consist of the combined mass of the two bodies, an epoch,
+*     and the position and velocity vectors (arbitrary reference frame)
+*     at that epoch.  The parameter set used here includes also various
+*     quantities that can, in fact, be derived from the other
+*     information.  This approach is taken to avoiding unnecessary
+*     computation and loss of accuracy.  The supplementary quantities
+*     are (i) alpha, which is proportional to the total energy of the
+*     orbit, (ii) the heliocentric distance at epoch, (iii) the
+*     outwards component of the velocity at the given epoch, (iv) an
+*     estimate of psi, the "universal eccentric anomaly" at a given
+*     date and (v) that date.
+*
+*  2  The universal elements are with respect to the J2000 equator and
+*     equinox.
+*
+*  3  The epochs DATE, U(3) and U(12) are all Modified Julian Dates
+*     (JD-2400000.5).
+*
+*  4  The algorithm is a simplified form of Encke's method.  It takes as
+*     a basis the unperturbed motion of the body, and numerically
+*     integrates the perturbing accelerations from the major planets.
+*     The expression used is essentially Sterne's 6.7-2 (reference 1).
+*     Everhart and Pitkin (reference 2) suggest rectifying the orbit at
+*     each integration step by propagating the new perturbed position
+*     and velocity as the new universal variables.  In the present
+*     routine the orbit is rectified less frequently than this, in order
+*     to gain a slight speed advantage.  However, the rectification is
+*     done directly in terms of position and velocity, as suggested by
+*     Everhart and Pitkin, bypassing the use of conventional orbital
+*     elements.
+*
+*     The f(q) part of the full Encke method is not used.  The purpose
+*     of this part is to avoid subtracting two nearly equal quantities
+*     when calculating the "indirect member", which takes account of the
+*     small change in the Sun's attraction due to the slightly displaced
+*     position of the perturbed body.  A simpler, direct calculation in
+*     double precision proves to be faster and not significantly less
+*     accurate.
+*
+*     Apart from employing a variable timestep, and occasionally
+*     "rectifying the orbit" to keep the indirect member small, the
+*     integration is done in a fairly straightforward way.  The
+*     acceleration estimated for the middle of the timestep is assumed
+*     to apply throughout that timestep;  it is also used in the
+*     extrapolation of the perturbations to the middle of the next
+*     timestep, to predict the new disturbed position.  There is no
+*     iteration within a timestep.
+*
+*     Measures are taken to reach a compromise between execution time
+*     and accuracy.  The starting-point is the goal of achieving
+*     arcsecond accuracy for ordinary minor planets over a ten-year
+*     timespan.  This goal dictates how large the timesteps can be,
+*     which in turn dictates how frequently the unperturbed motion has
+*     to be recalculated from the osculating elements.
+*
+*     Within predetermined limits, the timestep for the numerical
+*     integration is varied in length in inverse proportion to the
+*     magnitude of the net acceleration on the body from the major
+*     planets.
+*
+*     The numerical integration requires estimates of the major-planet
+*     motions.  Approximate positions for the major planets (Pluto
+*     alone is omitted) are obtained from the routine sla_PLANET.  Two
+*     levels of interpolation are used, to enhance speed without
+*     significantly degrading accuracy.  At a low frequency, the routine
+*     sla_PLANET is called to generate updated position+velocity "state
+*     vectors".  The only task remaining to be carried out at the full
+*     frequency (i.e. at each integration step) is to use the state
+*     vectors to extrapolate the planetary positions.  In place of a
+*     strictly linear extrapolation, some allowance is made for the
+*     curvature of the orbit by scaling back the radius vector as the
+*     linear extrapolation goes off at a tangent.
+*
+*     Various other approximations are made.  For example, perturbations
+*     by Pluto and the minor planets are neglected and relativistic
+*     effects are not taken into account.
+*
+*     In the interests of simplicity, the background calculations for
+*     the major planets are carried out en masse.  The mean elements and
+*     state vectors for all the planets are refreshed at the same time,
+*     without regard for orbit curvature, mass or proximity.
+*
+*     The Earth-Moon system is treated as a single body when the body is
+*     distant but as separate bodies when closer to the EMB than the
+*     parameter RNE, which incurs a time penalty but improves accuracy
+*     for near-Earth objects.
+*
+*  5  This routine is not intended to be used for major planets.
+*     However, if major-planet elements are supplied, sensible results
+*     will, in fact, be produced.  This happens because the routine
+*     checks the separation between the body and each of the planets and
+*     interprets a suspiciously small value (0.001 AU) as an attempt to
+*     apply the routine to the planet concerned.  If this condition is
+*     detected, the contribution from that planet is ignored, and the
+*     status is set to the planet number (1-10 = Mercury, Venus, EMB,
+*     Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+*
+*  References:
+*
+*     1  Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*        Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*
+*     2  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+*
+*  Last revision:   27 December 2004
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+      DOUBLE PRECISION DATE,U(13)
+      INTEGER JSTAT
+
+*  Distance from EMB at which Earth and Moon are treated separately
+      DOUBLE PRECISION RNE
+      PARAMETER (RNE=1D0)
+
+*  Coincidence with major planet distance
+      DOUBLE PRECISION COINC
+      PARAMETER (COINC=0.0001D0)
+
+*  Coefficient relating timestep to perturbing force
+      DOUBLE PRECISION TSC
+      PARAMETER (TSC=1D-4)
+
+*  Minimum and maximum timestep (days)
+      DOUBLE PRECISION TSMIN,TSMAX
+      PARAMETER (TSMIN=0.01D0,TSMAX=10D0)
+
+*  Age limit for major-planet state vector (days)
+      DOUBLE PRECISION AGEPMO
+      PARAMETER (AGEPMO=5D0)
+
+*  Age limit for major-planet mean elements (days)
+      DOUBLE PRECISION AGEPEL
+      PARAMETER (AGEPEL=50D0)
+
+*  Margin for error when deciding whether to renew the planetary data
+      DOUBLE PRECISION TINY
+      PARAMETER (TINY=1D-6)
+
+*  Age limit for the body's osculating elements (before rectification)
+      DOUBLE PRECISION AGEBEL
+      PARAMETER (AGEBEL=100D0)
+
+*  Gaussian gravitational constant (exact) and square
+      DOUBLE PRECISION GCON,GCON2
+      PARAMETER (GCON=0.01720209895D0,GCON2=GCON*GCON)
+
+*  The final epoch
+      DOUBLE PRECISION TFINAL
+
+*  The body's current universal elements
+      DOUBLE PRECISION UL(13)
+
+*  Current reference epoch
+      DOUBLE PRECISION T0
+
+*  Timespan from latest orbit rectification to final epoch (days)
+      DOUBLE PRECISION TSPAN
+
+*  Time left to go before integration is complete
+      DOUBLE PRECISION TLEFT
+
+*  Time direction flag: +1=forwards, -1=backwards
+      DOUBLE PRECISION FB
+
+*  First-time flag
+      LOGICAL FIRST
+
+*
+*  The current perturbations
+*
+*  Epoch (days relative to current reference epoch)
+      DOUBLE PRECISION RTN
+*  Position (AU)
+      DOUBLE PRECISION PERP(3)
+*  Velocity (AU/d)
+      DOUBLE PRECISION PERV(3)
+*  Acceleration (AU/d/d)
+      DOUBLE PRECISION PERA(3)
+*
+
+*  Length of current timestep (days), and half that
+      DOUBLE PRECISION TS,HTS
+
+*  Epoch of middle of timestep
+      DOUBLE PRECISION T
+
+*  Epoch of planetary mean elements
+      DOUBLE PRECISION TPEL
+
+*  Planet number (1=Mercury, 2=Venus, 3=EMB...8=Neptune)
+      INTEGER NP
+
+*  Planetary universal orbital elements
+      DOUBLE PRECISION UP(13,8)
+
+*  Epoch of planetary state vectors
+      DOUBLE PRECISION TPMO
+
+*  State vectors for the major planets (AU,AU/s)
+      DOUBLE PRECISION PVIN(6,8)
+
+*  Earth velocity and position vectors (AU,AU/s)
+      DOUBLE PRECISION VB(3),PB(3),VH(3),PE(3)
+
+*  Moon geocentric state vector (AU,AU/s) and position part
+      DOUBLE PRECISION PVM(6),PM(3)
+
+*  Date to J2000 de-precession matrix
+      DOUBLE PRECISION PMAT(3,3)
+
+*
+*  Correction terms for extrapolated major planet vectors
+*
+*  Sun-to-planet distances squared multiplied by 3
+      DOUBLE PRECISION R2X3(8)
+*  Sunward acceleration terms, G/2R^3
+      DOUBLE PRECISION GC(8)
+*  Tangential-to-circular correction factor
+      DOUBLE PRECISION FC
+*  Radial correction factor due to Sunwards acceleration
+      DOUBLE PRECISION FG
+*
+
+*  The body's unperturbed and perturbed state vectors (AU,AU/s)
+      DOUBLE PRECISION PV0(6),PV(6)
+
+*  The body's perturbed and unperturbed heliocentric distances (AU) cubed
+      DOUBLE PRECISION R03,R3
+
+*  The perturbating accelerations, indirect and direct
+      DOUBLE PRECISION FI(3),FD(3)
+
+*  Sun-to-planet vector, and distance cubed
+      DOUBLE PRECISION RHO(3),RHO3
+
+*  Body-to-planet vector, and distance cubed
+      DOUBLE PRECISION DELTA(3),DELTA3
+
+*  Miscellaneous
+      INTEGER I,J
+      DOUBLE PRECISION R2,W,DT,DT2,R,FT
+      LOGICAL NE
+
+      DOUBLE PRECISION sla_EPJ
+
+*  Planetary inverse masses, Mercury through Neptune then Earth and Moon
+      DOUBLE PRECISION AMAS(10)
+      DATA AMAS / 6023600D0, 408523.5D0, 328900.5D0, 3098710D0,
+     :            1047.355D0, 3498.5D0, 22869D0, 19314D0,
+     :            332946.038D0, 27068709D0 /
+
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*----------------------------------------------------------------------*
+
+
+*  Preset the status to OK.
+      JSTAT = 0
+
+*  Copy the final epoch.
+      TFINAL = DATE
+
+*  Copy the elements (which will be periodically updated).
+      DO I=1,13
+         UL(I) = U(I)
+      END DO
+
+*  Initialize the working reference epoch.
+      T0=UL(3)
+
+*  Total timespan (days) and hence time left.
+      TSPAN = TFINAL-T0
+      TLEFT = TSPAN
+
+*  Warn if excessive.
+      IF (ABS(TSPAN).GT.36525D0) JSTAT=101
+
+*  Time direction: +1 for forwards, -1 for backwards.
+      FB = SIGN(1D0,TSPAN)
+
+*  Initialize relative epoch for start of current timestep.
+      RTN = 0D0
+
+*  Reset the perturbations (position, velocity, acceleration).
+      DO I=1,3
+         PERP(I) = 0D0
+         PERV(I) = 0D0
+         PERA(I) = 0D0
+      END DO
+
+*  Set "first iteration" flag.
+      FIRST = .TRUE.
+
+*  Step through the time left.
+      DO WHILE (FB*TLEFT.GT.0D0)
+
+*     Magnitude of current acceleration due to planetary attractions.
+         IF (FIRST) THEN
+            TS = TSMIN
+         ELSE
+            R2 = 0D0
+            DO I=1,3
+               W = FD(I)
+               R2 = R2+W*W
+            END DO
+            W = SQRT(R2)
+
+*        Use the acceleration to decide how big a timestep can be tolerated.
+            IF (W.NE.0D0) THEN
+               TS = MIN(TSMAX,MAX(TSMIN,TSC/W))
+            ELSE
+               TS = TSMAX
+            END IF
+         END IF
+         TS = TS*FB
+
+*     Override if final epoch is imminent.
+         TLEFT = TSPAN-RTN
+         IF (ABS(TS).GT.ABS(TLEFT)) TS=TLEFT
+
+*     Epoch of middle of timestep.
+         HTS = TS/2D0
+         T = T0+RTN+HTS
+
+*     Is it time to recompute the major-planet elements?
+         IF (FIRST.OR.ABS(T-TPEL)-AGEPEL.GE.TINY) THEN
+
+*        Yes: go forward in time by just under the maximum allowed.
+            TPEL = T+FB*AGEPEL
+
+*        Compute the state vector for the new epoch.
+            DO NP=1,8
+               CALL sla_PLANET(TPEL,NP,PV,J)
+
+*           Warning if remote epoch, abort if error.
+               IF (J.EQ.1) THEN
+                  JSTAT = 102
+               ELSE IF (J.NE.0) THEN
+                  GO TO 9010
+               END IF
+
+*           Transform the vector into universal elements.
+               CALL sla_PV2UE(PV,TPEL,0D0,UP(1,NP),J)
+               IF (J.NE.0) GO TO 9010
+            END DO
+         END IF
+
+*     Is it time to recompute the major-planet motions?
+         IF (FIRST.OR.ABS(T-TPMO)-AGEPMO.GE.TINY) THEN
+
+*        Yes: look ahead.
+            TPMO = T+FB*AGEPMO
+
+*        Compute the motions of each planet (AU,AU/d).
+            DO NP=1,8
+
+*           The planet's position and velocity (AU,AU/s).
+               CALL sla_UE2PV(TPMO,UP(1,NP),PVIN(1,NP),J)
+               IF (J.NE.0) GO TO 9010
+
+*           Scale velocity to AU/d.
+               DO J=4,6
+                  PVIN(J,NP) = PVIN(J,NP)*86400D0
+               END DO
+
+*           Precompute also the extrapolation correction terms.
+               R2 = 0D0
+               DO I=1,3
+                  W = PVIN(I,NP)
+                  R2 = R2+W*W
+               END DO
+               R2X3(NP) = R2*3D0
+               GC(NP) = GCON2/(2D0*R2*SQRT(R2))
+            END DO
+         END IF
+
+*     Reset the first-time flag.
+         FIRST = .FALSE.
+
+*     Unperturbed motion of the body at middle of timestep (AU,AU/s).
+         CALL sla_UE2PV(T,UL,PV0,J)
+         IF (J.NE.0) GO TO 9010
+
+*     Perturbed position of the body (AU) and heliocentric distance cubed.
+         R2 = 0D0
+         DO I=1,3
+            W = PV0(I)+PERP(I)+(PERV(I)+PERA(I)*HTS/2D0)*HTS
+            PV(I) = W
+            R2 = R2+W*W
+         END DO
+         R3 = R2*SQRT(R2)
+
+*     The body's unperturbed heliocentric distance cubed.
+         R2 = 0D0
+         DO I=1,3
+            W = PV0(I)
+            R2 = R2+W*W
+         END DO
+         R03 = R2*SQRT(R2)
+
+*     Compute indirect and initialize direct parts of the perturbation.
+         DO I=1,3
+            FI(I) = PV0(I)/R03-PV(I)/R3
+            FD(I) = 0D0
+         END DO
+
+*     Ready to compute the direct planetary effects.
+
+*     Reset the "near-Earth" flag.
+         NE = .FALSE.
+
+*     Interval from state-vector epoch to middle of current timestep.
+         DT = T-TPMO
+         DT2 = DT*DT
+
+*     Planet by planet, including separate Earth and Moon.
+         DO NP=1,10
+
+*        Which perturbing body?
+            IF (NP.LE.8) THEN
+
+*           Planet: compute the extrapolation in longitude (squared).
+               R2 = 0D0
+               DO J=4,6
+                  W = PVIN(J,NP)*DT
+                  R2 = R2+W*W
+               END DO
+
+*           Hence the tangential-to-circular correction factor.
+               FC = 1D0+R2/R2X3(NP)
+
+*           The radial correction factor due to the inwards acceleration.
+               FG = 1D0-GC(NP)*DT2
+
+*           Planet's position.
+               DO I=1,3
+                  RHO(I) = FG*(PVIN(I,NP)+FC*PVIN(I+3,NP)*DT)
+               END DO
+
+            ELSE IF (NE) THEN
+
+*           Near-Earth and either Earth or Moon.
+
+               IF (NP.EQ.9) THEN
+
+*              Earth: position.
+                  CALL sla_EPV(T,PE,VH,PB,VB)
+                  DO I=1,3
+                     RHO(I) = PE(I)
+                  END DO
+
+               ELSE
+
+*              Moon: position.
+                  CALL sla_PREC(sla_EPJ(T),2000D0,PMAT)
+                  CALL sla_DMOON(T,PVM)
+                  CALL sla_DMXV(PMAT,PVM,PM)
+                  DO I=1,3
+                     RHO(I) = PM(I)+PE(I)
+                  END DO
+               END IF
+            END IF
+
+*        Proceed unless Earth or Moon and not the near-Earth case.
+            IF (NP.LE.8.OR.NE) THEN
+
+*           Heliocentric distance cubed.
+               R2 = 0D0
+               DO I=1,3
+                  W = RHO(I)
+                  R2 = R2+W*W
+               END DO
+               R = SQRT(R2)
+               RHO3 = R2*R
+
+*           Body-to-planet vector, and distance.
+               R2 = 0D0
+               DO I=1,3
+                  W = RHO(I)-PV(I)
+                  DELTA(I) = W
+                  R2 = R2+W*W
+               END DO
+               R = SQRT(R2)
+
+*           If this is the EMB, set the near-Earth flag appropriately.
+               IF (NP.EQ.3.AND.R.LT.RNE) NE = .TRUE.
+
+*           Proceed unless EMB and this is the near-Earth case.
+               IF (.NOT.(NE.AND.NP.EQ.3)) THEN
+
+*              If too close, ignore this planet and set a warning.
+                  IF (R.LT.COINC) THEN
+                     JSTAT = NP
+
+                  ELSE
+
+*                 Accumulate "direct" part of perturbation acceleration.
+                     DELTA3 = R2*R
+                     W = AMAS(NP)
+                     DO I=1,3
+                        FD(I) = FD(I)+(DELTA(I)/DELTA3-RHO(I)/RHO3)/W
+                     END DO
+                  END IF
+               END IF
+            END IF
+         END DO
+
+*     Update the perturbations to the end of the timestep.
+         RTN = RTN+TS
+         DO I=1,3
+            W = (FI(I)+FD(I))*GCON2
+            FT = W*TS
+            PERP(I) = PERP(I)+(PERV(I)+FT/2D0)*TS
+            PERV(I) = PERV(I)+FT
+            PERA(I) = W
+         END DO
+
+*     Time still to go.
+         TLEFT = TSPAN-RTN
+
+*     Is it either time to rectify the orbit or the last time through?
+         IF (ABS(RTN).GE.AGEBEL.OR.FB*TLEFT.LE.0D0) THEN
+
+*        Yes: update to the end of the current timestep.
+            T0 = T0+RTN
+            RTN = 0D0
+
+*        The body's unperturbed motion (AU,AU/s).
+            CALL sla_UE2PV(T0,UL,PV0,J)
+            IF (J.NE.0) GO TO 9010
+
+*        Add and re-initialize the perturbations.
+            DO I=1,3
+               J = I+3
+               PV(I) = PV0(I)+PERP(I)
+               PV(J) = PV0(J)+PERV(I)/86400D0
+               PERP(I) = 0D0
+               PERV(I) = 0D0
+               PERA(I) = FD(I)*GCON2
+            END DO
+
+*        Use the position and velocity to set up new universal elements.
+            CALL sla_PV2UE(PV,T0,0D0,UL,J)
+            IF (J.NE.0) GO TO 9010
+
+*        Adjust the timespan and time left.
+            TSPAN = TFINAL-T0
+            TLEFT = TSPAN
+         END IF
+
+*     Next timestep.
+      END DO
+
+*  Return the updated universal-element set.
+      DO I=1,13
+         U(I) = UL(I)
+      END DO
+
+*  Finished.
+      GO TO 9999
+
+*  Miscellaneous numerical error.
+ 9010 CONTINUE
+      JSTAT = -1
+
+ 9999 CONTINUE
+      END
diff --git a/planel.f b/planel.f
new file mode 100644
index 0000000000000000000000000000000000000000..31d4a8babea590d79094ca07b90c3beb2c8c3b63
--- /dev/null
+++ b/planel.f
@@ -0,0 +1,183 @@
+      SUBROUTINE sla_PLANEL (DATE, JFORM, EPOCH, ORBINC, ANODE, PERIH,
+     :                       AORQ, E, AORL, DM, PV, JSTAT)
+*+
+*     - - - - - - -
+*      P L A N E L
+*     - - - - - - -
+*
+*  Heliocentric position and velocity of a planet, asteroid or comet,
+*  starting from orbital elements.
+*
+*  Given:
+*     DATE     d     date, Modified Julian Date (JD - 2400000.5, Note 1)
+*     JFORM    i     choice of element set (1-3; Note 3)
+*     EPOCH    d     epoch of elements (TT MJD, Note 4)
+*     ORBINC   d     inclination (radians)
+*     ANODE    d     longitude of the ascending node (radians)
+*     PERIH    d     longitude or argument of perihelion (radians)
+*     AORQ     d     mean distance or perihelion distance (AU)
+*     E        d     eccentricity
+*     AORL     d     mean anomaly or longitude (radians, JFORM=1,2 only)
+*     DM       d     daily motion (radians, JFORM=1 only)
+*
+*  Returned:
+*     PV       d(6)  heliocentric x,y,z,xdot,ydot,zdot of date,
+*                                     J2000 equatorial triad (AU,AU/s)
+*     JSTAT    i     status:  0 = OK
+*                            -1 = illegal JFORM
+*                            -2 = illegal E
+*                            -3 = illegal AORQ
+*                            -4 = illegal DM
+*                            -5 = numerical error
+*
+*  Called:  sla_EL2UE, sla_UE2PV
+*
+*  Notes
+*
+*  1  DATE is the instant for which the prediction is required.  It is
+*     in the TT timescale (formerly Ephemeris Time, ET) and is a
+*     Modified Julian Date (JD-2400000.5).
+*
+*  2  The elements are with respect to the J2000 ecliptic and equinox.
+*
+*  3  A choice of three different element-set options is available:
+*
+*     Option JFORM = 1, suitable for the major planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = longitude of perihelion, curly pi (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e (range 0 to <1)
+*       AORL   = mean longitude L (radians)
+*       DM     = daily motion (radians)
+*
+*     Option JFORM = 2, suitable for minor planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e (range 0 to <1)
+*       AORL   = mean anomaly M (radians)
+*
+*     Option JFORM = 3, suitable for comets:
+*
+*       EPOCH  = epoch of elements and perihelion (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = perihelion distance, q (AU)
+*       E      = eccentricity, e (range 0 to 10)
+*
+*     Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
+*     accessed.
+*
+*  4  Each of the three element sets defines an unperturbed heliocentric
+*     orbit.  For a given epoch of observation, the position of the body
+*     in its orbit can be predicted from these elements, which are
+*     called "osculating elements", using standard two-body analytical
+*     solutions.  However, due to planetary perturbations, a given set
+*     of osculating elements remains usable for only as long as the
+*     unperturbed orbit that it describes is an adequate approximation
+*     to reality.  Attached to such a set of elements is a date called
+*     the "osculating epoch", at which the elements are, momentarily,
+*     a perfect representation of the instantaneous position and
+*     velocity of the body.
+*
+*     Therefore, for any given problem there are up to three different
+*     epochs in play, and it is vital to distinguish clearly between
+*     them:
+*
+*     . The epoch of observation:  the moment in time for which the
+*       position of the body is to be predicted.
+*
+*     . The epoch defining the position of the body:  the moment in time
+*       at which, in the absence of purturbations, the specified
+*       position (mean longitude, mean anomaly, or perihelion) is
+*       reached.
+*
+*     . The osculating epoch:  the moment in time at which the given
+*       elements are correct.
+*
+*     For the major-planet and minor-planet cases it is usual to make
+*     the epoch that defines the position of the body the same as the
+*     epoch of osculation.  Thus, only two different epochs are
+*     involved:  the epoch of the elements and the epoch of observation.
+*
+*     For comets, the epoch of perihelion fixes the position in the
+*     orbit and in general a different epoch of osculation will be
+*     chosen.  Thus, all three types of epoch are involved.
+*
+*     For the present routine:
+*
+*     . The epoch of observation is the argument DATE.
+*
+*     . The epoch defining the position of the body is the argument
+*       EPOCH.
+*
+*     . The osculating epoch is not used and is assumed to be close
+*       enough to the epoch of observation to deliver adequate accuracy.
+*       If not, a preliminary call to sla_PERTEL may be used to update
+*       the element-set (and its associated osculating epoch) by
+*       applying planetary perturbations.
+*
+*  5  The reference frame for the result is with respect to the mean
+*     equator and equinox of epoch J2000.
+*
+*  6  The algorithm was originally adapted from the EPHSLA program of
+*     D.H.P.Jones (private communication, 1996).  The method is based
+*     on Stumpff's Universal Variables.
+*
+*  Reference:  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+*
+*  P.T.Wallace   Starlink   31 December 2002
+*
+*  Copyright (C) 2002 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+      INTEGER JFORM
+      DOUBLE PRECISION EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM,PV(6)
+      INTEGER JSTAT
+
+      DOUBLE PRECISION U(13)
+      INTEGER J
+
+
+
+*  Validate elements and convert to "universal variables" parameters.
+      CALL sla_EL2UE(DATE,JFORM,
+     :               EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM,U,J)
+
+*  Determine the position and velocity.
+      IF (J.EQ.0) THEN
+         CALL sla_UE2PV(DATE,U,PV,J)
+         IF (J.NE.0) J=-5
+      END IF
+
+*  Wrap up.
+      JSTAT = J
+
+      END
diff --git a/planet.f b/planet.f
new file mode 100644
index 0000000000000000000000000000000000000000..fcbe6f6f4bb9452133917bb0615a31f9a090dc7e
--- /dev/null
+++ b/planet.f
@@ -0,0 +1,724 @@
+      SUBROUTINE sla_PLANET (DATE, NP, PV, JSTAT)
+*+
+*     - - - - - - -
+*      P L A N E T
+*     - - - - - - -
+*
+*  Approximate heliocentric position and velocity of a specified
+*  major planet.
+*
+*  Given:
+*     DATE      d      Modified Julian Date (JD - 2400000.5)
+*     NP        i      planet (1=Mercury, 2=Venus, 3=EMB ... 9=Pluto)
+*
+*  Returned:
+*     PV        d(6)   heliocentric x,y,z,xdot,ydot,zdot, J2000
+*                                           equatorial triad (AU,AU/s)
+*     JSTAT     i      status: +1 = warning: date out of range
+*                               0 = OK
+*                              -1 = illegal NP (outside 1-9)
+*                              -2 = solution didn't converge
+*
+*  Called:  sla_PLANEL
+*
+*  Notes
+*
+*  1  The epoch, DATE, is in the TDB timescale and is a Modified
+*     Julian Date (JD-2400000.5).
+*
+*  2  The reference frame is equatorial and is with respect to the
+*     mean equinox and ecliptic of epoch J2000.
+*
+*  3  If an NP value outside the range 1-9 is supplied, an error
+*     status (JSTAT = -1) is returned and the PV vector set to zeroes.
+*
+*  4  The algorithm for obtaining the mean elements of the planets
+*     from Mercury to Neptune is due to J.L. Simon, P. Bretagnon,
+*     J. Chapront, M. Chapront-Touze, G. Francou and J. Laskar
+*     (Bureau des Longitudes, Paris).  The (completely different)
+*     algorithm for calculating the ecliptic coordinates of Pluto
+*     is by Meeus.
+*
+*  5  Comparisons of the present routine with the JPL DE200 ephemeris
+*     give the following RMS errors over the interval 1960-2025:
+*
+*                      position (km)     speed (metre/sec)
+*
+*        Mercury            334               0.437
+*        Venus             1060               0.855
+*        EMB               2010               0.815
+*        Mars              7690               1.98
+*        Jupiter          71700               7.70
+*        Saturn          199000              19.4
+*        Uranus          564000              16.4
+*        Neptune         158000              14.4
+*        Pluto            36400               0.137
+*
+*     From comparisons with DE102, Simon et al quote the following
+*     longitude accuracies over the interval 1800-2200:
+*
+*        Mercury                 4"
+*        Venus                   5"
+*        EMB                     6"
+*        Mars                   17"
+*        Jupiter                71"
+*        Saturn                 81"
+*        Uranus                 86"
+*        Neptune                11"
+*
+*     In the case of Pluto, Meeus quotes an accuracy of 0.6 arcsec
+*     in longitude and 0.2 arcsec in latitude for the period
+*     1885-2099.
+*
+*     For all except Pluto, over the period 1000-3000 the accuracy
+*     is better than 1.5 times that over 1800-2200.  Outside the
+*     period 1000-3000 the accuracy declines.  For Pluto the
+*     accuracy declines rapidly outside the period 1885-2099.
+*     Outside these ranges (1885-2099 for Pluto, 1000-3000 for
+*     the rest) a "date out of range" warning status (JSTAT=+1)
+*     is returned.
+*
+*  6  The algorithms for (i) Mercury through Neptune and (ii) Pluto
+*     are completely independent.  In the Mercury through Neptune
+*     case, the present SLALIB implementation differs from the
+*     original Simon et al Fortran code in the following respects.
+*
+*     *  The date is supplied as a Modified Julian Date rather
+*        than a Julian Date (MJD = JD - 2400000.5).
+*
+*     *  The result is returned only in equatorial Cartesian form;
+*        the ecliptic longitude, latitude and radius vector are not
+*        returned.
+*
+*     *  The velocity is in AU per second, not AU per day.
+*
+*     *  Different error/warning status values are used.
+*
+*     *  Kepler's equation is not solved inline.
+*
+*     *  Polynomials in T are nested to minimize rounding errors.
+*
+*     *  Explicit double-precision constants are used to avoid
+*        mixed-mode expressions.
+*
+*     *  There are other, cosmetic, changes to comply with
+*        Starlink/SLALIB style guidelines.
+*
+*     None of the above changes affects the result significantly.
+*
+*  7  For NP=3 the result is for the Earth-Moon Barycentre.  To
+*     obtain the heliocentric position and velocity of the Earth,
+*     either use the SLALIB routine sla_EVP (or sla_EPV) or call
+*     sla_DMOON and subtract 0.012150581 times the geocentric Moon
+*     vector from the EMB vector produced by the present routine.
+*     (The Moon vector should be precessed to J2000 first, but this
+*     can be omitted for modern epochs without introducing significant
+*     inaccuracy.)
+*
+*  References:  Simon et al., Astron. Astrophys. 282, 663 (1994).
+*               Meeus, Astronomical Algorithms, Willmann-Bell (1991).
+*
+*  This revision:  19 June 2004
+*
+*  Copyright (C) 2004 P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+      INTEGER NP
+      DOUBLE PRECISION PV(6)
+      INTEGER JSTAT
+
+*  2Pi, deg to radians, arcsec to radians
+      DOUBLE PRECISION D2PI,D2R,AS2R
+      PARAMETER (D2PI=6.283185307179586476925286766559D0,
+     :           D2R=0.017453292519943295769236907684886D0,
+     :           AS2R=4.848136811095359935899141023579D-6)
+
+*  Gaussian gravitational constant (exact)
+      DOUBLE PRECISION GCON
+      PARAMETER (GCON=0.01720209895D0)
+
+*  Seconds per Julian century
+      DOUBLE PRECISION SPC
+      PARAMETER (SPC=36525D0*86400D0)
+
+*  Sin and cos of J2000 mean obliquity (IAU 1976)
+      DOUBLE PRECISION SE,CE
+      PARAMETER (SE=0.3977771559319137D0,
+     :           CE=0.9174820620691818D0)
+
+      INTEGER I,J,IJSP(3,43)
+      DOUBLE PRECISION AMAS(8),A(3,8),DLM(3,8),E(3,8),
+     :                 PI(3,8),DINC(3,8),OMEGA(3,8),
+     :                 DKP(9,8),CA(9,8),SA(9,8),
+     :                 DKQ(10,8),CLO(10,8),SLO(10,8),
+     :                 T,DA,DE,DPE,DI,DO,DMU,ARGA,ARGL,DM,
+     :                 AB(2,3,43),DJ0,DS0,DP0,DL0,DLD0,DB0,DR0,
+     :                 DJ,DS,DP,DJD,DSD,DPD,WLBR(3),WLBRD(3),
+     :                 WJ,WS,WP,AL,ALD,SAL,CAL,
+     :                 AC,BC,DL,DLD,DB,DBD,DR,DRD,
+     :                 SL,CL,SB,CB,SLCB,CLCB,X,Y,Z,XD,YD,ZD
+
+*  -----------------------
+*  Mercury through Neptune
+*  -----------------------
+
+*  Planetary inverse masses
+      DATA AMAS / 6023600D0,408523.5D0,328900.5D0,3098710D0,
+     :            1047.355D0,3498.5D0,22869D0,19314D0 /
+
+*
+*  Tables giving the mean Keplerian elements, limited to T**2 terms:
+*
+*         A       semi-major axis (AU)
+*         DLM     mean longitude (degree and arcsecond)
+*         E       eccentricity
+*         PI      longitude of the perihelion (degree and arcsecond)
+*         DINC    inclination (degree and arcsecond)
+*         OMEGA   longitude of the ascending node (degree and arcsecond)
+*
+      DATA A /
+     :  0.3870983098D0,             0D0,      0D0,
+     :  0.7233298200D0,             0D0,      0D0,
+     :  1.0000010178D0,             0D0,      0D0,
+     :  1.5236793419D0,           3D-10,      0D0,
+     :  5.2026032092D0,       19132D-10,  -39D-10,
+     :  9.5549091915D0, -0.0000213896D0,  444D-10,
+     : 19.2184460618D0,       -3716D-10,  979D-10,
+     : 30.1103868694D0,      -16635D-10,  686D-10 /
+*
+      DATA DLM /
+     : 252.25090552D0, 5381016286.88982D0,  -1.92789D0,
+     : 181.97980085D0, 2106641364.33548D0,   0.59381D0,
+     : 100.46645683D0, 1295977422.83429D0,  -2.04411D0,
+     : 355.43299958D0,  689050774.93988D0,   0.94264D0,
+     :  34.35151874D0,  109256603.77991D0, -30.60378D0,
+     :  50.07744430D0,   43996098.55732D0,  75.61614D0,
+     : 314.05500511D0,   15424811.93933D0,  -1.75083D0,
+     : 304.34866548D0,    7865503.20744D0,   0.21103D0/
+*
+      DATA E /
+     : 0.2056317526D0,  0.0002040653D0,      -28349D-10,
+     : 0.0067719164D0, -0.0004776521D0,       98127D-10,
+     : 0.0167086342D0, -0.0004203654D0, -0.0000126734D0,
+     : 0.0934006477D0,  0.0009048438D0,      -80641D-10,
+     : 0.0484979255D0,  0.0016322542D0, -0.0000471366D0,
+     : 0.0555481426D0, -0.0034664062D0, -0.0000643639D0,
+     : 0.0463812221D0, -0.0002729293D0,  0.0000078913D0,
+     : 0.0094557470D0,  0.0000603263D0,            0D0 /
+*
+      DATA PI /
+     :  77.45611904D0,  5719.11590D0,   -4.83016D0,
+     : 131.56370300D0,   175.48640D0, -498.48184D0,
+     : 102.93734808D0, 11612.35290D0,   53.27577D0,
+     : 336.06023395D0, 15980.45908D0,  -62.32800D0,
+     :  14.33120687D0,  7758.75163D0,  259.95938D0,
+     :  93.05723748D0, 20395.49439D0,  190.25952D0,
+     : 173.00529106D0,  3215.56238D0,  -34.09288D0,
+     :  48.12027554D0,  1050.71912D0,   27.39717D0 /
+*
+      DATA DINC /
+     : 7.00498625D0, -214.25629D0,   0.28977D0,
+     : 3.39466189D0,  -30.84437D0, -11.67836D0,
+     :          0D0,  469.97289D0,  -3.35053D0,
+     : 1.84972648D0, -293.31722D0,  -8.11830D0,
+     : 1.30326698D0,  -71.55890D0,  11.95297D0,
+     : 2.48887878D0,   91.85195D0, -17.66225D0,
+     : 0.77319689D0,  -60.72723D0,   1.25759D0,
+     : 1.76995259D0,    8.12333D0,   0.08135D0 /
+*
+      DATA OMEGA /
+     :  48.33089304D0,  -4515.21727D0,  -31.79892D0,
+     :  76.67992019D0, -10008.48154D0,  -51.32614D0,
+     : 174.87317577D0,  -8679.27034D0,   15.34191D0,
+     :  49.55809321D0, -10620.90088D0, -230.57416D0,
+     : 100.46440702D0,   6362.03561D0,  326.52178D0,
+     : 113.66550252D0,  -9240.19942D0,  -66.23743D0,
+     :  74.00595701D0,   2669.15033D0,  145.93964D0,
+     : 131.78405702D0,   -221.94322D0,   -0.78728D0 /
+*
+*  Tables for trigonometric terms to be added to the mean elements
+*  of the semi-major axes.
+*
+      DATA DKP /
+     : 69613, 75645, 88306, 59899, 15746, 71087, 142173,  3086,    0,
+     : 21863, 32794, 26934, 10931, 26250, 43725,  53867, 28939,    0,
+     : 16002, 21863, 32004, 10931, 14529, 16368,  15318, 32794,    0,
+     : 6345,   7818, 15636,  7077,  8184, 14163,   1107,  4872,    0,
+     : 1760,   1454,  1167,   880,   287,  2640,     19,  2047, 1454,
+     :  574,      0,   880,   287,    19,  1760,   1167,   306,  574,
+     :  204,      0,   177,  1265,     4,   385,    200,   208,  204,
+     :    0,    102,   106,     4,    98,  1367,    487,   204,    0 /
+*
+      DATA CA /
+     :      4,    -13,    11,    -9,    -9,    -3,    -1,     4,    0,
+     :   -156,     59,   -42,     6,    19,   -20,   -10,   -12,    0,
+     :     64,   -152,    62,    -8,    32,   -41,    19,   -11,    0,
+     :    124,    621,  -145,   208,    54,   -57,    30,    15,    0,
+     : -23437,  -2634,  6601,  6259, -1507, -1821,  2620, -2115,-1489,
+     :  62911,-119919, 79336, 17814,-24241, 12068,  8306, -4893, 8902,
+     : 389061,-262125,-44088,  8387,-22976, -2093,  -615, -9720, 6633,
+     :-412235,-157046,-31430, 37817, -9740,   -13, -7449,  9644,    0 /
+*
+      DATA SA /
+     :     -29,    -1,     9,     6,    -6,     5,     4,     0,    0,
+     :     -48,  -125,   -26,   -37,    18,   -13,   -20,    -2,    0,
+     :    -150,   -46,    68,    54,    14,    24,   -28,    22,    0,
+     :    -621,   532,  -694,   -20,   192,   -94,    71,   -73,    0,
+     :  -14614,-19828, -5869,  1881, -4372, -2255,   782,   930,  913,
+     :  139737,     0, 24667, 51123, -5102,  7429, -4095, -1976,-9566,
+     : -138081,     0, 37205,-49039,-41901,-33872,-27037,-12474,18797,
+     :       0, 28492,133236, 69654, 52322,-49577,-26430, -3593,    0 /
+*
+*  Tables giving the trigonometric terms to be added to the mean
+*  elements of the mean longitudes.
+*
+      DATA DKQ /
+     :  3086, 15746, 69613, 59899, 75645, 88306, 12661, 2658,  0,   0,
+     : 21863, 32794, 10931,    73,  4387, 26934,  1473, 2157,  0,   0,
+     :    10, 16002, 21863, 10931,  1473, 32004,  4387,   73,  0,   0,
+     :    10,  6345,  7818,  1107, 15636,  7077,  8184,  532, 10,   0,
+     :    19,  1760,  1454,   287,  1167,   880,   574, 2640, 19,1454,
+     :    19,   574,   287,   306,  1760,    12,    31,   38, 19, 574,
+     :     4,   204,   177,     8,    31,   200,  1265,  102,  4, 204,
+     :     4,   102,   106,     8,    98,  1367,   487,  204,  4, 102 /
+*
+      DATA CLO /
+     :     21,   -95, -157,   41,   -5,   42,   23,   30,     0,    0,
+     :   -160,  -313, -235,   60,  -74,  -76,  -27,   34,     0,    0,
+     :   -325,  -322,  -79,  232,  -52,   97,   55,  -41,     0,    0,
+     :   2268,  -979,  802,  602, -668,  -33,  345,  201,   -55,    0,
+     :   7610, -4997,-7689,-5841,-2617, 1115, -748, -607,  6074,  354,
+     : -18549, 30125,20012, -730,  824,   23, 1289, -352,-14767,-2062,
+     :-135245,-14594, 4197,-4030,-5630,-2898, 2540, -306,  2939, 1986,
+     :  89948,  2103, 8963, 2695, 3682, 1648,  866, -154, -1963, -283 /
+*
+      DATA SLO /
+     :   -342,   136,  -23,   62,   66,  -52,  -33,   17,     0,    0,
+     :    524,  -149,  -35,  117,  151,  122,  -71,  -62,     0,    0,
+     :   -105,  -137,  258,   35, -116,  -88, -112,  -80,     0,    0,
+     :    854,  -205, -936, -240,  140, -341,  -97, -232,   536,    0,
+     : -56980,  8016, 1012, 1448,-3024,-3710,  318,  503,  3767,  577,
+     : 138606,-13478,-4964, 1441,-1319,-1482,  427, 1236, -9167,-1918,
+     :  71234,-41116, 5334,-4935,-1848,   66,  434,-1748,  3780, -701,
+     : -47645, 11647, 2166, 3194,  679,    0, -244, -419, -2531,   48 /
+
+*  -----
+*  Pluto
+*  -----
+
+*
+*  Coefficients for fundamental arguments:  mean longitudes
+*  (degrees) and mean rate of change of longitude (degrees per
+*  Julian century) for Jupiter, Saturn and Pluto
+*
+      DATA DJ0, DJD / 34.35D0, 3034.9057D0 /
+      DATA DS0, DSD / 50.08D0, 1222.1138D0 /
+      DATA DP0, DPD / 238.96D0, 144.9600D0 /
+
+*  Coefficients for latitude, longitude, radius vector
+      DATA DL0,DLD0 / 238.956785D0, 144.96D0 /
+      DATA DB0 / -3.908202D0 /
+      DATA DR0 / 40.7247248D0 /
+
+*
+*  Coefficients for periodic terms (Meeus's Table 36.A)
+*
+*  The coefficients for term n in the series are:
+*
+*    IJSP(1,n)     J
+*    IJSP(2,n)     S
+*    IJSP(3,n)     P
+*    AB(1,1,n)     longitude sine (degrees)
+*    AB(2,1,n)     longitude cosine (degrees)
+*    AB(1,2,n)     latitude sine (degrees)
+*    AB(2,2,n)     latitude cosine (degrees)
+*    AB(1,3,n)     radius vector sine (AU)
+*    AB(2,3,n)     radius vector cosine (AU)
+*
+      DATA (IJSP(I, 1),I=1,3),((AB(J,I, 1),J=1,2),I=1,3) /
+     :                             0,  0,  1,
+     :            -19798886D-6,  19848454D-6,
+     :             -5453098D-6, -14974876D-6,
+     :             66867334D-7,  68955876D-7 /
+      DATA (IJSP(I, 2),I=1,3),((AB(J,I, 2),J=1,2),I=1,3) /
+     :                             0,  0,  2,
+     :               897499D-6,  -4955707D-6,
+     :              3527363D-6,   1672673D-6,
+     :            -11826086D-7,   -333765D-7 /
+      DATA (IJSP(I, 3),I=1,3),((AB(J,I, 3),J=1,2),I=1,3) /
+     :                             0,  0,  3,
+     :               610820D-6,   1210521D-6,
+     :             -1050939D-6,    327763D-6,
+     :              1593657D-7,  -1439953D-7 /
+      DATA (IJSP(I, 4),I=1,3),((AB(J,I, 4),J=1,2),I=1,3) /
+     :                             0,  0,  4,
+     :              -341639D-6,   -189719D-6,
+     :               178691D-6,   -291925D-6,
+     :               -18948D-7,    482443D-7 /
+      DATA (IJSP(I, 5),I=1,3),((AB(J,I, 5),J=1,2),I=1,3) /
+     :                             0,  0,  5,
+     :               129027D-6,    -34863D-6,
+     :                18763D-6,    100448D-6,
+     :               -66634D-7,    -85576D-7 /
+      DATA (IJSP(I, 6),I=1,3),((AB(J,I, 6),J=1,2),I=1,3) /
+     :                             0,  0,  6,
+     :               -38215D-6,     31061D-6,
+     :               -30594D-6,    -25838D-6,
+     :                30841D-7,     -5765D-7 /
+      DATA (IJSP(I, 7),I=1,3),((AB(J,I, 7),J=1,2),I=1,3) /
+     :                             0,  1, -1,
+     :                20349D-6,     -9886D-6,
+     :                 4965D-6,     11263D-6,
+     :                -6140D-7,     22254D-7 /
+      DATA (IJSP(I, 8),I=1,3),((AB(J,I, 8),J=1,2),I=1,3) /
+     :                             0,  1,  0,
+     :                -4045D-6,     -4904D-6,
+     :                  310D-6,      -132D-6,
+     :                 4434D-7,      4443D-7 /
+      DATA (IJSP(I, 9),I=1,3),((AB(J,I, 9),J=1,2),I=1,3) /
+     :                             0,  1,  1,
+     :                -5885D-6,     -3238D-6,
+     :                 2036D-6,      -947D-6,
+     :                -1518D-7,       641D-7 /
+      DATA (IJSP(I,10),I=1,3),((AB(J,I,10),J=1,2),I=1,3) /
+     :                             0,  1,  2,
+     :                -3812D-6,      3011D-6,
+     :                   -2D-6,      -674D-6,
+     :                   -5D-7,       792D-7 /
+      DATA (IJSP(I,11),I=1,3),((AB(J,I,11),J=1,2),I=1,3) /
+     :                             0,  1,  3,
+     :                 -601D-6,      3468D-6,
+     :                 -329D-6,      -563D-6,
+     :                  518D-7,       518D-7 /
+      DATA (IJSP(I,12),I=1,3),((AB(J,I,12),J=1,2),I=1,3) /
+     :                             0,  2, -2,
+     :                 1237D-6,       463D-6,
+     :                  -64D-6,        39D-6,
+     :                  -13D-7,      -221D-7 /
+      DATA (IJSP(I,13),I=1,3),((AB(J,I,13),J=1,2),I=1,3) /
+     :                             0,  2, -1,
+     :                 1086D-6,      -911D-6,
+     :                  -94D-6,       210D-6,
+     :                  837D-7,      -494D-7 /
+      DATA (IJSP(I,14),I=1,3),((AB(J,I,14),J=1,2),I=1,3) /
+     :                             0,  2,  0,
+     :                  595D-6,     -1229D-6,
+     :                   -8D-6,      -160D-6,
+     :                 -281D-7,       616D-7 /
+      DATA (IJSP(I,15),I=1,3),((AB(J,I,15),J=1,2),I=1,3) /
+     :                             1, -1,  0,
+     :                 2484D-6,      -485D-6,
+     :                 -177D-6,       259D-6,
+     :                  260D-7,      -395D-7 /
+      DATA (IJSP(I,16),I=1,3),((AB(J,I,16),J=1,2),I=1,3) /
+     :                             1, -1,  1,
+     :                  839D-6,     -1414D-6,
+     :                   17D-6,       234D-6,
+     :                 -191D-7,      -396D-7 /
+      DATA (IJSP(I,17),I=1,3),((AB(J,I,17),J=1,2),I=1,3) /
+     :                             1,  0, -3,
+     :                 -964D-6,      1059D-6,
+     :                  582D-6,      -285D-6,
+     :                -3218D-7,       370D-7 /
+      DATA (IJSP(I,18),I=1,3),((AB(J,I,18),J=1,2),I=1,3) /
+     :                             1,  0, -2,
+     :                -2303D-6,     -1038D-6,
+     :                 -298D-6,       692D-6,
+     :                 8019D-7,     -7869D-7 /
+      DATA (IJSP(I,19),I=1,3),((AB(J,I,19),J=1,2),I=1,3) /
+     :                             1,  0, -1,
+     :                 7049D-6,       747D-6,
+     :                  157D-6,       201D-6,
+     :                  105D-7,     45637D-7 /
+      DATA (IJSP(I,20),I=1,3),((AB(J,I,20),J=1,2),I=1,3) /
+     :                             1,  0,  0,
+     :                 1179D-6,      -358D-6,
+     :                  304D-6,       825D-6,
+     :                 8623D-7,      8444D-7 /
+      DATA (IJSP(I,21),I=1,3),((AB(J,I,21),J=1,2),I=1,3) /
+     :                             1,  0,  1,
+     :                  393D-6,       -63D-6,
+     :                 -124D-6,       -29D-6,
+     :                 -896D-7,      -801D-7 /
+      DATA (IJSP(I,22),I=1,3),((AB(J,I,22),J=1,2),I=1,3) /
+     :                             1,  0,  2,
+     :                  111D-6,      -268D-6,
+     :                   15D-6,         8D-6,
+     :                  208D-7,      -122D-7 /
+      DATA (IJSP(I,23),I=1,3),((AB(J,I,23),J=1,2),I=1,3) /
+     :                             1,  0,  3,
+     :                  -52D-6,      -154D-6,
+     :                    7D-6,        15D-6,
+     :                 -133D-7,        65D-7 /
+      DATA (IJSP(I,24),I=1,3),((AB(J,I,24),J=1,2),I=1,3) /
+     :                             1,  0,  4,
+     :                  -78D-6,       -30D-6,
+     :                    2D-6,         2D-6,
+     :                  -16D-7,         1D-7 /
+      DATA (IJSP(I,25),I=1,3),((AB(J,I,25),J=1,2),I=1,3) /
+     :                             1,  1, -3,
+     :                  -34D-6,       -26D-6,
+     :                    4D-6,         2D-6,
+     :                  -22D-7,         7D-7 /
+      DATA (IJSP(I,26),I=1,3),((AB(J,I,26),J=1,2),I=1,3) /
+     :                             1,  1, -2,
+     :                  -43D-6,         1D-6,
+     :                    3D-6,         0D-6,
+     :                   -8D-7,        16D-7 /
+      DATA (IJSP(I,27),I=1,3),((AB(J,I,27),J=1,2),I=1,3) /
+     :                             1,  1, -1,
+     :                  -15D-6,        21D-6,
+     :                    1D-6,        -1D-6,
+     :                    2D-7,         9D-7 /
+      DATA (IJSP(I,28),I=1,3),((AB(J,I,28),J=1,2),I=1,3) /
+     :                             1,  1,  0,
+     :                   -1D-6,        15D-6,
+     :                    0D-6,        -2D-6,
+     :                   12D-7,         5D-7 /
+      DATA (IJSP(I,29),I=1,3),((AB(J,I,29),J=1,2),I=1,3) /
+     :                             1,  1,  1,
+     :                    4D-6,         7D-6,
+     :                    1D-6,         0D-6,
+     :                    1D-7,        -3D-7 /
+      DATA (IJSP(I,30),I=1,3),((AB(J,I,30),J=1,2),I=1,3) /
+     :                             1,  1,  3,
+     :                    1D-6,         5D-6,
+     :                    1D-6,        -1D-6,
+     :                    1D-7,         0D-7 /
+      DATA (IJSP(I,31),I=1,3),((AB(J,I,31),J=1,2),I=1,3) /
+     :                             2,  0, -6,
+     :                    8D-6,         3D-6,
+     :                   -2D-6,        -3D-6,
+     :                    9D-7,         5D-7 /
+      DATA (IJSP(I,32),I=1,3),((AB(J,I,32),J=1,2),I=1,3) /
+     :                             2,  0, -5,
+     :                   -3D-6,         6D-6,
+     :                    1D-6,         2D-6,
+     :                    2D-7,        -1D-7 /
+      DATA (IJSP(I,33),I=1,3),((AB(J,I,33),J=1,2),I=1,3) /
+     :                             2,  0, -4,
+     :                    6D-6,       -13D-6,
+     :                   -8D-6,         2D-6,
+     :                   14D-7,        10D-7 /
+      DATA (IJSP(I,34),I=1,3),((AB(J,I,34),J=1,2),I=1,3) /
+     :                             2,  0, -3,
+     :                   10D-6,        22D-6,
+     :                   10D-6,        -7D-6,
+     :                  -65D-7,        12D-7 /
+      DATA (IJSP(I,35),I=1,3),((AB(J,I,35),J=1,2),I=1,3) /
+     :                             2,  0, -2,
+     :                  -57D-6,       -32D-6,
+     :                    0D-6,        21D-6,
+     :                  126D-7,      -233D-7 /
+      DATA (IJSP(I,36),I=1,3),((AB(J,I,36),J=1,2),I=1,3) /
+     :                             2,  0, -1,
+     :                  157D-6,       -46D-6,
+     :                    8D-6,         5D-6,
+     :                  270D-7,      1068D-7 /
+      DATA (IJSP(I,37),I=1,3),((AB(J,I,37),J=1,2),I=1,3) /
+     :                             2,  0,  0,
+     :                   12D-6,       -18D-6,
+     :                   13D-6,        16D-6,
+     :                  254D-7,       155D-7 /
+      DATA (IJSP(I,38),I=1,3),((AB(J,I,38),J=1,2),I=1,3) /
+     :                             2,  0,  1,
+     :                   -4D-6,         8D-6,
+     :                   -2D-6,        -3D-6,
+     :                  -26D-7,        -2D-7 /
+      DATA (IJSP(I,39),I=1,3),((AB(J,I,39),J=1,2),I=1,3) /
+     :                             2,  0,  2,
+     :                   -5D-6,         0D-6,
+     :                    0D-6,         0D-6,
+     :                    7D-7,         0D-7 /
+      DATA (IJSP(I,40),I=1,3),((AB(J,I,40),J=1,2),I=1,3) /
+     :                             2,  0,  3,
+     :                    3D-6,         4D-6,
+     :                    0D-6,         1D-6,
+     :                  -11D-7,         4D-7 /
+      DATA (IJSP(I,41),I=1,3),((AB(J,I,41),J=1,2),I=1,3) /
+     :                             3,  0, -2,
+     :                   -1D-6,        -1D-6,
+     :                    0D-6,         1D-6,
+     :                    4D-7,       -14D-7 /
+      DATA (IJSP(I,42),I=1,3),((AB(J,I,42),J=1,2),I=1,3) /
+     :                             3,  0, -1,
+     :                    6D-6,        -3D-6,
+     :                    0D-6,         0D-6,
+     :                   18D-7,        35D-7 /
+      DATA (IJSP(I,43),I=1,3),((AB(J,I,43),J=1,2),I=1,3) /
+     :                             3,  0,  0,
+     :                   -1D-6,        -2D-6,
+     :                    0D-6,         1D-6,
+     :                   13D-7,         3D-7 /
+
+
+*  Validate the planet number.
+      IF (NP.LT.1.OR.NP.GT.9) THEN
+         JSTAT=-1
+         DO I=1,6
+            PV(I)=0D0
+         END DO
+      ELSE
+
+*     Separate algorithms for Pluto and the rest.
+         IF (NP.NE.9) THEN
+
+*        -----------------------
+*        Mercury through Neptune
+*        -----------------------
+
+*        Time: Julian millennia since J2000.
+            T=(DATE-51544.5D0)/365250D0
+
+*        OK status unless remote epoch.
+            IF (ABS(T).LE.1D0) THEN
+               JSTAT=0
+            ELSE
+               JSTAT=1
+            END IF
+
+*        Compute the mean elements.
+            DA=A(1,NP)+(A(2,NP)+A(3,NP)*T)*T
+            DL=(3600D0*DLM(1,NP)+(DLM(2,NP)+DLM(3,NP)*T)*T)*AS2R
+            DE=E(1,NP)+(E(2,NP)+E(3,NP)*T)*T
+            DPE=MOD((3600D0*PI(1,NP)+(PI(2,NP)+PI(3,NP)*T)*T)*AS2R,D2PI)
+            DI=(3600D0*DINC(1,NP)+(DINC(2,NP)+DINC(3,NP)*T)*T)*AS2R
+            DO=MOD((3600D0*OMEGA(1,NP)
+     :                        +(OMEGA(2,NP)+OMEGA(3,NP)*T)*T)*AS2R,D2PI)
+
+*        Apply the trigonometric terms.
+            DMU=0.35953620D0*T
+            DO J=1,8
+               ARGA=DKP(J,NP)*DMU
+               ARGL=DKQ(J,NP)*DMU
+               DA=DA+(CA(J,NP)*COS(ARGA)+SA(J,NP)*SIN(ARGA))*1D-7
+               DL=DL+(CLO(J,NP)*COS(ARGL)+SLO(J,NP)*SIN(ARGL))*1D-7
+            END DO
+            ARGA=DKP(9,NP)*DMU
+            DA=DA+T*(CA(9,NP)*COS(ARGA)+SA(9,NP)*SIN(ARGA))*1D-7
+            DO J=9,10
+               ARGL=DKQ(J,NP)*DMU
+               DL=DL+T*(CLO(J,NP)*COS(ARGL)+SLO(J,NP)*SIN(ARGL))*1D-7
+            END DO
+            DL=MOD(DL,D2PI)
+
+*        Daily motion.
+            DM=GCON*SQRT((1D0+1D0/AMAS(NP))/(DA*DA*DA))
+
+*        Make the prediction.
+            CALL sla_PLANEL(DATE,1,DATE,DI,DO,DPE,DA,DE,DL,DM,PV,J)
+            IF (J.LT.0) JSTAT=-2
+
+         ELSE
+
+*        -----
+*        Pluto
+*        -----
+
+*        Time: Julian centuries since J2000.
+            T=(DATE-51544.5D0)/36525D0
+
+*        OK status unless remote epoch.
+            IF (T.GE.-1.15D0.AND.T.LE.1D0) THEN
+               JSTAT=0
+            ELSE
+               JSTAT=1
+            END IF
+
+*        Fundamental arguments (radians).
+            DJ=(DJ0+DJD*T)*D2R
+            DS=(DS0+DSD*T)*D2R
+            DP=(DP0+DPD*T)*D2R
+
+*        Initialize coefficients and derivatives.
+            DO I=1,3
+               WLBR(I)=0D0
+               WLBRD(I)=0D0
+            END DO
+
+*        Term by term through Meeus Table 36.A.
+            DO J=1,43
+
+*           Argument and derivative (radians, radians per century).
+               WJ=DBLE(IJSP(1,J))
+               WS=DBLE(IJSP(2,J))
+               WP=DBLE(IJSP(3,J))
+               AL=WJ*DJ+WS*DS+WP*DP
+               ALD=(WJ*DJD+WS*DSD+WP*DPD)*D2R
+
+*           Functions of argument.
+               SAL=SIN(AL)
+               CAL=COS(AL)
+
+*           Periodic terms in longitude, latitude, radius vector.
+               DO I=1,3
+
+*              A and B coefficients (deg, AU).
+                  AC=AB(1,I,J)
+                  BC=AB(2,I,J)
+
+*              Periodic terms (deg, AU, deg/Jc, AU/Jc).
+                  WLBR(I)=WLBR(I)+AC*SAL+BC*CAL
+                  WLBRD(I)=WLBRD(I)+(AC*CAL-BC*SAL)*ALD
+               END DO
+            END DO
+
+*        Heliocentric longitude and derivative (radians, radians/sec).
+            DL=(DL0+DLD0*T+WLBR(1))*D2R
+            DLD=(DLD0+WLBRD(1))*D2R/SPC
+
+*        Heliocentric latitude and derivative (radians, radians/sec).
+            DB=(DB0+WLBR(2))*D2R
+            DBD=WLBRD(2)*D2R/SPC
+
+*        Heliocentric radius vector and derivative (AU, AU/sec).
+            DR=DR0+WLBR(3)
+            DRD=WLBRD(3)/SPC
+
+*        Functions of latitude, longitude, radius vector.
+            SL=SIN(DL)
+            CL=COS(DL)
+            SB=SIN(DB)
+            CB=COS(DB)
+            SLCB=SL*CB
+            CLCB=CL*CB
+
+*        Heliocentric vector and derivative, J2000 ecliptic and equinox.
+            X=DR*CLCB
+            Y=DR*SLCB
+            Z=DR*SB
+            XD=DRD*CLCB-DR*(CL*SB*DBD+SLCB*DLD)
+            YD=DRD*SLCB+DR*(-SL*SB*DBD+CLCB*DLD)
+            ZD=DRD*SB+DR*CB*DBD
+
+*        Transform to J2000 equator and equinox.
+            PV(1)=X
+            PV(2)=Y*CE-Z*SE
+            PV(3)=Y*SE+Z*CE
+            PV(4)=XD
+            PV(5)=YD*CE-ZD*SE
+            PV(6)=YD*SE+ZD*CE
+         END IF
+      END IF
+
+      END
diff --git a/plante.f b/plante.f
new file mode 100644
index 0000000000000000000000000000000000000000..13cea3b0f573a9433198a2643261a713b88c5056
--- /dev/null
+++ b/plante.f
@@ -0,0 +1,250 @@
+      SUBROUTINE sla_PLANTE (DATE, ELONG, PHI, JFORM, EPOCH,
+     :                       ORBINC, ANODE, PERIH, AORQ, E,
+     :                       AORL, DM, RA, DEC, R, JSTAT)
+*+
+*     - - - - - - -
+*      P L A N T E
+*     - - - - - - -
+*
+*  Topocentric apparent RA,Dec of a Solar-System object whose
+*  heliocentric orbital elements are known.
+*
+*  Given:
+*     DATE     d     MJD of observation (JD - 2400000.5, Notes 1,5)
+*     ELONG    d     observer's east longitude (radians, Note 2)
+*     PHI      d     observer's geodetic latitude (radians, Note 2)
+*     JFORM    i     choice of element set (1-3; Notes 3-6)
+*     EPOCH    d     epoch of elements (TT MJD, Note 5)
+*     ORBINC   d     inclination (radians)
+*     ANODE    d     longitude of the ascending node (radians)
+*     PERIH    d     longitude or argument of perihelion (radians)
+*     AORQ     d     mean distance or perihelion distance (AU)
+*     E        d     eccentricity
+*     AORL     d     mean anomaly or longitude (radians, JFORM=1,2 only)
+*     DM       d     daily motion (radians, JFORM=1 only )
+*
+*  Returned:
+*     RA,DEC   d     RA, Dec (topocentric apparent, radians)
+*     R        d     distance from observer (AU)
+*     JSTAT    i     status:  0 = OK
+*                            -1 = illegal JFORM
+*                            -2 = illegal E
+*                            -3 = illegal AORQ
+*                            -4 = illegal DM
+*                            -5 = numerical error
+*
+*  Called: sla_EL2UE, sla_PLANTU
+*
+*  Notes:
+*
+*  1  DATE is the instant for which the prediction is required.  It is
+*     in the TT timescale (formerly Ephemeris Time, ET) and is a
+*     Modified Julian Date (JD-2400000.5).
+*
+*  2  The longitude and latitude allow correction for geocentric
+*     parallax.  This is usually a small effect, but can become
+*     important for near-Earth asteroids.  Geocentric positions can be
+*     generated by appropriate use of routines sla_EVP (or sla_EPV) and
+*     sla_PLANEL.
+*
+*  3  The elements are with respect to the J2000 ecliptic and equinox.
+*
+*  4  A choice of three different element-set options is available:
+*
+*     Option JFORM = 1, suitable for the major planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = longitude of perihelion, curly pi (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e (range 0 to <1)
+*       AORL   = mean longitude L (radians)
+*       DM     = daily motion (radians)
+*
+*     Option JFORM = 2, suitable for minor planets:
+*
+*       EPOCH  = epoch of elements (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = mean distance, a (AU)
+*       E      = eccentricity, e (range 0 to <1)
+*       AORL   = mean anomaly M (radians)
+*
+*     Option JFORM = 3, suitable for comets:
+*
+*       EPOCH  = epoch of elements and perihelion (TT MJD)
+*       ORBINC = inclination i (radians)
+*       ANODE  = longitude of the ascending node, big omega (radians)
+*       PERIH  = argument of perihelion, little omega (radians)
+*       AORQ   = perihelion distance, q (AU)
+*       E      = eccentricity, e (range 0 to 10)
+*
+*     Unused arguments (DM for JFORM=2, AORL and DM for JFORM=3) are not
+*     accessed.
+*
+*  5  Each of the three element sets defines an unperturbed heliocentric
+*     orbit.  For a given epoch of observation, the position of the body
+*     in its orbit can be predicted from these elements, which are
+*     called "osculating elements", using standard two-body analytical
+*     solutions.  However, due to planetary perturbations, a given set
+*     of osculating elements remains usable for only as long as the
+*     unperturbed orbit that it describes is an adequate approximation
+*     to reality.  Attached to such a set of elements is a date called
+*     the "osculating epoch", at which the elements are, momentarily,
+*     a perfect representation of the instantaneous position and
+*     velocity of the body.
+*
+*     Therefore, for any given problem there are up to three different
+*     epochs in play, and it is vital to distinguish clearly between
+*     them:
+*
+*     . The epoch of observation:  the moment in time for which the
+*       position of the body is to be predicted.
+*
+*     . The epoch defining the position of the body:  the moment in time
+*       at which, in the absence of purturbations, the specified
+*       position (mean longitude, mean anomaly, or perihelion) is
+*       reached.
+*
+*     . The osculating epoch:  the moment in time at which the given
+*       elements are correct.
+*
+*     For the major-planet and minor-planet cases it is usual to make
+*     the epoch that defines the position of the body the same as the
+*     epoch of osculation.  Thus, only two different epochs are
+*     involved:  the epoch of the elements and the epoch of observation.
+*
+*     For comets, the epoch of perihelion fixes the position in the
+*     orbit and in general a different epoch of osculation will be
+*     chosen.  Thus, all three types of epoch are involved.
+*
+*     For the present routine:
+*
+*     . The epoch of observation is the argument DATE.
+*
+*     . The epoch defining the position of the body is the argument
+*       EPOCH.
+*
+*     . The osculating epoch is not used and is assumed to be close
+*       enough to the epoch of observation to deliver adequate accuracy.
+*       If not, a preliminary call to sla_PERTEL may be used to update
+*       the element-set (and its associated osculating epoch) by
+*       applying planetary perturbations.
+*
+*  6  Two important sources for orbital elements are Horizons, operated
+*     by the Jet Propulsion Laboratory, Pasadena, and the Minor Planet
+*     Center, operated by the Center for Astrophysics, Harvard.
+*
+*     The JPL Horizons elements (heliocentric, J2000 ecliptic and
+*     equinox) correspond to SLALIB arguments as follows.
+*
+*       Major planets:
+*
+*         JFORM  = 1
+*         EPOCH  = JDCT-2400000.5D0
+*         ORBINC = IN (in radians)
+*         ANODE  = OM (in radians)
+*         PERIH  = OM+W (in radians)
+*         AORQ   = A
+*         E      = EC
+*         AORL   = MA+OM+W (in radians)
+*         DM     = N (in radians)
+*
+*         Epoch of osculation = JDCT-2400000.5D0
+*
+*       Minor planets:
+*
+*         JFORM  = 2
+*         EPOCH  = JDCT-2400000.5D0
+*         ORBINC = IN (in radians)
+*         ANODE  = OM (in radians)
+*         PERIH  = W (in radians)
+*         AORQ   = A
+*         E      = EC
+*         AORL   = MA (in radians)
+*
+*         Epoch of osculation = JDCT-2400000.5D0
+*
+*       Comets:
+*
+*         JFORM  = 3
+*         EPOCH  = Tp-2400000.5D0
+*         ORBINC = IN (in radians)
+*         ANODE  = OM (in radians)
+*         PERIH  = W (in radians)
+*         AORQ   = QR
+*         E      = EC
+*
+*         Epoch of osculation = JDCT-2400000.5D0
+*
+*     The MPC elements correspond to SLALIB arguments as follows.
+*
+*       Minor planets:
+*
+*         JFORM  = 2
+*         EPOCH  = Epoch-2400000.5D0
+*         ORBINC = Incl. (in radians)
+*         ANODE  = Node (in radians)
+*         PERIH  = Perih. (in radians)
+*         AORQ   = a
+*         E      = e
+*         AORL   = M (in radians)
+*
+*         Epoch of osculation = Epoch-2400000.5D0
+*
+*       Comets:
+*
+*         JFORM  = 3
+*         EPOCH  = T-2400000.5D0
+*         ORBINC = Incl. (in radians)
+*         ANODE  = Node. (in radians)
+*         PERIH  = Perih. (in radians)
+*         AORQ   = q
+*         E      = e
+*
+*         Epoch of osculation = Epoch-2400000.5D0
+*
+*  This revision:  19 June 2004
+*
+*  Copyright (C) 2004 P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,ELONG,PHI
+      INTEGER JFORM
+      DOUBLE PRECISION EPOCH,ORBINC,ANODE,PERIH,AORQ,E,
+     :                 AORL,DM,RA,DEC,R
+      INTEGER JSTAT
+
+      DOUBLE PRECISION U(13)
+
+
+*  Transform conventional elements to universal elements.
+      CALL sla_EL2UE(DATE,
+     :               JFORM,EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM,
+     :               U,JSTAT)
+
+*  If successful, make the prediction.
+      IF (JSTAT.EQ.0) CALL sla_PLANTU(DATE,ELONG,PHI,U,RA,DEC,R,JSTAT)
+
+      END
diff --git a/plantu.f b/plantu.f
new file mode 100644
index 0000000000000000000000000000000000000000..dee48de06b94afb60db520fc9c46c587fe53cf5a
--- /dev/null
+++ b/plantu.f
@@ -0,0 +1,155 @@
+      SUBROUTINE sla_PLANTU (DATE, ELONG, PHI, U, RA, DEC, R, JSTAT)
+*+
+*     - - - - - - -
+*      P L A N T U
+*     - - - - - - -
+*
+*  Topocentric apparent RA,Dec of a Solar-System object whose
+*  heliocentric universal elements are known.
+*
+*  Given:
+*     DATE      d     TT MJD of observation (JD - 2400000.5)
+*     ELONG     d     observer's east longitude (radians)
+*     PHI       d     observer's geodetic latitude (radians)
+*     U       d(13)   universal elements
+*
+*               (1)   combined mass (M+m)
+*               (2)   total energy of the orbit (alpha)
+*               (3)   reference (osculating) epoch (t0)
+*             (4-6)   position at reference epoch (r0)
+*             (7-9)   velocity at reference epoch (v0)
+*              (10)   heliocentric distance at reference epoch
+*              (11)   r0.v0
+*              (12)   date (t)
+*              (13)   universal eccentric anomaly (psi) of date, approx
+*
+*  Returned:
+*     RA,DEC    d     RA, Dec (topocentric apparent, radians)
+*     R         d     distance from observer (AU)
+*     JSTAT     i     status:  0 = OK
+*                             -1 = radius vector zero
+*                             -2 = failed to converge
+*
+*  Called: sla_GMST, sla_DT, sla_EPJ, sla_EPV, sla_UE2PV, sla_PRENUT,
+*          sla_DMXV, sla_PVOBS, sla_DCC2S, sla_DRANRM
+*
+*  Notes:
+*
+*  1  DATE is the instant for which the prediction is required.  It is
+*     in the TT timescale (formerly Ephemeris Time, ET) and is a
+*     Modified Julian Date (JD-2400000.5).
+*
+*  2  The longitude and latitude allow correction for geocentric
+*     parallax.  This is usually a small effect, but can become
+*     important for near-Earth asteroids.  Geocentric positions can be
+*     generated by appropriate use of routines sla_EPV (or sla_EVP) and
+*     sla_UE2PV.
+*
+*  3  The "universal" elements are those which define the orbit for the
+*     purposes of the method of universal variables (see reference 2).
+*     They consist of the combined mass of the two bodies, an epoch,
+*     and the position and velocity vectors (arbitrary reference frame)
+*     at that epoch.  The parameter set used here includes also various
+*     quantities that can, in fact, be derived from the other
+*     information.  This approach is taken to avoiding unnecessary
+*     computation and loss of accuracy.  The supplementary quantities
+*     are (i) alpha, which is proportional to the total energy of the
+*     orbit, (ii) the heliocentric distance at epoch, (iii) the
+*     outwards component of the velocity at the given epoch, (iv) an
+*     estimate of psi, the "universal eccentric anomaly" at a given
+*     date and (v) that date.
+*
+*  4  The universal elements are with respect to the J2000 equator and
+*     equinox.
+*
+*     1  Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*        Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*
+*     2  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+*
+*  Last revision:   19 February 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,ELONG,PHI,U(13),RA,DEC,R
+      INTEGER JSTAT
+
+*  Light time for unit distance (sec)
+      DOUBLE PRECISION TAU
+      PARAMETER (TAU=499.004782D0)
+
+      INTEGER I
+      DOUBLE PRECISION DVB(3),DPB(3),VSG(6),VSP(6),V(6),RMAT(3,3),
+     :                 VGP(6),STL,VGO(6),DX,DY,DZ,D,TL
+      DOUBLE PRECISION sla_GMST,sla_DT,sla_EPJ,sla_DRANRM
+
+
+
+*  Sun to geocentre (J2000, velocity in AU/s).
+      CALL sla_EPV(DATE,VSG,VSG(4),DPB,DVB)
+      DO I=4,6
+         VSG(I)=VSG(I)/86400D0
+      END DO
+
+*  Sun to planet (J2000).
+      CALL sla_UE2PV(DATE,U,VSP,JSTAT)
+
+*  Geocentre to planet (J2000).
+      DO I=1,6
+         V(I)=VSP(I)-VSG(I)
+      END DO
+
+*  Precession and nutation to date.
+      CALL sla_PRENUT(2000D0,DATE,RMAT)
+      CALL sla_DMXV(RMAT,V,VGP)
+      CALL sla_DMXV(RMAT,V(4),VGP(4))
+
+*  Geocentre to observer (date).
+      STL=sla_GMST(DATE-sla_DT(sla_EPJ(DATE))/86400D0)+ELONG
+      CALL sla_PVOBS(PHI,0D0,STL,VGO)
+
+*  Observer to planet (date).
+      DO I=1,6
+         V(I)=VGP(I)-VGO(I)
+      END DO
+
+*  Geometric distance (AU).
+      DX=V(1)
+      DY=V(2)
+      DZ=V(3)
+      D=SQRT(DX*DX+DY*DY+DZ*DZ)
+
+*  Light time (sec).
+      TL=TAU*D
+
+*  Correct position for planetary aberration
+      DO I=1,3
+         V(I)=V(I)-TL*V(I+3)
+      END DO
+
+*  To RA,Dec.
+      CALL sla_DCC2S(V,RA,DEC)
+      RA=sla_DRANRM(RA)
+      R=D
+
+      END
diff --git a/pm.f b/pm.f
new file mode 100644
index 0000000000000000000000000000000000000000..ecc19b6f78b2221e1414f3d7b10124d4b17d07c8
--- /dev/null
+++ b/pm.f
@@ -0,0 +1,97 @@
+      SUBROUTINE sla_PM (R0, D0, PR, PD, PX, RV, EP0, EP1, R1, D1)
+*+
+*     - - -
+*      P M
+*     - - -
+*
+*  Apply corrections for proper motion to a star RA,Dec
+*  (double precision)
+*
+*  References:
+*     1984 Astronomical Almanac, pp B39-B41.
+*     (also Lederle & Schwan, Astron. Astrophys. 134,
+*      1-6, 1984)
+*
+*  Given:
+*     R0,D0    dp     RA,Dec at epoch EP0 (rad)
+*     PR,PD    dp     proper motions:  RA,Dec changes per year of epoch
+*     PX       dp     parallax (arcsec)
+*     RV       dp     radial velocity (km/sec, +ve if receding)
+*     EP0      dp     start epoch in years (e.g. Julian epoch)
+*     EP1      dp     end epoch in years (same system as EP0)
+*
+*  Returned:
+*     R1,D1    dp     RA,Dec at epoch EP1 (rad)
+*
+*  Called:
+*     sla_DCS2C       spherical to Cartesian
+*     sla_DCC2S       Cartesian to spherical
+*     sla_DRANRM      normalize angle 0-2Pi
+*
+*  Notes:
+*
+*  1  The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt,
+*     and are in the same coordinate system as R0,D0.
+*
+*  2  If the available proper motions are pre-FK5 they will be per
+*     tropical year rather than per Julian year, and so the epochs
+*     must both be Besselian rather than Julian.  In such cases, a
+*     scaling factor of 365.2422D0/365.25D0 should be applied to the
+*     radial velocity before use.
+*
+*  P.T.Wallace   Starlink   19 January 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION R0,D0,PR,PD,PX,RV,EP0,EP1,R1,D1
+
+*  Km/s to AU/year multiplied by arcseconds to radians
+      DOUBLE PRECISION VFR
+      PARAMETER (VFR=(365.25D0*86400D0/149597870D0)*4.8481368111D-6)
+
+      INTEGER I
+      DOUBLE PRECISION sla_DRANRM
+      DOUBLE PRECISION W,EM(3),T,P(3)
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(R0,D0,P)
+
+*  Space motion (radians per year)
+      W=VFR*RV*PX
+      EM(1)=-PR*P(2)-PD*COS(R0)*SIN(D0)+W*P(1)
+      EM(2)= PR*P(1)-PD*SIN(R0)*SIN(D0)+W*P(2)
+      EM(3)=         PD*COS(D0)        +W*P(3)
+
+*  Apply the motion
+      T=EP1-EP0
+      DO I=1,3
+         P(I)=P(I)+T*EM(I)
+      END DO
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(P,R1,D1)
+      R1=sla_DRANRM(R1)
+
+      END
diff --git a/polmo.f b/polmo.f
new file mode 100644
index 0000000000000000000000000000000000000000..bda1b5b452ce1b86176af3a10e6dddc0e188fdf0
--- /dev/null
+++ b/polmo.f
@@ -0,0 +1,158 @@
+      SUBROUTINE sla_POLMO ( ELONGM, PHIM, XP, YP, ELONG, PHI, DAZ )
+*+
+*     - - - - - -
+*      P O L M O
+*     - - - - - -
+*
+*  Polar motion:  correct site longitude and latitude for polar
+*  motion and calculate azimuth difference between celestial and
+*  terrestrial poles.
+*
+*  Given:
+*     ELONGM   d      mean longitude of the observer (radians, east +ve)
+*     PHIM     d      mean geodetic latitude of the observer (radians)
+*     XP       d      polar motion x-coordinate (radians)
+*     YP       d      polar motion y-coordinate (radians)
+*
+*  Returned:
+*     ELONG    d      true longitude of the observer (radians, east +ve)
+*     PHI      d      true geodetic latitude of the observer (radians)
+*     DAZ      d      azimuth correction (terrestrial-celestial, radians)
+*
+*  Notes:
+*
+*   1)  "Mean" longitude and latitude are the (fixed) values for the
+*       site's location with respect to the IERS terrestrial reference
+*       frame;  the latitude is geodetic.  TAKE CARE WITH THE LONGITUDE
+*       SIGN CONVENTION.  The longitudes used by the present routine
+*       are east-positive, in accordance with geographical convention
+*       (and right-handed).  In particular, note that the longitudes
+*       returned by the sla_OBS routine are west-positive, following
+*       astronomical usage, and must be reversed in sign before use in
+*       the present routine.
+*
+*   2)  XP and YP are the (changing) coordinates of the Celestial
+*       Ephemeris Pole with respect to the IERS Reference Pole.
+*       XP is positive along the meridian at longitude 0 degrees,
+*       and YP is positive along the meridian at longitude
+*       270 degrees (i.e. 90 degrees west).  Values for XP,YP can
+*       be obtained from IERS circulars and equivalent publications;
+*       the maximum amplitude observed so far is about 0.3 arcseconds.
+*
+*   3)  "True" longitude and latitude are the (moving) values for
+*       the site's location with respect to the celestial ephemeris
+*       pole and the meridian which corresponds to the Greenwich
+*       apparent sidereal time.  The true longitude and latitude
+*       link the terrestrial coordinates with the standard celestial
+*       models (for precession, nutation, sidereal time etc).
+*
+*   4)  The azimuths produced by sla_AOP and sla_AOPQK are with
+*       respect to due north as defined by the Celestial Ephemeris
+*       Pole, and can therefore be called "celestial azimuths".
+*       However, a telescope fixed to the Earth measures azimuth
+*       essentially with respect to due north as defined by the
+*       IERS Reference Pole, and can therefore be called "terrestrial
+*       azimuth".  Uncorrected, this would manifest itself as a
+*       changing "azimuth zero-point error".  The value DAZ is the
+*       correction to be added to a celestial azimuth to produce
+*       a terrestrial azimuth.
+*
+*   5)  The present routine is rigorous.  For most practical
+*       purposes, the following simplified formulae provide an
+*       adequate approximation:
+*
+*       ELONG = ELONGM+XP*COS(ELONGM)-YP*SIN(ELONGM)
+*       PHI   = PHIM+(XP*SIN(ELONGM)+YP*COS(ELONGM))*TAN(PHIM)
+*       DAZ   = -SQRT(XP*XP+YP*YP)*COS(ELONGM-ATAN2(XP,YP))/COS(PHIM)
+*
+*       An alternative formulation for DAZ is:
+*
+*       X = COS(ELONGM)*COS(PHIM)
+*       Y = SIN(ELONGM)*COS(PHIM)
+*       DAZ = ATAN2(-X*YP-Y*XP,X*X+Y*Y)
+*
+*   Reference:  Seidelmann, P.K. (ed), 1992.  "Explanatory Supplement
+*               to the Astronomical Almanac", ISBN 0-935702-68-7,
+*               sections 3.27, 4.25, 4.52.
+*
+*  P.T.Wallace   Starlink   30 November 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION ELONGM,PHIM,XP,YP,ELONG,PHI,DAZ
+
+      DOUBLE PRECISION SEL,CEL,SPH,CPH,XM,YM,ZM,XNM,YNM,ZNM,
+     :                 SXP,CXP,SYP,CYP,ZW,XT,YT,ZT,XNT,YNT
+
+
+
+*  Site mean longitude and mean geodetic latitude as a Cartesian vector
+      SEL=SIN(ELONGM)
+      CEL=COS(ELONGM)
+      SPH=SIN(PHIM)
+      CPH=COS(PHIM)
+
+      XM=CEL*CPH
+      YM=SEL*CPH
+      ZM=SPH
+
+*  Rotate site vector by polar motion, Y-component then X-component
+      SXP=SIN(XP)
+      CXP=COS(XP)
+      SYP=SIN(YP)
+      CYP=COS(YP)
+
+      ZW=(-YM*SYP+ZM*CYP)
+
+      XT=XM*CXP-ZW*SXP
+      YT=YM*CYP+ZM*SYP
+      ZT=XM*SXP+ZW*CXP
+
+*  Rotate also the geocentric direction of the terrestrial pole (0,0,1)
+      XNM=-SXP*CYP
+      YNM=SYP
+      ZNM=CXP*CYP
+
+      CPH=SQRT(XT*XT+YT*YT)
+      IF (CPH.EQ.0D0) XT=1D0
+      SEL=YT/CPH
+      CEL=XT/CPH
+
+*  Return true longitude and true geodetic latitude of site
+      IF (XT.NE.0D0.OR.YT.NE.0D0) THEN
+         ELONG=ATAN2(YT,XT)
+      ELSE
+         ELONG=0D0
+      END IF
+      PHI=ATAN2(ZT,CPH)
+
+*  Return current azimuth of terrestrial pole seen from site position
+      XNT=(XNM*CEL+YNM*SEL)*ZT-ZNM*CPH
+      YNT=-XNM*SEL+YNM*CEL
+      IF (XNT.NE.0D0.OR.YNT.NE.0D0) THEN
+         DAZ=ATAN2(-YNT,-XNT)
+      ELSE
+         DAZ=0D0
+      END IF
+
+      END
diff --git a/prebn.f b/prebn.f
new file mode 100644
index 0000000000000000000000000000000000000000..71fb73b72d0062d2297bb06e63206975c9e5f357
--- /dev/null
+++ b/prebn.f
@@ -0,0 +1,79 @@
+      SUBROUTINE sla_PREBN (BEP0, BEP1, RMATP)
+*+
+*     - - - - - -
+*      P R E B N
+*     - - - - - -
+*
+*  Generate the matrix of precession between two epochs,
+*  using the old, pre-IAU1976, Bessel-Newcomb model, using
+*  Kinoshita's formulation (double precision)
+*
+*  Given:
+*     BEP0    dp         beginning Besselian epoch
+*     BEP1    dp         ending Besselian epoch
+*
+*  Returned:
+*     RMATP  dp(3,3)    precession matrix
+*
+*  The matrix is in the sense   V(BEP1)  =  RMATP * V(BEP0)
+*
+*  Reference:
+*     Kinoshita, H. (1975) 'Formulas for precession', SAO Special
+*     Report No. 364, Smithsonian Institution Astrophysical
+*     Observatory, Cambridge, Massachusetts.
+*
+*  Called:  sla_DEULER
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION BEP0,BEP1,RMATP(3,3)
+
+*  Arc seconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+      DOUBLE PRECISION BIGT,T,TAS2R,W,ZETA,Z,THETA
+
+
+
+*  Interval between basic epoch B1850.0 and beginning epoch in TC
+      BIGT = (BEP0-1850D0)/100D0
+
+*  Interval over which precession required, in tropical centuries
+      T = (BEP1-BEP0)/100D0
+
+*  Euler angles
+      TAS2R = T*AS2R
+      W = 2303.5548D0+(1.39720D0+0.000059D0*BIGT)*BIGT
+
+      ZETA = (W+(0.30242D0-0.000269D0*BIGT+0.017996D0*T)*T)*TAS2R
+      Z = (W+(1.09478D0+0.000387D0*BIGT+0.018324D0*T)*T)*TAS2R
+      THETA = (2005.1125D0+(-0.85294D0-0.000365D0*BIGT)*BIGT+
+     :        (-0.42647D0-0.000365D0*BIGT-0.041802D0*T)*T)*TAS2R
+
+*  Rotation matrix
+      CALL sla_DEULER('ZYZ',-ZETA,THETA,-Z,RMATP)
+
+      END
diff --git a/prec.f b/prec.f
new file mode 100644
index 0000000000000000000000000000000000000000..34804dde072ac969a1190c4cfd0e0c3abeb47afc
--- /dev/null
+++ b/prec.f
@@ -0,0 +1,96 @@
+      SUBROUTINE sla_PREC (EP0, EP1, RMATP)
+*+
+*     - - - - -
+*      P R E C
+*     - - - - -
+*
+*  Form the matrix of precession between two epochs (IAU 1976, FK5)
+*  (double precision)
+*
+*  Given:
+*     EP0    dp         beginning epoch
+*     EP1    dp         ending epoch
+*
+*  Returned:
+*     RMATP  dp(3,3)    precession matrix
+*
+*  Notes:
+*
+*     1)  The epochs are TDB (loosely ET) Julian epochs.
+*
+*     2)  The matrix is in the sense   V(EP1)  =  RMATP * V(EP0)
+*
+*     3)  Though the matrix method itself is rigorous, the precession
+*         angles are expressed through canonical polynomials which are
+*         valid only for a limited time span.  There are also known
+*         errors in the IAU precession rate.  The absolute accuracy
+*         of the present formulation is better than 0.1 arcsec from
+*         1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD,
+*         and remains below 3 arcsec for the whole of the period
+*         500BC to 3000AD.  The errors exceed 10 arcsec outside the
+*         range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to
+*         5600AD and exceed 1000 arcsec outside 6800BC to 8200AD.
+*         The SLALIB routine sla_PRECL implements a more elaborate
+*         model which is suitable for problems spanning several
+*         thousand years.
+*
+*  References:
+*     Lieske,J.H., 1979. Astron.Astrophys.,73,282.
+*      equations (6) & (7), p283.
+*     Kaplan,G.H., 1981. USNO circular no. 163, pA2.
+*
+*  Called:  sla_DEULER
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EP0,EP1,RMATP(3,3)
+
+*  Arc seconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+      DOUBLE PRECISION T0,T,TAS2R,W,ZETA,Z,THETA
+
+
+
+*  Interval between basic epoch J2000.0 and beginning epoch (JC)
+      T0 = (EP0-2000D0)/100D0
+
+*  Interval over which precession required (JC)
+      T = (EP1-EP0)/100D0
+
+*  Euler angles
+      TAS2R = T*AS2R
+      W = 2306.2181D0+(1.39656D0-0.000139D0*T0)*T0
+
+      ZETA = (W+((0.30188D0-0.000344D0*T0)+0.017998D0*T)*T)*TAS2R
+      Z = (W+((1.09468D0+0.000066D0*T0)+0.018203D0*T)*T)*TAS2R
+      THETA = ((2004.3109D0+(-0.85330D0-0.000217D0*T0)*T0)
+     :        +((-0.42665D0-0.000217D0*T0)-0.041833D0*T)*T)*TAS2R
+
+*  Rotation matrix
+      CALL sla_DEULER('ZYZ',-ZETA,THETA,-Z,RMATP)
+
+      END
diff --git a/preces.f b/preces.f
new file mode 100644
index 0000000000000000000000000000000000000000..1f27349cc250a1597ca5f246f94b8b3ea668f229
--- /dev/null
+++ b/preces.f
@@ -0,0 +1,101 @@
+      SUBROUTINE sla_PRECES (SYSTEM, EP0, EP1, RA, DC)
+*+
+*     - - - - - - -
+*      P R E C E S
+*     - - - - - - -
+*
+*  Precession - either FK4 (Bessel-Newcomb, pre IAU 1976) or
+*  FK5 (Fricke, post IAU 1976) as required.
+*
+*  Given:
+*     SYSTEM     char   precession to be applied: 'FK4' or 'FK5'
+*     EP0,EP1    dp     starting and ending epoch
+*     RA,DC      dp     RA,Dec, mean equator & equinox of epoch EP0
+*
+*  Returned:
+*     RA,DC      dp     RA,Dec, mean equator & equinox of epoch EP1
+*
+*  Called:    sla_DRANRM, sla_PREBN, sla_PREC, sla_DCS2C,
+*             sla_DMXV, sla_DCC2S
+*
+*  Notes:
+*
+*     1)  Lowercase characters in SYSTEM are acceptable.
+*
+*     2)  The epochs are Besselian if SYSTEM='FK4' and Julian if 'FK5'.
+*         For example, to precess coordinates in the old system from
+*         equinox 1900.0 to 1950.0 the call would be:
+*             CALL sla_PRECES ('FK4', 1900D0, 1950D0, RA, DC)
+*
+*     3)  This routine will NOT correctly convert between the old and
+*         the new systems - for example conversion from B1950 to J2000.
+*         For these purposes see sla_FK425, sla_FK524, sla_FK45Z and
+*         sla_FK54Z.
+*
+*     4)  If an invalid SYSTEM is supplied, values of -99D0,-99D0 will
+*         be returned for both RA and DC.
+*
+*  P.T.Wallace   Starlink   20 April 1990
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER SYSTEM*(*)
+      DOUBLE PRECISION EP0,EP1,RA,DC
+
+      DOUBLE PRECISION PM(3,3),V1(3),V2(3)
+      CHARACTER SYSUC*3
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+
+
+*  Convert to uppercase and validate SYSTEM
+      SYSUC=SYSTEM
+      IF (SYSUC(1:1).EQ.'f') SYSUC(1:1)='F'
+      IF (SYSUC(2:2).EQ.'k') SYSUC(2:2)='K'
+      IF (SYSUC.NE.'FK4'.AND.SYSUC.NE.'FK5') THEN
+         RA=-99D0
+         DC=-99D0
+      ELSE
+
+*     Generate appropriate precession matrix
+         IF (SYSUC.EQ.'FK4') THEN
+            CALL sla_PREBN(EP0,EP1,PM)
+         ELSE
+            CALL sla_PREC(EP0,EP1,PM)
+         END IF
+
+*     Convert RA,Dec to x,y,z
+         CALL sla_DCS2C(RA,DC,V1)
+
+*     Precess
+         CALL sla_DMXV(PM,V1,V2)
+
+*     Back to RA,Dec
+         CALL sla_DCC2S(V2,RA,DC)
+         RA=sla_DRANRM(RA)
+
+      END IF
+
+      END
diff --git a/precl.f b/precl.f
new file mode 100644
index 0000000000000000000000000000000000000000..411afaade4beaf2712932516906bbbc524ce12ab
--- /dev/null
+++ b/precl.f
@@ -0,0 +1,142 @@
+      SUBROUTINE sla_PRECL (EP0, EP1, RMATP)
+*+
+*     - - - - - -
+*      P R E C L
+*     - - - - - -
+*
+*  Form the matrix of precession between two epochs, using the
+*  model of Simon et al (1994), which is suitable for long
+*  periods of time.
+*
+*  (double precision)
+*
+*  Given:
+*     EP0    dp         beginning epoch
+*     EP1    dp         ending epoch
+*
+*  Returned:
+*     RMATP  dp(3,3)    precession matrix
+*
+*  Notes:
+*
+*     1)  The epochs are TDB Julian epochs.
+*
+*     2)  The matrix is in the sense   V(EP1)  =  RMATP * V(EP0)
+*
+*     3)  The absolute accuracy of the model is limited by the
+*         uncertainty in the general precession, about 0.3 arcsec per
+*         1000 years.  The remainder of the formulation provides a
+*         precision of 1 mas over the interval from 1000AD to 3000AD,
+*         0.1 arcsec from 1000BC to 5000AD and 1 arcsec from
+*         4000BC to 8000AD.
+*
+*  Reference:
+*     Simon, J.L. et al., 1994. Astron.Astrophys., 282, 663-683.
+*
+*  Called:  sla_DEULER
+*
+*  P.T.Wallace   Starlink   23 August 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EP0,EP1,RMATP(3,3)
+
+*  Arc seconds to radians
+      DOUBLE PRECISION AS2R
+      PARAMETER (AS2R=0.484813681109535994D-5)
+
+      DOUBLE PRECISION T0,T,TAS2R,W,ZETA,Z,THETA
+
+
+
+*  Interval between basic epoch J2000.0 and beginning epoch (1000JY)
+      T0 = (EP0-2000D0)/1000D0
+
+*  Interval over which precession required (1000JY)
+      T = (EP1-EP0)/1000D0
+
+*  Euler angles
+      TAS2R = T*AS2R
+      W =      23060.9097D0+
+     :          (139.7459D0+
+     :           (-0.0038D0+
+     :           (-0.5918D0+
+     :           (-0.0037D0+
+     :             0.0007D0*T0)*T0)*T0)*T0)*T0
+
+      ZETA =   (W+(30.2226D0+
+     :            (-0.2523D0+
+     :            (-0.3840D0+
+     :            (-0.0014D0+
+     :              0.0007D0*T0)*T0)*T0)*T0+
+     :            (18.0183D0+
+     :            (-0.1326D0+
+     :             (0.0006D0+
+     :              0.0005D0*T0)*T0)*T0+
+     :            (-0.0583D0+
+     :            (-0.0001D0+
+     :              0.0007D0*T0)*T0+
+     :            (-0.0285D0+
+     :            (-0.0002D0)*T)*T)*T)*T)*T)*TAS2R
+
+      Z =     (W+(109.5270D0+
+     :             (0.2446D0+
+     :            (-1.3913D0+
+     :            (-0.0134D0+
+     :              0.0026D0*T0)*T0)*T0)*T0+
+     :            (18.2667D0+
+     :            (-1.1400D0+
+     :            (-0.0173D0+
+     :              0.0044D0*T0)*T0)*T0+
+     :            (-0.2821D0+
+     :            (-0.0093D0+
+     :              0.0032D0*T0)*T0+
+     :            (-0.0301D0+
+     :              0.0006D0*T0
+     :             -0.0001D0*T)*T)*T)*T)*T)*TAS2R
+
+      THETA =  (20042.0207D0+
+     :           (-85.3131D0+
+     :            (-0.2111D0+
+     :             (0.3642D0+
+     :             (0.0008D0+
+     :            (-0.0005D0)*T0)*T0)*T0)*T0)*T0+
+     :           (-42.6566D0+
+     :            (-0.2111D0+
+     :             (0.5463D0+
+     :             (0.0017D0+
+     :            (-0.0012D0)*T0)*T0)*T0)*T0+
+     :           (-41.8238D0+
+     :             (0.0359D0+
+     :             (0.0027D0+
+     :            (-0.0001D0)*T0)*T0)*T0+
+     :            (-0.0731D0+
+     :             (0.0019D0+
+     :              0.0009D0*T0)*T0+
+     :            (-0.0127D0+
+     :              0.0011D0*T0+0.0004D0*T)*T)*T)*T)*T)*TAS2R
+
+*  Rotation matrix
+      CALL sla_DEULER('ZYZ',-ZETA,THETA,-Z,RMATP)
+
+      END
diff --git a/prenut.f b/prenut.f
new file mode 100644
index 0000000000000000000000000000000000000000..81696063e90c36b97c2030998fc62b7afe88eb4c
--- /dev/null
+++ b/prenut.f
@@ -0,0 +1,66 @@
+      SUBROUTINE sla_PRENUT (EPOCH, DATE, RMATPN)
+*+
+*     - - - - - - -
+*      P R E N U T
+*     - - - - - - -
+*
+*  Form the matrix of precession and nutation (SF2001)
+*  (double precision)
+*
+*  Given:
+*     EPOCH   dp         Julian Epoch for mean coordinates
+*     DATE    dp         Modified Julian Date (JD-2400000.5)
+*                        for true coordinates
+*
+*  Returned:
+*     RMATPN  dp(3,3)    combined precession/nutation matrix
+*
+*  Called:  sla_PREC, sla_EPJ, sla_NUT, sla_DMXM
+*
+*  Notes:
+*
+*  1)  The epoch and date are TDB (loosely ET).  TT will do, or even
+*      UTC.
+*
+*  2)  The matrix is in the sense   V(true) = RMATPN * V(mean)
+*
+*  Last revision:   3 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION EPOCH,DATE,RMATPN(3,3)
+
+      DOUBLE PRECISION RMATP(3,3),RMATN(3,3),sla_EPJ
+
+
+
+*  Precession
+      CALL sla_PREC(EPOCH,sla_EPJ(DATE),RMATP)
+
+*  Nutation
+      CALL sla_NUT(DATE,RMATN)
+
+*  Combine the matrices:  PN = N x P
+      CALL sla_DMXM(RMATN,RMATP,RMATPN)
+
+      END
diff --git a/pv2el.f b/pv2el.f
new file mode 100644
index 0000000000000000000000000000000000000000..1ad6ca504b3fdc84f48fb0d1109703979da9738d
--- /dev/null
+++ b/pv2el.f
@@ -0,0 +1,379 @@
+      SUBROUTINE sla_PV2EL (PV, DATE, PMASS, JFORMR,
+     :                      JFORM, EPOCH, ORBINC, ANODE, PERIH,
+     :                      AORQ, E, AORL, DM, JSTAT)
+*+
+*     - - - - - -
+*      P V 2 E L
+*     - - - - - -
+*
+*  Heliocentric osculating elements obtained from instantaneous position
+*  and velocity.
+*
+*  Given:
+*     PV        d(6)   heliocentric x,y,z,xdot,ydot,zdot of date,
+*                      J2000 equatorial triad (AU,AU/s; Note 1)
+*     DATE      d      date (TT Modified Julian Date = JD-2400000.5)
+*     PMASS     d      mass of the planet (Sun=1; Note 2)
+*     JFORMR    i      requested element set (1-3; Note 3)
+*
+*  Returned:
+*     JFORM     d      element set actually returned (1-3; Note 4)
+*     EPOCH     d      epoch of elements (TT MJD)
+*     ORBINC    d      inclination (radians)
+*     ANODE     d      longitude of the ascending node (radians)
+*     PERIH     d      longitude or argument of perihelion (radians)
+*     AORQ      d      mean distance or perihelion distance (AU)
+*     E         d      eccentricity
+*     AORL      d      mean anomaly or longitude (radians, JFORM=1,2 only)
+*     DM        d      daily motion (radians, JFORM=1 only)
+*     JSTAT     i      status:  0 = OK
+*                              -1 = illegal PMASS
+*                              -2 = illegal JFORMR
+*                              -3 = position/velocity out of range
+*
+*  Notes
+*
+*  1  The PV 6-vector is with respect to the mean equator and equinox of
+*     epoch J2000.  The orbital elements produced are with respect to
+*     the J2000 ecliptic and mean equinox.
+*
+*  2  The mass, PMASS, is important only for the larger planets.  For
+*     most purposes (e.g. asteroids) use 0D0.  Values less than zero
+*     are illegal.
+*
+*  3  Three different element-format options are supported:
+*
+*     Option JFORM=1, suitable for the major planets:
+*
+*     EPOCH  = epoch of elements (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = longitude of perihelion, curly pi (radians)
+*     AORQ   = mean distance, a (AU)
+*     E      = eccentricity, e
+*     AORL   = mean longitude L (radians)
+*     DM     = daily motion (radians)
+*
+*     Option JFORM=2, suitable for minor planets:
+*
+*     EPOCH  = epoch of elements (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = argument of perihelion, little omega (radians)
+*     AORQ   = mean distance, a (AU)
+*     E      = eccentricity, e
+*     AORL   = mean anomaly M (radians)
+*
+*     Option JFORM=3, suitable for comets:
+*
+*     EPOCH  = epoch of perihelion (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = argument of perihelion, little omega (radians)
+*     AORQ   = perihelion distance, q (AU)
+*     E      = eccentricity, e
+*
+*  4  It may not be possible to generate elements in the form
+*     requested through JFORMR.  The caller is notified of the form
+*     of elements actually returned by means of the JFORM argument:
+*
+*      JFORMR   JFORM     meaning
+*
+*        1        1       OK - elements are in the requested format
+*        1        2       never happens
+*        1        3       orbit not elliptical
+*
+*        2        1       never happens
+*        2        2       OK - elements are in the requested format
+*        2        3       orbit not elliptical
+*
+*        3        1       never happens
+*        3        2       never happens
+*        3        3       OK - elements are in the requested format
+*
+*  5  The arguments returned for each value of JFORM (cf Note 5: JFORM
+*     may not be the same as JFORMR) are as follows:
+*
+*         JFORM         1              2              3
+*         EPOCH         t0             t0             T
+*         ORBINC        i              i              i
+*         ANODE         Omega          Omega          Omega
+*         PERIH         curly pi       omega          omega
+*         AORQ          a              a              q
+*         E             e              e              e
+*         AORL          L              M              -
+*         DM            n              -              -
+*
+*     where:
+*
+*         t0           is the epoch of the elements (MJD, TT)
+*         T              "    epoch of perihelion (MJD, TT)
+*         i              "    inclination (radians)
+*         Omega          "    longitude of the ascending node (radians)
+*         curly pi       "    longitude of perihelion (radians)
+*         omega          "    argument of perihelion (radians)
+*         a              "    mean distance (AU)
+*         q              "    perihelion distance (AU)
+*         e              "    eccentricity
+*         L              "    longitude (radians, 0-2pi)
+*         M              "    mean anomaly (radians, 0-2pi)
+*         n              "    daily motion (radians)
+*         -             means no value is set
+*
+*  6  At very small inclinations, the longitude of the ascending node
+*     ANODE becomes indeterminate and under some circumstances may be
+*     set arbitrarily to zero.  Similarly, if the orbit is close to
+*     circular, the true anomaly becomes indeterminate and under some
+*     circumstances may be set arbitrarily to zero.  In such cases,
+*     the other elements are automatically adjusted to compensate,
+*     and so the elements remain a valid description of the orbit.
+*
+*  7  The osculating epoch for the returned elements is the argument
+*     DATE.
+*
+*  Reference:  Sterne, Theodore E., "An Introduction to Celestial
+*              Mechanics", Interscience Publishers, 1960
+*
+*  Called:  sla_DRANRM
+*
+*  Last revision:   8 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION PV(6),DATE,PMASS
+      INTEGER JFORMR,JFORM
+      DOUBLE PRECISION EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM
+      INTEGER JSTAT
+
+*  Seconds to days
+      DOUBLE PRECISION DAY
+      PARAMETER (DAY=86400D0)
+
+*  Gaussian gravitational constant (exact)
+      DOUBLE PRECISION GCON
+      PARAMETER (GCON=0.01720209895D0)
+
+*  Sin and cos of J2000 mean obliquity (IAU 1976)
+      DOUBLE PRECISION SE,CE
+      PARAMETER (SE=0.3977771559319137D0,
+     :           CE=0.9174820620691818D0)
+
+*  Minimum allowed distance (AU) and speed (AU/day)
+      DOUBLE PRECISION RMIN,VMIN
+      PARAMETER (RMIN=1D-3,VMIN=1D-8)
+
+*  How close to unity the eccentricity has to be to call it a parabola
+      DOUBLE PRECISION PARAB
+      PARAMETER (PARAB=1D-8)
+
+      DOUBLE PRECISION X,Y,Z,XD,YD,ZD,R,V2,V,RDV,GMU,HX,HY,HZ,
+     :                 HX2PY2,H2,H,OI,BIGOM,AR,ECC,S,C,AT,U,OM,
+     :                 GAR3,EM1,EP1,HAT,SHAT,CHAT,AE,AM,DN,PL,
+     :                 EL,Q,TP,THAT,THHF,F
+
+      INTEGER JF
+
+      DOUBLE PRECISION sla_DRANRM
+
+
+*  Validate arguments PMASS and JFORMR.
+      IF (PMASS.LT.0D0) THEN
+         JSTAT = -1
+         GO TO 999
+      END IF
+      IF (JFORMR.LT.1.OR.JFORMR.GT.3) THEN
+         JSTAT = -2
+         GO TO 999
+      END IF
+
+*  Provisionally assume the elements will be in the chosen form.
+      JF = JFORMR
+
+*  Rotate the position from equatorial to ecliptic coordinates.
+      X = PV(1)
+      Y = PV(2)*CE+PV(3)*SE
+      Z = -PV(2)*SE+PV(3)*CE
+
+*  Rotate the velocity similarly, scaling to AU/day.
+      XD = DAY*PV(4)
+      YD = DAY*(PV(5)*CE+PV(6)*SE)
+      ZD = DAY*(-PV(5)*SE+PV(6)*CE)
+
+*  Distance and speed.
+      R = SQRT(X*X+Y*Y+Z*Z)
+      V2 = XD*XD+YD*YD+ZD*ZD
+      V = SQRT(V2)
+
+*  Reject unreasonably small values.
+      IF (R.LT.RMIN.OR.V.LT.VMIN) THEN
+         JSTAT = -3
+         GO TO 999
+      END IF
+
+*  R dot V.
+      RDV = X*XD+Y*YD+Z*ZD
+
+*  Mu.
+      GMU = (1D0+PMASS)*GCON*GCON
+
+*  Vector angular momentum per unit reduced mass.
+      HX = Y*ZD-Z*YD
+      HY = Z*XD-X*ZD
+      HZ = X*YD-Y*XD
+
+*  Areal constant.
+      HX2PY2 = HX*HX+HY*HY
+      H2 = HX2PY2+HZ*HZ
+      H = SQRT(H2)
+
+*  Inclination.
+      OI = ATAN2(SQRT(HX2PY2),HZ)
+
+*  Longitude of ascending node.
+      IF (HX.NE.0D0.OR.HY.NE.0D0) THEN
+         BIGOM = ATAN2(HX,-HY)
+      ELSE
+         BIGOM=0D0
+      END IF
+
+*  Reciprocal of mean distance etc.
+      AR = 2D0/R-V2/GMU
+
+*  Eccentricity.
+      ECC = SQRT(MAX(1D0-AR*H2/GMU,0D0))
+
+*  True anomaly.
+      S = H*RDV
+      C = H2-R*GMU
+      IF (S.NE.0D0.OR.C.NE.0D0) THEN
+         AT = ATAN2(S,C)
+      ELSE
+         AT = 0D0
+      END IF
+
+*  Argument of the latitude.
+      S = SIN(BIGOM)
+      C = COS(BIGOM)
+      U = ATAN2((-X*S+Y*C)*COS(OI)+Z*SIN(OI),X*C+Y*S)
+
+*  Argument of perihelion.
+      OM = U-AT
+
+*  Capture near-parabolic cases.
+      IF (ABS(ECC-1D0).LT.PARAB) ECC=1D0
+
+*  Comply with JFORMR = 1 or 2 only if orbit is elliptical.
+      IF (ECC.GE.1D0) JF=3
+
+*  Functions.
+      GAR3 = GMU*AR*AR*AR
+      EM1 = ECC-1D0
+      EP1 = ECC+1D0
+      HAT = AT/2D0
+      SHAT = SIN(HAT)
+      CHAT = COS(HAT)
+
+*  Variable initializations to avoid compiler warnings.
+      AM = 0D0
+      DN = 0D0
+      PL = 0D0
+      EL = 0D0
+      Q = 0D0
+      TP = 0D0
+
+*  Ellipse?
+      IF (ECC.LT.1D0 ) THEN
+
+*     Eccentric anomaly.
+         AE = 2D0*ATAN2(SQRT(-EM1)*SHAT,SQRT(EP1)*CHAT)
+
+*     Mean anomaly.
+         AM = AE-ECC*SIN(AE)
+
+*     Daily motion.
+         DN = SQRT(GAR3)
+      END IF
+
+*  "Major planet" element set?
+      IF (JF.EQ.1) THEN
+
+*     Longitude of perihelion.
+         PL = BIGOM+OM
+
+*     Longitude at epoch.
+         EL = PL+AM
+      END IF
+
+*  "Comet" element set?
+      IF (JF.EQ.3) THEN
+
+*     Perihelion distance.
+         Q = H2/(GMU*EP1)
+
+*     Ellipse, parabola, hyperbola?
+         IF (ECC.LT.1D0) THEN
+
+*        Ellipse: epoch of perihelion.
+            TP = DATE-AM/DN
+         ELSE
+
+*        Parabola or hyperbola: evaluate tan ( ( true anomaly ) / 2 )
+            THAT = SHAT/CHAT
+            IF (ECC.EQ.1D0) THEN
+
+*           Parabola: epoch of perihelion.
+               TP = DATE-THAT*(1D0+THAT*THAT/3D0)*H*H2/(2D0*GMU*GMU)
+            ELSE
+
+*           Hyperbola: epoch of perihelion.
+               THHF = SQRT(EM1/EP1)*THAT
+               F = LOG(1D0+THHF)-LOG(1D0-THHF)
+               TP = DATE-(ECC*SINH(F)-F)/SQRT(-GAR3)
+            END IF
+         END IF
+      END IF
+
+*  Return the appropriate set of elements.
+      JFORM = JF
+      ORBINC = OI
+      ANODE = sla_DRANRM(BIGOM)
+      E = ECC
+      IF (JF.EQ.1) THEN
+         PERIH = sla_DRANRM(PL)
+         AORL = sla_DRANRM(EL)
+         DM = DN
+      ELSE
+         PERIH = sla_DRANRM(OM)
+         IF (JF.EQ.2) AORL = sla_DRANRM(AM)
+      END IF
+      IF (JF.NE.3) THEN
+         EPOCH = DATE
+         AORQ = 1D0/AR
+      ELSE
+         EPOCH = TP
+         AORQ = Q
+      END IF
+      JSTAT = 0
+
+ 999  CONTINUE
+      END
diff --git a/pv2ue.f b/pv2ue.f
new file mode 100644
index 0000000000000000000000000000000000000000..ff63666979e5607b5802cc6394f0bac98a00f122
--- /dev/null
+++ b/pv2ue.f
@@ -0,0 +1,167 @@
+      SUBROUTINE sla_PV2UE (PV, DATE, PMASS, U, JSTAT)
+*+
+*     - - - - - -
+*      P V 2 U E
+*     - - - - - -
+*
+*  Construct a universal element set based on an instantaneous position
+*  and velocity.
+*
+*  Given:
+*     PV        d(6)   heliocentric x,y,z,xdot,ydot,zdot of date,
+*                      (AU,AU/s; Note 1)
+*     DATE      d      date (TT Modified Julian Date = JD-2400000.5)
+*     PMASS     d      mass of the planet (Sun=1; Note 2)
+*
+*  Returned:
+*     U         d(13)  universal orbital elements (Note 3)
+*
+*                 (1)  combined mass (M+m)
+*                 (2)  total energy of the orbit (alpha)
+*                 (3)  reference (osculating) epoch (t0)
+*               (4-6)  position at reference epoch (r0)
+*               (7-9)  velocity at reference epoch (v0)
+*                (10)  heliocentric distance at reference epoch
+*                (11)  r0.v0
+*                (12)  date (t)
+*                (13)  universal eccentric anomaly (psi) of date, approx
+*
+*     JSTAT     i      status:  0 = OK
+*                              -1 = illegal PMASS
+*                              -2 = too close to Sun
+*                              -3 = too slow
+*
+*  Notes
+*
+*  1  The PV 6-vector can be with respect to any chosen inertial frame,
+*     and the resulting universal-element set will be with respect to
+*     the same frame.  A common choice will be mean equator and ecliptic
+*     of epoch J2000.
+*
+*  2  The mass, PMASS, is important only for the larger planets.  For
+*     most purposes (e.g. asteroids) use 0D0.  Values less than zero
+*     are illegal.
+*
+*  3  The "universal" elements are those which define the orbit for the
+*     purposes of the method of universal variables (see reference).
+*     They consist of the combined mass of the two bodies, an epoch,
+*     and the position and velocity vectors (arbitrary reference frame)
+*     at that epoch.  The parameter set used here includes also various
+*     quantities that can, in fact, be derived from the other
+*     information.  This approach is taken to avoiding unnecessary
+*     computation and loss of accuracy.  The supplementary quantities
+*     are (i) alpha, which is proportional to the total energy of the
+*     orbit, (ii) the heliocentric distance at epoch, (iii) the
+*     outwards component of the velocity at the given epoch, (iv) an
+*     estimate of psi, the "universal eccentric anomaly" at a given
+*     date and (v) that date.
+*
+*  Reference:  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+*
+*  P.T.Wallace   Starlink   18 March 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION PV(6),DATE,PMASS,U(13)
+      INTEGER JSTAT
+
+*  Gaussian gravitational constant (exact)
+      DOUBLE PRECISION GCON
+      PARAMETER (GCON=0.01720209895D0)
+
+*  Canonical days to seconds
+      DOUBLE PRECISION CD2S
+      PARAMETER (CD2S=GCON/86400D0)
+
+*  Minimum allowed distance (AU) and speed (AU per canonical day)
+      DOUBLE PRECISION RMIN,VMIN
+      PARAMETER (RMIN=1D-3,VMIN=1D-3)
+
+      DOUBLE PRECISION T0,CM,X,Y,Z,XD,YD,ZD,R,V2,V,ALPHA,RDV
+
+
+*  Reference epoch.
+      T0 = DATE
+
+*  Combined mass (mu=M+m).
+      IF (PMASS.LT.0D0) GO TO 9010
+      CM = 1D0+PMASS
+
+*  Unpack the state vector, expressing velocity in AU per canonical day.
+      X = PV(1)
+      Y = PV(2)
+      Z = PV(3)
+      XD = PV(4)/CD2S
+      YD = PV(5)/CD2S
+      ZD = PV(6)/CD2S
+
+*  Heliocentric distance, and speed.
+      R = SQRT(X*X+Y*Y+Z*Z)
+      V2 = XD*XD+YD*YD+ZD*ZD
+      V = SQRT(V2)
+
+*  Reject unreasonably small values.
+      IF (R.LT.RMIN) GO TO 9020
+      IF (V.LT.VMIN) GO TO 9030
+
+*  Total energy of the orbit.
+      ALPHA = V2-2D0*CM/R
+
+*  Outward component of velocity.
+      RDV = X*XD+Y*YD+Z*ZD
+
+*  Construct the universal-element set.
+      U(1) = CM
+      U(2) = ALPHA
+      U(3) = T0
+      U(4) = X
+      U(5) = Y
+      U(6) = Z
+      U(7) = XD
+      U(8) = YD
+      U(9) = ZD
+      U(10) = R
+      U(11) = RDV
+      U(12) = T0
+      U(13) = 0D0
+
+*  Exit.
+      JSTAT = 0
+      GO TO 9999
+
+*  Negative PMASS.
+ 9010 CONTINUE
+      JSTAT = -1
+      GO TO 9999
+
+*  Too close.
+ 9020 CONTINUE
+      JSTAT = -2
+      GO TO 9999
+
+*  Too slow.
+ 9030 CONTINUE
+      JSTAT = -3
+
+ 9999 CONTINUE
+      END
diff --git a/pvobs.f b/pvobs.f
new file mode 100644
index 0000000000000000000000000000000000000000..55305ed5e338a12c710a4e8322a0ff5d36da3db0
--- /dev/null
+++ b/pvobs.f
@@ -0,0 +1,76 @@
+      SUBROUTINE sla_PVOBS (P, H, STL, PV)
+*+
+*     - - - - - -
+*      P V O B S
+*     - - - - - -
+*
+*  Position and velocity of an observing station (double precision)
+*
+*  Given:
+*     P     dp     latitude (geodetic, radians)
+*     H     dp     height above reference spheroid (geodetic, metres)
+*     STL   dp     local apparent sidereal time (radians)
+*
+*  Returned:
+*     PV    dp(6)  position/velocity 6-vector (AU, AU/s, true equator
+*                                              and equinox of date)
+*
+*  Called:  sla_GEOC
+*
+*  IAU 1976 constants are used.
+*
+*  P.T.Wallace   Starlink   14 November 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION P,H,STL,PV(6)
+
+      DOUBLE PRECISION R,Z,S,C,V
+
+*  Mean sidereal rate (at J2000) in radians per (UT1) second
+      DOUBLE PRECISION SR
+      PARAMETER (SR=7.292115855306589D-5)
+
+
+
+*  Geodetic to geocentric conversion
+      CALL sla_GEOC(P,H,R,Z)
+
+*  Functions of ST
+      S=SIN(STL)
+      C=COS(STL)
+
+*  Speed
+      V=SR*R
+
+*  Position
+      PV(1)=R*C
+      PV(2)=R*S
+      PV(3)=Z
+
+*  Velocity
+      PV(4)=-V*S
+      PV(5)=V*C
+      PV(6)=0D0
+
+      END
diff --git a/pxy.f b/pxy.f
new file mode 100644
index 0000000000000000000000000000000000000000..f768a1a3135547c012a422f63fbe8f61be25d3f4
--- /dev/null
+++ b/pxy.f
@@ -0,0 +1,109 @@
+      SUBROUTINE sla_PXY (NP,XYE,XYM,COEFFS,XYP,XRMS,YRMS,RRMS)
+*+
+*     - - - -
+*      P X Y
+*     - - - -
+*
+*  Given arrays of "expected" and "measured" [X,Y] coordinates, and a
+*  linear model relating them (as produced by sla_FITXY), compute
+*  the array of "predicted" coordinates and the RMS residuals.
+*
+*  Given:
+*     NP       i        number of samples
+*     XYE     d(2,np)   expected [X,Y] for each sample
+*     XYM     d(2,np)   measured [X,Y] for each sample
+*     COEFFS  d(6)      coefficients of model (see below)
+*
+*  Returned:
+*     XYP     d(2,np)   predicted [X,Y] for each sample
+*     XRMS     d        RMS in X
+*     YRMS     d        RMS in Y
+*     RRMS     d        total RMS (vector sum of XRMS and YRMS)
+*
+*  The model is supplied in the array COEFFS.  Naming the
+*  elements of COEFF as follows:
+*
+*     COEFFS(1) = A
+*     COEFFS(2) = B
+*     COEFFS(3) = C
+*     COEFFS(4) = D
+*     COEFFS(5) = E
+*     COEFFS(6) = F
+*
+*  the model is applied thus:
+*
+*     XP = A + B*XM + C*YM
+*     YP = D + E*XM + F*YM
+*
+*  The residuals are (XP-XE) and (YP-YE).
+*
+*  If NP is less than or equal to zero, no coordinates are
+*  transformed, and the RMS residuals are all zero.
+*
+*  See also sla_FITXY, sla_INVF, sla_XY2XY, sla_DCMPF
+*
+*  Called:  sla_XY2XY
+*
+*  P.T.Wallace   Starlink   22 May 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER NP
+      DOUBLE PRECISION XYE(2,NP),XYM(2,NP),COEFFS(6),
+     :                 XYP(2,NP),XRMS,YRMS,RRMS
+
+      INTEGER I
+      DOUBLE PRECISION SDX2,SDY2,XP,YP,DX,DY,DX2,DY2,P
+
+
+
+*  Initialize summations
+      SDX2=0D0
+      SDY2=0D0
+
+*  Loop by sample
+      DO I=1,NP
+
+*     Transform "measured" [X,Y] to "predicted" [X,Y]
+         CALL sla_XY2XY(XYM(1,I),XYM(2,I),COEFFS,XP,YP)
+         XYP(1,I)=XP
+         XYP(2,I)=YP
+
+*     Compute residuals in X and Y, and update summations
+         DX=XYE(1,I)-XP
+         DY=XYE(2,I)-YP
+         DX2=DX*DX
+         DY2=DY*DY
+         SDX2=SDX2+DX2
+         SDY2=SDY2+DY2
+
+*     Next sample
+      END DO
+
+*  Compute RMS values
+      P=MAX(1D0,DBLE(NP))
+      XRMS=SQRT(SDX2/P)
+      YRMS=SQRT(SDY2/P)
+      RRMS=SQRT(XRMS*XRMS+YRMS*YRMS)
+
+      END
diff --git a/random.F b/random.F
new file mode 120000
index 0000000000000000000000000000000000000000..7b5b41a6777f6df06e7d760d7ead82c276c5a943
--- /dev/null
+++ b/random.F
@@ -0,0 +1 @@
+random.Fdefault
\ No newline at end of file
diff --git a/random.F__vms b/random.F__vms
new file mode 100644
index 0000000000000000000000000000000000000000..87c9d3679e46f1404ff52435ef5ebf2418ab6c9f
--- /dev/null
+++ b/random.F__vms
@@ -0,0 +1,69 @@
+      REAL FUNCTION sla_RANDOM (SEED)
+*+
+*     - - - - - - -
+*      R A N D O M
+*     - - - - - - -
+*
+*  Generate pseudo-random real number in the range 0 <= X < 1.
+*  (single precision)
+*
+*  !!!  Version for VAX/VMS and DECstation !!!
+*
+*  Given:
+*     SEED     real     an arbitrary real number
+*
+*  Notes:
+*
+*  1)  The result is a pseudo-random REAL number in the range
+*      0 <= sla_RANDOM < 1.
+*
+*  2)  SEED is used first time through only.
+*
+*  Called:  RAN (a REAL function from the DEC Fortran Library)
+*
+*  P.T.Wallace   Starlink   14 October 1991
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL SEED
+
+      REAL RAN
+
+      REAL AS
+      INTEGER ISEED
+      LOGICAL FIRST
+      SAVE FIRST
+      DATA FIRST /.TRUE./
+
+
+
+*  If first time, turn SEED into a large, odd integer
+      IF (FIRST) THEN
+         AS=ABS(SEED)+1.0
+         ISEED=NINT(AS/10.0**(NINT(ALOG10(AS))-6))
+         IF (MOD(ISEED,2).EQ.0) ISEED=ISEED+1
+         FIRST=.FALSE.
+      END IF
+
+*  Next pseudo-random number
+      sla_RANDOM=RAN(ISEED)
+
+      END
diff --git a/random.F__win b/random.F__win
new file mode 100644
index 0000000000000000000000000000000000000000..a838ac6ccff03971ec4aa793cc82fc5fe6cec556
--- /dev/null
+++ b/random.F__win
@@ -0,0 +1,59 @@
+      REAL FUNCTION sla_RANDOM (XSEED)
+*+
+*     - - - - - - -
+*      R A N D O M
+*     - - - - - - -
+*
+*  Generate pseudo-random real number in the range 0 <= X < 1.
+*
+*  (single precision)
+*
+*  !!!  Microsoft Fortran dependent  !!!
+*
+*  Given (but used first time only):
+*     XSEED    real     an arbitrary real number
+*
+*  The value returned is a pseudo-random number such that
+*  0 <= sla_RANDOM < 1.
+*
+*  Called:  RANDOM (Microsoft run-time library)
+*
+*  P.T.Wallace   Starlink   7 November 2003
+*
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL XSEED
+
+      REAL X
+      LOGICAL FIRST
+      SAVE FIRST
+      DATA FIRST /.TRUE./
+
+
+      IF (FIRST) THEN
+         CALL SEED(NINT(MOD(XSEED*1.234E7,32E3)))  ! Microsoft Fortran
+         FIRST=.FALSE.
+      END IF
+      CALL RANDOM(X)                               ! Microsoft Fortran
+      sla_RANDOM=X
+
+      END
diff --git a/random.Fdefault b/random.Fdefault
new file mode 100644
index 0000000000000000000000000000000000000000..b09b1af27ac1429abf91689b3b91a39deaec587f
--- /dev/null
+++ b/random.Fdefault
@@ -0,0 +1,87 @@
+#include <config.h>
+      REAL FUNCTION sla_RANDOM (SEED)
+*+
+*     - - - - - - -
+*      R A N D O M
+*     - - - - - - -
+*
+*  Generate pseudo-random real number in the range 0 <= X < 1.
+*  (single precision)
+*
+*
+*  Given:
+*     SEED     real     an arbitrary real number
+*
+*  Notes:
+*
+*  1)  The result is a pseudo-random REAL number in the range
+*      0 <= sla_RANDOM < 1.
+*
+*  2)  SEED is used first time through only.
+*
+*  Called:  RAN or RAND (a REAL function returning a random variate --
+*           the precise function which is called depends on which functions
+*           are available when the library is built).  If neither of these
+*           is available, we use the local substitute RANDOM defined
+*           in rtl_random.c
+*
+*  P.T.Wallace   Starlink   14 October 1991
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*-
+
+      IMPLICIT NONE
+
+      REAL SEED
+
+#if HAVE_RAND
+      REAL RAND
+#elif HAVE_RANDOM
+      REAL RANDOM
+#else
+ error "Can't find random-number function"
+#endif
+
+      REAL AS
+      INTEGER ISEED
+      LOGICAL FIRST
+      SAVE FIRST
+      DATA FIRST /.TRUE./
+
+
+
+*  If first time, turn SEED into a large, odd integer
+      IF (FIRST) THEN
+         AS=ABS(SEED)+1.0
+         ISEED=NINT(AS/10.0**(NINT(ALOG10(AS))-6))
+         IF (MOD(ISEED,2).EQ.0) ISEED=ISEED+1
+         FIRST=.FALSE.
+#if HAVE_RAND
+         AS = RAND(ISEED)
+#endif
+      ELSE
+         ISEED=0
+      END IF
+
+*  Next pseudo-random number
+#if HAVE_RAND
+      sla_RANDOM=RAND(0)
+#elif HAVE_RANDOM
+      sla_RANDOM=RANDOM(ISEED)
+#endif
+
+      END
diff --git a/range.f b/range.f
new file mode 100644
index 0000000000000000000000000000000000000000..ff5a70288e2c9617e0423abc30dc51a8ac195f7a
--- /dev/null
+++ b/range.f
@@ -0,0 +1,50 @@
+      REAL FUNCTION sla_RANGE (ANGLE)
+*+
+*     - - - - - -
+*      R A N G E
+*     - - - - - -
+*
+*  Normalize angle into range +/- pi  (single precision)
+*
+*  Given:
+*     ANGLE     dp      the angle in radians
+*
+*  The result is ANGLE expressed in the +/- pi (single
+*  precision).
+*
+*  P.T.Wallace   Starlink   23 November 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL ANGLE
+
+      REAL API,A2PI
+      PARAMETER (API=3.141592653589793238462643)
+      PARAMETER (A2PI=6.283185307179586476925287)
+
+
+      sla_RANGE=MOD(ANGLE,A2PI)
+      IF (ABS(sla_RANGE).GE.API)
+     :          sla_RANGE=sla_RANGE-SIGN(A2PI,ANGLE)
+
+      END
diff --git a/ranorm.f b/ranorm.f
new file mode 100644
index 0000000000000000000000000000000000000000..963e71c6da2c343d02b1344546705548bad0b972
--- /dev/null
+++ b/ranorm.f
@@ -0,0 +1,48 @@
+      REAL FUNCTION sla_RANORM (ANGLE)
+*+
+*     - - - - - - -
+*      R A N O R M
+*     - - - - - - -
+*
+*  Normalize angle into range 0-2 pi  (single precision)
+*
+*  Given:
+*     ANGLE     dp      the angle in radians
+*
+*  The result is ANGLE expressed in the range 0-2 pi (single
+*  precision).
+*
+*  P.T.Wallace   Starlink   23 November 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL ANGLE
+
+      REAL A2PI
+      PARAMETER (A2PI=6.283185307179586476925287)
+
+
+      sla_RANORM=MOD(ANGLE,A2PI)
+      IF (sla_RANORM.LT.0.0) sla_RANORM=sla_RANORM+A2PI
+
+      END
diff --git a/rcc.f b/rcc.f
new file mode 100644
index 0000000000000000000000000000000000000000..013777dd899c0d084c1f5056a401cb1b5be7562f
--- /dev/null
+++ b/rcc.f
@@ -0,0 +1,1109 @@
+      DOUBLE PRECISION FUNCTION sla_RCC (TDB, UT1, WL, U, V)
+*+
+*     - - - -
+*      R C C
+*     - - - -
+*
+*  Relativistic clock correction:  the difference between proper time at
+*  a point on the surface of the Earth and coordinate time in the Solar
+*  System barycentric space-time frame of reference.
+*
+*  The proper time is terrestrial time, TT;  the coordinate time is an
+*  implementation of barycentric dynamical time, TDB.
+*
+*  Given:
+*    TDB      d     TDB (MJD: JD-2400000.5)
+*    UT1      d     universal time (fraction of one day)
+*    WL       d     clock longitude (radians west)
+*    U        d     clock distance from Earth spin axis (km)
+*    V        d     clock distance north of Earth equatorial plane (km)
+*
+*  Returned:
+*    The clock correction, TDB-TT, in seconds:
+*
+*    .  TDB is coordinate time in the solar system barycentre frame
+*       of reference, in units chosen to eliminate the scale difference
+*       with respect to terrestrial time.
+*
+*    .  TT is the proper time for clocks at mean sea level on the
+*       Earth.
+*
+*  Notes:
+*
+*  1  The argument TDB is, strictly, the barycentric coordinate time;
+*     however, the terrestrial time TT can in practice be used without
+*     any significant loss of accuracy.
+*
+*  2  The result returned by sla_RCC comprises a main (annual)
+*     sinusoidal term of amplitude approximately 0.00166 seconds, plus
+*     planetary and lunar terms up to about 20 microseconds, and diurnal
+*     terms up to 2 microseconds.  The variation arises from the
+*     transverse Doppler effect and the gravitational red-shift as the
+*     observer varies in speed and moves through different gravitational
+*     potentials.
+*
+*  3  The geocentric model is that of Fairhead & Bretagnon (1990), in
+*     its full form.  It was supplied by Fairhead (private
+*     communication) as a FORTRAN subroutine.  The original Fairhead
+*     routine used explicit formulae, in such large numbers that
+*     problems were experienced with certain compilers (Microsoft
+*     Fortran on PC aborted with stack overflow, Convex compiled
+*     successfully but extremely slowly).  The present implementation is
+*     a complete recoding, with the original Fairhead coefficients held
+*     in a table.  To optimise arithmetic precision, the terms are
+*     accumulated in reverse order, smallest first.  A number of other
+*     coding changes were made, in order to match the calling sequence
+*     of previous versions of the present routine, and to comply with
+*     Starlink programming standards.  The numerical results compared
+*     with those from the Fairhead form are essentially unaffected by
+*     the changes, the differences being at the 10^-20 sec level.
+*
+*  4  The topocentric part of the model is from Moyer (1981) and
+*     Murray (1983).  It is an approximation to the expression
+*     ( v / c ) . ( r / c ), where v is the barycentric velocity of
+*     the Earth, r is the geocentric position of the observer and
+*     c is the speed of light.
+*
+*  5  During the interval 1950-2050, the absolute accuracy of is better
+*     than +/- 3 nanoseconds relative to direct numerical integrations
+*     using the JPL DE200/LE200 solar system ephemeris.
+*
+*  6  The IAU definition of TDB was that it must differ from TT only by
+*     periodic terms.  Though practical, this is an imprecise definition
+*     which ignores the existence of very long-period and secular
+*     effects in the dynamics of the solar system.  As a consequence,
+*     different implementations of TDB will, in general, differ in zero-
+*     point and will drift linearly relative to one other.
+*
+*  7  TDB was, in principle, superseded by new coordinate timescales
+*     which the IAU introduced in 1991:  geocentric coordinate time,
+*     TCG, and barycentric coordinate time, TCB.  However, sla_RCC
+*     can be used to implement the periodic part of TCB-TCG.
+*
+*  References:
+*
+*  1  Fairhead, L., & Bretagnon, P., Astron.Astrophys., 229, 240-247
+*     (1990).
+*
+*  2  Moyer, T.D., Cel.Mech., 23, 33 (1981).
+*
+*  3  Murray, C.A., Vectorial Astrometry, Adam Hilger (1983).
+*
+*  4  Seidelmann, P.K. et al, Explanatory Supplement to the
+*     Astronomical Almanac, Chapter 2, University Science Books
+*     (1992).
+*
+*  5  Simon J.L., Bretagnon P., Chapront J., Chapront-Touze M.,
+*     Francou G. & Laskar J., Astron.Astrophys., 282, 663-683 (1994).
+*
+*  P.T.Wallace   Starlink   7 May 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION TDB,UT1,WL,U,V
+
+      DOUBLE PRECISION D2PI,D2R
+      PARAMETER (D2PI=6.283185307179586476925287D0,
+     :           D2R=0.0174532925199432957692369D0)
+
+      DOUBLE PRECISION T,TSOL,W,ELSUN,EMSUN,D,ELJ,ELS,
+     :                 WT,W0,W1,W2,W3,W4,WF,WJ
+
+* -----------------------------------------------------------------------
+*
+*  Fairhead and Bretagnon canonical coefficients
+*
+*  787 sets of three coefficients.
+*
+*  Each set is amplitude (microseconds)
+*              frequency (radians per Julian millennium since J2000),
+*              phase (radians).
+*
+*  Sets   1-474 are the T**0 terms,
+*   "   475-679  "   "  T**1   "
+*   "   680-764  "   "  T**2   "
+*   "   765-784  "   "  T**3   "
+*   "   785-787  "   "  T**4   "  .
+*
+      DOUBLE PRECISION FAIRHD(3,787)
+      INTEGER I,J
+      DATA ((FAIRHD(I,J),I=1,3),J=  1, 10) /
+     : 1656.674564D-6,    6283.075849991D0, 6.240054195D0,
+     :   22.417471D-6,    5753.384884897D0, 4.296977442D0,
+     :   13.839792D-6,   12566.151699983D0, 6.196904410D0,
+     :    4.770086D-6,     529.690965095D0, 0.444401603D0,
+     :    4.676740D-6,    6069.776754553D0, 4.021195093D0,
+     :    2.256707D-6,     213.299095438D0, 5.543113262D0,
+     :    1.694205D-6,      -3.523118349D0, 5.025132748D0,
+     :    1.554905D-6,   77713.771467920D0, 5.198467090D0,
+     :    1.276839D-6,    7860.419392439D0, 5.988822341D0,
+     :    1.193379D-6,    5223.693919802D0, 3.649823730D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 11, 20) /
+     :    1.115322D-6,    3930.209696220D0, 1.422745069D0,
+     :    0.794185D-6,   11506.769769794D0, 2.322313077D0,
+     :    0.447061D-6,      26.298319800D0, 3.615796498D0,
+     :    0.435206D-6,    -398.149003408D0, 4.349338347D0,
+     :    0.600309D-6,    1577.343542448D0, 2.678271909D0,
+     :    0.496817D-6,    6208.294251424D0, 5.696701824D0,
+     :    0.486306D-6,    5884.926846583D0, 0.520007179D0,
+     :    0.432392D-6,      74.781598567D0, 2.435898309D0,
+     :    0.468597D-6,    6244.942814354D0, 5.866398759D0,
+     :    0.375510D-6,    5507.553238667D0, 4.103476804D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 21, 30) /
+     :    0.243085D-6,    -775.522611324D0, 3.651837925D0,
+     :    0.173435D-6,   18849.227549974D0, 6.153743485D0,
+     :    0.230685D-6,    5856.477659115D0, 4.773852582D0,
+     :    0.203747D-6,   12036.460734888D0, 4.333987818D0,
+     :    0.143935D-6,    -796.298006816D0, 5.957517795D0,
+     :    0.159080D-6,   10977.078804699D0, 1.890075226D0,
+     :    0.119979D-6,      38.133035638D0, 4.551585768D0,
+     :    0.118971D-6,    5486.777843175D0, 1.914547226D0,
+     :    0.116120D-6,    1059.381930189D0, 0.873504123D0,
+     :    0.137927D-6,   11790.629088659D0, 1.135934669D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 31, 40) /
+     :    0.098358D-6,    2544.314419883D0, 0.092793886D0,
+     :    0.101868D-6,   -5573.142801634D0, 5.984503847D0,
+     :    0.080164D-6,     206.185548437D0, 2.095377709D0,
+     :    0.079645D-6,    4694.002954708D0, 2.949233637D0,
+     :    0.062617D-6,      20.775395492D0, 2.654394814D0,
+     :    0.075019D-6,    2942.463423292D0, 4.980931759D0,
+     :    0.064397D-6,    5746.271337896D0, 1.280308748D0,
+     :    0.063814D-6,    5760.498431898D0, 4.167901731D0,
+     :    0.048042D-6,    2146.165416475D0, 1.495846011D0,
+     :    0.048373D-6,     155.420399434D0, 2.251573730D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 41, 50) /
+     :    0.058844D-6,     426.598190876D0, 4.839650148D0,
+     :    0.046551D-6,      -0.980321068D0, 0.921573539D0,
+     :    0.054139D-6,   17260.154654690D0, 3.411091093D0,
+     :    0.042411D-6,    6275.962302991D0, 2.869567043D0,
+     :    0.040184D-6,      -7.113547001D0, 3.565975565D0,
+     :    0.036564D-6,    5088.628839767D0, 3.324679049D0,
+     :    0.040759D-6,   12352.852604545D0, 3.981496998D0,
+     :    0.036507D-6,     801.820931124D0, 6.248866009D0,
+     :    0.036955D-6,    3154.687084896D0, 5.071801441D0,
+     :    0.042732D-6,     632.783739313D0, 5.720622217D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 51, 60) /
+     :    0.042560D-6,  161000.685737473D0, 1.270837679D0,
+     :    0.040480D-6,   15720.838784878D0, 2.546610123D0,
+     :    0.028244D-6,   -6286.598968340D0, 5.069663519D0,
+     :    0.033477D-6,    6062.663207553D0, 4.144987272D0,
+     :    0.034867D-6,     522.577418094D0, 5.210064075D0,
+     :    0.032438D-6,    6076.890301554D0, 0.749317412D0,
+     :    0.030215D-6,    7084.896781115D0, 3.389610345D0,
+     :    0.029247D-6,  -71430.695617928D0, 4.183178762D0,
+     :    0.033529D-6,    9437.762934887D0, 2.404714239D0,
+     :    0.032423D-6,    8827.390269875D0, 5.541473556D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 61, 70) /
+     :    0.027567D-6,    6279.552731642D0, 5.040846034D0,
+     :    0.029862D-6,   12139.553509107D0, 1.770181024D0,
+     :    0.022509D-6,   10447.387839604D0, 1.460726241D0,
+     :    0.020937D-6,    8429.241266467D0, 0.652303414D0,
+     :    0.020322D-6,     419.484643875D0, 3.735430632D0,
+     :    0.024816D-6,   -1194.447010225D0, 1.087136918D0,
+     :    0.025196D-6,    1748.016413067D0, 2.901883301D0,
+     :    0.021691D-6,   14143.495242431D0, 5.952658009D0,
+     :    0.017673D-6,    6812.766815086D0, 3.186129845D0,
+     :    0.022567D-6,    6133.512652857D0, 3.307984806D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 71, 80) /
+     :    0.016155D-6,   10213.285546211D0, 1.331103168D0,
+     :    0.014751D-6,    1349.867409659D0, 4.308933301D0,
+     :    0.015949D-6,    -220.412642439D0, 4.005298270D0,
+     :    0.015974D-6,   -2352.866153772D0, 6.145309371D0,
+     :    0.014223D-6,   17789.845619785D0, 2.104551349D0,
+     :    0.017806D-6,      73.297125859D0, 3.475975097D0,
+     :    0.013671D-6,    -536.804512095D0, 5.971672571D0,
+     :    0.011942D-6,    8031.092263058D0, 2.053414715D0,
+     :    0.014318D-6,   16730.463689596D0, 3.016058075D0,
+     :    0.012462D-6,     103.092774219D0, 1.737438797D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 81, 90) /
+     :    0.010962D-6,       3.590428652D0, 2.196567739D0,
+     :    0.015078D-6,   19651.048481098D0, 3.969480770D0,
+     :    0.010396D-6,     951.718406251D0, 5.717799605D0,
+     :    0.011707D-6,   -4705.732307544D0, 2.654125618D0,
+     :    0.010453D-6,    5863.591206116D0, 1.913704550D0,
+     :    0.012420D-6,    4690.479836359D0, 4.734090399D0,
+     :    0.011847D-6,    5643.178563677D0, 5.489005403D0,
+     :    0.008610D-6,    3340.612426700D0, 3.661698944D0,
+     :    0.011622D-6,    5120.601145584D0, 4.863931876D0,
+     :    0.010825D-6,     553.569402842D0, 0.842715011D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J= 91,100) /
+     :    0.008666D-6,    -135.065080035D0, 3.293406547D0,
+     :    0.009963D-6,     149.563197135D0, 4.870690598D0,
+     :    0.009858D-6,    6309.374169791D0, 1.061816410D0,
+     :    0.007959D-6,     316.391869657D0, 2.465042647D0,
+     :    0.010099D-6,     283.859318865D0, 1.942176992D0,
+     :    0.007147D-6,    -242.728603974D0, 3.661486981D0,
+     :    0.007505D-6,    5230.807466803D0, 4.920937029D0,
+     :    0.008323D-6,   11769.853693166D0, 1.229392026D0,
+     :    0.007490D-6,   -6256.777530192D0, 3.658444681D0,
+     :    0.009370D-6,  149854.400134205D0, 0.673880395D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=101,110) /
+     :    0.007117D-6,      38.027672636D0, 5.294249518D0,
+     :    0.007857D-6,   12168.002696575D0, 0.525733528D0,
+     :    0.007019D-6,    6206.809778716D0, 0.837688810D0,
+     :    0.006056D-6,     955.599741609D0, 4.194535082D0,
+     :    0.008107D-6,   13367.972631107D0, 3.793235253D0,
+     :    0.006731D-6,    5650.292110678D0, 5.639906583D0,
+     :    0.007332D-6,      36.648562930D0, 0.114858677D0,
+     :    0.006366D-6,    4164.311989613D0, 2.262081818D0,
+     :    0.006858D-6,    5216.580372801D0, 0.642063318D0,
+     :    0.006919D-6,    6681.224853400D0, 6.018501522D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=111,120) /
+     :    0.006826D-6,    7632.943259650D0, 3.458654112D0,
+     :    0.005308D-6,   -1592.596013633D0, 2.500382359D0,
+     :    0.005096D-6,   11371.704689758D0, 2.547107806D0,
+     :    0.004841D-6,    5333.900241022D0, 0.437078094D0,
+     :    0.005582D-6,    5966.683980335D0, 2.246174308D0,
+     :    0.006304D-6,   11926.254413669D0, 2.512929171D0,
+     :    0.006603D-6,   23581.258177318D0, 5.393136889D0,
+     :    0.005123D-6,      -1.484472708D0, 2.999641028D0,
+     :    0.004648D-6,    1589.072895284D0, 1.275847090D0,
+     :    0.005119D-6,    6438.496249426D0, 1.486539246D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=121,130) /
+     :    0.004521D-6,    4292.330832950D0, 6.140635794D0,
+     :    0.005680D-6,   23013.539539587D0, 4.557814849D0,
+     :    0.005488D-6,      -3.455808046D0, 0.090675389D0,
+     :    0.004193D-6,    7234.794256242D0, 4.869091389D0,
+     :    0.003742D-6,    7238.675591600D0, 4.691976180D0,
+     :    0.004148D-6,    -110.206321219D0, 3.016173439D0,
+     :    0.004553D-6,   11499.656222793D0, 5.554998314D0,
+     :    0.004892D-6,    5436.993015240D0, 1.475415597D0,
+     :    0.004044D-6,    4732.030627343D0, 1.398784824D0,
+     :    0.004164D-6,   12491.370101415D0, 5.650931916D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=131,140) /
+     :    0.004349D-6,   11513.883316794D0, 2.181745369D0,
+     :    0.003919D-6,   12528.018664345D0, 5.823319737D0,
+     :    0.003129D-6,    6836.645252834D0, 0.003844094D0,
+     :    0.004080D-6,   -7058.598461315D0, 3.690360123D0,
+     :    0.003270D-6,      76.266071276D0, 1.517189902D0,
+     :    0.002954D-6,    6283.143160294D0, 4.447203799D0,
+     :    0.002872D-6,      28.449187468D0, 1.158692983D0,
+     :    0.002881D-6,     735.876513532D0, 0.349250250D0,
+     :    0.003279D-6,    5849.364112115D0, 4.893384368D0,
+     :    0.003625D-6,    6209.778724132D0, 1.473760578D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=141,150) /
+     :    0.003074D-6,     949.175608970D0, 5.185878737D0,
+     :    0.002775D-6,    9917.696874510D0, 1.030026325D0,
+     :    0.002646D-6,   10973.555686350D0, 3.918259169D0,
+     :    0.002575D-6,   25132.303399966D0, 6.109659023D0,
+     :    0.003500D-6,     263.083923373D0, 1.892100742D0,
+     :    0.002740D-6,   18319.536584880D0, 4.320519510D0,
+     :    0.002464D-6,     202.253395174D0, 4.698203059D0,
+     :    0.002409D-6,       2.542797281D0, 5.325009315D0,
+     :    0.003354D-6,  -90955.551694697D0, 1.942656623D0,
+     :    0.002296D-6,    6496.374945429D0, 5.061810696D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=151,160) /
+     :    0.003002D-6,    6172.869528772D0, 2.797822767D0,
+     :    0.003202D-6,   27511.467873537D0, 0.531673101D0,
+     :    0.002954D-6,   -6283.008539689D0, 4.533471191D0,
+     :    0.002353D-6,     639.897286314D0, 3.734548088D0,
+     :    0.002401D-6,   16200.772724501D0, 2.605547070D0,
+     :    0.003053D-6,  233141.314403759D0, 3.029030662D0,
+     :    0.003024D-6,   83286.914269554D0, 2.355556099D0,
+     :    0.002863D-6,   17298.182327326D0, 5.240963796D0,
+     :    0.002103D-6,   -7079.373856808D0, 5.756641637D0,
+     :    0.002303D-6,   83996.847317911D0, 2.013686814D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=161,170) /
+     :    0.002303D-6,   18073.704938650D0, 1.089100410D0,
+     :    0.002381D-6,      63.735898303D0, 0.759188178D0,
+     :    0.002493D-6,    6386.168624210D0, 0.645026535D0,
+     :    0.002366D-6,       3.932153263D0, 6.215885448D0,
+     :    0.002169D-6,   11015.106477335D0, 4.845297676D0,
+     :    0.002397D-6,    6243.458341645D0, 3.809290043D0,
+     :    0.002183D-6,    1162.474704408D0, 6.179611691D0,
+     :    0.002353D-6,    6246.427287062D0, 4.781719760D0,
+     :    0.002199D-6,    -245.831646229D0, 5.956152284D0,
+     :    0.001729D-6,    3894.181829542D0, 1.264976635D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=171,180) /
+     :    0.001896D-6,   -3128.388765096D0, 4.914231596D0,
+     :    0.002085D-6,      35.164090221D0, 1.405158503D0,
+     :    0.002024D-6,   14712.317116458D0, 2.752035928D0,
+     :    0.001737D-6,    6290.189396992D0, 5.280820144D0,
+     :    0.002229D-6,     491.557929457D0, 1.571007057D0,
+     :    0.001602D-6,   14314.168113050D0, 4.203664806D0,
+     :    0.002186D-6,     454.909366527D0, 1.402101526D0,
+     :    0.001897D-6,   22483.848574493D0, 4.167932508D0,
+     :    0.001825D-6,   -3738.761430108D0, 0.545828785D0,
+     :    0.001894D-6,    1052.268383188D0, 5.817167450D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=181,190) /
+     :    0.001421D-6,      20.355319399D0, 2.419886601D0,
+     :    0.001408D-6,   10984.192351700D0, 2.732084787D0,
+     :    0.001847D-6,   10873.986030480D0, 2.903477885D0,
+     :    0.001391D-6,   -8635.942003763D0, 0.593891500D0,
+     :    0.001388D-6,      -7.046236698D0, 1.166145902D0,
+     :    0.001810D-6,  -88860.057071188D0, 0.487355242D0,
+     :    0.001288D-6,   -1990.745017041D0, 3.913022880D0,
+     :    0.001297D-6,   23543.230504682D0, 3.063805171D0,
+     :    0.001335D-6,    -266.607041722D0, 3.995764039D0,
+     :    0.001376D-6,   10969.965257698D0, 5.152914309D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=191,200) /
+     :    0.001745D-6,  244287.600007027D0, 3.626395673D0,
+     :    0.001649D-6,   31441.677569757D0, 1.952049260D0,
+     :    0.001416D-6,    9225.539273283D0, 4.996408389D0,
+     :    0.001238D-6,    4804.209275927D0, 5.503379738D0,
+     :    0.001472D-6,    4590.910180489D0, 4.164913291D0,
+     :    0.001169D-6,    6040.347246017D0, 5.841719038D0,
+     :    0.001039D-6,    5540.085789459D0, 2.769753519D0,
+     :    0.001004D-6,    -170.672870619D0, 0.755008103D0,
+     :    0.001284D-6,   10575.406682942D0, 5.306538209D0,
+     :    0.001278D-6,      71.812653151D0, 4.713486491D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=201,210) /
+     :    0.001321D-6,   18209.330263660D0, 2.624866359D0,
+     :    0.001297D-6,   21228.392023546D0, 0.382603541D0,
+     :    0.000954D-6,    6282.095528923D0, 0.882213514D0,
+     :    0.001145D-6,    6058.731054289D0, 1.169483931D0,
+     :    0.000979D-6,    5547.199336460D0, 5.448375984D0,
+     :    0.000987D-6,   -6262.300454499D0, 2.656486959D0,
+     :    0.001070D-6, -154717.609887482D0, 1.827624012D0,
+     :    0.000991D-6,    4701.116501708D0, 4.387001801D0,
+     :    0.001155D-6,     -14.227094002D0, 3.042700750D0,
+     :    0.001176D-6,     277.034993741D0, 3.335519004D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=211,220) /
+     :    0.000890D-6,   13916.019109642D0, 5.601498297D0,
+     :    0.000884D-6,   -1551.045222648D0, 1.088831705D0,
+     :    0.000876D-6,    5017.508371365D0, 3.969902609D0,
+     :    0.000806D-6,   15110.466119866D0, 5.142876744D0,
+     :    0.000773D-6,   -4136.910433516D0, 0.022067765D0,
+     :    0.001077D-6,     175.166059800D0, 1.844913056D0,
+     :    0.000954D-6,   -6284.056171060D0, 0.968480906D0,
+     :    0.000737D-6,    5326.786694021D0, 4.923831588D0,
+     :    0.000845D-6,    -433.711737877D0, 4.749245231D0,
+     :    0.000819D-6,    8662.240323563D0, 5.991247817D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=221,230) /
+     :    0.000852D-6,     199.072001436D0, 2.189604979D0,
+     :    0.000723D-6,   17256.631536341D0, 6.068719637D0,
+     :    0.000940D-6,    6037.244203762D0, 6.197428148D0,
+     :    0.000885D-6,   11712.955318231D0, 3.280414875D0,
+     :    0.000706D-6,   12559.038152982D0, 2.824848947D0,
+     :    0.000732D-6,    2379.164473572D0, 2.501813417D0,
+     :    0.000764D-6,   -6127.655450557D0, 2.236346329D0,
+     :    0.000908D-6,     131.541961686D0, 2.521257490D0,
+     :    0.000907D-6,   35371.887265976D0, 3.370195967D0,
+     :    0.000673D-6,    1066.495477190D0, 3.876512374D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=231,240) /
+     :    0.000814D-6,   17654.780539750D0, 4.627122566D0,
+     :    0.000630D-6,      36.027866677D0, 0.156368499D0,
+     :    0.000798D-6,     515.463871093D0, 5.151962502D0,
+     :    0.000798D-6,     148.078724426D0, 5.909225055D0,
+     :    0.000806D-6,     309.278322656D0, 6.054064447D0,
+     :    0.000607D-6,     -39.617508346D0, 2.839021623D0,
+     :    0.000601D-6,     412.371096874D0, 3.984225404D0,
+     :    0.000646D-6,   11403.676995575D0, 3.852959484D0,
+     :    0.000704D-6,   13521.751441591D0, 2.300991267D0,
+     :    0.000603D-6,  -65147.619767937D0, 4.140083146D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=241,250) /
+     :    0.000609D-6,   10177.257679534D0, 0.437122327D0,
+     :    0.000631D-6,    5767.611978898D0, 4.026532329D0,
+     :    0.000576D-6,   11087.285125918D0, 4.760293101D0,
+     :    0.000674D-6,   14945.316173554D0, 6.270510511D0,
+     :    0.000726D-6,    5429.879468239D0, 6.039606892D0,
+     :    0.000710D-6,   28766.924424484D0, 5.672617711D0,
+     :    0.000647D-6,   11856.218651625D0, 3.397132627D0,
+     :    0.000678D-6,   -5481.254918868D0, 6.249666675D0,
+     :    0.000618D-6,   22003.914634870D0, 2.466427018D0,
+     :    0.000738D-6,    6134.997125565D0, 2.242668890D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=251,260) /
+     :    0.000660D-6,     625.670192312D0, 5.864091907D0,
+     :    0.000694D-6,    3496.032826134D0, 2.668309141D0,
+     :    0.000531D-6,    6489.261398429D0, 1.681888780D0,
+     :    0.000611D-6, -143571.324284214D0, 2.424978312D0,
+     :    0.000575D-6,   12043.574281889D0, 4.216492400D0,
+     :    0.000553D-6,   12416.588502848D0, 4.772158039D0,
+     :    0.000689D-6,    4686.889407707D0, 6.224271088D0,
+     :    0.000495D-6,    7342.457780181D0, 3.817285811D0,
+     :    0.000567D-6,    3634.621024518D0, 1.649264690D0,
+     :    0.000515D-6,   18635.928454536D0, 3.945345892D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=261,270) /
+     :    0.000486D-6,    -323.505416657D0, 4.061673868D0,
+     :    0.000662D-6,   25158.601719765D0, 1.794058369D0,
+     :    0.000509D-6,     846.082834751D0, 3.053874588D0,
+     :    0.000472D-6,  -12569.674818332D0, 5.112133338D0,
+     :    0.000461D-6,    6179.983075773D0, 0.513669325D0,
+     :    0.000641D-6,   83467.156352816D0, 3.210727723D0,
+     :    0.000520D-6,   10344.295065386D0, 2.445597761D0,
+     :    0.000493D-6,   18422.629359098D0, 1.676939306D0,
+     :    0.000478D-6,    1265.567478626D0, 5.487314569D0,
+     :    0.000472D-6,     -18.159247265D0, 1.999707589D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=271,280) /
+     :    0.000559D-6,   11190.377900137D0, 5.783236356D0,
+     :    0.000494D-6,    9623.688276691D0, 3.022645053D0,
+     :    0.000463D-6,    5739.157790895D0, 1.411223013D0,
+     :    0.000432D-6,   16858.482532933D0, 1.179256434D0,
+     :    0.000574D-6,   72140.628666286D0, 1.758191830D0,
+     :    0.000484D-6,   17267.268201691D0, 3.290589143D0,
+     :    0.000550D-6,    4907.302050146D0, 0.864024298D0,
+     :    0.000399D-6,      14.977853527D0, 2.094441910D0,
+     :    0.000491D-6,     224.344795702D0, 0.878372791D0,
+     :    0.000432D-6,   20426.571092422D0, 6.003829241D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=281,290) /
+     :    0.000481D-6,    5749.452731634D0, 4.309591964D0,
+     :    0.000480D-6,    5757.317038160D0, 1.142348571D0,
+     :    0.000485D-6,    6702.560493867D0, 0.210580917D0,
+     :    0.000426D-6,    6055.549660552D0, 4.274476529D0,
+     :    0.000480D-6,    5959.570433334D0, 5.031351030D0,
+     :    0.000466D-6,   12562.628581634D0, 4.959581597D0,
+     :    0.000520D-6,   39302.096962196D0, 4.788002889D0,
+     :    0.000458D-6,   12132.439962106D0, 1.880103788D0,
+     :    0.000470D-6,   12029.347187887D0, 1.405611197D0,
+     :    0.000416D-6,   -7477.522860216D0, 1.082356330D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=291,300) /
+     :    0.000449D-6,   11609.862544012D0, 4.179989585D0,
+     :    0.000465D-6,   17253.041107690D0, 0.353496295D0,
+     :    0.000362D-6,   -4535.059436924D0, 1.583849576D0,
+     :    0.000383D-6,   21954.157609398D0, 3.747376371D0,
+     :    0.000389D-6,      17.252277143D0, 1.395753179D0,
+     :    0.000331D-6,   18052.929543158D0, 0.566790582D0,
+     :    0.000430D-6,   13517.870106233D0, 0.685827538D0,
+     :    0.000368D-6,   -5756.908003246D0, 0.731374317D0,
+     :    0.000330D-6,   10557.594160824D0, 3.710043680D0,
+     :    0.000332D-6,   20199.094959633D0, 1.652901407D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=301,310) /
+     :    0.000384D-6,   11933.367960670D0, 5.827781531D0,
+     :    0.000387D-6,   10454.501386605D0, 2.541182564D0,
+     :    0.000325D-6,   15671.081759407D0, 2.178850542D0,
+     :    0.000318D-6,     138.517496871D0, 2.253253037D0,
+     :    0.000305D-6,    9388.005909415D0, 0.578340206D0,
+     :    0.000352D-6,    5749.861766548D0, 3.000297967D0,
+     :    0.000311D-6,    6915.859589305D0, 1.693574249D0,
+     :    0.000297D-6,   24072.921469776D0, 1.997249392D0,
+     :    0.000363D-6,    -640.877607382D0, 5.071820966D0,
+     :    0.000323D-6,   12592.450019783D0, 1.072262823D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=311,320) /
+     :    0.000341D-6,   12146.667056108D0, 4.700657997D0,
+     :    0.000290D-6,    9779.108676125D0, 1.812320441D0,
+     :    0.000342D-6,    6132.028180148D0, 4.322238614D0,
+     :    0.000329D-6,    6268.848755990D0, 3.033827743D0,
+     :    0.000374D-6,   17996.031168222D0, 3.388716544D0,
+     :    0.000285D-6,    -533.214083444D0, 4.687313233D0,
+     :    0.000338D-6,    6065.844601290D0, 0.877776108D0,
+     :    0.000276D-6,      24.298513841D0, 0.770299429D0,
+     :    0.000336D-6,   -2388.894020449D0, 5.353796034D0,
+     :    0.000290D-6,    3097.883822726D0, 4.075291557D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=321,330) /
+     :    0.000318D-6,     709.933048357D0, 5.941207518D0,
+     :    0.000271D-6,   13095.842665077D0, 3.208912203D0,
+     :    0.000331D-6,    6073.708907816D0, 4.007881169D0,
+     :    0.000292D-6,     742.990060533D0, 2.714333592D0,
+     :    0.000362D-6,   29088.811415985D0, 3.215977013D0,
+     :    0.000280D-6,   12359.966151546D0, 0.710872502D0,
+     :    0.000267D-6,   10440.274292604D0, 4.730108488D0,
+     :    0.000262D-6,     838.969287750D0, 1.327720272D0,
+     :    0.000250D-6,   16496.361396202D0, 0.898769761D0,
+     :    0.000325D-6,   20597.243963041D0, 0.180044365D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=331,340) /
+     :    0.000268D-6,    6148.010769956D0, 5.152666276D0,
+     :    0.000284D-6,    5636.065016677D0, 5.655385808D0,
+     :    0.000301D-6,    6080.822454817D0, 2.135396205D0,
+     :    0.000294D-6,    -377.373607916D0, 3.708784168D0,
+     :    0.000236D-6,    2118.763860378D0, 1.733578756D0,
+     :    0.000234D-6,    5867.523359379D0, 5.575209112D0,
+     :    0.000268D-6, -226858.238553767D0, 0.069432392D0,
+     :    0.000265D-6,  167283.761587465D0, 4.369302826D0,
+     :    0.000280D-6,   28237.233459389D0, 5.304829118D0,
+     :    0.000292D-6,   12345.739057544D0, 4.096094132D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=341,350) /
+     :    0.000223D-6,   19800.945956225D0, 3.069327406D0,
+     :    0.000301D-6,   43232.306658416D0, 6.205311188D0,
+     :    0.000264D-6,   18875.525869774D0, 1.417263408D0,
+     :    0.000304D-6,   -1823.175188677D0, 3.409035232D0,
+     :    0.000301D-6,     109.945688789D0, 0.510922054D0,
+     :    0.000260D-6,     813.550283960D0, 2.389438934D0,
+     :    0.000299D-6,  316428.228673312D0, 5.384595078D0,
+     :    0.000211D-6,    5756.566278634D0, 3.789392838D0,
+     :    0.000209D-6,    5750.203491159D0, 1.661943545D0,
+     :    0.000240D-6,   12489.885628707D0, 5.684549045D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=351,360) /
+     :    0.000216D-6,    6303.851245484D0, 3.862942261D0,
+     :    0.000203D-6,    1581.959348283D0, 5.549853589D0,
+     :    0.000200D-6,    5642.198242609D0, 1.016115785D0,
+     :    0.000197D-6,     -70.849445304D0, 4.690702525D0,
+     :    0.000227D-6,    6287.008003254D0, 2.911891613D0,
+     :    0.000197D-6,     533.623118358D0, 1.048982898D0,
+     :    0.000205D-6,   -6279.485421340D0, 1.829362730D0,
+     :    0.000209D-6,  -10988.808157535D0, 2.636140084D0,
+     :    0.000208D-6,    -227.526189440D0, 4.127883842D0,
+     :    0.000191D-6,     415.552490612D0, 4.401165650D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=361,370) /
+     :    0.000190D-6,   29296.615389579D0, 4.175658539D0,
+     :    0.000264D-6,   66567.485864652D0, 4.601102551D0,
+     :    0.000256D-6,   -3646.350377354D0, 0.506364778D0,
+     :    0.000188D-6,   13119.721102825D0, 2.032195842D0,
+     :    0.000185D-6,    -209.366942175D0, 4.694756586D0,
+     :    0.000198D-6,   25934.124331089D0, 3.832703118D0,
+     :    0.000195D-6,    4061.219215394D0, 3.308463427D0,
+     :    0.000234D-6,    5113.487598583D0, 1.716090661D0,
+     :    0.000188D-6,    1478.866574064D0, 5.686865780D0,
+     :    0.000222D-6,   11823.161639450D0, 1.942386641D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=371,380) /
+     :    0.000181D-6,   10770.893256262D0, 1.999482059D0,
+     :    0.000171D-6,    6546.159773364D0, 1.182807992D0,
+     :    0.000206D-6,      70.328180442D0, 5.934076062D0,
+     :    0.000169D-6,   20995.392966449D0, 2.169080622D0,
+     :    0.000191D-6,   10660.686935042D0, 5.405515999D0,
+     :    0.000228D-6,   33019.021112205D0, 4.656985514D0,
+     :    0.000184D-6,   -4933.208440333D0, 3.327476868D0,
+     :    0.000220D-6,    -135.625325010D0, 1.765430262D0,
+     :    0.000166D-6,   23141.558382925D0, 3.454132746D0,
+     :    0.000191D-6,    6144.558353121D0, 5.020393445D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=381,390) /
+     :    0.000180D-6,    6084.003848555D0, 0.602182191D0,
+     :    0.000163D-6,   17782.732072784D0, 4.960593133D0,
+     :    0.000225D-6,   16460.333529525D0, 2.596451817D0,
+     :    0.000222D-6,    5905.702242076D0, 3.731990323D0,
+     :    0.000204D-6,     227.476132789D0, 5.636192701D0,
+     :    0.000159D-6,   16737.577236597D0, 3.600691544D0,
+     :    0.000200D-6,    6805.653268085D0, 0.868220961D0,
+     :    0.000187D-6,   11919.140866668D0, 2.629456641D0,
+     :    0.000161D-6,     127.471796607D0, 2.862574720D0,
+     :    0.000205D-6,    6286.666278643D0, 1.742882331D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=391,400) /
+     :    0.000189D-6,     153.778810485D0, 4.812372643D0,
+     :    0.000168D-6,   16723.350142595D0, 0.027860588D0,
+     :    0.000149D-6,   11720.068865232D0, 0.659721876D0,
+     :    0.000189D-6,    5237.921013804D0, 5.245313000D0,
+     :    0.000143D-6,    6709.674040867D0, 4.317625647D0,
+     :    0.000146D-6,    4487.817406270D0, 4.815297007D0,
+     :    0.000144D-6,    -664.756045130D0, 5.381366880D0,
+     :    0.000175D-6,    5127.714692584D0, 4.728443327D0,
+     :    0.000162D-6,    6254.626662524D0, 1.435132069D0,
+     :    0.000187D-6,   47162.516354635D0, 1.354371923D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=401,410) /
+     :    0.000146D-6,   11080.171578918D0, 3.369695406D0,
+     :    0.000180D-6,    -348.924420448D0, 2.490902145D0,
+     :    0.000148D-6,     151.047669843D0, 3.799109588D0,
+     :    0.000157D-6,    6197.248551160D0, 1.284375887D0,
+     :    0.000167D-6,     146.594251718D0, 0.759969109D0,
+     :    0.000133D-6,   -5331.357443741D0, 5.409701889D0,
+     :    0.000154D-6,      95.979227218D0, 3.366890614D0,
+     :    0.000148D-6,   -6418.140930027D0, 3.384104996D0,
+     :    0.000128D-6,   -6525.804453965D0, 3.803419985D0,
+     :    0.000130D-6,   11293.470674356D0, 0.939039445D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=411,420) /
+     :    0.000152D-6,   -5729.506447149D0, 0.734117523D0,
+     :    0.000138D-6,     210.117701700D0, 2.564216078D0,
+     :    0.000123D-6,    6066.595360816D0, 4.517099537D0,
+     :    0.000140D-6,   18451.078546566D0, 0.642049130D0,
+     :    0.000126D-6,   11300.584221356D0, 3.485280663D0,
+     :    0.000119D-6,   10027.903195729D0, 3.217431161D0,
+     :    0.000151D-6,    4274.518310832D0, 4.404359108D0,
+     :    0.000117D-6,    6072.958148291D0, 0.366324650D0,
+     :    0.000165D-6,   -7668.637425143D0, 4.298212528D0,
+     :    0.000117D-6,   -6245.048177356D0, 5.379518958D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=421,430) /
+     :    0.000130D-6,   -5888.449964932D0, 4.527681115D0,
+     :    0.000121D-6,    -543.918059096D0, 6.109429504D0,
+     :    0.000162D-6,    9683.594581116D0, 5.720092446D0,
+     :    0.000141D-6,    6219.339951688D0, 0.679068671D0,
+     :    0.000118D-6,   22743.409379516D0, 4.881123092D0,
+     :    0.000129D-6,    1692.165669502D0, 0.351407289D0,
+     :    0.000126D-6,    5657.405657679D0, 5.146592349D0,
+     :    0.000114D-6,     728.762966531D0, 0.520791814D0,
+     :    0.000120D-6,      52.596639600D0, 0.948516300D0,
+     :    0.000115D-6,      65.220371012D0, 3.504914846D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=431,440) /
+     :    0.000126D-6,    5881.403728234D0, 5.577502482D0,
+     :    0.000158D-6,  163096.180360983D0, 2.957128968D0,
+     :    0.000134D-6,   12341.806904281D0, 2.598576764D0,
+     :    0.000151D-6,   16627.370915377D0, 3.985702050D0,
+     :    0.000109D-6,    1368.660252845D0, 0.014730471D0,
+     :    0.000131D-6,    6211.263196841D0, 0.085077024D0,
+     :    0.000146D-6,    5792.741760812D0, 0.708426604D0,
+     :    0.000146D-6,     -77.750543984D0, 3.121576600D0,
+     :    0.000107D-6,    5341.013788022D0, 0.288231904D0,
+     :    0.000138D-6,    6281.591377283D0, 2.797450317D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=441,450) /
+     :    0.000113D-6,   -6277.552925684D0, 2.788904128D0,
+     :    0.000115D-6,    -525.758811831D0, 5.895222200D0,
+     :    0.000138D-6,    6016.468808270D0, 6.096188999D0,
+     :    0.000139D-6,   23539.707386333D0, 2.028195445D0,
+     :    0.000146D-6,   -4176.041342449D0, 4.660008502D0,
+     :    0.000107D-6,   16062.184526117D0, 4.066520001D0,
+     :    0.000142D-6,   83783.548222473D0, 2.936315115D0,
+     :    0.000128D-6,    9380.959672717D0, 3.223844306D0,
+     :    0.000135D-6,    6205.325306007D0, 1.638054048D0,
+     :    0.000101D-6,    2699.734819318D0, 5.481603249D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=451,460) /
+     :    0.000104D-6,    -568.821874027D0, 2.205734493D0,
+     :    0.000103D-6,    6321.103522627D0, 2.440421099D0,
+     :    0.000119D-6,    6321.208885629D0, 2.547496264D0,
+     :    0.000138D-6,    1975.492545856D0, 2.314608466D0,
+     :    0.000121D-6,     137.033024162D0, 4.539108237D0,
+     :    0.000123D-6,   19402.796952817D0, 4.538074405D0,
+     :    0.000119D-6,   22805.735565994D0, 2.869040566D0,
+     :    0.000133D-6,   64471.991241142D0, 6.056405489D0,
+     :    0.000129D-6,     -85.827298831D0, 2.540635083D0,
+     :    0.000131D-6,   13613.804277336D0, 4.005732868D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=461,470) /
+     :    0.000104D-6,    9814.604100291D0, 1.959967212D0,
+     :    0.000112D-6,   16097.679950283D0, 3.589026260D0,
+     :    0.000123D-6,    2107.034507542D0, 1.728627253D0,
+     :    0.000121D-6,   36949.230808424D0, 6.072332087D0,
+     :    0.000108D-6,  -12539.853380183D0, 3.716133846D0,
+     :    0.000113D-6,   -7875.671863624D0, 2.725771122D0,
+     :    0.000109D-6,    4171.425536614D0, 4.033338079D0,
+     :    0.000101D-6,    6247.911759770D0, 3.441347021D0,
+     :    0.000113D-6,    7330.728427345D0, 0.656372122D0,
+     :    0.000113D-6,   51092.726050855D0, 2.791483066D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=471,480) /
+     :    0.000106D-6,    5621.842923210D0, 1.815323326D0,
+     :    0.000101D-6,     111.430161497D0, 5.711033677D0,
+     :    0.000103D-6,     909.818733055D0, 2.812745443D0,
+     :    0.000101D-6,    1790.642637886D0, 1.965746028D0,
+
+*  T
+     :  102.156724D-6,    6283.075849991D0, 4.249032005D0,
+     :    1.706807D-6,   12566.151699983D0, 4.205904248D0,
+     :    0.269668D-6,     213.299095438D0, 3.400290479D0,
+     :    0.265919D-6,     529.690965095D0, 5.836047367D0,
+     :    0.210568D-6,      -3.523118349D0, 6.262738348D0,
+     :    0.077996D-6,    5223.693919802D0, 4.670344204D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=481,490) /
+     :    0.054764D-6,    1577.343542448D0, 4.534800170D0,
+     :    0.059146D-6,      26.298319800D0, 1.083044735D0,
+     :    0.034420D-6,    -398.149003408D0, 5.980077351D0,
+     :    0.032088D-6,   18849.227549974D0, 4.162913471D0,
+     :    0.033595D-6,    5507.553238667D0, 5.980162321D0,
+     :    0.029198D-6,    5856.477659115D0, 0.623811863D0,
+     :    0.027764D-6,     155.420399434D0, 3.745318113D0,
+     :    0.025190D-6,    5746.271337896D0, 2.980330535D0,
+     :    0.022997D-6,    -796.298006816D0, 1.174411803D0,
+     :    0.024976D-6,    5760.498431898D0, 2.467913690D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=491,500) /
+     :    0.021774D-6,     206.185548437D0, 3.854787540D0,
+     :    0.017925D-6,    -775.522611324D0, 1.092065955D0,
+     :    0.013794D-6,     426.598190876D0, 2.699831988D0,
+     :    0.013276D-6,    6062.663207553D0, 5.845801920D0,
+     :    0.011774D-6,   12036.460734888D0, 2.292832062D0,
+     :    0.012869D-6,    6076.890301554D0, 5.333425680D0,
+     :    0.012152D-6,    1059.381930189D0, 6.222874454D0,
+     :    0.011081D-6,      -7.113547001D0, 5.154724984D0,
+     :    0.010143D-6,    4694.002954708D0, 4.044013795D0,
+     :    0.009357D-6,    5486.777843175D0, 3.416081409D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=501,510) /
+     :    0.010084D-6,     522.577418094D0, 0.749320262D0,
+     :    0.008587D-6,   10977.078804699D0, 2.777152598D0,
+     :    0.008628D-6,    6275.962302991D0, 4.562060226D0,
+     :    0.008158D-6,    -220.412642439D0, 5.806891533D0,
+     :    0.007746D-6,    2544.314419883D0, 1.603197066D0,
+     :    0.007670D-6,    2146.165416475D0, 3.000200440D0,
+     :    0.007098D-6,      74.781598567D0, 0.443725817D0,
+     :    0.006180D-6,    -536.804512095D0, 1.302642751D0,
+     :    0.005818D-6,    5088.628839767D0, 4.827723531D0,
+     :    0.004945D-6,   -6286.598968340D0, 0.268305170D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=511,520) /
+     :    0.004774D-6,    1349.867409659D0, 5.808636673D0,
+     :    0.004687D-6,    -242.728603974D0, 5.154890570D0,
+     :    0.006089D-6,    1748.016413067D0, 4.403765209D0,
+     :    0.005975D-6,   -1194.447010225D0, 2.583472591D0,
+     :    0.004229D-6,     951.718406251D0, 0.931172179D0,
+     :    0.005264D-6,     553.569402842D0, 2.336107252D0,
+     :    0.003049D-6,    5643.178563677D0, 1.362634430D0,
+     :    0.002974D-6,    6812.766815086D0, 1.583012668D0,
+     :    0.003403D-6,   -2352.866153772D0, 2.552189886D0,
+     :    0.003030D-6,     419.484643875D0, 5.286473844D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=521,530) /
+     :    0.003210D-6,      -7.046236698D0, 1.863796539D0,
+     :    0.003058D-6,    9437.762934887D0, 4.226420633D0,
+     :    0.002589D-6,   12352.852604545D0, 1.991935820D0,
+     :    0.002927D-6,    5216.580372801D0, 2.319951253D0,
+     :    0.002425D-6,    5230.807466803D0, 3.084752833D0,
+     :    0.002656D-6,    3154.687084896D0, 2.487447866D0,
+     :    0.002445D-6,   10447.387839604D0, 2.347139160D0,
+     :    0.002990D-6,    4690.479836359D0, 6.235872050D0,
+     :    0.002890D-6,    5863.591206116D0, 0.095197563D0,
+     :    0.002498D-6,    6438.496249426D0, 2.994779800D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=531,540) /
+     :    0.001889D-6,    8031.092263058D0, 3.569003717D0,
+     :    0.002567D-6,     801.820931124D0, 3.425611498D0,
+     :    0.001803D-6,  -71430.695617928D0, 2.192295512D0,
+     :    0.001782D-6,       3.932153263D0, 5.180433689D0,
+     :    0.001694D-6,   -4705.732307544D0, 4.641779174D0,
+     :    0.001704D-6,   -1592.596013633D0, 3.997097652D0,
+     :    0.001735D-6,    5849.364112115D0, 0.417558428D0,
+     :    0.001643D-6,    8429.241266467D0, 2.180619584D0,
+     :    0.001680D-6,      38.133035638D0, 4.164529426D0,
+     :    0.002045D-6,    7084.896781115D0, 0.526323854D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=541,550) /
+     :    0.001458D-6,    4292.330832950D0, 1.356098141D0,
+     :    0.001437D-6,      20.355319399D0, 3.895439360D0,
+     :    0.001738D-6,    6279.552731642D0, 0.087484036D0,
+     :    0.001367D-6,   14143.495242431D0, 3.987576591D0,
+     :    0.001344D-6,    7234.794256242D0, 0.090454338D0,
+     :    0.001438D-6,   11499.656222793D0, 0.974387904D0,
+     :    0.001257D-6,    6836.645252834D0, 1.509069366D0,
+     :    0.001358D-6,   11513.883316794D0, 0.495572260D0,
+     :    0.001628D-6,    7632.943259650D0, 4.968445721D0,
+     :    0.001169D-6,     103.092774219D0, 2.838496795D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=551,560) /
+     :    0.001162D-6,    4164.311989613D0, 3.408387778D0,
+     :    0.001092D-6,    6069.776754553D0, 3.617942651D0,
+     :    0.001008D-6,   17789.845619785D0, 0.286350174D0,
+     :    0.001008D-6,     639.897286314D0, 1.610762073D0,
+     :    0.000918D-6,   10213.285546211D0, 5.532798067D0,
+     :    0.001011D-6,   -6256.777530192D0, 0.661826484D0,
+     :    0.000753D-6,   16730.463689596D0, 3.905030235D0,
+     :    0.000737D-6,   11926.254413669D0, 4.641956361D0,
+     :    0.000694D-6,    3340.612426700D0, 2.111120332D0,
+     :    0.000701D-6,    3894.181829542D0, 2.760823491D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=561,570) /
+     :    0.000689D-6,    -135.065080035D0, 4.768800780D0,
+     :    0.000700D-6,   13367.972631107D0, 5.760439898D0,
+     :    0.000664D-6,    6040.347246017D0, 1.051215840D0,
+     :    0.000654D-6,    5650.292110678D0, 4.911332503D0,
+     :    0.000788D-6,    6681.224853400D0, 4.699648011D0,
+     :    0.000628D-6,    5333.900241022D0, 5.024608847D0,
+     :    0.000755D-6,    -110.206321219D0, 4.370971253D0,
+     :    0.000628D-6,    6290.189396992D0, 3.660478857D0,
+     :    0.000635D-6,   25132.303399966D0, 4.121051532D0,
+     :    0.000534D-6,    5966.683980335D0, 1.173284524D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=571,580) /
+     :    0.000543D-6,    -433.711737877D0, 0.345585464D0,
+     :    0.000517D-6,   -1990.745017041D0, 5.414571768D0,
+     :    0.000504D-6,    5767.611978898D0, 2.328281115D0,
+     :    0.000485D-6,    5753.384884897D0, 1.685874771D0,
+     :    0.000463D-6,    7860.419392439D0, 5.297703006D0,
+     :    0.000604D-6,     515.463871093D0, 0.591998446D0,
+     :    0.000443D-6,   12168.002696575D0, 4.830881244D0,
+     :    0.000570D-6,     199.072001436D0, 3.899190272D0,
+     :    0.000465D-6,   10969.965257698D0, 0.476681802D0,
+     :    0.000424D-6,   -7079.373856808D0, 1.112242763D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=581,590) /
+     :    0.000427D-6,     735.876513532D0, 1.994214480D0,
+     :    0.000478D-6,   -6127.655450557D0, 3.778025483D0,
+     :    0.000414D-6,   10973.555686350D0, 5.441088327D0,
+     :    0.000512D-6,    1589.072895284D0, 0.107123853D0,
+     :    0.000378D-6,   10984.192351700D0, 0.915087231D0,
+     :    0.000402D-6,   11371.704689758D0, 4.107281715D0,
+     :    0.000453D-6,    9917.696874510D0, 1.917490952D0,
+     :    0.000395D-6,     149.563197135D0, 2.763124165D0,
+     :    0.000371D-6,    5739.157790895D0, 3.112111866D0,
+     :    0.000350D-6,   11790.629088659D0, 0.440639857D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=591,600) /
+     :    0.000356D-6,    6133.512652857D0, 5.444568842D0,
+     :    0.000344D-6,     412.371096874D0, 5.676832684D0,
+     :    0.000383D-6,     955.599741609D0, 5.559734846D0,
+     :    0.000333D-6,    6496.374945429D0, 0.261537984D0,
+     :    0.000340D-6,    6055.549660552D0, 5.975534987D0,
+     :    0.000334D-6,    1066.495477190D0, 2.335063907D0,
+     :    0.000399D-6,   11506.769769794D0, 5.321230910D0,
+     :    0.000314D-6,   18319.536584880D0, 2.313312404D0,
+     :    0.000424D-6,    1052.268383188D0, 1.211961766D0,
+     :    0.000307D-6,      63.735898303D0, 3.169551388D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=601,610) /
+     :    0.000329D-6,      29.821438149D0, 6.106912080D0,
+     :    0.000357D-6,    6309.374169791D0, 4.223760346D0,
+     :    0.000312D-6,   -3738.761430108D0, 2.180556645D0,
+     :    0.000301D-6,     309.278322656D0, 1.499984572D0,
+     :    0.000268D-6,   12043.574281889D0, 2.447520648D0,
+     :    0.000257D-6,   12491.370101415D0, 3.662331761D0,
+     :    0.000290D-6,     625.670192312D0, 1.272834584D0,
+     :    0.000256D-6,    5429.879468239D0, 1.913426912D0,
+     :    0.000339D-6,    3496.032826134D0, 4.165930011D0,
+     :    0.000283D-6,    3930.209696220D0, 4.325565754D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=611,620) /
+     :    0.000241D-6,   12528.018664345D0, 3.832324536D0,
+     :    0.000304D-6,    4686.889407707D0, 1.612348468D0,
+     :    0.000259D-6,   16200.772724501D0, 3.470173146D0,
+     :    0.000238D-6,   12139.553509107D0, 1.147977842D0,
+     :    0.000236D-6,    6172.869528772D0, 3.776271728D0,
+     :    0.000296D-6,   -7058.598461315D0, 0.460368852D0,
+     :    0.000306D-6,   10575.406682942D0, 0.554749016D0,
+     :    0.000251D-6,   17298.182327326D0, 0.834332510D0,
+     :    0.000290D-6,    4732.030627343D0, 4.759564091D0,
+     :    0.000261D-6,    5884.926846583D0, 0.298259862D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=621,630) /
+     :    0.000249D-6,    5547.199336460D0, 3.749366406D0,
+     :    0.000213D-6,   11712.955318231D0, 5.415666119D0,
+     :    0.000223D-6,    4701.116501708D0, 2.703203558D0,
+     :    0.000268D-6,    -640.877607382D0, 0.283670793D0,
+     :    0.000209D-6,    5636.065016677D0, 1.238477199D0,
+     :    0.000193D-6,   10177.257679534D0, 1.943251340D0,
+     :    0.000182D-6,    6283.143160294D0, 2.456157599D0,
+     :    0.000184D-6,    -227.526189440D0, 5.888038582D0,
+     :    0.000182D-6,   -6283.008539689D0, 0.241332086D0,
+     :    0.000228D-6,   -6284.056171060D0, 2.657323816D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=631,640) /
+     :    0.000166D-6,    7238.675591600D0, 5.930629110D0,
+     :    0.000167D-6,    3097.883822726D0, 5.570955333D0,
+     :    0.000159D-6,    -323.505416657D0, 5.786670700D0,
+     :    0.000154D-6,   -4136.910433516D0, 1.517805532D0,
+     :    0.000176D-6,   12029.347187887D0, 3.139266834D0,
+     :    0.000167D-6,   12132.439962106D0, 3.556352289D0,
+     :    0.000153D-6,     202.253395174D0, 1.463313961D0,
+     :    0.000157D-6,   17267.268201691D0, 1.586837396D0,
+     :    0.000142D-6,   83996.847317911D0, 0.022670115D0,
+     :    0.000152D-6,   17260.154654690D0, 0.708528947D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=641,650) /
+     :    0.000144D-6,    6084.003848555D0, 5.187075177D0,
+     :    0.000135D-6,    5756.566278634D0, 1.993229262D0,
+     :    0.000134D-6,    5750.203491159D0, 3.457197134D0,
+     :    0.000144D-6,    5326.786694021D0, 6.066193291D0,
+     :    0.000160D-6,   11015.106477335D0, 1.710431974D0,
+     :    0.000133D-6,    3634.621024518D0, 2.836451652D0,
+     :    0.000134D-6,   18073.704938650D0, 5.453106665D0,
+     :    0.000134D-6,    1162.474704408D0, 5.326898811D0,
+     :    0.000128D-6,    5642.198242609D0, 2.511652591D0,
+     :    0.000160D-6,     632.783739313D0, 5.628785365D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=651,660) /
+     :    0.000132D-6,   13916.019109642D0, 0.819294053D0,
+     :    0.000122D-6,   14314.168113050D0, 5.677408071D0,
+     :    0.000125D-6,   12359.966151546D0, 5.251984735D0,
+     :    0.000121D-6,    5749.452731634D0, 2.210924603D0,
+     :    0.000136D-6,    -245.831646229D0, 1.646502367D0,
+     :    0.000120D-6,    5757.317038160D0, 3.240883049D0,
+     :    0.000134D-6,   12146.667056108D0, 3.059480037D0,
+     :    0.000137D-6,    6206.809778716D0, 1.867105418D0,
+     :    0.000141D-6,   17253.041107690D0, 2.069217456D0,
+     :    0.000129D-6,   -7477.522860216D0, 2.781469314D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=661,670) /
+     :    0.000116D-6,    5540.085789459D0, 4.281176991D0,
+     :    0.000116D-6,    9779.108676125D0, 3.320925381D0,
+     :    0.000129D-6,    5237.921013804D0, 3.497704076D0,
+     :    0.000113D-6,    5959.570433334D0, 0.983210840D0,
+     :    0.000122D-6,    6282.095528923D0, 2.674938860D0,
+     :    0.000140D-6,     -11.045700264D0, 4.957936982D0,
+     :    0.000108D-6,   23543.230504682D0, 1.390113589D0,
+     :    0.000106D-6,  -12569.674818332D0, 0.429631317D0,
+     :    0.000110D-6,    -266.607041722D0, 5.501340197D0,
+     :    0.000115D-6,   12559.038152982D0, 4.691456618D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=671,680) /
+     :    0.000134D-6,   -2388.894020449D0, 0.577313584D0,
+     :    0.000109D-6,   10440.274292604D0, 6.218148717D0,
+     :    0.000102D-6,    -543.918059096D0, 1.477842615D0,
+     :    0.000108D-6,   21228.392023546D0, 2.237753948D0,
+     :    0.000101D-6,   -4535.059436924D0, 3.100492232D0,
+     :    0.000103D-6,      76.266071276D0, 5.594294322D0,
+     :    0.000104D-6,     949.175608970D0, 5.674287810D0,
+     :    0.000101D-6,   13517.870106233D0, 2.196632348D0,
+     :    0.000100D-6,   11933.367960670D0, 4.056084160D0,
+     :    4.322990D-6,    6283.075849991D0, 2.642893748D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=681,690) /
+     :    0.406495D-6,       0.000000000D0, 4.712388980D0,
+     :    0.122605D-6,   12566.151699983D0, 2.438140634D0,
+     :    0.019476D-6,     213.299095438D0, 1.642186981D0,
+     :    0.016916D-6,     529.690965095D0, 4.510959344D0,
+     :    0.013374D-6,      -3.523118349D0, 1.502210314D0,
+     :    0.008042D-6,      26.298319800D0, 0.478549024D0,
+     :    0.007824D-6,     155.420399434D0, 5.254710405D0,
+     :    0.004894D-6,    5746.271337896D0, 4.683210850D0,
+     :    0.004875D-6,    5760.498431898D0, 0.759507698D0,
+     :    0.004416D-6,    5223.693919802D0, 6.028853166D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=691,700) /
+     :    0.004088D-6,      -7.113547001D0, 0.060926389D0,
+     :    0.004433D-6,   77713.771467920D0, 3.627734103D0,
+     :    0.003277D-6,   18849.227549974D0, 2.327912542D0,
+     :    0.002703D-6,    6062.663207553D0, 1.271941729D0,
+     :    0.003435D-6,    -775.522611324D0, 0.747446224D0,
+     :    0.002618D-6,    6076.890301554D0, 3.633715689D0,
+     :    0.003146D-6,     206.185548437D0, 5.647874613D0,
+     :    0.002544D-6,    1577.343542448D0, 6.232904270D0,
+     :    0.002218D-6,    -220.412642439D0, 1.309509946D0,
+     :    0.002197D-6,    5856.477659115D0, 2.407212349D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=701,710) /
+     :    0.002897D-6,    5753.384884897D0, 5.863842246D0,
+     :    0.001766D-6,     426.598190876D0, 0.754113147D0,
+     :    0.001738D-6,    -796.298006816D0, 2.714942671D0,
+     :    0.001695D-6,     522.577418094D0, 2.629369842D0,
+     :    0.001584D-6,    5507.553238667D0, 1.341138229D0,
+     :    0.001503D-6,    -242.728603974D0, 0.377699736D0,
+     :    0.001552D-6,    -536.804512095D0, 2.904684667D0,
+     :    0.001370D-6,    -398.149003408D0, 1.265599125D0,
+     :    0.001889D-6,   -5573.142801634D0, 4.413514859D0,
+     :    0.001722D-6,    6069.776754553D0, 2.445966339D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=711,720) /
+     :    0.001124D-6,    1059.381930189D0, 5.041799657D0,
+     :    0.001258D-6,     553.569402842D0, 3.849557278D0,
+     :    0.000831D-6,     951.718406251D0, 2.471094709D0,
+     :    0.000767D-6,    4694.002954708D0, 5.363125422D0,
+     :    0.000756D-6,    1349.867409659D0, 1.046195744D0,
+     :    0.000775D-6,     -11.045700264D0, 0.245548001D0,
+     :    0.000597D-6,    2146.165416475D0, 4.543268798D0,
+     :    0.000568D-6,    5216.580372801D0, 4.178853144D0,
+     :    0.000711D-6,    1748.016413067D0, 5.934271972D0,
+     :    0.000499D-6,   12036.460734888D0, 0.624434410D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=721,730) /
+     :    0.000671D-6,   -1194.447010225D0, 4.136047594D0,
+     :    0.000488D-6,    5849.364112115D0, 2.209679987D0,
+     :    0.000621D-6,    6438.496249426D0, 4.518860804D0,
+     :    0.000495D-6,   -6286.598968340D0, 1.868201275D0,
+     :    0.000456D-6,    5230.807466803D0, 1.271231591D0,
+     :    0.000451D-6,    5088.628839767D0, 0.084060889D0,
+     :    0.000435D-6,    5643.178563677D0, 3.324456609D0,
+     :    0.000387D-6,   10977.078804699D0, 4.052488477D0,
+     :    0.000547D-6,  161000.685737473D0, 2.841633844D0,
+     :    0.000522D-6,    3154.687084896D0, 2.171979966D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=731,740) /
+     :    0.000375D-6,    5486.777843175D0, 4.983027306D0,
+     :    0.000421D-6,    5863.591206116D0, 4.546432249D0,
+     :    0.000439D-6,    7084.896781115D0, 0.522967921D0,
+     :    0.000309D-6,    2544.314419883D0, 3.172606705D0,
+     :    0.000347D-6,    4690.479836359D0, 1.479586566D0,
+     :    0.000317D-6,     801.820931124D0, 3.553088096D0,
+     :    0.000262D-6,     419.484643875D0, 0.606635550D0,
+     :    0.000248D-6,    6836.645252834D0, 3.014082064D0,
+     :    0.000245D-6,   -1592.596013633D0, 5.519526220D0,
+     :    0.000225D-6,    4292.330832950D0, 2.877956536D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=741,750) /
+     :    0.000214D-6,    7234.794256242D0, 1.605227587D0,
+     :    0.000205D-6,    5767.611978898D0, 0.625804796D0,
+     :    0.000180D-6,   10447.387839604D0, 3.499954526D0,
+     :    0.000229D-6,     199.072001436D0, 5.632304604D0,
+     :    0.000214D-6,     639.897286314D0, 5.960227667D0,
+     :    0.000175D-6,    -433.711737877D0, 2.162417992D0,
+     :    0.000209D-6,     515.463871093D0, 2.322150893D0,
+     :    0.000173D-6,    6040.347246017D0, 2.556183691D0,
+     :    0.000184D-6,    6309.374169791D0, 4.732296790D0,
+     :    0.000227D-6,  149854.400134205D0, 5.385812217D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=751,760) /
+     :    0.000154D-6,    8031.092263058D0, 5.120720920D0,
+     :    0.000151D-6,    5739.157790895D0, 4.815000443D0,
+     :    0.000197D-6,    7632.943259650D0, 0.222827271D0,
+     :    0.000197D-6,      74.781598567D0, 3.910456770D0,
+     :    0.000138D-6,    6055.549660552D0, 1.397484253D0,
+     :    0.000149D-6,   -6127.655450557D0, 5.333727496D0,
+     :    0.000137D-6,    3894.181829542D0, 4.281749907D0,
+     :    0.000135D-6,    9437.762934887D0, 5.979971885D0,
+     :    0.000139D-6,   -2352.866153772D0, 4.715630782D0,
+     :    0.000142D-6,    6812.766815086D0, 0.513330157D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=761,770) /
+     :    0.000120D-6,   -4705.732307544D0, 0.194160689D0,
+     :    0.000131D-6,  -71430.695617928D0, 0.000379226D0,
+     :    0.000124D-6,    6279.552731642D0, 2.122264908D0,
+     :    0.000108D-6,   -6256.777530192D0, 0.883445696D0,
+     :    0.143388D-6,    6283.075849991D0, 1.131453581D0,
+     :    0.006671D-6,   12566.151699983D0, 0.775148887D0,
+     :    0.001480D-6,     155.420399434D0, 0.480016880D0,
+     :    0.000934D-6,     213.299095438D0, 6.144453084D0,
+     :    0.000795D-6,     529.690965095D0, 2.941595619D0,
+     :    0.000673D-6,    5746.271337896D0, 0.120415406D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=771,780) /
+     :    0.000672D-6,    5760.498431898D0, 5.317009738D0,
+     :    0.000389D-6,    -220.412642439D0, 3.090323467D0,
+     :    0.000373D-6,    6062.663207553D0, 3.003551964D0,
+     :    0.000360D-6,    6076.890301554D0, 1.918913041D0,
+     :    0.000316D-6,     -21.340641002D0, 5.545798121D0,
+     :    0.000315D-6,    -242.728603974D0, 1.884932563D0,
+     :    0.000278D-6,     206.185548437D0, 1.266254859D0,
+     :    0.000238D-6,    -536.804512095D0, 4.532664830D0,
+     :    0.000185D-6,     522.577418094D0, 4.578313856D0,
+     :    0.000245D-6,   18849.227549974D0, 0.587467082D0 /
+      DATA ((FAIRHD(I,J),I=1,3),J=781,787) /
+     :    0.000180D-6,     426.598190876D0, 5.151178553D0,
+     :    0.000200D-6,     553.569402842D0, 5.355983739D0,
+     :    0.000141D-6,    5223.693919802D0, 1.336556009D0,
+     :    0.000104D-6,    5856.477659115D0, 4.239842759D0,
+     :    0.003826D-6,    6283.075849991D0, 5.705257275D0,
+     :    0.000303D-6,   12566.151699983D0, 5.407132842D0,
+     :    0.000209D-6,     155.420399434D0, 1.989815753D0 /
+* -----------------------------------------------------------------------
+
+
+
+*  Time since J2000.0 in Julian millennia.
+      T=(TDB-51544.5D0)/365250D0
+
+* -------------------- Topocentric terms -------------------------------
+
+*  Convert UT1 to local solar time in radians.
+      TSOL = MOD(UT1,1D0)*D2PI - WL
+
+*  FUNDAMENTAL ARGUMENTS:  Simon et al 1994
+
+*  Combine time argument (millennia) with deg/arcsec factor.
+      W = T / 3600D0
+
+*  Sun Mean Longitude.
+      ELSUN = MOD(280.46645683D0+1296027711.03429D0*W,360D0)*D2R
+
+*  Sun Mean Anomaly.
+      EMSUN = MOD(357.52910918D0+1295965810.481D0*W,360D0)*D2R
+
+*  Mean Elongation of Moon from Sun.
+      D = MOD(297.85019547D0+16029616012.090D0*W,360D0)*D2R
+
+*  Mean Longitude of Jupiter.
+      ELJ = MOD(34.35151874D0+109306899.89453D0*W,360D0)*D2R
+
+*  Mean Longitude of Saturn.
+      ELS = MOD(50.07744430D0+44046398.47038D0*W,360D0)*D2R
+
+*  TOPOCENTRIC TERMS:  Moyer 1981 and Murray 1983.
+      WT =  +0.00029D-10*U*SIN(TSOL+ELSUN-ELS)
+     :      +0.00100D-10*U*SIN(TSOL-2D0*EMSUN)
+     :      +0.00133D-10*U*SIN(TSOL-D)
+     :      +0.00133D-10*U*SIN(TSOL+ELSUN-ELJ)
+     :      -0.00229D-10*U*SIN(TSOL+2D0*ELSUN+EMSUN)
+     :      -0.0220 D-10*V*COS(ELSUN+EMSUN)
+     :      +0.05312D-10*U*SIN(TSOL-EMSUN)
+     :      -0.13677D-10*U*SIN(TSOL+2D0*ELSUN)
+     :      -1.3184 D-10*V*COS(ELSUN)
+     :      +3.17679D-10*U*SIN(TSOL)
+
+* --------------- Fairhead model ---------------------------------------
+
+*  T**0
+      W0=0D0
+      DO I=474,1,-1
+         W0=W0+FAIRHD(1,I)*SIN(FAIRHD(2,I)*T+FAIRHD(3,I))
+      END DO
+
+*  T**1
+      W1=0D0
+      DO I=679,475,-1
+         W1=W1+FAIRHD(1,I)*SIN(FAIRHD(2,I)*T+FAIRHD(3,I))
+      END DO
+
+*  T**2
+      W2=0D0
+      DO I=764,680,-1
+         W2=W2+FAIRHD(1,I)*SIN(FAIRHD(2,I)*T+FAIRHD(3,I))
+      END DO
+
+*  T**3
+      W3=0D0
+      DO I=784,765,-1
+         W3=W3+FAIRHD(1,I)*SIN(FAIRHD(2,I)*T+FAIRHD(3,I))
+      END DO
+
+*  T**4
+      W4=0D0
+      DO I=787,785,-1
+         W4=W4+FAIRHD(1,I)*SIN(FAIRHD(2,I)*T+FAIRHD(3,I))
+      END DO
+
+*  Multiply by powers of T and combine.
+      WF=T*(T*(T*(T*W4+W3)+W2)+W1)+W0
+
+*  Adjustments to use JPL planetary masses instead of IAU.
+      WJ=     0.00065D-6  * SIN(   6069.776754D0   *T + 4.021194D0   ) +
+     :        0.00033D-6  * SIN(    213.299095D0   *T + 5.543132D0   ) +
+     :      (-0.00196D-6  * SIN(   6208.294251D0   *T + 5.696701D0   ))+
+     :      (-0.00173D-6  * SIN(     74.781599D0   *T + 2.435900D0   ))+
+     :        0.03638D-6*T*T
+
+* -----------------------------------------------------------------------
+
+*  Final result:  TDB-TT in seconds.
+      sla_RCC=WT+WF+WJ
+
+      END
diff --git a/rdplan.f b/rdplan.f
new file mode 100644
index 0000000000000000000000000000000000000000..5c49861f1a11cff264746394ff90530c1bd32083
--- /dev/null
+++ b/rdplan.f
@@ -0,0 +1,200 @@
+      SUBROUTINE sla_RDPLAN (DATE, NP, ELONG, PHI, RA, DEC, DIAM)
+*+
+*     - - - - - - -
+*      R D P L A N
+*     - - - - - - -
+*
+*  Approximate topocentric apparent RA,Dec of a planet, and its
+*  angular diameter.
+*
+*  Given:
+*     DATE        d       MJD of observation (JD - 2400000.5)
+*     NP          i       planet: 1 = Mercury
+*                                 2 = Venus
+*                                 3 = Moon
+*                                 4 = Mars
+*                                 5 = Jupiter
+*                                 6 = Saturn
+*                                 7 = Uranus
+*                                 8 = Neptune
+*                                 9 = Pluto
+*                              else = Sun
+*     ELONG,PHI   d       observer's east longitude and geodetic
+*                                               latitude (radians)
+*
+*  Returned:
+*     RA,DEC      d        RA, Dec (topocentric apparent, radians)
+*     DIAM        d        angular diameter (equatorial, radians)
+*
+*  Notes:
+*
+*  1  The date is in a dynamical timescale (TDB, formerly ET) and is
+*     in the form of a Modified Julian Date (JD-2400000.5).  For all
+*     practical purposes, TT can be used instead of TDB, and for many
+*     applications UT will do (except for the Moon).
+*
+*  2  The longitude and latitude allow correction for geocentric
+*     parallax.  This is a major effect for the Moon, but in the
+*     context of the limited accuracy of the present routine its
+*     effect on planetary positions is small (negligible for the
+*     outer planets).  Geocentric positions can be generated by
+*     appropriate use of the routines sla_DMOON and sla_PLANET.
+*
+*  3  The direction accuracy (arcsec, 1000-3000AD) is of order:
+*
+*            Sun              5
+*            Mercury          2
+*            Venus           10
+*            Moon            30
+*            Mars            50
+*            Jupiter         90
+*            Saturn          90
+*            Uranus          90
+*            Neptune         10
+*            Pluto            1   (1885-2099AD only)
+*
+*     The angular diameter accuracy is about 0.4% for the Moon,
+*     and 0.01% or better for the Sun and planets.
+*
+*  See the sla_PLANET routine for references.
+*
+*  Called: sla_GMST, sla_DT, sla_EPJ, sla_DMOON, sla_PVOBS, sla_PRENUT,
+*          sla_PLANET, sla_DMXV, sla_DCC2S, sla_DRANRM
+*
+*  P.T.Wallace   Starlink   26 May 1997
+*
+*  Copyright (C) 1997 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE
+      INTEGER NP
+      DOUBLE PRECISION ELONG,PHI,RA,DEC,DIAM
+
+*  AU in km
+      DOUBLE PRECISION AUKM
+      PARAMETER (AUKM=1.49597870D8)
+
+*  Light time for unit distance (sec)
+      DOUBLE PRECISION TAU
+      PARAMETER (TAU=499.004782D0)
+
+      INTEGER IP,J,I
+      DOUBLE PRECISION EQRAU(0:9),STL,VGM(6),V(6),RMAT(3,3),
+     :                 VSE(6),VSG(6),VSP(6),VGO(6),DX,DY,DZ,R,TL
+      DOUBLE PRECISION sla_GMST,sla_DT,sla_EPJ,sla_DRANRM
+
+*  Equatorial radii (km)
+      DATA EQRAU / 696000D0,2439.7D0,6051.9D0,1738D0,3397D0,71492D0,
+     :             60268D0,25559D0,24764D0,1151D0 /
+
+
+
+*  Classify NP
+      IP=NP
+      IF (IP.LT.0.OR.IP.GT.9) IP=0
+
+*  Approximate local ST
+      STL=sla_GMST(DATE-sla_DT(sla_EPJ(DATE))/86400D0)+ELONG
+
+*  Geocentre to Moon (mean of date)
+      CALL sla_DMOON(DATE,V)
+
+*  Nutation to true of date
+      CALL sla_NUT(DATE,RMAT)
+      CALL sla_DMXV(RMAT,V,VGM)
+      CALL sla_DMXV(RMAT,V(4),VGM(4))
+
+*  Moon?
+      IF (IP.EQ.3) THEN
+
+*     Yes: geocentre to Moon (true of date)
+         DO I=1,6
+            V(I)=VGM(I)
+         END DO
+      ELSE
+
+*     No: precession/nutation matrix, J2000 to date
+         CALL sla_PRENUT(2000D0,DATE,RMAT)
+
+*     Sun to Earth-Moon Barycentre (J2000)
+         CALL sla_PLANET(DATE,3,V,J)
+
+*     Precession and nutation to date
+         CALL sla_DMXV(RMAT,V,VSE)
+         CALL sla_DMXV(RMAT,V(4),VSE(4))
+
+*     Sun to geocentre (true of date)
+         DO I=1,6
+            VSG(I)=VSE(I)-0.012150581D0*VGM(I)
+         END DO
+
+*     Sun?
+         IF (IP.EQ.0) THEN
+
+*        Yes: geocentre to Sun
+            DO I=1,6
+               V(I)=-VSG(I)
+            END DO
+         ELSE
+
+*        No: Sun to Planet (J2000)
+            CALL sla_PLANET(DATE,IP,V,J)
+
+*        Precession and nutation to date
+            CALL sla_DMXV(RMAT,V,VSP)
+            CALL sla_DMXV(RMAT,V(4),VSP(4))
+
+*        Geocentre to planet
+            DO I=1,6
+               V(I)=VSP(I)-VSG(I)
+            END DO
+         END IF
+      END IF
+
+*  Refer to origin at the observer
+      CALL sla_PVOBS(PHI,0D0,STL,VGO)
+      DO I=1,6
+         V(I)=V(I)-VGO(I)
+      END DO
+
+*  Geometric distance (AU)
+      DX=V(1)
+      DY=V(2)
+      DZ=V(3)
+      R=SQRT(DX*DX+DY*DY+DZ*DZ)
+
+*  Light time (sec)
+      TL=TAU*R
+
+*  Correct position for planetary aberration
+      DO I=1,3
+         V(I)=V(I)-TL*V(I+3)
+      END DO
+
+*  To RA,Dec
+      CALL sla_DCC2S(V,RA,DEC)
+      RA=sla_DRANRM(RA)
+
+*  Angular diameter (radians)
+      DIAM=2D0*ASIN(EQRAU(IP)/(R*AUKM))
+
+      END
diff --git a/read.me b/read.me
new file mode 100644
index 0000000000000000000000000000000000000000..1d266dde4a984221b067de1d8d04d23fde8c5524
--- /dev/null
+++ b/read.me
@@ -0,0 +1,443 @@
+READ.ME
+
+Revision date 14 June 2005                         SLALIB Version 2.5-2
+
+-----------------------------------------------------------------------
+
+FILES IN THE ORIGINAL SOURCE DIRECTORY (UNIX)
+
+   read.me           this file
+   *.f               Fortran source (separate modules)
+   *.vax             Fortran source for VAX/VMS
+   *.cnvx            Fortran source for Convex
+   *.mips            Fortran source for DECstation
+   *.sun4            Fortran source for Sun SPARCstation
+   *.lnx             Fortran source for Linux
+   *.pcm             Microsoft Fortran source for PC
+   *.c               C functions needed for Linux version
+   sla.news          NEWS item for latest release
+   make_file         Unix make file
+   mk                C-shell script to run make
+   sun67.tex         document
+
+-----------------------------------------------------------------------
+
+    Copyright (C) 1995-2005 Rutherford Appleton Laboratory
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+-----------------------------------------------------------------------
+
+PORTING FORTRAN SLALIB TO OTHER SYSTEMS
+
+FORTRAN SLALIB runs on VAX (VMS), PC (Linux+f2c), PC (Microsoft FORTRAN),
+Convex (ConvexOS), DECstation (Ultrix), DEC Alpha (OSF-1) and Sun
+SPARCstation (SunOS and Solaris).
+
+For most platforms, the required changes are confined to these routines:
+
+    sla_GRESID
+    sla_RANDOM
+    sla_WAIT
+
+VAX, CONVEX, DECSTATION/ALPHA, SUN & PC
+
+Versions suitable for the above platforms are supplied in the
+development directory as *.vax, *,cnvx, *.mips, *.sun4, *.pcm and
+*.lnx respectively.
+
+
+-----------------------------------------------------------------------
+
+LATEST RELEASE INFORMATION
+
+The latest release of SLALIB includes the following changes (most recent
+at the end):
+
+*  In sla_RCC, the topocentric term of coefficient 1.3184D-10 sec
+   had the wrong sign.  Minus is correct.
+
+*  The IAU decided in 1991 to rename the Terrestrial Dynamical
+   Time, TDT, which is now called "Terrestrial Time" or TT.
+   Appropriate changes have been made in the SLALIB documentation.
+   The same IAU resolutions introduced the timescales TCG and TCB;
+   there are at present no SLALIB routines to handle these new
+   timescales.
+
+*  The Keck 1 Telescope has been added to sla_OBS.
+
+*  The handling of the random-number seed in the PC versions of
+   sla_RANDOM and sla_GRESID was flawed and has been improved.
+
+*  The UTC leap second at the end of June 1993 has been added to the
+   routine sla_DAT.  Existing applications which call sla_DAT or
+   sla_DTT require relinking.
+
+*  Some unnecessary code in sla_AMPQK has been removed.
+
+*  Minor reorganization of the sla_REFRO code has led to an improvement
+   in speed of about 20%, and precautions have been taken against
+   potential arithmetic errors.
+
+*  There have been small revisions to sla_FK425 and sla_FK524.  The
+   results are not significantly affected, except in the pathological
+   case of large proper motion combined with immense distance, where
+   sla_FK524 could produce erroneous radial velocity values.  The
+   latest versions are close to the algorithms published in the 1992
+   Explanatory Supplement to the Astronomical Almanac.
+
+*  The leap second at the end of June 1994 has been added to sla_DAT.
+
+*  THE SLA_RVLSR ROUTINE HAS BEEN RETIRED.  Its place has been taken
+   by two new routines: sla_RVLSRK and sla_RVLSRD.  The original
+   sla_RVLSR had used a "kinematical" LSR.  When this was later changed
+   to a "dynamical" LSR for (what seemed liked good reasons at the time),
+   the small differences were noticed by spectral-line radio observers,
+   who had to fall back on old copies of the routine to remain consistent
+   with existing practice.  The new routines provide both sorts of LSR:
+   sla_RVLSRK uses a kinematical LSR and sla_RVLSRD uses the dynamical LSR.
+
+*  The sla_PA routine (computation of parallactic angle) used an
+   unnecessarily complicated formulation, which has been simplified.
+   The results are unaffected.
+
+*  The sla_ZD routine (computation of zenith distance) used a
+   straightforward cosine-formula-based method, which suffered from
+   decreased accuracy near the zenith.  A better, vector-derived,
+   formulation has been substituted, without materially affecting
+   the results.  Because sla_ZD is double precision, the old
+   formulation was always adequate;  however, had anyone transcribed
+   the code in single precision errors approaching 1 arcmin could
+   have resulted.  The new formulation delivers good results all
+   over the sky even in a single precision version.
+
+*  Routines have been added to transform equatorial coordinates
+   (HA,Dec) to horizon coordinates (Az,El) and back.  Single and
+   double precision are both supported.  The routines are called
+   sla_E2H, sla_DE2H, sla_H2E, sla_DH2E.
+
+*  A new routine has been added to the tangent-plane projection set.
+   The single and double precision versions are called sla_TPRD and
+   sla_DTPRD respectively.  Given the RA,Dec of a star and its
+   xi,eta coordinates, the routine determines the "plate centre".
+
+*  The existing routine sla_PREC for obtaining the precession matrix
+   uses the official IAU model and should continue to be used for
+   canonical purposes.  A new version, called sla_PRECL, uses a
+   more up-to-date model which delivers better accuracy, especially
+   over intervals of millennia.
+
+*  The routine sla_PVOBS was returning velocities in AU per sidereal
+   second rather than per UT second.  This has been corrected.  The
+   maximum error was equivalent to about 0.001 km/s.
+
+*  In sla_MAPQK and sla_MAPQKZ, the area within which the gravitional
+   light-deflection term is restrained has been extended from its
+   original 300 arcsec radius to about 920 arcsec, just inside the
+   Sun's disc.
+
+*  A chapter of explanation, with examples, has been added to SUN/67,
+   which has also undergone various cosmetic revisions.
+
+*  There were two discrepancies between the documentation of sla_DCMPF
+   (program comments and SUN/67) and the code.  The first was that the
+   formulae for the nonperpendicularity used PERP instead of PERP/2;
+   the documentation has been corrected.  The other was that the
+   documentation showed the zero point corrections being applied first,
+   whereas the code returned zero point corrections corresponding to
+   being applied last.  The code has been corrected to match the
+   documentation.
+
+*  The C module slaCldj gave incorrect answers for dates during
+   January and February.  The error, which did not affect the Fortran
+   version, has been corrected.
+
+*  THE CALLS FOR sla_TPRD AND sla_DTPRD HAS BEEN CHANGED.  An integer
+   status argument has been added;  non-zero means the supplied RA,Dec
+   and Xi,Eta describe an impossible case.  (This can only happen
+   near the pole and with non-zero Xi.)  Also, a slightly neater
+   formulation has been introduced.
+
+*  Three new routines have been added.  sla_ALTAZ takes a star's HA,Dec
+   and produces position, velocity and acceleration for azimuth,
+   elevation and parallactic angle.  sla_PDA2H predicts the HA at which
+   a given azimuth will be reached.  sla_PDQ2H does the same for
+   position angle.
+
+*  In the sla_OBS routine, the wrong sign was returned for the Perkins
+   72 inch telescope at Lowell - fixed.
+
+*  A revised model for the equation of the equinoxes has been
+   installed in sla_EQEQX, in line with recent IAU resolutions.  The
+   change amounts to less than 3 mas.
+
+*  A bug in sla_DFLTIN has been corrected.  A negative number following
+   an E- or D-format number without intervening spaces lost its sign.
+
+*  Four stations have been added to sla_OBS:
+
+     TAUTENBERG  Tautenberg 1.34 metre Schmidt
+     PALOMAR48   Palomar 48-inch Schmidt
+     UKST        UK 1.2 metre Schmidt, Siding Spring
+     KISO        Kiso 1.05 metre Schmidt, Japan
+     ESOSCHMIDT  ESO 1 metre Schmidt, La Silla
+
+*  The sla_EARTH and sla_MOON routines could give an integer divide by zero
+   for years before 1 BC.  This has been corrected.
+
+*  sla_CALYD (provided to support the sla_EARTH and sla_MOON routines)
+   has been upgraded to work outside the interval 1900 March 1 to
+   2100 February 28.  The status value indicating dates outside that
+   range has been dropped;  a new error value for year before -4711
+   has been introduced.
+
+*  A new routine, sla_CLYD, has been added.  It is a version of sla_CALYD
+   without the century-default feature and is to enable 1st-century
+   dates to be supplied to sla_EARTH and sla_MOON.
+
+*  Two new routines, sla_PLANET and sla_RDPLAN, have been added, which
+   compute approximate planetary ephemerides.
+
+*  A new routine, sla_DMOON, implements the same (Meeus) model as the
+   sla_MOON routine, but in full and in double precision.  The time
+   argument is a straightforward MJD rather than sla_MOON's year and
+   day-in-year.
+
+*  The sla_REFRO code has been speeded up by a factor of two (and is
+   also clearer).
+
+*  sla_REFV and sla_REFZ have, in different ways, been made more accurate
+   for cases close to the horizon.  The improvement to sla_REFV is
+   relatively modest, but sla_REFZ is now capable of delivering useful
+   results for rise/set phenomena.
+
+*  sla_AOPQK has been speeded up for low-elevation cases.
+
+*  Versions of the tangent-plane routines working directly in x,y,z
+   instead of spherical coordinates have been added.  They may be
+   faster in some applications.  The routines are sla_DV2TP, sla_V2TP,
+   sla_DTP2V, sla_TP2V, sla_DTPXYZ, sla_TPXYZ.
+
+*  The coordinates of the Australia Telescope Compact Array have been
+   added to sla_OBS.  The name is 'ATCA'.
+
+*  Despite their recent introduction THE ROUTINES sla_DTPRD, sla_DTPXYZ,
+   sla_TPRD AND sla_TPXYZ HAVE BEEN WITHDRAWN.  They have been replaced
+   by the new routines sla_DTPS2C, sla_DTPV2C, sla_TPS2C and sla_TPV2C.
+   These are functionally equivalent to the earlier routines but return
+   two solutions instead of one:  the second solution can arise near a
+   pole.
+
+*  The UTC leap second at the end of 1995 has been added to sla_DAT.
+
+*  The refraction routine sla_REFRO has been extensively revised.  The
+   principal motivation was to improve the radio predictions by
+   introducing better humidity models.  The models previously in
+   use had been entirely adequate for the optical case, for which
+   they had been devised, but improved models were required for
+   the radio case.  None of the changes significantly affects the
+   optical results with respect to the earlier version of the sla_REFRO
+   routine.  For example, at 70 deg zenith distance the new version
+   agrees with the old version to better than 0.05 arcsec for any
+   reasonable combination of parameters.  However, the improved
+   water-vapour expressions do make a significant difference in the
+   radio band, at 70 deg zenith distance reaching almost 4 arcsec
+   for a hot, humid, low-altitude site during a period of low pressure.
+
+*  There was a bug in slaRdplan, the (private) C version of sla_RDPLAN.
+   The answers were unaffected but there could be floating-point
+   problems on some platforms.
+
+*  A new routine has been added, sla_GMSTA.  This gives greater numerical
+   precision than the existing GMST function by allowing the date and
+   time to be specified separately rather than as a single MJD.
+
+*  Measures taken in sla_MAPQK to avoid trouble when processing Solar
+   positions had not been carried through into sla_MAPQKZ.  The two
+   routines now use the same strategy.
+
+*  In sla_REFRO, at zenith distances well beyond 90 deg and under some
+   conditions, it was possible to encounter arithmetic errors due to
+   failure of the tropospheric model-atmosphere to deliver sensible
+   temperatures.  This is inherent in the published algorithm.  To
+   avoid the problem, the temperature delivered by the model has been
+   constrained to the range 200 to 320 deg K.
+
+*  A new routine has been added, sla_ATMDSP, for rapidly recalculating
+   the A,B refraction coefficients for different wavelengths.
+
+*  The first UTC leap-second date in the sla_DAT routine was one day early.
+   This will have had no effect on the results for more recent epochs.
+
+*  slaObs, the C version of sla_OBS, had some problems related to character
+   string handling.  A call using the "number" option retured an invalid
+   station ID, and station ID and name strings of the stipulated 10
+   and 40 character lengths were improperly terminated.
+
+*  A new routine, sla_POLMO has been added.  This is a specialist tool
+   to do with Earth polar motion.
+
+*  sla_DC62S and sla_CC62S could give floating point errors if vectors in
+   unlikely units were supplied.  The handling of difficult cases  has
+   been improved.
+
+*  Support for Linux has been added.
+
+*  slaRefreo, the C version of sla_REFRO, was not re-entrant.  It is now;
+   there has been a small (4%) speed penalty.
+
+*  The C routines slaRandom, slaGresid and slaWait have been dropped.
+   They could not easily be made re-entrant and posed perennial platform-
+   dependency problems.
+
+*  The value for the arcsec to radians factor in several routines
+   had an incorrect (and superfluous) 19th digit, which has been
+   removed.
+
+*  There was a minor bug in sla_DV2TP and sla_V2TP, to do with protection
+   against the special case where the tangent point is the pole.
+
+*  In sla_OBS, the position of the Parkes radiotelescope has been revised,
+   and the ATNF Mopra observatory has been added.
+
+*  Two new routines have been added.  sla_PAV (single precision) and
+   sla_DPAV (double precision) are like sla_BEAR and sla_DBEAR but start
+   with direction cosines rather than spherical coordinates - they return
+   the position angle of one point with respect to the other.
+
+*  slaRefro, the C version of sla_REFRO, still wasn't re-entrant, but is
+   now.
+
+*  slaDtf2d, the C version of sla_DTF2D, used to accept 60.0 in the seconds
+   field;  this has been corrected.
+
+*  The sla_PLANET and sla_RDPLAN routines now include Pluto.  The ephemeris
+   is accurate (sub-arcsecond) but covers the 20th and 21st centuries
+   only.
+
+   !!!  IMPORTANT NOTE  !!!
+
+   sla_RDPLAN used to interpret any planet number outside the range 1-8
+   as meaning the Sun.  The new version uses planet number 9.  Existing
+   programs using 9 for the Sun should be changed to use 0.  The rule
+   has not been changed, except that the range is now 1-9 instead of
+   1-8, as it is unlikely that the equivalent problem will arise in the
+   future.
+
+*  Two new routines have been added, sla_PLANEL and sla_PLANTE.  They are
+   analogues of sla_PLANET and sla_RDPLAN but for the case where orbital
+   elements are available.  They can be used for predicting the
+   positions of asteroids and comets, and, if up-to-date osculating
+   elements are supplied, more accurate positions for the major
+   planets than can be provided through the sla_PLANET and sla_RDPLAN
+   routines.
+
+*  The sla_REFRO routine could give inaccurate results for low temperatures
+   (subzero C).  This was caused by over-cautious defensive programming,
+   which prevented the tropospheric temperature falling below 200 K.
+
+*  A new routine has been added, sla_REFCOQ.  This calculates the coefficients
+   of a two-term refraction model.  It complements the existing sla_REFCO
+   routine, being much faster at the expense of some accuracy.
+
+*  The 1997 July 1 UTC leap second has been added to the sla_DAT routine.
+
+*  A bug in slaSvd, the C version of sla_SVD, caused occasional false
+   indications of ill-conditioning.  The results of least-squares
+   fits do not seem to have been affected.  The Fortran version did not
+   have the bug.
+
+*  The Subaru telescope (Japanese National 8-metre telescope, Mauna Kea)
+   has been added to the sla_OBS routine.
+
+*  The sla_DAT routine has been extended back to the inception of UTC in
+   1960.
+
+*  The "earliest date possible" in DJCL sla_was two days out (disagreeing
+   with sla_DJCAL, which had the correct value).
+
+*  The sla_GMSTA code has been improved.
+
+*  A new routine, sla_PV2EL, takes a heliocentric J2000 equatorial position
+   and velocity and produces the equivalent set of osculating elements.
+
+*  The 1999 January 1 UTC leap second has been added to the sla_DAT routine.
+
+*  Four new routines have been introduced which transform between the
+   FK5 system and the ICRS (Hipparcos) system.  sla_FK52H and sla_H2FK5
+   transform star positions and proper motions from FK5 coordinates to
+   Hipparcos coordinates and vice versa.  sla_FK5HZ and sla_HFK5Z do the
+   same but for the case where the Hipparcos proper motions are zero.
+
+*  Six new routines have been introduced for dealing with orbital elements.
+   Four of them (sla_EL2UE, sla_PV2UE, sla_UE2EL and sla_UE2PV) provide
+   applications with direct access to the "universal variables" method
+   that was already being used internally.  Compared with using conventional
+   (angular) elements and solving Kepler's equation, the universal variables
+   approach has a number of advantages, including better handling of near-
+   parabolic orbits and greater efficiency.  The remaining two routines
+   (sla_PERTEL and sla_PERTUE) generate updated elements by applying
+   major-planet perturbations.  The new elements can then be used to
+   predict positions that are much more accurate.  For minor planets,
+   sub-arcsecond accuracy over a decade is achievable.
+
+*  Several observatory sites have been added to the OBS routine:  CFHT,
+   Keck 2, Gemini North, FCRAO, IRTF and CSO.  The coordinates for all
+   the Mauna Kea sites have been updated in accordance with recent aerial
+   photography results made available by the Institute for Astronomy,
+   University of Hawaii.
+
+*  A bug in sla_DAT has been corrected.  It used to give incorrect
+   results for dates in the first 54 days of 1972.
+
+*  There are new routines for generating permutations (sla_PERMUT) and
+   combinations (sla_COMBN).
+ 
+*  There was a bug in sla_PM for star data using Julian epochs (i.e. all
+   modern data).  The treatment of radial velocity was correct for
+   Besselian epochs but wrong for Julian epochs.  This had only a tiny
+   effect on a handful of nearby stars.  The new version assumes Julian
+   epochs when interpreting the radial velocity.  If the data are old-
+   style, using Besselian epochs, you have to scale the radial velocity
+   by 365.2422/365.25 first.
+
+*  There was a bug in sla_RCC which meant the diurnal terms were being
+   calculated incorrectly, leading to errors of up to about 4 microsec.
+
+*  Two new routines have been added, sla_DSEPV and sla_SEPV.  These are
+   analogues of the existing routines sla_DSEP and sla_SEP, but accept
+   [x,y,z] vectors instead of spherical coordinates.
+
+*  The sla_UNPCD routine used to be approximate but now is rigorous.
+
+*  The four VLTs and Gemini South have been added to sla_OBS.
+
+*  An additional Earth position/velocity routine, sla_EPV, has been
+   added.  It is bigger and slower than sla_EVP but much more accurate.
+   Position accuracy is a few km;  velocity accuracy is a few mm/s.
+   The sla_PERTUE and sla_PLANTU routines now call this routine in
+   order to deliver better predictions for near-Earth objects.
+
+*  There was a bug in sla_DSEPV.  For the unique case of two precisely
+   antipodal vectors zero was returned instead of pi.
+
+-----------------------------------------------------------------------
+
+
+ P.T.Wallace
+
+ ptw@star.rl.ac.uk
+ +44-1235-44-5372
diff --git a/refco.f b/refco.f
new file mode 100644
index 0000000000000000000000000000000000000000..c6cb37f1ee0997505115f1ce3549d062c1c00938
--- /dev/null
+++ b/refco.f
@@ -0,0 +1,87 @@
+      SUBROUTINE sla_REFCO ( HM, TDK, PMB, RH, WL, PHI, TLR, EPS,
+     :                       REFA, REFB )
+*+
+*     - - - - - -
+*      R E F C O
+*     - - - - - -
+*
+*  Determine the constants A and B in the atmospheric refraction
+*  model dZ = A tan Z + B tan**3 Z.
+*
+*  Z is the "observed" zenith distance (i.e. affected by refraction)
+*  and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo)
+*  zenith distance.
+*
+*  Given:
+*    HM      d     height of the observer above sea level (metre)
+*    TDK     d     ambient temperature at the observer (K)
+*    PMB     d     pressure at the observer (millibar)
+*    RH      d     relative humidity at the observer (range 0-1)
+*    WL      d     effective wavelength of the source (micrometre)
+*    PHI     d     latitude of the observer (radian, astronomical)
+*    TLR     d     temperature lapse rate in the troposphere (K/metre)
+*    EPS     d     precision required to terminate iteration (radian)
+*
+*  Returned:
+*    REFA    d     tan Z coefficient (radian)
+*    REFB    d     tan**3 Z coefficient (radian)
+*
+*  Called:  sla_REFRO
+*
+*  Notes:
+*
+*  1  Typical values for the TLR and EPS arguments might be 0.0065D0 and
+*     1D-10 respectively.
+*
+*  2  The radio refraction is chosen by specifying WL > 100 micrometres.
+*
+*  3  The routine is a slower but more accurate alternative to the
+*     sla_REFCOQ routine.  The constants it produces give perfect
+*     agreement with sla_REFRO at zenith distances arctan(1) (45 deg)
+*     and arctan(4) (about 76 deg).  It achieves 0.5 arcsec accuracy
+*     for ZD < 80 deg, 0.01 arcsec accuracy for ZD < 60 deg, and
+*     0.001 arcsec accuracy for ZD < 45 deg.
+*
+*  P.T.Wallace   Starlink   22 May 2004
+*
+*  Copyright (C) 2004 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION HM,TDK,PMB,RH,WL,PHI,TLR,EPS,REFA,REFB
+
+      DOUBLE PRECISION ATN1,ATN4,R1,R2
+
+*  Sample zenith distances: arctan(1) and arctan(4)
+      PARAMETER (ATN1=0.7853981633974483D0,
+     :           ATN4=1.325817663668033D0)
+
+
+
+*  Determine refraction for the two sample zenith distances
+      CALL sla_REFRO(ATN1,HM,TDK,PMB,RH,WL,PHI,TLR,EPS,R1)
+      CALL sla_REFRO(ATN4,HM,TDK,PMB,RH,WL,PHI,TLR,EPS,R2)
+
+*  Solve for refraction constants
+      REFA = (64D0*R1-R2)/60D0
+      REFB = (R2-4D0*R1)/60D0
+
+      END
diff --git a/refcoq.f b/refcoq.f
new file mode 100644
index 0000000000000000000000000000000000000000..9e615fcfa232df0ee25da86000a5dbd678b20c00
--- /dev/null
+++ b/refcoq.f
@@ -0,0 +1,226 @@
+      SUBROUTINE sla_REFCOQ ( TDK, PMB, RH, WL, REFA, REFB )
+*+
+*     - - - - - - -
+*      R E F C O Q
+*     - - - - - - -
+*
+*  Determine the constants A and B in the atmospheric refraction
+*  model dZ = A tan Z + B tan**3 Z.  This is a fast alternative
+*  to the sla_REFCO routine - see notes.
+*
+*  Z is the "observed" zenith distance (i.e. affected by refraction)
+*  and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo)
+*  zenith distance.
+*
+*  Given:
+*    TDK      d      ambient temperature at the observer (K)
+*    PMB      d      pressure at the observer (millibar)
+*    RH       d      relative humidity at the observer (range 0-1)
+*    WL       d      effective wavelength of the source (micrometre)
+*
+*  Returned:
+*    REFA     d      tan Z coefficient (radian)
+*    REFB     d      tan**3 Z coefficient (radian)
+*
+*  The radio refraction is chosen by specifying WL > 100 micrometres.
+*
+*  Notes:
+*
+*  1  The model is an approximation, for moderate zenith distances,
+*     to the predictions of the sla_REFRO routine.  The approximation
+*     is maintained across a range of conditions, and applies to
+*     both optical/IR and radio.
+*
+*  2  The algorithm is a fast alternative to the sla_REFCO routine.
+*     The latter calls the sla_REFRO routine itself:  this involves
+*     integrations through a model atmosphere, and is costly in
+*     processor time.  However, the model which is produced is precisely
+*     correct for two zenith distance (45 degrees and about 76 degrees)
+*     and at other zenith distances is limited in accuracy only by the
+*     A tan Z + B tan**3 Z formulation itself.  The present routine
+*     is not as accurate, though it satisfies most practical
+*     requirements.
+*
+*  3  The model omits the effects of (i) height above sea level (apart
+*     from the reduced pressure itself), (ii) latitude (i.e. the
+*     flattening of the Earth) and (iii) variations in tropospheric
+*     lapse rate.
+*
+*     The model was tested using the following range of conditions:
+*
+*       lapse rates 0.0055, 0.0065, 0.0075 K/metre
+*       latitudes 0, 25, 50, 75 degrees
+*       heights 0, 2500, 5000 metres ASL
+*       pressures mean for height -10% to +5% in steps of 5%
+*       temperatures -10 deg to +20 deg with respect to 280 deg at SL
+*       relative humidity 0, 0.5, 1
+*       wavelengths 0.4, 0.6, ... 2 micron, + radio
+*       zenith distances 15, 45, 75 degrees
+*
+*     The accuracy with respect to direct use of the sla_REFRO routine
+*     was as follows:
+*
+*                            worst         RMS
+*
+*       optical/IR           62 mas       8 mas
+*       radio               319 mas      49 mas
+*
+*     For this particular set of conditions:
+*
+*       lapse rate 0.0065 K/metre
+*       latitude 50 degrees
+*       sea level
+*       pressure 1005 mb
+*       temperature 280.15 K
+*       humidity 80%
+*       wavelength 5740 Angstroms
+*
+*     the results were as follows:
+*
+*       ZD        sla_REFRO   sla_REFCOQ  Saastamoinen
+*
+*       10         10.27        10.27        10.27
+*       20         21.19        21.20        21.19
+*       30         33.61        33.61        33.60
+*       40         48.82        48.83        48.81
+*       45         58.16        58.18        58.16
+*       50         69.28        69.30        69.27
+*       55         82.97        82.99        82.95
+*       60        100.51       100.54       100.50
+*       65        124.23       124.26       124.20
+*       70        158.63       158.68       158.61
+*       72        177.32       177.37       177.31
+*       74        200.35       200.38       200.32
+*       76        229.45       229.43       229.42
+*       78        267.44       267.29       267.41
+*       80        319.13       318.55       319.10
+*
+*      deg        arcsec       arcsec       arcsec
+*
+*     The values for Saastamoinen's formula (which includes terms
+*     up to tan^5) are taken from Hohenkerk and Sinclair (1985).
+*
+*     The results from the much slower but more accurate sla_REFCO
+*     routine have not been included in the tabulation as they are
+*     identical to those in the sla_REFRO column to the 0.01 arcsec
+*     resolution used.
+*
+*  4  Outlandish input parameters are silently limited to mathematically
+*     safe values.  Zero pressure is permissible, and causes zeroes to
+*     be returned.
+*
+*  5  The algorithm draws on several sources, as follows:
+*
+*     a) The formula for the saturation vapour pressure of water as
+*        a function of temperature and temperature is taken from
+*        expressions A4.5-A4.7 of Gill (1982).
+*
+*     b) The formula for the water vapour pressure, given the
+*        saturation pressure and the relative humidity, is from
+*        Crane (1976), expression 2.5.5.
+*
+*     c) The refractivity of air is a function of temperature,
+*        total pressure, water-vapour pressure and, in the case
+*        of optical/IR but not radio, wavelength.  The formulae
+*        for the two cases are developed from Hohenkerk & Sinclair
+*        (1985) and Rueger (2002).
+*
+*     The above three items are as used in the sla_REFRO routine.
+*
+*     d) The formula for beta, the ratio of the scale height of the
+*        atmosphere to the geocentric distance of the observer, is
+*        an adaption of expression 9 from Stone (1996).  The
+*        adaptations, arrived at empirically, consist of (i) a
+*        small adjustment to the coefficient and (ii) a humidity
+*        term for the radio case only.
+*
+*     e) The formulae for the refraction constants as a function of
+*        n-1 and beta are from Green (1987), expression 4.31.
+*
+*  References:
+*
+*     Crane, R.K., Meeks, M.L. (ed), "Refraction Effects in the Neutral
+*     Atmosphere", Methods of Experimental Physics: Astrophysics 12B,
+*     Academic Press, 1976.
+*
+*     Gill, Adrian E., "Atmosphere-Ocean Dynamics", Academic Press, 1982.
+*
+*     Green, R.M., "Spherical Astronomy", Cambridge University Press, 1987.
+*
+*     Hohenkerk, C.Y., & Sinclair, A.T., NAO Technical Note No. 63, 1985.
+*
+*     Rueger, J.M., "Refractive Index Formulae for Electronic Distance
+*     Measurement with Radio and Millimetre Waves", in Unisurv Report
+*     S-68, School of Surveying and Spatial Information Systems,
+*     University of New South Wales, Sydney, Australia, 2002.
+*
+*     Stone, Ronald C., P.A.S.P. 108 1051-1058, 1996.
+*
+*  Last revision:   2 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION TDK,PMB,RH,WL,REFA,REFB
+
+      LOGICAL OPTIC
+      DOUBLE PRECISION T,P,R,W,TDC,PS,PW,WLSQ,GAMMA,BETA
+
+
+
+*  Decide whether optical/IR or radio case:  switch at 100 microns.
+      OPTIC = WL.LE.100D0
+
+*  Restrict parameters to safe values.
+      T = MIN(MAX(TDK,100D0),500D0)
+      P = MIN(MAX(PMB,0D0),10000D0)
+      R = MIN(MAX(RH,0D0),1D0)
+      W = MIN(MAX(WL,0.1D0),1D6)
+
+*  Water vapour pressure at the observer.
+      IF (P.GT.0D0) THEN
+         TDC = T-273.15D0
+         PS = 10D0**((0.7859D0+0.03477D0*TDC)/(1D0+0.00412D0*TDC))*
+     :                                    (1D0+P*(4.5D-6+6D-10*TDC*TDC))
+         PW = R*PS/(1D0-(1D0-R)*PS/P)
+      ELSE
+         PW = 0D0
+      END IF
+
+*  Refractive index minus 1 at the observer.
+      IF (OPTIC) THEN
+         WLSQ = W*W
+         GAMMA = ((77.53484D-6+(4.39108D-7+3.666D-9/WLSQ)/WLSQ)*P
+     :                                                 -11.2684D-6*PW)/T
+      ELSE
+         GAMMA = (77.6890D-6*P-(6.3938D-6-0.375463D0/T)*PW)/T
+      END IF
+
+*  Formula for beta adapted from Stone, with empirical adjustments.
+      BETA=4.4474D-6*T
+      IF (.NOT.OPTIC) BETA=BETA-0.0074D0*PW*BETA
+
+*  Refraction constants from Green.
+      REFA = GAMMA*(1D0-BETA)
+      REFB = -GAMMA*(BETA-GAMMA/2D0)
+
+      END
diff --git a/refro.f b/refro.f
new file mode 100644
index 0000000000000000000000000000000000000000..fc9f35d5a0c83970aa106092e7d4e1e21c0f995b
--- /dev/null
+++ b/refro.f
@@ -0,0 +1,401 @@
+      SUBROUTINE sla_REFRO ( ZOBS, HM, TDK, PMB, RH, WL, PHI, TLR,
+     :                       EPS, REF )
+*+
+*     - - - - - -
+*      R E F R O
+*     - - - - - -
+*
+*  Atmospheric refraction for radio and optical/IR wavelengths.
+*
+*  Given:
+*    ZOBS    d  observed zenith distance of the source (radian)
+*    HM      d  height of the observer above sea level (metre)
+*    TDK     d  ambient temperature at the observer (K)
+*    PMB     d  pressure at the observer (millibar)
+*    RH      d  relative humidity at the observer (range 0-1)
+*    WL      d  effective wavelength of the source (micrometre)
+*    PHI     d  latitude of the observer (radian, astronomical)
+*    TLR     d  temperature lapse rate in the troposphere (K/metre)
+*    EPS     d  precision required to terminate iteration (radian)
+*
+*  Returned:
+*    REF     d  refraction: in vacuo ZD minus observed ZD (radian)
+*
+*  Notes:
+*
+*  1  A suggested value for the TLR argument is 0.0065D0.  The
+*     refraction is significantly affected by TLR, and if studies
+*     of the local atmosphere have been carried out a better TLR
+*     value may be available.  The sign of the supplied TLR value
+*     is ignored.
+*
+*  2  A suggested value for the EPS argument is 1D-8.  The result is
+*     usually at least two orders of magnitude more computationally
+*     precise than the supplied EPS value.
+*
+*  3  The routine computes the refraction for zenith distances up
+*     to and a little beyond 90 deg using the method of Hohenkerk
+*     and Sinclair (NAO Technical Notes 59 and 63, subsequently adopted
+*     in the Explanatory Supplement, 1992 edition - see section 3.281).
+*
+*  4  The code is a development of the optical/IR refraction subroutine
+*     AREF of C.Hohenkerk (HMNAO, September 1984), with extensions to
+*     support the radio case.  Apart from merely cosmetic changes, the
+*     following modifications to the original HMNAO optical/IR refraction
+*     code have been made:
+*
+*     .  The angle arguments have been changed to radians.
+*
+*     .  Any value of ZOBS is allowed (see note 6, below).
+*
+*     .  Other argument values have been limited to safe values.
+*
+*     .  Murray's values for the gas constants have been used
+*        (Vectorial Astrometry, Adam Hilger, 1983).
+*
+*     .  The numerical integration phase has been rearranged for
+*        extra clarity.
+*
+*     .  A better model for Ps(T) has been adopted (taken from
+*        Gill, Atmosphere-Ocean Dynamics, Academic Press, 1982).
+*
+*     .  More accurate expressions for Pwo have been adopted
+*        (again from Gill 1982).
+*
+*     .  The formula for the water vapour pressure, given the
+*        saturation pressure and the relative humidity, is from
+*        Crane (1976), expression 2.5.5.
+*
+*     .  Provision for radio wavelengths has been added using
+*        expressions devised by A.T.Sinclair, RGO (private
+*        communication 1989).  The refractivity model currently
+*        used is from J.M.Rueger, "Refractive Index Formulae for
+*        Electronic Distance Measurement with Radio and Millimetre
+*        Waves", in Unisurv Report S-68 (2002), School of Surveying
+*        and Spatial Information Systems, University of New South
+*        Wales, Sydney, Australia.
+*
+*     .  The optical refractivity for dry air is from Resolution 3 of
+*        the International Association of Geodesy adopted at the XXIIth
+*        General Assembly in Birmingham, UK, 1999.
+*
+*     .  Various small changes have been made to gain speed.
+*
+*  5  The radio refraction is chosen by specifying WL > 100 micrometres.
+*     Because the algorithm takes no account of the ionosphere, the
+*     accuracy deteriorates at low frequencies, below about 30 MHz.
+*
+*  6  Before use, the value of ZOBS is expressed in the range +/- pi.
+*     If this ranged ZOBS is -ve, the result REF is computed from its
+*     absolute value before being made -ve to match.  In addition, if
+*     it has an absolute value greater than 93 deg, a fixed REF value
+*     equal to the result for ZOBS = 93 deg is returned, appropriately
+*     signed.
+*
+*  7  As in the original Hohenkerk and Sinclair algorithm, fixed values
+*     of the water vapour polytrope exponent, the height of the
+*     tropopause, and the height at which refraction is negligible are
+*     used.
+*
+*  8  The radio refraction has been tested against work done by
+*     Iain Coulson, JACH, (private communication 1995) for the
+*     James Clerk Maxwell Telescope, Mauna Kea.  For typical conditions,
+*     agreement at the 0.1 arcsec level is achieved for moderate ZD,
+*     worsening to perhaps 0.5-1.0 arcsec at ZD 80 deg.  At hot and
+*     humid sea-level sites the accuracy will not be as good.
+*
+*  9  It should be noted that the relative humidity RH is formally
+*     defined in terms of "mixing ratio" rather than pressures or
+*     densities as is often stated.  It is the mass of water per unit
+*     mass of dry air divided by that for saturated air at the same
+*     temperature and pressure (see Gill 1982).
+*
+*  10 The algorithm is designed for observers in the troposphere.  The
+*     supplied temperature, pressure and lapse rate are assumed to be
+*     for a point in the troposphere and are used to define a model
+*     atmosphere with the tropopause at 11km altitude and a constant
+*     temperature above that.  However, in practice, the refraction
+*     values returned for stratospheric observers, at altitudes up to
+*     25km, are quite usable.
+*
+*  Called:  sla_DRANGE, sla__ATMT, sla__ATMS
+*
+*  Last revision:   5 December 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION ZOBS,HM,TDK,PMB,RH,WL,PHI,TLR,EPS,REF
+
+*
+*  Fixed parameters
+*
+      DOUBLE PRECISION D93,GCR,DMD,DMW,S,DELTA,HT,HS
+      INTEGER ISMAX
+*  93 degrees in radians
+      PARAMETER (D93=1.623156204D0)
+*  Universal gas constant
+      PARAMETER (GCR=8314.32D0)
+*  Molecular weight of dry air
+      PARAMETER (DMD=28.9644D0)
+*  Molecular weight of water vapour
+      PARAMETER (DMW=18.0152D0)
+*  Mean Earth radius (metre)
+      PARAMETER (S=6378120D0)
+*  Exponent of temperature dependence of water vapour pressure
+      PARAMETER (DELTA=18.36D0)
+*  Height of tropopause (metre)
+      PARAMETER (HT=11000D0)
+*  Upper limit for refractive effects (metre)
+      PARAMETER (HS=80000D0)
+*  Numerical integration: maximum number of strips.
+      PARAMETER (ISMAX=16384)
+
+      INTEGER IS,K,N,I,J
+      LOGICAL OPTIC,LOOP
+      DOUBLE PRECISION ZOBS1,ZOBS2,HMOK,TDKOK,PMBOK,RHOK,WLOK,ALPHA,
+     :                 TOL,WLSQ,GB,A,GAMAL,GAMMA,GAMM2,DELM2,
+     :                 TDC,PSAT,PWO,W,
+     :                 C1,C2,C3,C4,C5,C6,R0,TEMPO,DN0,RDNDR0,SK0,F0,
+     :                 RT,TT,DNT,RDNDRT,SINE,ZT,FT,DNTS,RDNDRP,ZTS,FTS,
+     :                 RS,DNS,RDNDRS,ZS,FS,REFOLD,Z0,ZRANGE,FB,FF,FO,FE,
+     :                 H,R,SZ,RG,DR,TG,DN,RDNDR,T,F,REFP,REFT
+
+      DOUBLE PRECISION sla_DRANGE
+
+*  The refraction integrand
+      DOUBLE PRECISION REFI
+      REFI(DN,RDNDR) = RDNDR/(DN+RDNDR)
+
+
+
+*  Transform ZOBS into the normal range.
+      ZOBS1 = sla_DRANGE(ZOBS)
+      ZOBS2 = MIN(ABS(ZOBS1),D93)
+
+*  Keep other arguments within safe bounds.
+      HMOK = MIN(MAX(HM,-1D3),HS)
+      TDKOK = MIN(MAX(TDK,100D0),500D0)
+      PMBOK = MIN(MAX(PMB,0D0),10000D0)
+      RHOK = MIN(MAX(RH,0D0),1D0)
+      WLOK = MAX(WL,0.1D0)
+      ALPHA = MIN(MAX(ABS(TLR),0.001D0),0.01D0)
+
+*  Tolerance for iteration.
+      TOL = MIN(MAX(ABS(EPS),1D-12),0.1D0)/2D0
+
+*  Decide whether optical/IR or radio case - switch at 100 microns.
+      OPTIC = WLOK.LE.100D0
+
+*  Set up model atmosphere parameters defined at the observer.
+      WLSQ = WLOK*WLOK
+      GB = 9.784D0*(1D0-0.0026D0*COS(PHI+PHI)-0.00000028D0*HMOK)
+      IF (OPTIC) THEN
+         A = (287.6155D0+(1.62887D0+0.01360D0/WLSQ)/WLSQ)
+     :                                              *273.15D-6/1013.25D0
+      ELSE
+         A = 77.6890D-6
+      END IF
+      GAMAL = (GB*DMD)/GCR
+      GAMMA = GAMAL/ALPHA
+      GAMM2 = GAMMA-2D0
+      DELM2 = DELTA-2D0
+      TDC = TDKOK-273.15D0
+      PSAT = 10D0**((0.7859D0+0.03477D0*TDC)/(1D0+0.00412D0*TDC))*
+     :                                (1D0+PMBOK*(4.5D-6+6D-10*TDC*TDC))
+      IF (PMBOK.GT.0D0) THEN
+         PWO = RHOK*PSAT/(1D0-(1D0-RHOK)*PSAT/PMBOK)
+      ELSE
+         PWO = 0D0
+      END IF
+      W = PWO*(1D0-DMW/DMD)*GAMMA/(DELTA-GAMMA)
+      C1 = A*(PMBOK+W)/TDKOK
+      IF (OPTIC) THEN
+         C2 = (A*W+11.2684D-6*PWO)/TDKOK
+      ELSE
+         C2 = (A*W+6.3938D-6*PWO)/TDKOK
+      END IF
+      C3 = (GAMMA-1D0)*ALPHA*C1/TDKOK
+      C4 = (DELTA-1D0)*ALPHA*C2/TDKOK
+      IF (OPTIC) THEN
+         C5 = 0D0
+         C6 = 0D0
+      ELSE
+         C5 = 375463D-6*PWO/TDKOK
+         C6 = C5*DELM2*ALPHA/(TDKOK*TDKOK)
+      END IF
+
+*  Conditions at the observer.
+      R0 = S+HMOK
+      CALL sla__ATMT(R0,TDKOK,ALPHA,GAMM2,DELM2,C1,C2,C3,C4,C5,C6,
+     :                                              R0,TEMPO,DN0,RDNDR0)
+      SK0 = DN0*R0*SIN(ZOBS2)
+      F0 = REFI(DN0,RDNDR0)
+
+*  Conditions in the troposphere at the tropopause.
+      RT = S+MAX(HT,HMOK)
+      CALL sla__ATMT(R0,TDKOK,ALPHA,GAMM2,DELM2,C1,C2,C3,C4,C5,C6,
+     :                                                 RT,TT,DNT,RDNDRT)
+      SINE = SK0/(RT*DNT)
+      ZT = ATAN2(SINE,SQRT(MAX(1D0-SINE*SINE,0D0)))
+      FT = REFI(DNT,RDNDRT)
+
+*  Conditions in the stratosphere at the tropopause.
+      CALL sla__ATMS(RT,TT,DNT,GAMAL,RT,DNTS,RDNDRP)
+      SINE = SK0/(RT*DNTS)
+      ZTS = ATAN2(SINE,SQRT(MAX(1D0-SINE*SINE,0D0)))
+      FTS = REFI(DNTS,RDNDRP)
+
+*  Conditions at the stratosphere limit.
+      RS = S+HS
+      CALL sla__ATMS(RT,TT,DNT,GAMAL,RS,DNS,RDNDRS)
+      SINE = SK0/(RS*DNS)
+      ZS = ATAN2(SINE,SQRT(MAX(1D0-SINE*SINE,0D0)))
+      FS = REFI(DNS,RDNDRS)
+
+*  Variable initialization to avoid compiler warning.
+      REFT = 0D0
+
+*  Integrate the refraction integral in two parts;  first in the
+*  troposphere (K=1), then in the stratosphere (K=2).
+
+      DO K = 1,2
+
+*     Initialize previous refraction to ensure at least two iterations.
+         REFOLD = 1D0
+
+*     Start off with 8 strips.
+         IS = 8
+
+*     Start Z, Z range, and start and end values.
+         IF (K.EQ.1) THEN
+            Z0 = ZOBS2
+            ZRANGE = ZT-Z0
+            FB = F0
+            FF = FT
+         ELSE
+            Z0 = ZTS
+            ZRANGE = ZS-Z0
+            FB = FTS
+            FF = FS
+         END IF
+
+*     Sums of odd and even values.
+         FO = 0D0
+         FE = 0D0
+
+*     First time through the loop we have to do every point.
+         N = 1
+
+*     Start of iteration loop (terminates at specified precision).
+         LOOP = .TRUE.
+         DO WHILE (LOOP)
+
+*        Strip width.
+            H = ZRANGE/DBLE(IS)
+
+*        Initialize distance from Earth centre for quadrature pass.
+            IF (K.EQ.1) THEN
+               R = R0
+            ELSE
+               R = RT
+            END IF
+
+*        One pass (no need to compute evens after first time).
+            DO I=1,IS-1,N
+
+*           Sine of observed zenith distance.
+               SZ = SIN(Z0+H*DBLE(I))
+
+*           Find R (to the nearest metre, maximum four iterations).
+               IF (SZ.GT.1D-20) THEN
+                  W = SK0/SZ
+                  RG = R
+                  DR = 1D6
+                  J = 0
+                  DO WHILE (ABS(DR).GT.1D0.AND.J.LT.4)
+                     J=J+1
+                     IF (K.EQ.1) THEN
+                        CALL sla__ATMT(R0,TDKOK,ALPHA,GAMM2,DELM2,
+     :                                 C1,C2,C3,C4,C5,C6,RG,TG,DN,RDNDR)
+                     ELSE
+                        CALL sla__ATMS(RT,TT,DNT,GAMAL,RG,DN,RDNDR)
+                     END IF
+                     DR = (RG*DN-W)/(DN+RDNDR)
+                     RG = RG-DR
+                  END DO
+                  R = RG
+               END IF
+
+*           Find the refractive index and integrand at R.
+               IF (K.EQ.1) THEN
+                  CALL sla__ATMT(R0,TDKOK,ALPHA,GAMM2,DELM2,
+     :                                   C1,C2,C3,C4,C5,C6,R,T,DN,RDNDR)
+               ELSE
+                  CALL sla__ATMS(RT,TT,DNT,GAMAL,R,DN,RDNDR)
+               END IF
+               F = REFI(DN,RDNDR)
+
+*           Accumulate odd and (first time only) even values.
+               IF (N.EQ.1.AND.MOD(I,2).EQ.0) THEN
+                  FE = FE+F
+               ELSE
+                  FO = FO+F
+               END IF
+            END DO
+
+*        Evaluate the integrand using Simpson's Rule.
+            REFP = H*(FB+4D0*FO+2D0*FE+FF)/3D0
+
+*        Has the required precision been achieved (or can't be)?
+            IF (ABS(REFP-REFOLD).GT.TOL.AND.IS.LT.ISMAX) THEN
+
+*           No: prepare for next iteration.
+
+*           Save current value for convergence test.
+               REFOLD = REFP
+
+*           Double the number of strips.
+               IS = IS+IS
+
+*           Sum of all current values = sum of next pass's even values.
+               FE = FE+FO
+
+*           Prepare for new odd values.
+               FO = 0D0
+
+*           Skip even values next time.
+               N = 2
+            ELSE
+
+*           Yes: save troposphere component and terminate the loop.
+               IF (K.EQ.1) REFT = REFP
+               LOOP = .FALSE.
+            END IF
+         END DO
+      END DO
+
+*  Result.
+      REF = REFT+REFP
+      IF (ZOBS1.LT.0D0) REF = -REF
+
+      END
diff --git a/refv.f b/refv.f
new file mode 100644
index 0000000000000000000000000000000000000000..7d005c32cfd1c062c4c13b0afb6124524146b7ec
--- /dev/null
+++ b/refv.f
@@ -0,0 +1,128 @@
+      SUBROUTINE sla_REFV (VU, REFA, REFB, VR)
+*+
+*     - - - - -
+*      R E F V
+*     - - - - -
+*
+*  Adjust an unrefracted Cartesian vector to include the effect of
+*  atmospheric refraction, using the simple A tan Z + B tan**3 Z
+*  model.
+*
+*  Given:
+*    VU    dp    unrefracted position of the source (Az/El 3-vector)
+*    REFA  dp    tan Z coefficient (radian)
+*    REFB  dp    tan**3 Z coefficient (radian)
+*
+*  Returned:
+*    VR    dp    refracted position of the source (Az/El 3-vector)
+*
+*  Notes:
+*
+*  1  This routine applies the adjustment for refraction in the
+*     opposite sense to the usual one - it takes an unrefracted
+*     (in vacuo) position and produces an observed (refracted)
+*     position, whereas the A tan Z + B tan**3 Z model strictly
+*     applies to the case where an observed position is to have the
+*     refraction removed.  The unrefracted to refracted case is
+*     harder, and requires an inverted form of the text-book
+*     refraction models;  the algorithm used here is equivalent to
+*     one iteration of the Newton-Raphson method applied to the above
+*     formula.
+*
+*  2  Though optimized for speed rather than precision, the present
+*     routine achieves consistency with the refracted-to-unrefracted
+*     A tan Z + B tan**3 Z model at better than 1 microarcsecond within
+*     30 degrees of the zenith and remains within 1 milliarcsecond to
+*     beyond ZD 70 degrees.  The inherent accuracy of the model is, of
+*     course, far worse than this - see the documentation for sla_REFCO
+*     for more information.
+*
+*  3  At low elevations (below about 3 degrees) the refraction
+*     correction is held back to prevent arithmetic problems and
+*     wildly wrong results.  For optical/IR wavelengths, over a wide
+*     range of observer heights and corresponding temperatures and
+*     pressures, the following levels of accuracy (arcsec, worst case)
+*     are achieved, relative to numerical integration through a model
+*     atmosphere:
+*
+*              ZD    error
+*
+*              80      0.7
+*              81      1.3
+*              82      2.5
+*              83      5
+*              84     10
+*              85     20
+*              86     55
+*              87    160
+*              88    360
+*              89    640
+*              90   1100
+*              91   1700         } relevant only to
+*              92   2600         } high-elevation sites
+*
+*     The results for radio are slightly worse over most of the range,
+*     becoming significantly worse below ZD=88 and unusable beyond
+*     ZD=90.
+*
+*  4  See also the routine sla_REFZ, which performs the adjustment to
+*     the zenith distance rather than in Cartesian Az/El coordinates.
+*     The present routine is faster than sla_REFZ and, except very low down,
+*     is equally accurate for all practical purposes.  However, beyond
+*     about ZD 84 degrees sla_REFZ should be used, and for the utmost
+*     accuracy iterative use of sla_REFRO should be considered.
+*
+*  P.T.Wallace   Starlink   10 April 2004
+*
+*  Copyright (C) 2004 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION VU(3),REFA,REFB,VR(3)
+
+      DOUBLE PRECISION X,Y,Z1,Z,ZSQ,RSQ,R,WB,WT,D,CD,F
+
+
+
+*  Initial estimate = unrefracted vector
+      X = VU(1)
+      Y = VU(2)
+      Z1 = VU(3)
+
+*  Keep correction approximately constant below about 3 deg elevation
+      Z = MAX(Z1,0.05D0)
+
+*  One Newton-Raphson iteration
+      ZSQ = Z*Z
+      RSQ = X*X+Y*Y
+      R = SQRT(RSQ)
+      WB = REFB*RSQ/ZSQ
+      WT = (REFA+WB)/(1D0+(REFA+3D0*WB)*(ZSQ+RSQ)/ZSQ)
+      D = WT*R/Z
+      CD = 1D0-D*D/2D0
+      F = CD*(1D0-WT)
+
+*  Post-refraction x,y,z
+      VR(1) = X*F
+      VR(2) = Y*F
+      VR(3) = CD*(Z+D*R)+(Z1-Z)
+
+      END
diff --git a/refz.f b/refz.f
new file mode 100644
index 0000000000000000000000000000000000000000..15322ba03ad0aa8199ee43c8a64672749f563e80
--- /dev/null
+++ b/refz.f
@@ -0,0 +1,169 @@
+      SUBROUTINE sla_REFZ (ZU, REFA, REFB, ZR)
+*+
+*     - - - - -
+*      R E F Z
+*     - - - - -
+*
+*  Adjust an unrefracted zenith distance to include the effect of
+*  atmospheric refraction, using the simple A tan Z + B tan**3 Z
+*  model (plus special handling for large ZDs).
+*
+*  Given:
+*    ZU    dp    unrefracted zenith distance of the source (radian)
+*    REFA  dp    tan Z coefficient (radian)
+*    REFB  dp    tan**3 Z coefficient (radian)
+*
+*  Returned:
+*    ZR    dp    refracted zenith distance (radian)
+*
+*  Notes:
+*
+*  1  This routine applies the adjustment for refraction in the
+*     opposite sense to the usual one - it takes an unrefracted
+*     (in vacuo) position and produces an observed (refracted)
+*     position, whereas the A tan Z + B tan**3 Z model strictly
+*     applies to the case where an observed position is to have the
+*     refraction removed.  The unrefracted to refracted case is
+*     harder, and requires an inverted form of the text-book
+*     refraction models;  the formula used here is based on the
+*     Newton-Raphson method.  For the utmost numerical consistency
+*     with the refracted to unrefracted model, two iterations are
+*     carried out, achieving agreement at the 1D-11 arcseconds level
+*     for a ZD of 80 degrees.  The inherent accuracy of the model
+*     is, of course, far worse than this - see the documentation for
+*     sla_REFCO for more information.
+*
+*  2  At ZD 83 degrees, the rapidly-worsening A tan Z + B tan^3 Z
+*     model is abandoned and an empirical formula takes over.  For
+*     optical/IR wavelengths, over a wide range of observer heights and
+*     corresponding temperatures and pressures, the following levels of
+*     accuracy (arcsec, worst case) are achieved, relative to numerical
+*     integration through a model atmosphere:
+*
+*              ZR    error
+*
+*              80      0.7
+*              81      1.3
+*              82      2.4
+*              83      4.7
+*              84      6.2
+*              85      6.4
+*              86      8
+*              87     10
+*              88     15
+*              89     30
+*              90     60
+*              91    150         } relevant only to
+*              92    400         } high-elevation sites
+*
+*     For radio wavelengths the errors are typically 50% larger than
+*     the optical figures and by ZD 85 deg are twice as bad, worsening
+*     rapidly below that.  To maintain 1 arcsec accuracy down to ZD=85
+*     at the Green Bank site, Condon (2004) has suggested amplifying
+*     the amount of refraction predicted by sla_REFZ below 10.8 deg
+*     elevation by the factor (1+0.00195*(10.8-E_t)), where E_t is the
+*     unrefracted elevation in degrees.
+*
+*     The high-ZD model is scaled to match the normal model at the
+*     transition point;  there is no glitch.
+*
+*  3  Beyond 93 deg zenith distance, the refraction is held at its
+*     93 deg value.
+*
+*  4  See also the routine sla_REFV, which performs the adjustment in
+*     Cartesian Az/El coordinates, and with the emphasis on speed
+*     rather than numerical accuracy.
+*
+*  Reference:
+*
+*     Condon,J.J., Refraction Corrections for the GBT, PTCS/PN/35.2,
+*     NRAO Green Bank, 2004.
+*
+*  P.T.Wallace   Starlink   9 April 2004
+*
+*  Copyright (C) 2004 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION ZU,REFA,REFB,ZR
+
+*  Radians to degrees
+      DOUBLE PRECISION R2D
+      PARAMETER (R2D=57.29577951308232D0)
+
+*  Largest usable ZD (deg)
+      DOUBLE PRECISION D93
+      PARAMETER (D93=93D0)
+
+*  Coefficients for high ZD model (used beyond ZD 83 deg)
+      DOUBLE PRECISION C1,C2,C3,C4,C5
+      PARAMETER (C1=+0.55445D0,
+     :           C2=-0.01133D0,
+     :           C3=+0.00202D0,
+     :           C4=+0.28385D0,
+     :           C5=+0.02390D0)
+
+*  ZD at which one model hands over to the other (radians)
+      DOUBLE PRECISION Z83
+      PARAMETER (Z83=83D0/R2D)
+
+*  High-ZD-model prediction (deg) for that point
+      DOUBLE PRECISION REF83
+      PARAMETER (REF83=(C1+C2*7D0+C3*49D0)/(1D0+C4*7D0+C5*49D0))
+
+      DOUBLE PRECISION ZU1,ZL,S,C,T,TSQ,TCU,REF,E,E2
+
+
+
+*  Perform calculations for ZU or 83 deg, whichever is smaller
+      ZU1 = MIN(ZU,Z83)
+
+*  Functions of ZD
+      ZL = ZU1
+      S = SIN(ZL)
+      C = COS(ZL)
+      T = S/C
+      TSQ = T*T
+      TCU = T*TSQ
+
+*  Refracted ZD (mathematically to better than 1 mas at 70 deg)
+      ZL = ZL-(REFA*T+REFB*TCU)/(1D0+(REFA+3D0*REFB*TSQ)/(C*C))
+
+*  Further iteration
+      S = SIN(ZL)
+      C = COS(ZL)
+      T = S/C
+      TSQ = T*T
+      TCU = T*TSQ
+      REF = ZU1-ZL+
+     :          (ZL-ZU1+REFA*T+REFB*TCU)/(1D0+(REFA+3D0*REFB*TSQ)/(C*C))
+
+*  Special handling for large ZU
+      IF (ZU.GT.ZU1) THEN
+         E = 90D0-MIN(D93,ZU*R2D)
+         E2 = E*E
+         REF = (REF/REF83)*(C1+C2*E+C3*E2)/(1D0+C4*E+C5*E2)
+      END IF
+
+*  Return refracted ZD
+      ZR = ZU-REF
+
+      END
diff --git a/rtl_random.c b/rtl_random.c
new file mode 100644
index 0000000000000000000000000000000000000000..a8730c0cadd76125c6f959346a5a643f6776088f
--- /dev/null
+++ b/rtl_random.c
@@ -0,0 +1,33 @@
+#include <stdlib.h>
+
+float
+random_ ( int *iseed )
+/*
+**  - - - - - - -
+**   r a n d o m
+**  - - - - - - -
+**
+**  Generate pseudo-random real number in the range 0 <= x < 1.
+**
+**  (single precision)
+**
+**  This function is designed to replace the Fortran->C interface routine
+**  random(3f) on systems which do not have this library (for example Linux)
+**
+**  Fortran call:   X = RANDOM(ISEED)
+**
+**  Given:
+**     iseed     int     seed value
+**
+**     If iseed !=0  random-number generator is initialised and first number
+**                   is returned.
+**        iseed == 0 next number in the sequence is returned
+**
+**  B.K.McIlwrath    Starlink   12 January 1996
+*/
+{
+   if( *iseed != 0 )
+      srand(*iseed);
+
+   return (float) rand() / (float) RAND_MAX;
+}
diff --git a/rverot.f b/rverot.f
new file mode 100644
index 0000000000000000000000000000000000000000..fccd08c1fd18be0f427c8e0a3ef7d9d91fe1f0c4
--- /dev/null
+++ b/rverot.f
@@ -0,0 +1,65 @@
+      REAL FUNCTION sla_RVEROT (PHI, RA, DA, ST)
+*+
+*     - - - - - - -
+*      R V E R O T
+*     - - - - - - -
+*
+*  Velocity component in a given direction due to Earth rotation
+*  (single precision)
+*
+*  Given:
+*     PHI     real    latitude of observing station (geodetic)
+*     RA,DA   real    apparent RA,DEC
+*     ST      real    local apparent sidereal time
+*
+*  PHI, RA, DEC and ST are all in radians.
+*
+*  Result:
+*     Component of Earth rotation in direction RA,DA (km/s)
+*
+*  Sign convention:
+*     The result is +ve when the observatory is receding from the
+*     given point on the sky.
+*
+*  Accuracy:
+*     The simple algorithm used assumes a spherical Earth, of
+*     a radius chosen to give results accurate to about 0.0005 km/s
+*     for observing stations at typical latitudes and heights.  For
+*     applications requiring greater precision, use the routine
+*     sla_PVOBS.
+*
+*  P.T.Wallace   Starlink   20 July 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL PHI,RA,DA,ST
+
+*  Nominal mean sidereal speed of Earth equator in km/s (the actual
+*  value is about 0.4651)
+      REAL ESPEED
+      PARAMETER (ESPEED=0.4655)
+
+
+      sla_RVEROT=ESPEED*COS(PHI)*SIN(ST-RA)*COS(DA)
+
+      END
diff --git a/rvgalc.f b/rvgalc.f
new file mode 100644
index 0000000000000000000000000000000000000000..77c953fc1296cb2b1dc7247c26f8f1b1bf3cfc8d
--- /dev/null
+++ b/rvgalc.f
@@ -0,0 +1,86 @@
+      REAL FUNCTION sla_RVGALC (R2000, D2000)
+*+
+*     - - - - - - -
+*      R V G A L C
+*     - - - - - - -
+*
+*  Velocity component in a given direction due to the rotation
+*  of the Galaxy (single precision)
+*
+*  Given:
+*     R2000,D2000   real    J2000.0 mean RA,Dec (radians)
+*
+*  Result:
+*     Component of dynamical LSR motion in direction R2000,D2000 (km/s)
+*
+*  Sign convention:
+*     The result is +ve when the dynamical LSR is receding from the
+*     given point on the sky.
+*
+*  Note:  The Local Standard of Rest used here is a point in the
+*         vicinity of the Sun which is in a circular orbit around
+*         the Galactic centre.  Sometimes called the "dynamical" LSR,
+*         it is not to be confused with a "kinematical" LSR, which
+*         is the mean standard of rest of star catalogues or stellar
+*         populations.
+*
+*  Reference:  The orbital speed of 220 km/s used here comes from
+*              Kerr & Lynden-Bell (1986), MNRAS, 221, p1023.
+*
+*  Called:
+*     sla_CS2C, sla_VDV
+*
+*  P.T.Wallace   Starlink   23 March 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL R2000,D2000
+
+      REAL VA(3), VB(3)
+
+      REAL sla_VDV
+
+*
+*  LSR velocity due to Galactic rotation
+*
+*  Speed = 220 km/s
+*  Apex  = L2,B2  90deg, 0deg
+*        = RA,Dec  21 12 01.1  +48 19 47  J2000.0
+*
+*  This is expressed in the form of a J2000.0 x,y,z vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+
+      DATA VA / -108.70408, +97.86251, -164.33610 /
+
+
+
+*  Convert given J2000 RA,Dec to x,y,z
+      CALL sla_CS2C(R2000,D2000,VB)
+
+*  Compute dot product with LSR motion vector
+      sla_RVGALC=sla_VDV(VA,VB)
+
+      END
diff --git a/rvlg.f b/rvlg.f
new file mode 100644
index 0000000000000000000000000000000000000000..f7fa091bfeda9e3e331456a943b460448c73f2b9
--- /dev/null
+++ b/rvlg.f
@@ -0,0 +1,81 @@
+      REAL FUNCTION sla_RVLG (R2000, D2000)
+*+
+*     - - - - -
+*      R V L G
+*     - - - - -
+*
+*  Velocity component in a given direction due to the combination
+*  of the rotation of the Galaxy and the motion of the Galaxy
+*  relative to the mean motion of the local group (single precision)
+*
+*  Given:
+*     R2000,D2000   real    J2000.0 mean RA,Dec (radians)
+*
+*  Result:
+*     Component of SOLAR motion in direction R2000,D2000 (km/s)
+*
+*  Sign convention:
+*     The result is +ve when the Sun is receding from the
+*     given point on the sky.
+*
+*  Reference:
+*     IAU Trans 1976, 168, p201.
+*
+*  Called:
+*     sla_CS2C, sla_VDV
+*
+*  P.T.Wallace   Starlink   June 1985
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL R2000,D2000
+
+      REAL VA(3), VB(3)
+
+      REAL sla_VDV
+
+*
+*  Solar velocity due to Galactic rotation and translation
+*
+*  Speed = 300 km/s
+*
+*  Apex  = L2,B2  90deg, 0deg
+*        = RA,Dec  21 12 01.1  +48 19 47  J2000.0
+*
+*  This is expressed in the form of a J2000.0 x,y,z vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+
+      DATA VA / -148.23284, +133.44888, -224.09467 /
+
+
+
+*  Convert given J2000 RA,Dec to x,y,z
+      CALL sla_CS2C(R2000,D2000,VB)
+
+*  Compute dot product with Solar motion vector
+      sla_RVLG=sla_VDV(VA,VB)
+
+      END
diff --git a/rvlsrd.f b/rvlsrd.f
new file mode 100644
index 0000000000000000000000000000000000000000..08f99553189c76b6a8fadad2734827e3a93bbdbc
--- /dev/null
+++ b/rvlsrd.f
@@ -0,0 +1,95 @@
+      REAL FUNCTION sla_RVLSRD (R2000, D2000)
+*+
+*     - - - - - - -
+*      R V L S R D
+*     - - - - - - -
+*
+*  Velocity component in a given direction due to the Sun's motion
+*  with respect to the dynamical Local Standard of Rest.
+*
+*  (single precision)
+*
+*  Given:
+*     R2000,D2000   r    J2000.0 mean RA,Dec (radians)
+*
+*  Result:
+*     Component of "peculiar" solar motion in direction R2000,D2000 (km/s)
+*
+*  Sign convention:
+*     The result is +ve when the Sun is receding from the given point on
+*     the sky.
+*
+*  Note:  The Local Standard of Rest used here is the "dynamical" LSR,
+*         a point in the vicinity of the Sun which is in a circular
+*         orbit around the Galactic centre.  The Sun's motion with
+*         respect to the dynamical LSR is called the "peculiar" solar
+*         motion.
+*
+*         There is another type of LSR, called a "kinematical" LSR.  A
+*         kinematical LSR is the mean standard of rest of specified star
+*         catalogues or stellar populations, and several slightly
+*         different kinematical LSRs are in use.  The Sun's motion with
+*         respect to an agreed kinematical LSR is known as the "standard"
+*         solar motion.  To obtain a radial velocity correction with
+*         respect to an adopted kinematical LSR use the routine sla_RVLSRK.
+*
+*  Reference:  Delhaye (1965), in "Stars and Stellar Systems", vol 5,
+*              p73.
+*
+*  Called:
+*     sla_CS2C, sla_VDV
+*
+*  P.T.Wallace   Starlink   9 March 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL R2000,D2000
+
+      REAL VA(3), VB(3)
+
+      REAL sla_VDV
+
+*
+*  Peculiar solar motion from Delhaye 1965: in Galactic Cartesian
+*  coordinates (+9,+12,+7) km/s.  This corresponds to about 16.6 km/s
+*  towards Galactic coordinates L2 = 53 deg, B2 = +25 deg, or RA,Dec
+*  17 49 58.7 +28 07 04 J2000.
+*
+*  The solar motion is expressed here in the form of a J2000.0
+*  equatorial Cartesian vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+
+      DATA VA / +0.63823, +14.58542, -7.80116 /
+
+
+
+*  Convert given J2000 RA,Dec to x,y,z
+      CALL sla_CS2C(R2000,D2000,VB)
+
+*  Compute dot product with solar motion vector
+      sla_RVLSRD=sla_VDV(VA,VB)
+
+      END
diff --git a/rvlsrk.f b/rvlsrk.f
new file mode 100644
index 0000000000000000000000000000000000000000..b513e053049efae9a5588c01a90f430539b87430
--- /dev/null
+++ b/rvlsrk.f
@@ -0,0 +1,94 @@
+      REAL FUNCTION sla_RVLSRK (R2000, D2000)
+*+
+*     - - - - - - -
+*      R V L S R K
+*     - - - - - - -
+*
+*  Velocity component in a given direction due to the Sun's motion
+*  with respect to an adopted kinematic Local Standard of Rest.
+*
+*  (single precision)
+*
+*  Given:
+*     R2000,D2000   r    J2000.0 mean RA,Dec (radians)
+*
+*  Result:
+*     Component of "standard" solar motion in direction R2000,D2000 (km/s)
+*
+*  Sign convention:
+*     The result is +ve when the Sun is receding from the given point on
+*     the sky.
+*
+*  Note:  The Local Standard of Rest used here is one of several
+*         "kinematical" LSRs in common use.  A kinematical LSR is the
+*         mean standard of rest of specified star catalogues or stellar
+*         populations.  The Sun's motion with respect to a kinematical
+*         LSR is known as the "standard" solar motion.
+*
+*         There is another sort of LSR, the "dynamical" LSR, which is a
+*         point in the vicinity of the Sun which is in a circular orbit
+*         around the Galactic centre.  The Sun's motion with respect to
+*         the dynamical LSR is called the "peculiar" solar motion.  To
+*         obtain a radial velocity correction with respect to the
+*         dynamical LSR use the routine sla_RVLSRD.
+*
+*  Reference:  Delhaye (1965), in "Stars and Stellar Systems", vol 5,
+*              p73.
+*
+*  Called:
+*     sla_CS2C, sla_VDV
+*
+*  P.T.Wallace   Starlink   11 March 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL R2000,D2000
+
+      REAL VA(3), VB(3)
+
+      REAL sla_VDV
+
+*
+*  Standard solar motion (from Methods of Experimental Physics, ed Meeks,
+*  vol 12, part C, sec 6.1.5.2, p281):
+*
+*  20 km/s towards RA 18h Dec +30d (1900).
+*
+*  The solar motion is expressed here in the form of a J2000.0
+*  equatorial Cartesian vector:
+*
+*      VA(1) = X = -SPEED*COS(RA)*COS(DEC)
+*      VA(2) = Y = -SPEED*SIN(RA)*COS(DEC)
+*      VA(3) = Z = -SPEED*SIN(DEC)
+
+      DATA VA / -0.29000, +17.31726, -10.00141 /
+
+
+
+*  Convert given J2000 RA,Dec to x,y,z
+      CALL sla_CS2C(R2000,D2000,VB)
+
+*  Compute dot product with solar motion vector
+      sla_RVLSRK=sla_VDV(VA,VB)
+
+      END
diff --git a/s2tp.f b/s2tp.f
new file mode 100644
index 0000000000000000000000000000000000000000..1a550d131aacceaa377fdef53b86fd919aa8b8b3
--- /dev/null
+++ b/s2tp.f
@@ -0,0 +1,84 @@
+      SUBROUTINE sla_S2TP (RA, DEC, RAZ, DECZ, XI, ETA, J)
+*+
+*     - - - - -
+*      S 2 T P
+*     - - - - -
+*
+*  Projection of spherical coordinates onto tangent plane:
+*  "gnomonic" projection - "standard coordinates"
+*  (single precision)
+*
+*  Given:
+*     RA,DEC      real  spherical coordinates of point to be projected
+*     RAZ,DECZ    real  spherical coordinates of tangent point
+*
+*  Returned:
+*     XI,ETA      real  rectangular coordinates on tangent plane
+*     J           int   status:   0 = OK, star on tangent plane
+*                                 1 = error, star too far from axis
+*                                 2 = error, antistar on tangent plane
+*                                 3 = error, antistar too far from axis
+*
+*  P.T.Wallace   Starlink   18 July 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL RA,DEC,RAZ,DECZ,XI,ETA
+      INTEGER J
+
+      REAL SDECZ,SDEC,CDECZ,CDEC,RADIF,SRADIF,CRADIF,DENOM
+
+      REAL TINY
+      PARAMETER (TINY=1E-6)
+
+
+*  Trig functions
+      SDECZ=SIN(DECZ)
+      SDEC=SIN(DEC)
+      CDECZ=COS(DECZ)
+      CDEC=COS(DEC)
+      RADIF=RA-RAZ
+      SRADIF=SIN(RADIF)
+      CRADIF=COS(RADIF)
+
+*  Reciprocal of star vector length to tangent plane
+      DENOM=SDEC*SDECZ+CDEC*CDECZ*CRADIF
+
+*  Handle vectors too far from axis
+      IF (DENOM.GT.TINY) THEN
+         J=0
+      ELSE IF (DENOM.GE.0.0) THEN
+         J=1
+         DENOM=TINY
+      ELSE IF (DENOM.GT.-TINY) THEN
+         J=2
+         DENOM=-TINY
+      ELSE
+         J=3
+      END IF
+
+*  Compute tangent plane coordinates (even in dubious cases)
+      XI=CDEC*SRADIF/DENOM
+      ETA=(SDEC*CDECZ-CDEC*SDECZ*CRADIF)/DENOM
+
+      END
diff --git a/sep.f b/sep.f
new file mode 100644
index 0000000000000000000000000000000000000000..3fe044b58f9a5282f0af582d8e7ada8564d98c33
--- /dev/null
+++ b/sep.f
@@ -0,0 +1,55 @@
+      REAL FUNCTION sla_SEP (A1, B1, A2, B2)
+*+
+*     - - - -
+*      S E P
+*     - - - -
+*
+*  Angle between two points on a sphere.
+*
+*  (single precision)
+*
+*  Given:
+*     A1,B1    r     spherical coordinates of one point
+*     A2,B2    r     spherical coordinates of the other point
+*
+*  (The spherical coordinates are [RA,Dec], [Long,Lat] etc, in radians.)
+*
+*  The result is the angle, in radians, between the two points.  It
+*  is always positive.
+*
+*  Called:  sla_DSEP
+*
+*  Last revision:   7 May 2000
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL A1,B1,A2,B2
+
+      DOUBLE PRECISION sla_DSEP
+
+
+
+*  Use double precision version.
+      sla_SEP = REAL(sla_DSEP(DBLE(A1),DBLE(B1),DBLE(A2),DBLE(B2)))
+
+      END
diff --git a/sepv.f b/sepv.f
new file mode 100644
index 0000000000000000000000000000000000000000..7110122835bbbf7916cc932160adde8be3addb3c
--- /dev/null
+++ b/sepv.f
@@ -0,0 +1,70 @@
+      REAL FUNCTION sla_SEPV (V1, V2)
+*+
+*     - - - - -
+*      S E P V
+*     - - - - -
+*
+*  Angle between two vectors.
+*
+*  (single precision)
+*
+*  Given:
+*     V1      r(3)    first vector
+*     V2      r(3)    second vector
+*
+*  The result is the angle, in radians, between the two vectors.  It
+*  is always positive.
+*
+*  Notes:
+*
+*  1  There is no requirement for the vectors to be unit length.
+*
+*  2  If either vector is null, zero is returned.
+*
+*  3  The simplest formulation would use dot product alone.  However,
+*     this would reduce the accuracy for angles near zero and pi.  The
+*     algorithm uses both cross product and dot product, which maintains
+*     accuracy for all sizes of angle.
+*
+*  Called:  sla_DSEPV
+*
+*  Last revision:   7 May 2000
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL V1(3),V2(3)
+
+      INTEGER I
+      DOUBLE PRECISION DV1(3),DV2(3)
+      DOUBLE PRECISION sla_DSEPV
+
+
+
+*  Use double precision version.
+      DO I=1,3
+         DV1(I) = DBLE(V1(I))
+         DV2(I) = DBLE(V2(I))
+      END DO
+      sla_SEPV = REAL(sla_DSEPV(DV1,DV2))
+
+      END
diff --git a/sla.c b/sla.c
new file mode 100644
index 0000000000000000000000000000000000000000..67073e5d97f12227a04436ee482e8ed7fc8f39f2
--- /dev/null
+++ b/sla.c
@@ -0,0 +1,1682 @@
+/*
+*  Name:
+*     sla.c
+
+*  Purpose:
+*     Implement a C interface to the Fortran SLALIB library.
+
+*  Description:
+*     This file implements a C interface to the Fortran version of the
+*     SLALIB library. 
+
+*  Notes:
+*     This interface only supports a subset of the functions provided by
+*     SLALIB. It should be extended as and when necessary.
+
+*  Copyright:
+*     Copyright (C) 1996-2006 Council for the Central Laboratory of the
+*     Research Councils. Copyright (C) 2007 Science and Technology
+*     Facilities Council. All Rights Reserved.
+
+*  Licence:
+*     This program is free software; you can redistribute it and/or
+*     modify it under the terms of the GNU General Public Licence as
+*     published by the Free Software Foundation; either version 2 of
+*     the Licence, or (at your option) any later version.
+*     
+*     This program is distributed in the hope that it will be
+*     useful,but WITHOUT ANY WARRANTY; without even the implied
+*     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+*     PURPOSE. See the GNU General Public Licence for more details.
+*     
+*     You should have received a copy of the GNU General Public Licence
+*     along with this program; if not, write to the Free Software
+*     Foundation, Inc., 59 Temple Place,Suite 330, Boston, MA
+*     02111-1307, USA
+
+*  Authors:
+*     RFWS: R.F. Warren-Smith (STARLINK)
+*     DSB: David S. Berry (STARLINK)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+
+*  History:
+*     12-NOV-1996 (RFWS):
+*        Original version.
+*     28-APR-1997 (RFWS):
+*        Added SLA_DJCAL.
+*     26-SEP-1997 (DSB):
+*        Added SLA_DD2TF, SLA_DJCL.
+*     21-JUN-2001 (DSB):
+*        Added SLA_DBEAR, SLA_DVDV.
+*     23-AUG-2001 (DSB):
+*        Added SLA_SVD and SLA_SVDSOL
+*     11-NOV-2002 (DSB):
+*        Added SLA_RVEROT, SLA_GMST, SLA_EQEQX, SLA_RVLSRK, SLA_RVLSRD, 
+*        SLA_RVLG, SLA_RVGALC.
+*     11-JUN-2003 (DSB):
+*        Added SLA_GEOC, SLA_HFK5Z and SLA_FK5HZ.
+*     2-DEC-2004 (DSB):
+*        Added SLA_DEULER.
+*     29-SEP-2005 (DSB):
+*        Added SLA_DE2H and SLA_DH2E
+*     12-JUN-2006 (DSB):
+*        Moved from AST to SLALIB.
+*     25-JUN-2006 (TIMJ):
+*        Add SLA_AIRMAS.
+*     07-AUG-2006 (TIMJ):
+*        Import cnfImprt from CNF.
+*        Add SLA_OBS
+*     08-AUG-2006 (TIMJ):
+*        Add SLA_PA
+*     12-DEC-2006 (TIMJ):
+*        Add SLA_DTT and SLA_DAT
+*     21-DEC-2006 (TIMJ):
+*        Add SLA_RDPLAN
+*     03-APR-2007 (TIMJ):
+*        Add SLA_DR2TF
+*-
+*/
+
+/* Header files. */
+/* ============= */
+#include "f77.h"                 /* FORTRAN <-> C interface macros (SUN/209) */
+#include "slalib.h"              /* Prototypes for C SLALIB functions */
+#include <stdlib.h>              /* Malloc etc */
+#include <string.h>              /* string manipulation */
+
+
+/* Functions needed to avoid a dependence on CNF. */
+/* ============================================== */
+
+static void slaStringExport( const char *, char *, int );
+static void slaStringImport( const char *source_f, int source_len,
+			     char *dest_c );
+
+static void slaStringExport( const char *source_c, char *dest_f, int dest_len ) {
+/*
+*+
+*  Name:
+*     slaStringExport
+
+*  Purpose:
+*     Export a C string to a FORTRAN string.
+
+*  Type:
+*     Protected function.
+
+*  Synopsis:
+*     void slaStringExport( const char *source_c, char *dest_f, int dest_len )
+
+*  Description:
+*     This function creates a FORTRAN string from a C string, storing
+*     it in the supplied memory. If the C string is shorter than the
+*     space allocated for the FORTRAN string, then it is padded with
+*     blanks. If the C string is longer than the space allocated for
+*     the FORTRAN string, then the string is truncated.
+
+*  Parameters:
+*     source_c 
+*        A pointer to the input C string.
+*     dest_f 
+*        A pointer to the output FORTRAN string.
+*     dest_len 
+*        The length of the output FORTRAN string.
+
+*  Notes:
+*     - This function is potentially platform-specific. For example,
+*     if FORTRAN strings were passed by descriptor, then the
+*     descriptor address would be passed as "dest_f" and this must
+*     then be used to locate the actual FORTRAN character data.
+*     - This function is equivalent to cnfExprt but is included here to
+*     avoid SLALIB becoming dependent on CNF.
+*-
+*/
+
+/* Local Variables:*/
+   int i;                        /* Loop counter for characters */
+
+/* Check the supplied pointers. */
+   if ( !source_c || !dest_f ) return;
+
+/* Copy the characters of the input C string to the output FORTRAN
+   string, taking care not to go beyond the end of the FORTRAN
+   string.*/
+   for ( i = 0; source_c[ i ] && ( i < dest_len ); i++ ) {
+      dest_f[ i ] = source_c[ i ];
+   }
+
+/* Fill the rest of the output FORTRAN string with blanks. */
+   for ( ; i < dest_len; i++ ) dest_f[ i ] = ' ';
+}
+
+void slaStringImport( const char *source_f, int source_len, char *dest_c )
+
+/*
+*+
+*  Name:
+*     slaStringImportt
+
+*  Purpose:
+*     Import a FORTRAN string into a C string
+
+*  Type:
+*     Protected function.
+
+*  Language:
+*     ANSI C
+
+*  Invocation:
+*     slaStringImport( source_f, source_len, dest_c )
+
+*  Description:
+*     Import a FORTRAN string into a C string, discarding trailing
+*     blanks. The NUL character is appended to the C string after
+*     the last non-blank character. The input string and output string
+*     pointers can point to the same location if the string is to be
+*     modified in place (but care must be taken to allow for the additional
+*     C terminator when allocating memory).
+
+*  Arguments:
+*     const char *source_f (Given)
+*        A pointer to the input FORTRAN string
+*     int source_len (Given)
+*        The length of the input FORTRAN string
+*     char *dest_c (Returned via pointer)
+*        A pointer to the output C string. Can be same as source.
+
+*  Notes:
+*     -  No check is made that there is sufficient space allocated to
+*        the C string to hold the FORTRAN string and a terminating null.
+*        It is responsibility of the programmer to check this.
+*     -  This function is equivalent to cnfImprt but is included here to
+*        avoid SLALIB becoming dependent on CNF.
+
+*  Authors:
+*     PMA: Peter Allan (Starlink, RAL)
+*     AJC: Alan Chipperfield (Starlink, RAL)
+*     TIMJ: Tim Jenness (JAC, Hawaii)
+*     {enter_new_authors_here}
+
+*  History:
+*     27-MAR-1991 (PMA):
+*        Original version.
+*     22-MAY-1996 (AJC):
+*        Correct description re trailing blanks
+*     24-SEP-1998 (AJC):
+*        Specify const char * for input strings
+*     25-NOV-2005 (TIMJ):
+*        Allow the strings to be identical
+*     {enter_changes_here}
+
+*-
+
+*...........................................................................*/
+
+{
+/* Local Variables:							    */
+
+   int i;			 /* Loop counter			    */
+
+
+/* Find the last non blank character in the input FORTRAN string.	    */
+
+   for( i = source_len - 1 ; ( i >= 0 ) && ( source_f[i] == ' ' ) ; i-- )
+      ;
+
+/* Put a null character at the end of the output C string.		    */
+
+   dest_c[i+1] = '\0';
+
+/* Copy the characters from the input FORTRAN string to the output C	    */
+/* string if the strings are different.				      	    */
+
+   if (dest_c != source_f ) {
+     memmove( dest_c, source_f, (size_t)i+1 );
+   }
+}
+
+
+
+
+/* SLALIB wrapper implementations. */
+/* =============================== */
+/* Fortran routine prototype. */
+F77_SUBROUTINE(sla_addet)( DOUBLE(RM),
+                           DOUBLE(DM),
+                           DOUBLE(EQ),
+                           DOUBLE(RC),
+                           DOUBLE(DC) );
+
+/* C interface implementation. */
+void slaAddet ( double rm, double dm, double eq, double *rc, double *dc ) {
+   DECLARE_DOUBLE(RM);
+   DECLARE_DOUBLE(DM);
+   DECLARE_DOUBLE(EQ);
+   DECLARE_DOUBLE(RC);
+   DECLARE_DOUBLE(DC);
+   RM = rm;
+   DM = dm;
+   EQ = eq;
+   F77_CALL(sla_addet)( DOUBLE_ARG(&RM),
+                        DOUBLE_ARG(&DM),
+                        DOUBLE_ARG(&EQ),
+                        DOUBLE_ARG(&RC),
+                        DOUBLE_ARG(&DC) );
+   *rc = RC;
+   *dc = DC;
+}
+
+/* etc... */
+F77_SUBROUTINE(sla_ampqk)( DOUBLE(RA),
+                           DOUBLE(DA),
+                           DOUBLE_ARRAY(AMPRMS),
+                           DOUBLE(RM),
+                           DOUBLE(DM) );
+
+void slaAmpqk ( double ra, double da, double amprms[21],
+                double *rm, double *dm ) {
+   DECLARE_DOUBLE(RA);
+   DECLARE_DOUBLE(DA);
+   DECLARE_DOUBLE_ARRAY(AMPRMS,21);
+   DECLARE_DOUBLE(RM);
+   DECLARE_DOUBLE(DM);
+   int i;
+   RA = ra;
+   DA = da;
+   for ( i = 0; i < 21; i++ ) AMPRMS[ i ] = amprms[ i ];
+   F77_CALL(sla_ampqk)( DOUBLE_ARG(&RA),
+                        DOUBLE_ARG(&DA),
+                        DOUBLE_ARRAY_ARG(AMPRMS),
+                        DOUBLE_ARG(&RM),
+                        DOUBLE_ARG(&DM) );
+   *rm = RM;
+   *dm = DM;
+}
+
+F77_DOUBLE_FUNCTION(sla_airmas)( DOUBLE(ZD) );
+
+double slaAirmas( double zd ) {
+  DECLARE_DOUBLE(ZD);
+  double result;
+  ZD = zd;
+  result = F77_CALL(sla_airmas)( DOUBLE_ARG(&ZD) );
+  return result;
+}
+
+F77_SUBROUTINE(sla_caldj)( INTEGER(IY),
+                           INTEGER(IM),
+                           INTEGER(ID),
+                           DOUBLE(DJM),
+                           INTEGER(J) );
+
+void slaCaldj ( int iy, int im, int id, double *djm, int *j ) {
+   DECLARE_INTEGER(IY);
+   DECLARE_INTEGER(IM);
+   DECLARE_INTEGER(ID);
+   DECLARE_DOUBLE(DJM);
+   DECLARE_INTEGER(J);
+   IY = iy;
+   IM = im;
+   ID = id;
+   F77_CALL(sla_caldj)( INTEGER_ARG(&IY),
+                        INTEGER_ARG(&IM),
+                        INTEGER_ARG(&ID),
+                        DOUBLE_ARG(&DJM),
+                        INTEGER_ARG(&J) );
+   *djm = DJM;
+   *j = J;
+}
+
+F77_SUBROUTINE(sla_daf2r)( INTEGER(IDEG),
+                           INTEGER(IAMIN),
+                           DOUBLE(ASEC),
+                           DOUBLE(RAD),
+                           INTEGER(J) );
+
+void slaDaf2r ( int ideg, int iamin, double asec, double *rad, int *j ) {
+   DECLARE_INTEGER(IDEG);
+   DECLARE_INTEGER(IAMIN);
+   DECLARE_DOUBLE(ASEC);
+   DECLARE_DOUBLE(RAD);
+   DECLARE_INTEGER(J);
+   IDEG = ideg;
+   IAMIN = iamin;
+   ASEC = asec;
+   F77_CALL(sla_daf2r)( INTEGER_ARG(&IDEG),
+                        INTEGER_ARG(&IAMIN),
+                        DOUBLE_ARG(&ASEC),
+                        DOUBLE_ARG(&RAD),
+                        INTEGER_ARG(&J) );
+   *rad = RAD;
+   *j = J;
+}
+
+F77_SUBROUTINE(sla_dav2m)( DOUBLE_ARRAY(AXVEC),
+                           DOUBLE_ARRAY(RMAT) );
+
+void slaDav2m ( double axvec[3], double rmat[3][3] ) {
+   DECLARE_DOUBLE_ARRAY(AXVEC,3);
+   DECLARE_DOUBLE_ARRAY(RMAT,9);
+   int i;
+   int j;
+   for ( i = 0; i < 3; i++ ) AXVEC[ i ] = axvec[ i ];
+   F77_CALL(sla_dav2m)( DOUBLE_ARRAY_ARG(AXVEC),
+                        DOUBLE_ARRAY_ARG(RMAT) );
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) rmat[ i ][ j ] = RMAT[ i + 3 * j ];
+   }
+}
+
+F77_SUBROUTINE(sla_dcc2s)( DOUBLE_ARRAY(V),
+                           DOUBLE(A),
+                           DOUBLE(B) );
+
+void slaDcc2s ( double v[3], double *a, double *b ) {
+   DECLARE_DOUBLE_ARRAY(V,3);
+   DECLARE_DOUBLE(A);
+   DECLARE_DOUBLE(B);
+   int i;
+   for ( i = 0; i < 3; i++ ) V[ i ] = v[ i ];
+   F77_CALL(sla_dcc2s)( DOUBLE_ARRAY_ARG(V),
+                        DOUBLE_ARG(&A),
+                        DOUBLE_ARG(&B) );
+   *a = A;
+   *b = B;
+}
+
+F77_SUBROUTINE(sla_dcs2c)( DOUBLE(A),
+                           DOUBLE(B),
+                           DOUBLE_ARRAY(V) );
+
+void slaDcs2c ( double a, double b, double v[3] ) {
+   DECLARE_DOUBLE(A);
+   DECLARE_DOUBLE(B);
+   DECLARE_DOUBLE_ARRAY(V,3);
+   int i;
+   A = a;
+   B = b;
+   F77_CALL(sla_dcs2c)( DOUBLE_ARG(&A),
+                        DOUBLE_ARG(&B),
+                        DOUBLE_ARRAY_ARG(V) );
+   for ( i = 0; i < 3; i++ ) v[ i ] = V[ i ];
+}
+
+F77_SUBROUTINE(sla_dd2tf)( INTEGER(NDP),
+                           DOUBLE(DAYS),
+                           CHARACTER(SIGN),
+                           INTEGER_ARRAY(IHMSF)
+                           TRAIL(SIGN) );
+
+void slaDd2tf ( int ndp, double days, char *sign, int ihmsf[4] ) {
+   DECLARE_INTEGER(NDP);
+   DECLARE_DOUBLE(DAYS);
+   DECLARE_CHARACTER(SIGN,2);
+   DECLARE_INTEGER_ARRAY(IHMSF,4);
+   int i;
+
+   NDP = ndp;   
+   DAYS = days;
+   F77_CALL(sla_dd2tf)( INTEGER_ARG(&NDP),
+                        DOUBLE_ARG(&DAYS),
+                        CHARACTER_ARG(SIGN),
+                        INTEGER_ARRAY_ARG(IHMSF) 
+                        TRAIL_ARG(SIGN) );
+   sign[0] = SIGN[0];
+   sign[1] = 0;
+   for ( i = 0; i < 4; i++ ) ihmsf[ i ] = IHMSF[ i ];
+}
+
+F77_SUBROUTINE(sla_dr2tf)( INTEGER(NDP),
+                           DOUBLE(ANGLE),
+                           CHARACTER(SIGN),
+                           INTEGER_ARRAY(IHMSF)
+                           TRAIL(SIGN) );
+
+void
+slaDr2tf( int ndp, double angle, char * sign, int ihmsf[4] )  {
+  DECLARE_INTEGER(NDP);
+  DECLARE_DOUBLE(ANGLE);
+  DECLARE_CHARACTER(SIGN,2);
+  DECLARE_INTEGER_ARRAY(IHMSF,4);
+  int i;
+
+  NDP = ndp;   
+  ANGLE = angle;
+  F77_CALL(sla_dr2tf)( INTEGER_ARG(&NDP),
+		       DOUBLE_ARG(&ANGLE),
+		       CHARACTER_ARG(SIGN),
+		       INTEGER_ARRAY_ARG(IHMSF) 
+		       TRAIL_ARG(SIGN) );
+  sign[0] = SIGN[0];
+  sign[1] = 0;
+  for ( i = 0; i < 4; i++ ) ihmsf[ i ] = IHMSF[ i ];
+}
+
+F77_SUBROUTINE(sla_dimxv)( DOUBLE_ARRAY(DM),
+                           DOUBLE_ARRAY(VA),
+                           DOUBLE_ARRAY(VB) );
+
+void slaDimxv ( double dm[3][3], double va[3], double vb[3] ) {
+   DECLARE_DOUBLE_ARRAY(DM,9);
+   DECLARE_DOUBLE_ARRAY(VA,3);
+   DECLARE_DOUBLE_ARRAY(VB,3);
+   int i;
+   int j;
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) DM[ i + j * 3 ] = dm[ i ][ j ];
+      VA[ i ] = va[ i ];
+   }
+   F77_CALL(sla_dimxv)( DOUBLE_ARRAY_ARG(DM),
+                        DOUBLE_ARRAY_ARG(VA),
+                        DOUBLE_ARRAY_ARG(VB) );
+   for ( i = 0; i < 3; i++ ) vb[ i ] = VB[ i ];
+}
+
+F77_SUBROUTINE(sla_djcal)( INTEGER(NDP),
+                           DOUBLE(DJM),
+                           INTEGER_ARRAY(IYMDF),
+                           INTEGER(J) );
+
+void slaDjcal ( int ndp, double djm, int iymdf[ 4 ], int *j ) {
+   DECLARE_INTEGER(NDP);
+   DECLARE_DOUBLE(DJM);
+   DECLARE_INTEGER_ARRAY(IYMDF,4);
+   DECLARE_INTEGER(J);
+   int i;
+
+   NDP = ndp;
+   DJM = djm;
+   F77_CALL(sla_djcal)( INTEGER_ARG(&NDP),
+                        DOUBLE_ARG(&DJM),
+                        INTEGER_ARRAY_ARG(IYMDF),
+                        INTEGER_ARG(&J) );
+   for ( i = 0; i < 4; i++ ) iymdf[ i ] = IYMDF[ i ];
+   *j = J;
+}
+
+F77_SUBROUTINE(sla_djcl)( DOUBLE(DJM),
+                          INTEGER(IY),
+                          INTEGER(IM),
+                          INTEGER(ID),
+                          DOUBLE(FD),
+                          INTEGER(J) );
+
+void slaDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j ) {
+   DECLARE_DOUBLE(DJM);
+   DECLARE_INTEGER(IY);
+   DECLARE_INTEGER(IM);
+   DECLARE_INTEGER(ID);
+   DECLARE_DOUBLE(FD);
+   DECLARE_INTEGER(J);
+
+   DJM = djm;
+   F77_CALL(sla_djcl)( DOUBLE_ARG(&DJM),
+                       INTEGER_ARG(&IY),
+                       INTEGER_ARG(&IM),
+                       INTEGER_ARG(&ID),
+                       DOUBLE_ARG(&FD),
+                       INTEGER_ARG(&J) );
+   *iy = IY;
+   *im = IM;
+   *id = ID;
+   *fd = FD;
+   *j = J;
+}
+
+F77_SUBROUTINE(sla_dmat)( INTEGER(N),
+                          DOUBLE_ARRAY(A),
+                          DOUBLE_ARRAY(Y),
+                          DOUBLE(D),
+                          INTEGER(JF),
+                          INTEGER_ARRAY(IW) );
+
+void slaDmat ( int n, double *a, double *y, double *d, int *jf, int *iw ) {
+   DECLARE_INTEGER(N);
+   F77_DOUBLE_TYPE *A;
+   F77_DOUBLE_TYPE *Y;
+   DECLARE_DOUBLE(D);
+   DECLARE_INTEGER(JF);
+   F77_INTEGER_TYPE *IW;
+   int i;
+   int j;
+   A = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) ( n * n ) );
+   Y = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) n );
+   if ( sizeof( F77_INTEGER_TYPE ) > sizeof( int ) ) {
+      IW = malloc( sizeof( F77_INTEGER_TYPE ) * (size_t) n );
+   } else {
+      IW = (F77_INTEGER_TYPE *) iw;
+   }
+   if ( IW ) {
+      N = n;
+      for ( i = 0; i < n; i++ ) {
+         for ( j = 0; j < n; j++ ) A[ i + n * j ] = a[ n * i + j ];
+         Y[ i ] = y[ i ];
+      }
+      F77_CALL(sla_dmat)( INTEGER_ARG(&N), DOUBLE_ARRAY_ARG(A),
+                          DOUBLE_ARRAY_ARG(Y), DOUBLE_ARG(&D),
+                          INTEGER_ARG(&JF), INTEGER_ARG(IW) );
+      for ( i = 0; i < n; i++ ) {
+         for ( j = 0; j < n; j++ ) a[ n * i + j ] = A[ i + n * j ];
+         y[ i ] = Y[ i ];
+      }
+      *d = D;
+      *jf = JF;
+   }
+   free( A );
+   free( Y );
+   if ( sizeof( F77_INTEGER_TYPE ) > sizeof( int ) ) free( IW );
+}
+
+F77_SUBROUTINE(sla_dmxm)( DOUBLE_ARRAY(A),
+                          DOUBLE_ARRAY(B),
+                          DOUBLE_ARRAY(C) );
+
+void slaDmxm ( double a[3][3], double b[3][3], double c[3][3] ) {
+   DECLARE_DOUBLE_ARRAY(A,9);
+   DECLARE_DOUBLE_ARRAY(B,9);
+   DECLARE_DOUBLE_ARRAY(C,9);
+   int i;
+   int j;
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) {
+         A[ i + 3 * j ] = a[ i ][ j ];
+         B[ i + 3 * j ] = b[ i ][ j ];
+      }
+   }
+   F77_CALL(sla_dmxm)( DOUBLE_ARRAY_ARG(A),
+                       DOUBLE_ARRAY_ARG(B),
+                       DOUBLE_ARRAY_ARG(C) );
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) c[ i ][ j ] = C[ i + 3 * j ];
+   }
+}
+
+F77_SUBROUTINE(sla_dmxv)( DOUBLE_ARRAY(DM),
+                          DOUBLE_ARRAY(VA),
+                          DOUBLE_ARRAY(VB) );
+
+void slaDmxv ( double dm[3][3], double va[3], double vb[3] ) {
+   DECLARE_DOUBLE_ARRAY(DM,9);
+   DECLARE_DOUBLE_ARRAY(VA,3);
+   DECLARE_DOUBLE_ARRAY(VB,3);
+   int i;
+   int j;
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) DM[ i + 3 * j ] = dm[ i ][ j ];
+      VA[ i ] = va[ i ];
+   }
+   F77_CALL(sla_dmxv)( DOUBLE_ARRAY_ARG(DM),
+                       DOUBLE_ARRAY_ARG(VA),
+                       DOUBLE_ARRAY_ARG(VB) );
+   for ( i = 0; i < 3; i++ ) vb[ i ] = VB[ i ];
+}
+
+F77_DOUBLE_FUNCTION(sla_dbear)( DOUBLE(A1), DOUBLE(B1), 
+                                DOUBLE(A2), DOUBLE(B2) );
+
+double slaDbear ( double a1, double b1, double a2, double b2  ) {
+   DECLARE_DOUBLE(A1);
+   DECLARE_DOUBLE(B1);
+   DECLARE_DOUBLE(A2);
+   DECLARE_DOUBLE(B2);
+   double result;
+   A1 = a1;
+   B1 = b1;
+   A2 = a2;
+   B2 = b2;
+   result = F77_CALL(sla_dbear)( DOUBLE_ARG(&A1), DOUBLE_ARG(&B1), 
+                                 DOUBLE_ARG(&A2), DOUBLE_ARG(&B2) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_drange)( DOUBLE(ANGLE) );
+
+double slaDrange ( double angle ) {
+   DECLARE_DOUBLE(ANGLE);
+   double result;
+   ANGLE = angle;
+   result = F77_CALL(sla_drange)( DOUBLE_ARG(&ANGLE) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_dranrm)( DOUBLE(ANGLE) );
+
+double slaDranrm ( double angle ) {
+   DECLARE_DOUBLE(ANGLE);
+   double result;
+   ANGLE = angle;
+   result = F77_CALL(sla_dranrm)( DOUBLE_ARG(&ANGLE) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_dsep)( DOUBLE(A1),
+                               DOUBLE(B1),
+                               DOUBLE(A2),
+                               DOUBLE(B2) );
+
+double slaDsep ( double a1, double b1, double a2, double b2 ) {
+   DECLARE_DOUBLE(A1);
+   DECLARE_DOUBLE(B1);
+   DECLARE_DOUBLE(A2);
+   DECLARE_DOUBLE(B2);
+   double result;
+   A1 = a1;
+   B1 = b1;
+   A2 = a2;
+   B2 = b2;
+   result = F77_CALL(sla_dsep)( DOUBLE_ARG(&A1),
+                                DOUBLE_ARG(&B1),
+                                DOUBLE_ARG(&A2),
+                                DOUBLE_ARG(&B2) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_dvdv)( DOUBLE_ARRAY(VA),
+                               DOUBLE_ARRAY(VB) );
+
+double slaDvdv( double va[3], double vb[3] ) {
+   DECLARE_DOUBLE_ARRAY(VA,3);
+   DECLARE_DOUBLE_ARRAY(VB,3);
+   double result;
+   int i;
+   for ( i = 0; i < 3; i++ ) {
+      VA[ i ] = va[ i ];
+      VB[ i ] = vb[ i ];
+   }
+   result = F77_CALL(sla_dvdv)( DOUBLE_ARRAY_ARG(VA),
+                                DOUBLE_ARRAY_ARG(VB) );
+   return result;
+}
+
+F77_SUBROUTINE(sla_dtf2d)( INTEGER(IHOUR),
+                           INTEGER(IMIN),
+                           DOUBLE(SEC),
+                           DOUBLE(DAYS),
+                           INTEGER(J) );
+
+void slaDtf2d ( int ihour, int imin, double sec, double *days, int *j ) {
+   DECLARE_INTEGER(IHOUR);
+   DECLARE_INTEGER(IMIN);
+   DECLARE_DOUBLE(SEC);
+   DECLARE_DOUBLE(DAYS);
+   DECLARE_INTEGER(J);
+   IHOUR = ihour;
+   IMIN = imin;
+   SEC = sec;
+   F77_CALL(sla_dtf2d)( INTEGER_ARG(&IHOUR),
+                        INTEGER_ARG(&IMIN),
+                        DOUBLE_ARG(&SEC),
+                        DOUBLE_ARG(&DAYS),
+                        INTEGER_ARG(&J) );
+   *days = DAYS;
+   *j = J;
+}
+
+F77_SUBROUTINE(sla_dtf2r)( INTEGER(IHOUR),
+                           INTEGER(IMIN),
+                           DOUBLE(SEC),
+                           DOUBLE(RAD),
+                           INTEGER(J) );
+
+void slaDtf2r ( int ihour, int imin, double sec, double *rad, int *j ) {
+   DECLARE_INTEGER(IHOUR);
+   DECLARE_INTEGER(IMIN);
+   DECLARE_DOUBLE(SEC);
+   DECLARE_DOUBLE(RAD);
+   DECLARE_INTEGER(J);
+   IHOUR = ihour;
+   IMIN = imin;
+   SEC = sec;
+   F77_CALL(sla_dtf2r)( INTEGER_ARG(&IHOUR),
+                        INTEGER_ARG(&IMIN),
+                        DOUBLE_ARG(&SEC),
+                        DOUBLE_ARG(&RAD),
+                        INTEGER_ARG(&J) );
+   *rad = RAD;
+   *j = J;
+}
+
+F77_DOUBLE_FUNCTION(sla_dt)( DOUBLE(EPOCH) );
+
+double slaDt ( double epoch ) 
+{
+    DECLARE_DOUBLE(EPOCH);
+    double result;
+    EPOCH = epoch;
+    result = F77_CALL(sla_dt)( DOUBLE_ARG(&EPOCH) );
+    return result;
+}
+
+F77_SUBROUTINE(sla_dvn)( DOUBLE_ARRAY(V),
+                         DOUBLE_ARRAY(UV),
+                         DOUBLE(VM) );
+
+void slaDvn ( double v[3], double uv[3], double *vm ) {
+   DECLARE_DOUBLE_ARRAY(V,3);
+   DECLARE_DOUBLE_ARRAY(UV,3);
+   DECLARE_DOUBLE(VM);
+   int i;
+   for ( i = 0; i < 3; i++ ) V[ i ] = v[ i ];
+   F77_CALL(sla_dvn)( DOUBLE_ARRAY_ARG(V),
+                      DOUBLE_ARRAY_ARG(UV),
+                      DOUBLE_ARG(&VM) );
+   for ( i = 0; i < 3; i++ ) uv[ i ] = UV[ i ];
+   *vm = VM;
+}
+
+F77_SUBROUTINE(sla_dvxv)( DOUBLE_ARRAY(VA),
+                          DOUBLE_ARRAY(VB),
+                          DOUBLE_ARRAY(VC) );
+
+void slaDvxv ( double va[3], double vb[3], double vc[3] ) {
+   DECLARE_DOUBLE_ARRAY(VA,3);
+   DECLARE_DOUBLE_ARRAY(VB,3);
+   DECLARE_DOUBLE_ARRAY(VC,3);
+   int i;
+   for ( i = 0; i < 3; i++ ) {
+      VA[ i ] = va[ i ];
+      VB[ i ] = vb[ i ];
+   }
+   F77_CALL(sla_dvxv)( DOUBLE_ARRAY_ARG(VA),
+                       DOUBLE_ARRAY_ARG(VB),
+                       DOUBLE_ARRAY_ARG(VC) );
+   for ( i = 0; i < 3; i++ ) vc[ i ] = VC[ i ];
+}
+
+F77_SUBROUTINE(sla_ecmat)( DOUBLE(DATE),
+                           DOUBLE_ARRAY(RMAT) );
+
+void slaEcmat ( double date, double rmat[3][3] ) {
+   DECLARE_DOUBLE(DATE);
+   DECLARE_DOUBLE_ARRAY(RMAT,9);
+   int i;
+   int j;
+   DATE = date;
+   F77_CALL(sla_ecmat)( DOUBLE_ARG(&DATE),
+                        DOUBLE_ARRAY_ARG(RMAT) );
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) rmat[ i ][ j ] = RMAT[ i + 3 * j ];
+   }
+}
+
+F77_DOUBLE_FUNCTION(sla_epb)( DOUBLE(DATE) );
+
+double slaEpb ( double date ) {
+   DECLARE_DOUBLE(DATE);
+   double result;
+   DATE = date;
+   result = F77_CALL(sla_epb)( DOUBLE_ARG(&DATE) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_epb2d)( DOUBLE(EPB) );
+
+double slaEpb2d ( double epb ) {
+   DECLARE_DOUBLE(EPB);
+   double result;
+   EPB = epb;
+   result = F77_CALL(sla_epb2d)( DOUBLE_ARG(&EPB) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_epj)( DOUBLE(DATE) );
+
+double slaEpj ( double date ) {
+   DECLARE_DOUBLE(DATE);
+   double result;
+   DATE = date;
+   result = F77_CALL(sla_epj)( DOUBLE_ARG(&DATE) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_epj2d)( DOUBLE(EPJ) );
+
+double slaEpj2d ( double epj ) {
+   DECLARE_DOUBLE(EPJ);
+   double result;
+   EPJ = epj;
+   result = F77_CALL(sla_epj2d)( DOUBLE_ARG(&EPJ) );
+   return result;
+}
+
+F77_DOUBLE_FUNCTION(sla_eqeqx)( DOUBLE(DATE) );
+
+double slaEqeqx ( double date ) {
+   DECLARE_DOUBLE(DATE);
+   double result;
+   DATE = date; 
+   result = F77_CALL(sla_eqeqx)( DOUBLE_ARG(&DATE) );
+   return result;
+}
+
+F77_SUBROUTINE(sla_eqgal)( DOUBLE(DR),
+                           DOUBLE(DD),
+                           DOUBLE(DL),
+                           DOUBLE(DB) );
+
+void slaEqgal ( double dr, double dd, double *dl, double *db ) {
+   DECLARE_DOUBLE(DR);
+   DECLARE_DOUBLE(DD);
+   DECLARE_DOUBLE(DL);
+   DECLARE_DOUBLE(DB);
+   DR = dr;
+   DD = dd;
+   F77_CALL(sla_eqgal)( DOUBLE_ARG(&DR),
+                        DOUBLE_ARG(&DD),
+                        DOUBLE_ARG(&DL),
+                        DOUBLE_ARG(&DB) );
+   *dl = DL;
+   *db = DB;
+}
+
+F77_SUBROUTINE(sla_fk45z)( DOUBLE(R1950),
+                           DOUBLE(D1950),
+                           DOUBLE(BEPOCH),
+                           DOUBLE(R2000),
+                           DOUBLE(D2000) );
+
+void slaFk45z ( double r1950, double d1950, double bepoch,
+                double *r2000, double *d2000 ) {
+   DECLARE_DOUBLE(R1950);
+   DECLARE_DOUBLE(D1950);
+   DECLARE_DOUBLE(BEPOCH);
+   DECLARE_DOUBLE(R2000);
+   DECLARE_DOUBLE(D2000);
+   R1950 = r1950;
+   D1950 = d1950;
+   BEPOCH = bepoch;
+   F77_CALL(sla_fk45z)( DOUBLE_ARG(&R1950),
+                        DOUBLE_ARG(&D1950),
+                        DOUBLE_ARG(&BEPOCH),
+                        DOUBLE_ARG(&R2000),
+                        DOUBLE_ARG(&D2000) );
+   *r2000 = R2000;
+   *d2000 = D2000;
+}
+
+F77_SUBROUTINE(sla_fk54z)( DOUBLE(R2000),
+                           DOUBLE(D2000),
+                           DOUBLE(BEPOCH),
+                           DOUBLE(R1950),
+                           DOUBLE(D1950),
+                           DOUBLE(DR1950),
+                           DOUBLE(DD1950) );
+
+void slaFk54z ( double r2000, double d2000, double bepoch,
+                double *r1950, double *d1950,
+                double *dr1950, double *dd1950 ) {
+   DECLARE_DOUBLE(R2000);
+   DECLARE_DOUBLE(D2000);
+   DECLARE_DOUBLE(BEPOCH);
+   DECLARE_DOUBLE(R1950);
+   DECLARE_DOUBLE(D1950);
+   DECLARE_DOUBLE(DR1950);
+   DECLARE_DOUBLE(DD1950);
+   R2000 = r2000;
+   D2000 = d2000;
+   BEPOCH = bepoch;
+   F77_CALL(sla_fk54z)( DOUBLE_ARG(&R2000),
+                        DOUBLE_ARG(&D2000),
+                        DOUBLE_ARG(&BEPOCH),
+                        DOUBLE_ARG(&R1950),
+                        DOUBLE_ARG(&D1950),
+                        DOUBLE_ARG(&DR1950),
+                        DOUBLE_ARG(&DD1950) );
+   *r1950 = R1950;
+   *d1950 = D1950;
+   *dr1950 = DR1950;
+   *dd1950 = DD1950;
+}
+
+F77_SUBROUTINE(sla_galeq)( DOUBLE(DL),
+                           DOUBLE(DB),
+                           DOUBLE(DR),
+                           DOUBLE(DD) );
+
+void slaGaleq ( double dl, double db, double *dr, double *dd ) {
+   DECLARE_DOUBLE(DL);
+   DECLARE_DOUBLE(DB);
+   DECLARE_DOUBLE(DR);
+   DECLARE_DOUBLE(DD);
+   DL = dl;
+   DB = db;
+   F77_CALL(sla_galeq)( DOUBLE_ARG(&DL),
+                        DOUBLE_ARG(&DB),
+                        DOUBLE_ARG(&DR),
+                        DOUBLE_ARG(&DD) );
+   *dr = DR;
+   *dd = DD;
+}
+
+F77_SUBROUTINE(sla_galsup)( DOUBLE(DL),
+                            DOUBLE(DB),
+                            DOUBLE(DSL),
+                            DOUBLE(DSB) );
+
+void slaGalsup ( double dl, double db, double *dsl, double *dsb ) {
+   DECLARE_DOUBLE(DL);
+   DECLARE_DOUBLE(DB);
+   DECLARE_DOUBLE(DSL);
+   DECLARE_DOUBLE(DSB);
+   DL = dl;
+   DB = db;
+   F77_CALL(sla_galsup)( DOUBLE_ARG(&DL),
+                         DOUBLE_ARG(&DB),
+                         DOUBLE_ARG(&DSL),
+                         DOUBLE_ARG(&DSB) );
+   *dsl = DSL;
+   *dsb = DSB;
+}
+
+F77_DOUBLE_FUNCTION(sla_gmst)( DOUBLE(UT1) );
+
+double slaGmst ( double ut1 ) {
+   DECLARE_DOUBLE(UT1);
+   double result;
+   UT1 = ut1;
+   result = F77_CALL(sla_gmst)( DOUBLE_ARG(&UT1) );
+   return result;
+}
+
+F77_SUBROUTINE(sla_mappa)( DOUBLE(EQ),
+                           DOUBLE(DATE),
+                           DOUBLE_ARRAY(AMPRMS) );
+
+void slaMappa ( double eq, double date, double amprms[21] ) {
+   DECLARE_DOUBLE(EQ);
+   DECLARE_DOUBLE(DATE);
+   DECLARE_DOUBLE_ARRAY(AMPRMS,21);
+   int i;
+   EQ = eq;
+   DATE = date;
+   F77_CALL(sla_mappa)( DOUBLE_ARG(&EQ),
+                        DOUBLE_ARG(&DATE),
+                        DOUBLE_ARRAY_ARG(AMPRMS) );
+   for ( i = 0; i < 21; i++ ) amprms[ i ] = AMPRMS[ i ];
+}
+
+F77_SUBROUTINE(sla_mapqkz)( DOUBLE(RM),
+                            DOUBLE(DM),
+                            DOUBLE_ARRAY(AMPRMS),
+                            DOUBLE(RA),
+                            DOUBLE(DA) );
+
+void slaMapqkz ( double rm, double dm, double amprms[21],
+                 double *ra, double *da ) {
+   DECLARE_DOUBLE(RM);
+   DECLARE_DOUBLE(DM);
+   DECLARE_DOUBLE_ARRAY(AMPRMS,21);
+   DECLARE_DOUBLE(RA);
+   DECLARE_DOUBLE(DA);
+   int i;
+   RM = rm;
+   DM = dm;
+   for ( i = 0; i < 21; i++ ) AMPRMS[ i ] = amprms[ i ];
+   F77_CALL(sla_mapqkz)( DOUBLE_ARG(&RM),
+                         DOUBLE_ARG(&DM),
+                         DOUBLE_ARRAY_ARG(AMPRMS),
+                         DOUBLE_ARG(&RA),
+                         DOUBLE_ARG(&DA) );
+   *ra = RA;
+   *da = DA;
+}
+
+F77_SUBROUTINE(sla_prebn)( DOUBLE(BEP0),
+                           DOUBLE(BEP1),
+                           DOUBLE_ARRAY(RMATP) );
+
+void slaPrebn ( double bep0, double bep1, double rmatp[3][3] ) {
+   DECLARE_DOUBLE(BEP0);
+   DECLARE_DOUBLE(BEP1);
+   DECLARE_DOUBLE_ARRAY(RMATP,9);
+   int i;
+   int j;
+   BEP0 = bep0;
+   BEP1 = bep1;
+   F77_CALL(sla_prebn)( DOUBLE_ARG(&BEP0),
+                        DOUBLE_ARG(&BEP1),
+                        DOUBLE_ARRAY_ARG(RMATP) );
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) rmatp[ i ][ j ] = RMATP[ i + 3 * j ];
+   }
+}
+
+F77_SUBROUTINE(sla_prec)( DOUBLE(EP0),
+                          DOUBLE(EP1),
+                          DOUBLE_ARRAY(RMATP) );
+
+void slaPrec ( double ep0, double ep1, double rmatp[3][3] ) {
+   DECLARE_DOUBLE(EP0);
+   DECLARE_DOUBLE(EP1);
+   DECLARE_DOUBLE_ARRAY(RMATP,9);
+   int i;
+   int j;
+   EP0 = ep0;
+   EP1 = ep1;
+   F77_CALL(sla_prec)( DOUBLE_ARG(&EP0),
+                       DOUBLE_ARG(&EP1),
+                       DOUBLE_ARRAY_ARG(RMATP) );
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) rmatp[ i ][ j ] = RMATP[ i + 3 * j ];
+   }
+}
+
+F77_REAL_FUNCTION(sla_rverot)( REAL(PHI),
+                               REAL(RA),
+                               REAL(DEC),
+                               REAL(ST) );
+
+float slaRverot ( float phi, float ra, float dec, float st ) {
+   DECLARE_REAL(PHI);
+   DECLARE_REAL(RA);
+   DECLARE_REAL(DEC);
+   DECLARE_REAL(ST);
+   float result;
+   PHI = phi;
+   RA = ra;
+   DEC = dec;
+   ST = st;
+   result = F77_CALL(sla_rverot)( REAL_ARG(&PHI),
+                                  REAL_ARG(&RA),
+                                  REAL_ARG(&DEC),
+                                  REAL_ARG(&ST) );
+   return result;
+}
+
+F77_REAL_FUNCTION(sla_rvgalc)( REAL(RA),
+                               REAL(DEC) );
+
+float slaRvgalc ( float ra, float dec ) {
+   DECLARE_REAL(RA);
+   DECLARE_REAL(DEC);
+   float result;
+   RA = ra;
+   DEC = dec;
+   result = F77_CALL(sla_rvgalc)( REAL_ARG(&RA),
+                                  REAL_ARG(&DEC) );
+   return result;
+}
+
+F77_REAL_FUNCTION(sla_rvlg)( REAL(RA),
+                             REAL(DEC) );
+
+float slaRvlg ( float ra, float dec ) {
+   DECLARE_REAL(RA);
+   DECLARE_REAL(DEC);
+   float result;
+   RA = ra;
+   DEC = dec;
+   result = F77_CALL(sla_rvlg)( REAL_ARG(&RA),
+                                REAL_ARG(&DEC) );
+   return result;
+}
+
+F77_REAL_FUNCTION(sla_rvlsrd)( REAL(RA),
+                               REAL(DEC) );
+
+float slaRvlsrd ( float ra, float dec ) {
+   DECLARE_REAL(RA);
+   DECLARE_REAL(DEC);
+   float result;
+   RA = ra;
+   DEC = dec;
+   result = F77_CALL(sla_rvlsrd)( REAL_ARG(&RA),
+                                  REAL_ARG(&DEC) );
+   return result;
+}
+
+F77_REAL_FUNCTION(sla_rvlsrk)( REAL(RA),
+                               REAL(DEC) );
+
+float slaRvlsrk ( float ra, float dec ) {
+   DECLARE_REAL(RA);
+   DECLARE_REAL(DEC);
+   float result;
+   RA = ra;
+   DEC = dec;
+   result = F77_CALL(sla_rvlsrk)( REAL_ARG(&RA),
+                                  REAL_ARG(&DEC) );
+   return result;
+}
+
+
+F77_SUBROUTINE(sla_subet)( DOUBLE(RC),
+                           DOUBLE(DC),
+                           DOUBLE(EQ),
+                           DOUBLE(RM),
+                           DOUBLE(DM) );
+
+void slaSubet ( double rc, double dc, double eq, double *rm, double *dm ) {
+   DECLARE_DOUBLE(RC);
+   DECLARE_DOUBLE(DC);
+   DECLARE_DOUBLE(EQ);
+   DECLARE_DOUBLE(RM);
+   DECLARE_DOUBLE(DM);
+   RC = rc;
+   DC = dc;
+   EQ = eq;
+   F77_CALL(sla_subet)( DOUBLE_ARG(&RC),
+                        DOUBLE_ARG(&DC),
+                        DOUBLE_ARG(&EQ),
+                        DOUBLE_ARG(&RM),
+                        DOUBLE_ARG(&DM) );
+   *rm = RM;
+   *dm = DM;
+}
+
+F77_SUBROUTINE(sla_supgal)( DOUBLE(DSL),
+                            DOUBLE(DSB),
+                            DOUBLE(DL),
+                            DOUBLE(DB) );
+
+void slaSupgal ( double dsl, double dsb, double *dl, double *db ) {
+   DECLARE_DOUBLE(DSL);
+   DECLARE_DOUBLE(DSB);
+   DECLARE_DOUBLE(DL);
+   DECLARE_DOUBLE(DB);
+   DSL = dsl;
+   DSB = dsb;
+   F77_CALL(sla_supgal)( DOUBLE_ARG(&DSL),
+                         DOUBLE_ARG(&DSB),
+                         DOUBLE_ARG(&DL),
+                         DOUBLE_ARG(&DB) );
+   *dl = DL;
+   *db = DB;
+}
+
+
+
+F77_SUBROUTINE(sla_svd)( INTEGER(M),
+                         INTEGER(N),
+                         INTEGER(MP),
+                         INTEGER(NP),
+                         DOUBLE_ARRAY(A),
+                         DOUBLE_ARRAY(W),
+                         DOUBLE_ARRAY(V),
+                         DOUBLE_ARRAY(WORK),
+                         INTEGER(JSTAT) );
+
+void slaSvd ( int m, int n, int mp, int np,
+              double *a, double *w, double *v, double *work,
+              int *jstat ){
+   DECLARE_INTEGER(M);
+   DECLARE_INTEGER(N);
+   DECLARE_INTEGER(MP);
+   DECLARE_INTEGER(NP);
+   F77_DOUBLE_TYPE *A;
+   F77_DOUBLE_TYPE *W;
+   F77_DOUBLE_TYPE *V;
+   F77_DOUBLE_TYPE *WORK;
+   DECLARE_INTEGER(JSTAT);
+
+
+   int i;
+   int j;
+
+   A = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) ( mp * np ) );
+   W = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) n );
+   V = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) ( np * np ) );
+   WORK = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) n );
+
+   if ( WORK ) {
+      M = m;
+      N = n;
+      MP = mp;
+      NP = np;
+
+      for ( i = 0; i < m; i++ ) {
+         for ( j = 0; j < n; j++ ) A[ i + mp * j ] = a[ np * i + j ];
+      }
+
+      F77_CALL(sla_svd)( INTEGER_ARG(&M),
+                         INTEGER_ARG(&N),
+                         INTEGER_ARG(&MP),
+                         INTEGER_ARG(&NP),
+                         DOUBLE_ARRAY_ARG(A),
+                         DOUBLE_ARRAY_ARG(W),
+                         DOUBLE_ARRAY_ARG(V),
+                         DOUBLE_ARRAY_ARG(WORK),
+                         INTEGER_ARG(&JSTAT) );
+
+
+      for ( i = 0; i < m; i++ ) {
+         for ( j = 0; j < n; j++ ) a[ np * i + j ] = A[ i + mp * j ];
+      }
+
+      for ( i = 0; i < n; i++ ) {
+         w[ i ] = W[ i ];
+         work[ i ] = WORK[ i ];
+         for ( j = 0; j < n; j++ ) v[ np * i + j ] = V[ i + np * j ];
+      }
+
+      *jstat = JSTAT;
+   }
+
+   free( A );
+   free( W );
+   free( V );
+   free( WORK );
+}
+
+F77_SUBROUTINE(sla_svdsol)( INTEGER(M),
+                         INTEGER(N),
+                         INTEGER(MP),
+                         INTEGER(NP),
+                         DOUBLE_ARRAY(B),
+                         DOUBLE_ARRAY(U),
+                         DOUBLE_ARRAY(W),
+                         DOUBLE_ARRAY(V),
+                         DOUBLE_ARRAY(WORK),
+                         DOUBLE_ARRAY(X) );
+
+void slaSvdsol ( int m, int n, int mp, int np,
+                 double *b, double *u, double *w, double *v,
+                 double *work, double *x ){
+
+   DECLARE_INTEGER(M);
+   DECLARE_INTEGER(N);
+   DECLARE_INTEGER(MP);
+   DECLARE_INTEGER(NP);
+   F77_DOUBLE_TYPE *B;
+   F77_DOUBLE_TYPE *U;
+   F77_DOUBLE_TYPE *W;
+   F77_DOUBLE_TYPE *V;
+   F77_DOUBLE_TYPE *WORK;
+   F77_DOUBLE_TYPE *X;
+
+   int i;
+   int j;
+
+   B = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) ( m ) );
+   U = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) ( mp * np ) );
+   W = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) n );
+   V = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) ( np * np ) );
+   WORK = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) n );
+   X = malloc( sizeof( F77_DOUBLE_TYPE ) * (size_t) n );
+
+   if ( X ) {
+      M = m;
+      N = n;
+      MP = mp;
+      NP = np;
+
+      for ( i = 0; i < m; i++ ) {
+         B[ i ] = b[ i ];
+         for ( j = 0; j < n; j++ ) U[ i + mp * j ] = u[ np * i + j ];
+      }
+      for ( i = 0; i < n; i++ ) {
+         W[ i ] = w[ i ];
+         for ( j = 0; j < n; j++ ) V[ i + np * j ] = v[ np * i + j ];
+      }
+
+      F77_CALL(sla_svdsol)( INTEGER_ARG(&M),
+                         INTEGER_ARG(&N),
+                         INTEGER_ARG(&MP),
+                         INTEGER_ARG(&NP),
+                         DOUBLE_ARRAY_ARG(B),
+                         DOUBLE_ARRAY_ARG(U),
+                         DOUBLE_ARRAY_ARG(W),
+                         DOUBLE_ARRAY_ARG(V),
+                         DOUBLE_ARRAY_ARG(WORK),
+                         DOUBLE_ARRAY_ARG(X) );
+
+      for ( i = 0; i < n; i++ ) {
+         x[ i ] = X[ i ];
+         work[ i ] = WORK[ i ];
+      }
+   }
+
+   free( B );
+   free( U );
+   free( W );
+   free( V );
+   free( WORK );
+   free( X );
+}
+
+
+
+F77_SUBROUTINE(sla_evp)( DOUBLE(DATE), 
+                         DOUBLE(DEQX),
+                         DOUBLE_ARRAY(DVB),
+                         DOUBLE_ARRAY(DPB),
+                         DOUBLE_ARRAY(DVH),
+                         DOUBLE_ARRAY(DPH) );
+
+void slaEvp ( double date, double deqx, double dvb[3], double dpb[3], 
+              double dvh[3], double dph[3] ) {
+   DECLARE_DOUBLE(DATE);
+   DECLARE_DOUBLE(DEQX);
+   DECLARE_DOUBLE_ARRAY(DVB,3);
+   DECLARE_DOUBLE_ARRAY(DPB,3);
+   DECLARE_DOUBLE_ARRAY(DVH,3);
+   DECLARE_DOUBLE_ARRAY(DPH,3);
+
+   int i;
+   DATE = date;
+   DEQX = deqx;
+   F77_CALL(sla_evp)( DOUBLE_ARG(&DATE),
+                      DOUBLE_ARG(&DEQX),
+                      DOUBLE_ARRAY_ARG(DVB),
+                      DOUBLE_ARRAY_ARG(DPB),
+                      DOUBLE_ARRAY_ARG(DVH),
+                      DOUBLE_ARRAY_ARG(DPH) );
+   for ( i = 0; i < 3; i++ ) {
+      dvb[ i ] = DVB[ i ];
+      dpb[ i ] = DPB[ i ];
+      dvh[ i ] = DVH[ i ];
+      dph[ i ] = DPH[ i ];
+   }
+
+}
+
+F77_SUBROUTINE(sla_fk5hz)( DOUBLE(R5),
+                           DOUBLE(D5),
+                           DOUBLE(JEPOCH),
+                           DOUBLE(RH),
+                           DOUBLE(DH) );
+
+void slaFk5hz ( double r5, double d5, double jepoch,
+                double *rh, double *dh ) {
+   DECLARE_DOUBLE(R5);
+   DECLARE_DOUBLE(D5);
+   DECLARE_DOUBLE(JEPOCH);
+   DECLARE_DOUBLE(RH);
+   DECLARE_DOUBLE(DH);
+   R5 = r5;
+   D5 = d5;
+   JEPOCH = jepoch;
+   F77_CALL(sla_fk5hz)( DOUBLE_ARG(&R5),
+                        DOUBLE_ARG(&D5),
+                        DOUBLE_ARG(&JEPOCH),
+                        DOUBLE_ARG(&RH),
+                        DOUBLE_ARG(&DH) );
+   *rh = RH;
+   *dh = DH;
+}
+
+F77_SUBROUTINE(sla_hfk5z)( DOUBLE(RH),
+                           DOUBLE(DH),
+                           DOUBLE(JEPOCH),
+                           DOUBLE(R5),
+                           DOUBLE(D5),
+                           DOUBLE(DR5),
+                           DOUBLE(DD5) );
+
+void slaHfk5z ( double rh, double dh, double jepoch,
+                double *r5, double *d5,
+                double *dr5, double *dd5 ) {
+   DECLARE_DOUBLE(RH);
+   DECLARE_DOUBLE(DH);
+   DECLARE_DOUBLE(JEPOCH);
+   DECLARE_DOUBLE(R5);
+   DECLARE_DOUBLE(D5);
+   DECLARE_DOUBLE(DR5);
+   DECLARE_DOUBLE(DD5);
+   RH = rh;
+   DH = dh;
+   JEPOCH = jepoch;
+   F77_CALL(sla_hfk5z)( DOUBLE_ARG(&RH),
+                        DOUBLE_ARG(&DH),
+                        DOUBLE_ARG(&JEPOCH),
+                        DOUBLE_ARG(&R5),
+                        DOUBLE_ARG(&D5),
+                        DOUBLE_ARG(&DR5),
+                        DOUBLE_ARG(&DD5) );
+   *r5 = R5;
+   *d5 = D5;
+   *dr5 = DR5;
+   *dd5 = DD5;
+}
+
+F77_SUBROUTINE(sla_geoc)( DOUBLE(P),
+                          DOUBLE(H),
+                          DOUBLE(R),
+                          DOUBLE(Z) );
+
+void slaGeoc ( double p, double h, double *r, double *z ) {
+   DECLARE_DOUBLE(P);
+   DECLARE_DOUBLE(H);
+   DECLARE_DOUBLE(R);
+   DECLARE_DOUBLE(Z);
+   P = p;
+   H = h;
+   F77_CALL(sla_geoc)( DOUBLE_ARG(&P),
+                       DOUBLE_ARG(&H),
+                       DOUBLE_ARG(&R),
+                       DOUBLE_ARG(&Z) );
+   *r = R;
+   *z = Z;
+}
+
+
+F77_SUBROUTINE(sla_deuler)( CHARACTER(ORDER),
+                            DOUBLE(PHI),
+                            DOUBLE(THETA),
+                            DOUBLE(PSI),
+                            DOUBLE_ARRAY(RMAT)
+                            TRAIL(ORDER) );
+
+void slaDeuler ( char *order, double phi, double theta, double psi,
+                 double rmat[3][3] ) {
+
+   DECLARE_CHARACTER(ORDER,4);
+   DECLARE_DOUBLE(PHI);
+   DECLARE_DOUBLE(THETA);
+   DECLARE_DOUBLE(PSI);
+   DECLARE_DOUBLE_ARRAY(RMAT,9);
+   int i,j;
+
+   PHI   = phi;
+   THETA = theta;
+   PSI   = psi;
+
+   slaStringExport( order, ORDER, 4 );
+
+   F77_CALL (sla_deuler) ( CHARACTER_ARG(ORDER),
+                           DOUBLE_ARG(&PHI),
+                           DOUBLE_ARG(&THETA),
+                           DOUBLE_ARG(&PSI),
+                           DOUBLE_ARRAY_ARG(RMAT) 
+                           TRAIL_ARG(ORDER) );
+
+   for ( i = 0; i < 3; i++ ) {
+      for ( j = 0; j < 3; j++ ) rmat[ i ][ j ] = RMAT[ i + 3 * j ];
+   }
+
+}
+
+
+F77_SUBROUTINE(sla_de2h)( DOUBLE(HA),
+                          DOUBLE(DEC),
+                          DOUBLE(PHI),
+                          DOUBLE(AZ),
+                          DOUBLE(EL) );
+
+void slaDe2h ( double ha, double dec, double phi, double *az, double *el ) {
+   DECLARE_DOUBLE(HA);
+   DECLARE_DOUBLE(DEC);
+   DECLARE_DOUBLE(PHI);
+   DECLARE_DOUBLE(AZ);
+   DECLARE_DOUBLE(EL);
+   HA = ha;
+   DEC = dec;
+   PHI = phi;
+   F77_CALL(sla_de2h)( DOUBLE_ARG(&HA),
+                       DOUBLE_ARG(&DEC),
+                       DOUBLE_ARG(&PHI),
+                       DOUBLE_ARG(&AZ),
+                       DOUBLE_ARG(&EL) );
+   *az = AZ;
+   *el = EL;
+}
+
+F77_SUBROUTINE(sla_dh2e)( DOUBLE(AZ),
+                          DOUBLE(EL),
+                          DOUBLE(PHI),
+                          DOUBLE(HA),
+                          DOUBLE(DEC) );
+
+void slaDh2e ( double az, double el, double phi, double *ha, double *dec ) {
+   DECLARE_DOUBLE(AZ);
+   DECLARE_DOUBLE(EL);
+   DECLARE_DOUBLE(PHI);
+   DECLARE_DOUBLE(HA);
+   DECLARE_DOUBLE(DEC);
+   AZ = az;
+   EL = el;
+   PHI = phi;
+   F77_CALL(sla_dh2e)( DOUBLE_ARG(&AZ),
+                       DOUBLE_ARG(&EL),
+                       DOUBLE_ARG(&PHI),
+                       DOUBLE_ARG(&HA),
+                       DOUBLE_ARG(&DEC) );
+   *ha = HA;
+   *dec = DEC;
+}
+
+
+F77_SUBROUTINE(sla_obs)( INTEGER(I),
+			 CHARACTER(C),
+			 CHARACTER(NAME),
+			 DOUBLE(W),
+			 DOUBLE(P),
+			 DOUBLE(H)
+			 TRAIL(C)
+			 TRAIL(NAME) );
+
+/* Note that SLA insists that "c" has space for 10 characters + nul
+   and "name" has space for 40 characters + nul */
+
+void
+slaObs( int n, char *c, char *name, double *w, double *p, double *h  ) {
+
+  DECLARE_INTEGER( N );
+  DECLARE_CHARACTER( C, 10 );
+  DECLARE_CHARACTER( NAME, 40 );
+  DECLARE_DOUBLE( W );
+  DECLARE_DOUBLE( P );
+  DECLARE_DOUBLE( H );
+
+  if (n < 1) {
+    /* C needs to be imported */
+    slaStringExport( c, C, 10 );
+  } else {
+    /* initialise C */
+    slaStringExport( "", C, 10 );
+  }
+  F77_EXPORT_INTEGER( n, N );
+
+  /* w, p and h are not touched on error but for consistency this means
+     we copy the current values to Fortran so that we can correctly copy
+     back the result. */
+  F77_EXPORT_DOUBLE( *w, W );
+  F77_EXPORT_DOUBLE( *p, P );
+  F77_EXPORT_DOUBLE( *h, H );
+
+  /* call the routine */
+  F77_CALL(sla_obs)( INTEGER_ARG(&N),
+		     CHARACTER_ARG(C),
+		     CHARACTER_ARG(NAME),
+		     DOUBLE_ARG(&W),
+		     DOUBLE_ARG(&P),
+		     DOUBLE_ARG(&H)
+		     TRAIL_ARG(C)
+		     TRAIL_ARG(NAME) );
+
+  /* extract results */
+  slaStringImport( NAME, 40, name );
+  if (n > 0 && name[0] != '?') {
+    /* only do this if we know we used a numeric input and if the result
+       for the NAME is not '?' (since we are not allowed to alter the string
+       in that case). This allows people
+       to call slaObs with a string constant */
+    slaStringImport( C, 10, c );
+  }
+  F77_IMPORT_DOUBLE( W, *w );
+  F77_IMPORT_DOUBLE( P, *p );
+  F77_IMPORT_DOUBLE( H, *h );
+
+}
+
+F77_DOUBLE_FUNCTION(sla_pa)( DOUBLE(HA), DOUBLE(DEC), DOUBLE(PHI) );
+
+double
+slaPa ( double ha, double dec, double phi ) {
+  DECLARE_DOUBLE(HA);
+  DECLARE_DOUBLE(DEC);
+  DECLARE_DOUBLE(PHI);
+  DECLARE_DOUBLE(RETVAL);
+  double retval;
+
+  F77_EXPORT_DOUBLE( ha, HA );
+  F77_EXPORT_DOUBLE( dec, DEC );
+  F77_EXPORT_DOUBLE( phi, PHI );
+
+  RETVAL = F77_CALL(sla_pa)( DOUBLE_ARG(&HA), DOUBLE_ARG(&DEC), DOUBLE_ARG(&PHI));
+
+  F77_IMPORT_DOUBLE( RETVAL, retval );
+  return retval;
+}
+
+F77_DOUBLE_FUNCTION(sla_dtt)( DOUBLE(UTC) );
+
+double
+slaDtt( double utc ) {
+  DECLARE_DOUBLE(UTC);
+  DECLARE_DOUBLE(RETVAL);
+  double retval;
+
+  F77_EXPORT_DOUBLE( utc, UTC );
+  RETVAL = F77_CALL(sla_dtt)( DOUBLE_ARG(&UTC) );
+
+  F77_IMPORT_DOUBLE( RETVAL, retval );
+  return retval;
+}
+
+F77_DOUBLE_FUNCTION(sla_dat)( DOUBLE(UTC) );
+
+double
+slaDat( double utc ) {
+  DECLARE_DOUBLE(UTC);
+  DECLARE_DOUBLE(RETVAL);
+  double retval;
+
+  F77_EXPORT_DOUBLE( utc, UTC );
+  RETVAL = F77_CALL(sla_dat)( DOUBLE_ARG(&UTC) );
+
+  F77_IMPORT_DOUBLE( RETVAL, retval );
+  return retval;
+}
+
+F77_SUBROUTINE(sla_rdplan)(DOUBLE(DATE), INTEGER(I), DOUBLE(ELONG), DOUBLE(PHI),
+			   DOUBLE(RA), DOUBLE(DEC), DOUBLE(DIAM) );
+
+void
+slaRdplan( double date, int i, double elong, double phi,
+	   double * ra, double * dec, double * diam ) {
+  DECLARE_DOUBLE(DATE);
+  DECLARE_INTEGER(I);
+  DECLARE_DOUBLE(ELONG);
+  DECLARE_DOUBLE(PHI);
+  DECLARE_DOUBLE(RA);
+  DECLARE_DOUBLE(DEC);
+  DECLARE_DOUBLE(DIAM);
+
+  F77_EXPORT_DOUBLE( date, DATE );
+  F77_EXPORT_INTEGER( i, I );
+  F77_EXPORT_DOUBLE( elong, ELONG );
+  F77_EXPORT_DOUBLE( phi, PHI );
+
+  F77_CALL(sla_rdplan)( DOUBLE_ARG(&DATE),
+			INTEGER_ARG(&I),
+			DOUBLE_ARG(&ELONG),
+			DOUBLE_ARG(&PHI),
+			DOUBLE_ARG(&RA),
+			DOUBLE_ARG(&DEC),
+			DOUBLE_ARG(&DIAM));
+
+  F77_IMPORT_DOUBLE( RA, *ra );
+  F77_IMPORT_DOUBLE( DEC, *dec );
+  F77_IMPORT_DOUBLE( DIAM, *diam );
+}
diff --git a/sla.news b/sla.news
new file mode 100644
index 0000000000000000000000000000000000000000..c2dd061916ef880f54536f0d16850c1fb724aebf
--- /dev/null
+++ b/sla.news
@@ -0,0 +1,80 @@
+#     23-SEP-2005 (PTW):
+#        Suppression of compiler warnings.
+#        Improved sla_UE2PV.
+#        Package version number changed to 2.5-4.
+
+SLALIB_Version_2.5.4
+
+* Changes to sla_EL2UE, sla_FITXY, sla_PV2EL, sla_REFRO, sla_UE2PV and 
+  sla_SVD to avoid warnings if compiled with -Wall and -g -O.
+
+* Changes to sla_UE2PV to improve convergence in high-eccentricity
+  cases.
+
+SLALIB_Version_2.5.3                                  Expiry 30 June 2006
+
+* 2006 January 1 leap second added to sla_DAT.
+
+SLALIB_Version_2.5.2                                  Expiry 31 March 2006
+
+* Bug-fix to sla_DSEPV.  Precisely antipodal vectors returned zero
+  instead of pi.
+
+SLALIB_Version_2.5.1                                  Expiry 31 March 2006
+
+* An additional Earth position/velocity routine, sla_EPV, has been
+  added.  It is bigger and slower than sla_EVP but much more accurate.
+  Position accuracy is a few km;  velocity accuracy is a few mm/s.
+  The sla_PERTUE and sla_PLANTU routines now call this routine in
+  order to deliver better predictions for near-Earth objects.
+
+SLALIB_Version_2.4-14                              Expiry 31 December 2005
+
+* Cosmetic changes to about 20% of the routines.
+
+* Updated optical refraction model in REFCOQ and REFRO.
+
+SLALIB_Version_2.4-12
+
+* SLALIB has been autoconfed and integrated into the new Starlink build
+  system.
+
+* It has been released under the Gnu General Public License
+
+SLALIB_Version_2.4-11                                 Expiry 31 March 2004
+
+The latest releases of SLALIB include the following changes:
+
+* A new routine PLANTU has been added.  It predicts the topocentric
+  apparent RA,Dec of a solar-system body given the Universal Elements.
+  It is a Universal-Elements counterpart to PLANTE, which uses
+  conventional spherical elements (and which now calls PLANTU).
+
+* The documentation for the suite of heliocentric orbital elements
+  routines has been improved to make it easier and more obvious how
+  to use of elements from JPL Horizons and from the Minor Planet 
+  Center.
+
+  Confusion over epochs has often arisen, because the epoch of osculation
+  (when the elements are momentarily correct) is completely separate from
+  the epochs that locate a body in its orbit, the former having a role 
+  only when appying perturbations.  Part of the reason for this confusion 
+  is that for major and minor planets it is conventional to adopt the 
+  same epoch for (i) osculation and (ii) computing the anomaly or longitude
+  that fixes the body, even though they could in principle be different.
+  For the comet case this convention is impossible because the choice of
+  perihelion dictates the epoch fixing the body, and hence the existence
+  of (and need for) two independent concepts of epoch is exposed.
+
+  The SLALIB routines in question, especially slaPlante, now have extra 
+  explanation dealing with the three distinct epochs (date of observation, 
+  fixing the body, and osculation) and also some notes dealing with JPL
+  and MPC elements.  Additionally, a table has been added to SUN/67
+  showing how to use the JPL and MPC elements.
+   
+ P.T.Wallace
+ 8 April 2005
+
+ ptw@tpsoft.demon.co.uk
+ +44-1235-531198
+--------------------------------------------------------------------------
diff --git a/slaTest.c b/slaTest.c
new file mode 100644
index 0000000000000000000000000000000000000000..1296585688ffbd16ba4d73963c547ddec1e23bee
--- /dev/null
+++ b/slaTest.c
@@ -0,0 +1,112 @@
+/*
+ *+
+ *  Name:
+ *     slaTest
+
+ *  Purpose:
+ *     Test C interface to SLA
+
+ *  Language:
+ *     Starlink ANSI C
+
+ *  Description:
+ *     Provides a simple test of the C interface. Test coverage is not
+ *     complete because not all Fortran routines have wrappers.
+
+ *  Copyright:
+ *     Copyright (C) 2006 Particle Physics and Engineering Research Council
+
+ *  Licence:
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of
+ *     the License, or (at your option) any later version.
+ *     
+ *     This program is distributed in the hope that it will be
+ *     useful,but WITHOUT ANY WARRANTY; without even the implied
+ *     warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ *     PURPOSE. See the GNU General Public License for more details.
+ *     
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place,Suite 330, Boston, MA
+ *     02111-1307, USA
+
+ *  Authors:
+ *     TIMJ: Tim Jenness (JAC, Hawaii)
+ *     {enter_new_authors_here}
+
+ *  History:
+ *     07-AUG-2006 (TIMJ):
+ *       Original version.
+
+ *-
+ */
+
+#if HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include "slalib.h"
+
+#if HAVE_FC_MAIN
+void FC_MAIN ( void );
+void FC_MAIN ( ) {}
+#endif
+
+
+int main ( void ) {
+  double w, p, h;
+  char telname[41];
+  char telshort[11];
+  int  exstatus = EXIT_SUCCESS;
+
+
+  /* call slaObs - initialise to recognisable state */
+  w = 0.0; p = 0.0; h = -1.0;
+
+  /* first call by short name */
+  slaObs( 0, "JCMT", telname, &w, &p, &h );
+  if ( h == -1.0 ) {
+    printf( "Error obtaining information on JCMT\n");
+    exstatus = EXIT_FAILURE;
+  } else {
+    printf( "Telescope JCMT is '%s' w = %f, p = %f, h = %f\n",
+	    telname, w, p, h);
+  }
+
+  /* call by index */
+  h = -1.0; w = 0.0; p = 0.0;
+  slaObs( 1, telshort, telname, &w, &p, &h );
+  if (h == -1.0 ) {
+    printf( "Error obtaining information on telescope 1\n");
+    exstatus = EXIT_FAILURE;
+  } else {
+    printf( "Telescope 1 is '%s' aka '%s' w = %f, p = %f, h = %f\n",
+	    telshort, telname, w, p, h);
+  }
+
+  /* deliberately fail - with bad index */
+  h = -1.0; w = 0.0; p = 0.0; strcpy( telshort, "unknown" );
+  slaObs( 100000, telshort, telname, &w, &p, &h );
+  if (h != -1.0 || telname[0] != '?') {
+    printf("Attempt to decode unfeasibly large telescope index should have failed\n");
+    printf("Got this result:  Tel: '%s' aka '%s', w=%f p=%f h=%f\n", telshort,
+	   telname, w, p, h);
+    exstatus = EXIT_FAILURE;
+  }
+
+  /* deliberately fail - with bad name */
+  h = -1.0; w = 0.0; p = 0.0;
+  slaObs( 0, "AFakeTel", telname, &w, &p, &h );
+  if (h != -1.0 || telname[0] != '?') {
+    printf("Attempt to decode unknown telescope should have failed\n");
+    printf("Got this result:  Tel: '%s', w=%f p=%f h=%f\n", telname, w, p, h);
+    exstatus = EXIT_FAILURE;
+  }
+
+  return exstatus;
+} 
diff --git a/sla_link b/sla_link
new file mode 100755
index 0000000000000000000000000000000000000000..40aa195eb4e1698d7b60e6bb2153188b14d9937a
--- /dev/null
+++ b/sla_link
@@ -0,0 +1 @@
+echo -lsla
diff --git a/sla_link_adam b/sla_link_adam
new file mode 100755
index 0000000000000000000000000000000000000000..40aa195eb4e1698d7b60e6bb2153188b14d9937a
--- /dev/null
+++ b/sla_link_adam
@@ -0,0 +1 @@
+echo -lsla
diff --git a/sla_test.f b/sla_test.f
new file mode 100644
index 0000000000000000000000000000000000000000..839350cf4813c8bad3f27277be41509e31cf4b97
--- /dev/null
+++ b/sla_test.f
@@ -0,0 +1,6567 @@
+      PROGRAM SLA_TEST
+*+
+*  - - - - - - - - -
+*   S L A _ T E S T
+*  - - - - - - - - -
+*
+*  Validate the slalib library.
+*
+*  Each slalib function is tested to some useful but in most cases
+*  not exhaustive level.  Successful completion is signalled by an
+*  absence of output messages.  Failure of a given function or
+*  group of functions results in error messages.
+*
+*  Any messages go to standard output.
+*
+*  Adapted from original C code by P.T.Wallace.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink and P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+      INTEGER EXITSTATUS
+
+
+*  Preset the status to success.
+      STATUS = .TRUE.
+
+*  Test all the slalib functions.
+      CALL T_ADDET ( STATUS )
+      CALL T_AFIN ( STATUS )
+      CALL T_AIRMAS ( STATUS )
+      CALL T_ALTAZ ( STATUS )
+      CALL T_AMP ( STATUS )
+      CALL T_AOP ( STATUS )
+      CALL T_BEAR ( STATUS )
+      CALL T_CAF2R ( STATUS )
+      CALL T_CALDJ ( STATUS )
+      CALL T_CALYD ( STATUS )
+      CALL T_CC2S ( STATUS )
+      CALL T_CC62S ( STATUS )
+      CALL T_CD2TF ( STATUS )
+      CALL T_CLDJ ( STATUS )
+      CALL T_CR2AF ( STATUS )
+      CALL T_CR2TF ( STATUS )
+      CALL T_CS2C6 ( STATUS )
+      CALL T_CTF2D ( STATUS )
+      CALL T_CTF2R ( STATUS )
+      CALL T_DAT ( STATUS )
+      CALL T_DBJIN ( STATUS )
+      CALL T_DJCAL ( STATUS )
+      CALL T_DMAT ( STATUS )
+      CALL T_E2H ( STATUS )
+      CALL T_EARTH ( STATUS )
+      CALL T_ECLEQ ( STATUS )
+      CALL T_ECMAT ( STATUS )
+      CALL T_ECOR ( STATUS )
+      CALL T_EG50 ( STATUS )
+      CALL T_EPB ( STATUS )
+      CALL T_EPB2D ( STATUS )
+      CALL T_EPCO ( STATUS )
+      CALL T_EPJ ( STATUS )
+      CALL T_EPJ2D ( STATUS )
+      CALL T_EQECL ( STATUS )
+      CALL T_EQEQX ( STATUS )
+      CALL T_EQGAL ( STATUS )
+      CALL T_ETRMS ( STATUS )
+      CALL T_EVP ( STATUS )
+      CALL T_FITXY ( STATUS )
+      CALL T_FK425 ( STATUS )
+      CALL T_FK45Z ( STATUS )
+      CALL T_FK524 ( STATUS )
+      CALL T_FK52H ( STATUS )
+      CALL T_FK54Z ( STATUS )
+      CALL T_FLOTIN ( STATUS )
+      CALL T_GALEQ ( STATUS )
+      CALL T_GALSUP ( STATUS )
+      CALL T_GE50 ( STATUS )
+      CALL T_GMST ( STATUS )
+      CALL T_INTIN ( STATUS )
+      CALL T_KBJ ( STATUS )
+      CALL T_MAP ( STATUS )
+      CALL T_MOON ( STATUS )
+      CALL T_NUT ( STATUS )
+      CALL T_OBS ( STATUS )
+      CALL T_PA ( STATUS )
+      CALL T_PCD ( STATUS )
+      CALL T_PDA2H ( STATUS )
+      CALL T_PDQ2H ( STATUS )
+      CALL T_PERCOM ( STATUS )
+      CALL T_PLANET ( STATUS )
+      CALL T_PM ( STATUS )
+      CALL T_POLMO ( STATUS )
+      CALL T_PREBN ( STATUS )
+      CALL T_PREC ( STATUS )
+      CALL T_PRECES ( STATUS )
+      CALL T_PRENUT ( STATUS )
+      CALL T_PVOBS ( STATUS )
+      CALL T_RANGE ( STATUS )
+      CALL T_RANORM ( STATUS )
+      CALL T_RCC ( STATUS )
+      CALL T_REF ( STATUS )
+      CALL T_RV ( STATUS )
+      CALL T_SEP ( STATUS )
+      CALL T_SMAT ( STATUS )
+      CALL T_SUPGAL ( STATUS )
+      CALL T_SVD ( STATUS )
+      CALL T_TP ( STATUS )
+      CALL T_TPV ( STATUS )
+      CALL T_VECMAT ( STATUS )
+      CALL T_ZD ( STATUS )
+
+*  Report any errors and set up an appropriate exit status.  Set the
+*  EXITSTATUS to 0 on success, 1 on any error -- Unix-style.  The
+*  EXIT intrinsic is non-standard but common (which is portable enough
+*  for a regression test).
+
+      IF ( STATUS ) THEN
+         WRITE (*,'(1X,''SLALIB validation OK!'')')
+         EXITSTATUS = 0
+      ELSE
+         WRITE (*,'(1X,''SLALIB validation failed!'')')
+         EXITSTATUS = 1
+      ENDIF
+
+      CALL EXIT(EXITSTATUS)
+
+      END
+
+      SUBROUTINE VCS ( S, SOK, FUNC, TEST, STATUS )
+*+
+*  - - - -
+*   V C S
+*  - - - -
+*
+*  Validate a character string result.
+*
+*  Internal routine used by sla_TEST program.
+*
+*  Given:
+*     S        CHARACTER    string produced by routine under test
+*     SOK      CHARACTER    correct value
+*     FUNC     CHARACTER    name of routine under test
+*     TEST     CHARACTER    name of individual test (or ' ')
+*
+*  Given and returned:
+*     STATUS   LOGICAL      set to .FALSE. if test fails
+*
+*  Called:  ERR
+*
+*  Last revision:   25 May 2002
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) S, SOK, FUNC, TEST
+      LOGICAL STATUS
+
+
+      IF ( S .NE. SOK ) THEN
+         CALL ERR ( FUNC, TEST, STATUS )
+         WRITE (*,'(1X,''  expected ='',6X,''"'',A,''"'')') SOK
+         WRITE (*,'(1X,''  actual =  '',6X,''"'',A,''"'')') S
+      END IF
+
+      END
+
+      SUBROUTINE VIV ( IVAL, IVALOK, FUNC, TEST, STATUS )
+*+
+*  - - - -
+*   V I V
+*  - - - -
+*
+*  Validate an integer result.
+*
+*  Internal routine used by sla_TEST program.
+*
+*  Given:
+*     IVAL     INTEGER      value computed by routine under test
+*     IVALOK   INTEGER      correct value
+*     FUNC     CHARACTER    name of routine under test
+*     TEST     CHARACTER    name of individual test (or ' ')
+*
+*  Given and returned:
+*     STATUS   LOGICAL      set to .FALSE. if test fails
+*
+*  Called:  ERR
+*
+*  Last revision:   25 May 2002
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER IVAL, IVALOK
+      CHARACTER*(*) FUNC, TEST
+      LOGICAL STATUS
+
+
+      IF ( IVAL .NE. IVALOK ) THEN
+         CALL ERR ( FUNC, TEST, STATUS )
+         WRITE (*,'(1X,''  expected ='',I10)') IVALOK
+         WRITE (*,'(1X,''  actual =  '',I10)') IVAL
+      END IF
+
+      END
+
+      SUBROUTINE VLV ( IVAL, IVALOK, FUNC, TEST, STATUS )
+*+
+*  - - - -
+*   V L V
+*  - - - -
+*
+*  Validate a long result.
+*
+*  Internal routine used by sla_TEST program.
+*
+*  Given:
+*     IVAL     INTEGER*4    value computed by routine under test
+*     IVALOK   INTEGER*4    correct value
+*     FUNC     CHARACTER    name of routine under test
+*     TEST     CHARACTER    name of individual test (or ' ')
+*
+*  Given and returned:
+*     STATUS   LOGICAL      set to .FALSE. if test fails
+*
+*  Called:  ERR
+*
+*  Last revision:   25 May 2002
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER*4 IVAL, IVALOK
+      CHARACTER*(*) FUNC, TEST
+      LOGICAL STATUS
+
+
+      IF ( IVAL .NE. IVALOK ) THEN
+         CALL ERR ( FUNC, TEST, STATUS )
+         WRITE (*,'(1X,''  expected ='',I10)') IVALOK
+         WRITE (*,'(1X,''  actual =  '',I10)') IVAL
+      END IF
+
+      END
+
+      SUBROUTINE VVD ( VAL, VALOK, DVAL, FUNC, TEST, STATUS )
+*+
+*  - - - -
+*   V V D
+*  - - - -
+*
+*  Validate a double result.
+*
+*  Internal routine used by sla_TEST program.
+*
+*  Given:
+*     VAL      DOUBLE       value computed by routine under test
+*     VALOK    DOUBLE       correct value
+*     DVAL     DOUBLE       maximum allowable error
+*     FUNC     CHARACTER    name of routine under test
+*     TEST     CHARACTER    name of individual test (or ' ')
+*
+*  Given and returned:
+*     STATUS   LOGICAL      set to .FALSE. if test fails
+*
+*  Called:  ERR
+*
+*  Last revision:   25 May 2002
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION VAL, VALOK, DVAL
+      CHARACTER*(*) FUNC, TEST
+      LOGICAL STATUS
+
+
+      IF ( DABS ( VAL - VALOK ) .GT. DVAL ) THEN
+         CALL ERR ( FUNC, TEST, STATUS )
+         WRITE (*,'(1X,''  expected ='',G30.19)') VALOK
+         WRITE (*,'(1X,''  actual =  '',G30.19)') VAL
+      END IF
+
+      END
+
+      SUBROUTINE ERR ( FUNC, TEST, STATUS )
+*+
+*  - - - -
+*   E R R
+*  - - - -
+*
+*  Report a failed test.
+*
+*  Internal routine used by sla_TEST program.
+*
+*  Given:
+*     FUNC     CHARACTER    name of routine under test
+*     TEST     CHARACTER    name of individual test (or ' ')
+*
+*  Given and returned:
+*     STATUS   LOGICAL      set to .FALSE.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER*(*) FUNC, TEST
+      LOGICAL STATUS
+
+
+      WRITE (*,'(1X,A,'' test '',A,'' fails:'')') FUNC, TEST
+      STATUS = .FALSE.
+
+      END
+
+      SUBROUTINE T_ADDET ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ A D D E T
+*  - - - - - - - -
+*
+*  Test sla_ADDET, sla_SUBET routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_ADDET, VVD, sla_SUBET.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RM, DM, EQ, R1, D1, R2, D2
+
+      RM = 2D0
+      DM = -1D0
+      EQ = 1975D0
+
+      CALL sla_ADDET ( RM, DM, EQ, R1, D1 )
+      CALL VVD ( R1 - RM, 2.983864874295250D-6, 1D-12, 'sla_ADDET',
+     :           'R', STATUS )
+      CALL VVD ( D1 - DM, 2.379650804185118D-7, 1D-12, 'sla_ADDET',
+     :           'D', STATUS )
+
+      CALL sla_SUBET ( R1, D1, EQ, R2, D2 )
+      CALL VVD ( R2 - RM, 0D0, 1D-12, 'sla_SUBET', 'R', STATUS )
+      CALL VVD ( D2 - DM, 0D0, 1D-12, 'sla_SUBET', 'D', STATUS )
+
+      END
+
+      SUBROUTINE T_AFIN ( STATUS )
+*+
+*  - - - - - - -
+*   T _ A F I N
+*  - - - - - - -
+*
+*  Test sla_AFIN and sla_DAFIN routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_AFIN, VIV, VVD, sla_DAFIN.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I, J
+      REAL F
+      DOUBLE PRECISION D
+      CHARACTER*12 S
+      DATA S /'12 34 56.7 |'/
+
+
+      I = 1
+      CALL sla_AFIN (S, I, F, J)
+      CALL VIV ( I, 12, 'sla_AFIN', 'I', STATUS )
+      CALL VVD ( DBLE( F ), 0.2196045986911432D0, 1D-6, 'sla_AFIN',
+     :           'A', STATUS )
+      CALL VIV ( J, 0, 'sla_AFIN', 'J', STATUS )
+
+      I = 1
+      CALL sla_DAFIN (S, I, D, J)
+      CALL VIV ( I, 12, 'sla_DAFIN', 'I', STATUS )
+      CALL VVD ( D, 0.2196045986911432D0, 1D-12, 'sla_DAFIN', 'A',
+     :           STATUS )
+      CALL VIV ( J, 0, 'sla_DAFIN', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_AIRMAS ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ A I R M A S
+*  - - - - - - - - -
+*
+*  Test sla_AIRMAS routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called: VVD, sla_AIRMAS.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_AIRMAS
+
+
+      CALL VVD ( sla_AIRMAS ( 1.2354D0 ), 3.015698990074724D0,
+     :           1D-12, 'sla_AIRMAS', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_ALTAZ ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ A L T A Z
+*  - - - - - - - -
+*
+*  Test sla_ALTAZ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_ALTAZ, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION AZ, AZD, AZDD, EL, ELD, ELDD, PA, PAD, PADD
+
+      CALL sla_ALTAZ ( 0.7D0, -0.7D0, -0.65D0,
+     :                 AZ, AZD, AZDD, EL, ELD, ELDD, PA, PAD, PADD )
+
+      CALL VVD ( AZ, 4.400560746660174D0, 1D-12, 'sla_ALTAZ',
+     :           'AZ', STATUS )
+      CALL VVD ( AZD, -0.2015438937145421D0, 1D-13, 'sla_ALTAZ',
+     :           'AZD', STATUS )
+      CALL VVD ( AZDD, -0.4381266949668748D0, 1D-13, 'sla_ALTAZ',
+     :           'AZDD', STATUS )
+      CALL VVD ( EL, 1.026646506651396D0, 1D-12, 'sla_ALTAZ',
+     :           'EL', STATUS )
+      CALL VVD ( ELD, -0.7576920683826450D0, 1D-13, 'sla_ALTAZ',
+     :           'ELD', STATUS )
+      CALL VVD ( ELDD, 0.04922465406857453D0, 1D-14, 'sla_ALTAZ',
+     :           'ELDD', STATUS )
+      CALL VVD ( PA, 1.707639969653937D0, 1D-12, 'sla_ALTAZ',
+     :           'PA', STATUS )
+      CALL VVD ( PAD, 0.4717832355365627D0, 1D-13, 'sla_ALTAZ',
+     :           'PAD', STATUS )
+      CALL VVD ( PADD, -0.2957914128185515D0, 1D-13, 'sla_ALTAZ',
+     :           'PADD', STATUS )
+
+      END
+
+      SUBROUTINE T_AMP ( STATUS )
+*+
+*  - - - - - -
+*   T _ A M P
+*  - - - - - -
+*
+*  Test sla_AMP, sla_MAPPA, sla_AMPQK routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_AMP, VVD.
+*
+*  Last revision:   16 November 2001
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RM, DM
+
+      CALL sla_AMP ( 2.345D0, -1.234D0, 50100D0, 1990D0, RM, DM )
+      CALL VVD ( RM, 2.344472180027961D0, 1D-11, 'sla_AMP', 'R',
+     :           STATUS )
+      CALL VVD ( DM, -1.233573099847705D0, 1D-11, 'sla_AMP', 'D',
+     :           STATUS )
+
+      END
+
+      SUBROUTINE T_AOP ( STATUS )
+*+
+*  - - - - - -
+*   T _ A O P
+*  - - - - - -
+*
+*  Test sla_AOP, sla_AOPPA, sla_AOPQK, sla_OAP, sla_OAPQK,
+*  sla_AOPPAT routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_AOP, VVD, sla_AOPPA, sla_AOPQK, sla_OAP, sla_OAPQK,
+*  sla_AOPPAT.
+*
+*  Defined in slamac.h:  DS2R
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I
+      DOUBLE PRECISION DS2R
+      DOUBLE PRECISION RAP, DAP, DATE, DUT, ELONGM, PHIM, HM, XP, YP,
+     :    TDK, PMB, RH, WL, TLR, AOB, ZOB, HOB, DOB, ROB, AOPRMS(14)
+
+      PARAMETER (DS2R =
+     :      7.2722052166430399038487115353692196393452995355905D-5)
+
+      DAP = -0.1234D0
+      DATE = 51000.1D0
+      DUT = 25D0
+      ELONGM = 2.1D0
+      PHIM = 0.5D0
+      HM = 3000D0
+      XP = -0.5D-6
+      YP = 1D-6
+      TDK = 280D0
+      PMB = 550D0
+      RH = 0.6D0
+      TLR = 0.006D0
+
+      DO I = 1, 3
+
+         IF ( I .EQ. 1 ) THEN
+            RAP = 2.7D0
+            WL = 0.45D0
+            ELSE IF ( I .EQ. 2 ) THEN
+                RAP = 2.345D0
+            ELSE
+                WL = 1D6
+         END IF
+
+         CALL sla_AOP ( RAP, DAP, DATE, DUT, ELONGM, PHIM, HM, XP, YP,
+     :                  TDK, PMB, RH, WL, TLR, AOB, ZOB, HOB, DOB, ROB )
+
+         IF ( I .EQ. 1 ) THEN
+            CALL VVD ( AOB, 1.812817787123283034D0, 1D-10, 'sla_AOP',
+     :                 'lo aob', STATUS )
+            CALL VVD ( ZOB, 1.393860816635714034D0, 1D-10, 'sla_AOP',
+     :                 'lo zob', STATUS )
+            CALL VVD ( HOB, -1.297808009092456683D0, 1D-10, 'sla_AOP',
+     :                 'lo hob', STATUS )
+            CALL VVD ( DOB, -0.122967060534561D0, 1D-10, 'sla_AOP',
+     :                 'lo dob', STATUS )
+            CALL VVD ( ROB, 2.699270287872084D0, 1D-10, 'sla_AOP',
+     :                    'lo rob', STATUS )
+         ELSE IF ( I .EQ. 2 ) THEN
+            CALL VVD ( AOB, 2.019928026670621442D0, 1D-10, 'sla_AOP',
+     :                 'aob/o', STATUS )
+            CALL VVD ( ZOB, 1.101316172427482466D0, 1D-10, 'sla_AOP',
+     :                 'zob/o', STATUS )
+            CALL VVD ( HOB, -0.9432923558497740862D0, 1D-10, 'sla_AOP',
+     :                 'hob/o', STATUS )
+            CALL VVD ( DOB, -0.1232144708194224D0, 1D-10, 'sla_AOP',
+     :                 'dob/o', STATUS )
+            CALL VVD ( ROB, 2.344754634629428D0, 1D-10, 'sla_AOP',
+     :                 'rob/o', STATUS )
+         ELSE
+            CALL VVD ( AOB, 2.019928026670621442D0, 1D-10, 'sla_AOP',
+     :                 'aob/r', STATUS )
+            CALL VVD ( ZOB, 1.101267532198003760D0, 1D-10, 'sla_AOP',
+     :                 'zob/r', STATUS )
+            CALL VVD ( HOB, -0.9432533138143315937D0, 1D-10, 'sla_AOP',
+     :                 'hob/r', STATUS )
+            CALL VVD ( DOB, -0.1231850665614878D0, 1D-10, 'sla_AOP',
+     :                 'dob/r', STATUS )
+            CALL VVD ( ROB, 2.344715592593984D0, 1D-10, 'sla_AOP',
+     :                 'rob/r', STATUS )
+         END IF
+      END DO
+
+      DATE = 48000.3D0
+      WL = 0.45D0
+
+      CALL sla_AOPPA ( DATE, DUT, ELONGM, PHIM, HM, XP, YP, TDK,
+     :                 PMB, RH, WL, TLR, AOPRMS )
+      CALL VVD ( AOPRMS(1), 0.4999993892136306D0, 1D-13, 'sla_AOPPA',
+     :           '1', STATUS )
+      CALL VVD ( AOPRMS(2), 0.4794250025886467D0, 1D-13, 'sla_AOPPA',
+     :           '2', STATUS )
+      CALL VVD ( AOPRMS(3), 0.8775828547167932D0, 1D-13, 'sla_AOPPA',
+     :           '3', STATUS )
+      CALL VVD ( AOPRMS(4), 1.363180872136126D-6, 1D-13, 'sla_AOPPA',
+     :           '4', STATUS )
+      CALL VVD ( AOPRMS(5), 3000D0, 1D-10, 'sla_AOPPA', '5',
+     :           STATUS )
+      CALL VVD ( AOPRMS(6), 280D0, 1D-11, 'sla_AOPPA', '6',
+     :           STATUS )
+      CALL VVD ( AOPRMS(7), 550D0, 1D-11, 'sla_AOPPA', '7',
+     :           STATUS )
+      CALL VVD ( AOPRMS(8), 0.6D0, 1D-13, 'sla_AOPPA', '8',
+     :           STATUS )
+      CALL VVD ( AOPRMS(9), 0.45D0, 1D-13, 'sla_AOPPA', '9',
+     :           STATUS )
+      CALL VVD ( AOPRMS(10), 0.006D0, 1D-15, 'sla_AOPPA', '10',
+     :           STATUS )
+      CALL VVD ( AOPRMS(11), 0.0001562803328459898D0, 1D-13,
+     :           'sla_AOPPA', '11', STATUS )
+      CALL VVD ( AOPRMS(12), -1.792293660141D-7, 1D-13,
+     :           'sla_AOPPA', '12', STATUS )
+      CALL VVD ( AOPRMS(13), 2.101874231495843D0, 1D-13,
+     :           'sla_AOPPA', '13', STATUS )
+      CALL VVD ( AOPRMS(14), 7.601916802079765D0, 1D-8,
+     :           'sla_AOPPA', '14', STATUS )
+
+      CALL sla_OAP ( 'R', 1.6D0, -1.01D0, DATE, DUT, ELONGM, PHIM,
+     :               HM, XP, YP, TDK, PMB, RH, WL, TLR, RAP, DAP )
+      CALL VVD ( RAP, 1.601197569844787D0, 1D-10, 'sla_OAP',
+     :           'Rr', STATUS )
+      CALL VVD ( DAP, -1.012528566544262D0, 1D-10, 'sla_OAP',
+     :           'Rd', STATUS )
+      CALL sla_OAP ( 'H', -1.234D0, 2.34D0, DATE, DUT, ELONGM, PHIM,
+     :               HM, XP, YP, TDK, PMB, RH, WL, TLR, RAP, DAP )
+      CALL VVD ( RAP, 5.693087688154886463D0, 1D-10, 'sla_OAP',
+     :           'Hr', STATUS )
+      CALL VVD ( DAP, 0.8010281167405444D0, 1D-10, 'sla_OAP',
+     :           'Hd', STATUS )
+      CALL sla_OAP ( 'A', 6.1D0, 1.1D0, DATE, DUT, ELONGM, PHIM,
+     :               HM, XP, YP, TDK, PMB, RH, WL, TLR, RAP, DAP )
+      CALL VVD ( RAP, 5.894305175192448940D0, 1D-10, 'sla_OAP',
+     :           'Ar', STATUS )
+      CALL VVD ( DAP, 1.406150707974922D0, 1D-10, 'sla_OAP',
+     :           'Ad', STATUS )
+
+      CALL sla_OAPQK ( 'R', 2.1D0, -0.345D0, AOPRMS, RAP, DAP )
+      CALL VVD ( RAP, 2.10023962776202D0, 1D-10, 'sla_OAPQK',
+     :           'Rr', STATUS )
+      CALL VVD ( DAP, -0.3452428692888919D0, 1D-10, 'sla_OAPQK',
+     :           'Rd', STATUS )
+      CALL sla_OAPQK ( 'H', -0.01D0, 1.03D0, AOPRMS, RAP, DAP )
+      CALL VVD ( RAP, 1.328731933634564995D0, 1D-10, 'sla_OAPQK',
+     :           'Hr', STATUS )
+      CALL VVD ( DAP, 1.030091538647746D0, 1D-10, 'sla_OAPQK',
+     :           'Hd', STATUS )
+      CALL sla_OAPQK ( 'A', 4.321D0, 0.987D0, AOPRMS, RAP, DAP )
+      CALL VVD ( RAP, 0.4375507112075065923D0, 1D-10, 'sla_OAPQK',
+     :           'Ar', STATUS )
+      CALL VVD ( DAP, -0.01520898480744436D0, 1D-10, 'sla_OAPQK',
+     :           'Ad', STATUS )
+
+      CALL sla_AOPPAT ( DATE + DS2R, AOPRMS )
+      CALL VVD ( AOPRMS(14), 7.602374979243502D0, 1D-8, 'sla_AOPPAT',
+     :           ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_BEAR ( STATUS )
+*+
+*  - - - - - - -
+*   T _ B E A R
+*  - - - - - - -
+*
+*  Test sla_BEAR, sla_DBEAR, sla_DPAV, sla_PAV routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  VVD, sla_BEAR, sla_DBEAR,
+*           sla_DCS2C, sla_PAV, sla_DPAV.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I
+      REAL F1(3), F2(3)
+      REAL sla_BEAR, sla_PAV
+      DOUBLE PRECISION D1(3), D2(3)
+      DOUBLE PRECISION A1, B1, A2, B2
+      DOUBLE PRECISION sla_DBEAR, sla_DPAV
+
+
+      A1 = 1.234D0
+      B1 = -0.123D0
+      A2 = 2.345D0
+      B2 = 0.789D0
+
+      CALL VVD ( DBLE( sla_BEAR ( SNGL( A1 ), SNGL( B1 ), SNGL( A2 ),
+     :           SNGL( B2 ) ) ), 0.7045970341781791D0, 1D-6,
+     :           'sla_BEAR', ' ', STATUS )
+      CALL VVD ( sla_DBEAR ( A1, B1, A2, B2 ), 0.7045970341781791D0,
+     :           1D-12, 'sla_DBEAR', ' ', STATUS )
+      CALL sla_DCS2C ( A1, B1, D1 )
+      CALL sla_DCS2C ( A2, B2, D2 )
+
+      DO I = 1, 3
+        F1(I) = SNGL( D1(I) )
+        F2(I) = SNGL( D2(I) )
+      END DO
+
+      CALL VVD ( DBLE( sla_PAV ( F1, F2 ) ), 0.7045970341781791D0,
+     :           1D-6, 'sla_PAV', ' ', STATUS )
+      CALL VVD ( sla_DPAV ( D1, D2 ), 0.7045970341781791D0,
+     :           1D-12, 'sla_DPAV', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_CAF2R ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C A F 2 R
+*  - - - - - - - -
+*
+*  Test sla_CAF2R, sla_DAF2R routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CAF2R, VVD, VIV, sla_DAF2R.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      REAL R
+      DOUBLE PRECISION DR
+
+      CALL sla_CAF2R ( 76, 54, 32.1E0, R, J )
+      CALL VVD ( DBLE( R ), 1.342313819975276D0, 1D-6, 'sla_CAF2R',
+     :           'R', STATUS )
+      CALL VIV ( J, 0, 'sla_CAF2R', 'J', STATUS )
+      CALL sla_DAF2R ( 76, 54, 32.1D0, DR, J )
+      CALL VVD ( DR, 1.342313819975276D0, 1D-12, 'sla_DAF2R',
+     :           'R', STATUS )
+      CALL VIV ( J, 0, 'sla_CAF2R', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_CALDJ ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C A L D J
+*  - - - - - - - -
+*
+*  Test sla_CALDJ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CALDJ, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      DOUBLE PRECISION DJM
+
+      CALL sla_CALDJ ( 1999, 12, 31, DJM, J )
+      CALL VVD ( DJM, 51543D0, 0D0, 'sla_CALDJ', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_CALYD ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C A L Y D
+*  - - - - - - - -
+*
+*  Test sla_CALYD and sla_CLYD routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CALYD, sla_CLYD, VIV.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER NY, ND, J
+
+      CALL sla_CALYD ( 46, 4, 30, NY, ND, J )
+      CALL VIV ( NY, 2046, 'sla_CALYD', 'Y', STATUS )
+      CALL VIV ( ND, 120, 'sla_CALYD', 'D', STATUS )
+      CALL VIV ( J, 0, 'sla_CALYD', 'J', STATUS )
+      CALL sla_CLYD ( -5000, 1, 1, NY, ND, J )
+      CALL VIV ( J, 1, 'sla_CLYD', 'illegal year', STATUS )
+      CALL sla_CLYD ( 1900, 0, 1, NY, ND, J )
+      CALL VIV ( J, 2, 'sla_CLYD', 'illegal month', STATUS )
+      CALL sla_CLYD ( 1900, 2, 29, NY, ND, J)
+      CALL VIV ( NY, 1900, 'sla_CLYD', 'illegal day (Y)', STATUS )
+      CALL VIV ( ND, 61, 'sla_CLYD', 'illegal day (D)', STATUS )
+      CALL VIV ( J, 3, 'sla_CLYD', 'illegal day (J)', STATUS )
+      CALL sla_CLYD ( 2000, 2, 29, NY, ND, J )
+      CALL VIV ( NY, 2000, 'sla_CLYD', 'Y', STATUS )
+      CALL VIV ( ND, 60, 'sla_CLYD', 'D', STATUS )
+      CALL VIV ( J, 0, 'sla_CLYD', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_CC2S ( STATUS )
+*+
+*  - - - - - - -
+*   T _ C C 2 S
+*  - - - - - - -
+*
+*  Test sla_CC2S, sla_DCC2S routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CC2S, VVD, sla_DCC2S.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL V(3), A, B
+      DOUBLE PRECISION DV(3), DA, DB
+
+      DATA V/100.0, -50.0, 25.0/
+      DATA DV/100D0, -50D0, 25D0/
+
+      CALL sla_CC2S ( V, A, B )
+      CALL VVD ( DBLE( A), -0.4636476090008061D0, 1D-6, 'sla_CC2S',
+     :           'A', STATUS )
+      CALL VVD ( DBLE( B ), 0.2199879773954594D0, 1D-6, 'sla_CC2S',
+     :           'B', STATUS )
+
+      CALL sla_DCC2S ( DV, DA, DB )
+      CALL VVD ( DA, -0.4636476090008061D0, 1D-12, 'sla_DCC2S',
+     :           'A', STATUS )
+      CALL VVD ( DB, 0.2199879773954594D0, 1D-12, 'sla_DCC2S',
+     :           'B', STATUS )
+
+      END
+
+      SUBROUTINE T_CC62S ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C C 6 2 S
+*  - - - - - - - -
+*
+*  Test sla_CC62S, sla_DC62S routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CC62S, VVD, sla_DC62S.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL V(6), A, B, R, AD, BD, RD
+      DOUBLE PRECISION DV(6), DA, DB, DR, DAD, DBD, DRD
+
+      DATA V/100.0, -50.0, 25.0, -0.1, 0.2, 0.7/
+      DATA DV/100D0, -50D0, 25D0, -0.1D0, 0.2D0, 0.7D0/
+
+      CALL sla_CC62S ( V, A, B, R, AD, BD, RD )
+      CALL VVD ( DBLE( A ), -0.4636476090008061D0, 1D-6, 'sla_CC62S',
+     :           'A', STATUS )
+      CALL VVD ( DBLE( B ), 0.2199879773954594D0, 1D-6, 'sla_CC62S',
+     :           'B', STATUS )
+      CALL VVD ( DBLE( R ), 114.564392373896D0, 1D-3, 'sla_CC62S',
+     :           'R', STATUS )
+      CALL VVD ( DBLE( AD ), 0.001200000000000000D0, 1D-9, 'sla_CC62S',
+     :           'AD', STATUS )
+      CALL VVD ( DBLE( BD ), 0.006303582107999407D0, 1D-8, 'sla_CC62S',
+     :           'BD', STATUS )
+      CALL VVD ( DBLE( RD ), -0.02182178902359925D0, 1D-7, 'sla_CC62S',
+     :           'RD', STATUS )
+
+      CALL sla_DC62S ( DV, DA, DB, DR, DAD, DBD, DRD )
+      CALL VVD ( DA, -0.4636476090008061D0, 1D-6, 'sla_DC62S',
+     :           'A', STATUS )
+      CALL VVD ( DB, 0.2199879773954594D0, 1D-6, 'sla_DC62S',
+     :           'B', STATUS )
+      CALL VVD ( DR, 114.564392373896D0, 1D-9, 'sla_DC62S',
+     :           'R', STATUS )
+      CALL VVD ( DAD, 0.001200000000000000D0, 1D-15, 'sla_DC62S',
+     :           'AD', STATUS )
+      CALL VVD ( DBD, 0.006303582107999407D0, 1D-14, 'sla_DC62S',
+     :           'BD', STATUS )
+      CALL VVD ( DRD, -0.02182178902359925D0, 1D-13, 'sla_DC62S',
+     :           'RD', STATUS )
+
+      END
+
+      SUBROUTINE T_CD2TF ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C D 2 T F
+*  - - - - - - - -
+*
+*  Test sla_CD2TF, sla_DD2TF routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CD2TF, VIV, VVD, sla_DD2TF.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER IHMSF(4)
+      CHARACTER S
+
+      CALL sla_CD2TF ( 4, -0.987654321E0, S, IHMSF )
+      CALL VIV ( ICHAR( S ), ICHAR( '-' ), 'sla_CD2TF', 'S', STATUS )
+      CALL VIV ( IHMSF(1), 23, 'sla_CD2TF', '(1)', STATUS )
+      CALL VIV ( IHMSF(2), 42, 'sla_CD2TF', '(2)', STATUS )
+      CALL VIV ( IHMSF(3), 13, 'sla_CD2TF', '(3)', STATUS )
+      CALL VVD ( DFLOAT( IHMSF(4) ), 3333D0, 1000D0, 'sla_CD2TF',
+     :           '(4)', STATUS )
+
+      CALL sla_DD2TF ( 4, -0.987654321D0, S, IHMSF )
+      CALL VIV ( ICHAR( S ), ICHAR( '-' ), 'sla_DD2TF', 'S', STATUS )
+      CALL VIV ( IHMSF(1), 23, 'sla_DD2TF', '(1)', STATUS )
+      CALL VIV ( IHMSF(2), 42, 'sla_DD2TF', '(2)', STATUS )
+      CALL VIV ( IHMSF(3), 13, 'sla_DD2TF', '(3)', STATUS )
+      CALL VIV ( IHMSF(4), 3333, 'sla_DD2TF', '(4)', STATUS )
+
+      END
+
+      SUBROUTINE T_CLDJ ( STATUS )
+*+
+*  - - - - - - -
+*   T _ C L D J
+*  - - - - - - -
+*
+*  Test sla_CLDJ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CLDJ, VVD, VIV.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      DOUBLE PRECISION D
+
+      CALL sla_CLDJ ( 1899, 12, 31, D, J )
+      CALL VVD ( D, 15019D0, 0D0, 'sla_CLDJ', 'D', STATUS )
+      CALL VIV ( J, 0, 'sla_CLDJ', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_CR2AF ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C R 2 A F
+*  - - - - - - - -
+*
+*  Test sla_CR2AF, sla_DR2AF routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CR2AF, VIV, VVD, sla_DR2AF.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER IDMSF(4)
+      CHARACTER S
+
+      CALL sla_CR2AF ( 4, 2.345E0, S, IDMSF )
+      CALL VIV ( ICHAR( S ), ICHAR( '+' ), 'sla_CR2AF', 'S', STATUS )
+      CALL VIV ( IDMSF(1), 134, 'sla_CR2AF', '(1)', STATUS )
+      CALL VIV ( IDMSF(2), 21, 'sla_CR2AF', '(2)', STATUS )
+      CALL VIV ( IDMSF(3), 30, 'sla_CR2AF', '(3)', STATUS )
+      CALL VVD ( DBLE( IDMSF(4) ), 9706D0, 1000D0, 'sla_CR2AF',
+     :           '(4)', STATUS )
+
+      CALL sla_DR2AF ( 4, 2.345D0, S, IDMSF )
+      CALL VIV ( ICHAR( S ), ICHAR( '+' ), 'sla_DR2AF', 'S', STATUS )
+      CALL VIV ( IDMSF(1), 134, 'sla_DR2AF', '(1)', STATUS )
+      CALL VIV ( IDMSF(2), 21, 'sla_DR2AF', '(2)', STATUS )
+      CALL VIV ( IDMSF(3), 30, 'sla_DR2AF', '(3)', STATUS )
+      CALL VIV ( IDMSF(4), 9706, 'sla_DR2AF', '(4)', STATUS )
+
+      END
+
+      SUBROUTINE T_CR2TF ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C R 2 T F
+*  - - - - - - - -
+*
+*  Test sla_CR2TF, sla_DR2TF routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CR2TF, VIV, VVD, sla_DR2TF.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER IHMSF(4)
+      CHARACTER S
+
+      CALL sla_CR2TF ( 4, -3.01234E0, S, IHMSF )
+      CALL VIV ( ICHAR( S ), ICHAR( '-' ), 'sla_CR2TF', 'S', STATUS )
+      CALL VIV ( IHMSF(1), 11, 'sla_CR2TF', '(1)', STATUS )
+      CALL VIV ( IHMSF(2), 30, 'sla_CR2TF', '(2)', STATUS )
+      CALL VIV ( IHMSF(3), 22, 'sla_CR2TF', '(3)', STATUS )
+      CALL VVD ( DBLE( IHMSF(4) ), 6484D0, 1000D0, 'sla_CR2TF',
+     :           '(4)', STATUS )
+
+      CALL sla_DR2TF ( 4, -3.01234D0, S, IHMSF )
+      CALL VIV ( ICHAR( S ), ICHAR( '-' ), 'sla_DR2TF', 'S', STATUS )
+      CALL VIV ( IHMSF(1), 11, 'sla_DR2TF', '(1)', STATUS )
+      CALL VIV ( IHMSF(2), 30, 'sla_DR2TF', '(2)', STATUS )
+      CALL VIV ( IHMSF(3), 22, 'sla_DR2TF', '(3)', STATUS )
+      CALL VIV ( IHMSF(4), 6484, 'sla_DR2TF', '(4)', STATUS )
+
+      END
+
+      SUBROUTINE T_CS2C6 ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C S 2 C 6
+*  - - - - - - - -
+*
+*  Test sla_CS2C6, sla_DS2C6 routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CS2C6, VVD, sla_DS2C6.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL V(6)
+      DOUBLE PRECISION DV(6)
+
+      CALL sla_CS2C6( -3.21E0, 0.123E0, 0.456E0, -7.8E-6, 9.01E-6,
+     :                -1.23E-5, V )
+      CALL VVD ( DBLE( V(1) ), -0.4514964673880165D0,
+     :           1D-6, 'sla_CS2C6', 'X', STATUS )
+      CALL VVD ( DBLE( V(2) ),  0.03093394277342585D0,
+     :           1D-6, 'sla_CS2C6', 'Y', STATUS )
+      CALL VVD ( DBLE( V(3) ),  0.05594668105108779D0,
+     :           1D-6, 'sla_CS2C6', 'Z', STATUS )
+      CALL VVD ( DBLE( V(4) ),  1.292270850663260D-5,
+     :           1D-6, 'sla_CS2C6', 'XD', STATUS )
+      CALL VVD ( DBLE( V(5) ),  2.652814182060692D-6,
+     :           1D-6, 'sla_CS2C6', 'YD', STATUS )
+      CALL VVD ( DBLE( V(6) ),  2.568431853930293D-6,
+     :           1D-6, 'sla_CS2C6', 'ZD', STATUS )
+
+      CALL sla_DS2C6( -3.21D0, 0.123D0, 0.456D0, -7.8D-6, 9.01D-6,
+     :                -1.23D-5, DV )
+      CALL VVD ( DV(1), -0.4514964673880165D0, 1D-12, 'sla_DS2C6',
+     :           'X', STATUS )
+      CALL VVD ( DV(2),  0.03093394277342585D0, 1D-12, 'sla_DS2C6',
+     :           'Y', STATUS )
+      CALL VVD ( DV(3),  0.05594668105108779D0, 1D-12, 'sla_DS2C6',
+     :           'Z', STATUS )
+      CALL VVD ( DV(4),  1.292270850663260D-5, 1D-12, 'sla_DS2C6',
+     :           'XD', STATUS )
+      CALL VVD ( DV(5),  2.652814182060692D-6, 1D-12, 'sla_DS2C6',
+     :           'YD', STATUS )
+      CALL VVD ( DV(6),  2.568431853930293D-6, 1D-12, 'sla_DS2C6',
+     :           'ZD', STATUS )
+
+      END
+
+      SUBROUTINE T_CTF2D ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C T F 2 D
+*  - - - - - - - -
+*
+*  Test sla_CTF2D, sla_DTF2D routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CTF2D, VVD, VIV, sla_DTF2D.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      REAL D
+      DOUBLE PRECISION DD
+
+      CALL sla_CTF2D (23, 56, 59.1E0, D, J)
+      CALL VVD ( DBLE( D ), 0.99790625D0, 1D-6, 'sla_CTF2D',
+     :           'D', STATUS )
+      CALL VIV ( J, 0, 'sla_CTF2D', 'J', STATUS )
+
+      CALL sla_DTF2D (23, 56, 59.1D0, DD, J)
+      CALL VVD ( DD, 0.99790625D0, 1D-12, 'sla_DTF2D', 'D', STATUS )
+      CALL VIV ( J, 0, 'sla_DTF2D', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_CTF2R ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ C T F 2 R
+*  - - - - - - - -
+*
+*  Test sla_CTF2R, sla_DTF2R routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_CTF2R, VVD, VIV, sla_DTF2R.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      REAL R
+      DOUBLE PRECISION DR
+
+      CALL sla_CTF2R (23, 56, 59.1E0, R, J)
+      CALL VVD ( DBLE( R ), 6.270029887942679D0, 1D-6, 'sla_CTF2R',
+     :           'R', STATUS )
+      CALL VIV ( J, 0, 'sla_CTF2R', 'J', STATUS )
+
+      CALL sla_DTF2R (23, 56, 59.1D0, DR, J)
+      CALL VVD ( DR, 6.270029887942679D0, 1D-12, 'sla_DTF2R',
+     :           'R', STATUS )
+      CALL VIV ( J, 0, 'sla_DTF2R', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_DAT ( STATUS )
+*+
+*  - - - - - -
+*   T _ D A T
+*  - - - - - -
+*
+*  Test sla_DAT, sla_DTT, sla_DT routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_DAT, sla_DTT, sla_DT, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_DAT, sla_DTT, sla_DT
+
+
+      CALL VVD ( sla_DAT ( 43900D0 ), 18D0, 0D0, 'sla_DAT',
+     :           ' ', STATUS )
+      CALL VVD ( sla_DTT ( 40404D0 ), 39.709746D0, 1D-12, 'sla_DTT',
+     :           ' ', STATUS )
+      CALL VVD ( sla_DT ( 500D0 ), 4686.7D0, 1D-10, 'sla_DT',
+     :           '500', STATUS )
+      CALL VVD ( sla_DT ( 1400D0 ), 408D0, 1D-11, 'sla_DT',
+     :           '1400', STATUS )
+      CALL VVD ( sla_DT ( 1950D0 ), 27.99145626D0, 1D-12, 'sla_DT',
+     :           '1950', STATUS )
+
+      END
+
+      SUBROUTINE T_DBJIN ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ D B J I N
+*  - - - - - - - -
+*
+*  Test sla_DBJIN routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_DBJIN, VVD, VIV.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I, JA, JB
+      DOUBLE PRECISION D
+      CHARACTER*32 S
+      DATA S /'  B1950, , J 2000, B1975 JE     '/
+
+      I = 1
+      D = 0D0
+
+      CALL sla_DBJIN ( S, I, D, JA, JB )
+      CALL VIV ( I, 9, 'sla_DBJIN', 'I1', STATUS )
+      CALL VVD ( D, 1950D0, 0D0, 'sla_DBJIN', 'D1', STATUS )
+      CALL VIV ( JA, 0, 'sla_DBJIN', 'JA1', STATUS )
+      CALL VIV ( JB, 1, 'sla_DBJIN', 'JB1', STATUS )
+
+      CALL sla_DBJIN ( S, I, D, JA, JB )
+      CALL VIV ( I, 11, 'sla_DBJIN', 'I2', STATUS )
+      CALL VVD ( D, 1950D0, 0D0, 'sla_DBJIN', 'D2', STATUS )
+      CALL VIV ( JA, 1, 'sla_DBJIN', 'JA2', STATUS )
+      CALL VIV ( JB, 0, 'sla_DBJIN', 'JB2', STATUS )
+
+      CALL sla_DBJIN ( S, I, D, JA, JB )
+      CALL VIV ( I, 19, 'sla_DBJIN', 'I3', STATUS )
+      CALL VVD ( D, 2000D0, 0D0, 'sla_DBJIN', 'D3', STATUS )
+      CALL VIV ( JA, 0, 'sla_DBJIN', 'JA3', STATUS )
+      CALL VIV ( JB, 2, 'sla_DBJIN', 'JB3', STATUS )
+
+      CALL sla_DBJIN ( S, I, D, JA, JB )
+      CALL VIV ( I, 26, 'sla_DBJIN', 'I4', STATUS )
+      CALL VVD ( D, 1975D0, 0D0, 'sla_DBJIN', 'D4', STATUS )
+      CALL VIV ( JA, 0, 'sla_DBJIN', 'JA4', STATUS )
+      CALL VIV ( JB, 1, 'sla_DBJIN', 'JB4', STATUS )
+
+      CALL sla_DBJIN ( S, I, D, JA, JB )
+      CALL VIV ( I, 26, 'sla_DBJIN', 'I5', STATUS )
+      CALL VVD ( D, 1975D0, 0D0, 'sla_DBJIN', 'D5', STATUS )
+      CALL VIV ( JA, 1, 'sla_DBJIN', 'JA5', STATUS )
+      CALL VIV ( JB, 0, 'sla_DBJIN', 'JB5', STATUS )
+
+      END
+
+      SUBROUTINE T_DJCAL ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ D J C A L
+*  - - - - - - - -
+*
+*  Test sla_DJCAL, sla_DJCL routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_DJCAL, VIV.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER IYDMF(4), J, IY, IM, ID
+      DOUBLE PRECISION DJM
+      DOUBLE PRECISION F
+
+      DJM = 50123.9999D0
+
+      CALL sla_DJCAL ( 4, DJM, IYDMF, J )
+      CALL VIV ( IYDMF(1), 1996, 'sla_DJCAL', 'Y', STATUS )
+      CALL VIV ( IYDMF(2), 2, 'sla_DJCAL', 'M', STATUS )
+      CALL VIV ( IYDMF(3), 10, 'sla_DJCAL', 'D', STATUS )
+      CALL VIV ( IYDMF(4), 9999, 'sla_DJCAL', 'F', STATUS )
+      CALL VIV ( J, 0, 'sla_DJCAL', 'J', STATUS )
+
+      CALL sla_DJCL ( DJM, IY, IM, ID, F, J )
+      CALL VIV ( IY, 1996, 'sla_DJCL', 'Y', STATUS )
+      CALL VIV ( IM, 2, 'sla_DJCL', 'M', STATUS )
+      CALL VIV ( ID, 10, 'sla_DJCL', 'D', STATUS )
+      CALL VVD ( F, 0.9999D0, 1D-7, 'sla_DJCL', 'F', STATUS )
+      CALL VIV ( J, 0, 'sla_DJCL', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_DMAT ( STATUS )
+*+
+*  - - - - - - -
+*   T _ D M A T
+*  - - - - - - -
+*
+*  Test sla_DMAT routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_DMAT, VVD, VIV.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J, IW(3)
+      DOUBLE PRECISION DA(3,3)
+      DOUBLE PRECISION DV(3)
+      DOUBLE PRECISION DD
+
+      DATA DA/2.22D0,     1.6578D0,     1.380522D0,
+     :        1.6578D0,   1.380522D0,   1.22548578D0,
+     :        1.380522D0, 1.22548578D0, 1.1356276122D0/
+      DATA DV/2.28625D0, 1.7128825D0, 1.429432225D0/
+
+      CALL sla_DMAT ( 3, DA, DV, DD, J, IW )
+
+      CALL VVD ( DA(1,1), 18.02550629769198D0,
+     :           1D-10, 'sla_DMAT', 'A(1,1)', STATUS )
+      CALL VVD ( DA(1,2), -52.16386644917280607D0,
+     :           1D-10, 'sla_DMAT', 'A(1,2)', STATUS )
+      CALL VVD ( DA(1,3), 34.37875949717850495D0,
+     :           1D-10, 'sla_DMAT', 'A(1,3)', STATUS )
+      CALL VVD ( DA(2,1), -52.16386644917280607D0,
+     :           1D-10, 'sla_DMAT', 'A(2,1)', STATUS )
+      CALL VVD ( DA(2,2), 168.1778099099805627D0,
+     :           1D-10, 'sla_DMAT', 'A(2,2)', STATUS )
+      CALL VVD ( DA(2,3), -118.0722869694232670D0,
+     :           1D-10, 'sla_DMAT', 'A(2,3)', STATUS )
+      CALL VVD ( DA(3,1), 34.37875949717850495D0,
+     :           1D-10, 'sla_DMAT', 'A(3,1)', STATUS )
+      CALL VVD ( DA(3,2), -118.0722869694232670D0,
+     :           1D-10, 'sla_DMAT', 'A(3,2)', STATUS )
+      CALL VVD ( DA(3,3), 86.50307003740151262D0,
+     :           1D-10, 'sla_DMAT', 'A(3,3)', STATUS )
+      CALL VVD ( DV(1), 1.002346480763383D0,
+     :           1D-12, 'sla_DMAT', 'V(1)', STATUS )
+      CALL VVD ( DV(2), 0.03285594016974583489D0,
+     :           1D-12, 'sla_DMAT', 'V(2)', STATUS )
+      CALL VVD ( DV(3), 0.004760688414885247309D0,
+     :           1D-12, 'sla_DMAT', 'V(3)', STATUS )
+      CALL VVD ( DD, 0.003658344147359863D0,
+     :           1D-12, 'sla_DMAT', 'D', STATUS )
+      CALL VIV ( J, 0, 'sla_DMAT', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_E2H ( STATUS )
+*+
+*  - - - - - - -
+*   T _ E 2 H
+*  - - - - - - -
+*
+*  Test sla_E2H, sla_DE2H, sla_H2E, sla_DH2E routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  All the above plus VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL H, D, P, A, E
+      DOUBLE PRECISION DH, DD, DP, DA, DE
+
+      DH = -0.3D0
+      DD = -1.1D0
+      DP = -0.7D0
+
+      H = SNGL( DH )
+      D = SNGL( DD )
+      P = SNGL( DP )
+
+      CALL sla_DE2H ( DH, DD, DP, DA, DE )
+      CALL VVD ( DA, 2.820087515852369D0, 1D-12, 'sla_DE2H',
+     :           'AZ', STATUS )
+      CALL VVD ( DE, 1.132711866443304D0, 1D-12, 'sla_DE2H',
+     :           'El', STATUS )
+
+      CALL sla_E2H ( H, D, P, A, E )
+      CALL VVD ( DBLE( A ), 2.820087515852369D0, 1D-6, 'sla_E2H',
+     :           'AZ', STATUS )
+      CALL VVD ( DBLE( E ), 1.132711866443304D0, 1D-6, 'sla_E2H',
+     :           'El', STATUS )
+
+      CALL sla_DH2E ( DA, DE, DP, DH, DD )
+      CALL VVD ( DH, -0.3D0, 1D-12, 'sla_DH2E', 'HA', STATUS )
+      CALL VVD ( DD, -1.1D0, 1D-12, 'sla_DH2E', 'DEC', STATUS )
+
+      CALL sla_H2E ( A, E, P, H, D )
+      CALL VVD ( DBLE( H ), -0.3D0, 1D-6, 'sla_H2E',
+     :           'HA', STATUS )
+      CALL VVD ( DBLE( D ), -1.1D0, 1D-6, 'sla_H2E',
+     :           'DEC', STATUS )
+
+      END
+
+      SUBROUTINE T_EARTH ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E A R T H
+*  - - - - - - - -
+*
+*  Test sla_EARTH routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EARTH, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL PV(6)
+
+      CALL sla_EARTH ( 1978, 174, 0.87E0, PV )
+
+      CALL VVD ( DBLE( PV(1) ), 3.590867086D-2, 1D-6, 'sla_EARTH',
+     :           'PV(1)', STATUS )
+      CALL VVD ( DBLE( PV(2) ), -9.319285116D-1, 1D-6, 'sla_EARTH',
+     :           'PV(2)', STATUS )
+      CALL VVD ( DBLE( PV(3) ), -4.041039435D-1, 1D-6, 'sla_EARTH',
+     :           'PV(3)', STATUS )
+      CALL VVD ( DBLE( PV(4) ), 1.956930055D-7, 1D-13, 'sla_EARTH',
+     :           'PV(4)', STATUS )
+      CALL VVD ( DBLE( PV(5) ), 5.743797400D-9, 1D-13, 'sla_EARTH',
+     :           'PV(5)', STATUS )
+      CALL VVD ( DBLE( PV(6) ), 2.512001677D-9, 1D-13, 'sla_EARTH',
+     :           'PV(6)', STATUS )
+
+      END
+
+      SUBROUTINE T_ECLEQ ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E C L E Q
+*  - - - - - - - -
+*
+*  Test sla_ECLEQ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_ECLEQ, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R, D
+
+      CALL sla_ECLEQ ( 1.234D0, -0.123D0, 43210D0, R, D )
+
+      CALL VVD ( R, 1.229910118208851D0, 1D-12, 'sla_ECLEQ',
+     :           'RA', STATUS )
+      CALL VVD ( D, 0.2638461400411088D0, 1D-12, 'sla_ECLEQ',
+     :           'DEC', STATUS )
+
+      END
+
+      SUBROUTINE T_ECMAT ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E C M A T
+*  - - - - - - - -
+*
+*  Test sla_ECMAT routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_ECMAT, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RM(3,3)
+
+      CALL sla_ECMAT ( 41234D0, RM )
+
+      CALL VVD ( RM(1,1), 1D0, 1D-12, 'sla_ECMAT',
+     :           '(1,1)', STATUS )
+      CALL VVD ( RM(1,2), 0D0, 1D-12, 'sla_ECMAT',
+     :           '(1,2)', STATUS )
+      CALL VVD ( RM(1,3), 0D0, 1D-12, 'sla_ECMAT',
+     :           '(1,3)', STATUS )
+      CALL VVD ( RM(2,1), 0D0, 1D-12, 'sla_ECMAT',
+     :           '(2,1)', STATUS )
+      CALL VVD ( RM(2,2), 0.917456575085716D0, 1D-12, 'sla_ECMAT',
+     :           '(2,2)', STATUS )
+      CALL VVD ( RM(2,3), 0.397835937079581D0, 1D-12, 'sla_ECMAT',
+     :           '(2,3)', STATUS )
+      CALL VVD ( RM(3,1), 0D0, 1D-12, 'sla_ECMAT',
+     :           '(3,1)', STATUS )
+      CALL VVD ( RM(3,2), -0.397835937079581D0, 1D-12, 'sla_ECMAT',
+     :           '(3,2)', STATUS )
+      CALL VVD ( RM(3,3), 0.917456575085716D0, 1D-12, 'sla_ECMAT',
+     :           '(3,3)', STATUS )
+
+      END
+
+      SUBROUTINE T_ECOR ( STATUS )
+*+
+*  - - - - - - -
+*   T _ E C O R
+*  - - - - - - -
+*
+*  Test sla_ECOR routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_ECOR, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL RV, Tl
+
+      CALL sla_ECOR ( 2.345E0, -0.567E0, 1995, 306, 0.037E0, RV, Tl )
+
+      CALL VVD ( DBLE( RV ), -19.182460D0, 1D-3, 'sla_ECOR',
+     :           'RV', STATUS )
+      CALL VVD ( DBLE( Tl ), -120.36632D0, 1D-2, 'sla_ECOR',
+     :           'Tl', STATUS )
+
+      END
+
+      SUBROUTINE T_EG50 ( STATUS )
+*+
+*  - - - - - - -
+*   T _ E G 5 0
+*  - - - - - - -
+*
+*  Test sla_EG50 routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EG50, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DL, DB
+
+      CALL sla_EG50 ( 3.012D0, 1.234D0, DL, DB )
+
+      CALL VVD ( DL, 2.305557953813397D0, 1D-12, 'sla_EG50',
+     :           'L', STATUS )
+      CALL VVD ( DB, 0.7903600886585871D0, 1D-12, 'sla_EG50',
+     :           'B', STATUS )
+
+      END
+
+      SUBROUTINE T_EPB ( STATUS )
+
+*+
+*  - - - - - -
+*   T _ E P B
+*  - - - - - -
+*
+*  Test sla_EPB routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EPB, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_EPB
+
+
+      CALL VVD ( sla_EPB ( 45123D0 ), 1982.419793168669D0, 1D-8,
+     :           'sla_EPB', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_EPB2D ( STATUS )
+*+
+*  - - - - - - -
+*   T _ E P B 2 D
+*  - - - - - - -
+*
+*  Test sla_EPB2D routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EPB2D, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_EPB2D
+
+
+      CALL VVD ( sla_EPB2D ( 1975.5D0 ), 42595.5995279655D0, 1D-7,
+     :           'sla_EPB2D', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_EPCO ( STATUS )
+*+
+*  - - - - - - -
+*   T _ E P C O
+*  - - - - - - -
+*
+*  Test sla_EPCO routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EPCO, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_EPCO
+
+
+      CALL VVD ( sla_EPCO ( 'B', 'J', 2000D0 ), 2000.001277513665D0,
+     :           1D-7, 'sla_EPCO', 'BJ', STATUS )
+      CALL VVD ( sla_EPCO ( 'J', 'B', 1950D0 ), 1949.999790442300D0,
+     :           1D-7, 'sla_EPCO', 'JB', STATUS )
+      CALL VVD ( sla_EPCO ( 'J', 'J', 2000D0 ), 2000D0,
+     :           1D-7, 'sla_EPCO', 'JJ', STATUS )
+
+      END
+
+      SUBROUTINE T_EPJ ( STATUS )
+*+
+*  - - - - - -
+*   T _ E P J
+*  - - - - - -
+*
+*  Test sla_EPJ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EPJ, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_EPJ
+
+
+      CALL VVD ( sla_EPJ ( 42999D0 ), 1976.603696098563D0,
+     :           1D-7, 'sla_EPJ', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_EPJ2D ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E P J 2 D
+*  - - - - - - - -
+*
+*  Test sla_EPJ2D routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EPJ2D, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_EPJ2D
+
+
+      CALL VVD ( sla_EPJ2D ( 2010.077D0 ), 55225.124250D0,
+     :           1D-6, 'sla_EPJ2D', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_EQECL ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E Q E C L
+*  - - - - - - - -
+*
+*  Test sla_EQECL routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EQECL, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DL, DB
+
+      CALL sla_EQECL ( 0.789D0, -0.123D0, 46555D0, DL, DB )
+
+      CALL VVD ( DL, 0.7036566430349022D0, 1D-12, 'sla_EQECL',
+     :           'L', STATUS )
+      CALL VVD ( DB, -0.4036047164116848D0, 1D-12, 'sla_EQECL',
+     :           'B', STATUS )
+
+      END
+
+      SUBROUTINE T_EQEQX ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E Q E Q X
+*  - - - - - - - -
+*
+*  Test sla_EQEQX routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EQEQX, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_EQEQX
+
+
+      CALL VVD ( sla_EQEQX ( 41234D0 ), 5.376047445838358596D-5,
+     :           1D-17, 'sla_EQEQX', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_EQGAL ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E Q G A L
+*  - - - - - - - -
+*
+*  Test sla_EQGAL routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EQGAL, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DL, DB
+
+      CALL sla_EQGAL ( 5.67D0, -1.23D0, DL, DB )
+
+      CALL VVD ( DL, 5.612270780904526D0, 1D-12, 'sla_EQGAL',
+     :           'DL', STATUS )
+      CALL VVD ( DB, -0.6800521449061520D0, 1D-12, 'sla_EQGAL',
+     :           'DB', STATUS )
+
+      END
+
+      SUBROUTINE T_ETRMS ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ E T R M S
+*  - - - - - - - -
+*
+*  Test sla_ETRMS routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_ETRMS, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION EV(3)
+
+      CALL sla_ETRMS ( 1976.9D0, EV )
+
+      CALL VVD ( EV(1), -1.621617102537041D-6, 1D-18, 'sla_ETRMS',
+     :           'X', STATUS )
+      CALL VVD ( EV(2), -3.310070088507914D-7, 1D-18, 'sla_ETRMS',
+     :           'Y', STATUS )
+      CALL VVD ( EV(3), -1.435296627515719D-7, 1D-18, 'sla_ETRMS',
+     :           'Z', STATUS )
+
+      END
+
+      SUBROUTINE T_EVP ( STATUS )
+*+
+*  - - - - - -
+*   T _ E V P
+*  - - - - - -
+*
+*  Test sla_EVP and sla_EPV routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EVP, sla_EPV, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DVB(3), DPB(3), DVH(3), DPH(3)
+
+      CALL sla_EVP ( 50100D0, 1990D0, DVB, DPB, DVH, DPH )
+
+      CALL VVD ( DVB(1), -1.807210068604058436D-7, 1D-14, 'sla_EVP',
+     :           'DVB(X)', STATUS )
+      CALL VVD ( DVB(2), -8.385891022440320D-8, 1D-14, 'sla_EVP',
+     :           'DVB(Y)', STATUS )
+      CALL VVD ( DVB(3), -3.635846882638055D-8, 1D-14, 'sla_EVP',
+     :           'DVB(Z)', STATUS )
+      CALL VVD ( DPB(1), -0.4515615297360333D0, 1D-7, 'sla_EVP',
+     :           'DPB(X)', STATUS )
+      CALL VVD ( DPB(2),  0.8103788166239596D0, 1D-7, 'sla_EVP',
+     :           'DPB(Y)', STATUS )
+      CALL VVD ( DPB(3),  0.3514505204144827D0, 1D-7, 'sla_EVP',
+     :           'DPB(Z)', STATUS )
+      CALL VVD ( DVH(1), -1.806354061156890855D-7, 1D-14, 'sla_EVP',
+     :           'DVH(X)', STATUS )
+      CALL VVD ( DVH(2), -8.383798678086174D-8, 1D-14, 'sla_EVP',
+     :           'DVH(Y)', STATUS )
+      CALL VVD ( DVH(3), -3.635185843644782D-8, 1D-14, 'sla_EVP',
+     :           'DVH(Z)', STATUS )
+      CALL VVD ( DPH(1), -0.4478571659918565D0, 1D-7, 'sla_EVP',
+     :           'DPH(X)', STATUS )
+      CALL VVD ( DPH(2),  0.8036439916076232D0, 1D-7, 'sla_EVP',
+     :           'DPH(Y)', STATUS )
+      CALL VVD ( DPH(3),  0.3484298459102053D0, 1D-7, 'sla_EVP',
+     :           'DPH(Z)', STATUS )
+
+      CALL sla_EPV ( 53411.52501161D0, DPH, DVH, DPB, DVB )
+
+      CALL VVD ( DPH(1), -0.7757238809297653D0, 1D-12, 'sla_EPV',
+     :           'DPH(X)', STATUS )
+      CALL VVD ( DPH(2), +0.5598052241363390D0, 1D-12, 'sla_EPV',
+     :           'DPH(Y)', STATUS )
+      CALL VVD ( DPH(3), +0.2426998466481708D0, 1D-12, 'sla_EPV',
+     :           'DPH(Z)', STATUS )
+      CALL VVD ( DVH(1), -0.0109189182414732D0, 1D-12, 'sla_EPV',
+     :           'DVH(X)', STATUS )
+      CALL VVD ( DVH(2), -0.0124718726844084D0, 1D-12, 'sla_EPV',
+     :           'DVH(Y)', STATUS )
+      CALL VVD ( DVH(3), -0.0054075694180650D0, 1D-12, 'sla_EPV',
+     :           'DVH(Z)', STATUS )
+      CALL VVD ( DPB(1), -0.7714104440491060D0, 1D-12, 'sla_EPV',
+     :           'DPB(X)', STATUS )
+      CALL VVD ( DPB(2), +0.5598412061824225D0, 1D-12, 'sla_EPV',
+     :           'DPB(Y)', STATUS )
+      CALL VVD ( DPB(3), +0.2425996277722475D0, 1D-12, 'sla_EPV',
+     :           'DPB(Z)', STATUS )
+      CALL VVD ( DVB(1), -0.0109187426811683D0, 1D-12, 'sla_EPV',
+     :           'DVB(X)', STATUS )
+      CALL VVD ( DVB(2), -0.0124652546173285D0, 1D-12, 'sla_EPV',
+     :           'DVB(Y)', STATUS )
+      CALL VVD ( DVB(3), -0.0054047731809662D0, 1D-12, 'sla_EPV',
+     :           'DVB(Z)', STATUS )
+
+      END
+
+      SUBROUTINE T_FITXY ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ F I T X Y
+*  - - - - - - - -
+*
+*  Test sla_FITXY, sla_PXY, sla_INVF, sla_XY2XY, sla_DCMPF routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FITXY, VVD, VIV, sla_PXY, sla_INVF, sla_XY2XY, sla_DCMPF.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J, NPTS
+
+      PARAMETER (NPTS = 8)
+
+      DOUBLE PRECISION XYE(2,NPTS)
+      DOUBLE PRECISION XYM(2,NPTS)
+      DOUBLE PRECISION COEFFS(6), XYP(2,NPTS), XRMS, YRMS, RRMS,
+     :    BKWDS(6), X2, Y2, XZ, YZ, XS, YS, PERP, ORIENT
+
+      DATA XYE/-23.4D0, -12.1D0,   32D0,  -15.3D0,
+     :          10.9D0,  23.7D0,   -3D0,   16.1D0,
+     :          45D0,  32.5D0,    8.6D0,  -17D0,
+     :          15.3D0,  10D0,  121.7D0,   -3.8D0/
+      DATA XYM/-23.41D0, 12.12D0,  32.03D0,  15.34D0,
+     :          10.93D0,-23.72D0,  -3.01D0, -16.10D0,
+     :          44.90D0,-32.46D0,   8.55D0,  17.02D0,
+     :          15.31D0,-10.07D0, 120.92D0,   3.81D0/
+
+*  Fit a 4-coeff linear model to relate two sets of (x,y) coordinates.
+
+      CALL sla_FITXY ( 4, NPTS, XYE, XYM, COEFFS, J )
+      CALL VVD ( COEFFS(1), -7.938263381515947D-3,
+     :           1D-12, 'sla_FITXY', '4/1', STATUS )
+      CALL VVD ( COEFFS(2), 1.004640925187200D0,
+     :           1D-12, 'sla_FITXY', '4/2', STATUS )
+      CALL VVD ( COEFFS(3), 3.976948048238268D-4,
+     :           1D-12, 'sla_FITXY', '4/3', STATUS )
+      CALL VVD ( COEFFS(4), -2.501031681585021D-2,
+     :           1D-12, 'sla_FITXY', '4/4', STATUS )
+      CALL VVD ( COEFFS(5), 3.976948048238268D-4,
+     :           1D-12, 'sla_FITXY', '4/5', STATUS )
+      CALL VVD ( COEFFS(6), -1.004640925187200D0,
+     :           1D-12, 'sla_FITXY', '4/6', STATUS )
+      CALL VIV ( J, 0, 'sla_FITXY', '4/J', STATUS )
+
+*  Same but 6-coeff.
+
+      CALL sla_FITXY ( 6, NPTS, XYE, XYM, COEFFS, J )
+      CALL VVD ( COEFFS(1), -2.617232551841476D-2,
+     :           1D-12, 'sla_FITXY', '6/1', STATUS )
+      CALL VVD ( COEFFS(2), 1.005634905041421D0,
+     :           1D-12, 'sla_FITXY', '6/2', STATUS )
+      CALL VVD ( COEFFS(3), 2.133045023329208D-3,
+     :           1D-12, 'sla_FITXY', '6/3', STATUS )
+      CALL VVD ( COEFFS(4), 3.846993364417779909D-3,
+     :           1D-12, 'sla_FITXY', '6/4', STATUS )
+      CALL VVD ( COEFFS(5), 1.301671386431460D-4,
+     :           1D-12, 'sla_FITXY', '6/5', STATUS )
+      CALL VVD ( COEFFS(6), -0.9994827065693964D0,
+     :           1D-12, 'sla_FITXY', '6/6', STATUS )
+      CALL VIV ( J, 0, 'sla_FITXY', '6/J', STATUS )
+
+*  Compute predicted coordinates and residuals.
+
+      CALL sla_PXY ( NPTS, XYE, XYM, COEFFS, XYP, XRMS, YRMS, RRMS )
+      CALL VVD ( XYP(1,1), -23.542232946855340D0,
+     :           1D-12, 'sla_PXY', 'X1', STATUS )
+      CALL VVD ( XYP(2,1), -12.11293062297230597D0,
+     :           1D-12, 'sla_PXY', 'Y1', STATUS )
+      CALL VVD ( XYP(1,2), 32.217034593616180D0,
+     :           1D-12, 'sla_PXY', 'X2', STATUS )
+      CALL VVD ( XYP(2,2), -15.324048471959370D0,
+     :           1D-12, 'sla_PXY', 'Y2', STATUS )
+      CALL VVD ( XYP(1,3), 10.914821358630950D0,
+     :           1D-12, 'sla_PXY', 'X3', STATUS )
+      CALL VVD ( XYP(2,3), 23.712999520015880D0,
+     :           1D-12, 'sla_PXY', 'Y3', STATUS )
+      CALL VVD ( XYP(1,4), -3.087475414568693D0,
+     :           1D-12, 'sla_PXY', 'X4', STATUS )
+      CALL VVD ( XYP(2,4), 16.09512676604438414D0,
+     :           1D-12, 'sla_PXY', 'Y4', STATUS )
+      CALL VVD ( XYP(1,5), 45.05759626938414666D0,
+     :           1D-12, 'sla_PXY', 'X5', STATUS )
+      CALL VVD ( XYP(2,5), 32.45290015313210889D0,
+     :           1D-12, 'sla_PXY', 'Y5', STATUS )
+      CALL VVD ( XYP(1,6), 8.608310538882801D0,
+     :           1D-12, 'sla_PXY', 'X6', STATUS )
+      CALL VVD ( XYP(2,6), -17.006235743411300D0,
+     :           1D-12, 'sla_PXY', 'Y6', STATUS )
+      CALL VVD ( XYP(1,7), 15.348618307280820D0,
+     :           1D-12, 'sla_PXY', 'X7', STATUS )
+      CALL VVD ( XYP(2,7), 10.07063070741086835D0,
+     :           1D-12, 'sla_PXY', 'Y7', STATUS )
+      CALL VVD ( XYP(1,8), 121.5833272936291482D0,
+     :           1D-12, 'sla_PXY', 'X8', STATUS )
+      CALL VVD ( XYP(2,8), -3.788442308260240D0,
+     :           1D-12, 'sla_PXY', 'Y8', STATUS )
+      CALL VVD ( XRMS ,0.1087247110488075D0,
+     :           1D-13, 'sla_PXY', 'XRMS', STATUS )
+      CALL VVD ( YRMS, 0.03224481175794666D0,
+     :           1D-13, 'sla_PXY', 'YRMS', STATUS )
+      CALL VVD ( RRMS, 0.1134054261398109D0,
+     :           1D-13, 'sla_PXY', 'RRMS', STATUS )
+
+*  Invert the model.
+
+      CALL sla_INVF ( COEFFS, BKWDS, J )
+      CALL VVD ( BKWDS(1), 0.02601750208015891D0,
+     :           1D-12, 'sla_INVF', '1', status)
+      CALL VVD ( BKWDS(2), 0.9943963945040283D0,
+     :           1D-12, 'sla_INVF', '2', status)
+      CALL VVD ( BKWDS(3), 0.002122190075497872D0,
+     :           1D-12, 'sla_INVF', '3', status)
+      CALL VVD ( BKWDS(4), 0.003852372795357474353D0,
+     :           1D-12, 'sla_INVF', '4', status)
+      CALL VVD ( BKWDS(5), 0.0001295047252932767D0,
+     :           1D-12, 'sla_INVF', '5', status)
+      CALL VVD ( BKWDS(6), -1.000517284779212D0,
+     :           1D-12, 'sla_INVF', '6', status)
+      CALL VIV ( J, 0, 'sla_INVF', 'J', STATUS )
+
+*  Transform one x,y.
+
+      CALL sla_XY2XY ( 44.5D0, 32.5D0, COEFFS, X2, Y2 )
+      CALL VVD ( X2, 44.793904912083030D0,
+     :           1D-11, 'sla_XY2XY', 'X', status)
+      CALL VVD ( Y2, -32.473548532471330D0,
+     :           1D-11, 'sla_XY2XY', 'Y', status)
+
+*  Decompose the fit into scales etc.
+
+      CALL sla_DCMPF ( COEFFS, XZ, YZ, XS, YS, PERP, ORIENT )
+      CALL VVD ( XZ, -0.0260175020801628646D0,
+     :           1D-12, 'sla_DCMPF', 'XZ', status)
+      CALL VVD ( YZ, -0.003852372795357474353D0,
+     :           1D-12, 'sla_DCMPF', 'YZ', status)
+      CALL VVD ( XS, -1.00563491346569D0,
+     :           1D-12, 'sla_DCMPF', 'XS', status)
+      CALL VVD ( YS, 0.999484982684761D0,
+     :           1D-12, 'sla_DCMPF', 'YS', status)
+      CALL VVD ( PERP,-0.002004707996156263D0,
+     :           1D-12, 'sla_DCMPF', 'P', status)
+      CALL VVD ( ORIENT, 3.14046086182333D0,
+     :           1D-12, 'sla_DCMPF', 'O', status)
+
+      END
+
+      SUBROUTINE T_FK425 ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ F K 4 2 5
+*  - - - - - - - -
+*
+*  Test sla_FK425 routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FK425.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R2000, D2000, DR2000, DD2000, P2000, V2000
+
+      CALL sla_FK425 ( 1.234D0, -0.123D0, -1D-5, 2D-6, 0.5D0,
+     :                 20D0, R2000, D2000, DR2000, DD2000, P2000,
+     :                 V2000 )
+
+      CALL VVD ( R2000, 1.244117554618727D0, 1D-12, 'sla_FK425',
+     :           'R', STATUS )
+      CALL VVD ( D2000, -0.1213164254458709D0, 1D-12, 'sla_FK425',
+     :           'D', STATUS )
+      CALL VVD ( DR2000, -9.964265838268711D-6, 1D-17, 'sla_FK425',
+     :           'DR', STATUS )
+      CALL VVD ( DD2000, 2.038065265773541D-6, 1D-17, 'sla_FK425',
+     :           'DD', STATUS )
+      CALL VVD ( P2000, 0.4997443812415410D0, 1D-12, 'sla_FK425',
+     :           'P', STATUS )
+      CALL VVD ( V2000, 20.010460915421010D0, 1D-11, 'sla_FK425',
+     :           'V', STATUS )
+
+      END
+
+      SUBROUTINE T_FK45Z ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ F K 4 5 Z
+*  - - - - - - - -
+*
+*  Test sla_FK45Z routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FK45Z.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R2000, D2000
+
+      CALL sla_FK45Z ( 1.234D0, -0.123D0, 1984D0, R2000, D2000 )
+
+      CALL VVD ( R2000, 1.244616510731691D0, 1D-12, 'sla_FK45Z',
+     :           'R', STATUS )
+      CALL VVD ( D2000, -0.1214185839586555D0, 1D-12, 'sla_FK45Z',
+     :           'D', STATUS )
+
+      END
+
+      SUBROUTINE T_FK524 ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ F K 5 2 4
+*  - - - - - - - -
+*
+*  Test sla_FK524 routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FK524.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R1950, D1950, DR1950, DD1950, P1950, V1950
+
+      CALL sla_FK524 ( 4.567D0, -1.23D0, -3D-5, 8D-6, 0.29D0,
+     :                 -35D0, R1950, D1950, DR1950, DD1950, P1950,
+     :                 V1950 )
+
+      CALL VVD ( R1950, 4.543778603272084D0, 1D-12, 'sla_FK524',
+     :           'R', STATUS )
+      CALL VVD ( D1950, -1.229642790187574D0, 1D-12, 'sla_FK524',
+     :           'D', STATUS )
+      CALL VVD ( DR1950, -2.957873121769244D-5, 1D-17, 'sla_FK524',
+     :           'DR', STATUS )
+      CALL VVD ( DD1950, 8.117725309659079D-6, 1D-17, 'sla_FK524',
+     :           'DD', STATUS )
+      CALL VVD ( P1950, 0.2898494999992917D0, 1D-12, 'sla_FK524',
+     :           'P', STATUS )
+      CALL VVD ( V1950, -35.026862824252680D0, 1D-11, 'sla_FK524',
+     :           'V', STATUS )
+
+      END
+
+      SUBROUTINE T_FK52H ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ F K 5 2 H
+*  - - - - - - - -
+*
+*  Test sla_FK52H, sla_H2FK5, sla_FK5HZ, sla_HFK5Z routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FK524, sla_H2FK5.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R5, D5, DR5, DD5, RH, DH, DRH, DDH
+
+      CALL sla_FK52H ( 1.234D0, -0.987D0, 1D-6, -2D-6, RH, DH, DRH,
+     :                 DDH )
+      CALL VVD ( RH, 1.234000000272122558D0, 1D-13, 'sla_FK52H',
+     :           'R', STATUS )
+      CALL VVD ( DH, -0.9869999235218543959D0, 1D-13, 'sla_FK52H',
+     :           'D', STATUS )
+      CALL VVD ( DRH, 0.000000993178295D0, 1D-13, 'sla_FK52H',
+     :           'DR', STATUS )
+      CALL VVD ( DDH, -0.000001997665915D0, 1D-13, 'sla_FK52H',
+     :           'DD', STATUS )
+      CALL sla_H2FK5 ( RH, DH, DRH, DDH, r5, D5, DR5, DD5 )
+      CALL VVD ( R5, 1.234D0, 1D-13, 'sla_H2FK5', 'R', STATUS )
+      CALL VVD ( D5, -0.987D0, 1D-13, 'sla_H2FK5', 'D', STATUS )
+      CALL VVD ( DR5, 1D-6, 1D-13, 'sla_H2FK5', 'DR', STATUS )
+      CALL VVD ( DD5, -2D-6, 1D-13, 'sla_H2FK5', 'DD', STATUS )
+      CALL sla_FK5HZ ( 1.234D0, -0.987D0, 1980D0, RH, DH )
+      CALL VVD ( RH, 1.234000136713611301D0, 1D-13, 'sla_FK5HZ',
+     :           'R', STATUS )
+      CALL VVD ( DH, -0.9869999702020807601D0, 1D-13, 'sla_FK5HZ',
+     :           'D', STATUS )
+      CALL sla_HFK5Z ( RH, DH, 1980D0, R5, D5, DR5, DD5 )
+      CALL VVD ( R5, 1.234D0, 1D-13, 'sla_HFK5Z', 'R', STATUS )
+      CALL VVD ( D5, -0.987D0, 1D-13, 'sla_HFK5Z', 'D', STATUS )
+      CALL VVD ( DR5, 0.000000006822074D0, 1D-13, 'sla_HFK5Z',
+     :           'DR', STATUS )
+      CALL VVD ( DD5, -0.000000002334012D0, 1D-13, 'sla_HFK5Z',
+     :           'DD', STATUS )
+
+      END
+
+      SUBROUTINE T_FK54Z ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ F K 5 4 Z
+*  - - - - - - - -
+*
+*  Test sla_FK54Z routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FK54Z.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R1950, D1950, DR1950, DD1950
+
+      CALL sla_FK54Z ( 0.001D0, -1.55D0, 1900D0, R1950, D1950,
+     :                 DR1950, DD1950 )
+
+      CALL VVD ( R1950, 6.271585543439484D0, 1D-12, 'sla_FK54Z',
+     :           'R', STATUS )
+      CALL VVD ( D1950, -1.554861715330319D0, 1D-12, 'sla_FK54Z',
+     :           'D', STATUS )
+      CALL VVD ( DR1950, -4.175410876044916011D-8, 1D-20, 'sla_FK54Z',
+     :           'DR', STATUS )
+      CALL VVD ( DD1950, 2.118595098308522D-8, 1D-20, 'sla_FK54Z',
+     :           'DD', STATUS )
+
+      END
+
+      SUBROUTINE T_FLOTIN ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ F L O T I N
+*  - - - - - - - - -
+*
+*  Test sla_FLOTIN, sla_DFLTIN routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_FLOTIN, VVD, VIV, sla_DFLTIN.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I, J
+      REAL FV
+      DOUBLE PRECISION DV
+      CHARACTER*33 S
+      DATA S /'  12.345, , -0 1E3-4 2000  E     '/
+
+      I = 1
+      FV = 0.0
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 10, 'sla_FLOTIN', 'V5', STATUS )
+      CALL VVD ( DBLE( FV ), 12.345D0, 1D-5, 'sla_FLOTIN',
+     :           'V1', STATUS )
+      CALL VIV ( J, 0, 'sla_FLOTIN', 'J1', STATUS )
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 12, 'sla_FLOTIN', 'I2', STATUS )
+      CALL VVD ( DBLE( FV ), 12.345D0, 1D-5, 'sla_FLOTIN',
+     :           'V2', STATUS )
+      CALL VIV ( J, 1, 'sla_FLOTIN', 'J2', STATUS )
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 16, 'sla_FLOTIN', 'I3', STATUS )
+      CALL VVD ( DBLE( FV ), 0D0, 0D0, 'sla_FLOTIN', 'V3', STATUS )
+      CALL VIV ( J, -1, 'sla_FLOTIN', 'J3', STATUS )
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 19, 'sla_FLOTIN', 'I4', STATUS )
+      CALL VVD ( DBLE( FV), 1000D0, 0D0, 'sla_FLOTIN', 'V4', STATUS )
+      CALL VIV ( J, 0, 'sla_FLOTIN', 'J4', STATUS )
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 22, 'sla_FLOTIN', 'I5', STATUS )
+      CALL VVD ( DBLE( FV ), -4D0, 0D0, 'sla_FLOTIN', 'V5', STATUS )
+      CALL VIV ( J, -1, 'sla_FLOTIN', 'J5', STATUS )
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 28, 'sla_FLOTIN', 'I6', STATUS )
+      CALL VVD ( DBLE( FV ), 2000D0, 0D0, 'sla_FLOTIN',
+     :           'V6', STATUS )
+      CALL VIV ( J, 0, 'sla_FLOTIN', 'J6', STATUS )
+
+      CALL sla_FLOTIN ( S, I, FV, J )
+      CALL VIV ( I, 34, 'sla_FLOTIN', 'I7', STATUS )
+      CALL VVD ( DBLE( FV ), 2000D0, 0D0, 'sla_FLOTIN',
+     :           'V7', STATUS )
+      CALL VIV ( J, 2, 'sla_FLOTIN', 'J7', STATUS )
+
+      I = 1
+      DV = 0D0
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 10, 'sla_DFLTIN', 'I1', STATUS )
+      CALL VVD ( DV, 12.345D0, 1D-12, 'sla_DFLTIN', 'V1', STATUS )
+      CALL VIV ( J, 0, 'sla_DFLTIN', 'J1', STATUS )
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 12, 'sla_DFLTIN', 'I2', STATUS )
+      CALL VVD ( DV, 12.345D0, 1D-12, 'sla_DFLTIN', 'V2', STATUS )
+      CALL VIV ( J, 1, 'sla_DFLTIN', 'J2', STATUS )
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 16, 'sla_DFLTIN', 'I3', STATUS )
+      CALL VVD ( DV, 0D0, 0D0, 'sla_DFLTIN', 'V3', STATUS )
+      CALL VIV ( J, -1, 'sla_DFLTIN', 'J3', STATUS )
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 19, 'sla_DFLTIN', 'I4', STATUS )
+      CALL VVD ( DV, 1000D0, 0D0, 'sla_DFLTIN', 'V4', STATUS )
+      CALL VIV ( J, 0, 'sla_DFLTIN', 'J4', STATUS )
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 22, 'sla_DFLTIN', 'I5', STATUS )
+      CALL VVD ( DV, -4D0, 0D0, 'sla_DFLTIN', 'V5', STATUS )
+      CALL VIV ( J, -1, 'sla_DFLTIN', 'J5', STATUS )
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 28, 'sla_DFLTIN', 'I6', STATUS )
+      CALL VVD ( DV, 2000D0, 0D0, 'sla_DFLTIN', 'V6', STATUS )
+      CALL VIV ( J, 0, 'sla_DFLTIN', 'J6', STATUS )
+
+      CALL sla_DFLTIN ( S, I, DV, J )
+      CALL VIV ( I, 34, 'sla_DFLTIN', 'I7', STATUS )
+      CALL VVD ( DV, 2000D0, 0D0, 'sla_DFLTIN', 'V7', STATUS )
+      CALL VIV ( J, 2, 'sla_DFLTIN', 'J7', STATUS )
+
+      END
+
+      SUBROUTINE T_GALEQ ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ G A L E Q
+*  - - - - - - - -
+*
+*  Test sla_GALEQ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_GALEQ, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DR, DD
+
+      CALL sla_GALEQ ( 5.67D0, -1.23D0, DR, DD )
+
+      CALL VVD ( DR, 0.04729270418071426D0, 1D-12, 'sla_GALEQ',
+     :           'DR', STATUS )
+      CALL VVD ( DD, -0.7834003666745548D0, 1D-12, 'sla_GALEQ',
+     :           'DD', STATUS )
+
+      END
+
+      SUBROUTINE T_GALSUP ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ G A L S U P
+*  - - - - - - - - -
+*
+*  Test sla_GALSUP routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_GALSUP, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DSL, DSB
+
+      CALL sla_GALSUP ( 6.1D0, -1.4D0, DSL, DSB )
+
+      CALL VVD ( DSL, 4.567933268859171D0, 1D-12, 'sla_GALSUP',
+     :           'DSL', STATUS )
+      CALL VVD ( DSB, -0.01862369899731829D0, 1D-12, 'sla_GALSUP',
+     :           'DSB', STATUS )
+
+      END
+
+      SUBROUTINE T_GE50 ( STATUS )
+*+
+*  - - - - - - -
+*   T _ G E 5 0
+*  - - - - - - -
+*
+*  Test sla_GE50 routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_GE50, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DR, DD
+
+      CALL sla_GE50 ( 6.1D0, -1.55D0, DR, DD )
+
+      CALL VVD ( DR, 0.1966825219934508D0, 1D-12, 'sla_GE50',
+     :           'DR', STATUS )
+      CALL VVD ( DD, -0.4924752701678960D0, 1D-12, 'sla_GE50',
+     :           'DD', STATUS )
+
+      END
+
+      SUBROUTINE T_GMST ( STATUS )
+*+
+*  - - - - - - -
+*   T _ G M S T
+*  - - - - - - -
+*
+*  Test sla_GMST and sla_GMSTA routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_GMST, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_GMST, sla_GMSTA
+
+
+      CALL VVD ( sla_GMST ( 43999.999D0 ), 3.9074971356487318D0,
+     :           1D-9, 'sla_GMST', ' ', STATUS )
+      CALL VVD ( sla_GMSTA ( 43999D0, 0.999D0 ),
+     :           3.9074971356487318D0, 1D-12, 'sla_GMSTA', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_INTIN ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ I N T I N
+*  - - - - - - - -
+*
+*  Test sla_INTIN routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_INTIN, VIV.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER*4 N
+      INTEGER I, J
+      CHARACTER*28 S
+      DATA S /'  -12345, , -0  2000  +     '/
+
+      I = 1
+      N = 0
+
+      CALL sla_INTIN ( S, I, N, J )
+      CALL VIV ( I, 10, 'sla_INTIN', 'I1', STATUS )
+      CALL VLV ( N, -12345, 'sla_INTIN', 'V1', STATUS )
+      CALL VIV ( J, -1, 'sla_INTIN', 'J1', STATUS )
+
+      CALL sla_INTIN ( S, I, N, J )
+      CALL VIV ( I, 12, 'sla_INTIN', 'I2', STATUS )
+      CALL VLV ( N, -12345, 'sla_INTIN', 'V2', STATUS )
+      CALL VIV ( J, 1, 'sla_INTIN', 'J2', STATUS )
+
+      CALL sla_INTIN ( S, I, N, J )
+      CALL VIV ( I, 17, 'sla_INTIN', 'I3', STATUS )
+      CALL VLV ( N, 0, 'sla_INTIN', 'V3', STATUS )
+      CALL VIV ( J, -1, 'sla_INTIN', 'J3', STATUS )
+
+      CALL sla_INTIN ( S, I, N, J )
+      CALL VIV ( I, 23, 'sla_INTIN', 'I4', STATUS )
+      CALL VLV ( N, 2000, 'sla_INTIN', 'V4', STATUS )
+      CALL VIV ( J, 0, 'sla_INTIN', 'J4', STATUS )
+
+      CALL sla_INTIN ( S, I, N, J )
+      CALL VIV ( I, 29, 'sla_INTIN', 'I5', STATUS )
+      CALL VLV ( N, 2000, 'sla_INTIN', 'V5', STATUS )
+      CALL VIV ( J, 2, 'sla_INTIN', 'J5', STATUS )
+
+      END
+
+      SUBROUTINE T_KBJ ( STATUS )
+*+
+*  - - - - - -
+*   T _ K B J
+*  - - - - - -
+*
+*  Test sla_KBJ routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_KBJ, VCS, VIV.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      DOUBLE PRECISION E
+      CHARACTER K
+      DATA K /'?'/
+
+      E = 1950D0
+      CALL sla_KBJ ( -1, E, K, J )
+      CALL VCS ( K, ' ', 'sla_KBJ', 'JB1', STATUS )
+      CALL VIV ( J, 1, 'sla_KBJ', 'J1', STATUS )
+      CALL sla_KBJ ( 0, E, K, J )
+      CALL VCS ( K, 'B', 'sla_KBJ', 'JB2', STATUS )
+      CALL VIV ( J, 0, 'sla_KBJ', 'J2', STATUS )
+      CALL sla_KBJ ( 1, E, K, J )
+      CALL VCS ( K, 'B', 'sla_KBJ', 'JB3', STATUS )
+      CALL VIV ( J, 0, 'sla_KBJ', 'J3', STATUS )
+      CALL sla_KBJ ( 2, E, K, J )
+      CALL VCS ( K, 'J', 'sla_KBJ', 'JB4', STATUS )
+      CALL VIV ( J, 0, 'sla_KBJ', 'J4', STATUS )
+      CALL sla_KBJ ( 3, E, K, J )
+      CALL VCS ( K, ' ', 'sla_KBJ', 'JB5', STATUS )
+      CALL VIV ( J, 1, 'sla_KBJ', 'J5', STATUS )
+
+      E = 2000D0
+      CALL sla_KBJ ( 0, E, K, J )
+      CALL VCS ( K, 'J', 'sla_KBJ', 'JB6', STATUS )
+      CALL VIV ( J, 0, 'sla_KBJ', 'J6', STATUS )
+      CALL sla_KBJ ( 1, E, K, J )
+      CALL VCS ( K, 'B', 'sla_KBJ', 'jB7', STATUS )
+      CALL VIV ( J, 0, 'sla_KBJ', 'J7', STATUS )
+      CALL sla_KBJ ( 2, E, K, J )
+      CALL VCS ( K, 'J', 'sla_KBJ', 'JB8', STATUS )
+      CALL VIV ( J, 0, 'sla_KBJ', 'J8', STATUS )
+
+      END
+
+      SUBROUTINE T_MAP ( STATUS )
+*+
+*  - - - - - -
+*   T _ M A P
+*  - - - - - -
+*
+*  Test sla_MAP, sla_MAPPA, sla_MAPQK, sla_MAPQKZ routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_MAP, sla_MAPPA, sla_MAPQK, sla_MAPQKZ, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RA, DA, AMPRMS(21)
+
+      CALL sla_MAP ( 6.123D0, -0.999D0, 1.23D-5, -0.987D-5,
+     :               0.123D0, 32.1D0, 1999D0, 43210.9D0, RA, DA )
+
+      CALL VVD ( RA, 6.117130429775647D0, 1D-12, 'sla_MAP',
+     :           'RA', STATUS )
+      CALL VVD ( DA, -1.000880769038632D0, 1D-12, 'sla_MAP',
+     :           'DA', STATUS )
+
+      CALL sla_MAPPA ( 2020D0, 45012.3D0, AMPRMS )
+
+      CALL VVD ( AMPRMS(1), -37.884188911704310D0,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(1)', STATUS )
+      CALL VVD ( AMPRMS(2),  -0.7888341859486424D0,
+     :           1D-7, 'sla_MAPPA', 'AMPRMS(2)', STATUS )
+      CALL VVD ( AMPRMS(3),   0.5405321789059870D0,
+     :           1D-7, 'sla_MAPPA', 'AMPRMS(3)', STATUS )
+      CALL VVD ( AMPRMS(4),   0.2340784267119091D0,
+     :           1D-7, 'sla_MAPPA', 'AMPRMS(4)', STATUS )
+      CALL VVD ( AMPRMS(5),  -0.8067807553217332071D0,
+     :           1D-7, 'sla_MAPPA', 'AMPRMS(5)', STATUS )
+      CALL VVD ( AMPRMS(6),   0.5420884771236513880D0,
+     :           1D-7, 'sla_MAPPA', 'AMPRMS(6)', STATUS )
+      CALL VVD ( AMPRMS(7),   0.2350423277034460899D0,
+     :           1D-7, 'sla_MAPPA', 'AMPRMS(7)', STATUS )
+      CALL VVD ( AMPRMS(8),   1.999729469227807D-8,
+     :           1D-12, 'sla_MAPPA', 'AMPRMS(8)', STATUS )
+      CALL VVD ( AMPRMS(9),  -6.035531043691568494D-5,
+     :           1D-12, 'sla_MAPPA', 'AMPRMS(9)', STATUS )
+      CALL VVD ( AMPRMS(10), -7.381891582591552377D-5,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(10)', STATUS )
+      CALL VVD ( AMPRMS(11), -3.200897749853207412D-5,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(11)', STATUS )
+      CALL VVD ( AMPRMS(12),  0.9999999949417148D0,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(12)', STATUS )
+      CALL VVD ( AMPRMS(13),  0.9999566751478850D0,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(13)', STATUS )
+      CALL VVD ( AMPRMS(14), -8.537361890149777D-3,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(14)', STATUS )
+      CALL VVD ( AMPRMS(15), -3.709619811228171D-3,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(15)', STATUS )
+      CALL VVD ( AMPRMS(16), 8.537308717676752D-3,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(16)', STATUS )
+      CALL VVD ( AMPRMS(17),  0.9999635560607690D0,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(17)', STATUS )
+      CALL VVD ( AMPRMS(18), -3.016886324169151D-5,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(18)', STATUS )
+      CALL VVD ( AMPRMS(19),  3.709742180572510D-3,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(19)', STATUS )
+      CALL VVD ( AMPRMS(20), -1.502613373498668D-6,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(20)', STATUS )
+      CALL VVD ( AMPRMS(21),  0.9999931188816729D0,
+     :           1D-11, 'sla_MAPPA', 'AMPRMS(21)', STATUS )
+
+      CALL sla_MAPQK ( 1.234D0, -0.987D0, -1.2D-5, -0.99D0,
+     :                 0.75D0, -23.4D0, AMPRMS, RA, DA )
+
+      CALL VVD ( RA, 1.223337584930993D0, 1D-11, 'sla_MAPQK',
+     :           'RA', STATUS )
+      CALL VVD ( DA, 0.5558838650379129D0, 1D-11, 'sla_MAPQK',
+     :           'DA', STATUS )
+
+      CALL sla_MAPQKZ ( 6.012D0, 1.234D0, AMPRMS, RA, DA )
+
+      CALL VVD ( RA, 6.006091119756597D0, 1D-11, 'sla_MAPQKZ',
+     :           'RA', STATUS )
+      CALL VVD ( DA, 1.23045846622498D0, 1D-11, 'sla_MAPQKZ',
+     :           'DA', STATUS )
+
+      END
+
+      SUBROUTINE T_MOON ( STATUS )
+*+
+*  - - - - - - -
+*   T _ M O O N
+*  - - - - - - -
+*
+*  Test sla_MOON and sla_DMOON routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_MOON, sla_DMOON, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL PV(6)
+
+      CALL sla_MOON ( 1999, 365, 0.9E0, PV )
+
+      CALL VVD ( DBLE( PV(1) ), -2.155729505970773D-3, 1D-6,
+     :           'sla_MOON', '(1)', STATUS )
+      CALL VVD ( DBLE( PV(2) ), -1.538107758633427D-3, 1D-6,
+     :           'sla_MOON', '(2)', STATUS )
+      CALL VVD ( DBLE( PV(3) ), -4.003940552689305D-4, 1D-6 ,
+     :           'sla_MOON', '(3)', STATUS )
+      CALL VVD ( DBLE( PV(4) ),  3.629209419071314D-9, 1D-12,
+     :           'sla_MOON', '(4)', STATUS )
+      CALL VVD ( DBLE( PV(5) ), -4.989667166259157D-9, 1D-12,
+     :           'sla_MOON', '(5)', STATUS )
+      CALL VVD ( DBLE( PV(6) ), -2.160752457288307D-9, 1D-12,
+     :           'sla_MOON', '(6)', STATUS )
+
+      END
+
+      SUBROUTINE T_NUT ( STATUS )
+*+
+*  - - - - - -
+*   T _ N U T
+*  - - - - - -
+*
+*  Test sla_NUT, sla_NUTC, sla_NUTC80 routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_NUT, sla_NUTC, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RMATN(3,3), DPSI, DEPS, EPS0
+
+      CALL sla_NUT ( 46012.34D0, RMATN )
+
+      CALL VVD ( RMATN(1,1),  9.999999969492166D-1, 1D-12,
+     :           'sla_NUT', '(1,1)', STATUS )
+      CALL VVD ( RMATN(1,2),  7.166577986249302D-5, 1D-12,
+     :           'sla_NUT', '(1,2)', STATUS )
+      CALL VVD ( RMATN(1,3),  3.107382973077677D-5, 1D-12,
+     :           'sla_NUT', '(1,3)', STATUS )
+      CALL VVD ( RMATN(2,1), -7.166503970900504D-5, 1D-12,
+     :           'sla_NUT', '(2,1)', STATUS )
+      CALL VVD ( RMATN(2,2),  9.999999971483732D-1, 1D-12,
+     :           'sla_NUT', '(2,2)', STATUS )
+      CALL VVD ( RMATN(2,3), -2.381965032461830D-5, 1D-12,
+     :           'sla_NUT', '(2,3)', STATUS )
+      CALL VVD ( RMATN(3,1), -3.107553669598237D-5, 1D-12,
+     :           'sla_NUT', '(3,1)', STATUS )
+      CALL VVD ( RMATN(3,2),  2.381742334472628D-5, 1D-12,
+     :           'sla_NUT', '(3,2)', STATUS )
+      CALL VVD ( RMATN(3,3),  9.999999992335206818D-1, 1D-12,
+     :           'sla_NUT', '(3,3)', STATUS )
+
+      CALL sla_NUTC ( 50123.4D0, DPSI, DEPS, EPS0 )
+
+      CALL VVD ( DPSI, 3.523550954747999709D-5, 1D-17, 'sla_NUTC',
+     :           'DPSI', STATUS )
+      CALL VVD ( DEPS, -4.143371566683342D-5, 1D-17, 'sla_NUTC',
+     :           'DEPS', STATUS )
+      CALL VVD ( EPS0, 0.4091014592901651D0, 1D-12, 'sla_NUTC',
+     :           'EPS0', STATUS )
+
+      CALL sla_NUTC80 ( 50123.4D0, DPSI, DEPS, EPS0 )
+
+      CALL VVD ( DPSI, 3.537714281665945321D-5, 1D-17, 'sla_NUTC80',
+     :           'DPSI', STATUS )
+      CALL VVD ( DEPS, -4.140590085987148317D-5, 1D-17, 'sla_NUTC80',
+     :           'DEPS', STATUS )
+      CALL VVD ( EPS0, 0.4091016349007751D0, 1D-12, 'sla_NUTC80',
+     :           'EPS0', STATUS )
+
+      END
+
+      SUBROUTINE T_OBS ( STATUS )
+*+
+*  - - - - - -
+*   T _ O B S
+*  - - - - - -
+*
+*  Test sla_OBS routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_OBS, err, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER N
+      DOUBLE PRECISION W, P, H
+      CHARACTER*10 C
+      CHARACTER*40 NAME
+
+      N = 0
+      C = 'MMT'
+      CALL sla_OBS ( N, C, NAME, W, P, H )
+      CALL VCS ( C, 'MMT', 'sla_OBS', '1/C', STATUS )
+      CALL VCS ( NAME, 'MMT 6.5m, Mt Hopkins', 'sla_OBS', '1/NAME',
+     :           STATUS )
+      CALL VVD ( W, 1.935300584055477D0, 1D-8, 'sla_OBS',
+     :           '1/W', STATUS )
+      CALL VVD ( P, 0.5530735081550342238D0, 1D-10, 'sla_OBS',
+     :           '1/P', STATUS )
+      CALL VVD ( H, 2608D0, 1D-10, 'sla_OBS',
+     :           '1/H', STATUS )
+
+      N = 61
+      CALL sla_OBS ( N, C, NAME, W, P, H )
+      CALL VCS ( C, 'KECK1', 'sla_OBS', '2/C', STATUS )
+      CALL VCS ( NAME, 'Keck 10m Telescope #1', 'sla_OBS',
+     :           '2/NAME', STATUS )
+      CALL VVD ( W, 2.713545757918895D0, 1D-8, 'sla_OBS',
+     :           '2/W', STATUS )
+      CALL VVD ( P, 0.3460280563536619D0, 1D-8, 'sla_OBS',
+     :           '2/P', STATUS )
+      CALL VVD ( H, 4160D0, 1D-10, 'sla_OBS',
+     :           '2/H', STATUS )
+
+      N = 83
+      CALL sla_OBS ( N, C, NAME, W, P, H )
+      CALL VCS ( C, 'MAGELLAN2', 'sla_OBS', '3/C', STATUS )
+      CALL VCS ( NAME, 'Magellan 2, 6.5m, Las Campanas',
+     :           'sla_OBS', '3/NAME', STATUS )
+      CALL VVD ( W, 1.233819305534497D0, 1D-8, 'sla_OBS',
+     :           '3/W', STATUS )
+      CALL VVD ( P, -0.506389344359954D0, 1D-8, 'sla_OBS',
+     :           '3/P', STATUS )
+      CALL VVD ( H, 2408D0, 1D-10, 'sla_OBS',
+     :           '3/H', STATUS )
+
+      N = 84
+      CALL sla_OBS ( N, C, NAME, W, P, H )
+      CALL VCS ( NAME, '?', 'sla_OBS', '4/NAME', STATUS )
+
+      END
+
+      SUBROUTINE T_PA ( STATUS )
+*+
+*  - - - - -
+*   T _ P A
+*  - - - - -
+*
+*  Test sla_PA routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PA, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_PA
+
+
+      CALL VVD ( sla_PA ( -1.567D0, 1.5123D0, 0.987D0 ),
+     :           -1.486288540423851D0, 1D-12, 'sla_PA', ' ', STATUS )
+      CALL VVD ( sla_PA ( 0D0, 0.789D0, 0.789D0 ),
+     :           0D0, 0D0, 'sla_PA', 'zenith', STATUS )
+
+      END
+
+      SUBROUTINE T_PCD ( STATUS )
+*+
+*  - - - - - -
+*   T _ P C D
+*  - - - - - -
+*
+*  Test sla_PCD, sla_UNPCD routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PCD, VVD, sla_UNPCD.
+*
+*  Last revision:   4 September 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DISCO, X, Y
+
+      DISCO = 178.585D0
+      X = 0.0123D0
+      Y = -0.00987D0
+
+      CALL sla_PCD ( DISCO, X, Y )
+      CALL VVD ( X, 0.01284630845735895D0, 1D-14, 'sla_PCD',
+     :           'X', STATUS )
+      CALL VVD ( Y, -0.01030837922553926D0, 1D-14, 'sla_PCD',
+     :           'Y', STATUS )
+
+      CALL sla_UNPCD ( DISCO, X, Y )
+      CALL VVD ( X, 0.0123D0, 1D-14, 'sla_UNPCD',
+     :           'X', STATUS )
+      CALL VVD ( Y, -0.00987D0, 1D-14, 'sla_UNPCD',
+     :           'Y', STATUS )
+
+      END
+
+      SUBROUTINE T_PDA2H ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ P D A 2 H
+*  - - - - - - - -
+*
+*  Test sla_PDA2H routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PDA2H, VVD.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J1, J2
+      DOUBLE PRECISION H1, H2
+
+      CALL sla_PDA2H ( -0.51D0, -1.31D0, 3.1D0, H1, J1, H2, J2 )
+      CALL VVD ( H1, -0.1161784556585304927D0, 1D-14, 'sla_PDA2H',
+     :           'H1', STATUS )
+      CALL VIV ( J1, 0, 'sla_PDA2H', 'J1', STATUS )
+      CALL VVD ( H2, -2.984787179226459D0, 1D-13, 'sla_PDA2H',
+     :           'H2', STATUS )
+      CALL VIV ( J2, 0, 'sla_PDA2H', 'J2', STATUS )
+
+      END
+
+      SUBROUTINE T_PDQ2H ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ P D Q 2 H
+*  - - - - - - - -
+*
+*  Test sla_PDQ2H routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PDQ2H, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J1, J2
+      DOUBLE PRECISION H1, H2
+
+      CALL sla_PDQ2H ( 0.9D0, 0.2D0, 0.1D0, H1, J1, H2, J2 )
+      CALL VVD ( H1, 0.1042809894435257D0, 1D-14, 'sla_PDQ2H',
+     :           'H1', STATUS )
+      CALL VIV ( J1, 0, 'sla_PDQ2H', 'J1', STATUS )
+      CALL VVD ( H2, 2.997450098818439D0, 1D-13, 'sla_PDQ2H',
+     :           'H2', STATUS )
+      CALL VIV ( J2, 0, 'sla_PDQ2H', 'J2', STATUS )
+
+      END
+
+      SUBROUTINE T_PERCOM ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ P E R C O M
+*  - - - - - - - - -
+*
+*  Test sla_COMBN, sla_PERMUT routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_COMBN, VIV, sla_PERMUT.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER LIST(3), I, J, ISTATE(4), IORDER(4)
+
+      LIST(1) = 0
+
+      DO I = 1, 11
+         CALL sla_COMBN ( 3, 5, LIST, J )
+      END DO
+
+      CALL VIV ( J, 1, 'sla_COMBN', 'J', STATUS )
+      CALL VIV ( LIST(1), 1, 'sla_COMBN', 'LIST(1)', STATUS )
+      CALL VIV ( LIST(2), 2, 'sla_COMBN', 'LIST(2)', STATUS )
+      CALL VIV ( LIST(3), 3, 'sla_COMBN', 'LIST(3)', STATUS )
+
+      ISTATE(1) = -1
+
+      DO I = 1, 25
+         CALL sla_PERMUT ( 4, ISTATE, IORDER, J )
+      END DO
+
+      CALL VIV ( J, 1, 'sla_PERMUT', 'J', STATUS )
+      CALL VIV ( IORDER(1), 4, 'sla_PERMUT', 'IORDER(1)', STATUS )
+      CALL VIV ( IORDER(2), 3, 'sla_PERMUT', 'IORDER(2)', STATUS )
+      CALL VIV ( IORDER(3), 2, 'sla_PERMUT', 'IORDER(3)', STATUS )
+      CALL VIV ( IORDER(4), 1, 'sla_PERMUT', 'IORDER(4)', STATUS )
+
+      END
+
+      SUBROUTINE T_PLANET ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ P L A N E T
+*  - - - - - - - - -
+*
+*  Test sla_EL2UE, sla_PERTEL, sla_PERTUE, sla_PLANEL, sla_PLANET,
+*  sla_PLANTE, sla_PLANTU, sla_PV2EL, sla_PV2UE, sla_RDPLAN, sla_UE2EL
+*  and sla_UE2PV routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_EL2UE, sla_PERTEL, sla_PERTUE, sla_PLANEL, sla_PLANET,
+*           sla_PLANTE, sla_PLANTU, sla_PV2EL, sla_PV2UE, sla_RDPLAN,
+*           sla_UE2EL, sla_UE2PV, VIV, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J, JFORM
+      DOUBLE PRECISION U(13), PV(6), RA, DEC, R, DIAM, EPOCH, ORBINC,
+     :    ANODE, PERIH, AORQ, E, AORL, DM
+
+
+      CALL sla_EL2UE ( 50000D0, 1, 49000D0, 0.1D0, 2D0, 0.2D0,
+     :                 3D0, 0.05D0, 3D0, 0.003312D0, U, J )
+      CALL VVD ( U(1), 1.000878908362435284D0, 1D-12, 'sla_EL2UE',
+     :           'U(1)', STATUS )
+      CALL VVD ( U(2), -0.3336263027874777288D0, 1D-12, 'sla_EL2UE',
+     :           'U(2)', STATUS )
+      CALL VVD ( U(3), 50000D0, 1D-12, 'sla_EL2UE',
+     :           'U(3)', STATUS )
+      CALL VVD ( U(4), 2.840425801310305210D0, 1D-12, 'sla_EL2UE',
+     :           'U(4)', STATUS )
+      CALL VVD ( U(5), 0.1264380368035014224D0, 1D-12, 'sla_EL2UE',
+     :           'U(5)', STATUS )
+      CALL VVD ( U(6), -0.2287711835229143197D0, 1D-12, 'sla_EL2UE',
+     :           'U(6)', STATUS )
+      CALL VVD ( U(7), -0.01301062595106185195D0, 1D-12, 'sla_EL2UE',
+     :           'U(7)', STATUS )
+      CALL VVD ( U(8), 0.5657102158104651697D0, 1D-12, 'sla_EL2UE',
+     :           'U(8)', STATUS )
+      CALL VVD ( U(9), 0.2189745287281794885D0, 1D-12, 'sla_EL2UE',
+     :           'U(9)', STATUS )
+      CALL VVD ( U(10), 2.852427310959998500D0, 1D-12, 'sla_EL2UE',
+     :           'U(10)', STATUS )
+      CALL VVD ( U(11), -0.01552349065435120900D0, 1D-12, 'sla_EL2UE',
+     :           'U(11)', STATUS )
+      CALL VVD ( U(12), 50000D0, 1D-12, 'sla_EL2UE',
+     :           'U(12)', STATUS )
+      CALL VVD ( U(13), 0D0, 1D-12, 'sla_EL2UE',
+     :           'U(13)', STATUS )
+      CALL VIV ( J, 0, 'sla_EL2UE', 'J', STATUS )
+
+      CALL sla_PERTEL ( 2, 43000D0, 43200D0, 43000D0,
+     :                  0.2D0, 3D0, 4D0, 5D0, 0.02D0, 6D0,
+     :                  EPOCH, ORBINC, ANODE, PERIH, AORQ, E, AORL, J )
+      CALL VVD ( EPOCH, 43200D0, 1D-10, 'sla_PERTEL',
+     :           'EPOCH', STATUS )
+      CALL VVD ( ORBINC, 0.1995661466545422381D0, 1D-7, 'sla_PERTEL',
+     :           'ORBINC', STATUS )
+      CALL VVD ( ANODE, 2.998052737821591215D0, 1D-7, 'sla_PERTEL',
+     :           'ANODE', STATUS )
+      CALL VVD ( PERIH, 4.009516448441143636D0, 1D-6, 'sla_PERTEL',
+     :           'PERIH', STATUS )
+      CALL VVD ( AORQ, 5.014216294790922323D0, 1D-7, 'sla_PERTEL',
+     :           'AORQ', STATUS )
+      CALL VVD ( E, 0.02281386258309823607D0, 1D-7, 'sla_PERTEL',
+     :           'E', STATUS )
+      CALL VVD ( AORL, 0.01735248648779583748D0, 1D-6, 'sla_PERTEL',
+     :           'AORL', STATUS )
+      CALL VIV ( J, 0, 'sla_PERTEL', 'J', STATUS )
+
+      CALL sla_PERTUE ( 50100D0, U, J )
+      CALL VVD ( U(1), 1.000000000000000D0, 1D-12, 'sla_PERTUE',
+     :           'U(1)', STATUS )
+      CALL VVD ( U(2), -0.3329769417028020949D0, 1D-11, 'sla_PERTUE',
+     :           'U(2)', STATUS )
+      CALL VVD ( U(3), 50100D0, 1D-12, 'sla_PERTUE',
+     :           'U(3)', STATUS )
+      CALL VVD ( U(4), 2.638884303608524597D0, 1D-11, 'sla_PERTUE',
+     :           'U(4)', STATUS )
+      CALL VVD ( U(5), 1.070994304747824305D0, 1D-11, 'sla_PERTUE',
+     :           'U(5)', STATUS )
+      CALL VVD ( U(6), 0.1544112080167568589D0, 1D-11, 'sla_PERTUE',
+     :           'U(6)', STATUS )
+      CALL VVD ( U(7), -0.2188240619161439344D0, 1D-11, 'sla_PERTUE',
+     :           'U(7)', STATUS )
+      CALL VVD ( U(8), 0.5207557453451906385D0, 1D-11, 'sla_PERTUE',
+     :           'U(8)', STATUS )
+      CALL VVD ( U(9), 0.2217782439275216936D0, 1D-11, 'sla_PERTUE',
+     :           'U(9)', STATUS )
+      CALL VVD ( U(10), 2.852118859689216658D0, 1D-11, 'sla_PERTUE',
+     :           'U(10)', STATUS )
+      CALL VVD ( U(11), 0.01452010174371893229D0, 1D-11, 'sla_PERTUE',
+     :           'U(11)', STATUS )
+      CALL VVD ( U(12), 50100D0, 1D-12, 'sla_PERTUE',
+     :           'U(12)', STATUS )
+      CALL VVD ( U(13), 0D0, 1D-12, 'sla_PERTUE',
+     :           'U(13)', STATUS )
+      CALL VIV ( J, 0, 'sla_PERTUE', 'J', STATUS )
+
+      CALL sla_PLANEL ( 50600D0, 2, 50500D0, 0.1D0, 3D0, 5D0,
+     :                  2D0, 0.3D0, 4D0, 0D0, PV, J )
+      CALL VVD ( PV(1), 1.947628959288897677D0, 1D-12, 'sla_PLANEL',
+     :           'PV(1)', STATUS )
+      CALL VVD ( PV(2), -1.013736058752235271D0, 1D-12, 'sla_PLANEL',
+     :           'PV(2)', STATUS )
+      CALL VVD ( PV(3), -0.3536409947732733647D0, 1D-12, 'sla_PLANEL',
+     :           'PV(3)', STATUS )
+      CALL VVD ( PV(4), 2.742247411571786194D-8, 1D-19, 'sla_PLANEL',
+     :           'PV(4)', STATUS )
+      CALL VVD ( PV(5), 1.170467244079075911D-7, 1D-19, 'sla_PLANEL',
+     :           'PV(5)', STATUS )
+      CALL VVD ( PV(6), 3.709878268217564005D-8, 1D-19, 'sla_PLANEL',
+     :           'PV(6)', STATUS )
+      CALL VIV ( J, 0, 'sla_PLANEL', 'J', STATUS )
+
+      CALL sla_PLANET ( 1D6, 0, PV, J )
+      CALL VVD ( PV(1), 0D0, 0D0, 'sla_PLANET',
+     :           'PV(1) 1', STATUS )
+      CALL VVD ( PV(2), 0D0, 0D0, 'sla_PLANET',
+     :           'PV(2) 1', STATUS )
+      CALL VVD ( PV(3), 0D0, 0D0, 'sla_PLANET',
+     :           'PV(3) 1', STATUS )
+      CALL VVD ( PV(4), 0D0, 0D0, 'sla_PLANET',
+     :           'PV(4) 1', STATUS )
+      CALL VVD ( PV(5), 0D0, 0D0, 'sla_PLANET',
+     :           'PV(5) 1', STATUS )
+      CALL VVD ( PV(6), 0D0, 0D0, 'sla_PLANET',
+     :           'PV(6) 1', STATUS )
+      CALL VIV ( J, -1, 'sla_PLANET', 'J 1', STATUS )
+
+      CALL sla_PLANET ( 1D6, 10, PV, J )
+      CALL VIV ( J, -1, 'sla_PLANET', 'J 2', STATUS )
+
+      CALL sla_PLANET ( -320000D0, 3, PV, J )
+      CALL VVD ( PV(1), 0.9308038666827242603D0, 1D-11, 'sla_PLANET',
+     :           'PV(1) 3', STATUS )
+      CALL VVD ( PV(2), 0.3258319040252137618D0, 1D-11, 'sla_PLANET',
+     :           'PV(2) 3', STATUS )
+      CALL VVD ( PV(3), 0.1422794544477122021D0, 1D-11, 'sla_PLANET',
+     :           'PV(3) 3', STATUS )
+      CALL VVD ( PV(4), -7.441503423889371696D-8, 1D-17, 'sla_PLANET',
+     :           'PV(4) 3', STATUS )
+      CALL VVD ( PV(5), 1.699734557528650689D-7, 1D-17, 'sla_PLANET',
+     :           'PV(5) 3', STATUS )
+      CALL VVD ( PV(6), 7.415505123001430864D-8, 1D-17, 'sla_PLANET',
+     :           'PV(6) 3', STATUS )
+      CALL VIV ( J, 1, 'sla_PLANET', 'J 3', STATUS )
+
+      CALL sla_PLANET ( 43999.9D0, 1, PV, J )
+      CALL VVD ( PV(1), 0.2945293959257422246D0, 1D-11, 'sla_PLANET',
+     :           'PV(1) 4', STATUS )
+      CALL VVD ( PV(2), -0.2452204176601052181D0, 1D-11, 'sla_PLANET',
+     :           'PV(2) 4', STATUS )
+      CALL VVD ( PV(3), -0.1615427700571978643D0, 1D-11, 'sla_PLANET',
+     :           'PV(3) 4', STATUS )
+      CALL VVD ( PV(4), 1.636421147459047057D-7, 1D-18, 'sla_PLANET',
+     :           'PV(4) 4', STATUS )
+      CALL VVD ( PV(5), 2.252949422574889753D-7, 1D-18, 'sla_PLANET',
+     :           'PV(5) 4', STATUS )
+      CALL VVD ( PV(6), 1.033542799062371839D-7, 1D-18, 'sla_PLANET',
+     :           'PV(6) 4', STATUS )
+      CALL VIV ( J, 0, 'sla_PLANET', 'J 4', STATUS )
+
+      CALL sla_PLANTE ( 50600D0, -1.23D0, 0.456D0, 2, 50500D0,
+     :                  0.1D0, 3D0, 5D0, 2D0, 0.3D0, 4D0,
+     :                  0D0, RA, DEC, R, J )
+      CALL VVD ( RA, 6.222958101333794007D0, 1D-10, 'sla_PLANTE',
+     :           'RA', STATUS )
+      CALL VVD ( DEC, 0.01142220305739771601D0, 1D-10, 'sla_PLANTE',
+     :           'DEC', STATUS )
+      CALL VVD ( R, 2.288902494080167624D0, 1D-8, 'sla_PLANTE',
+     :           'R', STATUS )
+      CALL VIV ( J, 0, 'sla_PLANTE', 'J', STATUS )
+
+      U(1) = 1.0005D0
+      U(2) = -0.3D0
+      U(3) = 55000D0
+      U(4) = 2.8D0
+      U(5) = 0.1D0
+      U(6) = -0.2D0
+      U(7) = -0.01D0
+      U(8) = 0.5D0
+      U(9) = 0.22D0
+      U(10) = 2.8D0
+      U(11) = -0.015D0
+      U(12) = 55001D0
+      U(13) = 0D0
+
+      CALL sla_PLANTU ( 55001D0, -1.23D0, 0.456D0, U, RA, DEC, R, J )
+      CALL VVD ( RA, 0.3531814831241686647D0, 1D-9, 'sla_PLANTU',
+     :           'RA', STATUS )
+      CALL VVD ( DEC, 0.06940344580567131328D0, 1D-9, 'sla_PLANTU',
+     :           'DEC', STATUS )
+      CALL VVD ( R, 3.031687170873274464D0, 1D-8, 'sla_PLANTU',
+     :           'R', STATUS )
+      CALL VIV ( J, 0, 'sla_PLANTU', 'J', STATUS )
+
+      PV(1) = 0.3D0
+      PV(2) = -0.2D0
+      PV(3) = 0.1D0
+      PV(4) = -0.9D-7
+      PV(5) = 0.8D-7
+      PV(6) = -0.7D-7
+      CALL sla_PV2EL ( PV, 50000D0, 0.00006D0, 1,
+     :                 JFORM, EPOCH, ORBINC, ANODE, PERIH,
+     :                 AORQ, E, AORL, DM, J )
+      CALL VIV ( JFORM, 1, 'sla_PV2EL', 'JFORM', STATUS )
+      CALL VVD ( EPOCH, 50000D0, 1D-10, 'sla_PV2EL',
+     :           'EPOCH', STATUS )
+      CALL VVD ( ORBINC, 1.52099895268912D0, 1D-12, 'sla_PV2EL',
+     :           'ORBINC', STATUS )
+      CALL VVD ( ANODE, 2.720503180538650D0, 1D-12, 'sla_PV2EL',
+     :           'ANODE', STATUS )
+      CALL VVD ( PERIH, 2.194081512031836D0, 1D-12, 'sla_PV2EL',
+     :           'PERIH', STATUS )
+      CALL VVD ( AORQ, 0.2059371035373771D0, 1D-12, 'sla_PV2EL',
+     :           'AORQ', STATUS )
+      CALL VVD ( E, 0.9866822985810528D0, 1D-12, 'sla_PV2EL',
+     :           'E', STATUS )
+      CALL VVD ( AORL, 0.2012758344836794D0, 1D-12, 'sla_PV2EL',
+     :           'AORL', STATUS )
+      CALL VVD ( DM, 0.1840740507951820D0, 1D-12, 'sla_PV2EL',
+     :           'DM', STATUS )
+      CALL VIV ( J, 0, 'sla_PV2EL', 'J', STATUS )
+
+      CALL sla_PV2UE ( PV, 50000D0, 0.00006D0, U, J )
+      CALL VVD ( U(1), 1.00006D0, 1D-12, 'sla_PV2UE',
+     :           'U(1)', STATUS )
+      CALL VVD ( U(2), -4.856142884511782D0, 1D-12, 'sla_PV2UE',
+     :           'U(2)', STATUS )
+      CALL VVD ( U(3), 50000D0, 1D-12, 'sla_PV2UE',
+     :           'U(3)', STATUS )
+      CALL VVD ( U(4), 0.3D0, 1D-12, 'sla_PV2UE',
+     :           'U(4)', STATUS )
+      CALL VVD ( U(5), -0.2D0, 1D-12, 'sla_PV2UE',
+     :           'U(5)', STATUS )
+      CALL VVD ( U(6), 0.1D0, 1D-12, 'sla_PV2UE',
+     :           'U(6)', STATUS )
+      CALL VVD ( U(7), -0.4520378601821727D0, 1D-12, 'sla_PV2UE',
+     :           'U(7)', STATUS )
+      CALL VVD ( U(8), 0.4018114312730424D0, 1D-12, 'sla_PV2UE',
+     :           'U(8)', STATUS )
+      CALL VVD ( U(9), -.3515850023639121D0, 1D-12, 'sla_PV2UE',
+     :           'U(9)', STATUS )
+      CALL VVD ( U(10), 0.3741657386773941D0, 1D-12, 'sla_PV2UE',
+     :           'U(10)', STATUS )
+      CALL VVD ( U(11), -0.2511321445456515D0, 1D-12, 'sla_PV2UE',
+     :           'U(11)', STATUS )
+      CALL VVD ( U(12), 50000D0, 1D-12, 'sla_PV2UE',
+     :           'U(12)', STATUS )
+      CALL VVD ( U(13), 0D0, 1D-12, 'sla_PV2UE',
+     :           'U(13)', STATUS )
+      CALL VIV ( J, 0, 'sla_PV2UE', 'J', STATUS )
+
+      CALL sla_RDPLAN ( 40999.9D0, 0, 0.1D0, -0.9D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 5.772270359389275837D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 0', STATUS )
+      CALL VVD ( DEC, -0.2089207338795416192D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 0', STATUS )
+      CALL VVD ( DIAM, 9.415338935229717875D-3, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 0', STATUS )
+      CALL sla_RDPLAN ( 41999.9D0, 1, 1.1D0, -0.9D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 3.866363420052936653D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 1', STATUS )
+      CALL VVD ( DEC, -0.2594430577550113130D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 1', STATUS )
+      CALL VVD ( DIAM, 4.638468996795023071D-5, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 1', STATUS )
+      CALL sla_RDPLAN ( 42999.9D0, 2, 2.1D0, 0.9D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 2.695383203184077378D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 2', STATUS )
+      CALL VVD ( DEC, 0.2124044506294805126D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 2', STATUS )
+      CALL VVD ( DIAM, 4.892222838681000389D-5, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 2', STATUS )
+      CALL sla_RDPLAN ( 43999.9D0, 3, 3.1D0, 0.9D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 2.908326678461540165D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 3', STATUS )
+      CALL VVD ( DEC, 0.08729783126905579385D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 3', STATUS )
+      CALL VVD ( DIAM, 8.581305866034962476D-3, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 3', STATUS )
+      CALL sla_RDPLAN ( 44999.9D0, 4, -0.1D0, 1.1D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 3.429840787472851721D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 4', STATUS )
+      CALL VVD ( DEC, -0.06979851055261161013D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 4', STATUS )
+      CALL VVD ( DIAM, 4.540536678439300199D-5, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 4', STATUS )
+      CALL sla_RDPLAN ( 45999.9D0, 5, -1.1D0, 0.1D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 4.864669466449422548D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 5', STATUS )
+      CALL VVD ( DEC, -0.4077714497908953354D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 5', STATUS )
+      CALL VVD ( DIAM, 1.727945579027815576D-4, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 5', STATUS )
+      CALL sla_RDPLAN ( 46999.9D0, 6, -2.1D0, -0.1D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 4.432929829176388766D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 6', STATUS )
+      CALL VVD ( DEC, -0.3682820877854730530D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 6', STATUS )
+      CALL VVD ( DIAM, 8.670829016099083311D-5, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 6', STATUS )
+      CALL sla_RDPLAN ( 47999.9D0, 7, -3.1D0, -1.1D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 4.894972492286818487D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 7', STATUS )
+      CALL VVD ( DEC, -0.4084068901053653125D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 7', STATUS )
+      CALL VVD ( DIAM, 1.793916783975974163D-5, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 7', STATUS )
+      CALL sla_RDPLAN ( 48999.9D0, 8, 0D0, 0D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 5.066050284760144000D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 8', STATUS )
+      CALL VVD ( DEC, -0.3744690779683850609D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 8', STATUS )
+      CALL VVD ( DIAM, 1.062210086082700563D-5, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 8', STATUS )
+      CALL sla_RDPLAN ( 49999.9D0, 9, 0D0, 0D0, RA, DEC, DIAM )
+      CALL VVD ( RA, 4.179543143097200945D0, 1D-7, 'sla_RDPLAN',
+     :           'RA 9', STATUS )
+      CALL VVD ( DEC, -0.1258021632894033300D0, 1D-7, 'sla_RDPLAN',
+     :           'DEC 9', STATUS )
+      CALL VVD ( DIAM, 5.034057475664904352D-7, 1D-14, 'sla_RDPLAN',
+     :           'DIAM 9', STATUS )
+
+      CALL sla_UE2EL ( U, 1, JFORM, EPOCH, ORBINC, ANODE, PERIH,
+     :                 AORQ, E, AORL, DM, J )
+      CALL VIV ( JFORM, 1, 'sla_UE2EL', 'JFORM', STATUS )
+      CALL VVD ( EPOCH, 50000.00000000000D0, 1D-10, 'sla_PV2EL',
+     :           'EPOCH', STATUS )
+      CALL VVD ( ORBINC, 1.520998952689120D0, 1D-12, 'sla_UE2EL',
+     :           'ORBINC', STATUS )
+      CALL VVD ( ANODE, 2.720503180538650D0, 1D-12, 'sla_UE2EL',
+     :           'ANODE', STATUS )
+      CALL VVD ( PERIH, 2.194081512031836D0, 1D-12, 'sla_UE2EL',
+     :           'PERIH', STATUS )
+      CALL VVD ( AORQ, 0.2059371035373771D0, 1D-12, 'sla_UE2EL',
+     :           'AORQ', STATUS )
+      CALL VVD ( E, 0.9866822985810528D0, 1D-12, 'sla_UE2EL',
+     :           'E', STATUS )
+      CALL VVD ( AORL, 0.2012758344836794D0, 1D-12, 'sla_UE2EL',
+     :           'AORL', STATUS )
+      CALL VIV ( J, 0, 'sla_UE2EL', 'J', STATUS )
+
+      CALL sla_UE2PV ( 50010D0, U, PV, J )
+      CALL VVD ( U(1), 1.00006D0, 1D-12, 'sla_UE2PV',
+     :           'U(1)', STATUS )
+      CALL VVD ( U(2), -4.856142884511782111D0, 1D-12, 'sla_UE2PV',
+     :           'U(2)', STATUS )
+      CALL VVD ( U(3), 50000D0, 1D-12, 'sla_UE2PV',
+     :           'U(3)', STATUS )
+      CALL VVD ( U(4), 0.3D0, 1D-12, 'sla_UE2PV',
+     :           'U(4)', STATUS )
+      CALL VVD ( U(5), -0.2D0, 1D-12, 'sla_UE2PV',
+     :           'U(5)', STATUS )
+      CALL VVD ( U(6), 0.1D0, 1D-12, 'sla_UE2PV',
+     :           'U(6)', STATUS )
+      CALL VVD ( U(7), -0.4520378601821727110D0, 1D-12, 'sla_UE2PV',
+     :           'U(7)', STATUS )
+      CALL VVD ( U(8), 0.4018114312730424097D0, 1D-12, 'sla_UE2PV',
+     :           'U(8)', STATUS )
+      CALL VVD ( U(9), -0.3515850023639121085D0, 1D-12, 'sla_UE2PV',
+     :           'U(9)', STATUS )
+      CALL VVD ( U(10), 0.3741657386773941386D0, 1D-12, 'sla_UE2PV',
+     :           'U(10)', STATUS )
+      CALL VVD ( U(11), -0.2511321445456515061D0, 1D-12, 'sla_UE2PV',
+     :           'U(11)', STATUS )
+      CALL VVD ( U(12), 50010.00000000000D0, 1D-12, 'sla_UE2PV',
+     :           'U(12)', STATUS )
+      CALL VVD ( U(13), 0.7194308220038886856D0, 1D-12, 'sla_UE2PV',
+     :           'U(13)', STATUS )
+      CALL VVD ( PV(1), 0.07944764084631667011D0, 1D-12, 'sla_UE2PV',
+     :           'PV(1)', STATUS )
+      CALL VVD ( PV(2), -0.04118141077419014775D0, 1D-12, 'sla_UE2PV',
+     :           'PV(2)', STATUS )
+      CALL VVD ( PV(3), 0.002915180702063625400D0, 1D-12, 'sla_UE2PV',
+     :           'PV(3)', STATUS )
+      CALL VVD ( PV(4), -0.6890132370721108608D-6, 1D-18,'sla_UE2PV',
+     :           'PV(4)', STATUS )
+      CALL VVD ( PV(5), 0.4326690733487621457D-6, 1D-18, 'sla_UE2PV',
+     :           'PV(5)', STATUS )
+      CALL VVD ( PV(6), -0.1763249096254134306D-6, 1D-18, 'sla_UE2PV',
+     :           'PV(6)', STATUS )
+      CALL VIV ( J, 0, 'sla_UE2PV', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_PM ( STATUS )
+*+
+*  - - - - -
+*   T _ P M
+*  - - - - -
+*
+*  Test sla_PM routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PM, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION R1, D1
+
+      CALL sla_PM ( 5.43D0, -0.87D0, -0.33D-5, 0.77D-5, 0.7D0,
+     :              50.3D0*365.2422D0/365.25D0, 1899D0, 1943D0,
+     :              R1, D1 )
+      CALL VVD ( R1, 5.429855087793875D0, 1D-12, 'sla_PM',
+     :           'R', STATUS )
+      CALL VVD ( D1, -0.8696617307805072D0, 1D-12, 'sla_PM',
+     :           'D', STATUS )
+
+      END
+
+      SUBROUTINE T_POLMO ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ P O L M O
+*  - - - - - - - -
+*
+*  Test sla_POLMO routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_POLMO, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION ELONG, PHI, DAZ
+
+      CALL sla_POLMO ( 0.7D0, -0.5D0, 1D-6, -2D-6, ELONG, PHI, DAZ )
+
+      CALL VVD ( ELONG,  0.7000004837322044D0, 1D-12, 'sla_POLMO',
+     :           'ELONG', STATUS )
+      CALL VVD ( PHI, -0.4999979467222241D0, 1D-12, 'sla_POLMO',
+     :           'PHI', STATUS )
+      CALL VVD ( DAZ,  1.008982781275728D-6, 1D-12, 'sla_POLMO',
+     :           'DAZ', STATUS )
+
+      END
+
+      SUBROUTINE T_PREBN ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ P R E B N
+*  - - - - - - - -
+*
+*  Test sla_PREBN routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PREBN, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RMATP(3,3)
+
+      CALL sla_PREBN ( 1925D0, 1975D0, RMATP )
+
+      CALL VVD ( RMATP(1,1),  9.999257613786738D-1, 1D-12,
+     :           'sla_PREBN', '(1,1)', STATUS )
+      CALL VVD ( RMATP(1,2), -1.117444640880939D-2, 1D-12,
+     :           'sla_PREBN', '(1,2)', STATUS )
+      CALL VVD ( RMATP(1,3), -4.858341150654265D-3, 1D-12,
+     :           'sla_PREBN', '(1,3)', STATUS )
+      CALL VVD ( RMATP(2,1),  1.117444639746558D-2, 1D-12,
+     :           'sla_PREBN', '(2,1)', STATUS )
+      CALL VVD ( RMATP(2,2),  9.999375635561940D-1, 1D-12,
+     :           'sla_PREBN', '(2,2)', STATUS )
+      CALL VVD ( RMATP(2,3), -2.714797892626396D-5, 1D-12,
+     :           'sla_PREBN', '(2,3)', STATUS )
+      CALL VVD ( RMATP(3,1),  4.858341176745641D-3, 1D-12,
+     :           'sla_PREBN', '(3,1)', STATUS )
+      CALL VVD ( RMATP(3,2), -2.714330927085065D-5, 1D-12,
+     :           'sla_PREBN', '(3,2)', STATUS )
+      CALL VVD ( RMATP(3,3),  9.999881978224798D-1, 1D-12,
+     :           'sla_PREBN', '(3,3)', STATUS )
+
+      END
+
+      SUBROUTINE T_PREC ( STATUS )
+*+
+*  - - - - - - -
+*   T _ P R E C
+*  - - - - - - -
+*
+*  Test sla_PREC and sla_PRECL routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PREC, sla_PRECL, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RMATP(3,3)
+
+      CALL sla_PREC ( 1925D0, 1975D0, RMATP )
+
+      CALL VVD ( RMATP(1,1),  9.999257249850045D-1, 1D-12,
+     :           'sla_PREC', '(1,1)', STATUS )
+      CALL VVD ( RMATP(1,2), -1.117719859160180D-2, 1D-12,
+     :           'sla_PREC', '(1,2)', STATUS )
+      CALL VVD ( RMATP(1,3), -4.859500474027002D-3, 1D-12,
+     :           'sla_PREC', '(1,3)', STATUS )
+      CALL VVD ( RMATP(2,1),  1.117719858025860D-2, 1D-12,
+     :           'sla_PREC', '(2,1)', STATUS )
+      CALL VVD ( RMATP(2,2),  9.999375327960091D-1, 1D-12,
+     :           'sla_PREC', '(2,2)', STATUS )
+      CALL VVD ( RMATP(2,3), -2.716114374174549D-5, 1D-12,
+     :           'sla_PREC', '(2,3)', STATUS )
+      CALL VVD ( RMATP(3,1),  4.859500500117173D-3, 1D-12,
+     :           'sla_PREC', '(3,1)', STATUS )
+      CALL VVD ( RMATP(3,2), -2.715647545167383D-5, 1D-12,
+     :           'sla_PREC', '(3,2)', STATUS )
+      CALL VVD ( RMATP(3,3),  9.999881921889954D-1, 1D-12,
+     :           'sla_PREC', '(3,3)', STATUS )
+
+      CALL sla_PRECL ( 1925D0, 1975D0, RMATP )
+
+      CALL VVD ( RMATP(1,1),  9.999257331781050D-1, 1D-12,
+     :           'sla_PREC', '(1,1)', STATUS )
+      CALL VVD ( RMATP(1,2), -1.117658038434041D-2, 1D-12,
+     :           'sla_PREC', '(1,2)', STATUS )
+      CALL VVD ( RMATP(1,3), -4.859236477249598D-3, 1D-12,
+     :           'sla_PREC', '(1,3)', STATUS )
+      CALL VVD ( RMATP(2,1),  1.117658037299592D-2, 1D-12,
+     :           'sla_PREC', '(2,1)', STATUS )
+      CALL VVD ( RMATP(2,2),  9.999375397061558D-1, 1D-12,
+     :           'sla_PREC', '(2,2)', STATUS )
+      CALL VVD ( RMATP(2,3), -2.715816653174189D-5, 1D-12,
+     :           'sla_PREC', '(2,3)', STATUS )
+      CALL VVD ( RMATP(3,1),  4.859236503342703D-3, 1D-12,
+     :           'sla_PREC', '(3,1)', STATUS )
+      CALL VVD ( RMATP(3,2), -2.715349745834860D-5, 1D-12,
+     :           'sla_PREC', '(3,2)', STATUS )
+      CALL VVD ( RMATP(3,3),  9.999881934719490D-1, 1D-12,
+     :           'sla_PREC', '(3,3)', STATUS )
+
+      END
+
+      SUBROUTINE T_PRECES ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ P R E C E S
+*  - - - - - - - - -
+*
+*  Test sla_PRECES routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PRECES, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RA, DC
+
+      RA = 6.28D0
+      DC = -1.123D0
+      CALL sla_PRECES ( 'FK4', 1925D0, 1950D0, RA, DC )
+      CALL VVD ( RA,  0.002403604864728447D0, 1D-12, 'sla_PRECES',
+     :           'R', STATUS )
+      CALL VVD ( DC, -1.120570643322045D0, 1D-12, 'sla_PRECES',
+     :           'D', STATUS )
+
+      RA = 0.0123D0
+      DC = 1.0987D0
+      CALL sla_PRECES ( 'FK5', 2050D0, 1990D0, RA, DC )
+      CALL VVD ( RA, 6.282003602708382D0, 1D-12, 'sla_PRECES',
+     :           'R', STATUS )
+      CALL VVD ( DC, 1.092870326188383D0, 1D-12, 'sla_PRECES',
+     :           'D', STATUS )
+
+      END
+
+      SUBROUTINE T_PRENUT ( STATUS )
+*+
+*  - - - - - - - - -
+*   P R E N U T
+*  - - - - - - - - -
+*
+*  Test sla_PRENUT routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PRENUT, VVD.
+*
+*  Last revision:   16 November 2001
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION RMATPN(3,3)
+
+      CALL sla_PRENUT ( 1985D0, 50123.4567D0, RMATPN )
+
+      CALL VVD ( RMATPN(1,1),  9.999962358680738D-1, 1D-12,
+     :           'sla_PRENUT', '(1,1)', STATUS )
+      CALL VVD ( RMATPN(1,2), -2.516417057665452D-3, 1D-12,
+     :           'sla_PRENUT', '(1,2)', STATUS )
+      CALL VVD ( RMATPN(1,3), -1.093569785342370D-3, 1D-12,
+     :           'sla_PRENUT', '(1,3)', STATUS )
+      CALL VVD ( RMATPN(2,1),  2.516462370370876D-3, 1D-12,
+     :           'sla_PRENUT', '(2,1)', STATUS )
+      CALL VVD ( RMATPN(2,2),  9.999968329010883D-1, 1D-12,
+     :           'sla_PRENUT', '(2,2)', STATUS )
+      CALL VVD ( RMATPN(2,3),  4.006159587358310D-5, 1D-12,
+     :           'sla_PRENUT', '(2,3)', STATUS )
+      CALL VVD ( RMATPN(3,1),  1.093465510215479D-3, 1D-12,
+     :           'sla_PRENUT', '(3,1)', STATUS )
+      CALL VVD ( RMATPN(3,2), -4.281337229063151D-5, 1D-12,
+     :           'sla_PRENUT', '(3,2)', STATUS )
+      CALL VVD ( RMATPN(3,3),  9.999994012499173D-1, 1D-12,
+     :           'sla_PRENUT', '(3,3)', STATUS )
+
+      END
+
+      SUBROUTINE T_PVOBS ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ P V O B S
+*  - - - - - - - -
+*
+*  Test sla_PVOBS routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_PVOBS, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION PV(6)
+
+      CALL sla_PVOBS ( 0.5123D0, 3001D0, -0.567D0, PV )
+
+      CALL VVD ( PV(1), 0.3138647803054939D-4, 1D-16, 'sla_PVOBS',
+     :           '(1)', STATUS )
+      CALL VVD ( PV(2),-0.1998515596527082D-4, 1D-16, 'sla_PVOBS',
+     :           '(2)', STATUS )
+      CALL VVD ( PV(3), 0.2078572043443275D-4, 1D-16, 'sla_PVOBS',
+     :           '(3)', STATUS )
+      CALL VVD ( PV(4), 0.1457340726851264D-8, 1D-20, 'sla_PVOBS',
+     :           '(4)', STATUS )
+      CALL VVD ( PV(5), 0.2288738340888011D-8, 1D-20, 'sla_PVOBS',
+     :           '(5)', STATUS )
+      CALL VVD ( PV(6), 0D0, 0D0, 'sla_PVOBS',
+     :           '(6)', STATUS )
+
+      END
+
+      SUBROUTINE T_RANGE ( STATUS )
+*+
+*  - - - - - - - -
+*   T _ R A N G E
+*  - - - - - - - -
+*
+*  Test sla_RANGE, sla_DRANGE routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_RANGE, VVD, sla_DRANGE.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL sla_RANGE
+      DOUBLE PRECISION sla_DRANGE
+
+
+      CALL VVD ( DBLE( sla_RANGE ( -4.0 ) ), 2.283185307179586D0,
+     :           1D-6, 'sla_RANGE', ' ', STATUS )
+      CALL VVD ( sla_DRANGE ( -4D0 ), 2.283185307179586D0,
+     :           1D-12, 'sla_DRANGE', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_RANORM ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ R A N O R M
+*  - - - - - - - - -
+*
+*  Test sla_RANORM, sla_DRANRM routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_RANORM, VVD, sla_DRANRM.
+*
+*  Last revision:   22 October 2006
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL sla_RANORM
+      DOUBLE PRECISION sla_DRANRM
+
+
+      CALL VVD ( DBLE( sla_RANORM ( -0.1E0 ) ), 6.183185307179587D0,
+     :           1D-5, 'sla_RANORM', '1', STATUS )
+      CALL VVD ( sla_DRANRM ( -0.1D0 ), 6.183185307179587D0,
+     :           1D-12, 'sla_DRANRM', '2', STATUS )
+
+      END
+
+      SUBROUTINE T_RCC ( STATUS )
+*+
+*  - - - - - -
+*   T _ R C C
+*  - - - - - -
+*
+*  Test sla_RCC routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_RCC, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_RCC
+
+
+      CALL VVD ( sla_RCC ( 48939.123D0, 0.76543D0, 5.0123D0,
+     :                     5525.242D0, 3190D0 ),
+     :           -1.280131613589158D-3, 1D-15, 'sla_RCC', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_REF ( STATUS )
+*+
+*  - - - - - -
+*   T _ R E F
+*  - - - - - -
+*
+*  Test sla_REFRO, sla_REFCO, sla_ATMDSP, sla_REFV, sla_REFZ routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_REFRO, VVD, sla_REFCO, sla_REFCOQ, sla_ATMDSP,
+*           sla_DCS2C, sla_REFV, sla_REFZ.
+*
+*  Last revision:   17 January 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION REF, REFA, REFB, REFA2, REFB2, VU(3), VR(3), ZR
+
+      CALL sla_REFRO ( 1.4D0, 3456.7D0, 280D0, 678.9D0, 0.9D0, 0.55D0,
+     :                 -0.3D0, 0.006D0, 1D-9, REF )
+      CALL VVD ( REF, 0.00106715763018568D0, 1D-12, 'sla_REFRO',
+     :           'O', STATUS )
+
+      CALL sla_REFRO ( 1.4D0, 3456.7D0, 280D0, 678.9D0, 0.9D0, 1000D0,
+     :                 -0.3D0, 0.006D0, 1D-9, REF )
+      CALL VVD ( REF, 0.001296416185295403D0, 1D-12, 'sla_REFRO',
+     :           'R', STATUS )
+
+      CALL sla_REFCOQ ( 275.9D0, 709.3D0, 0.9D0, 101D0, REFA, REFB )
+      CALL VVD ( REFA, 2.324736903790639D-4, 1D-12, 'sla_REFCOQ',
+     :           'A/R', STATUS )
+      CALL VVD ( REFB, -2.442884551059D-7, 1D-15, 'sla_REFCOQ',
+     :           'B/R', STATUS )
+
+      CALL sla_REFCO ( 2111.1D0, 275.9D0, 709.3D0, 0.9D0, 101D0,
+     :                 -1.03D0, 0.0067D0, 1D-12, REFA, REFB )
+      CALL VVD ( REFA, 2.324673985217244D-4, 1D-12, 'sla_REFCO',
+     :           'A/R', STATUS )
+      CALL VVD ( REFB, -2.265040682496D-7, 1D-15, 'sla_REFCO',
+     :           'B/R', STATUS )
+
+      CALL sla_REFCOQ ( 275.9D0, 709.3D0, 0.9D0, 0.77D0, REFA, REFB )
+      CALL VVD ( REFA, 2.007406521596588D-4, 1D-12, 'sla_REFCOQ',
+     :           'A', STATUS )
+      CALL VVD ( REFB, -2.264210092590D-7, 1D-15, 'sla_REFCOQ',
+     :           'B', STATUS )
+
+      CALL sla_REFCO ( 2111.1D0, 275.9D0, 709.3D0, 0.9D0, 0.77D0,
+     :                 -1.03D0, 0.0067D0, 1D-12, REFA, REFB )
+      CALL VVD ( REFA, 2.007202720084551D-4, 1D-12, 'sla_REFCO',
+     :           'A', STATUS )
+      CALL VVD ( REFB, -2.223037748876D-7, 1D-15, 'sla_REFCO',
+     :           'B', STATUS )
+
+      CALL sla_ATMDSP ( 275.9D0, 709.3D0, 0.9D0, 0.77D0,
+     :                  REFA, REFB, 0.5D0, REFA2, REFB2 )
+      CALL VVD ( REFA2, 2.034523658888048D-4, 1D-12, 'sla_ATMDSP',
+     :           'A', STATUS )
+      CALL VVD ( REFB2, -2.250855362179D-7, 1D-15, 'sla_ATMDSP',
+     :           'B', STATUS )
+
+      CALL sla_DCS2C ( 0.345D0, 0.456D0, VU )
+      CALL sla_REFV ( VU, REFA, REFB, VR )
+      CALL VVD ( VR(1), 0.8447487047790478D0, 1D-12, 'sla_REFV',
+     :           'X1', STATUS )
+      CALL VVD ( VR(2), 0.3035794890562339D0, 1D-12, 'sla_REFV',
+     :           'Y1', STATUS )
+      CALL VVD ( VR(3), 0.4407256738589851D0, 1D-12, 'sla_REFV',
+     :           'Z1', STATUS )
+
+      CALL sla_DCS2C ( 3.7D0, 0.03D0, VU )
+      CALL sla_REFV ( VU, REFA, REFB, VR )
+      CALL VVD ( VR(1), -0.8476187691681673D0, 1D-12, 'sla_REFV',
+     :           'X2', STATUS )
+      CALL VVD ( VR(2), -0.5295354802804889D0, 1D-12, 'sla_REFV',
+     :           'Y2', STATUS )
+      CALL VVD ( VR(3), 0.0322914582168426D0, 1D-12, 'sla_REFV',
+     :           'Z2', STATUS )
+
+      CALL sla_REFZ ( 0.567D0, REFA, REFB, ZR )
+      CALL VVD ( ZR, 0.566872285910534D0, 1D-12, 'sla_REFZ',
+     :           'hi el', STATUS )
+
+      CALL sla_REFZ ( 1.55D0, REFA, REFB, ZR )
+      CALL VVD ( ZR, 1.545697350690958D0, 1D-12, 'sla_REFZ',
+     :           'lo el', STATUS )
+
+      END
+
+      SUBROUTINE T_RV ( STATUS )
+*+
+*  - - - - -
+*   T _ R V
+*  - - - - -
+*
+*  Test sla_RVEROT, sla_RVGALC, sla_RVLG, sla_RVLSRD, sla_RVLSRK routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called: VVD, sla_RVEROT, sla_RVGALC, sla_RVLG, sla_RVLSRD, sla_RVLSRK.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      REAL sla_RVEROT, sla_RVGALC, sla_RVLG, sla_RVLSRD, sla_RVLSRK
+
+
+      CALL VVD ( DBLE( sla_RVEROT ( -0.777E0, 5.67E0, -0.3E0,
+     :           3.19E0 ) ), -0.1948098355075913D0, 1D-6,
+     :           'sla_RVEROT', ' ', STATUS )
+      CALL VVD ( DBLE( sla_RVGALC ( 1.11E0, -0.99E0 ) ),
+     :           158.9630759840254D0, 1D-3, 'sla_RVGALC', ' ', STATUS )
+      CALL VVD ( DBLE( sla_RVLG ( 3.97E0, 1.09E0 ) ),
+     :           -197.818762175363D0, 1D-3, 'sla_RVLG', ' ', STATUS )
+      CALL VVD ( DBLE( sla_RVLSRD ( 6.01E0, 0.1E0 ) ),
+     :           -4.082811335150567D0, 1D-4, 'sla_RVLSRD', ' ', STATUS )
+      CALL VVD ( DBLE( sla_RVLSRK ( 6.01E0, 0.1E0 ) ),
+     :           -5.925180579830265D0, 1D-4, 'sla_RVLSRK', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_SEP ( STATUS )
+*+
+*  - - - - - - -
+*   T _ S E P
+*  - - - - - - -
+*
+*  Test sla_DSEP, sla_DSEPV, sla_SEP, sla_SEPV routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_DSEP, sla_SEP, VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I
+      REAL sla_SEP, sla_SEPV
+      REAL R1(3), R2(3), AR1, BR1, AR2, BR2
+      DOUBLE PRECISION sla_DSEP, sla_DSEPV
+      DOUBLE PRECISION D1(3), D2(3), AD1, BD1, AD2, BD2
+
+
+      R1(1) = 1.0
+      R1(2) = 0.1
+      R1(3) = 0.2
+      R2(1) = -3.0
+      R2(2) = 1E-3
+      R2(3) = 0.2
+
+      DO I = 1, 3
+         D1(I) = DBLE( R1(I) )
+         D2(I) = DBLE( R2(I) )
+      END DO
+
+      CALL sla_DCC2S ( D1, AD1, BD1 )
+      CALL sla_DCC2S ( D2, AD2, BD2 )
+
+      AR1 = SNGL( AD1 )
+      BR1 = SNGL( BD1 )
+      AR2 = SNGL( AD2 )
+      BR2 = SNGL( BD2 )
+
+      CALL VVD ( sla_DSEP ( AD1, BD1, AD2, BD2 ),
+     :           2.8603919190246608D0, 1D-7, 'sla_DSEP', ' ', STATUS )
+      CALL VVD ( DBLE( sla_SEP ( AR1, BR1, AR2, BR2 ) ),
+     :           2.8603919190246608D0, 1D-4, 'sla_SEP', ' ', STATUS )
+      CALL VVD ( sla_DSEPV ( D1, D2 ),
+     :           2.8603919190246608D0, 1D-7, 'sla_DSEPV', ' ', STATUS )
+      CALL VVD ( DBLE( sla_SEPV ( R1, R2 ) ),
+     :           2.8603919190246608D0, 1D-4, 'sla_SEPV', ' ', STATUS )
+
+      END
+
+      SUBROUTINE T_SMAT ( STATUS )
+*+
+*  - - - - - - -
+*   T _ S M A T
+*  - - - - - - -
+*
+*  Test sla_SMAT routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_SMAT, VVD, VIV.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J, IW(3)
+      REAL A(3,3)
+      REAL V(3)
+      REAL D
+
+      DATA A/2.22E0,     1.6578E0,     1.380522E0,
+     :       1.6578E0,   1.380522E0,   1.22548578E0,
+     :       1.380522E0, 1.22548578E0, 1.1356276122E0/
+      DATA V/2.28625E0,  1.7128825E0,  1.429432225E0/
+
+
+      CALL sla_SMAT ( 3, A, V, D, J, IW )
+
+      CALL VVD ( DBLE( A(1,1) ), 18.02550629769198D0,
+     :           1D-2, 'sla_SMAT', 'A(0,0)', STATUS )
+      CALL VVD ( DBLE( A(1,2) ), -52.16386644917481D0,
+     :           1D-2, 'sla_SMAT', 'A(0,1)', STATUS )
+      CALL VVD ( DBLE( A(1,3) ), 34.37875949717994D0,
+     :           1D-2, 'sla_SMAT', 'A(0,2)', STATUS )
+      CALL VVD ( DBLE( A(2,1) ), -52.16386644917477D0,
+     :           1D-2, 'sla_SMAT', 'A(1,0)', STATUS )
+      CALL VVD ( DBLE( A(2,2) ), 168.1778099099869D0,
+     :           1D-1, 'sla_SMAT', 'A(1,1)', STATUS )
+      CALL VVD ( DBLE( A(2,3) ), -118.0722869694278D0,
+     :           1D-2, 'sla_SMAT', 'A(1,2)', STATUS )
+      CALL VVD ( DBLE( A(3,1) ), 34.37875949717988D0,
+     :           1D-2, 'sla_SMAT', 'A(2,0)', STATUS )
+      CALL VVD ( DBLE( A(3,2) ), -118.07228696942770D0,
+     :           1D-2, 'sla_SMAT', 'A(2,1)', STATUS )
+      CALL VVD ( DBLE( A(3,3) ), 86.50307003740468D0,
+     :           1D-2, 'sla_SMAT', 'A(2,2)', STATUS )
+      CALL VVD ( DBLE( V(1) ), 1.002346480763383D0,
+     :           1D-4, 'sla_SMAT', 'V(1)', STATUS )
+      CALL VVD ( DBLE( V(2) ), 0.0328559401697292D0,
+     :           1D-4, 'sla_SMAT', 'V(2)', STATUS )
+      CALL VVD ( DBLE( V(3) ), 0.004760688414898454D0,
+     :           1D-4, 'sla_SMAT', 'V(3)', STATUS )
+      CALL VVD ( DBLE( D ), 0.003658344147359863D0,
+     :           1D-4, 'sla_SMAT', 'D', STATUS )
+      CALL VIV ( J, 0, 'sla_SMAT', 'J', STATUS )
+
+      END
+
+      SUBROUTINE T_SUPGAL ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ S U P G A L
+*  - - - - - - - - -
+*
+*  Test sla_SUPGAL routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_SUPGAL, VVD.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION DL, DB
+
+      CALL sla_SUPGAL ( 6.1D0, -1.4D0, Dl, DB )
+
+      CALL VVD ( DL, 3.798775860769474D0, 1D-12, 'sla_SUPGAL',
+     :           'DL', STATUS )
+      CALL VVD ( DB, -0.1397070490669407D0, 1D-12, 'sla_SUPGAL',
+     :           'DB', STATUS )
+
+      END
+
+      SUBROUTINE T_SVD ( STATUS )
+*+
+*  - - - - - -
+*   T _ S V D
+*  - - - - - -
+*
+*  Test sla_SVD, sla_SVDSOL, sla_SVDCOV routines.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  sla_SVD, VVD, sla_SVDSOL, sla_SVDCOV.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER M, N
+      INTEGER I, J
+      INTEGER MP, NP, NC
+
+      PARAMETER (MP = 10)
+      PARAMETER (NP = 6)
+      PARAMETER (NC = 7)
+
+      DOUBLE PRECISION A(MP,NP), W(NP), V(NP,NP), WORK(NP),
+     :                  B(MP), X(NP), C(NC,NC)
+      DOUBLE PRECISION VAL
+
+      M = 5
+      N = 4
+
+      DO I = 1, M
+         VAL = DFLOAT( ( I ) ) / 2D0
+         B(I) = 23D0 - 3D0 * VAL - 11D0 * DSIN ( VAL ) +
+     :          13D0 * DCOS ( VAL )
+         A(I,1) = 1D0
+         A(I,2) = VAL
+         A(I,3) = DSIN ( VAL )
+         A(I,4) = DCOS ( VAL )
+      END DO
+
+      CALL sla_SVD ( M, N, MP, NP, A, W, V, WORK, J )
+
+*  Allow U and V to have reversed signs.
+      IF (A(1,1) .GT. 0D0) THEN
+         DO I = 1, M
+            DO J = 1, N
+               A(I,J) = - A(I,J)
+               V(I,J) = - V(I,J)
+            END DO
+         END DO
+      END IF
+
+      CALL VVD ( A(1,1), -0.21532492989299D0, 1D-12, 'sla_SVD',
+     :           'A(1,1)', STATUS )
+      CALL VVD ( A(1,2),  0.67675050651267D0, 1D-12, 'sla_SVD',
+     :           'A(1,2)', STATUS )
+      CALL VVD ( A(1,3), -0.37267876361644D0, 1D-12, 'sla_SVD',
+     :           'A(1,3)', STATUS )
+      CALL VVD ( A(1,4),  0.58330405917160D0, 1D-12, 'sla_SVD',
+     :           'A(1,4)', STATUS )
+      CALL VVD ( A(2,1), -0.33693420368121D0, 1D-12, 'sla_SVD',
+     :           'A(2,1)', STATUS )
+      CALL VVD ( A(2,2),  0.48011695963936D0, 1D-12, 'sla_SVD',
+     :           'A(2,2)', STATUS )
+      CALL VVD ( A(2,3),  0.62656568539705D0, 1D-12, 'sla_SVD',
+     :           'A(2,3)', STATUS )
+      CALL VVD ( A(2,4), -0.17479918328198D0, 1D-12, 'sla_SVD',
+     :           'A(2,4)', STATUS )
+      CALL VVD ( A(3,1), -0.44396825906047D0, 1D-12, 'sla_SVD',
+     :           'A(3,1)', STATUS )
+      CALL VVD ( A(3,2),  0.18255923809825D0, 1D-12, 'sla_SVD',
+     :           'A(3,2)', STATUS )
+      CALL VVD ( A(3,3),  0.02228154115994D0, 1D-12, 'sla_SVD',
+     :           'A(3,3)', STATUS )
+      CALL VVD ( A(3,4), -0.51743308030238D0, 1D-12, 'sla_SVD',
+     :           'A(3,4)', STATUS )
+      CALL VVD ( A(4,1), -0.53172583816951D0, 1D-12, 'sla_SVD',
+     :           'A(4,1)', STATUS )
+      CALL VVD ( A(4,2), -0.16537863535943D0, 1D-12, 'sla_SVD',
+     :           'A(4,2)', STATUS )
+      CALL VVD ( A(4,3), -0.61134201569990D0, 1D-12, 'sla_SVD',
+     :           'A(4,3)', STATUS )
+      CALL VVD ( A(4,4), -0.28871221824912D0, 1D-12, 'sla_SVD',
+     :           'A(4,4)', STATUS )
+      CALL VVD ( A(5,1), -0.60022523682867D0, 1D-12, 'sla_SVD',
+     :           'A(5,1)', STATUS )
+      CALL VVD ( A(5,2), -0.50081781972404D0, 1D-12, 'sla_SVD',
+     :           'A(5,2)', STATUS )
+      CALL VVD ( A(5,3),  0.30706750690326D0, 1D-12, 'sla_SVD',
+     :           'A(5,3)', STATUS )
+      CALL VVD ( A(5,4),  0.52736124480318D0, 1D-12, 'sla_SVD',
+     :           'A(5,4)', STATUS )
+
+      CALL VVD ( W(1), 4.57362714220621D0, 1D-12, 'sla_SVD',
+     :           'W(1)', STATUS )
+      CALL VVD ( W(2), 1.64056393111226D0, 1D-12, 'sla_SVD',
+     :           'W(2)', STATUS )
+      CALL VVD ( W(3), 0.03999179717447D0, 1D-12, 'sla_SVD',
+     :           'W(3)', STATUS )
+      CALL VVD ( W(4), 0.37267332634218D0, 1D-12, 'sla_SVD',
+     :           'W(4)', STATUS )
+
+      CALL VVD ( V(1,1), -0.46531525230679D0, 1D-12, 'sla_SVD',
+     :           'V(1,1)', STATUS )
+      CALL VVD ( V(1,2),  0.41036514115630D0, 1D-12, 'sla_SVD',
+     :           'V(1,2)', STATUS )
+      CALL VVD ( V(1,3), -0.70279526907678D0, 1D-12, 'sla_SVD',
+     :           'V(1,3)', STATUS )
+      CALL VVD ( V(1,4),  0.34808185338758D0, 1D-12, 'sla_SVD',
+     :           'V(1,4)', STATUS )
+      CALL VVD ( V(2,1), -0.80342444002914D0, 1D-12, 'sla_SVD',
+     :           'V(2,1)', STATUS )
+      CALL VVD ( V(2,2), -0.29896472833787D0, 1D-12, 'sla_SVD',
+     :           'V(2,2)', STATUS )
+      CALL VVD ( V(2,3),  0.46592932810178D0, 1D-12, 'sla_SVD',
+     :           'V(2,3)', STATUS )
+      CALL VVD ( V(2,4),  0.21917828721921D0, 1D-12, 'sla_SVD',
+     :           'V(2,4)', STATUS )
+      CALL VVD ( V(3,1), -0.36564497020801D0, 1D-12, 'sla_SVD',
+     :           'V(3,1)', STATUS )
+      CALL VVD ( V(3,2),  0.28066812941896D0, 1D-12, 'sla_SVD',
+     :           'V(3,2)', STATUS )
+      CALL VVD ( V(3,3), -0.03324480702665D0, 1D-12, 'sla_SVD',
+     :           'V(3,3)', STATUS )
+      CALL VVD ( V(3,4), -0.88680546891402D0, 1D-12, 'sla_SVD',
+     :           'V(3,4)', STATUS )
+      CALL VVD ( V(4,1),  0.06553350971918D0, 1D-12, 'sla_SVD',
+     :           'V(4,1)', STATUS )
+      CALL VVD ( V(4,2),  0.81452191085452D0, 1D-12, 'sla_SVD',
+     :           'V(4,2)', STATUS )
+      CALL VVD ( V(4,3),  0.53654771808636D0, 1D-12, 'sla_SVD',
+     :           'V(4,3)', STATUS )
+      CALL VVD ( V(4,4),  0.21065602782287D0, 1D-12, 'sla_SVD',
+     :           'V(4,4)', STATUS )
+
+      CALL sla_SVDSOL ( M, N, MP, NP, B, A, W, V, WORK, X )
+
+      CALL VVD ( X(1),  23D0, 1D-12, 'sla_SVDSOL', 'X(1)', STATUS )
+      CALL VVD ( X(2),  -3D0, 1D-12, 'sla_SVDSOL', 'X(2)', STATUS )
+      CALL VVD ( X(3), -11D0, 1D-12, 'sla_SVDSOL', 'X(3)', STATUS )
+      CALL VVD ( X(4),  13D0, 1D-12, 'sla_SVDSOL', 'X(4)', STATUS )
+
+      CALL sla_SVDCOV ( N, NP, NC, W, V, WORK, C )
+
+      CALL VVD ( C(1,1),  309.77269378273270D0, 1D-10,
+     :           'sla_SVDCOV', 'C(1,1)', STATUS )
+      CALL VVD ( C(1,2), -204.22043941662150D0, 1D-10,
+     :           'sla_SVDCOV', 'C(1,2)', STATUS )
+      CALL VVD ( C(1,3),   12.43704316907477D0, 1D-10,
+     :           'sla_SVDCOV', 'C(1,3)', STATUS )
+      CALL VVD ( C(1,4), -235.12299986206710D0, 1D-10,
+     :           'sla_SVDCOV', 'C(1,4)', STATUS )
+      CALL VVD ( C(2,1), -204.22043941662150D0, 1D-10,
+     :           'sla_SVDCOV', 'C(2,1)', STATUS )
+      CALL VVD ( C(2,2),  136.14695961108110D0, 1D-10,
+     :           'sla_SVDCOV', 'C(2,2)', STATUS )
+      CALL VVD ( C(2,3),  -11.10167446246327D0, 1D-10,
+     :           'sla_SVDCOV', 'C(2,3)', STATUS )
+      CALL VVD ( C(2,4),  156.54937371198730D0, 1D-10,
+     :           'sla_SVDCOV', 'C(2,4)', STATUS )
+      CALL VVD ( C(3,1),   12.43704316907477D0, 1D-10,
+     :           'sla_SVDCOV', 'C(3,1)', STATUS )
+      CALL VVD ( C(3,2),  -11.10167446246327D0, 1D-10,
+     :           'sla_SVDCOV', 'C(3,2)', STATUS )
+      CALL VVD ( C(3,3),    6.38909830090602D0, 1D-10,
+     :           'sla_SVDCOV', 'C(3,3)', STATUS )
+      CALL VVD ( C(3,4),  -12.41424302586736D0, 1D-10,
+     :           'sla_SVDCOV', 'C(3,4)', STATUS )
+      CALL VVD ( C(4,1), -235.12299986206710D0, 1D-10,
+     :           'sla_SVDCOV', 'C(4,1)', STATUS )
+      CALL VVD ( C(4,2),  156.54937371198730D0, 1D-10,
+     :           'sla_SVDCOV', 'C(4,2)', STATUS )
+      CALL VVD ( C(4,3),  -12.41424302586736D0, 1D-10,
+     :           'sla_SVDCOV', 'C(4,3)', STATUS )
+      CALL VVD ( C(4,4),  180.56719842359560D0, 1D-10,
+     :           'sla_SVDCOV', 'C(4,4)', STATUS )
+
+      END
+
+      SUBROUTINE T_TP ( STATUS )
+*+
+*  - - - - - -
+*   T _ T P
+*  - - - - - -
+*
+*  Test spherical tangent-planD-projection routines:
+*
+*       sla_S2TP      sla_DS2TP     sla_DTPS2C
+*       sla_TP2S      sla_DTP2S     sla_TPS2C
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  all the above, plus VVD and VIV.
+*
+*  Last revision:   10 July 2000
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      REAL R0, D0, R1, D1, X, Y, R2, D2, R01, D01, R02, D02
+      DOUBLE PRECISION DR0, DD0, DR1, DD1, DX, DY, DR2, DD2, DR01,
+     :                 DD01, DR02, DD02
+
+      R0 = 3.1E0
+      D0 = -0.9E0
+      R1 = R0 + 0.2E0
+      D1 = D0 - 0.1E0
+      CALL sla_S2TP ( R1, D1, R0, D0, X, Y, J )
+      CALL VVD ( DBLE( X ), 0.1086112301590404D0, 1D-6, 'sla_S2TP',
+     :           'X', STATUS )
+      CALL VVD ( DBLE( Y ), -0.1095506200711452D0, 1D-6, 'sla_S2TP',
+     :           'Y', STATUS )
+      CALL VIV ( J, 0, 'sla_S2TP', 'J', STATUS )
+      CALL sla_TP2S ( X, Y, R0, D0, R2, D2 )
+      CALL VVD ( DBLE( ( R2 - R1 ) ), 0D0, 1D-6, 'sla_TP2S',
+     :           'R', STATUS )
+      CALL VVD ( DBLE( ( D2 - D1 ) ), 0D0, 1D-6, 'sla_TP2S',
+     :           'D', STATUS )
+      CALL sla_TPS2C ( X, Y, R2, D2, R01, D01, R02, D02, J )
+      CALL VVD ( DBLE( R01 ),  3.1D0, 1D-6, 'sla_TPS2C',
+     :           'R1', STATUS )
+      CALL VVD ( DBLE( D01 ), -0.9D0, 1D-6, 'sla_TPS2C',
+     :           'D1', STATUS )
+      CALL VVD ( DBLE( R02 ), 0.3584073464102072D0, 1D-6, 'sla_TPS2C',
+     :           'R2', STATUS )
+      CALL VVD ( DBLE( D02 ), -2.023361658234722D0, 1D-6, 'sla_TPS2C',
+     :           'D2', STATUS )
+      CALL VIV ( J, 1, 'sla_TPS2C', 'N', STATUS )
+
+      DR0 = 3.1D0
+      DD0 = -0.9D0
+      DR1 = DR0 + 0.2D0
+      DD1 = DD0 - 0.1D0
+      CALL sla_DS2TP ( DR1, DD1, DR0, DD0, DX, DY, J )
+      CALL VVD ( DX, 0.1086112301590404D0, 1D-12, 'sla_DS2TP',
+     :           'X', STATUS )
+      CALL VVD ( DY, -0.1095506200711452D0, 1D-12, 'sla_DS2TP',
+     :           'Y', STATUS )
+      CALL VIV ( J, 0, 'sla_DS2TP', 'J', STATUS )
+      CALL sla_DTP2S ( DX, DY, DR0, DD0, DR2, DD2 )
+      CALL VVD ( DR2 - DR1, 0D0, 1D-12, 'sla_DTP2S', 'R', STATUS )
+      CALL VVD ( DD2 - DD1, 0D0, 1D-12, 'sla_DTP2S', 'D', STATUS )
+      CALL sla_DTPS2C ( DX, DY, DR2, DD2, DR01, DD01, DR02, DD02, J )
+      CALL VVD ( DR01,  3.1D0, 1D-12, 'sla_DTPS2C', 'R1', STATUS )
+      CALL VVD ( DD01, -0.9D0, 1D-12, 'sla_DTPS2C', 'D1', STATUS )
+      CALL VVD ( DR02, 0.3584073464102072D0, 1D-12, 'sla_DTPS2C',
+     :           'R2', STATUS )
+      CALL VVD ( DD02, -2.023361658234722D0, 1D-12, 'sla_DTPS2C',
+     :           'D2', STATUS )
+      CALL VIV ( J, 1, 'sla_DTPS2C', 'N', STATUS )
+
+      END
+
+      SUBROUTINE T_TPV ( STATUS )
+*+
+*  - - - - - -
+*   T _ T P V
+*  - - - - - -
+*
+*  Test Cartesian tangent-planD-projection routines:
+*
+*       sla_TP2V      sla_V2TP      sla_TPV2C
+*       sla_DTP2V     sla_DV2TP     sla_DTPV2C
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  all the above, plus VVD and VIV.
+*
+*  Last revision:   21 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER J
+      REAL RXI, RETA, RV(3), RV0(3), RTXI, RTETA, RTV(3),
+     :     RTV01(3), RTV02(3)
+      DOUBLE PRECISION XI, ETA, X, Y, Z, V(3), V0(3), TXI, TETA,
+     :                 TV(3), TV01(3), TV02(3)
+
+      XI = -0.1D0
+      ETA = 0.055D0
+      RXI = SNGL( XI )
+      RETA = SNGL( ETA )
+
+      X = -0.7D0
+      Y = -0.13D0
+      Z = DSQRT ( 1D0 - X * X - Y * Y )
+      RV(1) = SNGL( X )
+      RV(2) = SNGL( Y )
+      RV(3) = SNGL( Z )
+      V(1) = X
+      V(2) = Y
+      V(3) = Z
+
+      X = -0.72D0
+      Y = -0.16D0
+      Z = DSQRT ( 1D0 - X * X - Y * Y )
+      RV0(1) = SNGL( X )
+      RV0(2) = SNGL( Y )
+      RV0(3) = SNGL( Z )
+      V0(1) = X
+      V0(2) = Y
+      V0(3) = Z
+
+      CALL sla_TP2V ( RXI, RETA, RV0, RTV )
+      CALL VVD ( DBLE( RTV(1) ), -0.700887428128D0, 1D-6, 'sla_TP2V',
+     :           'V(1)', STATUS )
+      CALL VVD ( DBLE( RTV(2) ), -0.05397407D0, 1D-6, 'sla_TP2V',
+     :           'V(2)', STATUS )
+      CALL VVD ( DBLE( RTV(3) ),  0.711226836562D0, 1D-6, 'sla_TP2V',
+     :           'V(3)', STATUS )
+
+      CALL sla_DTP2V ( XI, ETA, V0, TV )
+      CALL VVD ( TV(1), -0.7008874281280771D0, 1D-13, 'sla_DTP2V',
+     :           'V(1)', STATUS )
+      CALL VVD ( TV(2), -0.05397406827952735D0, 1D-13, 'sla_DTP2V',
+     :           'V(2)', STATUS )
+      CALL VVD ( TV(3), 0.7112268365615617D0, 1D-13, 'sla_DTP2V',
+     :           'V(3)', STATUS )
+
+      CALL sla_V2TP ( RV, RV0, RTXI, RTETA, J)
+      CALL VVD ( DBLE( RTXI ), -0.02497229197D0, 1D-6, 'sla_V2TP',
+     :           'XI', STATUS )
+      CALL VVD ( DBLE( RTETA ), 0.03748140764D0, 1D-6, 'sla_V2TP',
+     :           'ETA', STATUS )
+      CALL VIV ( J, 0, 'sla_V2TP', 'J', STATUS )
+
+      CALL sla_DV2TP ( V, V0, TXI, TETA, J )
+      CALL VVD ( TXI, -0.02497229197023852D0, 1D-13, 'sla_DV2TP',
+     :           'XI', STATUS )
+      CALL VVD ( TETA, 0.03748140764224765D0, 1D-13, 'sla_DV2TP',
+     :           'ETA', STATUS )
+      CALL VIV ( J, 0, 'sla_DV2TP', 'J', STATUS )
+
+      CALL sla_TPV2C ( RXI, RETA, RV, RTV01, RTV02, J )
+      CALL VVD ( DBLE( RTV01(1) ), -0.7074573732537283D0, 1D-6,
+     :           'sla_TPV2C', 'V01(1)', STATUS )
+      CALL VVD ( DBLE( RTV01(2) ), -0.2372965765309941D0, 1D-6,
+     :           'sla_TPV2C', 'V01(2)', STATUS )
+      CALL VVD ( DBLE( RTV01(3) ), 0.6657284730245545D0, 1D-6,
+     :           'sla_TPV2C', 'V01(3)', STATUS )
+      CALL VVD ( DBLE( RTV02(1) ), -0.6680480104758149D0, 1D-6,
+     :           'sla_TPV2C', 'V02(1)', STATUS )
+      CALL VVD ( DBLE( RTV02(2) ), -0.02915588494045333D0, 1D-6,
+     :           'sla_TPV2C', 'V02(2)', STATUS )
+      CALL VVD ( DBLE( RTV02(3) ), 0.7435467638774610D0, 1D-6,
+     :           'sla_TPV2C', 'V02(3)', STATUS )
+      CALL VIV ( J, 1, 'sla_TPV2C', 'N', STATUS )
+
+      CALL sla_DTPV2C ( XI, ETA, V, TV01, TV02, J )
+      CALL VVD ( TV01(1), -0.7074573732537283D0, 1D-13, 'sla_DTPV2C',
+     :           'V01(1)', STATUS )
+      CALL VVD ( TV01(2), -0.2372965765309941D0, 1D-13, 'sla_DTPV2C',
+     :           'V01(2)', STATUS )
+      CALL VVD ( TV01(3), 0.6657284730245545D0, 1D-13, 'sla_DTPV2C',
+     :           'V01(3)', STATUS )
+      CALL VVD ( TV02(1), -0.6680480104758149D0, 1D-13, 'sla_DTPV2C',
+     :           'V02(1)', STATUS )
+      CALL VVD ( TV02(2), -0.02915588494045333D0, 1D-13, 'sla_DTPV2C',
+     :           'V02(2)', STATUS )
+      CALL VVD ( TV02(3), 0.7435467638774610D0, 1D-13, 'sla_DTPV2C',
+     :           'V02(3)', STATUS )
+      CALL VIV ( J, 1, 'sla_DTPV2C', 'N', STATUS )
+
+      END
+
+      SUBROUTINE T_VECMAT ( STATUS )
+*+
+*  - - - - - - - - -
+*   T _ V E C M A T
+*  - - - - - - - - -
+*
+*  Test all the 3-vector and 3x3 matrix routines:
+*
+*          sla_AV2M     sla_DAV2M
+*          sla_CC2S     sla_DCC2S
+*          sla_CS2C     sla_DCS2C
+*          sla_EULER    sla_DEULER
+*          sla_IMXV     sla_DIMXV
+*          sla_M2AV     sla_DM2AV
+*          sla_MXM      sla_DMXM
+*          sla_MXV      sla_DMXV
+*          sla_VDV      sla_DVDV
+*          sla_VN       sla_DVN
+*          sla_VXV      sla_DVXV
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called:  all the above, plus VVD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      INTEGER I
+      REAL sla_VDV
+      REAL AV(3), RM1(3,3), RM2(3,3), RM(3,3), V1(3), V2(3),
+     :   V3(3), V4(3), V5(3), VM, V6(3), V7(3)
+      DOUBLE PRECISION sla_DVDV
+      DOUBLE PRECISION DAV(3), DRM1(3,3), DRM2(3,3), DRM(3,3),
+     :                 DV1(3), DV2(3), DV3(3), DV4(3), DV5(3),
+     :                 DVM, DV6(3), DV7(3)
+
+
+*  Make a rotation matrix.
+      AV(1) = -0.123E0
+      AV(2) = 0.0987E0
+      AV(3) = 0.0654E0
+      CALL sla_AV2M ( AV, RM1 )
+      CALL VVD ( DBLE( RM1(1,1) ), 0.9930075842721269D0,
+     :           1D-6, 'sla_AV2M', '11', STATUS )
+      CALL VVD ( DBLE( RM1(1,2) ), 0.05902743090199868D0,
+     :           1D-6, 'sla_AV2M', '12', STATUS )
+      CALL VVD ( DBLE( RM1(1,3) ), -0.1022335560329612D0,
+     :           1D-6, 'sla_AV2M', '13', STATUS )
+      CALL VVD ( DBLE( RM1(2,1) ), -0.07113807138648245D0,
+     :           1D-6, 'sla_AV2M', '21', STATUS )
+      CALL VVD ( DBLE( RM1(2,2) ), 0.9903204657727545D0,
+     :           1D-6, 'sla_AV2M', '22', STATUS )
+      CALL VVD ( DBLE( RM1(2,3) ), -0.1191836812279541D0,
+     :           1D-6, 'sla_AV2M', '23', STATUS )
+      CALL VVD ( DBLE( RM1(3,1) ), 0.09420887631983825D0,
+     :           1D-6, 'sla_AV2M', '31', STATUS )
+      CALL VVD ( DBLE( RM1(3,2) ), 0.1256229973879967D0,
+     :           1D-6, 'sla_AV2M', '32', STATUS )
+      CALL VVD ( DBLE( RM1(3,3) ), 0.9875948309655174D0,
+     :           1D-6, 'sla_AV2M', '33', STATUS )
+
+*  Make another.
+      CALL sla_EULER ( 'YZY', 2.345E0, -0.333E0, 2.222E0, RM2 )
+      CALL VVD ( DBLE( RM2(1,1) ), -0.1681574770810878D0,
+     :           1D-6, 'sla_EULER', '11', STATUS )
+      CALL VVD ( DBLE( RM2(1,2) ), 0.1981362273264315D0,
+     :           1D-6, 'sla_EULER', '12', STATUS )
+      CALL VVD ( DBLE( RM2(1,3) ), 0.9656423242187410D0,
+     :           1D-6, 'sla_EULER', '13', STATUS )
+      CALL VVD ( DBLE( RM2(2,1) ), -0.2285369373983370D0,
+     :           1D-6, 'sla_EULER', '21', STATUS )
+      CALL VVD ( DBLE( RM2(2,2) ), 0.9450659587140423D0,
+     :           1D-6, 'sla_EULER', '22', STATUS )
+      CALL VVD ( DBLE( RM2(2,3) ), -0.2337117924378156D0,
+     :           1D-6, 'sla_EULER', '23', STATUS )
+      CALL VVD ( DBLE( RM2(3,1) ), -0.9589024617479674D0,
+     :           1D-6, 'sla_EULER', '31', STATUS )
+      CALL VVD ( DBLE( RM2(3,2) ), -0.2599853247796050D0,
+     :           1D-6, 'sla_EULER', '32', STATUS )
+      CALL VVD ( DBLE( RM2(3,3) ), -0.1136384607117296D0,
+     :           1D-6, 'sla_EULER', '33', STATUS )
+
+*  Combine them.
+      CALL sla_MXM ( RM2, RM1, RM )
+      CALL VVD ( DBLE( RM(1,1) ), -0.09010460088585805D0,
+     :           1D-6, 'sla_MXM', '11', STATUS )
+      CALL VVD ( DBLE( RM(1,2) ), 0.3075993402463796D0,
+     :           1D-6, 'sla_MXM', '12', STATUS )
+      CALL VVD ( DBLE( RM(1,3) ), 0.9472400998581048D0,
+     :           1D-6, 'sla_MXM', '13', STATUS )
+      CALL VVD ( DBLE( RM(2,1) ), -0.3161868071070688D0,
+     :           1D-6, 'sla_MXM', '21', STATUS )
+      CALL VVD ( DBLE( RM(2,2) ), 0.8930686362478707D0,
+     :           1D-6, 'sla_MXM', '22', STATUS )
+      CALL VVD ( DBLE( RM(2,3) ),-0.3200848543149236D0,
+     :           1D-6, 'sla_MXM', '23', STATUS )
+      CALL VVD ( DBLE( RM(3,1) ),-0.9444083141897035D0,
+     :           1D-6, 'sla_MXM', '31', STATUS )
+      CALL VVD ( DBLE( RM(3,2) ),-0.3283459407855694D0,
+     :           1D-6, 'sla_MXM', '32', STATUS )
+      CALL VVD ( DBLE( RM(3,3) ), 0.01678926022795169D0,
+     :           1D-6, 'sla_MXM', '33', STATUS )
+
+*  Create a vector.
+      CALL sla_CS2C ( 3.0123E0, -0.999E0, V1 )
+      CALL VVD ( DBLE( V1(1) ), -0.5366267667260525D0,
+     :           1D-6, 'sla_CS2C', 'X', STATUS )
+      CALL VVD ( DBLE( V1(2) ), 0.06977111097651444D0,
+     :           1D-6, 'sla_CS2C', 'Y', STATUS )
+      CALL VVD ( DBLE( V1(3) ), -0.8409302618566215D0,
+     :           1D-6, 'sla_CS2C', 'Z', STATUS )
+
+*  Rotate it using the two matrices sequentially.
+      CALL sla_MXV ( RM1, V1, V2 )
+      CALL sla_MXV ( RM2, V2, V3 )
+      CALL VVD ( DBLE( V3(1) ), -0.7267487768696160D0,
+     :           1D-6, 'sla_MXV', 'X', STATUS )
+      CALL VVD ( DBLE( V3(2) ), 0.5011537352639822D0,
+     :           1D-6, 'sla_MXV', 'Y', STATUS )
+      CALL VVD ( DBLE( V3(3) ), 0.4697671220397141D0,
+     :           1D-6, 'sla_MXV', 'Z', STATUS )
+
+*  Derotate it using the combined matrix.
+      CALL sla_IMXV ( RM, V3, V4 )
+      CALL VVD ( DBLE( V4(1) ), -0.5366267667260526D0,
+     :           1D-6, 'sla_IMXV', 'X', STATUS )
+      CALL VVD ( DBLE( V4(2) ), 0.06977111097651445D0,
+     :           1D-6, 'sla_IMXV', 'Y', STATUS )
+      CALL VVD ( DBLE( V4(3) ), -0.8409302618566215D0,
+     :           1D-6, 'sla_IMXV', 'Z', STATUS )
+
+*  Convert the combined matrix into an axial vector.
+      CALL sla_M2AV ( RM, V5 )
+      CALL VVD ( DBLE( V5(1) ), 0.006889040510209034D0,
+     :           1D-6, 'sla_M2AV', 'X', STATUS )
+      CALL VVD ( DBLE( V5(2) ), -1.577473205461961D0,
+     :           1D-6, 'sla_M2AV', 'Y', STATUS )
+      CALL VVD ( DBLE( V5(3) ), 0.5201843672856759D0,
+     :           1D-6, 'sla_M2AV', 'Z', STATUS )
+
+*  Multiply it by a scalar and then normalize.
+      DO I = 1, 3
+         V5(I) = V5(I) * 1000.0
+      END DO
+
+      CALL sla_VN ( V5, V6, VM )
+      CALL VVD ( DBLE( V6(1) ), 0.004147420704640065D0,
+     :           1D-6, 'sla_VN', 'X', STATUS )
+      CALL VVD ( DBLE( V6(2) ), -0.9496888606842218D0,
+     :           1D-6, 'sla_VN', 'Y', STATUS )
+      CALL VVD ( DBLE( V6(3) ), 0.3131674740355448D0,
+     :           1D-6, 'sla_VN', 'Z', STATUS )
+      CALL VVD ( DBLE( VM ), 1661.042127339937D0,
+     :           1D-3, 'sla_VN', 'M', STATUS )
+
+*  Dot product with the original vector.
+      CALL VVD ( DBLE( sla_VDV ( V6, V1 ) ),
+     :           -0.3318384698006295D0, 1D-6, 'sla_VN', ' ', STATUS )
+
+*  Cross product with the original vector.
+      CALL sla_VXV (V6, V1, V7 )
+      CALL VVD ( DBLE( V7(1) ), 0.7767720597123304D0,
+     :           1D-6, 'sla_VXV', 'X', STATUS )
+      CALL VVD ( DBLE( V7(2) ), -0.1645663574562769D0,
+     :           1D-6, 'sla_VXV', 'Y', STATUS )
+      CALL VVD ( DBLE( V7(3) ), -0.5093390925544726D0,
+     :           1D-6, 'sla_VXV', 'Z', STATUS )
+
+*  Same in double precision.
+
+      DAV(1) = -0.123D0
+      DAV(2) = 0.0987D0
+      DAV(3) = 0.0654D0
+      CALL sla_DAV2M ( DAV, DRM1 )
+      CALL VVD ( DRM1(1,1), 0.9930075842721269D0, 1D-12,
+     :           'sla_DAV2M', '11', STATUS )
+      CALL VVD ( DRM1(1,2), 0.05902743090199868D0, 1D-12,
+     :           'sla_DAV2M', '12', STATUS )
+      CALL VVD ( DRM1(1,3), -0.1022335560329612D0, 1D-12,
+     :           'sla_DAV2M', '13', STATUS )
+      CALL VVD ( DRM1(2,1), -0.07113807138648245D0, 1D-12,
+     :           'sla_DAV2M', '21', STATUS )
+      CALL VVD ( DRM1(2,2), 0.9903204657727545D0, 1D-12,
+     :           'sla_DAV2M', '22', STATUS )
+      CALL VVD ( DRM1(2,3), -0.1191836812279541D0, 1D-12,
+     :           'sla_DAV2M', '23', STATUS )
+      CALL VVD ( DRM1(3,1), 0.09420887631983825D0, 1D-12,
+     :           'sla_DAV2M', '31', STATUS )
+      CALL VVD ( DRM1(3,2), 0.1256229973879967D0, 1D-12,
+     :           'sla_DAV2M', '32', STATUS )
+      CALL VVD ( DRM1(3,3), 0.9875948309655174D0, 1D-12,
+     :           'sla_DAV2M', '33', STATUS )
+
+      CALL sla_DEULER ( 'YZY', 2.345D0, -0.333D0, 2.222D0, DRM2 )
+      CALL VVD ( DRM2(1,1), -0.1681574770810878D0, 1D-12,
+     :           'sla_DEULER', '11', STATUS )
+      CALL VVD ( DRM2(1,2), 0.1981362273264315D0, 1D-12,
+     :           'sla_DEULER', '12', STATUS )
+      CALL VVD ( DRM2(1,3), 0.9656423242187410D0, 1D-12,
+     :           'sla_DEULER', '13', STATUS )
+      CALL VVD ( DRM2(2,1), -0.2285369373983370D0, 1D-12,
+     :           'sla_DEULER', '21', STATUS )
+      CALL VVD ( DRM2(2,2), 0.9450659587140423D0, 1D-12,
+     :           'sla_DEULER', '22', STATUS )
+      CALL VVD ( DRM2(2,3), -0.2337117924378156D0, 1D-12,
+     :           'sla_DEULER', '23', STATUS )
+      CALL VVD ( DRM2(3,1), -0.9589024617479674D0, 1D-12,
+     :           'sla_DEULER', '31', STATUS )
+      CALL VVD ( DRM2(3,2), -0.2599853247796050D0, 1D-12,
+     :           'sla_DEULER', '32', STATUS )
+      CALL VVD ( DRM2(3,3), -0.1136384607117296D0, 1D-12,
+     :           'sla_DEULER', '33', STATUS )
+
+      CALL sla_DMXM ( DRM2, DRM1, DRM )
+      CALL VVD ( DRM(1,1), -0.09010460088585805D0, 1D-12,
+     :           'sla_DMXM', '11', STATUS )
+      CALL VVD ( DRM(1,2), 0.3075993402463796D0, 1D-12,
+     :           'sla_DMXM', '12', STATUS )
+      CALL VVD ( DRM(1,3), 0.9472400998581048D0, 1D-12,
+     :           'sla_DMXM', '13', STATUS )
+      CALL VVD ( DRM(2,1), -0.3161868071070688D0, 1D-12,
+     :           'sla_DMXM', '21', STATUS )
+      CALL VVD ( DRM(2,2), 0.8930686362478707D0, 1D-12,
+     :           'sla_DMXM', '22', STATUS )
+      CALL VVD ( DRM(2,3), -0.3200848543149236D0, 1D-12,
+     :           'sla_DMXM', '23', STATUS )
+      CALL VVD ( DRM(3,1), -0.9444083141897035D0, 1D-12,
+     :           'sla_DMXM', '31', STATUS )
+      CALL VVD ( DRM(3,2), -0.3283459407855694D0, 1D-12,
+     :           'sla_DMXM', '32', STATUS )
+      CALL VVD ( DRM(3,3), 0.01678926022795169D0, 1D-12,
+     :           'sla_DMXM', '33', STATUS )
+
+      CALL sla_DCS2C ( 3.0123D0, -0.999D0, DV1 )
+      CALL VVD ( DV1(1), -0.5366267667260525D0, 1D-12,
+     :           'sla_DCS2C', 'X', STATUS )
+      CALL VVD ( DV1(2), 0.06977111097651444D0, 1D-12,
+     :           'sla_DCS2C', 'Y', STATUS )
+      CALL VVD ( DV1(3), -0.8409302618566215D0, 1D-12,
+     :           'sla_DCS2C', 'Z', STATUS )
+
+      CALL sla_DMXV ( DRM1, DV1, DV2 )
+      CALL sla_DMXV ( DRM2, DV2, DV3 )
+      CALL VVD ( DV3(1), -0.7267487768696160D0, 1D-12,
+     :           'sla_DMXV', 'X', STATUS )
+      CALL VVD ( DV3(2), 0.5011537352639822D0, 1D-12,
+     :           'sla_DMXV', 'Y', STATUS )
+      CALL VVD ( DV3(3), 0.4697671220397141D0, 1D-12,
+     :           'sla_DMXV', 'Z', STATUS )
+
+      CALL sla_DIMXV ( DRM, DV3, DV4 )
+      CALL VVD ( DV4(1), -0.5366267667260526D0, 1D-12,
+     :           'sla_DIMXV', 'X', STATUS )
+      CALL VVD ( DV4(2), 0.06977111097651445D0, 1D-12,
+     :           'sla_DIMXV', 'Y', STATUS )
+      CALL VVD ( DV4(3), -0.8409302618566215D0, 1D-12,
+     :           'sla_DIMXV', 'Z', STATUS )
+
+      CALL sla_DM2AV ( DRM, DV5 )
+      CALL VVD ( DV5(1), 0.006889040510209034D0, 1D-12,
+     :           'sla_DM2AV', 'X', STATUS )
+      CALL VVD ( DV5(2), -1.577473205461961D0, 1D-12,
+     :           'sla_DM2AV', 'Y', STATUS )
+      CALL VVD ( DV5(3), 0.5201843672856759D0, 1D-12,
+     :           'sla_DM2AV', 'Z', STATUS )
+
+      DO I = 1, 3
+         DV5(I) = DV5(I) * 1000D0
+      END DO
+
+      CALL sla_DVN ( DV5, DV6, DVM )
+      CALL VVD ( DV6(1), 0.004147420704640065D0, 1D-12,
+     :           'sla_DVN', 'X', STATUS )
+      CALL VVD ( DV6(2), -0.9496888606842218D0, 1D-12,
+     :           'sla_DVN', 'Y', STATUS )
+      CALL VVD ( DV6(3), 0.3131674740355448D0, 1D-12,
+     :           'sla_DVN', 'Z', STATUS )
+      CALL VVD ( DVM, 1661.042127339937D0, 1D-9, 'sla_DVN',
+     :           'M', STATUS )
+
+      CALL VVD ( sla_DVDV ( DV6, DV1 ), -0.3318384698006295D0,
+     :           1D-12, 'sla_DVN', ' ', STATUS )
+
+      CALL sla_DVXV (DV6, DV1, DV7 )
+      CALL VVD ( DV7(1), 0.7767720597123304D0, 1D-12,
+     :           'sla_DVXV', 'X', STATUS )
+      CALL VVD ( DV7(2), -0.1645663574562769D0, 1D-12,
+     :           'sla_DVXV', 'Y', STATUS )
+      CALL VVD ( DV7(3), -0.5093390925544726D0, 1D-12,
+     :           'sla_DVXV', 'Z', STATUS )
+
+      END
+
+      SUBROUTINE T_ZD ( STATUS )
+*+
+*  - - - - -
+*   T _ Z D
+*  - - - - -
+*
+*  Test sla_ZD routine.
+*
+*  Returned:
+*     STATUS    LOGICAL     .TRUE. = success, .FALSE. = fail
+*
+*  Called: VVD, sla_ZD.
+*
+*  Last revision:   22 October 2005
+*
+*  Copyright CLRC/Starlink.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      LOGICAL STATUS
+
+      DOUBLE PRECISION sla_ZD
+
+
+      CALL VVD ( sla_ZD ( -1.023D0, -0.876D0, -0.432D0 ),
+     :           0.8963914139430839D0, 1D-12, 'sla_ZD', ' ', STATUS )
+
+      END
diff --git a/slalib.h b/slalib.h
new file mode 100644
index 0000000000000000000000000000000000000000..4d9023da03af4510117b71a7d07f9f5a09a3c95d
--- /dev/null
+++ b/slalib.h
@@ -0,0 +1,509 @@
+#ifndef SLALIBHDEF
+#define SLALIBHDEF
+/*
+**  Author:
+**    Patrick Wallace  (ptw@tpsoft.demon.co.uk)
+**
+**  License:
+**    This program is free software; you can redistribute it and/or modify
+**    it under the terms of the GNU General Public License as published by
+**    the Free Software Foundation; either version 2 of the License, or
+**    (at your option) any later version.
+**
+**    This program is distributed in the hope that it will be useful,
+**    but WITHOUT ANY WARRANTY; without even the implied warranty of
+**    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+**    GNU General Public License for more details.
+**
+**    You should have received a copy of the GNU General Public License
+**    along with this program; if not, write to the Free Software 
+**    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  
+**    USA.
+**
+**  Last revision:   10 December 2002
+**
+*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <math.h>
+
+void slaAddet ( double rm, double dm, double eq, double *rc, double *dc );
+
+void slaAfin ( char *string, int *iptr, float *a, int *j );
+
+double slaAirmas ( double zd );
+
+void slaAltaz ( double ha, double dec, double phi,
+                double *az, double *azd, double *azdd,
+                double *el, double *eld, double *eldd,
+                double *pa, double *pad, double *padd );
+
+void slaAmp ( double ra, double da, double date, double eq,
+              double *rm, double *dm );
+
+void slaAmpqk ( double ra, double da, double amprms[21],
+                double *rm, double *dm );
+
+void slaAop ( double rap, double dap, double date, double dut,
+              double elongm, double phim, double hm, double xp,
+              double yp, double tdk, double pmb, double rh,
+              double wl, double tlr,
+              double *aob, double *zob, double *hob,
+              double *dob, double *rob );
+
+void slaAoppa ( double date, double dut, double elongm, double phim,
+                double hm, double xp, double yp, double tdk, double pmb,
+                double rh, double wl, double tlr, double aoprms[14] );
+
+void slaAoppat ( double date, double aoprms[14] );
+
+void slaAopqk ( double rap, double dap, double aoprms[14],
+                double *aob, double *zob, double *hob,
+                double *dob, double *rob );
+
+void slaAtmdsp ( double tdk, double pmb, double rh, double wl1,
+                 double a1, double b1, double wl2, double *a2, double *b2 );
+
+void slaAv2m ( float axvec[3], float rmat[3][3] );
+
+float slaBear ( float a1, float b1, float a2, float b2 );
+
+void slaCaf2r ( int ideg, int iamin, float asec, float *rad, int *j );
+
+void slaCaldj ( int iy, int im, int id, double *djm, int *j );
+
+void slaCalyd ( int iy, int im, int id, int *ny, int *nd, int *j );
+
+void slaCc2s ( float v[3], float *a, float *b );
+
+void slaCc62s ( float v[6], float *a, float *b, float *r,
+                float *ad, float *bd, float *rd );
+
+void slaCd2tf ( int ndp, float days, char *sign, int ihmsf[4] );
+
+void slaCldj ( int iy, int im, int id, double *djm, int *j );
+
+void slaClyd ( int iy, int im, int id, int *ny, int *nd, int *jstat );
+
+void slaCombn ( int nsel, int ncand, int list[], int *j );
+
+void slaCr2af ( int ndp, float angle, char *sign, int idmsf[4] );
+
+void slaCr2tf ( int ndp, float angle, char *sign, int ihmsf[4] );
+
+void slaCs2c ( float a, float b, float v[3] );
+
+void slaCs2c6 ( float a, float b, float r, float ad,
+                float bd, float rd, float v[6] );
+
+void slaCtf2d ( int ihour, int imin, float sec, float *days, int *j );
+
+void slaCtf2r ( int ihour, int imin, float sec, float *rad, int *j );
+
+void slaDaf2r ( int ideg, int iamin, double asec, double *rad, int *j );
+
+void slaDafin ( char *string, int *iptr, double *a, int *j );
+
+double slaDat ( double dju );
+
+void slaDav2m ( double axvec[3], double rmat[3][3] );
+
+double slaDbear ( double a1, double b1, double a2, double b2 );
+
+void slaDbjin ( char *string, int *nstrt,
+                double *dreslt, int *jf1, int *jf2 );
+
+void slaDc62s ( double v[6], double *a, double *b, double *r,
+                double *ad, double *bd, double *rd );
+
+void slaDcc2s ( double v[3], double *a, double *b );
+
+void slaDcmpf ( double coeffs[6], double *xz, double *yz, double *xs,
+                double *ys, double *perp, double *orient );
+
+void slaDcs2c ( double a, double b, double v[3] );
+
+void slaDd2tf ( int ndp, double days, char *sign, int ihmsf[4] );
+
+void slaDe2h ( double ha, double dec, double phi,
+               double *az, double *el );
+
+void slaDeuler ( char *order, double phi, double theta, double psi,
+                 double rmat[3][3] );
+
+void slaDfltin ( char *string, int *nstrt, double *dreslt, int *jflag );
+
+void slaDh2e ( double az, double el, double phi, double *ha, double *dec);
+
+void slaDimxv ( double dm[3][3], double va[3], double vb[3] );
+
+void slaDjcal ( int ndp, double djm, int iymdf[4], int *j );
+
+void slaDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j );
+
+void slaDm2av ( double rmat[3][3], double axvec[3] );
+
+void slaDmat ( int n, double *a, double *y, double *d, int *jf, int *iw );
+
+void slaDmoon ( double date, double pv[6] );
+
+void slaDmxm ( double a[3][3], double b[3][3], double c[3][3] );
+
+void slaDmxv ( double dm[3][3], double va[3], double vb[3] );
+
+double slaDpav ( double v1[3], double v2[3] );
+
+void slaDr2af ( int ndp, double angle, char *sign, int idmsf[4] );
+
+void slaDr2tf ( int ndp, double angle, char *sign, int ihmsf[4] );
+
+double slaDrange ( double angle );
+
+double slaDranrm ( double angle );
+
+void slaDs2c6 ( double a, double b, double r, double ad, double bd,
+                double rd, double v[6] );
+
+void slaDs2tp ( double ra, double dec, double raz, double decz,
+                double *xi, double *eta, int *j );
+
+double slaDsep ( double a1, double b1, double a2, double b2 );
+
+double slaDsepv ( double v1[3], double v2[3] );
+
+double slaDt ( double epoch );
+
+void slaDtf2d ( int ihour, int imin, double sec, double *days, int *j );
+
+void slaDtf2r ( int ihour, int imin, double sec, double *rad, int *j );
+
+void slaDtp2s ( double xi, double eta, double raz, double decz,
+                double *ra, double *dec );
+
+void slaDtp2v ( double xi, double eta, double v0[3], double v[3] );
+
+void slaDtps2c ( double xi, double eta, double ra, double dec,
+                 double *raz1, double *decz1,
+                 double *raz2, double *decz2, int *n );
+
+void slaDtpv2c ( double xi, double eta, double v[3],
+                 double v01[3], double v02[3], int *n );
+
+double slaDtt ( double dju );
+
+void slaDv2tp ( double v[3], double v0[3], double *xi, double *eta, int *j );
+
+double slaDvdv ( double va[3], double vb[3] );
+
+void slaDvn ( double v[3], double uv[3], double *vm );
+
+void slaDvxv ( double va[3], double vb[3], double vc[3] );
+
+void slaE2h ( float ha, float dec, float phi, float *az, float *el );
+
+void slaEarth ( int iy, int id, float fd, float posvel[6] );
+
+void slaEcleq ( double dl, double db, double date, double *dr, double *dd );
+
+void slaEcmat ( double date, double rmat[3][3] );
+
+void slaEcor ( float rm, float dm, int iy, int id, float fd,
+               float *rv, float *tl );
+
+void slaEg50 ( double dr, double dd, double *dl, double *db );
+
+void slaEl2ue ( double date, int jform, double epoch, double orbinc,
+                double anode, double perih, double aorq, double e,
+                double aorl, double dm, double u[], int *jstat );
+
+double slaEpb ( double date );
+
+double slaEpb2d ( double epb );
+
+double slaEpco ( char k0, char k, double e );
+
+double slaEpj ( double date );
+
+double slaEpj2d ( double epj );
+
+void slaEqecl ( double dr, double dd, double date, double *dl, double *db );
+
+double slaEqeqx ( double date );
+
+void slaEqgal ( double dr, double dd, double *dl, double *db );
+
+void slaEtrms ( double ep, double ev[3] );
+
+void slaEuler ( char *order, float phi, float theta, float psi,
+                float rmat[3][3] );
+
+void slaEvp ( double date, double deqx,
+              double dvb[3], double dpb[3],
+              double dvh[3], double dph[3] );
+
+void slaFitxy ( int itype, int np, double xye[][2], double xym[][2],
+                double coeffs[6], int *j );
+
+void slaFk425 ( double r1950, double d1950, double dr1950,
+                double dd1950, double p1950, double v1950,
+                double *r2000, double *d2000, double *dr2000,
+                double *dd2000, double *p2000, double *v2000 );
+
+void slaFk45z ( double r1950, double d1950, double bepoch,
+                double *r2000, double *d2000 );
+
+void slaFk524 ( double r2000, double d2000, double dr2000,
+                double dd2000, double p2000, double v2000,
+                double *r1950, double *d1950, double *dr1950,
+                double *dd1950, double *p1950, double *v1950 );
+
+void slaFk52h ( double r5, double d5, double dr5, double dd5,
+                double *dr, double *dh, double *drh, double *ddh );
+
+void slaFk54z ( double r2000, double d2000, double bepoch,
+                double *r1950, double *d1950,
+                double *dr1950, double *dd1950 );
+
+void slaFk5hz ( double r5, double d5, double epoch,
+                double *rh, double *dh );
+
+void slaFlotin ( char *string, int *nstrt, float *reslt, int *jflag );
+
+void slaGaleq ( double dl, double db, double *dr, double *dd );
+
+void slaGalsup ( double dl, double db, double *dsl, double *dsb );
+
+void slaGe50 ( double dl, double db, double *dr, double *dd );
+
+void slaGeoc ( double p, double h, double *r, double *z );
+
+double slaGmst ( double ut1 );
+
+double slaGmsta ( double date, double ut1 );
+
+void slaH2e ( float az, float el, float phi, float *ha, float *dec );
+
+void slaH2fk5 ( double dr, double dh, double drh, double ddh,
+                double *r5, double *d5, double *dr5, double *dd5 );
+
+void slaHfk5z ( double rh, double dh, double epoch,
+                double *r5, double *d5, double *dr5, double *dd5 );
+
+void slaImxv ( float rm[3][3], float va[3], float vb[3] );
+
+void slaInt2in ( char *string, int *nstrt, int *ireslt, int *jflag );
+
+void slaIntin ( char *string, int *nstrt, long *ireslt, int *jflag );
+
+void slaInvf ( double fwds[6], double bkwds[6], int *j );
+
+void slaKbj ( int jb, double e, char *k, int *j );
+
+void slaM2av ( float rmat[3][3], float axvec[3] );
+
+void slaMap ( double rm, double dm, double pr, double pd,
+              double px, double rv, double eq, double date,
+              double *ra, double *da );
+
+void slaMappa ( double eq, double date, double amprms[21] );
+
+void slaMapqk ( double rm, double dm, double pr, double pd,
+                double px, double rv, double amprms[21],
+                double *ra, double *da );
+
+void slaMapqkz ( double rm, double dm, double amprms[21],
+                 double *ra, double *da );
+
+void slaMoon ( int iy, int id, float fd, float posvel[6] );
+
+void slaMxm ( float a[3][3], float b[3][3], float c[3][3] );
+
+void slaMxv ( float rm[3][3], float va[3], float vb[3] );
+
+void slaNut ( double date, double rmatn[3][3] );
+
+void slaNutc ( double date, double *dpsi, double *deps, double *eps0 );
+
+void slaNutc80 ( double date, double *dpsi, double *deps, double *eps0 );
+
+void slaOap ( char *type, double ob1, double ob2, double date,
+              double dut, double elongm, double phim, double hm,
+              double xp, double yp, double tdk, double pmb,
+              double rh, double wl, double tlr,
+              double *rap, double *dap );
+
+void slaOapqk ( char *type, double ob1, double ob2, double aoprms[14],
+                double *rap, double *dap );
+
+void slaObs ( int n, char *c, char *name, double *w, double *p, double *h );
+
+double slaPa ( double ha, double dec, double phi );
+
+double slaPav ( float v1[3], float v2[3] );
+
+void slaPcd ( double disco, double *x, double *y );
+
+void slaPda2h ( double p, double d, double a,
+                double *h1, int *j1, double *h2, int *j2 );
+
+void slaPdq2h ( double p, double d, double q,
+                double *h1, int *j1, double *h2, int *j2 );
+
+void slaPermut ( int n, int istate[], int iorder[], int *j );
+
+void slaPertel (int jform, double date0, double date1,
+                double epoch0, double orbi0, double anode0,
+                double perih0, double aorq0, double e0, double am0,
+                double *epoch1, double *orbi1, double *anode1,
+                double *perih1, double *aorq1, double *e1, double *am1,
+                int *jstat );
+
+void slaPertue ( double date, double u[], int *jstat );
+
+void slaPlanel ( double date, int jform, double epoch, double orbinc,
+                 double anode, double perih, double aorq,  double e,
+                 double aorl, double dm, double pv[6], int *jstat );
+
+void slaPlanet ( double date, int np, double pv[6], int *j );
+
+void slaPlante ( double date, double elong, double phi, int jform,
+                 double epoch, double orbinc, double anode, double perih,
+                 double aorq, double e, double aorl, double dm,
+                 double *ra, double *dec, double *r, int *jstat );
+
+void slaPlantu ( double date, double elong, double phi, double u[],
+                 double *ra, double *dec, double *r, int *jstat );
+
+void slaPm ( double r0, double d0, double pr, double pd,
+             double px, double rv, double ep0, double ep1,
+             double *r1, double *d1 );
+
+void slaPolmo ( double elongm, double phim, double xp, double yp,
+                double *elong, double *phi, double *daz );
+
+void slaPrebn ( double bep0, double bep1, double rmatp[3][3] );
+
+void slaPrec ( double ep0, double ep1, double rmatp[3][3] );
+
+void slaPrecl ( double ep0, double ep1, double rmatp[3][3] );
+
+void slaPreces ( char sys[3], double ep0, double ep1,
+                 double *ra, double *dc );
+
+void slaPrenut ( double epoch, double date, double rmatpn[3][3] );
+
+void slaPv2el ( double pv[], double date, double pmass, int jformr,
+                int *jform, double *epoch, double *orbinc,
+                double *anode, double *perih, double *aorq, double *e,
+                double *aorl, double *dm, int *jstat );
+
+void slaPv2ue ( double pv[], double date, double pmass,
+                double u[], int *jstat );
+
+void slaPvobs ( double p, double h, double stl, double pv[6] );
+
+void slaPxy ( int np, double xye[][2], double xym[][2],
+              double coeffs[6],
+              double xyp[][2], double *xrms, double *yrms, double *rrms );
+
+float slaRange ( float angle );
+
+float slaRanorm ( float angle );
+
+double slaRcc ( double tdb, double ut1, double wl, double u, double v );
+
+void slaRdplan ( double date, int np, double elong, double phi,
+                 double *ra, double *dec, double *diam );
+
+void slaRefco ( double hm, double tdk, double pmb, double rh,
+                double wl, double phi, double tlr, double eps,
+                double *refa, double *refb );
+
+void slaRefcoq ( double tdk, double pmb, double rh, double wl,
+                double *refa, double *refb );
+
+void slaRefro ( double zobs, double hm, double tdk, double pmb,
+                double rh, double wl, double phi, double tlr, double eps,
+                double *ref );
+
+void slaRefv ( double vu[3], double refa, double refb, double vr[3] );
+
+void slaRefz ( double zu, double refa, double refb, double *zr );
+
+float slaRverot ( float phi, float ra, float da, float st );
+
+float slaRvgalc ( float r2000, float d2000 );
+
+float slaRvlg ( float r2000, float d2000 );
+
+float slaRvlsrd ( float r2000, float d2000 );
+
+float slaRvlsrk ( float r2000, float d2000 );
+
+void slaS2tp ( float ra, float dec, float raz, float decz,
+               float *xi, float *eta, int *j );
+
+float slaSep ( float a1, float b1, float a2, float b2 );
+
+float slaSepv ( float v1[3], float v2[3] );
+
+void slaSmat ( int n, float *a, float *y, float *d, int *jf, int *iw );
+
+void slaSubet ( double rc, double dc, double eq,
+                double *rm, double *dm );
+
+void slaSupgal ( double dsl, double dsb, double *dl, double *db );
+
+void slaSvd ( int m, int n, int mp, int np,
+              double *a, double *w, double *v, double *work,
+              int *jstat );
+
+void slaSvdcov ( int n, int np, int nc,
+                 double *w, double *v, double *work, double *cvm );
+
+void slaSvdsol ( int m, int n, int mp, int np,
+                 double *b, double *u, double *w, double *v,
+                 double *work, double *x );
+
+void slaTp2s ( float xi, float eta, float raz, float decz,
+               float *ra, float *dec );
+
+void slaTp2v ( float xi, float eta, float v0[3], float v[3] );
+
+void slaTps2c ( float xi, float eta, float ra, float dec,
+                float *raz1, float *decz1,
+                float *raz2, float *decz2, int *n );
+
+void slaTpv2c ( float xi, float eta, float v[3],
+                float v01[3], float v02[3], int *n );
+
+void slaUe2el ( double u[], int jformr,
+                int *jform, double *epoch, double *orbinc,
+                double *anode, double *perih, double *aorq, double *e,
+                double *aorl, double *dm, int *jstat );
+
+void slaUe2pv ( double date, double u[], double pv[], int *jstat );
+
+void slaUnpcd ( double disco, double *x, double *y );
+
+void slaV2tp ( float v[3], float v0[3], float *xi, float *eta, int *j );
+
+float slaVdv ( float va[3], float vb[3] );
+
+void slaVn ( float v[3], float uv[3], float *vm );
+
+void slaVxv ( float va[3], float vb[3], float vc[3] );
+
+void slaXy2xy ( double x1, double y1, double coeffs[6],
+                double *x2, double *y2 );
+
+double slaZd ( double ha, double dec, double phi );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/smat.f b/smat.f
new file mode 100644
index 0000000000000000000000000000000000000000..3966a7462faed204f76e992fc0309633b7a57b9c
--- /dev/null
+++ b/smat.f
@@ -0,0 +1,158 @@
+      SUBROUTINE sla_SMAT (N, A, Y, D, JF, IW)
+*+
+*     - - - - -
+*      S M A T
+*     - - - - -
+*
+*  Matrix inversion & solution of simultaneous equations
+*  (single precision)
+*
+*  For the set of n simultaneous equations in n unknowns:
+*     A.Y = X
+*
+*  where:
+*     A is a non-singular N x N matrix
+*     Y is the vector of N unknowns
+*     X is the known vector
+*
+*  SMATRX computes:
+*     the inverse of matrix A
+*     the determinant of matrix A
+*     the vector of N unknowns
+*
+*  Arguments:
+*
+*     symbol  type dimension           before              after
+*
+*       N      int                 no. of unknowns       unchanged
+*       A      real  (N,N)             matrix             inverse
+*       Y      real   (N)              vector            solution
+*       D      real                       -             determinant
+*     * JF     int                        -           singularity flag
+*       IW     int    (N)                 -              workspace
+*
+*  *  JF is the singularity flag.  If the matrix is non-singular,
+*    JF=0 is returned.  If the matrix is singular, JF=-1 & D=0.0 are
+*    returned.  In the latter case, the contents of array A on return
+*    are undefined.
+*
+*  Algorithm:
+*     Gaussian elimination with partial pivoting.
+*
+*  Speed:
+*     Very fast.
+*
+*  Accuracy:
+*     Fairly accurate - errors 1 to 4 times those of routines optimised
+*     for accuracy.
+*
+*  Note:  replaces the obsolete sla_SMATRX routine.
+*
+*  P.T.Wallace   Starlink   10 September 1990
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER N
+      REAL A(N,N),Y(N),D
+      INTEGER JF
+      INTEGER IW(N)
+
+      REAL SFA
+      PARAMETER (SFA=1E-20)
+
+      INTEGER K,IMX,I,J,NP1MK,KI
+      REAL AMX,T,AKK,YK,AIK
+
+
+      JF=0
+      D=1.0
+      DO K=1,N
+         AMX=ABS(A(K,K))
+         IMX=K
+         IF (K.NE.N) THEN
+            DO I=K+1,N
+               T=ABS(A(I,K))
+               IF (T.GT.AMX) THEN
+                  AMX=T
+                  IMX=I
+               END IF
+            END DO
+         END IF
+         IF (AMX.LT.SFA) THEN
+            JF=-1
+         ELSE
+            IF (IMX.NE.K) THEN
+               DO J=1,N
+                  T=A(K,J)
+                  A(K,J)=A(IMX,J)
+                  A(IMX,J)=T
+               END DO
+               T=Y(K)
+               Y(K)=Y(IMX)
+               Y(IMX)=T
+               D=-D
+            END IF
+            IW(K)=IMX
+            AKK=A(K,K)
+            D=D*AKK
+            IF (ABS(D).LT.SFA) THEN
+               JF=-1
+            ELSE
+               AKK=1.0/AKK
+               A(K,K)=AKK
+               DO J=1,N
+                  IF (J.NE.K) A(K,J)=A(K,J)*AKK
+               END DO
+               YK=Y(K)*AKK
+               Y(K)=YK
+               DO I=1,N
+                  AIK=A(I,K)
+                  IF (I.NE.K) THEN
+                     DO J=1,N
+                        IF (J.NE.K) A(I,J)=A(I,J)-AIK*A(K,J)
+                     END DO
+                     Y(I)=Y(I)-AIK*YK
+                  END IF
+               END DO
+               DO I=1,N
+                  IF (I.NE.K) A(I,K)=-A(I,K)*AKK
+               END DO
+            END IF
+         END IF
+      END DO
+      IF (JF.NE.0) THEN
+         D=0.0
+      ELSE
+         DO K=1,N
+            NP1MK=N+1-K
+            KI=IW(NP1MK)
+            IF (NP1MK.NE.KI) THEN
+               DO I=1,N
+                  T=A(I,NP1MK)
+                  A(I,NP1MK)=A(I,KI)
+                  A(I,KI)=T
+               END DO
+            END IF
+         END DO
+      END IF
+      END
diff --git a/stamp-h1 b/stamp-h1
new file mode 100644
index 0000000000000000000000000000000000000000..4547fe1b5efa99ebbf20e1fa55fdbd528abd3a97
--- /dev/null
+++ b/stamp-h1
@@ -0,0 +1 @@
+timestamp for config.h
diff --git a/subet.f b/subet.f
new file mode 100644
index 0000000000000000000000000000000000000000..461a6bce8cd493f26f42c1db376751cbc178a509
--- /dev/null
+++ b/subet.f
@@ -0,0 +1,83 @@
+      SUBROUTINE sla_SUBET (RC, DC, EQ, RM, DM)
+*+
+*     - - - - - -
+*      S U B E T
+*     - - - - - -
+*
+*  Remove the E-terms (elliptic component of annual aberration)
+*  from a pre IAU 1976 catalogue RA,Dec to give a mean place
+*  (double precision)
+*
+*  Given:
+*     RC,DC     dp     RA,Dec (radians) with E-terms included
+*     EQ        dp     Besselian epoch of mean equator and equinox
+*
+*  Returned:
+*     RM,DM     dp     RA,Dec (radians) without E-terms
+*
+*  Called:
+*     sla_ETRMS, sla_DCS2C, sla_,DVDV, sla_DCC2S, sla_DRANRM
+*
+*  Explanation:
+*     Most star positions from pre-1984 optical catalogues (or
+*     derived from astrometry using such stars) embody the
+*     E-terms.  This routine converts such a position to a
+*     formal mean place (allowing, for example, comparison with a
+*     pulsar timing position).
+*
+*  Reference:
+*     Explanatory Supplement to the Astronomical Ephemeris,
+*     section 2D, page 48.
+*
+*  P.T.Wallace   Starlink   10 May 1990
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION RC,DC,EQ,RM,DM
+
+      DOUBLE PRECISION sla_DRANRM,sla_DVDV
+      DOUBLE PRECISION A(3),V(3),F
+
+      INTEGER I
+
+
+
+*  E-terms
+      CALL sla_ETRMS(EQ,A)
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(RC,DC,V)
+
+*  Include the E-terms
+      F=1D0+sla_DVDV(V,A)
+      DO I=1,3
+         V(I)=F*V(I)-A(I)
+      END DO
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V,RM,DM)
+
+*  Bring RA into conventional range
+      RM=sla_DRANRM(RM)
+
+      END
diff --git a/sun67.htx_tar b/sun67.htx_tar
new file mode 100644
index 0000000000000000000000000000000000000000..742ca571e1b04e7a1c0aa516b44fd06091228087
Binary files /dev/null and b/sun67.htx_tar differ
diff --git a/sun67.ps b/sun67.ps
new file mode 100644
index 0000000000000000000000000000000000000000..f4d811619322f3acb2f1c8db1c710b6330225528
--- /dev/null
+++ b/sun67.ps
@@ -0,0 +1,16439 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
+%%Title: sun67.dvi
+%%Pages: 224
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o sun67.ps sun67.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2007.06.27:0143
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+TeXDict begin 39158280 55380996 1000 600 600 (sun67.dvi)
+@start
+%DVIPSBitmapFont: Fa cmtt10 10 35
+/Fa 35 115 df<147814FCAF007FB612F0B712F8A46C15F0C700FCC7FCAF147825267DAB
+2C>43 D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>46
+D<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB5
+12E0B612F0A36C14E01C3477B32C>49 D<EB0FF890387FFF8048B512E00007804814FC39
+1FF80FFE393FE001FF903880007F48C7EA3F80007E141F00FE15C0150F6C15E01507A312
+7E123CC8FCA2150F16C0151F1680153F16005D15FE4A5A14034A5A4A5A4A5A4A5AECFF80
+4948C7FC495A495A495AEB3FE0EB7F8049C8FC485A4848EB03C04848EB07E0EA1FE0485A
+48B6FCB7FCA36C15C023347CB32C>I<EB0FFC90387FFF8048B512E0000714F84880391F
+F807FEEBC0004848137F6D7F1680151FA26C5A6CC7FCC8FC153F16005D15FE14014A5AEC
+1FF890381FFFF0495BA215F86D7F90380007FEEC00FF81ED3F80ED1FC0150FA216E01507
+A2123C127EB4FC150F16C0A248141F007FEC3F806DEB7F006C6C5B391FF807FE6CB55A6C
+5C6C14E0C66C1380D90FFCC7FC23357CB32C>I<14FE497EA4497FA214EFA2130781A214
+C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880
+A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E
+27347EB32C>65 D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2
+ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED
+07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016
+C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FF
+EBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC
+00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C1307
+16E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F0010013802535
+7DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0
+A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153F
+ED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712
+F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA516
+3C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7
+FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26
+337EB22C>I<D87FFEEBFFFCB54813FEA36C486C13FCD807E0EB0FC0B190B6FCA59038E0
+000FB3D87FFEEBFFFCB54813FEA36C486C13FC27337EB22C>72 D<007FB512F8B612FCA3
+6C14F839000FC000B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I<0107B5128049
+14C0A36D148090390003F000B3AF1218127EA2B4FCA24A5A48130F007F131F9038C07FC0
+6CB55A6C91C7FC6C5B000313F838007FC022347BB22C>I<387FFFE0B57EA36C5BD803F0
+C8FCB3AE16F0ED01F8A8007FB6FCB7FCA36C15F025337DB22C>76
+D<D87FE0EB0FFC486CEB1FFEA26D133F007F15FC000F15E001BC137BA4019E13F3A3EB9F
+01A2018F13E3A21483A2018713C314C7A201831383A214EFA201811303A214FFEB80FEA3
+147C14381400ACD87FF0EB1FFC486CEB3FFEA36C48EB1FFC27337EB22C>I<D87FF0EB7F
+FC486CEBFFFEA27F007FEC7FFCD807FEEB07C013DEA213DF13CFA2148013C714C0A213C3
+14E0A213C114F0A213C014F8A2147CA3143EA2141E141FA2140F1587A2140715C7A21403
+15E71401A215F71400A215FFD87FFC137F487E153FA26C48EB1F8027337EB22C>I<EB7F
+FF0003B512E0000F14F848804880EBE003EB800048C7127FA2007E80A300FE158048141F
+B3A86C143FA2007E1500A3007F5CA26C6C13FEEBF00790B5FC6C5C6C5C000314E0C66C90
+C7FC21357BB32C>I<007FB512C0B612F88115FF6C15802603F00013C0153FED0FE0ED07
+F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90B61280160015FC5D15C001
+F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<EB7FFF0003B512E0000F14F848804880
+EBF007EB800048C7127FA2007E80A300FE158048141FB3A7EB01F0EB03F800FE143F267E
+01FC1300A2EB00FE007F5C147FD83F8013FEEBF03F90B5FC6C5C6C5C000314E0C67E9038
+0007F0A26E7EA26E7EA26E7EA2157FA2153E21407BB32C>I<387FFFFCB67E15E015F86C
+803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC01FE140790B55A5D
+15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF00815E
+6C486D5AC8EA01F029347EB22C>I<007FB612FCB712FEA43AFC007E007EA70078153CC7
+1400B3AF90383FFFFCA2497F6D5BA227337EB22C>84 D<D87FF0EB07FF486C491380A36C
+486D1300001FC8127CA46C6C5CA76C6C495AA4143E147FA33A03E0FF83E0A214F7A201E1
+13C3A3000101E35BA201F113C701F313E7A314C1A200005DA201F713F71480A301FF13FF
+017F91C7FC4A7EA4013E133E29347FB22C>87 D<3801FFF0000713FE001F6D7E15E04880
+9038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB
+807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C
+14BF0001EBFE1F3A003FF007FC27247CA32C>97 D<903803FFE0011F13F8017F13FE48B5
+FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F6C140F
+6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E0010390C7FC
+21247AA32C>99 D<EC0FFE4A7EA380EC003FAAEB07F8EB3FFE90B512BF4814FF5A3807FC
+0F380FF00348487E497E48487F90C7FC007E80A212FE5AA87E007E5CA2007F5C6C7E5C6C
+6C5A380FF0073807FC1F6CB612FC6CECBFFE6C143FEB3FFC90390FF01FFC27337DB22C>
+I<EB03FE90381FFFC0017F13F048B57E48803907FE03FE390FF800FFD81FE0EB3F805B48
+48EB1FC090C7120F5A007E15E015075AB7FCA416C000FCC9FC7E127EA2127F6CEC03C06D
+EB07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B512806C1500013F13FC010F13F0
+0101138023247CA32C>I<EA7FF0487EA3127F1201AAEC1FE0EC7FFC9038F9FFFE01FB7F
+90B6FC9138F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01
+E0140029337FB22C>104 D<1307EB1FC0A2497EA36D5AA20107C7FC90C8FCA7387FFFC0
+80B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C>I<387FFFE0B57EA3
+7EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C>108
+D<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC
+000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0140029247FA32C>110
+D<EB07FCEB1FFF017F13C048B512F048803907FC07FC390FF001FE48486C7E0180133F00
+3F158090C7121F007EEC0FC0A348EC07E0A76C140F007E15C0A2007F141F6C15806D133F
+6C6CEB7F006D5B6C6C485A3907FC07FC6CB55A6C5C6C6C13C0011F90C7FCEB07FC23247C
+A32C>I<397FF01FE039FFF8FFF801FB13FE90B6FC6C158000019038F07FC09138801FE0
+91380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB
+07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F8EC3FC091C8FCAD387F
+FFE0B57EA36C5B27367FA32C>I<903903FC078090391FFF0FC0017F13CF48B512EF4814
+FF3807FE07380FF00148487E49137F4848133F90C7FC48141F127E150F5AA87E007E141F
+A26C143F7F6C6C137F6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C138F6D130FEB07F8
+90C7FCAD0203B5FC4A1480A36E140029367DA32C>I<D87FFEEB3FC0B53801FFF0020713
+F8021F13FC6C5B39003F7FE1ECFF019138FC00F84A13704A13005CA25C5CA391C8FCAF00
+7FB512E0B67EA36C5C26247EA32C>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fb cmr10 10 23
+/Fb 23 118 df<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA21207
+5B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203
+A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>40
+D<12C07E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7F
+A21480A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A2
+5BA2485A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>I<B712C016F816FE000190
+398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E177FA2EF3F8018C0171F18E0170F18
+F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F18C0EF3F80A2EF7F0017FE4C5A4C5A
+EE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397DB83F>68 D<013FB512E0A39039001F
+FC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C49
+C7FC380781FC3801FFF038007F80233B7DB82B>74 D<B5933807FFF86E5DA20001F0FC00
+2600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9C1FCEC0183A3D9C0FE
+EC0303A2027F1406A36E6C130CA36E6C1318A26E6C1330A36E6C1360A26E6C13C0A39139
+01FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80F
+FC6D48497EB500C00203B512F8A2ED018045397DB84C>77 D<EB1FE0EBFFFC3803E03F39
+07000F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EB
+FE00EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980
+063E18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A>97
+D<EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC003A2EA1F80
+123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F140E6D130C00
+0F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277DA525>99
+D<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0007F48
+48133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C131FA2
+6C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813C0283B
+7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380FC00048
+48137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14037F00
+1F14076C6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80903803
+FC0020277EA525>I<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213FCA239
+01F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<ED03F0
+90390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E010000F
+ECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38060FF0
+000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048C7EA0F
+F0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB0F80D8
+07E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>I<EA03F012FFA3120F12
+03B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25BA35BB3
+A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380C8FCAA
+EA03F012FFA312071203B3AA487EB512C0A312387EB717>I<EB01C0EB07F0EB0FF8A5EB
+07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A214E038
+FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA03F012FFA3120F1203B3B3AD48
+7EB512C0A3123A7EB917>108 D<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E0
+7E903BF1C01F83803F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2
+495CA3495CB3A3486C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000
+FFEB3FFCECF03F9039F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C
+497EB500C1B51280A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F84848
+137C48487F48487F4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9
+007E15F0A2007F14076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C
+13F890387E03F090381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF89038
+F1E07E9039F3801F803A0FF7000FC0D803FEEB07E049EB03F04914F849130116FC150016
+FEA3167FAA16FEA3ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F0090
+38F1E07E9038F0FFF8EC1FC091C8FCAB487EB512C0A328357EA42E>I<3807E01F00FFEB
+7FC09038E1E3E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45B
+B3A2487EB512F0A31C257EA421>114 D<EBFF03000313E7380F80FF381E003F487F487F
+00707F12F0A2807EA27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380
+EB007F141F00C0EB0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1
+FFF038C03F801A277DA521>I<1318A51338A31378A313F8120112031207001FB5FCB6FC
+A2D801F8C7FCB215C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220
+>I<D803F0EB07E000FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F00
+00EC77F86D9038E7FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fc cmti10 10 9
+/Fc 9 84 df<EE01C01603A21607160FA2161F83163FA2167F16FF16EF150116CFED038F
+A2ED070FA2150E151E151C1538A203707FA2EDE007A2EC01C014031580EC0700A2140EA2
+5CA25C027FB5FCA291B6FC9139E00007F849481303A2495A130791C7FC5B130E5BA25B13
+78137013F0EA03F8486C4A7EB56C48B512F0A3343C7BBB3E>65 D<0107B612FCEFFF8018
+C0903B000FF0001FF04BEB07F81703021F15FC17014B14FEA2023F1400A24B1301A2147F
+18FC92C7120318F84A140718F04AEC0FE0EF1FC00101ED3F80EF7F004AEB01FEEE07F849
+B612E05F9139F80007F0EE01FC01076E7E177F4AEC3F80A2010F16C0171F5CA2131F173F
+5CA2133FEF7F805C1800017F5D4C5A91C7485A5F49140FEE1FE0494A5A00014AB45AB748
+C7FC16F816C037397BB83A>I<DB03FE130E92393FFF801E92B5EAE03C913903FE01F091
+3A0FF000787CDA3FC0EB3CFC4AC7EA1FF802FE140FEB03FC49481407494815F049481403
+495A5C49C813E05B485A5B000317C0485AA2485A1880485A94C7FCA2485AA3127F5BA312
+FF90CBFCA41738A217784816707E17F06C5E16015F16036C6C4A5A94C7FC001F150E6D14
+1E000F5D6D5C6C6C495A6C6CEB03C0D801FEEB0F8027007F807EC8FC6DB45A010F13E001
+0090C9FC373D74BA3B>I<0103B512F8A390390007F8005DA2140FA25DA2141FA25DA214
+3FA25DA2147FA292C7FCA25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CA213
+1FA25CA2133FA25CA2137FA291C8FC497EB6FCA25C25397CB820>73
+D<0207B512F0A391390007FC006F5AA215075EA3150F5EA3151F5EA3153F5EA3157F93C7
+FCA35D5DA314015DA314035DA31407A25DA2140FA2003F5C5A141F485CA24A5A12FC00E0
+49C8FC14FE00705B495A6C485A381E0FC06CB4C9FCEA01F82C3B78B82C>I<0107B512FC
+A25E9026000FF8C7FC5D5D141FA25DA2143FA25DA2147FA292C8FCA25CA25CA21301A25C
+A21303A25CA21307A25CA2130F170C4A141CA2011F153C17384A1478A2013F157017F04A
+14E01601017F140317C091C71207160F49EC1F80163F4914FF000102071300B8FCA25E2E
+397BB834>76 D<902607FFF8923807FFF0614F13E0D9000FEFF0004F5AA2021F167FF1EF
+C0141DDA1CFCEC01CF023C16DF9538039F800238ED071FA20278ED0E3F97C7FC0270151C
+A202F04B5AF0707E14E0037E14E0010117FE4D485A02C0EC0380A20103ED070161028014
+0EA20107ED1C0305385B14006F137049160705E05B010EEC01C0A2011E913803800F6101
+1CEC0700A2013C020E131F4C5C1338ED1FB80178163F04F091C8FC01705CA201F04A5B18
+7E00015DD807F816FEB500C09039007FFFFC151E150E4C397AB84A>I<0107B612F817FF
+1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC5DA2023F15FEA25DA2147FEF03FC
+92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC3F80EFFE0001034A5AEE0FF091B6
+12C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25CA2133FA25CA2137FA291CAFCA25B
+A25B1201B512FCA337397BB838>80 D<92383FC00E913901FFF01C020713FC91391FC07E
+3C91393F001F7C027CEB0FF84A130749481303495A4948EB01F0A2495AA2011F15E091C7
+FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D6D7E6D14E0010080023F7F
+14079138007FFC150F15031501A21500A2167C120EA3001E15FC5EA3003E4A5AA24B5AA2
+007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F07FFFE0D8E01F138026C003
+FCC8FC2F3D7ABA2F>83 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fd cmti9 9 17
+/Fd 17 122 df<DB1FF013C09238FFFC010203EBFF03913A0FF00F878091393F8003CF91
+39FE0001EF4948EB00FFD903F01500D90FE080495A49488091C8123E137E13FE485A4848
+153CA2485AA248481538A2485A94C7FC123F5BA3127F90CBFCA412FEA2EE03C0A25F127E
+160794C7FC5E160E007F151E6C5D5E6C6C147016F06C6C495A6C6CEB07C06C6C49C8FC6C
+6C133E6CB413FC90387FFFF0011F13C0D903FEC9FC323775B437>67
+D<010FB51280A216009038003FC05DA292C7FCA25CA2147EA214FEA25CA21301A25CA213
+03A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCA25BA2137EA213FEA25B12
+01B512F8A25C21337BB21E>73 D<0107B512FE49ECFFC017F0903A003F8007F8EE01FCEE
+007E92C7127F835C1880147EA214FEEF7F005CA2010115FE5F4A13015F01034A5AEE0FC0
+4A495A04FEC7FC49B512F016C09138E003E0ED01F8010F6D7E167C4A137EA2131FA25CA2
+013F14FEA291C7FCA24913015E137EEF01C001FE150318805B00011607277FFFF0001400
+B5ECFE0EEE7E1CC9EA1FF8EE07E032357BB238>82 D<913901FC018091380FFF03023F13
+C791387E07EF903A01F801FF0049487E4A7F495A4948133E131F91C7FC5B013E143CA313
+7E1638A293C7FC137FA26D7E14E014FE90381FFFC06D13F86D7F01017F6D6C7E020F7F14
+00153F6F7E150FA4120EA2001E5D121CA2151F003C92C7FCA2003E143E5D127E007F5C6D
+485A9038C007E039F3F80FC000F0B5C8FC38E03FFC38C00FF029377AB42B>I<EB03F0EB
+0FF890383E1C6090387C0FF0EBF807EA01F0EA03E00007EB03E0EA0FC0A2381F800715C0
+EA3F00A2140F481480127EA2141F00FE14005A1506EC3F07EC3E0F150E147E007C141EEC
+FE1CEB01FCD83C03133C393E07BE38391F0E1E783907FC0FF03901F003C0202278A027>
+97 D<14FCEB07FF90381F078090383E03C0EBFC013801F8033803F0073807E00F13C012
+0F391F80070091C7FC48C8FCA35A127EA312FE5AA4007C14C0EC01E0A2EC03C06CEB0F80
+EC1F006C137C380F81F03803FFC0C648C7FC1B2278A023>99 D<EB03F8EB0FFEEB3E0F90
+38F807803801F003EA03E0EA07C0120FEA1F801407D83F0013005C007E133EEB03F8387F
+FFE04848C7FC00FCC8FCA45AA4EC0180EC03C0A2007CEB0780EC1F00003C133E6C13F838
+0F03E03807FF80D801FCC7FC1A2277A023>101 D<151FED7FC0EDF0E0020113F0EC03E3
+A2EC07C316E0EDC1C091380FC0005DA4141F92C7FCA45C143E90381FFFFEA3D9007EC7FC
+147CA414FC5CA513015CA413035CA413075CA3130FA25CA3131F91C8FCA35B133E1238EA
+7E3CA2EAFE7812FC485AEA78E0EA3FC0000FC9FC244582B418>I<EB0180EB07E0A2130F
+EB07C0EB038090C7FCABEA01F0EA03FCEA0F1E120E121C123C1238EA783E1270A2137EEA
+F07CEA60FCC65AA212015BA212035BA2000713C0EBC1E0000F13C01381A21383EB038013
+071400130E131EEA07F8EA01F013337AB118>105 D<133FEA07FF5A13FEEA007EA3137C
+A213FCA213F8A21201A213F0A21203A213E0A21207A213C0A2120FA21380A2121FA21300
+A25AA2123EA2127EA2127C1318EAFC1C133CEAF838A21378137012F013F0EAF8E01279EA
+3FC0EA0F00103579B314>108 D<2703C003F8137F3C0FF00FFE01FFC03C1E783C1F07C1
+E03C1C7CF00F8F01F03B3C3DE0079E0026383FC001FC7FD97F805B007001005B5E137ED8
+F0FC90380FC00100E05FD860F8148012000001021F130360491400A200034A1307604901
+3E130FF081800007027EEC83C0051F138049017C1403A2000F02FC1407053E130049495C
+EF1E0E001F01015D183C010049EB0FF0000E6D48EB03E03A227AA03F>I<3903C007F039
+0FF01FFC391E787C1E391C7CF01F393C3DE00F26383FC01380EB7F8000781300EA707EA2
+D8F0FC131F00E01500EA60F8120000015C153E5BA20003147E157C4913FCEDF818000715
+3C0201133801C013F0A2000F1578EDE070018014F016E0001FECE1C015E390C7EAFF0000
+0E143E26227AA02B>I<14FCEB07FF90381F07C090383E03E09038FC01F0EA01F83903F0
+00F8485A5B120F484813FCA248C7FCA214014814F8127EA2140300FE14F05AA2EC07E0A2
+007CEB0FC01580141FEC3F006C137E5C381F01F0380F83E03803FF80D800FCC7FC1E2278
+A027>I<3903C00FC0390FF03FF0391E78F078391C7DE03C393C3FC0FC00381380EB7F00
+007814F8D8707E13701500EAF0FC12E0EA60F812001201A25BA21203A25BA21207A25BA2
+120FA25BA2121FA290C8FC120E1E227AA020>114 D<EB03F0EB1FFCEB3C1EEB780FEBF0
+07EA01E0140F0003131F13C0A2EBE00414007FEBFF8014E06C13F06C13F8EB7FFC1307EB
+00FE147E143E123800FC133CA3147C00F013784813F0EAF001387803E0383C0F80381FFE
+00EA03F818227AA01F>I<1303EB0F80A3131FA21400A25BA2133EA2137EA2137C387FFF
+F8A2B5FC3800F800A21201A25BA21203A25BA21207A25BA2120FA25B1460001F13F014E0
+1300130114C01303001E1380EB07005BEA0F1EEA07F8EA01E015307AAE19>I<13F0D803
+FC1307D80F1E130F000E141F121C123C0038143FD8783E133E1270A2017E137ED8F07C13
+7CEA60FCC65A15FC000114F85BA21401000314F013E0A2140315E0EA07C0A20003130715
+C0EBE00F141F0001133F9038F07F8038007FEFEB1F8FEB001F1500A25C003E133E007E13
+7E147C5C007C5BEA7001495A38380780D83C1FC7FCEA0FFCEA07F020317AA025>121
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fe cmbx8 8 1
+/Fe 1 49 df<EB0FFC90387FFF8048B512E03903FC0FF03907F003F848486C7E48486C7E
+A2003F80A2497F007F1580A400FF15C0B0007F1580A46C6CEBFF00A2001F5CEBE001000F
+5C6C6C485A3903FC0FF06CB55A6C6C1380D90FFCC7FC222D7DAB29>48
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ff cmmi8 8 23
+/Ff 23 120 df<EB01FCEB0FFF90383F07C090387C03E03A01F801F00CEA03F03907E000
+F84848141C49EBFC18001F147C48C713381630481570007E156016E016C000FE147D48EC
+7F801600157EA2157CA2127C15FE0203130C6CEB073E6C011E131C3A0F81F81F383A03FF
+E00FF03A00FE0003C0261F7D9D2D>11 D<EB03FE90380FFFE090380E3FF0EB1C0F903818
+03E0EC00C01500131CA2131E131F6D7EA2806D7E8013036D7EEB0FFCEB3EFE13783801F0
+7E3803E07F48487EEA0F80A248487E5A123E127E127CA300FC131E48133EA3143C147CA2
+007813785C127C383C01E06C485A6C485A6CB4C7FCEA00FC1C307DAE1F>14
+D<90383FFFFCA2903800FE00A25CA21301A25CA21303A25CA21307A25CA2130FA25CA213
+1FA25CA2133FA291C7FCA25BA2137EA213FEA25BA21201A25BA21203B512E0A21E2D7DAC
+1F>73 D<000FB8FCA23B1FC003F8003F0100151F001C4A130E123C003801071406123000
+704A130EA20060010F140C12E0485CA2141FC715005DA2143FA292C8FCA25CA2147EA214
+FEA25CA21301A25CA21303A25CA21307A25C130F131F001FB512F0A2302D7FAC29>84
+D<EB07E0EB1FF890387C1CE0EBF80D3801F00F3803E007EA07C0120FD81F8013C0A2EA3F
+00140F481480127EA2141F00FE14005AA2EC3F02EC3E06A25AEC7E0E007CEBFE0C14FC01
+01131C393E07BE18391F0E1E38390FFC0FF03903F003C01F1F7D9D25>97
+D<13F8121FA21201A25BA21203A25BA21207A25BA2120FEBC7E0EB9FF8EBB83C381FF01E
+EBE01F13C09038800F80EA3F00A2123EA2007E131FA2127CA2143F00FC14005AA2147EA2
+147C14FC5C387801F01303495A383C0F806C48C7FCEA0FFCEA03F0192F7DAD1E>I<EB01
+F8EB0FFE90383E0780EB7C01D801F813C03803F0073807E00FEA0FC001801380121F48C8
+FCA25A127EA312FE5AA51560007C14E0EC01C0EC03806CEB0F00001E131C380F81F83807
+FFE0C648C7FC1B1F7D9D1F>I<EB03F8EB0FFE90383E0780EBF803D801F013C03803E001
+EA07C0000F1303D81F8013801407393F000F00141E387F01FCEBFFF091C7FC007EC8FC12
+FE5AA4127C156015E0EC01C06CEB0380EC0F006C131C380F81F83803FFE0C648C7FC1B1F
+7D9D21>101 D<131FEA03FFA2EA003FA2133EA2137EA2137CA213FCA25BA21201143F90
+38F1FFC09038F3C1F03803FF0001FC7F5BA2485A5BA25B000F13015D1380A2001F13035D
+1300140748ECC04016C0003E130F1580007E148191381F0180007C1403ED070000FCEB0F
+06151E48EB07F80070EB01E0222F7DAD29>104 D<1307EB0F80EB1FC0A2EB0F80EB0700
+90C7FCA9EA01E0EA07F8EA0E3CEA1C3E123812301270EA607EEAE07C12C013FC485A1200
+12015B12035BA21207EBC04014C0120F13801381381F01801303EB0700EA0F06131EEA07
+F8EA01F0122E7EAC18>I<15E0EC01F01403A3EC01C091C7FCA9147CEB03FE9038078F80
+EB0E07131C013813C01330EB700F0160138013E013C0EB801F13001500A25CA2143EA214
+7EA2147CA214FCA25CA21301A25CA21303A25CA2130700385BEAFC0F5C49C7FCEAF83EEA
+F0F8EA7FF0EA1F801C3B81AC1D>I<137CEA0FFCA21200A213F8A21201A213F0A21203A2
+13E0A21207A213C0A2120FA21380A2121FA21300A25AA2123EA2127EA2127CA2EAFC0813
+1812F8A21338133012F01370EAF860EA78E0EA3FC0EA0F000E2F7DAD15>108
+D<27078007F0137E3C1FE01FFC03FF803C18F0781F0783E03B3878E00F1E01263079C001
+B87F26707F8013B00060010013F001FE14E000E015C0485A4914800081021F130300015F
+491400A200034A13076049133E170F0007027EEC8080188149017C131F1801000F02FCEB
+3F03053E130049495C180E001F0101EC1E0C183C010049EB0FF0000E6D48EB03E0391F7E
+9D3E>I<3907C007E0391FE03FF83918F8783E393879E01E39307B801F38707F00126013
+FEEAE0FC12C05B00815C0001143E5BA20003147E157C5B15FC0007ECF8081618EBC00115
+F0000F1538913803E0300180147016E0001F010113C015E390C7EAFF00000E143E251F7E
+9D2B>I<EB01F8EB0FFF90383F078090387C03C0D801F813E03903F001F0EA07E0D80FC0
+13F8EB8000121F48C7FC14015A127EA2140300FE14F05AA2EC07E0A2EC0FC0A2007CEB1F
+801500143E6C5B6C485A380F83E03803FF80D800FCC7FC1D1F7D9D22>I<90387C01F890
+38FE07FE3901CF8E0F3A03879C0780D907B813C0000713F000069038E003E0EB0FC0000E
+1380120CA2D8081F130712001400A249130F16C0133EA2017EEB1F80A2017C14005D01FC
+133E5D15FC6D485A3901FF03E09038FB87C0D9F1FFC7FCEBF0FC000390C8FCA25BA21207
+A25BA2120FA2EAFFFCA2232B829D24>I<903807E03090381FF87090387C1CF0EBF80D38
+01F00F3903E007E0EA07C0000F1303381F800715C0EA3F00A248130F007E1480A300FE13
+1F481400A35C143E5A147E007C13FE5C1301EA3E07EA1F0E380FFCF8EA03F0C7FC13015C
+A313035CA21307A2EBFFFEA21C2B7D9D20>I<3807C01F390FF07FC0391CF8E0E0383879
+C138307B8738707F07EA607E13FC00E0EB03804848C7FCA2128112015BA21203A25BA212
+07A25BA2120FA25BA2121FA290C8FC120E1B1F7E9D20>I<EB07E0EB3FF8EB781EEBF006
+3801E0073803C00F141FA20007131E140CEBE00013F8EBFF806C13E06C13F06C13F8EB3F
+FC13011300147C0078133C12FCA2147C48137800E013F814F0386001E0387807C0381FFF
+00EA07F8181F7C9D21>I<130E131FA25BA2133EA2137EA2137CA213FCA2B512F8A23801
+F800A25BA21203A25BA21207A25BA2120FA25BA2001F1310143013001470146014E0381E
+01C0EB0380381F0700EA0F0EEA07FCEA01F0152B7EA919>I<EA01E0D807F8130ED80E3C
+131FD81C3E5B0038143E12301270D8607E137ED8E07C137C12C013FC484813FC00005C12
+015B140100035C13E0A2020313200007ECE06013C0A216E0020713C00003EB0FC09038E0
+1FC191383BE1803901F071E33A007FE0FF0090381F803C231F7E9D29>I<D801E01370D8
+07F813F8380E3C01D81C3E13FC1238003013000070147CEA607ED8E07C133812C013FC48
+5A0000143012015B1570000314605B15E015C01207EBC00115801403EC070000031306EB
+E00E00015BEBF07838007FE0EB1F801E1F7E9D22>I<D801E01570D807F890381C01F8D8
+0E3C133ED81C3E017E13FC0038147C003015000070167CD8607E01FC1378D8E07C491338
+12C013FC3880F8010000163000015C13F0020314700003166001E05BA217E00007010714
+C001C0EBC00117801603000316006D486C5A160E3A01F01DF01C3A00F838F83890397FF0
+7FF090390FC00FC02E1F7E9D33>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fg cmmi12 14.4 12
+/Fg 12 123 df<ED3FE0913801FFFC020F13FF91393FE03FC09139FF000FE0D901FC6D6C
+EB03C0D907F86D7E49486D6C148049488049480100140749486E140049C8FC48486F6C5A
+0003180E5B4848EEC01E000F043F131C193C4848173819784848177019F0007F604916C1
+6118C300FFEFC7805B06CFC7FC18DEA290C913FC6060A26060A56C16FF6D4A7F003F5DDC
+0F9F130E6C6CDA1F1F131E6C6CDA7C0F131C6C6CD901F8143C6C6C903A0FE007F078D801
+FE903AFF8003F8F83D007FFFFE0001FFF0011F01F06D13C0010390C8003FC7FC42357BB3
+4A>11 D<EF0FF8EF7FFF4CB512C0933907F00FF093390F8003F8043EC77E4C147E5EDB01
+E0804B5A4B48EC1F80A24BC8FC151E4B16C0A25D0370ED3F8015F05D14014B157F020317
+005D02075E92C95A4E5A5C020E4B5A61021E4B5A021C150FF01F80023C90267FF83FC7FC
+DA3801B512FE4B14F89338801FF0027890B57E0270ECFEFE0300EBF07E93C77E02F0824A
+6F7E180F8513014A150785A213035CA301078391C9FCA26149160F130EA3011E161F6113
+1CA2013C4C5AA2187F61017C4CC7FCA24D5A017E5E01FE4B5A01EE150701EF4B5A01E7ED
+1FC000016D4A5AD9C3C04AC8FC6EEB01FED9C1F0EB07F82603C0FCEB3FE0D9803FB51280
+020F49C9FC020313E0000790CCFC90CDFCA35A120EA3121E121CA3123C1238A312781270
+A312F0A2426B7ED342>I<ED0FFC92383FFFE092B512FE4A14FF913803E07F913807800F
+4B7E4A1301020EEB007E1718021E1400A3141FA36E7EA28181140781A26E7E81A26E7E81
+8082826F7EA26F7E4AB47E1407021F7F91387F8FFEECFE0F903803F807D907F07F49487E
+D91FC0148049487EEB7F005B48486D13C05B12034848147FA2485AA2485A163F123F5BA2
+1780127F49147FA3170048C8FCA25E5EA26C14015EA24B5AA26C4A5A6D5C150F001F5D6D
+495A6C6C49C7FC0007147ED803F85B6C6C485A6CB55A013F13C0010790C8FCEB00203057
+7CD434>14 D<013EEC0FF8D9FFC0EB7FFF00036D48B512C0903BC3F003F01FE03C0783F8
+0F800FF03C0F01FC1F0007F8000E023C1303001E6D4814FC001C5C6E5A003C5C00385CA2
+D8780390C7FC00705BA25CD8F007150718F800005BA2010F150FA24A15F0A2011F151FA2
+4A15E0A2013F153FA24A15C0A2017F157FA24A1580A201FF15FFA291C81300A2485DA249
+5DA200031503A2495DA216075B5FEA01E0C9120FA25FA2161FA25FA2163FA25FA2167FA2
+5FA216FFA294C7FCA35EA21678364D7DB33A>17 D<EB01FCECFF8015E09038001FF06E7E
+6E7E811403A28180A28280A282157FA282153FA282151FA282150FA2821507A2821503A2
+8281A28381A283167FA283163FA283167F16FF4B7FED03EFED07CF92380F8FFCED1F0715
+3E037E7FEDFC03EC01F8DA03F07F4A487EEC0FC0021F814A487E4AC7FC02FE814948147F
+495A0107824948143F495A4948814948141F49C8FC48834848150F485A48488248481507
+485A48488200FF1603498290C97E48701380007C177F39547AD244>21
+D<ED0380150793C8FCA7EEFFFEEFFF80033F14C09238FFE003020390B5128091260FF87F
+130091391FF01FFCDA7FE0C8FC4A5A495B4990C9FC495A5C495A131F5C133F5CA3137F5C
+A66D7EA36D7E130F9138F83FFE6DB67E0101816DEBC00392B55A010392C7FCD907E013FC
+4948C9FC013FCAFC137E5B485A5B1203485A485AA2485AA248CBFCA2127EA312FE5AA37E
+A37E7FA213E06C7E13FC6CB4FC6C13C014F86C13FF000314C06C14F86C6C13FE011FEBFF
+C0010714F0010014FC023F7F02077F020080153F15071501ED007F163FA2161FA24CC7FC
+14E002F8137E027C137C91383F80F891380FFFF002035BDA007FC8FC326B7DD233>24
+D<0103B812F8010F17FC133F5B90B9FC4818F84818E02907F800E000E0C7FC260FC00113
+01018013C0D81F005D003E1303003C15034814804813075A5FC7380F0007A35C141E160F
+143EA25CA302FC131F5C1301A3495AA20107815C130FA283495AA2133F83495A8301FF14
+0F91C7FCA2705A5B0138EC03C03E347CB242>I<120FEA3FC0EA7FE012FF13F0A213F8A3
+127F123FEA0F381200A513781370A313F013E0A2120113C0120313801207EA0F00121EA2
+5A5A12300D23768B21>59 D<EC1FF0EB3FFF495BA3EB007F5D143F147FA25DA314FF92C9
+FCA35B5CA313035CA313075CA3130F5CED03FE92381FFFC0011F017F13F09139E0FC07F8
+9139E3E003FC9139E7C001FED93FEFC7FC02DE8014FC5C495A5CA25C495AA291C8FC5E48
+5E5BA2160300035E5BA2160700075E5B160F5F120F49141F5FA2001F033F13074915C016
+7FEF800F003F170E4914FFEF001E181C007F173C494A13381878187000FF17F090C8EB01
+E093387E03C093383F0F804892381FFF00EE0FFC0078ED03F0385479D243>104
+D<DA3F80EB3F80DAFFE0EBFFE00103D9F80313F8903B0FC0FC07C0FC903B1F007E0F001E
+013CD93F1E137E4991389C01FF49ECBC0349EB1FF800014B5A485A4902E013FE120790C7
+003FEB03FC489238C000F0000E1700A2001E147FA2C85BA215FF93C8FCA35C5DA314035D
+A314074B1470A3020F15F0000F17E0D83FC0491301007F17C0021F140300FF1780023F14
+07EF0F00D9807B141E90260073F85B00FC01F1147C277801E0FC13F03B3E07C07E07E06C
+B4486CB45A270FFE000F90C7FCD801F8EB03F838357CB343>120
+D<EB0FE0D93FF815E0496CEC03F8D9F07E14073801E07F48486C140FD807806D14F0EA0F
+00000E137F001E161F001C17E0123C003813FF92C7123F007817C0EA70015C00F0167F01
+03168000005B13074A14FF1800130F5C5E011F5D5CA21603013F5D5CA21607017F5D5CA2
+160F5FA3161F5F163F013F147FA26E495A011F13036D6C5A903807F81F903A03FFFE7F80
+010013F8EC1FE091C712FF94C7FCA25D5EA2D807E0495A487E001F4A5A123F4B5A4B5A5E
+49495A018049C8FC003CC712FE4A5A6C495A6CEB0FF09038E03FC00003B5C9FCC613FCEB
+3FE0354C7DB339>I<DA07C0EB01C0DA3FF01303DA7FFC148049486C1307496DEB0F0049
+EC801E5F49ECE07C903A1FC03FFFF8DA00075B013E01005B013CEC01C0013814034C5A90
+C848C7FC161E5E5E5E4B5A4B5AED0F80031EC8FC5D5D5D4A5A4A5A4A5A021FC9FC143C5C
+5C495A494814184948143849C8FC011E15784915704915F0494A5A484814032603FFE049
+5A02FC131F489039FF80FF80D80F8090B5C7FC48487E001E6D5B486D5B486D13F000706D
+5B00F00101138048D9007EC8FC32357BB336>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fh cmsy10 14.4 4
+/Fh 4 34 df<007FBA12FEBCFCA36C19FE4805769F5D>0 D<0070EF038000F8EF07C06C
+170F6C171F007FEF3F806C6CEE7F006C6C16FE6C6C4B5A6C6C4B5A6C6C4B5A6C6C4B5A6C
+6C4B5A017F4B5A6D6C4AC7FC6D6C14FE6D6C495A6D6C495A6D6C495A6D6C495A6D6C495A
+027F495A6E6C48C8FC91381FC0FE91380FE1FC913807F3F86EB45A6E5B6E5B6F5A6FC9FC
+4B7E4B7E4A7F4A7F913807F3F891380FE1FC91381FC0FE91383F807F4A486C7E02FE6D7E
+49486D7E49486D7E49486D7E49486D7E49486D7E4948147F49C86C7E01FE6F7E48486F7E
+48486F7E48486F7E48486F7E48486F7E4848167F48CAEA3F8000FEEF1FC048170F481707
+0070EF03803A3B6FBA5D>2 D<EE0380160783B3B2007FBB12F8BC12FCA36C1AF8C9D807
+C0C9FCB3AF007FBB12F8BC12FCA36C1AF84E5179CF5D>6 D<1B1E1B1FA4881B0FA2881B
+07A2881B0388757EA2757E1C7EA288767E767E767E89F403FC767E9938007F80777EF51F
+F0007FBE12FEC01280A36CF5FE00D0EA1FF0F53FC0535AE201FEC7FC525AF407F065525A
+525A52C8FC1C7EA264515AA2515A641B0764A21B0F64A21B1F99C9FCA41B1E693F79BC78
+>33 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fi cmex10 10 3
+/Fi 3 114 df<EE01E01603EE07C0EE0F80161F1700163E5E5E15015E4B5A15074B5A5E
+151F4BC7FC153E157E5DA24A5A14035D14075D140F5D141F5D143F92C8FC5C147E14FE5C
+1301A25C13035C1307A25C130FA2495AA3495AA3137F91C9FCA25B5BA312015BA31203A2
+5BA21207A35BA2120FA35BA3121FA45BA2123FA75B127FAC90CAFC5AB3B3A27E7FAC123F
+7FA7121FA27FA4120FA37FA31207A27FA31203A27FA21201A37F1200A37F7FA280133FA3
+6D7EA36D7EA2130780A2130380130180A2130080147E147F8081141F81140F8114078114
+038114016E7EA2157E153E153F6F7E150F826F7E15036F7E821500167C82821780160FEE
+07C0EE03E016012BF86C8242>32 D<12F07E127C7E123F7E6C7E6C7E6C7E7F12016C7E7F
+137E133E133F6D7E130F806D7EA26D7E80130180130080147E147F8081141F81140F8114
+0781A2140381140181A2140081A2157FA36F7EA382151FA282150FA3821507A382A21503
+A282A31501A282A31500A382A482A21780A7163F17C0AC161F17E0B3B3A217C0163FAC17
+80167FA71700A25EA45EA31501A35EA21503A35EA21507A25EA3150F5EA3151F5EA2153F
+5EA34BC7FCA315FEA25D1401A25D14035D1407A25D140F5D141F5D143F92C8FC5C147E14
+FE5C13015C13035C495AA2495A5C131F49C9FC133E137E5B5B485A12035B485A485A48CA
+FC5A123E5A5A5A2BF87E8242>I<1B301B78A21BF8A21BF01A01A21BE01A03A21BC01A07
+A21B801A0FA21B0062A21A1E1A3EA21A3C1A7CA21A781AF8A262A21901A2621903A26219
+07A262190FA297C7FC61A2191E193EA2193C197CA2197819F8A2611801A2611803A261A2
+1807A261180FA296C8FC60A2181E183EA2183C187C131001301678017016F813F8600001
+16011203486C5E000F1603121DD838FE5E00701607126000C05FEA407F0000160FA26D6C
+92C9FC5FA2171E6D6C143EA2173C6D6C147CA2177817F86D7E5F16016D7E5F1603A26D6C
+5C1607A26D6C5C160FA294CAFC027F5BA2161EEC3F80163EA2163C91381FC07CA2167891
+380FE0F8A25E15E1EC07F15E15F3EC03FB5E15FFA26E5BA36E90CBFCA35D157EA2157C15
+3C15384D96788353>113 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fj cmti12 14.4 4
+/Fj 4 117 df<EA07C0EA1FF0123FEA7FF8A312FF13F0A2EA7FE013C0EA1F000D0C738B
+24>46 D<ED3FC0913801FFF8020F13FE91383FE07F91397F001F80D901FE130FD903F8EB
+07C0494813034948131F4948133F4948137F137F49C7FC485A17804848EC3F0000071508
+4991C7FC120FA2485AA2123F5BA3127F5BA4485AA5127FA2EE0180EE03C01607003FED0F
+80161FEE3F006C6C147E5E6C6CEB03F06C6CEB0FE06C6CEB3F802701FE03FEC7FC39007F
+FFF8011F13E0D907FEC8FC2A3574B336>99 D<ED7F80913807FFF0021F7F91387F80FE90
+3901FE003FD907F87F49481480D91FC0130F495A137F49C7FC485A485A0007151F491500
+000F5D49147E001F15FE4B5A4848EB07F0ED7FE091387FFF8048B548C7FC15E00280C8FC
+01C0C9FC12FF5BA590CAFCA66C1503EE0780160FEE1F006C6C5C167E001F5D6D495A000F
+EC07E06C6CEB1FC06C6C017FC7FC3901FC07FC6CB512F0013F13C0D907FCC8FC293573B3
+36>101 D<140F4A7E143FA3147F92C7FCA35C5CA313015CA313035CA313075CA2007FB6
+1280B7FC1600A226000FE0C7FC131F5CA3133F5CA3137F91C8FCA35B5BA312015BA31203
+5BA312075BA3000F143C5B157C1578121F4913F85D14014A5A01805B14074A5A92C7FC38
+0FC03E5C3807E1F86CB45A6C13C0D8007EC8FC214C75CA27>116
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fk cmsy6 6 1
+/Fk 1 49 df<EA01E0EA03F0A4EA07E0A213C0120FA21380A2EA1F00A2121EA2123E123C
+A25AA3127012F05A12600C1A7E9B12>48 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fl cmmi10 10.95 59
+/Fl 59 123 df<EC0FF0EC7FFE903801F81F903907E007C049486C6C13E0D93F80EBF001
+90267F000114C001FE14F84848EB00FC484815030007178049147E000FEE0700485A5F48
+48150E171E171C007F163C49153817785F00FF5E90C8127F5F5F94C7FCA248157EA2127E
+007F15FE15016C4A7E92390F3F03806C6C131E6C6C9038781F070007D901E014003B03F0
+1F800F8E3B00FFFE0007FCD91FE0EB01F033297CA73A>11 D<EE7F80923801FFE0923807
+80F892381E003C03387F03F0131F4A48EB0F804A5A5D4AC7EA07C0140E021E140F141C14
+3C023815805C171F5C180001015D4A143E5F010315FC4A495A4C5A01079038FFE7C00203
+EBFF80DB807EC7FC92B57E49C6EBC7C0010E90380003E0160183011E81011C1400A28313
+3C1338A313781370A301F01401495DA3000115035F16075F0003150F5F4C5A6D4AC7FC00
+07157E01785C0138495A6DEB03E0D80F0FEB0FC0270E07C07FC8FC903801FFF89038007F
+C0001E90CAFC121CA3123C1238A312781270A312F05AA432527EBF33>I<EC01C0EC0FFF
+023F13E0027913F0ECE03F903801C00FEC8007ED01E0010390C7FCA280130180A280A26D
+7E80A2147E147F6E7EA26E7E81140FEC7FF0903801F7F8EB07C790381F83FCEB3E03EB7C
+0101F87F12013803F000485AA24848137E485AA2123F90C7FCA25A127EA300FE147C5A15
+FCA25D1401A25D007C13035DA26C495A4A5A6C91C7FC6C131E6C6C5A3803E0783800FFE0
+EB3F8024427CC028>14 D<EC1FF8903801FFFC010713F890381FF000EB3F8001FEC7FC48
+5A485A485A120F485AA2485AA2485AA290B512C0B6FC150090C8FCA35AA7127E127F7EA2
+6C7E000F14703907C001F03903E003E03901F81F8039007FFE00EB0FF01E287CA625>I<
+EC01C014035DA5EDBFF0913801FFF8913803E03891380FFFF891381E3FE00238C7FC14F0
+495A495A495A49C8FC130E131E5B5B137013F0485AA2485A485AA248C9FCA25A121EA25A
+A3127C1278A312F8A25AA57EA47EA27E127F7F6C7E13F86CB4FC6C13C06C13F8000113FF
+6C6C13C0011F7F01037F9038007FF8140F14036E7E1400A2157C1578A35D131C6D485A90
+380783C06DB4C7FCEB007C25527CBE28>I<D801F0EB0FE0D803FCEB7FFC3A071F01F03E
+3A0E0F03801F001E90398F000F80001C139E003C01FC14C000385B5C38781FE012705CA2
+00F049131F013F1580000090C7FCA2163F5B017E1500A25E13FE49147EA216FE1201495C
+A215011203495CA215031207495CA21507120F495CEA0380C8120FA25EA2151FA25EA215
+3FA293C7FCA25DA2157EA3157C15382A3C7EA72D>I<15FCEC03FF91380F87C091383E03
+E0EC7C0102F813F01301903903F000F8495A010F14FC5C495A133F91C7FC4914FE13FEA2
+12015B12034913011207A25B000F15FC1503121F5BA21507003F15F890B6FCA33A7FC000
+0FF05BA2151F16E048C7FCA2ED3FC0A2481580157F1600A215FEA24A5AA24A5A007E5C14
+075D4A5A003E5C141F4AC7FC6C137E5C380F81F03807C3E03801FF80D8007EC8FC27417D
+BF2B>I<133F14E0EB07F0EB03FC13016D7EA3147FA26E7EA36E7EA36E7EA36E7EA36E7E
+A26E7EA36E7EA3157FA36F7E157F15FF4A7F5C913807CFE0EC0F8FEC1F0F91383E07F014
+7C14FC49486C7EEB03F0EB07E049486C7EEB1F80EB3F00496D7E13FE4848147F485A485A
+4848EC3F80485A123F4848EC1FC048C8FC4816E048150F48ED07F0007015032C407BBE35
+>21 D<EB01C0496C14E00107EC03F0A3010F1407A24A14E0A2011F140FA24A14C0A2013F
+141FA291C71380A249143FA2017E1500A201FE5CA249147EA2000115FE17074914FCA215
+010003160F923803F80EA200070207131E030F131C6D131F033C1338486C1370903AFF81
+E07C70903AC7FF803FE0903AC1FE000F80D81FC0C9FCA25BA2123FA290CAFCA25AA2127E
+A212FEA25AA35A1270303C7EA737>I<017FEC01C0D83FFFEC03E016075B1200160F17C0
+5B161F00011680163F491500A20003157EA2495C150100075D4B5A49495AA2000F4A5A4B
+5A4949C7FC157E001F147C5D49485AEC07E0003F495A4AC8FCEB003E14F848485AEB07C0
+D87E1FC9FC13FCEAFFE0138000F8CAFC2B287CA72D>I<EC01C014035DA5EDFFF04A13F8
+91383FE03891B512F8903901FC3FE0D907F8C7FC495A495A495A137F5C13FF91C8FCA25A
+5BA612007F7F90383F9FFC6DB47E903807E00E90380FFFFE90383E3FF80178C8FC5B485A
+485A485A48C9FCA2121E5AA25AA312F85AA37EA27E7E7E6C7E13E0EA3FF86CB4FC6C13C0
+6C13F8000113FE39007FFFC0010F13F001037F9038007FFCEC1FFE14031400157E153EA3
+153C010C137C010F1378903803C0F0903800FFC0023FC7FC25527EBE28>I<011FB612FE
+017F15FF48B8FC5A4816FE3B0FC03801C000EA1F00003E1403003C01785B4813705AECF0
+075AC712E0010191C7FCA25DEB03C0A313071480A2010F5BA2EB1F0082A2133EA2137E82
+5B150F0001815B120315075BC648EB038030287DA634>I<ED1FC0EDFFF0913803E07C91
+380F803E4A487E023E14804AEB0FC05C494814E01303495A5C130F494814F0A2133F91C7
+FCEE1FE05B137EA201FE143F17C05BA20001ED7F80A24915005E00035D4B5AA24B5A486C
+495A4B5A6D5C01EEEB3F80D80FE7017EC7FC9038E3C1F89038C1FFE0D9C07FC8FC001F90
+C9FCA25BA2123FA290CAFCA25AA2127EA212FEA25AA35A12702C3C7EA72F>I<020FB512
+FE027F14FF49B7FC1307011F15FE903A3FE03FE00090387F000F01FE6D7E484813034848
+8048481301485A5B121F5B123F90C7FC5A127EA2150300FE5D5AA24B5AA2150F5E4B5AA2
+007C4AC7FC157E157C6C5C001E495A001FEB07E0390F800F802603E07EC8FC3800FFF8EB
+3FC030287DA634>I<16F0A25EA21501A25EA21503A25EA21507A293C7FCA25DA2150EA2
+151EA2151C4AB47E020F13F091387F3CFC903901F8381FD907E0EB0F80903A0F807807C0
+D93F00EB03E0017E90387001F04915F84848EBF000484815FC48485B4848157C1401EA1F
+805DEA3F00020314FC5A007E5CA20207130100FE16F848140016034A14F01607020E14E0
+007CED0FC0141E007EED1F80003E011CEB3F00167E6C013C5B0180495A000F90383803E0
+D807E0EB0FC02701F0783FC7FC3900FC79FC90381FFFE0D903FEC8FCEB00F0A25CA21301
+A25CA21303A25CA21307A291C9FCA25BA22E527BBE36>30 D<EE01C0A21603A25FA21607
+A294C7FCA25EA2160EA2161EA2161CA2163CA21638A21678013E1670D9FF8090387001FC
+2601C3E01403D8038102F013FE380701F0000E15E0121ED81C0301011301003C16000038
+4B137CEA78070070EBE003183CD8F00F5C02C0153800001407131F028090C71278187001
+3F5B1400030E14F04916E0017E011E130118C0031C130301FE168049013CEB07005F0338
+131E017C151C017E01785B5F03705B6D4A5A903A1F80F00780D90FC049C7FC903907E0E0
+3C903901FCE1F09039007FFFC0DA07FEC8FCEC01C0A21403A25DA21407A292C9FCA25CA2
+140EA2141EA2141CA237527EBE3B>32 D<0120ED01C00178ED07F001F8150F000117F85B
+485A5B0007160749150348C9EA01F0A2121E1700121C003C023814E0003814FCA2007816
+01140100704A14C0A217034B148000F0130317074B14005F5D0207141E6F133E6C010F5C
+4A7E6C013F5C007E9038FFF8033B7F87FDFF0FF0D9FFF8EBFFE06C495C4A6C5B6C496C90
+C7FC00079038001FFCD801F8EB03F035297EA739>I<011FB912F8017F18FC48BAFC5A48
+19F8260FC0F0C9EA070048C6481780D83E011703383C03C000785BEAF0074848CAFC010E
+1406D8001E140E131C133C0138021E1407017818000170141C163C6101F0027C140E4917
+1E16FC03015DA2000102035D030715F8DB0FBC5C043C495A031F1403DB7E3E495A6C6CD9
+FC1E495A9027F801F81F013FC7FC9026FC0FF0EB80FE90B5486CB45A6D01C05C6DD90007
+5BD91FFC6D13C0D907E0D900FEC8FC46287DA64B>36 D<121EEA7F80A2EAFFC0A4EA7F80
+A2EA1E000A0A798919>58 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013
+C0A312011380120313005A120E5A1218123812300B1C798919>I<183818FC1703EF0FF8
+EF3FE0EFFF80933803FE00EE0FF8EE3FE0EEFF80DB03FEC7FCED0FF8ED3FE0EDFF80DA03
+FEC8FCEC0FF8EC3FE0ECFF80D903FEC9FCEB0FF8EB3FE0EBFF80D803FECAFCEA0FF8EA3F
+E0EA7F8000FECBFCA2EA7F80EA3FE0EA0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800
+FF80EC3FE0EC0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8
+EE03FE933800FF80EF3FE0EF0FF8EF03FC17001838363678B147>I<ED0180ED03C01507
+A21680150FA216005DA2151E153EA2153C157CA2157815F8A25D1401A25D1403A25D1407
+A25D140FA24AC7FCA2141E143EA2143C147CA2147814F8A25C1301A25C1303A25C1307A2
+5C130FA291C8FC5BA2131E133EA25BA2137813F8A25B1201A25B1203A25B1207A25B120F
+A290C9FC5AA2121E123EA2123C127CA2127812F8A25A1260225B7BC32D>I<126012F8B4
+FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01FF9038007FC0EC1FF0EC07
+FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1FF0EE07FCEE01FF9338007F
+C0EF1FF0EF07F8EF01FCA2EF07F8EF1FF0EF7FC0933801FF00EE07FCEE1FF0EE7FC04B48
+C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7F
+C04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270363678B147>I<17075F84171FA217
+3F177FA217FFA25E5EA24C6C7EA2EE0E3F161E161C1638A21670A216E0ED01C084ED0380
+171FED07005D150E5DA25D157815705D844A5A170F4A5A4AC7FC92B6FC5CA2021CC7120F
+143C14384A81A24A140713015C495AA249C8FC5B130E131E4982137C13FED807FFED1FFE
+B500F00107B512FCA219F83E417DC044>65 D<49B712F818FF19E090260001FEC7EA3FF0
+F007F84B6E7E727E850203815D1A80A20207167F4B15FFA3020F17004B5C611803021F5E
+4B4A5A180FF01FE0023F4B5A4B4A5ADD01FEC7FCEF07F8027FEC7FE092B6C8FC18E092C7
+EA07F84AEC01FE4A6E7E727E727E13014A82181FA213034A82A301075F4A153FA261010F
+167F4A5E18FF4D90C7FC011F5E4A14034D5A013FED1FF04D5A4AECFFC0017F020790C8FC
+B812FC17F094C9FC413E7DBD45>I<DC1FF81307923801FFFE030F9038FF800E923A7FF0
+07E01E4A48C7EAF03EDA03FCEC787EDA0FF0EC3CFCDA3FC0141F4A48140F4AC8FC4948ED
+07F8EB07F849481503131F4A16F049481501495A13FF4890C913E05B1203485A19C0485A
+A2485A95C7FC123F5BA2127F5BA312FF5BA590CCFC183CA21838A21878187018F06C6C5E
+17014D5A003F5F6D15074DC7FC001F161E6C6C5D6D5D6C6C5D00034B5AD801FEEC07C06C
+6C4AC8FCD97FC0137E90391FF803F80107B512E0010114809026001FF8C9FC40427BBF41
+>I<49B912C0A3D9000190C71201F0003F4B151F190F1A80020316075DA314075D1A00A2
+140F4B1307A24D5B021F020E130E4B92C7FC171EA2023F5C5D177CEE01FC4AB55AA3ED80
+0302FF6D5A92C7FCA3495D5C19380401147801034B13704A16F093C85AA2010716014A5E
+180361010F16074A4BC7FCA260011F163E4A157E60013F15014D5A4A140F017F15FFB95A
+A260423E7DBD43>69 D<49B9FCA3D9000190C7120718004B157F193F191E14035DA31407
+5D191CA2140F5D17074D133C021F020E13384B1500A2171E023F141C4B133C177C17FC02
+7FEB03F892B5FCA39139FF8003F0ED00011600A2495D5CA2160101035D5CA293C9FC1307
+5CA3130F5CA3131F5CA2133FA25C497EB612F8A3403E7DBD3A>I<49B6D8C03FB512F81B
+F01780D900010180C7383FF00093C85B4B5EA2197F14034B5EA219FF14074B93C7FCA260
+140F4B5DA21803141F4B5DA21807143F4B5DA2180F4AB7FC61A20380C7121F14FF92C85B
+A2183F5B4A5EA2187F13034A5EA218FF13074A93C8FCA25F130F4A5DA21703131F4A5DA2
+013F1507A24A5D496C4A7EB6D8E01FB512FCA2614D3E7DBD4C>72
+D<49B600C090387FFFF896B5FC5FD900010180C7000F130093C813F84B16E01A804FC7FC
+0203163C4B15F84E5AF003C002074B5A4B021FC8FC183E1878020F5D4BEB03E0EF07804D
+C9FC021F143E4B5B17F04C5A023F1307EDC00F4C7E163F027FEBFFF8ED81EFED83CF9238
+8F87FC9138FF9F0792383C03FE15784B6C7E4913E0158092C77F5C01036F7E5C717EA213
+074A6E7EA2717E130F4A6E7EA284011F15035C717E133F855C496C4A13E0B600E0017F13
+FFA34D3E7DBD4D>75 D<49B612F0A3D900010180C7FC93C8FC5DA314035DA314075DA314
+0F5DA3141F5DA3143F5DA3147F5DA314FF92C9FCA35B5C180C181E0103161C5C183C1838
+13074A1578187018F0130F4AEC01E0A21703011FED07C04A140F171F013FED3F8017FF4A
+1303017F021F1300B9FCA25F373E7DBD3E>I<49B56C93B512C050148062D90001F18000
+704B90C7FC03DF5F1A0E1A1D1403039FEE39FC1A711A739126078FE015E3030F5FF101C3
+F10387140F020E93380707F0A2F10E0F021E161C91261C07F05E1938F1701F143C023804
+E05BA2953801C03F0278ED038091267003F85EF00700060E137F14F002E04B91C8FCA24E
+5B01015E4A6C6C5D60943801C00113030280DA03805BA294380700030107150E91C700FE
+5D5F1907495D010E4B5CA24D130F011E6E5A011C60705A013C171F017C92C7FC01FE027E
+5DD803FF4D7EB500FC017C017FB512E0167804385E5A3E7CBD58>I<49B712F018FF19C0
+D9000190C76C7EF00FF84BEC03FC1801020382727E5DA214071A805DA2140F4E13005DA2
+021F5E18034B5D1807023F5E4E5A4B4A5A4E5A027F4B5A06FEC7FC4BEB03FCEF3FF091B7
+12C005FCC8FC92CBFCA25BA25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133F
+A25C497EB612E0A3413E7DBD3A>80 D<48B912FCA25A913A0003FE000F01F84A1301D807
+E0EE00F8491307491778000F5D90C7FC001E140FA2001C4B1470123C0038141FA200785D
+1270033F15F000F018E0485DC81600157FA25EA215FFA293C9FCA25CA25DA21403A25DA2
+1407A25DA2140FA25DA2141FA25DA2143FA25DA2147FA214FF497F001FB612FCA25E3E3D
+7FBC35>84 D<027FB5D88007B512C091B6FCA2020101F8C7EBF8009126007FE0EC7F804C
+92C7FC033F157C701478616F6C495A4E5A6F6C495A4EC8FC180E6F6C5B606F6C5B601701
+6F6C485A4D5A6F018FC9FC179E17BCEE7FF85F705AA3707EA283163F167FEEF7FCED01E7
+EEC3FEED0383ED070392380E01FF151E4B6C7F5D5D4A486D7E4A5A4A486D7E92C7FC140E
+4A6E7E5C4A6E7E14F0495A49486E7E1307D91F806E7ED97FC014072603FFE0EC1FFF007F
+01FC49B512FEB55CA24A3E7EBD4B>88 D<EC1F80ECFFE0903903F0707090390FC039F890
+381F801D90383F000F017E5C5B00011407485A48485CA2485A001F140F5E485AA2151F00
+7F5D5BA2153F00FF92C7FC90C7FCA25D92387E03805AA215FEEDFC07007E010114001403
+5E6C0107130E140E3A1F801C7C1C000F13783A07C1F03E383A01FFC01FF03A007F0007C0
+29297DA730>97 D<EB1FC0EA0FFF5CA2EA003FA291C8FCA25BA2137EA213FEA25BA21201
+A25BA21203A25BEC3F800007EBFFE09038F3C1F849C67E01FE137E4848133E49133F5B49
+1480001F141F5B5BED3FC0123FA290C7FCA248147F1680127EA215FF00FE15005AA24A5A
+A25D1403485C1407007C5C4A5A5D003C495A003E49C7FC001E137E6C13F8380783F03803
+FFC0C648C8FC22407CBE27>I<EC07F0EC7FFE903801FC0F903907E0038090390FC001C0
+D93F8013E090387F000701FE131F485A485A16C0485A000F15804990C7FC121F485AA312
+7F5BA312FF90C9FCA6007E1560007F15E01501ED03C06CEC07806DEB0F00001F141E6C6C
+137C3907E001F03901F01FC06CB5C7FCEB1FF023297DA727>I<EE07F0ED03FF17E0A2ED
+000FA217C0A2161FA21780A2163FA21700A25EA2167EA216FEA25EEC1F80ECFFE1903803
+F07190390FC039F890381F801D90383F000F137E495C00011407485A485A5E485A001F14
+0FA248485CA2151F127F495CA2153F12FF90C790C7FCA25DEE038048147EA215FE160700
+7ED901FC130014035E6C0107130E140E3A1F801C7C1C000F13783A07C1F03E383A01FFC0
+1FF03A007F0007C02C407DBE2F>I<EC1FE0ECFFFC903803F01E90380FC00F90393F8007
+80D97E0013C0491303EA03F8120749130748481480121F49130F003FEC1F00153E397F80
+01FCEC1FF090B51280B500F8C7FC90C9FCA45AA616C01501007E1403ED07806CEC0F0015
+1E6C5C6C6C13F83907C003E03903E03F802600FFFEC7FCEB3FE022297CA72A>I<163EEE
+FFC0923803E1E0923807C0F0ED0F811687ED1F8F160F153FA217E092387E038093C7FCA4
+5DA514015DA30103B512FCA390260003F0C7FCA314075DA4140F5DA5141F5DA4143F92C8
+FCA45C147EA414FE5CA413015CA4495AA35CEA1E07127F5C12FF495AA200FE90C9FCEAF8
+1EEA703EEA7878EA1FF0EA07C02C537CBF2D>I<EC01F8EC0FFE91383F07879139FC03DF
+80903801F801903903F000FFEB0FE04948EB7F005C133F49C7FC49147E5B000115FEA248
+485CA215011207495CA21503120F495CA21507A25E5B0007140FA24B5A6D133F0003147F
+000114FF6D485B0000EB03DF90387E0F3FEB1FFCD907F090C7FC90C7FC5DA2157EA215FE
+A25D001C1301007F5C4813035D4A5A4A5A48495A00F8017EC8FC387E01FC381FFFE00003
+90C9FC293B7FA72B>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA25C
+A2133FA291C9FC15FE90397F07FFC091381F03E090397E3801F09138F000F8EBFFE04A7F
+5C91C7FC485AA25BA2484813015E5BA2000714035E5B1507120F5E49130F5E121F031F13
+70491480A2003F023F13F0EE00E090C7FC160148023E13C01603007E1680EE070000FE5D
+ED1F1E48EC0FF80038EC03E02C407CBE34>I<143C14FEA21301A314FCEB00701400AD13
+7E3801FF803803C7C0EA0703000F13E0120E121C13071238A2EA780F007013C0A2EAF01F
+14801200133F14005B137EA213FE5BA212015B0003130E13F0A20007131EEBE01CA2143C
+EBC0381478147014E013C13803E3C03801FF00EA007C173E7EBC1F>I<EB01FC13FF5CA2
+1303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C9FC16FC49EB03FE92380F07
+80017EEB3C0FED703F01FE13E0913801C07F9038FC0380EC07000001010E14004A131C49
+4890C7FC5C00035BEBF9C0495A01FFC9FC5A14F0EBE3FE9038E07F80000FEB1FC06E7EEB
+C00781001F1303160E1380A2003F151E0207131C010013E0A2485DA2007E010313781670
+00FE01015B15F1489038007F800038023EC7FC29407CBE2F>107
+D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A2133FA21400A25BA2137EA213FE
+A25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121FA25BA2123FA290C7FCA25A
+EB0380127EA212FE130700FC1300A25B130EA2EA7C1C133CEA3E38EA1FF0EA07C014407D
+BE1B>I<01F8D907F0EB07F8D803FED93FFEEB1FFE28078F80F81FEB781F3E0F0F81C00F
+81E00F803E0E07C78007C3C007C0001CD9CF00EBC78002FEDAEF007F003C4914FE003849
+5C49485C12780070495CA200F0494948130F011F600000495CA2041F141F013F6091C75B
+193F043F92C7FC5B017E92C75A197E5E01FE9438FE01C049027E14FCA204FE0101130300
+0106F81380495CF20700030115F00003190E494A151E1A1C03035E0007943800F8F0494A
+EC7FE0D801C0D900E0EC1F804A297EA750>I<01F8EB0FF0D803FEEB3FFC3A078F80F03E
+3A0F0F83C01F3B0E07C7800F80001CEBCF0002FE80003C5B00385B495A127800705BA200
+F049131F011F5D00005BA2163F013F92C7FC91C7FC5E167E5B017E14FE5EA201FE0101EB
+03804914F8A203031307000103F013005B170E16E000035E49153C17385F0007913801F1
+E0496DB45AD801C0023FC7FC31297EA737>I<EC07F8EC7FFE903901FC0F80903907E007
+E090390FC003F090393F8001F8EB7F0001FEEB00FC485A484814FEA2485A120F5B001F15
+FF485AA2ED01FE127F5BA2150300FF15FC90C7FCA2ED07F8A2ED0FF0A2007E15E0007FEC
+1FC0ED3F80A26CEC7F006C6C13FC4A5A6C6C485A3907E00FC02601F03FC7FC3800FFFCEB
+1FE028297DA72C>I<D907C013FE903A0FF003FF80903A1C7C0F07E0903A383C1C03F090
+3A783E7801F80170EBF0009026F03FE013FC01E05B4B13FE0001017F147E01C090C7FC14
+7E17FF000313FEA2C75AA201015C17FE5CA20103140317FC5CA20107EC07F8A24A14F016
+0F010F15E0161F17C0EE3F80011F15006E137E5E9138B801F890393FBC03E091389E0FC0
+DA07FFC7FCEC01F849C9FCA2137EA213FEA25BA21201A25BA21203A2B512E0A3303A84A7
+2E>I<91381F800C9138FFE01C903903F0707C90390FC0387890391F801CF890383F000F
+137E4914F000011407485A485A16E0485A121F150F484814C0A3007F141F491480A300FF
+143F90C71300A35D48147EA315FE007E495A1403A26C13074A5A381F801D000F13793807
+C1F33901FFC3F038007F03130014075DA3140F5DA3141F5DA2143F147F90381FFFFE5BA2
+263A7DA729>I<D801F0EB3F80D807FCEBFFE03A0F1F03C0F0000E90380F00F8391E0F9E
+03001C13BC003CEBF807003813F0A226781FE013F000709038C001C092C7FC5C12F0133F
+000090C8FCA35B137EA313FE5BA312015BA312035BA312075BA3120F5BEA038025297EA7
+29>I<EC1FC0ECFFF8903803E03C903807800E90381E0007168049130F49131F153FA201
+F81400A2151C6D90C7FC7FEBFFE014FE90387FFFC06D7F6D13F86D7F13039038001FFE14
+031400157E000C143E123F487EA248C7123CA25D12FC00F05C0070495A0078495A6C495A
+260F803EC7FC3803FFF838007FC021297CA72B>I<147014FC1301A25CA21303A25CA213
+07A25CA2130FA25CA2007FB512F0B6FC15E039001F8000133FA291C7FCA25BA2137EA213
+FEA25BA21201A25BA21203A25BA21207EC01C013E01403000F1480A2EBC0071500140E14
+1E5C000713385C3803E1E03801FF80D8003EC7FC1C3A7EB821>I<137C48B4EC03802603
+C7C0EB0FC0EA0703000F7F000E151F121C010715801238163FEA780F0070491400A2D8F0
+1F5C5C0000157E133F91C712FEA2495C137E150113FE495CA215030001161C4914F0A215
+07173CEEE038150F031F1378000016706D133F017C017313F0017E01E313E0903A3F03C1
+F1C0903A0FFF007F80D901FCEB1F002E297EA734>I<013EEE0380D9FF800107EB0FE026
+01C3E090381F801FD8038117F0380701F0000E153F001E1600D81C03160F003C17070038
+4BEB03E0D87807147E00705B1801D8F00F14FE4A4914C01200131FDA800114034C148013
+3F140003031407494A1400137EA26001FE0107140E495C60A360150F017C5E017E011F14
+F0705B6D0139495A6D903970F8038090280FC0E07C0FC7FC903A03FFC01FFC903A007F00
+07F03C297EA741>119 D<D901F8133FD907FEEBFFE0903A1E0F83C0F0903A3807C780F8
+90397003CF0301E013FED801C0EBFC071203018013F8D8070015F0EE01C0000E4AC7FCA2
+001E1307A2C75BA2140F5DA3141F5DA3143F92380001C0A34A1303001E1680003F017E13
+07267F80FE14005ED8FF81141ED901DF131CD8FE035C3A7C078F80F03A3C0F07C1E03A1F
+FC03FF802707F0007EC7FC2D297EA734>I<137C48B4EC03802603C7C0EB0FC0EA070300
+0F7F000E151F001C168013071238163FD8780F150000705BA2D8F01F5C4A137E1200133F
+91C712FE5E5B137E150113FE495CA2150300015D5BA215075EA2150F151F00005D6D133F
+017C137F017E13FF90393F03DF8090380FFF1FEB01FC90C7123F93C7FCA25DD80380137E
+D80FE013FE001F5C4A5AA24848485A4A5A6CC6485A001C495A001E49C8FC000E137C3807
+81F03803FFC0C648C9FC2A3B7EA72D>I<02F8130ED903FE131ED90FFF131C49EB803C49
+EBC0784914F090397E07F1E09038F800FF49EB1FC049EB07800001EC0F006C48131E90C7
+5A5D5D4A5A4A5A4A5A4AC7FC143E14785C495A495A495A49C8FC011E14E05B5B49130148
+48EB03C0485AD807F8EB078048B4131F3A1F87E07F00391E03FFFE486C5B00785CD87000
+5B00F0EB7FC048011FC7FC27297DA72A>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fm cmr12 14.4 68
+/Fm 68 123 df<ED03FF033F13E04AB512F8913907FE01FC91391FE0003E4A48130F02FF
+C76C7E4948143F49484A7E494814FF130F5C495AA2715A49486EC7FC170C94C8FCAFEF3F
+C0B9FCA43A003FC00001EE007F173FB3B3A4D9FFF0ECFFF0007F9026FFE07FEBFFE0A43B
+547ED341>12 D<ED3F80EDFFE002037F913807E0F891381FC03CEC3F804B7E147E02FE13
+0E5C0101140F82A25C1303A45E160EA26E131E161C163C163816785E01015CECFE014B5A
+4B5AA26E48CBFC6D131E4B0207B512FE15F85D147F4BDA007F13C04B92380FFE00023FEE
+07F86F16E0735A6F1507027F5F4A6C93C7FCD901EF5E902603CFFC150ED907C7161E9026
+0F87FE5DD91F031638013E6D1578D93C011670496C6D14F0496E495A0001027F5D48486E
+130300076E6C5C4848011F1407001F6F49C8FC003F6E7E490107141E007F6F131C6F6C13
+3C6F5C00FFEE80706FEBC0F093387FE1E0EFE3C093383FF3806DEC1FFF7090C8120E705A
+707E6C6C191E706D141C6C6C70143C4C6D14386C6C91260FBFF814786C6C91261F0FFC14
+F06C6C91267E07FE13016C6C903C01F803FF8007E06C9027E01FF0009038E03FC06C90B5
+00C0013FB51280013F91C7000FEBFE00010701FC020313F8010001C09138003FE04F577B
+D45B>38 D<15E01401EC03C0EC0780EC0F00141E5C147C5C495A13035C495A130F5C131F
+91C7FC133E137EA25BA2485AA25B1203A2485AA3120F5BA2121FA25BA2123FA290C8FCA3
+5AA5127EA312FEB3A3127EA3127FA57EA37FA2121FA27FA2120FA27F1207A36C7EA21201
+7FA26C7EA2137EA2133E7F80130F8013076D7E8013016D7E147C143C8080EC0780EC03C0
+EC01E014001B7974D92E>40 D<12E07E12787E7E7E6C7E7F6C7E6C7E7F1200137C137E13
+3E133F7F6D7E80A26D7EA26D7EA2130180A26D7EA380147EA2147FA280A21580A2141FA3
+15C0A5140FA315E0B3A315C0A3141FA51580A3143FA21500A25CA2147EA214FE5CA3495A
+A25C1303A2495AA2495AA25C49C7FC5B133E137E137C5B12015B485A485A5B48C8FC121E
+5A5A5A5A1B797AD92E>I<120FEA3FC0EA7FE012FF13F0A213F8A3127F123FEA0F381200
+A513781370A313F013E0A2120113C0120313801207EA0F00121EA25A5A12300D23768B21
+>44 D<B612FEA71F077F9C27>I<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C
+0C768B21>I<1738177CA217FC17F8A2160117F0A2160317E0A2160717C0A2160F178016
+1F1700A25E163EA2167E167CA216FC5EA215015E15035EA215075EA2150F5EA2151F93C7
+FCA25D153E157E157CA215FC5DA214015DA214035DA214075D140F5DA2141F92C8FCA25C
+143EA2147E147CA214FC5CA213015C13035CA213075CA2130F5CA2131F91C9FCA25B133E
+137E137CA213FC5BA212015BA212035BA212075B120F5BA2121F90CAFCA25A123EA2127E
+127CA212FC5AA212702E787AD93B>I<EC1FF891B5FC010314C090390FF81FF090391FC0
+03F849486C7E017EC7127E49800001168049141F4848EC0FC0000716E0491407000F16F0
+A34848EC03F8A2003F16FCA44848EC01FEA700FF16FFB3A5007F16FEA56D1403A2003F16
+FCA4001F16F8A26D1407000F16F0A26C6CEC0FE0A26C6CEC1FC0A26C6CEC3F806C6CEC7F
+00017F14FE6D6C485A6D6C485A90390FF81FF00103B512C0010091C7FCEC1FF830517BCE
+3B>I<14075C5C147F5C1307133F000FB5FCB6FC13F913C1EAF0011200B3B3B3A7497F01
+0F13E0B712FEA4274F75CE3B>I<EC7FE0903803FFFE010F6D7E013F14E0D9FF0013F8D8
+01F8EB1FFCD803E06D7E4848EB03FF48486D138090C813C0001E16E0001C157F003CED3F
+F012380078ED1FF81270A2B4ED0FFC13C07FA66C5A6C5A000EC8FCC9EA1FF8A317F0163F
+A2EE7FE017C016FF17804B1300A24B5A4B5A5E4B5A4B5A4B5A5E4BC7FC15FE4A5A4A5A4A
+5A4A5A5D4A5A4AC8FC147E5C4948141CEB03E0495A4948143891C8FC131E5B5B49157848
+5A48481570484815F048B7FCA25A5A5AB812E0A42E4F7ACE3B>I<EC3FF849B57E010F14
+E090391FC01FF890397E0003FC01F86DB4FCD801E06D13804848EC7FC0484815E048C812
+3F01C015F013F0486CEC1FF87FA56C5AA2EA03E0C9EA3FF0A317E0167F17C016FF17804B
+13005E4B5A4B5A4B5AED3FC0DA07FFC7FC903803FFFC5DEDFF8090C7EA1FE0ED07F8ED01
+FE6F7EEE7F8017C0EE3FE0EE1FF017F8A2EE0FFC17FEA2160717FFA3120FEA3FC0487E48
+7EA417FE160F5B6C4815FC90C8FC0078ED1FF87E003EED3FF06CED7FE06C7E6C6CECFFC0
+D803F0491380D801FC903807FE003A00FFC01FFC013FB512F0010F14C0010391C7FC9038
+003FF830517BCE3B>I<160F5EA25E5EA25E5DA25D5DA25D151E151C153C5D157015F04A
+5A5D14035D4A5A5C140E5C143C14385C14F05C495A13035C130749C7FC130E131E5B1338
+13785B5B1201485A5B120748C8FC120E121E5A123812785AB912F0A4C8000190C7FCAF4B
+7F4B7F020FB612E0A434507DCF3B>I<000316C001C0140301F8141F903AFFC003FF8091
+B612005E5E5E16E016804BC7FC019F13F8018113800180C9FCB0EC0FF0ECFFFE01836D7E
+903987F01FE090399F0007F801BE6D7E01F86D7E496D7E49EC7F805BEE3FC04915E0C912
+1F17F0A317F8160FA317FCA5120EEA3F80487E12FF7FA217F85B161F5B48C813F0127000
+78ED3FE0A26C16C0167F6CEDFF80001F16006C6C495A6C6C13036C6CEB07F8D801F8EB1F
+F06CB4EB7FE06DB51280011F49C7FC010713F8010013C02E517ACE3B>I<ED3FE0913803
+FFFC020F13FF91393FE01F8091397F0007C0D901FCEB01E04948EB00F0495A4948130349
+48EB0FF84948131F49C7FC13FEA2485A120349EC0FF00007ED03C093C7FC485AA2121F5B
+A2123FA3127F5BEC0FFF023F13C04A13F03AFFC1F003FC9039C3C000FED9C780137F91C7
+EA3F8001CE15C001DCEC1FE0160F01D815F001F8EC07F85B17FCA24915FE1603A317FF5B
+A3127FA66C7EA317FE121FA216076C6C15FCA2000716F86D140F000316F06DEC1FE01201
+6C6CEC3FC06DEC7F806D6CEBFF006D6C485A90390FF80FFC6DB512F0010114C06D6C90C7
+FCEC0FF830517BCE3B>I<EC1FF891B5FC010314E090390FF00FF890391F8001FC017EC7
+7E49EC3F80D801F0141F0003ED0FC04915E048481407EE03F0120F4915F81601121FA37F
+A36D14036D15F07F6C6CEC07E07F6D6CEB0FC06C6D131F02F0EB3F806C6D14006C01FE13
+7E6E485A6CECC3F06DEBE7E0011FEBFF806D49C7FC01037F6D806D6C13E091B57E010314
+FCD90FC77FD93F817FD97E0014C049133F48486D13E04848010713F048486D13F8484813
+00001FED7FFC49141F48C8EA0FFE1607007E1503EE01FF8212FE48167FA2173FA56C163E
+127E177E007F167C6C16FC6D15F86C6C14016C6CEC03F06DEC07E06C6CEC0FC06C6CEC3F
+80C6B4ECFF0090397FE007FC011FB55A010714E0010191C7FC9038001FF830517BCE3B>
+56 D<EC1FF891B5FC010314C090390FF00FE090391FC003F890397F8001FC01FEC77E00
+01157F4848EC3F805B0007ED1FC0484815E0001F150F4915F0123F1607007F16F85BA217
+FC12FFA2160317FEA617FFA35E127FA37F003F5DA2121F6D5C000F151B0007153B6D1433
+6C6C1473000115E36C6C1301017FEB03C3903A3FC00F83FE90390FFFFE03010313FC0100
+13F091C7FC160717FCA317F8A2160F17F0A2161FD803C015E0EA0FF0486CEC3FC0178016
+7F170016FE150149495AD80FC0495A90C7485A6C6C495A01E0495A2703FC01FFC7FC6CB5
+5A6C6C13F8011F13E0010390C8FC30517BCE3B>I<EE03804C7EA34C7EA34C7EA34C7EA3
+4C7EA24C7E16E7A203017F16C3A20303801681A2DB07017F82A2030E80177FA24B80173F
+A24B6D7EA20378800370130FA203F0804B1307A20201814B7FA24A488183A24AC78083A2
+020E82187FA24A6F7E021FB7FC4A82A30278C8EA1FFC0270150FA202F0824A1507A24948
+8284A249488384A249CA7FA24984010E177FA2011E84193F133E017F8448486C4C7E000F
+01E04B487EB500FE037FEBFFFEA44F557CD458>65 D<B812FEEFFFC018F818FE26007FF8
+C73807FF806D4802017F011F6F6C7E727E727E727E727EA2727EA2721380A21AC0A384A3
+60A21A80A2601A00A24E5A180F614E5A4E5AF0FFE04D1380050790C7FCEF7FFC91B712E0
+8418FE02F0C73801FF809438007FE0F01FF8727EF003FE857213807213C0F17FE0A2F13F
+F0A21AF8191FA21AFCA81AF8193FA21AF0197FF1FFE0A24E13C04E1380604E1300F03FFC
+013FEEFFF8496C02075BBA12C096C7FC18FC18C046527AD153>I<DC1FFC14034BB500C0
+1307030F02F0130F037F14FC912801FFF800FF131F02070180EB1FC04A48C73807E03FDA
+3FF8913801F07FDA7FE0EC00F8902601FF80ED3CFF4990C97E494882494882495A494882
+4948825C01FF834849177F91CBFC48193F485AA24848181FA2121F49180FA2123FA24918
+07127FA31A005B12FFAE127F7FA31A07123F7FA2121FA26D180F000F190EA26C7E1A1E6C
+6C181C6C193C806C6D1778137F6E17F06D6CEE01E06D7E6D6CEE03C06D6CEE07806D6CEE
+0F006D6D151E9026007FE0157CDA3FF85DDA0FFEEC03F06E6C6CEB0FE0020101F8EBFF80
+6E6CB548C7FC030F14F8030114E09226001FFEC8FC48567AD355>I<B812FEEFFFE018FC
+18FF26007FFCC7000F13C06D4802017F011F9238003FF8F00FFC727EF001FF727F737E73
+7E737E190F86737EA2737E737EA21B8085A21BC01A7F1BE0A4F23FF0A51BF8AE1BF0A4F2
+7FE0A41BC01AFF1B80A24F1300A24F5AA24F5AA24F5A4F5A4F5A4F5A4F5A4E90C7FC4E5A
+F00FFCF03FF8013FEEFFE0496C020F5BBAC8FC18FC18E04DC9FC4D527BD159>I<BB1280
+A426007FFCC8123F6D48030313C0011F1600193F191F190F1907A21903A2F101E0A31900
+A6050E1470A41A00A3171EA3173E177E17FE160791B6FCA49138F800071600177E173E17
+1EA3170EA31A0EA31A1C94C8FCA41A3C1A38A31A78A31AF0A21901A21903A21907F10FE0
+193F19FF013F1603496C153FBBFC1AC0A347527BD150>I<BA12FCA426007FFCC712016D
+489138001FFE011F160318011800197E193EA2191EA285A385A6F10380A2171CA296C7FC
+A5173CA3177C17FC1601160F91B6FCA49138F8000F16011600177C173CA3171CA794C9FC
+B3497E49B4FCB712E0A441527BD14C>I<DC1FFC14060303B56C130E031F02F0131E037F
+14FC912801FFF801FE133E0207903980001F80DA1FFCC73807C07EDA3FF0913803E0FEDA
+FFE0EC00F049018015794990C9123D4948161F4948160F49481607495A494816034A1601
+13FF484916004890CBFC1A7E485AA24848183EA2121F49181EA2123F5B1A0E127FA397C7
+FC5B12FFAE127F6D4BB612FEA4003F93C7003F13806D94380FFE001907121FA27F120FA2
+6C7EA26C7EA26C7F6C7F137F806D7E6D6C160F6D7E6D7E6D6C161F6D01C0153D6D6D157D
+DA3FF815F8DA1FFE913803F07E912607FFC090380FE03E020101FC90387F801E6E6CB538
+FE000E031F02F81306030302E090C7FC9226001FFEC9FC4F567AD35C>I<B70107B612F8
+A4C66C48C80003EBF0006D486F5B6D486F5BB3AD91B9FCA402F8C9FCB3B1496C4B7F496C
+4B7FB70107B612F8A44D527BD158>I<B7FCA439007FFE006D5A6D5AB3B3B3B0497E497E
+B7FCA420527BD12A>I<49B612FEA490C7003F138092380FFE001507B3B3B3A21206EA3F
+C0487E487EA44B5AA25B007F5D0180131F0078C75B6C143F003E4A5A6C5D6C6C495A2707
+E003FEC7FC3901FC07FC6CB512F0013F13C0D907FCC8FC2F547BD13C>I<B74AB512FEA4
+C66C48C9003F13C06D487048C7FC6D4817F0735A1A804FC8FC193E61614E5A4E5A4E5A4E
+5A4EC9FC183E60604D5A4D5A4D5A4D5A4DCAFC173E5F5F4C5A4C5A4C5A160F4C7E4C7E16
+7F4C7E4B7F5D923807CFFE92380F8FFFED1F07DB3E037F037C804B7E9126F9E0007FDAFB
+C080DAFF80137F92C76C7E4A814A141F4A6E7E8483717F8583717F85187F727EA2727E72
+7EA2727E727FA2727F727FA2737E86193F8686496C83496C93B512E0B7020FECFF80A451
+527BD15B>I<B712E0A4C66C90CAFCEB3FFC6D5AB3B3A9191CA51938A61978A319F819F0
+A218011803A21807180F181F183F18FF013F1503496C023F13E0BAFCA43E527BD149>I<
+B500FC95B512FCA36E5FD8007FF2F800D93DFF943803BFF0011D62A2011C6DEE073FA36E
+6C160EA36E6C161CA26E6C1638A36E6C1670A36E6C16E0A36E6CED01C0A26E6CED0380A3
+6E6DEC0700A36F6C140EA36F6C5CA26F6C5CA36F6C5CA36F6C5CA26F6C495AA36F6C495A
+A36F6D48C7FCA393387FC00EA2706C5AA3706C5AA3706C5AA3706C5AA270B45AA3705BA3
+013E6E90C8FC137F496C4E7E000701F0027E4B7EB66C4BB612FC173CA35E527AD16B>I<
+B500FC030FB512F8A28080D8003FDC007F13006D6DED0FF8735A011D6D6F5A011C6D6F5A
+A26E7E81143F6E7E81140F6E7E82806E7F82806F7E82153F6F7EA26F7E6F7EA26F7F8381
+6F7F83167F707E83161F707E838270138018C0827013E0A2EF7FF0EF3FF8A2EF1FFC18FE
+170FEF07FF1981837113C119E183F07FF119F9183FF01FFD19FF8484A28484A284A2197F
+193F133E017F171F496C160F000713F0B66C15071903A219014D527BD158>I<EE7FF803
+07B57E033F14F09239FFC00FFC913A03FE0001FFDA0FF89038007FC0DA3FE0EC1FF0DA7F
+80EC07F84AC86C7E49486F7E49486F7E4948707E4948707E4948707E4948707E017F8449
+48707E91CA120348854848717EA24848711380A2000F1AC049187F001F1AE0A34848F03F
+F0A3007F1AF8A249181FA300FF1AFCAE6C6CF03FF8A5003F1AF06D187FA2001F1AE0A26D
+18FF000F1AC0A26C6C4D1380A200031A006D5F6C616C6D4C5A6E160F017F606D6C4C5A6D
+6C4C5AA26D6C4C5A6D6C4C5A6D6C4B90C7FCD900FFED03FCDA7FC0EC0FF86E6C4A5ADA0F
+F8EC7FC0DA03FE4948C8FC913A00FFC00FFC033FB512F0030714809226007FF8C9FC4E56
+7AD35B>I<B812FCEFFFC018F818FE26007FFCC7381FFF806D4802017F011F9238007FF0
+F01FF8727E727E727E841A807213C0A21AE0197FA21AF0A91AE0A219FF1AC0A24E13801A
+00604E5A4E5A4E5AF07FE04D485A051F90C7FC91B712FC18F0188002F8CBFCB3AE497E49
+7EB7FCA444527BD150>I<EE7FF80307B57E033F14F09239FFC00FFC913A03FE0001FFDA
+0FF89038007FC0DA3FE0EC1FF04A486E7E4AC8EA03FC49486F7E49486F7E4948707E4948
+707E4948707E013F844948707E4948707EA24890CA6C7E4885498300071A804983000F1A
+C0A24848F07FE0A3003F1AF049183FA2007F1AF8A449181F00FF1AFCAE007F1AF8A26D18
+3FA3003F1AF0A36C6CF07FE0A36C6CF0FFC0A200071A806D5F00031A006DDA0FC05B6CDB
+3FF85C6C6DD9FFFC495A923801F01ED97FC0496C495A903D3FE003C003801FF0011F0280
+01C05BDAF0070101133FD90FF890C76C485AD907FC4C5AD903FE03F190C7FCD900FFED73
+FC91267F8780EB77F8DA3FE3EC7FF091260FFBC014C0912803FFE001FFC8FC02009038F0
+0FFC033FB51506030714BC9239007FF81E93C7FC061F140EA285060F141E73133C851B7C
+9638F801FC953807FC0796B512F8A2841BF0A27214E07214C01B80073F1300F11FFCF107
+F04F6B7AD35B>I<B812C017FEEFFFC018F026007FFCC713FC6D48EC0FFF011F03017F94
+38007FE0727E727E727E180785727EA28684A286A762A26097C7FCA24E5A614E5A4E5A4E
+5AF0FFC04D90C8FCEF0FFEEFFFF891B712C04DC9FC839126F8000113C09338003FF0EF0F
+FC717EEF01FF85717F727EA2727EA2727EA985A81B0785180FA21B0F0607140E496C8249
+6C6F141EB76EEB801C72EBC03C96387FE0F896381FFFF0CC000713E09638007F8050547B
+D156>I<DA3FF0130349B55B010714C0011FECF00F903A7FE00FF81F49C712FED801FCEC
+3F3F4848EC1FBF48486EB4FC48481403485A4980003F8190C97E5A83127E8312FEA283A3
+7E837FA27F007F93C7FC7F7FEA3FFC7F6C6C7E14F86CEBFF806C14F8EDFF806C15F06C15
+FE6C6C806D15C0010F81010315F8D9007F80140F020080030F7F03001480161F040713C0
+160182EF7FE0A2173FEF1FF0A200E0160FA31707A37EA318E07E170F7E18C06C161F6C17
+806D153F6D16006D157E6D15FED8FCFC4A5A017F4A5A26F83FC0EB0FF0D90FFEEB7FC0D8
+F003B65A48C64AC7FC023F13F848010113C034567AD341>I<003FBB12C0A449C79038F0
+000701F06E48130001C0183F48C8EE0FE0007E1907007C1903A200781901A400701900A5
+00F01AF0481A70A6C91700B3B3AC4C7E030313FC027FB712E0A44C517CD055>I<B7020F
+B512F8A4C66C48C96C13006D48EE0FF86D48705A735A735AB3B3B0010F17036280A20107
+170797C7FC6E5E1303191E6D7E616D6D5D6E7E023F5E6E6C4A5A6E6C4A5A6E6C140FDA03
+FE4AC8FC6E6C6C13FE913A007FF007FC031FB512F0030714C0030191C9FC9238001FF84D
+547BD158>I<B600FC030FB512E0A4C691CAEBFC00D97FFCEF3FF06D48EF1FC0011F616E
+71C7FC130F1A0E6E171E0107181CA26E173C6D1838816D60A26F16F06D6081027F4C5AA2
+81023F4C5AA26F1507021F94C8FC81020F160EA26F151E0207161CA26F153C6E1638826E
+5EA27014F06E5E821801037F5D82033F4A5AA2701307031F92C9FC82030F140EA270131E
+0307141CA270133C6F143817806F5CA2EFC0F06F5C17E017E1047F5B17F193383FF380A2
+17FF7090CAFCA2705AA3705AA3705AA2705AA3705A53547ED158>I<B600FE0303B512F8
+A4C60280DB007F1300013F90CAEA1FF86DF00FE06D616D616D6D94C7FC6F161E6D181C6F
+163C6D18386E6C16786F5E023F5F6F1501021F5F6E6C15036F4B5A6E94C8FC6E6D5C7014
+0E6E161E705C6E16386F6C1478701470033F15F070495A6F6C5C030F1403705C6F14076F
+6D48C9FCEFC00E6F141EEFE01C6F143C706C5AEFF870043F13F0715AEE1FFF705B608270
+90CAFCB3AA5E4C13C0031FB612E0A455527FD158>89 D<001FB912E0A402FCC7000113C0
+02805C49C8148001F84B1300495D495E494B5A49153F90C95B484C5A123E4D5A5E003C5F
+4C5B5E95C7FC00384B5AA24C5A163F5F4C5AC912FF5F4B5B5D5F4B90C8FCA24B5A151F5E
+4B5A157F5E4B5AA24A5B5C5E4A90C9FC5C5D4A5AA24A4815E0147F5D4A5A5B5D495B4916
+0192C813C0495AA2495A133F4A1503495A13FF4A1507485B180F485B48171F91C9123F48
+48167F001F17FF494B138048481507007F161F490203B5FCBAFCA43B527AD148>I<B512
+C0A500F8C7FCB3B3B3B3B3B3A2B512C0A5127874D921>I<B512C0A5EA0007B3B3B3B3B3
+B3A2B5FCA512787ED921>93 D<ECFFC0010F13F8013F13FE9039FF00FF80D801F0EB3FE0
+D803C0EB0FF0486C6D7E01F86D7E000F816D13016F7EA3707E6C5AEA01E0C9FCA6ED3FFF
+020FB5FC9138FFFC7F01071300EB1FF0EB7FC04848C7FCEA03FC485A485A485A123F5B48
+5A187012FF90C8FCA216FFA35D6D14BF007F14036DEB073F6C6C90390F1FC0E06C6C131E
+6C6C90393C0FE1C02707FE01F013FF0001B5486C13806C6C90398003FE00D907FCC712F8
+34367BB43B>97 D<EB7F80B5FCA41203C6FC137FB3A6ED07FC92387FFF800281B512E091
+3987F00FF891398F8001FC029EC7B4FC02BC6E7E02F86E7E4A6E7E4A6E7E4A1407844A6E
+7EA2841701A284A283A21980AB19005FA360A24D5AA24D5A804D5A6E5D6E4A5AD97E784A
+5A6E4AC7FCD97C1EEB01FE6E495A903A7807E01FF00201B512C0902670007F90C8FC90C7
+EA0FF839547DD241>I<EC0FFE91387FFFE049B512F8903907F801FE90391FE0001FD93F
+80EB078049C7EA0FC001FE143F484815E00003157F485A485AA2485AEE3FC0003FED0F00
+4991C7FCA2127FA35B12FFAB127F7FA3123F6D1570121F6D15F0000F16E06D140112076C
+6CEC03C06D15806C6C14076C6DEB0F00D93FC0131E6D6C137C903907FC03F06DB55AD900
+7F1380DA0FF8C7FC2C367CB434>I<17FF4BB5FCA4ED0007160182B3A6EC0FF8EC7FFF49
+B512E0903907FC03F090391FE0007C49487F49C7120F01FE80484880485A000781484880
+A2485AA2485AA2127FA35B12FFAB127FA27FA2123FA27F121FA26C6C5C00075D7F6C6C5C
+6C6C5C6C6C021E7F6D6C017C13E0D91FC049EBFF8090390FF807E00103B512800100495A
+DA1FF091C7FC39547CD241>I<EC0FF891B5FC010314C090390FF80FF090391FC003FC90
+397F8001FE49C77E4848EC7F804848143F49EC1FC0485A000FED0FE05B001F16F0160748
+5AA2007F16F8A25B160312FF90B7FCA30180C9FCA8127F7FA2123FA26D1538121F17786C
+6C1570000716F06D15E06C6C14016C6CEC03C06C6C15806D6C130F6D6CEB1F00D90FF013
+3C903907FE01F80101B512E06D6C1380DA07FCC7FC2D367DB434>I<157F913803FFE002
+0F13F091383FC0F891387F01FC903901FE03FE903803FC0714F81307EB0FF0A290391FE0
+03FCED01F892C7FC495AB3B612FEA426003FC0C7FCB3B3A580EBFFF0007FEBFFF8A42754
+7DD324>I<EF1FC0DA3FE0EBFFE0902701FFFC0313F001079039FF07E1F8903A1FE03FCF
+01903A3F800FFC03903A7F0007F80101FE010314F04848903901FC004000036F13004913
+00000781A24980000F82A8000793C7FC6D5CA200035D6D130100015D6C6C495A017F495A
+6E485A9039FFE03FC0D801C7B5C8FC01C113FC3903803FE091CAFCA57FA27F7F7F6CB612
+E016FF6C16C017F0013F15FC8390B8FCD803F8C7001F1380D80FE0020113C04848EC007F
+4848ED1FE090C9120F127EEF07F012FE481603A56C1607007E17E0007F160F6C6CED1FC0
+6C6CED3F806C6CED7F006C6C15FED803FCEC03FCC6B4EC0FF0D93FF0EBFFC0010FB6C7FC
+010114F8D9001F1380354E7DB43B>I<EB7F80B5FCA41203C6FC137FB3A6ED07FC92383F
+FF8092B512E0913981F00FF8913983C007FC9139870003FE028E1301029C6D7E14B814B0
+02F06E7E5CA25CA35CB3AD2601FFE0903801FFE0B600C0B612C0A43A537CD241>I<1378
+EA01FE487E487FA66C90C7FC6C5AEA007890C8FCB0EB7F80B5FCA41203C6FC137FB3B3A4
+3801FFE0B61280A419507CCF21>I<EBFF80B5FCA41203C6FC137FB3A793B512F8A4043F
+138093381FFC0017F017C094C7FC163E5E5E4B5A4B5AED07804BC8FC151E5D15FC1481EC
+83FEEC87FF148F029E7F9138BC7FC0ECF83F02F07F4A6C7EECC00F02807F4A6C7E6F7EA2
+6F7E6F7F167F83707E161F83707E160783707E8318802601FFC04913E0B6D8803F13FFA4
+38537DD23E>107 D<EB7F80B5FCA41203C6FC137FB3B3B3B13801FFE0B612C0A41A537C
+D221>I<01FFD907FEEC03FFB590261FFFC0010F13E0037F01F0013F13F8912701F80FFC
+9038FC07FE913D03C003FE01E001FF000390260700019038038000C6010E6D6C48C76C7E
+6D48DA7F8E6E7E4A159CA24ADA3FF86E7E02605D14E04A5DA34A5DB3AD2601FFE0DAFFF0
+EC7FF8B6D8C07F9026FFE03FB512F0A45C347CB363>I<01FFEB07FCB590383FFF8092B5
+12E0913901F00FF8913903C007FC000349C66C7EC6010E13016D486D7E5C143002706E7E
+146014E05CA35CB3AD2601FFE0903801FFE0B600C0B612C0A43A347CB341>I<EC0FFC91
+387FFF8049B512E0903907F807F890391FE001FE90393F80007F017EC7EA1F80496E7E48
+486E7E00038248486E7EA248486E7EA248486E7EA2003F82A24848ED7F80A400FF17C0AB
+007F1780A26D15FFA2003F1700A2001F5E6D1401000F5E6D140300075E6C6C4A5A6C6C4A
+5AA2D8007FEC3F806D6C49C7FC90391FE001FE903907F807F86DB55AD9007F1380DA0FFC
+C8FC32367CB43B>I<90397F8007FCB590387FFF800281B512E0913987F00FF891398F80
+03FC000390399E0001FFC601BC6D7FD97FF86E7E4A6E7E4A6E7E4A140F844A6E7EA2717E
+A3717EA4711380AB4D1300A44D5AA24D5AA2606E140F4D5A6E5D6E4A5A6E4A5A02BC4AC7
+FC029E495A028FEB07FC913987E01FF00281B512C0DA807F90C8FCED0FF892CAFCB13801
+FFE0B612C0A4394B7DB341>I<DA07F81307DA7FFF5B49B512C0903907FC03E0903A1FF0
+00F81FD93FC0133C49486D5A49C7120E4848140F48486EB4FC000781485A4980121F8248
+5AA2485AA4485AAB6C7EA46C7EA36C6C5CA26C6C5C12076D5C6C6C5C6C6C141E6C6D5B6D
+6C5B90391FE001F090390FF807E00103B512800100495AEC1FF091C8FCB1040313C04BB6
+1280A4394B7CB33E>I<01FFEB1F80B5EB7FF0913801FFF8913803E1FC91380783FE0003
+EB0F07C6131EEB7F1C1438143091387003FC91386000F0160014E05CA45CB3AA8048487E
+B612F0A427347DB32E>I<D907FE13C090387FFF8148B512E33907F803FF390FC0007F48
+48133F48C7121F003E140F007E1407127C00FC1403A315017EA27E7F6C6C90C7FC13F013
+FF6C13F86CEBFF806C14E06C14F86C14FEC680013F1480010714C0D9003F13E014039138
+007FF0151F00E0140FED07F8A26C1403A215017EA36C15F0A26C14036C15E015076DEB0F
+C06DEB1F80D8FDF0EB3F0039F8FC01FE39F07FFFF8D8E01F13E0D8C00390C7FC25367CB4
+2E>I<EB01C0A71303A41307A3130FA2131FA2133F137F13FF5A5A001F90B512E0B7FCA3
+26003FC0C7FCB3A71638AC6E1378011F1470A26D6C13F016E0903807F801903903FC03C0
+903901FE07806DB51200EC3FFCEC07F0254B7EC92E>I<D97F80EC7F80B591B5FCA40003
+1503C61500017F157FB3AC17FFA35EA3013F5C6EEB077FA2011F020E7F6D6C011C13F06E
+0178EBFFC0903903FC01F06DB512E06D6C1380912607FC00EB80003A357CB341>I<B601
+03B51280A4000301F09039007FF800C601C0EC3FE0017FED1F8095C7FC133F171E6D7E17
+1C6E143C010F1538A26E1478010715708001035DA26E130101015D806D4A5AA2ED800702
+7F91C8FC15C0023F130EA2EDE01E021F131CA26E6C5AA2EDF87802071370A26E6C5AA215
+FF6E5BA26E5BA36FC9FCA2153EA3151C39347EB23E>I<B60007B5D8F007B5FCA4000390
+27E0001FFEC713F06C0180D90FF8EC7FC06C0307ED3F80F21F00017F0203151EA26D6C80
+1A1CA26D6C496C5CA26E6E1478010FDA0E7F1470A26E6F13F00107DA1C3F5CA26EEDC001
+0103DA381F5CA26E0178EBE0030101DA700F5CA26E01F0EBF0076DDAE00791C7FCA2DA7F
+81ECF80EEEC003A2DA3FC36E5AEE8001A2DA1FE76E5A93C7FCA2DA0FFEEC7F70A219F06E
+486E5AA36E486E5AA36E486E5AA36E486EC8FC50347EB255>I<007FB5D8800FB51280A4
+C69026FC0003EBF000D93FF86D1380011F4BC7FC010F15F801075D6D6C5C6E495A6D6C5C
+6D14076E6C48C8FCEDC01E6E6C5A021F133891380FF0786F5A913807FDE002035BEC01FF
+5E80157F6F7E824B7E15FFEDE7F802017F913803C3FEEC07814AC67E020E80021E6D7E4A
+133F4A6D7E4A80707E4948130749486D7E010781010F6E7E013F8201FF8200076D010713
+F0B500F8011FEBFFE0A43B337FB23E>I<B60103B51280A4000301F09039007FF800C601
+C0EC3FE0017FED1F8095C7FC133F6E141E131F171C6E143C010F15388001075DA26E14F0
+01035D8001014A5AA26E13036D5D1580027F49C8FCA26F5A023F130E15E0021F5BA2EDF0
+3C020F133815F802075BA2EDFCF002035B15FE6E6C5AA36E5BA26FC9FCA3153EA2151CA2
+153C153815781570A215F05D14015DA2003E495A127F486C48CAFCA2140E141E495A6C5B
+007C5B383F03E06CB45A00075BD801FCCBFC394B7EB23E>I<001FB712E0A301FCC7EA7F
+C001E014FF018049138090C714004B5A001E14074B5A485D4B5A153F4B5A00385D15FF4A
+5B93C7FC4A5A1407C7485A5D4A5A143F4A5A5D14FF495B92C8FC494814E01307495A5C49
+5A013FEC01C0495A5C13FF485B91C71203485A12074848140749140F485A003FED3F8048
+4814FF491307B8FCA32B337DB234>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fn cmtt12 14.4 1
+/Fn 1 96 df<003FB712F84816FCB812FEA46C16FC6C16F82F08797C3E>95
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fo cmsy10 10.95 15
+/Fo 15 121 df<007FB812F8B912FCA26C17F83604789847>0 D<121EEA7F80A2EAFFC0
+A4EA7F80A2EA1E000A0A799B19>I<0060166000F816F06C1501007E15036CED07E06C6C
+EC0FC06C6CEC1F806C6CEC3F006C6C147E6C6C5C6C6C495A017E495A6D495A6D6C485A6D
+6C485A6D6C48C7FC903803F07E6D6C5A903800FDF8EC7FF06E5A6E5AA24A7E4A7EECFDF8
+903801F8FC903803F07E49487E49486C7E49486C7E49486C7E017E6D7E496D7E48486D7E
+4848147E4848804848EC1F804848EC0FC048C8EA07E0007EED03F0481501481500006016
+602C2C73AC47>I<EB03C0A2805CA600F0140F00FC143F00FE147F00FF14FF393FC3C3FC
+390FE187F03903F18FC03900FDBF00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F1
+8FC0390FE187F0393FC3C3FC39FF03C0FF00FE147F00FC143F00F0140F00001400A6805C
+A220277AA92D>I<1506150FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A6007FB9
+12E0BA12F0A26C18E03C3C7BBC47>6 D<EB0FFCEB3FFF90B512C0000314F03907F807F8
+390FE001FC391F80007E48C77E003E8048EC0F80A20078140700F815C0A2481403A66C14
+07A200781580007C140FA26CEC1F00003F5C6C6C137E390FE001FC3907F807F86CB55AC6
+14C0013F90C7FCEB0FFC22227BA72D>14 D<EB0FFCEB3FFF90B512C0000314F048804880
+48804880A2481580A3B712C0AA6C1580A36C1500A26C5C6C5C6C5C6C5CC614C0013F90C7
+FCEB0FFC22227BA72D>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C
+18E0CDFCAE007FB912E0BA12F0A26C18E03C287BAA47>17 D<1818187CEF01FCEF07F8EF
+1FF0EF7FC0933801FF00EE07FCEE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FC
+EC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048
+CBFC5AEA7F80EA3FE0EA0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800FF80EC3FE0EC
+0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8EE03FE933800
+FF80EF3FE0EF0FF8EF03FC170018381800AE007FB812F8B912FCA26C17F8364878B947>
+20 D<126012F812FEEA7F80EA3FE0EA0FF8EA03FEC66C7EEB3FE0EB0FF8EB03FE903800
+FF80EC3FE0EC0FF8EC03FE913800FF80ED3FE0ED0FF8ED03FE923800FF80EE3FE0EE0FF8
+EE03FE933800FF80EF3FE0EF0FF8EF03FC1701EF07F8EF1FF0EF7FC0933801FF00EE07FC
+EE1FF0EE7FC04B48C7FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FC
+EB07FCEB1FF0EB7FC04848CAFCEA07FCEA1FF0EA7FC048CBFC12FC1270CCFCAE007FB812
+F8B912FCA26C17F8364878B947>I<D91FE01620D97FF816703801FFFE486D7E48804814
+F09038E01FF8271F8007FC15F0273E0001FE15E0003CD9007F1401007CDA3FC013030078
+DA0FE014C00070DA07F8130700F0DA03FEEB1F8048913A01FF807F006F90B5FC043F5B70
+5B04075B040113E000409238007F803C157BA047>24 D<D91FE01620D9FFFC16704813FF
+000714C04814F048809026E01FFE15F0273F0003FFEC01E0007E010013C00078DA3FF013
+07DB0FFCEB0FC048913A07FF807F8048020190B5FC6F1500043F5B040F13F804035B0040
+9238007F80CDFCA4D91FE01620D9FFFC16704813FF000714C04814F048809026E01FFE15
+F0273F0003FFEC01E0007E010013C00078DA3FF01307DB0FFCEB0FC048913A07FF807F80
+48020190B5FC6F1500043F5B040F13F804035B00409238007F803C287BAB47>I<193019
+78A2197C193CA2193E191EA2191F737EA2737E737EA2737E737E1A7C1A7EF21F80F20FC0
+F207F0007FBB12FCBDFCA26C1AFCCDEA07F0F20FC0F21F80F27E001A7C624F5A4F5AA24F
+5A4F5AA24FC7FC191EA2193E193CA2197C1978A2193050307BAE5B>33
+D<126012F0B3B3B3B3B11260045B76C319>106 D<EB3F80EBFFF03803E078380F801E48
+487E80003EEB03805A15C0140F5AA3EC078091C7FCA37E127CA27E121E121F6C7EEA03C0
+6C7EEA00F8133EEBFF803803E3E0380F80F0381F0078143E003E7F487F1580EC07C05A15
+E01403A57E127CEC07C07E121E001FEB0F80390F801F00EA03C03801E03E3800F8F8EB3F
+E0EB0F80EB03E0EB00F01478143E80801580EC07C0A215E01403A3123C127EA3EC07C012
+781238EC0F806CEB1F00121E6C133E3803C0F83801FFE038003F801B537ABF28>120
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fp cmsy8 8 4
+/Fp 4 49 df<B812C0A32A037A9137>0 D<EC3FF0903801FFFE903907C00F8090391E00
+01E00178EB007801E0141C48488048488048C8EA0380000EED01C0000C1500001C16E000
+18166000381670003016300070163800601618A200E0D90780131C48496C130C4A7EA24A
+7EA36E5AA26E5A6C6D48131C006090C81218A20070163800301630003816700018166000
+1C16E0000C16C0000E15016CED03806C6CEC07006C6C140E6C6C5C01781478011EEB01E0
+903907C00F80902601FFFEC7FC9038003FF02E2F7CA737>12 D<EB7F803801FFE0000713
+F8380FC0FC381F003E003C130F00387F007814800070130300F014C0481301A66C130300
+7014800078130700381400003C5B001F133E380FC0FC6CB45A000113E038007F801A1A7C
+9D23>14 D<137813FE1201A3120313FCA3EA07F8A313F0A2EA0FE0A313C0121F1380A3EA
+3F00A3123E127E127CA35AA35A0F227EA413>48 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fq cmti10 10.95 70
+/Fq 70 124 df<DC0FF0EB0F80DC7FFEEB3FE0922601FC0FEBF878923B03F00381F03C92
+3B07C007C3E07C923B0F801FC7E1FC031F013F13C318CFED3F001983069F13F8037E9039
+0E1F80E005001400183F03FE92C7FC5DA3600201157E5DA318FE02035D0103B9FCA26190
+290003F00001FCC7FC14074B5CA41703020F5D5DA31707021F5D5DA3170F023F5D92C7FC
+A3171F4A5D147EA3173F02FE92C8FC5CA35F0101157E5CA35F495AA34C5A495AA2001E02
+F05B007F9038C3F803010F5D00FF018713075F0207495AD8FE1F4948C9FCD8F81EEBC01E
+3A703C03803C3A787801E0F83A1FF000FFE0D807C0EB3F80465383BF38>11
+D<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C137F031F14FF
+4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218E0903A0003F0
+00070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA2143F92C712FE5F
+A34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A010113F018E09338
+00F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA249CAFC12FEEA
+F81EEA703CEA7878EA1FF0EA07C0385383BF33>I<EE07FC93393FFF87F09338FC07C792
+3A03F001E7E0DB07C013F792390F8007FF031F4913C016005DA2037E1580EF039FEF001F
+183F4B1500A3600201157E5DA218FE6014035D0103B7FC60A2903A0007F000014B130360
+A31707020F5D5DA2170F60141F5D171F60A2143F92C7123F95C7FCA34A5C027EEC7E07A3
+17FE02FE4A5A4A150EA2181E181C13014AEC7C3C1838EF3C70EF1FE04948EC07C094C8FC
+A3495AA3001E5BEA7F0FA200FF5BA249CBFC12FEEAF83EEA703CEA7878EA1FF0EA07C03C
+5383BF35>I<EA01E0EA07F8120F13FC121FA4120FEA03D8EA0018A21338133013701360
+13E013C01201EA038013005A120E5A5A5A5A5A0E1C6DBE1C>39 D<ED01801507ED0F0015
+1C5D5D5D14014A5A4A5A4AC7FC141E143E5C14785C1301495AA2495A5C130F49C8FCA213
+3EA25BA213FC5B12015BA212035B1207A25B120FA25BA2121FA290C9FCA25AA2123EA212
+7EA2127CA65AAB1278A67EA47EA2120E120F7EA26C7EA26C7E6C7E1360215A73C325>I<
+14031580A2EC01C0EC00E0A21570A215781538153CA3151EA4151FA2150FA7151FA9153F
+A2153EA3157EA2157CA215FCA215F8A21401A215F0A2140315E0A2140715C0A2EC0F80A2
+141F15005C143EA25CA25CA2495A5C1303495A5C130F49C7FC131E5B137C5B5B485A485A
+485A48C8FC121E5A12705A5A205A7FC325>I<EA01E0EA07F8120FA2EA1FFCA4EA0FF8EA
+0798EA001813381330A21370136013E013C01201EA0380EA07001206120E5A5A5A5A5A0E
+1C7A891C>44 D<387FFFFCA3B5FCA21605799521>I<120FEA3FC0127FA212FFA31380EA
+7F00123C0A0A77891C>I<1838187CA218F8170118F0EF03E0A2EF07C0A2EF0F80171F18
+00173EA25FA25F16015F4C5AA24C5AA24C5A161F94C7FC163EA25EA25E15015E4B5AA24B
+5AA24B5A151F93C8FC153EA25DA25D14015D4A5AA24A5AA24A5A141F92C9FC143EA25CA2
+5C13015C495AA2495AA2495A131F91CAFC133EA25BA25B12015B485AA2485AA2485A121F
+90CBFC123EA25AA25AA25A5A365B7FC32E>I<15FE913807FF8091381F07C091387C01F0
+ECF000494813F8494813780107147C495A49C7FC167E133E137EA25BA2485AA2000315FE
+A25B000715FCA2491301120FA34848EB03F8A44848EB07F0A448C7EA0FE0A316C0007E14
+1F12FE1680153FA2481500A2157EA25DA25D4813015D6C495A127C4A5A4A5A6C49C7FC14
+3E6C5B380FC1F03803FFC0C648C8FC273F76BC2E>I<15031507150F151F151E153E157E
+EC01FEEC03FC1407141FEB01FF90380FFBF8EB1FC3EB0E07130015F0A2140FA215E0A214
+1FA215C0A2143FA21580A2147FA21500A25CA25CA21301A25CA21303A25CA21307A25CA2
+130FA25CA2131FA25CEB7FE0B612F0A215E0203D77BC2E>I<15FE913803FFC091380F01
+F091383C00F84A137C4A7F4948133F49487F4A148049C7FC5BEB0E0C011E15C0EB1C0EEB
+3C06133813781370020E133FD9F00C148013E0141C0218137F00011600EBC0384A13FEEC
+600102E05B3A00E3C003F89039FF0007F0013C495A90C7485A5E037FC7FC15FC4A5A4A5A
+EC0FC04AC8FC147E14F8EB03E0495A011FC9FC133E49141801F0143C48481438485A1678
+485A48C85A120E001E4A5AD83FE0130301FF495A397C3FF01FD8780FB55AD8700391C7FC
+D8F0015B486C6C5A6E5AEC07C02A3F79BC2E>I<ED7F80913803FFE091380F80F891383C
+007C02F87FD901E07F494814804948130F49C7FC010E15C0131EEB1C18EB3C1CEB380C01
+78141F17801370A2021C133F6D4814004A5BD91FE0137ED90F805B90C8FC4B5A4B5A4B5A
+ED1F8003FFC7FCECFFFC15F0A2EC00FC153E153F8182150F82A4151FA2121E127F153F48
+5DA3484AC7FC12F800E014FE5D14016C495A0070495A0078EB0FC00038495A6C017EC8FC
+380F01F83803FFE0C690C9FC2A3F78BC2E>I<02C0EB018002F0130FD901FEEB7F0091B5
+12FE5E5E4914E016804BC7FCECBFF8D90780C8FC91C9FCA35B130EA3131E131CA3133C90
+38381FC0ECFFF090383BE07C90387F003E017E133F017C7F0178805B498090C7FCA6153F
+A4001F147F486C5C487EA24913FF00FF92C7FC90C7FC48495A12E04A5A5D6C495A140F00
+705C0078495A6C495A003E01FEC8FC381F03FC380FFFF0000313C0C648C9FC293F77BC2E
+>53 D<ED0FE0ED7FF8913801F01C913807C00E91381F800F91383E00074A131F4A137F49
+4813FF1303495A494813FE131F4948137891C8FC5B13FEA2485AA212035B0007EB1FC0EC
+7FF0390FF1E07C9038F3803EEBF700D81FFE7F4914805BED0FC0485A5B151F4914E0127F
+A25BED3FC0A248C7FCA2157F16805AA215FF1600A24A5AA2485C007C495AA2007E495A4A
+5A003E495A003F495A261F807EC7FC380FC1FC6CB45A6C13E0C66CC8FC283F76BC2E>I<
+15FF020713C091381F81E091383E00F002FC13F84948137C495A4948137E010F143E495A
+133F4A133F017F147F91C7FC5BA2485AA216FF12035B16FE150112075B1503A216FC4913
+07A20003140F16F8151F12016D133F0000EC7FF015EF90387C01CF90393E079FE090380F
+FE1FD903F813C090C7123FA21680157F160015FEA24A5A001C5C007F1303485C4A5A4A5A
+4A5A4849C7FC00F8137E00E05B6C485A387C07E0383FFFC06C90C8FCEA03F8283F77BC2E
+>57 D<131EEB3F80137FEBFFC05AA214806C13005B133C90C7FCB3120FEA3FC0127FA212
+FFA35B6CC7FC123C122777A61C>I<171C173C177CA217FCA216011603A21607A24C7EA2
+161DA216391679167116E1A2ED01C1A2ED038115071601150EA2031C7FA24B7EA25D15F0
+5D4A5AA24A5AA24AC7FC5C140E5C021FB6FC4A81A20270C7127FA25C13015C495AA249C8
+FCA2130E131E131C133C5B01F882487ED807FEEC01FFB500E0017FEBFF80A25C39417BC0
+44>65 D<49B712C018F818FE903B0003FC0001FF9438007F804BEC3FC0A2F01FE014074B
+15F0180FA2140F5D181FA2021F16E05D183F19C0023FED7F804B14FF19004D5A027F4A5A
+92C7EA07F0EF1FE0EF7F804AD903FEC7FC92B512F017FE4AC7EA3F800101ED1FE04A6E7E
+17078401036F7E5CA30107825CA3010F5E4A1407A260011F150F5C4D5A60013F153F4A4A
+5A4D5A017F4A90C7FC4C5A91C7EA0FF849EC3FF0B812C094C8FC16F83C3E7BBD40>I<93
+39FF8001C0030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB071FDA
+1FC0ECBF00DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C495A13
+FF91C9FC4848167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5BA490
+CCFCA2170FA2170EA2171E171C173C173817786C16706D15F04C5A003F5E6D1403001F4B
+5A6D4AC8FC000F151E6C6C5C6C6C14F86C6C495A6C6CEB07C090397FC03F8090261FFFFE
+C9FC010713F0010013803A4272BF41>I<49B712C018F818FE903B0003FE0003FF943800
+7F804BEC1FC0F00FE0F007F014074BEC03F8F001FCA2140F4BEC00FEA3141F4B15FFA314
+3F5DA3027F5D5DA219FE14FF92C81203A34917FC4A1507A219F813034A150F19F0A20107
+EE1FE05CF03FC0A2010FEE7F804A16006060011F4B5A4A4A5A4D5AA2013F4B5A4AEC3FC0
+4DC7FC017F15FEEE03FC4AEB0FF001FFEC7FE0B8128004FCC8FC16E0403E7BBD45>I<49
+B812F8A390260003FEC7121F18074B14031801F000F014075DA3140F5D19E0A2141F4B13
+38A2EF7801023F027013C04B91C7FCA217F0027F5CED80011603160F91B65AA3ED001F49
+EC07805CA3010392C8FC5CF003804C13070107020E14005C93C75A180E010F161E4A151C
+183CA2011F5E5C60A2013F15014A4A5A1707017F150F4D5A4A147F01FF913807FF80B9FC
+A295C7FC3D3E7BBD3E>I<49B812F0A390260003FEC7123F180F4B1403A2F001E014075D
+A3140F5D19C0A2141F5D1770EFF003023F02E013804B91C7FCA21601027F5CED8003A216
+0702FFEB1F8092B5FCA349D9003FC8FC4A7F82A20103140E5CA2161E0107141C5CA293C9
+FC130F5CA3131F5CA3133F5CA2137FA25C497EB612E0A33C3E7BBD3B>I<9339FF8001C0
+030F13E0033F9038F803809239FF807E07913A03FC001F0FDA0FF0EB071FDA1FC0ECBF00
+DA7F806DB4FC4AC77E495AD903F86E5A495A130F4948157E4948157C495A13FF91C9FC48
+48167812035B1207491670120FA2485A95C7FC485AA3127F5BA312FF5BA30303B512FC90
+C7FCA2DB000190C7FCA25FA216035FA316076C5E7FA2003F150F6D5D121F6D141F000F15
+3F6C6C4A5A6C6C14F76C6CEB01E36CB4EB07C1903A7FC03F81C090391FFFFE00010701F8
+90C8FC010013803A4272BF46>I<49B648B6FC495DA2D9000390C7000313004B5D4B5DA2
+180714074B5DA2180F140F4B5DA2181F141F4B5DA2183F143F4B5DA2187F147F4B5DA218
+FF91B8FC96C7FCA292C712015B4A5DA2170313034A5DA2170713074A5DA2170F130F4A5D
+A2171F131F4A5DA2173F133F4A5DA2017F157FA24A5D496C4A7EB66CB67EA3483E7BBD44
+>I<49B6FC5BA2D9000313005D5DA314075DA3140F5DA3141F5DA3143F5DA3147F5DA314
+FF92C7FCA35B5CA313035CA313075CA3130F5CA3131F5CA3133F5CA2137FA25C497EB67E
+A3283E7BBD23>I<4AB61280A2180091C713C0167F5FA216FF94C7FCA35D5EA315035EA3
+15075EA3150F5EA3151F5EA3153F5EA3157FA25EA215FFA293C8FCA25CA25DA2380F8003
+EA3FC0D87FE05BA21407D8FFC05B140F01805B49485A12FC0070495A4A5A6C01FEC9FC38
+3C01FC380F07F03807FFC0C648CAFC314079BD30>I<49B6903807FFFE605ED9000390C7
+000113E04B6E13004B15FC4E5A19E002074B5A4BEC0F804EC7FC183C020F5D4B5C4D5AEF
+07C0021F4AC8FC4B131E5F5F023F5C9238C003E0EE07804CC9FC027F5B4B5AEEFF801581
+ECFF834B7FED0F7FED1E3F49017C7FECFEF89138FFE01F03C07F491380ED000F4A805C01
+0714074A80A21603010F815C160183131F4A6D7FA2177F013F825C173F017F82A24A8149
+6C4A7EB6D8800FB512C0A261473E7BBD46>I<49B612C0A25FD9000390C8FC5D5DA31407
+5DA3140F5DA3141F5DA3143F5DA3147F5DA314FF92C9FCA35B5CA313035C18C0EF01E001
+0716C05C17031880130F4A140718005F131F4A141EA2173E013F5D4A14FC1601017F4A5A
+16074A131F01FFECFFF0B8FCA25F333E7BBD39>I<49B5933807FFFC496062D90003F0FC
+00505ADBBF805E1A771AEF1407033F923801CFE0A2F1039F020FEE071F020E606F6C140E
+1A3F021E161C021C04385BA2F1707F143C023804E090C7FCF001C0629126780FE0495A02
+705FF00700F00E0114F002E0031C5BA2F03803010116704A6C6C5D18E019070103ED01C0
+0280DA03805BA2943807000F13070200020E5C5FDB03F8141F495D010E4B5CA24D133F13
+1E011CDAF9C05CEEFB80197F013C6DB4C7FC013895C8FC5E01784A5C13F8486C4A5CD807
+FE4C7EB500F04948B512FE16E01500563E7BBD52>I<902601FFFE020FB5FC496D5CA2D9
+00016D010013C04AEE3F00193E70141C193CEC07BFDB3FE01438151F1978020F7FDA0E0F
+15708219F0EC1E07021C6D5CA203031401023C7FDA38015DA2701303EC7800027002805B
+A2047F130702F014C04A013F91C7FCA2715A0101141F4AECF00EA2040F131E010315F84A
+151C1607EFFC3C0107140391C7143817FE040113784915FF010E16708218F0131E011C6F
+5AA2173F133C01385E171F137813F8486C6F5AEA07FEB500F01407A295C8FC483E7BBD44
+>I<EEFFC0030713F892383F80FE9238FC003FDA03F0EB0F804A486D7EDA1F80804AC76C
+7E027E6E7E4A81494814004948811307495A4948157F133F5C49C9FC4917805B1201485A
+A212075B000F17FFA25B121F190048485DA448484B5AA34D5AA25B4D5A12FF60171F6000
+7F163F604D5AA24DC7FC5F003F15014C5A6D5D001F4B5A4C5A6C6C4A5A4C5A6C6C4AC8FC
+000315FC6C6C495A6C6CEB07E0017FEB1F8090261FC07EC9FC903807FFF8010013803942
+73BF46>I<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80F03FC00207151F19E0
+5DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A2027FEDFF00604B495A4D
+5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA21303A25CA21307A25C
+A2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E7BBD3E>I<EEFFC003
+0713F892383F80FE9238FC003FDA03F06D7E4A486D7EDA1FC06D7E4AC76C7E027E814A6E
+7E495A01036F7E495A495A494881133F4A81137F49C91380A2485A12035B000717FF5B12
+0FA25B121F190048485DA448484B5AA36017075B6000FF160F60171F60127F4D5A60177F
+4DC7FC5F003F903803E00191390FF003FCDA3C185B3B1FC0700C07F002E0495A000F496C
+485A01E04A5AD807F14AC8FC0003018013FCD801F9EB07F8D800FD14E090397FC01F8090
+3A1FE07E0003903807FFFE0100018E5BDA000E1306030F130EA24B131E5FEE807CEEC1F8
+16FF5FA25F5F8194C8FC6F5AED01F8395273BF46>I<49B612FCEFFF8018F0903B0003FE
+000FF8EF03FE4BEB00FF8419800207ED3FC05DA219E0140F5DA3021FED7FC05DA2F0FF80
+143F4B15004D5A60027F4A5A4B495A4D5AEF3F8002FF02FEC7FC92380007F892B512E017
+80499038000FE04A6D7E707E707E0103814A130083A213075CA25E130F5C5F1603131F5C
+A3013F020714404A16E05F017F160119C04A01031303496C1680B6D8800113079438FE0F
+009338007E1ECAEA3FFCEF07F03B407BBD42>I<92391FE00380ED7FFC913A01FFFE0700
+913907F01F8F91390FC007DF4AC66CB4FC023E6D5A4A130014FC495A4948147CA2495AA2
+010F15785CA3011F1570A46E91C7FCA2808014FE90380FFFE015FC6DEBFF8016E06D806D
+806D6C7F141F02037FEC003FED07FF1501A281A282A212075A167E120EA2001E15FE5EA2
+5E003E14015E003F14034B5A486C5C150F6D495A6D49C8FCD8F9F0137C39F8FE01F839F0
+3FFFF0D8E00F13C026C001FEC9FC314279BF33>I<48B9FCA25A903AFE001FF00101F891
+38E0007FD807E0163E49013F141E5B48C75BA2001E147FA2001C4B131C123C003814FFA2
+007892C7FC12704A153C00F01738485CC716001403A25DA21407A25DA2140FA25DA2141F
+A25DA2143FA25DA2147FA25DA214FFA292C9FCA25BA25CA21303A25CEB0FFE003FB67E5A
+A2383D71BC41>I<001FB500F090B512F0485DA226003FF0C7380FFC004AEC03F04A5D71
+5A017F1503A24A5DA201FF150795C7FC91C8FCA2485E170E5BA20003161E171C5BA20007
+163C17385BA2000F167817705BA2001F16F05F5BA2003F1501A2495DA2007F1503A2495D
+A2160794C8FC48C8FC5E160E161E6C151C163C5E5E5E6C6C13014B5A001F4A5A6C6C011F
+C9FC6D133E6C6C13F83903FC07F0C6B512C0013F90CAFCEB07F83C406FBD44>I<B500FE
+91387FFFE094B5FC19C00003018091380FFC0049C8EA07F000015F606095C7FC170EA25F
+173C17386D5DA26C5E16015F4C5AA24CC8FC5E160E5E805E137F5E5EA24B5AA24B5A1507
+93C9FCECC00EA2013F5B153C15385DA25D14C15DECC38014E302E7CAFCEB1FEF14EE14FC
+A25CA25CA25C5C130F5CA291CBFC130E3B406DBD44>I<277FFFFE01B500FC90B512E0B5
+FCA20003902680000790C7380FFC006C90C701FCEC07F049725A04035EA26350C7FCA204
+07150EA2040F5D1A3C041F153862163B6216734F5A6D14E303014B5A6C15C303034BC8FC
+1683DB0703140E191E030E151C61031C7F61ED380161157003F04A5A15E002014B5A15C0
+DA03804AC9FC60DA0700140E60140E605C029C5D14B8D97FF85D5C715A5C4A5DA24A92CA
+FC5F91C7FC705A137E5F137C5F137801705D53406EBD5B>I<91B690383FFFFC605E0201
+01E0010F13006E49EB07F84C6D5A19C06F6C495A96C7FC033F140E705B183C031F5C705B
+4D5A030F5C70485A4DC8FC0307130EEEFC1E5F03035BEEFE705F6F6C5A5FA26F90C9FC83
+A2707EA216FF4B7F5DED079FEE1FF0150EED1C0F03387F1578EDF007DA01E07F15C09138
+038003DA07007F140E021E13014A805C02707F4A81495A4948147F01078249C8FC013F6F
+7E496C147F2603FFC049487EB500F8011FEBFFE0A261463E7CBD44>I<B691383FFFF0A2
+5C000301C0913807FE006C49EC03F86C17E0604D5A017F93C7FC6E140E5F013F153C6E5C
+17705F6D6C495A16034C5A010F92C8FC6E130E5E0107143C6E5B16705E6D6C485A15034B
+5A010191C9FCECFF0E5D6D133C15F85D5D6E5AA25DA292CAFC5CA35C1301A35C1303A35C
+1307A3495AA3131F001FB512F0A33C3E6EBD44>I<027FB612FEA3913AFFF80007FC03C0
+14F892C7EA0FF0D901FC141F4AEC3FE04AEC7FC04A15800103EDFF004A5B4C5A4948495A
+5F91C7485A49141F010E4A5A4C5A5F011E4AC7FC90C75A4B5A4B5A5E4B5A151F4B5A4B5A
+5E15FF4A90C8FC4A5A4A5A5D140F4A5A4A5A4A48130E4B131E02FF141C4990C7FC495A49
+48143C4A1438010F1578495A49481470494814F05C01FF4A5A4890C7FC48481403484814
+07494A5A000F151F4848143F4848ECFF804848130F90B7FCB8FC94C7FC373E79BD38>I<
+147E49B47E903907C1C38090391F80EFC090383F00FF017E137F4914804848133F485AA2
+48481400120F5B001F5C157E485AA215FE007F5C90C7FCA21401485C5AA21403EDF0385A
+A21407EDE078020F1370127C021F13F0007E013F13E0003E137FECF3E1261F01E313C03A
+0F8781E3803A03FF00FF00D800FC133E252977A72E>97 D<EB1FC0EA0FFF5CA2EA003FA2
+91C7FCA25BA2137EA213FEA25BA21201A25BA21203A25B147E3907F1FF809038F783E090
+38EF01F013FE390FF800F8A24913FC49137C485A157E5B15FE123FA290C7FCA248130115
+FC127EA2140300FE14F85AA2EC07F0A215E048130F15C0141F15800078EB3F00127C147E
+003C5B383E01F8381E03E06C485A6CB4C7FCEA01F81F4076BE2A>I<EC1FC0ECFFF09038
+03F03C903807C01E90381F800E90383F000F017E133F4913FF485A485A000714FE5B000F
+14FC48481300A2485AA3127F90C8FCA35A5AA6481403007E1407150F151E003E143C1578
+6C14F0EC03E0390F800F803903E07E003801FFF838003FC0202977A72A>I<EE3F80ED1F
+FF1700A2ED007FA2167EA216FEA25EA21501A25EA21503A25EA21507A25E147E903801FF
+8F903807C1CF90391F80EFC090383F00FF017E137F5B48486D5A485AA2485A000F92C7FC
+5B001F5CA24848137EA215FE127F90C75AA214015A485CA2140316384814F0A214071678
+91380FE070127C021F13F0007E013F5B003E137FECF3E1261F01E35B3A0F8781E3802703
+FF00FFC7FCD800FC133E294077BE2E>I<EC3F80903801FFE0903807E0F890381F803CEB
+3E0001FC131E485A485A12074848133E49133C121F4848137C15F8EC03F0397F000FE0EC
+FF809038FFFC00B512C048C8FCA45AA61506150E151E007C143C15786C14F0EC01E06CEB
+07C0390F801F003807C0FC3801FFF038007F801F2976A72A>I<167C4BB4FC923807C780
+92380F83C0ED1F87161FED3F3FA2157EA21780EE0E004BC7FCA414015DA414035DA30103
+B512F8A390260007E0C7FCA3140F5DA5141F5DA4143F92C8FCA45C147EA414FE5CA41301
+5CA4495AA4495AA4495A121E127F5C12FF49C9FCA2EAFE1EEAF83C1270EA7878EA3FE0EA
+0F802A5383BF1C>I<EC03F0EC0FFC91383E0E1C9138FC077E903901F003FE1303903807
+E001D90FC013FCEB1F80A2EB3F004914F8137E01FE1303A2484814F0A2150712034914E0
+A2150F12074914C0A2151FA216805B153F1203ED7F006D5BA200015B0000495A9038F80F
+7E90387C1EFEEB1FF8903807E0FC90C7FC1401A25DA21403A25D001C1307007F5C48130F
+5D4A5A4AC7FC48137E00F85B387C03F0381FFFC0D803FEC8FC273B7CA72A>I<EB01FC13
+FF5CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA291C8FCEC03F890387F0F
+FE91383E0F80D97E7813C0ECE007D9FFC013E014801400A2485A5BA25B0003140F16C05B
+A20007141F16805BA2000F143F16005B5D001F147EEDFE074913FCA2003F0101130FEDF8
+0E1300161E48ECF01CA2007E1538A200FE1570020013E048EC7FC00038EC1F0028407ABE
+2E>I<1478EB01FCA21303A314F8EB00E01400AD137C48B4FC38038F80EA0707000E13C0
+121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012005B137E13FE5BA212015BA2
+12035B1438120713E0000F1378EBC070A214F0EB80E0A2EB81C01383148038078700EA03
+FEEA00F8163E79BC1C>I<EB01FC13FF5CA21303A25CA21307A25CA2130FA25CA2131FA2
+5CA2133FA291C8FCED03E049EB0FF8ED3C3C017EEB707CEDE1FC9038FE01C1EC03839038
+FC0703140E0001011C13F891383800E0494813001460000313E0EBF9C0EBF78001FEC8FC
+1207EBFFE0EBE7F8EBE0FE000F137F6E7EEBC01F81001F130F16701380A2003F15F0021F
+13E001001380A248148116C0007EEB0F83168000FE14879138078F0048EB03FE0038EB00
+F826407ABE2A>107 D<EB07F0EA03FF14E0A2EA000FA214C0A2131FA21480A2133FA214
+00A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121FA25B
+A2123FA290C7FCA25A1307127EA2EAFE0F130E12FCA2131E131CA2EA7C381378EA3C70EA
+1FE0EA0780144079BE17>I<D801F0D93F80137F3D07FC01FFE003FFC03D0F3E07C1F80F
+83F03D0E1F0F00FC1E01F8001E011C90387C3800001C49D97E707F003C01F05C0038157F
+4A5C26783FC05C12704A91C7FC91C7127E00F003FE1301494A5CEA007EA20301140301FE
+5F495CA203031407000160495C180F03075D0003051F13E0494A1480A2030FEC3F810007
+F001C0495CA2031F91383E0380120F494AEC0700A2033F150E001FEF1E1C4991C7EA0FF8
+0007C7000EEC03E0432979A74A>I<D801F0EB3F803A07FC01FFE03A0F3E07C1F83A0E1F
+0F00FC001E011C137C001C49137E003C13F012385C38783FC012705C91C7FC00F015FE49
+5CEA007EA2150101FE5C5BA2150300015D5B15075E0003020F13704914C0A2031F13F000
+07ED80E05B1681EE01C0120F49EC0380A2EE0700001FEC0F0E49EB07FC0007C7EA01F02C
+2979A733>I<EC1FC0ECFFF8903803F07C90380FC01FEB1F8090393F000F80017E14C049
+1307484814E0485A12075B000F15F0485AA2485AA2ED0FE0127F90C7FCA2151F4815C05A
+A2ED3F80A2ED7F00A248147E007C5C007E13015D4A5A003E495A6C495A4A5A260F803EC7
+FC3807C0FC3801FFF038003F80242977A72E>I<903903E001F890390FF807FE903A1E7C
+1E0F80903A1C3E3C07C0013C137801389038E003E0EB783F017001C013F0ED80019038F0
+7F0001E015F8147E1603000113FEA2C75AA20101140717F05CA20103140F17E05CA20107
+EC1FC0A24A1480163F010F15005E167E5E131F4B5A6E485A4B5A90393FB80F80DA9C1FC7
+FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201A25BA21203A2387FFFE0B5FCA22D3A
+80A72E>I<027E1360903901FF81E0903807C1C390391F80E7C090383F00F7017E137F5B
+4848EB3F80485AA2485A000F15005B121F5D4848137EA3007F14FE90C75AA3481301485C
+A31403485CA314074A5A127C141F007E133F003E495A14FF381F01EF380F879F3903FF1F
+80EA00FC1300143F92C7FCA35C147EA314FE5CA21301130390B512F05AA2233A77A72A>
+I<D801F013FC3A07FC07FF803A0F3E0F03C0260E1F1C13E0001EEB380F001C1370003CEB
+E01F123814C0D8783F14C00070903880070092C7FC91C8FC12F05BEA007EA313FE5BA312
+015BA312035BA312075BA3120F5BA3121F5B0007C9FC232979A726>I<EC7F80903801FF
+E0903807C0F890381F003C013E131C013C131E017C133E49137E15FEA2000114FCA21570
+6D13007FEBFFC014FC6C13FF15806D13C06D13E0010F13F01300140F14071403120C123F
+387F80011403D8FF0013E0A300FCEB07C000F0EB0F8012700078EB1F006C133C381F01F8
+3807FFE0C690C7FC1F297AA725>I<EB01C0EB03F01307A25CA2130FA25CA2131FA25CA2
+133FA291C7FCA2007FB51280B6FC1500D8007EC7FC13FEA25BA21201A25BA21203A25BA2
+1207A25BA2120FA25BA2121F141C1380A2003F133C1438EB0078147014F05C495AEA1F03
+495A6C48C7FCEA07FCEA01F0193A78B81E>I<137C48B4141C26038F80137EEA0707000E
+7F001E15FE121CD83C0F5C12381501EA781F007001805BA2D8F03F1303140000005D5B01
+7E1307A201FE5C5B150F1201495CA2151F0003EDC1C0491481A2153F1683EE0380A2ED7F
+07000102FF13005C01F8EBDF0F00009038079F0E90397C0F0F1C90391FFC07F8903907F0
+01F02A2979A731>I<017CEB01C048B4EB07F038038F80EA0707000E01C013F8121E001C
+1403EA3C0F0038EC01F0A2D8781F130000705BA2EAF03F91C712E012005B017E130116C0
+13FE5B1503000115805BA2ED07001203495B150EA25DA25D1578000114706D5B0000495A
+6D485AD97E0FC7FCEB1FFEEB03F0252979A72A>I<017C167048B491387001FC3A038F80
+01F8EA0707000E01C015FE001E1403001CEDF000EA3C0F0038177C1507D8781F4A133C00
+701380A2D8F03F130F020049133812005B017E011F14784C137013FE5B033F14F0000192
+C712E05BA2170100034A14C049137E17031880A2EF070015FE170E00010101141E01F86D
+131C0000D9039F5BD9FC076D5A903A3E0F07C1E0903A1FFC03FFC0902703F0007FC7FC37
+2979A73C>I<903903F001F890390FFC07FE90393C1E0E0F9026780F1C138001F0EBB83F
+D801E013F89039C007F07FEA0380000714E0D9000F140048151C000E4AC7FCA2001E131F
+A2C75BA2143F92C8FCA35C147EA314FE4A131CA30101143C001E1538003F491378D87F81
+1470018314F000FF5D9039077801C039FE0F7C033A7C0E3C078027783C1E1EC7FC391FF8
+0FFC3907E003F029297CA72A>I<137C48B4143826038F8013FCEA0707000E7F001E1401
+001C15F8EA3C0F12381503D8781F14F000701380A2D8F03F1307020013E012005B017E13
+0F16C013FE5B151F1201491480A2153F000315005BA25D157EA315FE5D00011301EBF803
+0000130790387C1FF8EB3FF9EB07E1EB00035DA21407000E5CEA3F80007F495AA24A5AD8
+FF0090C7FC143E007C137E00705B387801F0383803E0381E0FC06CB4C8FCEA03F8263B79
+A72C>I<D901F01370D907FC13F0010F14E090381FFE0190393FFF03C049EB838090387C
+0FCF9039F803FF009038F0007E49133C000114386C48137890C75A4A5A4A5A4A5A4AC7FC
+141E5C5C5C495A495A495A49C8FC131E4913075B5B48485B4848131E485A01F05BD80FFE
+137C391F1F81F8383E0FFFD83C075B486C5B00705CD8F00190C7FC38E0007C24297BA725
+>I<B8FCA2280278982E>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fr cmr9 9 62
+/Fr 62 122 df<91393FE00FE0903A01FFF83FF8903A07E01EF83C903A1F800FF07E903A
+3F001FE0FE017E133F4914C0485A1738484890381F8000ACB812C0A33B03F0001F8000B3
+A7486C497EB50083B5FCA32F357FB42D>11 D<EC1FE0ECFFFC903803F01E90390FC00780
+EB1F8090393F000FC0017E131F5BA2485AED0F8092C7FCA9ED0FC0B7FCA33901F8001F15
+0FB3A6486CEB1FE0267FFFC1B5FCA328357FB42B>I<EC1FF891B512C0903803F00F9038
+0FC01FEB1F80EB3F00137E5B150F485AACB7FCA33901F8000FB3A7486CEB1FE0267FFFE3
+B5FCA328357FB42B>I<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D80F60001
+1306A40003130EEB000CA248131C00061318000E1338000C1330001C13704813E0387001
+C00060138017177EB326>34 D<017C1503D803FEED078026078780140F260F01C0141F26
+1E00E0EC3F00003E01F8147E003C017CEB01FE007C90397F8007FC913933FFFEF8007890
+38307FF900F89039380001F00218495A16075F4C5A161F4CC7FC163E5E023813FC007801
+305B007C4A5AEC7003003C01605B003E9038E007C0001EEBC00FD80F015C270787801FC8
+FC3903FE003FD8007C133E90C748131F03FCEBFF809239F801E1E0913A01F003C0700203
+9038078030DBE00F1338DA07C0EB0018020F49131C0380140C91381F001E4A013E130E02
+3E15065C14FC495A5C495A13075C4948150E011F021E130C91C7121F013E161C017E6E13
+18017CED803849020713300001923803C07049913801E1E049913800FF806C48ED1F0037
+3C7CB740>37 D<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C
+121C5A5A126009177AB315>39 D<14C01301EB0380EB0F00130E5B133C5B5BA2485A485A
+A212075B120F90C7FC5AA2121E123EA3123C127CA55AB0127CA5123C123EA3121E121FA2
+7E7F12077F1203A26C7E6C7EA213787F131C7F130FEB0380EB01C01300124A79B71E>I<
+12C07E1270123C121C7E120F6C7E6C7EA26C7E6C7EA27F1378137C133C133EA2131E131F
+A37F1480A5EB07C0B0EB0F80A514005BA3131E133EA2133C137C137813F85BA2485A485A
+A2485A48C7FC120E5A123C12705A5A124A7CB71E>I<123C127EB4FCA21380A2127F123D
+1201A412031300A25A1206120E120C121C5A5A126009177A8715>44
+D<B512F0A514057F921A>I<123C127E12FFA4127E123C08087A8715>I<EB0FE0EB7FFCEB
+F83E3903E00F803907C007C0EB8003000F14E0391F0001F0A24814F8A2003E1300007E14
+FCA500FE14FEB2007E14FCA56CEB01F8A36C14F0A2390F8003E03907C007C0A23903E00F
+803900F83E00EB7FFCEB0FE01F347DB126>48 D<13075B5B137FEA07FFB5FC13BFEAF83F
+1200B3B3A2497E007FB51280A319327AB126>I<EB3FC0EBFFF0000313FC380F80FF391E
+007F80001CEB3FC048EB1FE048130F15F00060130712FC6C14F87E1403A3007E1307123C
+C7FC15F0A2140F15E0EC1FC0A2EC3F801500147E5C495A5C495A495A495A49C7FC133E13
+3C4913185B485A48481330485A48C7FC001C1470001FB512F05A5AB612E0A31D327CB126
+>I<EC01C0A214031407A2140F141FA2143F147F146F14CF1301EB038F140F1307130E13
+0C131C13381330137013E013C0EA0180120313001206120E120C5A123812305A12E0B712
+80A3C7380FC000A94A7E0107B51280A321337EB226>52 D<000C14C0380FC00F90B51280
+15005C5C14F014C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC
+0FC0120E000CEB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E0
+1270EC0FC06C131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB1
+26>I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401
+EC0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FC
+A25BA55BA9131C20347CB126>55 D<EB0FE0EB7FF8EBFFFE3803F83F3907E00F80390FC0
+07C0D81F8013E0EC03F0EA3F0048EB01F8127EA200FE14FC1400A415FEA5007E1301A212
+7F7E1403EA1F80000F13073807C00E3803E01C3801F03838007FF090381FC0FC90C7FC14
+01A215F8A215F01403001F14E0383F800715C0140FEC1F809038003F00001C137E381F01
+FC380FFFF0000313C0C690C7FC1F347DB126>57 D<123C127E12FFA4127E123C1200B012
+3C127E12FE12FFA3127F123F1203A412071206A3120E120C121C1238123012701260082F
+7A9F15>59 D<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202707FEC
+601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5FCA249
+800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FFFE49B5
+12E0A333367DB53A>65 D<B7FC16E016F83A03FC0003FE0001EC00FFEE7F80EE3FC0161F
+17E0160F17F0A617E0161F17C0EE3F80EE7F0016FEED03FC90B612F05E9039FC0007FCED
+00FEEE3F80EE1FC0EE0FE017F0160717F8160317FCA617F81607A2EE0FF0EE1FE0163FEE
+7FC00003913803FF00B75A16F816C02E337DB236>I<DA03FE130C91393FFF801C91B512
+E0903A03FE01F83C903A0FF0003C7CD91FC0EB0EFCD97F80130701FEC712034848140100
+0315005B4848157C485A173C485A171C123F5B007F160CA390C9FC481600AB7E6D150CA3
+123F7F001F161C17186C7E17386C6C15306C6C15706D15E012016C6CEC01C0D97F80EB03
+80D91FC0EB0F00D90FF0131ED903FE13FC0100B512F0023F13C0DA03FEC7FC2E377CB437
+>I<B812C0A3D803FCC7127F0001150FEE03E01601A21600A21760A403061330A4170015
+0EA2151E157E90B512FEA39038FC007E151E150EA21506170CA3171892C7FCA41738A217
+70A217F01601160316070003157FB812E0A32E337DB234>69 D<B81280A3D803FCC7FC00
+01151FEE07C01603A21601A21600A41760150CA31700A2151CA2153C15FC90B5FCA3EBFC
+00153C151CA2150CA592C8FCAB487EB512FEA32B337DB232>I<B5D8FE03B512F8A30001
+90C73807FC006C486E5AB390B7FCA349C71203B3A3486C4A7EB5D8FE03B512F8A335337E
+B23A>72 D<B512FEA3000113006C5AB3B3A7487EB512FEA317337EB21C>I<017FB5FCA3
+9038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C485A380F03F0
+3803FFC0C690C7FC20357DB227>I<B500FE903807FFF8A3000190C7000113006C48EC00
+FC17F04C5A4C5A4CC7FC160E5E5E5E5E4B5A4B5A4BC8FC150E5D5D15F84A7E14034A7EEC
+0EFF5C4A6C7E4A6C7EECE01FD9FFC07F4A6C7E4A6C7E5B6F7E6F7EA26F7E707EA2707E70
+7E160F83707E707EA283486C913807FF80B500FE013F13FCA336337EB23C>I<B512FEA3
+D803FEC9FC6C5AB3A9EE0180A416031700A45EA25E5E5E5E16FE00031407B7FCA329337D
+B230>I<D8FFFC923801FFF86D5DA20003EFFE00D801BFED06FCA3D99F80140CA2D98FC0
+1418A3D987E01430A2D983F01460A3D981F814C0A3D980FCEB0180A2027EEB0300A36E13
+06A26E6C5AA36E6C5AA36E6C5AA26E6C5AA36E6C5AA3913800FD80A2037FC7FCA3486C13
+3ED80FF04B7EB5011C90387FFFF8A33D337CB246>I<EC07FC91387FFFC0903901FC07F0
+903907E000FCD90F80133E013FC76C7E017E6E7E496E7E48486E7E48486E7EA248486E7E
+000F8249157E001F167FA24848ED3F80A2007F17C0A290C9121FA24817E0AB6C17C06D15
+3FA3003F17806D157FA2001F17006D5D000F5E6C6C4A5AA26C6C4A5A00015E6C6C4A5A01
+7E4A5A6D4A5AD91FC0017FC7FCD907E013FC903901FC07F09039007FFFC0DA07FCC8FC33
+377CB43C>79 D<B612FCEDFF8016F03A01FE0007FC0000EC01FEED007F707E707E83160F
+83A65FA24C5AA24C5A047EC7FC4B5AED0FF090B612C093C8FC9039FE001FC0ED07F06F7E
+6F7E150082167E167FA583A5180C17C0A2043F131C486C1618B500FEEB1FE0040F133893
+3807F070C93801FFE09338003F8036357EB239>82 D<90381FE00390387FFC0748B5FC39
+07F01FCF390F8003FF48C7FC003E80814880A200788000F880A46C80A27E92C7FC127F13
+C0EA3FF013FF6C13F06C13FF6C14C06C14F0C680013F7F01037F9038003FFF1403020013
+80157F153FED1FC0150F12C0A21507A37EA26CEC0F80A26C15006C5C6C143E6C147E01C0
+5B39F1FC03F800E0B512E0011F138026C003FEC7FC22377CB42B>I<007FB712FEA39039
+8007F001D87C00EC003E0078161E0070160EA20060160600E01607A3481603A6C71500B3
+AB4A7E011FB512FCA330337DB237>I<B500F0903803FFF8A3D807FEC8EA7FC06C48ED1F
+000001161E6D151C00001618A26D15386D1530A26D6C5CA26E14E0011F5DA26D6C495AA2
+8001074AC7FCA26D6C1306A28001015CA26E131C01001418806E5BA2ED8070023F1360A2
+6E6C5AA215E1020F5BA2DA07F3C8FCA215FBEC03FEA36E5AA26E5AA31570A235357EB23A
+>86 D<B5D8F007B539800FFFF0A3000390C7273FF000011300D801FC6E48EB007C1A386D
+140F00001930836D020715706D1860A26E496C14E0013F60A26ED919FC1301011F60A26E
+D930FE1303010F95C7FCA26ED9607F5B01071706A26E9039C03F800E0103170CA2913BFC
+01801FC01C01011718A2913BFE03000FE03801001730A2DAFF06EB07F0027F5EA2038CEB
+03F8023F5EA203D8EB01FC021FEDFD80A203F0EB00FF020F93C8FCA24B800207157EA24B
+143E0203153CA24B141C020115184C357FB24F>I<0003130C48131C000E133848137000
+181360003813E0003013C0EA700100601380A2EAE00300C01300A400DE137800FF13FCEB
+83FEA2EA7F81A2383F00FC001E1378171774B326>92 D<EB7F803803FFF0380F80FC381C
+003E003F133F6D6C7E6E7EA26E7EEA1F00C7FCA4EB01FF131FEBFF873803FC07EA0FF0EA
+1FC0EA3F80127F13004815C05AA3140FA26C131F6C133B3A3F8071F180391FC1E1FF2607
+FFC013003900FE003C22237DA126>97 D<EA03F012FFA312071203AEEC3F80ECFFE09038
+F3C0F89038F7007E01FE7F49EB1F8049EB0FC05BED07E016F0A2150316F8AA16F0150716
+E0A2ED0FC07F6DEB1F8001ECEB3F0001CF137C90388381F8903801FFE0C76CC7FC25357E
+B32B>I<EB07F8EB3FFF9038FC07C03901F000E03903E003F03807C007120FEA1F80123F
+90380003E04890C7FCA2127E12FEAA127FA26C14187F001F14386D1330000F14706C6C13
+E03903F001C03900FC0F8090383FFE00EB07F01D237EA122>I<153FEC0FFFA3EC007F81
+AEEB07F0EB3FFCEBFC0F3901F003BF3907E001FF48487E48487F8148C7FCA25A127E12FE
+AA127E127FA27E6C6C5BA26C6C5B6C6C4813803A03F007BFFC3900F81E3FEB3FFCD90FE0
+130026357DB32B>I<EB0FE0EB7FFCEBF83F3903F00F80D807E013C0390FC007E0381F80
+0315F0EA3F0014014814F8127EA212FEA2B6FCA248C8FCA5127E127FA26C1418A26C6C13
+38000F14306D13706C6C13E03901F003C03900FC0F00EB3FFEEB07F01D237EA122>I<EB
+01FCEB07FF90381F078090383E0FC0EB7C1F13FCEA01F8A20003EB070049C7FCACB512F0
+A3D803F0C7FCB3A7487E387FFFE0A31A357FB417>I<151F90391FC07F809039FFF8E3C0
+3901F07FC73907E03F033A0FC01F83809039800F8000001F80EB00074880A66C5CEB800F
+000F5CEBC01F6C6C48C7FCEBF07C380EFFF8380C1FC0001CC9FCA3121EA2121F380FFFFE
+ECFFC06C14F06C14FC4880381F0001003EEB007F4880ED1F8048140FA56C141F007C1500
+6C143E6C5C390FC001F83903F007E0C6B51280D91FFCC7FC22337EA126>I<EA03F012FF
+A312071203AEEC1FC0EC7FF09038F1E0FC9038F3807C9038F7007E13FE497FA25BA25BB3
+486CEB7F80B538C7FFFCA326347EB32B>I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FC
+AAEA07E012FFA3120F1207B3A6EA0FF0B5FCA310337EB215>I<EB03C0EB07E0EB0FF0A4
+EB07E0EB03C090C7FCAAEB03F013FFA313071303B3B01238127C00FE13E0130714C0130F
+007C138038381F00EA1FFCEA07F0144384B217>I<EA03F012FFA312071203AF913803FF
+E0A36E1300EC00F8EC01E05D4A5A020FC7FC141C5C5C14F0EBF3F8EBF7FC13FEEBFC7EEB
+F87F496C7E141F6E7E8114076E7E8114016E7E81486CEBFF80B500C313F0A324347EB329
+>I<EA07E012FFA3120F1207B3B3A7EA0FF0B5FCA310347EB315>I<2703F01FE013FF00FF
+90267FF80313C0903BF1E07C0F03E0903BF3803E1C01F02807F7003F387FD803FE147049
+6D486C7EA2495CA2495CB3486C496C487EB53BC7FFFE3FFFF0A33C217EA041>I<3903F0
+1FC000FFEB7FF09038F1E0FC9038F3807C3907F7007EEA03FE497FA25BA25BB3486CEB7F
+80B538C7FFFCA326217EA02B>I<EB07F0EB3FFE9038FC1F803901F007C03903C001E000
+078048486C7E48C7127CA248147E003E143E007E143FA300FE1580A8007E1500A36C147E
+A26C147C6D13FC6C6C485A00075C3903F007E03900FC1F80D93FFEC7FCEB07F021237EA1
+26>I<3903F03F8000FFEBFFE09038F3C0F89038F7007ED807FE7F6C48EB1F804914C049
+130F16E0ED07F0A3ED03F8A9150716F0A216E0150F16C06D131F6DEB3F80160001FF13FC
+9038F381F89038F1FFE0D9F07FC7FC91C8FCAA487EB512C0A325307EA02B>I<903807F0
+0390383FFC07EBFC0F3901F8038F3807E001000F14DF48486CB4FC497F123F90C77E5AA2
+5A5AA9127FA36C6C5B121F6D5B000F5B3907E003BF3903F0073F3800F81EEB3FF8EB0FE0
+90C7FCAAED7F8091380FFFFCA326307DA029>I<3803E07C38FFE1FF9038E38F809038E7
+1FC0EA07EEEA03ECA29038FC0F8049C7FCA35BB2487EB512E0A31A217FA01E>I<EBFF06
+000713CE381F00FE003C133E48131E140E5A1406A27EA200FE90C7FC6C7EEA7FFC383FFF
+C014F0000F7F6C7FC67FEB0FFF1300EC3F8000C0131F140F6C1307A37E15006C5B6C130E
+6C5B38F7807838E1FFE038C07F8019237EA11E>I<1330A51370A313F0A21201A2120312
+07381FFFFEB5FCA23803F000AF1403A814073801F806A23800FC0EEB7E1CEB1FF8EB07E0
+182F7FAD1E>I<D803F0133F00FFEB0FFFA30007EB007F000380B35DA35D12016D481380
+0000903803BFFC90387E073FEB1FFED907F8130026227EA02B>I<B5EBFFF0A3D80FF0EB
+3F800007EC1F000003140E150C6D131C00011418A26C6C5BA26D1370017E1360137F6D5B
+A290381F8180A214C3010F90C7FCA2EB07E6A214FE6D5AA26D5AA36D5AA2146024217E9F
+29>I<B53A1FFF81FFF0A33C07F801FC003F8001F049EB1E0000030100141C816C6C017C
+1318A26D017E1338000002FE1330A290267E01FF5B159F168090263F030F5BA216C0903A
+1F8607C180A202C613E390260FCC0390C7FCA2D907FC13F6ECF80116FE6D486C5AA36D48
+1378A36D48133034217F9F37>I<B53801FFF8A32603FE0013806C48EB7C000000147801
+7E1370017F5B90383F81C090381F8380D90FC3C7FCEB07E614FE6D5A6D5A6D7E80805B90
+38039F809038071FC09038060FE0EB0C0790381C03F0496C7E01707FEBF000000180000F
+ECFF8026FFFC0313FCA326207F9F29>I<3A7FFF807FF8A33A07F8001FC00003EC0F8000
+01EC070015066C6C5BA26D131C017E1318A26D5BA2EC8070011F1360ECC0E0010F5BA290
+3807E180A214F3010390C7FC14FBEB01FEA26D5AA31478A21430A25CA214E05CA2495A12
+78D8FC03C8FCA21306130EEA701CEA7838EA1FF0EA0FC025307F9F29>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fs cmr6 6 5
+/Fs 5 54 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49
+D<EA01FC3807FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2147C1278003013
+FCC7FC14F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C00CEA0380380600
+185A5A383FFFF85AB512F0A216217CA01E>I<13FF000313C0380F03E0381C00F014F800
+3E13FC147CA2001E13FC120CC712F8A2EB01F0EB03E0EB0FC03801FF00A2380003E0EB00
+F01478147C143E143F1230127812FCA2143E48137E0060137C003813F8381E03F0380FFF
+C00001130018227DA01E>I<14E01301A213031307A2130D131D13391331136113E113C1
+EA01811203EA07011206120C121C12181230127012E0B6FCA2380001E0A6EB03F0EB3FFF
+A218227DA11E>I<00101330381E01F0381FFFE014C01480EBFE00EA1BF00018C7FCA513
+FE381BFF80381F03C0381C01E0381800F014F8C71278A2147CA21230127812F8A2147848
+13F8006013F0387001E01238381E07803807FF00EA01F816227CA01E>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Ft cmtt10 10.95 79
+/Ft 79 123 df<0060150C00F0151EB3ABB712FEA36C15FC27227C9530>32
+D<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F003C131E0010
+1304191C75B830>34 D<D803C0EB01E0D80FF01303486C497E487E150F487ED87E7E495A
+EAFE7F5E486C133FA25E157FA24BC7FC6C5A5D387E7E01EA7FFED83FFC5B1403EA1FF86C
+48485AEA03C0C75B140FA25D141FA24A5AA25D147FA292C8FC5CA2495AA25C1303A25C13
+07A290390FF001E0ED07F84A487E011F497EA24A487E133F163F90267F807F1380ED7E1F
+14005BA25B1201A24848EB7F3F033F13004914FF12076F5A5B6F5A6C486D5A0001EC01E0
+29477DBE30>37 D<EA07C0EA0FF0EA1FF8A213FCA213FE120F1207EA007EA513FE13FCA2
+120113F81203EA07F0120FEA1FE0127FEAFFC013801300127C12380F1D70B730>39
+D<141E147F14FF5BEB03FEEB07FCEB0FF0EB1FE0EB3FC0EB7F80EBFF00485A5B12035B48
+5A120F5BA2485AA2123F5BA2127F90C7FCA412FEAD127FA47F123FA27F121FA26C7EA27F
+12076C7E7F12017F6C7EEB7F80EB3FC0EB1FE0EB0FF0EB07FCEB03FEEB01FF7F147F141E
+184771BE30>I<127812FE7E7F6C7E6C7EEA0FF06C7E6C7E6C7E6C7EEB7F80133F14C013
+1FEB0FE014F01307A2EB03F8A214FC1301A214FE1300A4147FAD14FEA4130114FCA21303
+14F8A2EB07F0A2130F14E0EB1FC0133F1480137FEBFF00485A485A485A485AEA3FE0485A
+485A90C7FC5A1278184778BE30>I<14E0497E497EA60038EC0380007EEC0FC0D8FF83EB
+3FE001C3137F9038F3F9FF267FFBFB13C06CB61280000FECFE00000314F86C5C6C6C13C0
+011F90C7FC017F13C048B512F04880000F14FE003FECFF80267FFBFB13C026FFF3F913E0
+9038C3F87F0183133FD87E03EB0FC00038EC0380000091C7FCA66D5A6D5A23277AAE30>
+I<143EA2147FAF007FB7FCA2B81280A36C1600A2C76CC8FCAF143EA229297DAF30>I<EA
+03E0EA0FF0EA1FF813FCEA3FFEA213FFA27EA27E1203EA007FA2137E13FEEA01FC1203EA
+07F8EA3FF0127FEAFFE0EA7F801300123C1019708B30>I<007FB612F0A2B712F8A36C15
+F0A225077B9E30>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C0C6E8B
+30>I<16F01501ED03F8A21507A2ED0FF0A2ED1FE0A2ED3FC0A2ED7F80A2EDFF00A24A5A
+A25D1403A24A5AA24A5AA24A5AA24A5AA24A5AA24AC7FCA2495AA25C1303A2495AA2495A
+A2495AA2495AA2495AA249C8FCA2485AA25B1203A2485AA2485AA2485AA2485AA2485AA2
+48C9FCA25AA2127CA225477BBE30>I<14FE903807FFC0497F013F13F8497F90B57E48EB
+83FF4848C6138049137F4848EB3FC04848EB1FE049130F001F15F0491307A24848EB03F8
+A290C712014815FCA400FEEC00FEAD6C14016C15FCA36D1303003F15F8A26D1307001F15
+F0A26D130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F806D13FF2601FF8313006CEBFFFE6D5B
+6D5B010F13E06D5BD900FEC7FC273A7CB830>I<EB03C0497EA2130FA2131FA2133F137F
+13FF1203123FB5FCA213EF138FEA7E0F1200B3B0003FB512F84814FCB612FEA26C14FC6C
+14F81F3977B830>I<EB07FC90383FFFC090B512F00003804814FE4880261FF80F138026
+3FE00113C09038C0007F4848EB3FE090C7121FED0FF04814075A6C15F81503A3127E1218
+C8FCA2150716F0150F16E0151F16C0153FED7F8015FF4A13005DEC07FC4A5A4A5A4A5A4A
+5A4A5A4990C7FC495A495AEB0FF0EB3FE0495A495A4890C8FC4848EB01F04848EB03F848
+5AEA1FE048B6FCB7FCA37E6C15F025397BB830>I<EB03FF013F13E090B512F84814FE48
+80481580260FFE0113C09038F0007F4848EB1FE0150F16F01507A26C5A6C5AC8FC150F16
+E0A2151FED3FC0157FEDFF8002071300903807FFFE495B5D8115FF6D1480D9000113C091
+38003FE0ED1FF0ED07F8150316FC150116FE1500A21218127EB4FCA2150116FC4814036C
+15F86C6C13076DEB1FF0D83FF0133F3A1FFE01FFE06CB612C06C15806CECFE00C65C013F
+13F001031380273A7CB830>I<EC03FC4A7E140F141FA2143F147F157E14FEA2EB01FCEB
+03F8A2EB07F0A2EB0FE0EB1FC0A2EB3F80A2EB7F0013FEA2485A485AA2485AA2485A485A
+A2485AA248C7FC12FEB8FC1780A46C1600C8007EC7FCAA91387FFFFE91B6FCA46E5B2939
+7DB830>I<000FB612804815C05AA316800180C8FCAEEB83FF019F13C090B512F015FC81
+81D9FE0313809039F0007FC049133F0180EB1FE06CC7120F000E15F0C81207A216F81503
+A31218127EA2B4FC150716F048140F6C15E06C141F6DEB3FC06D137F3A3FE001FF80261F
+FC0F13006CB55A6C5C6C5C6C14E06C6C1380D90FFCC7FC25397BB730>I<EC0FF8EC7FFF
+49B51280010714E0131F4914F090387FF80F9039FFC007F84813803803FE005B485A4848
+EB03F0ED01E0484890C7FC5B123F5BA2127FEB000C903803FFE0010F13F8D8FF3F13FE48
+B6FCB7128016C09039FE007FE001F8EB1FF001E0130F49EB07F849EB03FCA290C7120116
+FE1500A37EA46C7E15016D14FC121F6D1303000FEC07F86D130F6C6CEB1FF06DEB3FE03A
+03FF81FFC06C90B512806C15006D5B011F13F8010713E001011380273A7CB830>I<127C
+B712FC16FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0C8EA7F80EDFF00A24A5A4A5A5D
+14075D140F5D4A5AA24A5AA24AC7FCA25C5C13015CA213035CA213075CA4495AA6131F5C
+A96D5A6DC8FC273A7CB830>I<49B4FC011F13F0017F13FC90B57E0003ECFF804815C048
+010113E03A1FF8003FF049131FD83FC0EB07F8A24848EB03FC90C71201A56D1303003F15
+F86D13076C6CEB0FF06C6CEB1FE0D807FCEB7FC03A03FF83FF806C90B512006C6C13FC01
+1F13F0497F90B512FE48802607FE0013C0D80FF8EB3FE0D81FE0EB0FF04848EB07F84913
+03007F15FC90C712014815FE481400A66C14016C15FC6D1303003F15F86D1307D81FF0EB
+1FF06D133F3A0FFF01FFE06C90B512C06C1580C6ECFE006D5B011F13F0010190C7FC273A
+7CB830>I<49B4FC010F13E0013F13F890B57E4880488048010113803A0FFC007FC0D81F
+F0EB3FE04848131F49EB0FF048481307A290C7EA03F85A4815FC1501A416FEA37E7E6D13
+03A26C6C13076C6C130F6D133FD80FFC13FF6CB6FC7E6C14FE6C14F9013FEBE1FC010F13
+8190380060011400ED03F8A2150716F0150F000F15E0486C131F486CEB3FC0157FEDFF80
+4A1300EC07FE391FF01FFC90B55A6C5C6C5C6C1480C649C7FCEB3FF0273A7CB830>I<12
+0FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F00C7FCAF120FEA3FC0EA7FE0A2EAFF
+F0A4EA7FE0A2EA3FC0EA0F000C276EA630>I<007FB7FCA2B81280A36C16006C5DCBFCA7
+003FB612FE4881B81280A36C1600A229157DA530>61 D<EB1FFE90B512E0000314F8000F
+14FE4880481580267FF80313C09038C0007F48C7121F16E0150FA3127E151F0018EC7FC0
+C812FF020313804A13004A5AEC1FF84A5AEC7FC04A5A92C7FC495AA2495A5CA213075CA8
+6D5A90C9FCA8EB01C0EB07F0A2497EA36D5AA2EB01C023397AB830>63
+D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FE
+A590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA40007814913
+07A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>65 D<007FB512F0B612FE6F
+7E82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED1FF0ED7FE090
+B65A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80A6167F1700A2
+5E4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I<91387F803C90
+3903FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F48481307
+5B48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14
+FE123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038
+E07FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>I<003FB512
+E04814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A2
+163F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A15034B5A150F4B5A
+ED7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7FCB81280A47E
+D803F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0
+EE0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8FCA27E7ED801
+FCC7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFF
+F8487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F1013F13FD4913FF
+90B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F491303A2127F
+90C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F003F1407A27F
+121F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13
+F30103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0B56C4813F8A2
+6C496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3FFF800FFFE048
+6D4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6FCB71280A46C
+1500260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I<49B512F04914F8
+5BA27F6D14F090C7EAFE00B3B3123C127EB4FCA24A5A1403EB8007397FF01FF86CB55A5D
+6C5C00075C000149C7FC38003FF025397AB730>I<D83FFF90380FFF80486D4813C0B56C
+5AA26C497E6C496C1380D803F0903803F8004B5A4B5A151F4B5A5E4BC7FC15FE14014A5A
+5D4A5A4A5A141F5D4A5A4AC8FC5C13F18101F37F13F790B57E14EFECC7F01483EC03F814
+0101FE7F496C7E5B157F497F82151F82150F826F7EA26F7E1501821500D83FFF903803FF
+C0486D4813E0B56C5AA26C497E6C496C13C02B387FB730>I<383FFFF8487FB57EA26C5B
+6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA27E6C16802A387EB730>I<D8
+3FF8ECFFE0486C4913F0486C4913F8A2007F16F06C6C4913E00007160001EF14BFEC800F
+A39039E7C01F3FA4ECE03F01E3133EA2ECF07EA201E1137CA2ECF8FCA201E013F8A214FD
+EC7DF0A3147FEC3FE0A3EC1FC0A2EC070091C7FCADD83FFC903801FFE0486C4913F0B549
+13F8A26C486D13F06C486D13E02D387FB730>I<D83FFC90381FFF80486C4913C0B54913
+E0A26C6D6C13C06C6E13800003913801F800EBF7C0A3EBF3E0A314F013F1A214F8A213F0
+14FCA2147C147EA2143E143FA2141FA21581A2140F15C1A2140715E1A2140315F1A21401
+A215F91400A3157DA3153FEA3FFF481380B5EAC01FA26CEB800F6C496C5A2B387EB730>
+I<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E0133FD87F80EB0FF0
+A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C6CEB3FE001F8
+13FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I<007FB512F0B6
+12FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163FA6167F17005E
+A24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387FFFC0B57EA46C
+5B29387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0EBF80001E013
+3F4848EB1FF049130F90C71207A44815F8481403B3A8147E14FE6CEBFF076C15F0EC7F87
+A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90B6FC6C15C06C15806C1500000114
+FCD8003F7FEB00016E7EA21680157F16C0153F16E0151F16F0150FED07E025467BB830>
+I<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F7E1507150382
+1501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F8007FED3FE0151F
+150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C496C13E06C49
+EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97FFF13E048B512C74814F74814FF5A
+381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7F
+EA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9003F13C01401
+9138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01
+F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830
+>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC49
+80A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA
+3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC800390393FE00FF890391FF83FF0
+6DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>I<D87FFE90380FFFC0B549
+13E06E5AA24A7E6C486D13C0D807F0903801FC00A26D130300035DA46C6C495AA46C6C49
+5AA46D131F6D5CA3EC803F013F5CA46D6C48C7FCA490380FE0FEA401075B14F1A301035B
+A314FB01015BA314FFA26D5BA46E5A6E5A2B397EB730>I<D83FFC903801FFE0486C4913
+F000FF16F8A2007F16F06C486D13E0D81FC09038001FC0000F1680A76D143F00071600A7
+000390380F803E9039F01FC07EEC3FE0A3EC7FF0A2147D0001157CA29039F8FDF8FCA314
+F8A300005D01F913FCA2ECF07CA201FD137DA2017D5CECE03DA3017F133FA2ECC01FA201
+3F5CA2EC800F6D486C5A2D397FB730>I<3A3FFF01FFF84801837F02C77FA202835B6C01
+015B3A01FC007F806D91C7FC00005C6D5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B
+14FF6D5BA26D5BA26D5BA26D90C8FCA4497FA2497FA2815B81EB0FE781EB1FC381EB3F81
+81EB7F0081497F49800001143F49800003141F49800007140FD87FFEEB7FFFB590B51280
+80A25C6C486D130029387DB730>I<D87FFF90381FFFC0B56C4813E0A46C496C13C0D803
+F8903803F8006D1307A26C6C495AA26C6C5C151F6D5CEC803F013F5CECC07F011F91C7FC
+A290380FE0FEA214F101075BA2903803FBF8A201015B14FF6D5BA26E5AA36E5AB1903803
+FFF8497F497FA26D5B6D5B2B387EB730>I<001FB612FC4815FE5AA490C7EA03FCED07F8
+16F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A
+5A92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B4848147C4914FE120348
+5A5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I<007FB612F0A2B712F8
+A36C15F0A225077B7D30>95 D<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F
+8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>
+I<EB7FF80003B5FC4814C04880488048809038E01FFC9038C003FE14016E7E6C487F6CC7
+7FC8123FA491B5FC130F137F48B6FC12075A48EB803F383FF800EA7FE0138048C7FC5AA4
+157F7E6C6C13FFEBC003263FF01FEBFF8090B712C07E6C14EF000314876CD9FE01138026
+003FE0C8FC2A2A7BA830>I<EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF8002
+7F13E091B57E90B612FC82ECFE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E0
+49140FA217F01607A8160FA217E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138
+FC0FFE91B55A5E495CD97E7F13C0D93C1F90C7FC90380003FC2C3980B730>I<ECFFE001
+0713FC011F7F017F7F90B612804815C048EB807F3907FC003F485A485A49EB1F804848EB
+0F004990C7FC127F90C9FCA25A5AA87E7EA27F003FEC07C06DEB0FE06C7E6D131F6C6C14
+C0D807FE133F9039FFC0FF806C90B5FCC615006D5B011F13F801075B01011380232A7AA8
+30>I<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A4813
+03380FFC00D81FF0133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F00
+3F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C7
+13E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B5
+7E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90
+C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D8
+07FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A
+7CA830>I<EDFF80020713E0021F13F05C4A13F891B5FC491387903803FE079138FC03F0
+903907F800C04A1300A8003FB612C04815E0B7FCA36C15C0260007F0C7FCB3A9003FB512
+FE4880B71280A26C15006C5C25397DB830>I<D903FC13FF90261FFF8713C04913DF90B7
+12E05A5A2607FE07138F903AF801FE07C048486C6CC7FCA2497F001F8149133FA56D137F
+000F92C7FC6D5BA26C6C485AEBFE0790B55A5D485C15C001DF5BD9C3FCC8FC01C0C9FCA3
+7F7F6CB512F015FF6C15C04815F0488148813A3FE0001FFE0180130148C8127F007E8100
+FE168048151FA56C153F007FED7F006D5C6C6C495A01F013076CB4EB7FFC6C90B55A6C5D
+000115C06C6C91C7FC011F13FC010113C02B3E7DA730>I<EA3FFC487E12FFA2127F123F
+1200AAEC01FE91380FFF80023F13E091B57E90B67EA29138FE07FCECF8039138E001FE14
+C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C
+496C13F82F3880B730>I<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F
+5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C023397AB830>I<EC01C0EC07
+F0A2EC0FF8A3EC07F0A2EC01C091C7FCA990B512F04814F8A47EEB0003B3B3A5EC07F0A2
+123C007EEB0FE0B4131FEC3FC0147F90B512806C14005C6C5B000F13F0000313C01D4E7C
+B830>I<EA7FF8487EA4127F1200AB0203B512804A14C017E0A217C06E14809139001FE0
+004B5A4B5A4BC7FC4A5A4A5AEC0FF84A5A4A5A4A5A4A5A01FD7F90B57E8114F7ECE3F8EC
+C1FCEC81FEEC00FF497F496D7E6F7E826F7E15076F7E6F7E3B7FFFF81FFFE0B56C4813F0
+17F8A217F06C496C13E02D387FB730>I<387FFFF8B57EA47EEA0001B3B3A8007FB612F0
+B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F
+15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC01A201F013F8A301E013
+F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C01071380322881A730>I<EC01FE3A
+3FFC0FFF80267FFE3F13E000FF90B57E90B67E7E6C9038FE07FCC6EBF8039138E001FE14
+C0EC8000A291C7FCA25BB3A23B3FFFF81FFFF8486D4813FCB500FE14FEA26C01FC14FC6C
+496C13F82F2880A730>I<49B4FC010F13E0013F13F8497F90B57E0003ECFF8014013A07
+FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F15FC90C71201A300FEEC
+00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F
+3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E0010190C7FC272A7CA830>I<
+EC03FE3A3FFC1FFF80267FFE7F13E000FF90B57E90B612FC6C816CEBFE07C69038F001FF
+4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607A8160FA217E07F161F6EEB
+3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495C6E13C0021F90C7FCEC03
+FC91C9FCAD383FFFF8487FB57EA26C5B6C5B2C3C80A730>I<49B413F8010FEBC1FC013F
+13F14913FD48B6FC5A481381390FFC007F49131F4848130F491307485A491303127F90C7
+FC15015A5AA77E7E15037FA26C6C1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C
+90B5FC6C14FD6C14F9013F13F1010F13C1903803FE0190C7FCAD92B512F84A14FCA46E14
+F82E3C7DA730>I<ED07F83A3FFF803FFF486DB51280B512C302CF14C06C13DF6C9038FF
+FC3FD8001F13E09238801F809238000F004A90C7FC5C5C5CA25CA45CAF003FB512FC4880
+B7FCA26C5C6C5C2A287EA730>I<90381FFC1E48B5129F000714FF5A5A5A387FF007EB80
+0100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C
+6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D
+137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>I<EB
+0780497E131FA9003FB612E04815F0B7FCA36C15E026001FC0C7FCB216F8ED01FCA5ECE0
+03010FEB07F814F09138FC1FF06DB512E06D14C016806D14009038007FFCEC1FF026337E
+B130>I<D83FFCEB3FFC486C497E00FF14FFA2007F147F003F143F00001400B3A41501A2
+150315076D130F903A7FC07FFFF891B612FC6D15FE7F6D4913FC6D9038F87FF8010001C0
+C7FC2F2880A630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F8
+0003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E
+5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B27
+7EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00
+A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFD
+F9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA6
+30>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F
+81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7
+E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48
+486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07F
+FF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E15
+0F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01
+F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE
+486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<
+001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C748
+5A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7
+127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fu cmr8 8 9
+/Fu 9 116 df<EB3FC0EBFFF03803E07C48487E48487E497E001EEB0780A2003E14C0A2
+48EB03E0A500FC14F0B0007C14E0A3007E1307003E14C0A36CEB0F806C14006D5A3807C0
+3E3803F0FC3800FFF0EB3FC01C2D7DAB23>48 D<130C133C137CEA03FC12FFEAFC7C1200
+B3B113FE387FFFFEA2172C7AAB23>I<EB7F803801FFF0380780FC380E003F48EB1F8048
+EB0FC05A0060EB07E012F000FC14F07E1403A3007C1307C7FCA215E0140F15C0141F1580
+EC3F00147E147C5C495A495A495A495A011EC7FC5B5B4913305B485A4848136048C7FC00
+0E14E0001FB5FC5A4814C0B6FCA21C2C7DAB23>I<EB3FC03801FFF03807C0FC380E007E
+487FEC1F80003F14C0A2EB800F1300A2000C131FC7FC1580A2EC3F00143E5C5CEB03F0EB
+FFC014F0EB00FC143FEC1F8015C0140F15E0A2EC07F0A21238127C12FEA3EC0FE012F800
+6014C00070131F6C1480001EEB3F00380780FC3801FFF038007FC01C2D7DAB23>I<140E
+A2141E143EA2147E14FEA2EB01BE1303143E1306130E130C131813381330136013E013C0
+EA0180120313001206120E120C5A123812305A12E0B612FCA2C7EA3E00A9147F90381FFF
+FCA21E2D7EAC23>I<000CEB0180380FC01F90B512005C5C14F014C0D80C7EC7FC90C8FC
+A8EB1FC0EB7FF8380DE07C380F801F01001380000E130F000CEB07C0C713E0A2140315F0
+A4127812FCA448EB07E012E0006014C00070130F6C14806CEB1F006C133E380780F83801
+FFE038007F801C2D7DAB23>I<EA07C012FFA2120F1207AC14FE9038C3FF809038C703E0
+9038DE01F013F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2222E7EAD27>104
+D<2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F803B07DC00F9C0
+0F01F8D9FF8013C04990387F000749137EA249137CB2486C01FEEB0FE03CFFFE0FFFE0FF
+FEA2371E7E9D3C>109 D<3801FE183807FFB8381E01F8EA3C00481378481338A21418A2
+7E7EB41300EA7FF06CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C13
+1EA27EA26C133CA26C137838FF01F038E3FFC000C0130017207E9E1C>115
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fv cmbx12 12 58
+/Fv 58 123 df<DB0FFFEB03FF4AB5D8C03F13C0020F02F1B512E0027F91B612F0902701
+FFF8039038FE1FF849018002F813FC010F4948EBF03F49484913E0495A4A15C0495AF11F
+F801FF16804A6DEC07E070EC018096C7FCABBA12F0A5C69026E000030180C7FCB3B0007F
+D9FFC1B67EA546467EC541>11 D<EA07C0EA1FF0EA3FF8EA7FFC12FF13FEA213FFA47E7E
+7EEA07CFEA000FA2131F131EA2133EA2133C137C13F8A2EA01F0120313E0EA07C0EA1F80
+1300121E120C1022788E1F>44 D<B612F8A91D097F9A25>I<EA07C0EA1FF0EA3FF8EA7F
+FCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F>I<EE01C0EE03E01607A2160F17
+C0161F1780A2163F17005E167EA216FE5E15015EA215035EA215075E150F5EA2151F5E15
+3F93C7FCA25D157E15FE5DA214015D14035DA214075D140F5DA2141F5D143F92C8FCA25C
+147EA214FE5C13015CA213035C13075CA2130F5C131F5CA2133F91C9FC5B137EA213FE5B
+12015BA212035BA212075B120F5BA2121F5B123F90CAFCA25A127E12FE5AA25A12782B64
+7ACA38>I<EC3FF849B5FC010F14E0013F14F890397FF01FFC9039FFC007FE4890380001
+FF48486D1380000716C049147F000F16E049143F001F16F0A2003F16F8A249141F007F16
+FCA600FF16FEB3A3007F16FCA56C6CEC3FF8A3001F16F0A2000F16E06D147F000716C06D
+14FF6C6C4913806C6D4813006C6D485A90397FF01FFC6DB55A010F14E001031480902600
+3FF8C7FC2F427CC038>I<EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3AD
+B712FCA5264177C038>I<ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE
+3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881
+A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A
+90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A
+49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038>I<ECFFF0
+010713FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE
+001F16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FF
+FEC7FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3
+EA0FC0EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF04913
+00D80FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038>I<163F
+A25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E14
+7C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC
+123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E014
+3F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5
+FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C48
+15E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC748
+13C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480
+010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC0107903880
+7F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D
+13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F8
+9039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85B
+A4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A
+6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<121E12
+1F13FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E0078
+5D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D
+143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>I<EC7FF0
+0103B5FC010F14C0013F14F090397F801FFC3A01FC0003FE48486D7E497F4848EC7F8016
+3F484815C0A2001F151FA27FA27F7F01FE143F6D158002C0137F02F014006C01FC5B6E48
+5A6C9038FF83FCEDE7F86CECFFE06C5D6C92C7FC6D14C06D80010F14F882013F8090B7FC
+48013F14802607FC0F14C0260FF80314E04848C6FC496D13F0003F141F48481307496D13
+F8150000FF157F90C8123F161F160FA21607A36D15F0127F160F6D15E06C6C141F6DEC3F
+C06C6CEC7F80D80FFE903801FF003A07FFC00FFE6C90B55AC615F0013F14C0010F91C7FC
+010013F02D427BC038>I<EC7FF0903807FFFE011F6D7E017F14E09039FFE03FF0489038
+800FF848496C7E48488048486D7E001F80003F1680A2484815C08117E0A212FF17F0A617
+F8A45D127FA3003F5CA26C7E5D6C6C5B12076C6C133E6CEBC07C6CEBFFF8013F5B010F01
+C013F00101130090C8FCA217E05DA2EA03C0D80FF015C0487E486C491380A217004B5A15
+0F5E49495A6C48495A01C0EBFFE0260FF0035B6CB65A6C4AC7FC6C14F86C6C13E0D907FE
+C8FC2D427BC038>I<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7FA34B7F169F03
+1F80161F82033F80ED3E07037E80157C8203FC804B7E02018115F0820203814B137F0207
+815D173F020F814B7F021F8292C77EA24A82023E80027E82027FB7FCA291B87EA2498302
+F0C8FCA20103834A157F0107834A153FA249488284011F8491C97E4984133E017E82B602
+0FB612F0A54C457CC455>65 D<DCFFF01470031F01FF14F04AB6EAE0010207EDF803023F
+EDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C87E4948814948
+814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2007F1801A349
+94C7FC12FFAE127F7F1AF0A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6DEE
+0F806C6DEE1F006D6C5E6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE06D
+903AFFF001FF80023F90B6C7FC020715FC020115F0DA001F1480030001F8C8FC44467AC4
+51>67 D<B9FC18F018FE727E19E026003FFEC7001F13F805017F9438003FFF060F7F727F
+727F727F84737E737EA2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B0061
+62193F624F5A19FF624E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18
+F095C9FC4B447CC356>I<BA12F8A485D8001F90C71201EF003F180F180318011800A219
+7E193EA3191EA21778A285A405F890C7FCA316011603161F92B5FCA5ED001F1603160116
+00A2F101E01778A2F103C0A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807
+181F4DB5FCBBFC61A443447DC34A>I<BA1280A419C026003FFEC7121F1701EF007F183F
+181F180F180719E01803A31801A3EE01E0F000F0A419001603A31607160F167F91B6FCA5
+9138FE007F160F16071603A31601A693C9FCAFB712F0A53C447CC346>I<DCFFF0147003
+1F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701
+F0EC0FFF4901C0804990C87E4948814948814948167F4849163F4849161F5A4A160F485B
+19074890CAFC19035A5BA2007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC00
+01EBF000A27F7EA26C7FA26C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C0101
+01FE143F6D903AFFF001FF9F023F90B6120F0207EDFC030201EDF000DA001F02C0133003
+0001FCC9FC4C467AC458>I<B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9
+FCB3AAB7D88003B612FEA54F447CC358>I<B712E0A5D8001F90C7FCB3B3B3A4B712E0A5
+23447DC32A>I<B76C0103B512F8A526003FFEC93807E0004F5A4F5A077EC7FC614E5A4E
+5A4E5AF01F804EC8FC187E604D5AEF07F0EF0FC04D5A4DC9FC177E4C5AEE03F04C5A4C5A
+4C7EEE7FF04C7E5D4B7F4B7F4B7FED3F3FDB7E1F7F03FC806E486C7F4B7E4B6C7F038080
+4B6C7F4A7F717E84717F83717F85717F83717F85717F187F727E86727F84727F86727F84
+B76C90B612FCA54E447CC358>75 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A4
+60A360A2187EA218FE170117031707171F177FEE03FFB95AA539447CC343>I<B500FE06
+7FB512806E95B6FCA26F5EA2D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F
+1FA26E6C161EA26E6C163CA36E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6D
+EC0780A26F6CEC0F00A26F6C141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485A
+A26F6D485AA3706C48C7FCA293383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2
+705BA2B6057FB6128071C7FCA2173E171C61447CC36A>I<B64BB512FE8181A281D8003F
+6D91C7EA780081013D7F81133C6E7E6E7F6E7F6E7F6E7F82806E7F6E7F6F7E6F7F83816F
+7F6F7F6F7F6F7F6F7F8382707F707F707F707F8482707F707F717E7113807113C019E083
+7113F07113F87113FC7113FE19FF847213F884848484A28484197F193F191FA2190F1907
+B61603190119001A78A24F447CC358>I<923807FFC092B512FE0207ECFFC0021F15F091
+267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F
+7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982
+003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0
+A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C
+4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C00200
+4AC8FC030713C047467AC454>I<B9FC18F018FE727E19E0D8001F90C7000F7F05017F71
+6C7E727E727E721380A21AC084A21AE0A91AC0A24E1380A21A00604E5A4E5A4D485A050F
+5B92B712C096C7FC18FC18C092CBFCB3A7B712E0A543447DC34D>I<B812F8EFFFC018F8
+18FE727ED8001F90C7003F13E005037F05007F727E727E727EA28684A286A762A24E90C7
+FCA24E5A61187F943801FFF005075B053F138092B7C8FC18F818E018F892C77FEF3FFF05
+0F7F717F717FA2717FA2717FA785A61B0F85A2187F73131F72141EB700E06DEB803E72EB
+E0FC72EBFFF8060114F0726C13E0CC0007138050457DC354>82 D<DAFFE0131C010701FE
+133C013F9038FF807C90B6EAE0FC4815F9489038801FFF3907FC00014848EB007F484814
+3F4848140F491407007F15035B1601160012FF177CA27FA26D153C7F7F6D92C7FC6C7EEB
+FFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C826C6C81011F81010781130002
+0F80140003077FED007F82040F1380828212F082A282A27EA218007EA26C5D6C5E6D1403
+6D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F80714FC48C6
+14F0480107138031467AC43E>I<003FBA12E0A59026FE000FEB8003D87FE09338003FF0
+49171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A2
+0107B8FCA545437CC24E>I<B792B6FCA526003FFECAEAFC00806D606F15016D60811903
+6D606F15076D606F150F6D6081191F6D6D93C7FC61027F163E6F157E023F167C8119FC6E
+6D5C18016E5E7013036E5E8218076E6D5C180F6E5E70131F6E93C8FC705B037F143E8218
+7E033F147C7013FC6F5C17816F5C17C117C36F5C17E76F5C17FF6F5CA36F91C9FCA2705A
+A2705AA3705AA2705AA2705AA250457EC355>86 D<903801FFE0011F13FE017F6D7E48B6
+12E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FC
+A40203B5FC91B6FC1307013F13F19038FFFC01000313E0000F1380381FFE00485A5B127F
+5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CEC
+E01FC66CEB8007D90FFCC9FC322F7DAD36>97 D<EB7FC0B5FCA512037EB1ED0FF892B57E
+02C314E002CF14F89139DFC03FFC9139FF000FFE02FCEB03FF4A6D13804A15C04A6D13E0
+5CEF7FF0A218F8173FA318FCAC18F8A2177F18F0A3EFFFE06E15C06E5B6E491380027C49
+1300496C495A903AFC1FC07FFC496CB512F0D9F00314C049C691C7FCC8EA1FF036467DC4
+3E>I<EC3FFC49B512C0010F14F0013F14FC90397FF003FE9039FFC001FF0003495A4849
+4813805B120F485AA2485A6F1300007F6E5AED00784991C7FCA212FFAC6C7EA3123F6DEC
+03C0A26C6C1407000F16806D140F6C6DEB1F006C6D133E6C01F05B3A007FFC03F86DB55A
+010F14C0010391C7FC9038003FF82A2F7CAD32>I<EE03FEED07FFA5ED001F160FB1EC3F
+E0903803FFFC010FEBFF8F013F14CF9039FFF807FF48EBC00148903880007F4890C7123F
+4848141F49140F121F485AA3127F5BA212FFAC127FA37F123FA26C6C141FA26C6C143F00
+07157F6C6C91B5FC6CD9C00314FC6C9038F01FEF6DB5128F011FEBFE0F010713F8902600
+7FC0EBF80036467CC43E>I<EC3FF80103B57E010F14E0013F8090397FF83FF89039FFC0
+07FC48496C7E48496C7E48486D1380485A001FED7FC05B003FED3FE0A2127F5B17F0161F
+12FFA290B7FCA401F0C9FCA5127FA27FA2123F17F06C7E16016C6C15E06C6C14036C6DEB
+07C06C6DEB0F806C01F0EB3F0090397FFE01FE011FB55A010714F0010114C09026001FFE
+C7FC2C2F7DAD33>I<EDFF80020F13E0027F13F049B512F849EB8FFC90390FFE0FFE9038
+1FFC1F14F8133FEB7FF0A2ED0FFCEBFFE0ED03F0ED00C01600ABB612F8A5C601E0C7FCB3
+B0007FEBFFE0A527467DC522>I<DAFFE0137E010F9039FE03FF80013FEBFF8F90B812C0
+48D9C07F133F489038001FF84848EB0FFC4848903907FE1F80001F9238FF0F00496D90C7
+FCA2003F82A8001F93C7FCA26D5B000F5D6C6C495A6C6C495A6C9038C07FF04890B55A16
+80D8078F49C8FC018013E0000F90CAFCA47F7F7F90B612C016FC6CEDFF8017E06C826C16
+FC7E000382000F82D81FF0C77ED83FC014074848020113808248C9FC177FA46D15FF007F
+17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B07FFC001FFF0000190B612C06C6C92C7FC
+010F14F8D9007F90C8FC32427DAC38>I<EB7FC0B5FCA512037EB1ED07FE92383FFF8092
+B512E002C114F89139C7F03FFC9138CF801F9139DF000FFE14DE14FC4A6D7E5CA25CA35C
+B3A7B60083B512FEA537457CC43E>I<137C48B4FC4813804813C0A24813E0A56C13C0A2
+6C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>I<EC
+03E0EC0FF8EC1FFCEC3FFEA2EC7FFFA5EC3FFEA2EC1FFCEC0FF8EC03E091C7FCAAEC01FF
+0103B5FCA5EB000F80B3B3A7EA1F80EA3FC0EA7FE0EAFFF0EC0FFEA215FC141F01E013F8
+007FEB3FF0393FC0FFE06CB512806C1400000313FCC613C0205A86C522>I<EB7FC0B5FC
+A512037EB293387FFFE0A593380FE0004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037F
+C8FC15FEECC1FCECC3FE14C7ECDFFF91B57E82A202F97F02E17F02C07FEC807F6F7E826F
+7E816F7F836F7F816F7F83707E163FB60003B512F8A535457DC43B>I<EB7FC0B5FCA512
+037EB3B3B3A3B61280A519457CC420>I<90277F8007FEEC0FFCB590263FFFC090387FFF
+8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003
+D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7
+B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF8092B512E0028114
+F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7
+B60083B512FEA5372D7CAC3E>I<EC1FFC49B512C0010714F0011F14FC90397FF80FFF90
+26FFC0017F48496C7F4848C7EA3FE000078248486E7E49140F001F82A2003F8249140700
+7F82A400FF1780AA007F1700A46C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEB
+FFE06C6D485B27007FF80F90C7FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD
+38>I<90397FC00FF8B590B57E02C314E002CF14F89139DFC03FFC9139FF001FFE000301
+FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017
+FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07FFC02CFB512F002C314C0
+02C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<90387F807FB53881FFE0028313F0
+028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E092
+C7FCA35CB3A5B612E0A5272D7DAC2E>114 D<90391FFC038090B51287000314FF120F38
+1FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFF
+F014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F0
+143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00
+FC5CD8F03F13E026E007FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130FA2131FA2
+133F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F
+150790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C>I<D9
+7FC049B4FCB50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713
+FE9138F807E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>I<B69038
+03FFFCA5000101E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E130301
+0F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8
+023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>I<
+B5D8FE1FB539801FFFF0A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E1601
+017F6E6C5CA26E011F1403013F6F5C6E013F1407011F6F5CA26E0179140F010F048090C7
+FC6E01F95C6D02F0EBC01E15806D902681E07F5B18E003C3157C6D9139C03FF07815E76D
+DA801F5B18F803FF14F96E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA2
+4B7F02075DA26E48147C4B143C4C2C7EAB51>I<B500FE90383FFFF0A5C601F0903803E0
+006D6C495A013F4A5A6D6C49C7FC6E5B6D6C137E6DEB807C6D6D5A6DEBC1F0EDE3E06DEB
+F7C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A7F4A7F8291381F3FFCEC3E1F027C7F4A6C
+7E49486C7F01036D7F49487E02C08049486C7F49C76C7E013E6E7E017E141FB500E090B5
+12FCA5362C7EAB3B>I<B6903803FFFCA5000101E09038003E006C163C80017F5D8017F8
+013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E
+6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5A
+A26E5AA21578A215F85D14015D001F1303D83F805B387FC007D8FFE05B140F92C9FC5C14
+3E495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01FC36407EAB3B>I<001FB71280A4
+9026FC001F130001E0495A5B49495A90C7485A48495B123E4A5B4A5B003C495BA24A90C7
+FC4A5A4A5AC7FC4A5A495B495BA2495B499038800780491300A2495A4948130F49481400
+A2485B48495B485BA248495B4890C75A48485C15034848EB1FFEB7FCA4292C7DAB32>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fw cmsl10 10.95 8
+/Fw 8 86 df<121EEA3F80EA7FC012FFA41380EA7F00123C0A0A788919>46
+D<1703EF0780170FA2EF1F00A2173EA25FA25FA24C5AA24C5AA24C5AA24C5AA24CC7FCA2
+163E167E167C5EA24B5AA24B5AA24B5AA24B5AA24BC8FCA2153EA25DA25DA24A5AA24A5A
+A24A5AA24A5AA24AC9FCA2143EA25CA25CA2495AA2495AA2495AA2495A131F91CAFC133E
+A25BA25BA2485AA2485AA2485AA2485AA248CBFCA2123EA25AA25AA21270315B7FC32D>
+I<EC07F8EC3FFF9138FC0FC0903903F003E0903907C001F0D90F8013F849C7FC013E14FC
+017E147C017C147E13FC485AA20003157F5B1207A2120F5BA2121F16FF5BA2123FA44848
+EB01FEA648C7EA03FCA5ED07F8A25A16F0A2150F16E0A3ED1FC0A21680007E143F160015
+7E123E003F5C4A5AD81F805B000FEB07E06C6C485A2603F03FC7FC3800FFFCEB1FE0283F
+79BC2D>I<ED7F80913803FFE091380FC0F091383E003802FC131C495A494813FE903807
+E003EB0FC090381F8007133FD97F0013FC01FE1303ED01F0484890C7FC1203A2485AA212
+0F5BA2001FEB3F809038E0FFE0393FE3C0F89038E7007C01EE7F01FC133F4848EB1F80A2
+4914C05B16E0A2485AA216F05BA2ED3FE0A290C7FCA4157F16C0A316804814FF007E1500
+007F5C14016C5C4A5A6C6C485A4A5A6C6C485A2607E07FC7FC3803FFFEC613F8EB3FC027
+3F78BC2D>54 D<EA0380120713E090B712805AA217005E485D5E001EC85A484A5A00385D
+150300784A5A00704AC7FC151E5D485CC8127015F04A5A4A5A4A5A4AC8FC140E141E5C14
+7C14785C1301495AA213075C130F495AA2133F91C9FC5BA25B5B1201A312035BA21207A3
+485AA5121F5BA26C5AEA0780294074BD2D>I<90263FFFE0023FB5FC6F16FEA29026003F
+F8020313C0021F030013004A6C157C023B163C6F15381439810238167802787FDA707F15
+7082153F82031F15F002F07FDAE00F5D8215078203031401010180DAC0015D8281178004
+7F1303010315C04A013F5C17E0161F17F0040F1307010715F891C7000791C7FC17FC1603
+17FE04015B4915FF010E6E130E188E177F18CEEF3FDE011E16FE011C6F5AA2170FA21707
+133C01386F5A133C017C150113FE2607FF801400B512FC18705C483E7DBD44>78
+D<9238FF80070207EBE00F021FEBF81E91387F00FE02FCEB1F3ED903F0EB0FFE49481307
+494813034AEB01FC49C7FC491400133E137E177C491578A57F1770A26D1500808080EB7F
+FEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F02031480DA003F13C0150315
+00EE7FE0163F161FA2160F121CA31607160F003C16C0A31780003E151F1700007E5D007F
+153E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC7FCD8E0
+0713F839C0007FC030427BBF33>83 D<B600E090B512FC4B15F8A2000101C0C7000F1300
+6C49EC03FCEF01F091C9FC60A317015A495EA417031203495EA4170712074993C7FCA45F
+120F49150EA4171E121F49151CA4173C123F491538A31778177017F05F001F15015F1603
+6D4A5A000F93C8FC5E6C6C141E6C6C5C000115F86C6C495A017FEB07C090393FC03F8090
+260FFFFEC9FC010313F89038007FC03E4073BD44>85 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fx cmbx12 14.4 43
+/Fx 43 117 df<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF8
+49486D7E49486D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A2
+4817FC49157FA3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A3
+6C17F0A26C6D4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF890
+3A0FFF81FFF06D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48
+D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A600
+7FB712FEA52F4E76CD43>I<EC3FFE0103B512E0010F14FC013F14FF90B712C048D9C07F
+7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F48488001F01680486C6E13C07F
+486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05EA218C05E1880A24C1300
+5F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC4A5A5D4A48
+EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F80140749C8FC013E150F
+017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>I<91380FFFC091B512FC
+0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D8
+07FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005F
+A24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113
+F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8
+487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A13
+80D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F
+1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D
+5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C
+5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E
+127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>I<D80380150ED807E0157E
+01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E16F016C093C8FC15F801E190C9
+FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E9026FFF8077FDAC0017F49C713F8
+496E7E49143F4981496E7E6C481680C9FC18C08218E0A418F0A3EA0FE0487E487E487E48
+7EA418E0A35B6C484A13C05B491680003EC85A003F17006C6C4A5A6D5D6C6C4A5AD807F8
+495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC6D14F8010314C09026007FF8C8
+FC344F79CD43>I<ED0FFF92B512E0020780021F14FC91397FFE03FE903A01FFF0007F49
+01C0EB3F804990C7121F4948EC7FC0494814FF49484913E049485B01FF5C485BA2485B5A
+A2486F13C04A6D1380486F1300177E94C7FC5AA291CAFC5AA21508913801FFF8020713FF
+B54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D7E7013804A15C0A24A15E07013F05C18
+F8A491C714FCA37EA67EA46C17F880A27E18F06C5D18E06C6D15C07E6E4913806C6D1500
+6D6C495A6D6CEB7FFC6DB448485A6D90B55A010315C0010092C7FC023F13FC020713C036
+4F7ACD43>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A3FE0003F
+FCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA2121F7FA2
+7F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B9238FE1F
+F86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC010781011F
+81491680EBFFE748018115C048D9007F14E04848011F14F048487F48481303030014F848
+4880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F17F06D15
+1FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE6C01FCEB
+FFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>56
+D<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F80167E8304
+FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F81168083033F8293
+C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87EA24A83A3DA3F
+80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A82010785A24A82010F
+855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65 D<BA12C019FEF1FFC01AF0
+1AFCD8000701F0C7000313FFDE007F7F737F070F7F737F878587858785A287A84F5BA263
+616361634F5B4F5B077F90C7FC4E485A060713F892B812E097C8FC861AF003F0C7000313
+FE9539003FFF80070F13E0737F07017F87737F747E1C807413C0A27413E0A31CF0A386A3
+62A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F13F04EB55ABC128098C7FC
+1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0047FD9FFC013030307B600F813
+07033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF9
+4A01800203B5FC494848C9FC4901F8824949824949824949824949824990CA7E494883A2
+484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280
+A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D6D
+4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07
+FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F93C8FC030715FCDB007F14
+E0040101FCC9FC525479D261>I<BA7E19FCF1FF801AF01AFCD8000701F0C7000F13FF06
+0014C0071F7F070713F807017F737F747E747F747F86747F747F8886888688A2757EA31D
+8087A21DC0A51DE0A387A963A31DC0A51D80A2631D00A3515AA2646264505B6264505B50
+5B5090C7FCF2FFFE4F5B07075B071F5B96B512C0060F91C8FCBB5A1AF01AC007FCC9FC19
+805B527CD167>I<BC1280A5D8000701F8C7000114C0F0001F19071901851A7F1A3F1A1F
+A2F20FE0A21A07A31A03A318F81BF01A01A497C7FC1701A317031707170F177F92B6FCA5
+9238F8007F170F170717031701A317001B3EA31B7CA395C8FCA21BFCA21BF8A21A01A31A
+031BF01A071A0FA21A1F1A3FF27FE0F101FF1907191F0603B5FCBCFCA21BC0A34F517CD0
+58>I<BB12FEA5D8000701F8C700077FF0007F191F190785858586861B80A21A1FA31A0F
+A41BC006F81307A497C7FCA31701A317031707170F177F92B6FCA59238F8007F170F1707
+17031701A31700A795C9FCB3B812F8A54A517CD055>I<932601FFFCEC01C0047FD9FFC0
+13030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7383FF0
+FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982494982
+4990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA298C8FC
+5CA2B5FCAE6C057FB712E0A280A36C94C7003FEBC000A36C7FA36C7FA27E6C7FA26C7F6C
+7FA26D7E6D7F6D7F6D6D5E6D7F6D01FC93B5FC6D13FF6D6C6D5C6E01F0EC07FB020F01FE
+EC1FF10203903AFFF001FFE0020091B6EAC07F033FEE001F030703FC1307DB007F02E013
+01040149CAFC5B5479D26A>I<B8D8C003B8FCA5D8000701F8C9001FEBE000B3AE92BAFC
+A503F8C9121FB3B1B8D8C003B8FCA560527CD169>I<B812C0A5D8000701F8C7FCB3B3B3
+B2B812C0A52A527CD132>I<027FB71280A591C76C90C7FCB3B3B3EA07F0EA1FFC487E48
+7EA2B57EA44C5AA34A485B7E49495BD83FF8495BD81FE05DD80FFC011F5B2707FF807F90
+C8FC000190B512FC6C6C14F0011F14C0010101F8C9FC39537DD145>I<B800C091B612F8
+A5D8000701F8C90003EBF8009738007F8051C7FC505AF203F8F20FF0505A505A505A50C8
+FCF101FCF107F84F5A4F5A4F5A4F5A07FEC9FCF003FC4E5A4E5A4E5A4E5A4E5ADD01FECA
+FC4D5A4D5A4D5A4D7E173F4D7E4C487E4C7F5E4C804C804C80EEFF7F9226F9FE3F7FDBFB
+FC809226FFF81F7F4C7EDCC0077F0480804C7E4B6D804B6D804B8284727F727F8684727F
+727F8784728087737F85737F87737F85737F88857380747F888697B512FCB800C0013FEC
+FFFEA55F527CD169>I<B812F8A5D8000701F8CAFCB3B3A91A7CA41AFC1AF8A51901A319
+03A219071AF0190FA2191F193F197F19FF180360183F4DB5FCBB12E0A546527CD151>I<
+B600FC073FB512FE6F61A26F96B6FCA2D80007F5C00070EF01EFA202EF6DEF03CFA202E7
+6DEF078FA202E36DEF0F0FA202E16D171EA302E06D173CA26F6C1778A26F6C17F0A26F6D
+ED01E0A26F6DED03C0A36F6DED0780A26F6DED0F00A26F6D151EA26F6D5DA3706C5DA270
+6C5DA2706D495AA2706D495AA2706D495AA3706D49C7FCA2706D131EA2706D5BA2716C5B
+A3716C5BA271EB81E0A271EBC3C0A271EBE780A27101FFC8FCA3715BA2715BA2725AA272
+5AA2D93FFC6F5AB74DB712FEA2725AA2725A77527CD180>I<B600FC93B7FC8181A282D8
+00076E9239003FFC0070EE07E08282A28202EF7F02E77F02E380A202E18002E0806F7F6F
+7F6F7FA26F7F6F7F6F806F80A26F80707F707F707F707FA2707F7080708070808583717F
+717F717F717FA27114807114C07114E07213F07213F8A27213FC7213FE7213FF721487A2
+7214C77214E77313F77313FF85A285858585A28586868686A286868686A2D93FFC187FB7
+173F1B1F1B0F1B07755A60527CD169>I<93380FFFC00303B6FC031F15E092B712FC0203
+D9FC0013FF020F01C0010F13C0023F90C7000313F0DA7FFC02007F494848ED7FFE4901E0
+ED1FFF49496F7F49496F7F4990C96C7F49854948707F4948707FA24849717E48864A8348
+1B804A83481BC0A2481BE04A83A2481BF0A348497113F8A5B51AFCAF6C1BF86E5FA46C1B
+F0A26E5F6C1BE0A36C6D4D13C0A26C6D4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D
+6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B90C7FC6D6D4B5A6D01FF02035B023F01E001
+1F13F0020F01FC90B512C0020390B7C8FC020016FC031F15E0030392C9FCDB001F13E056
+5479D265>I<BAFC19F819FF1AE086D8000701F0C7001F13FC060113FF726C13807313C0
+070F13E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61A21BF84F13F04F13E061
+4F13C04F13004E485A061F5B92B812F01AC04FC7FC19E003F8CBFCB3AEB812C0A550527C
+D15C>I<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0
+023F90C7000313F0DA7FFC02007F902601FFF0ED3FFE49496F7E49496F7F49496F7F4990
+C96C7F4948707F4948707F01FF854A177F48864849717EA24849711380A2481BC04A8348
+1BE0A24A83481BF0A3481BF8A291CB7EA3B51AFCAF6C1BF8A26E5FA36C1BF0A36C6D4D13
+E0A36C1BC06E5F6C1B806E5F6CDB01FE16006C6D902607FF80495A4C13E06C6D013F6D49
+5A017F91267F03F85C6D6C90277C00FC015B6D6C49D97E035B6D01806E485B6D6D48D91F
+8F5B6D01E0039F90C7FC6D01F06EB45A6DD9FCF85DDA3FFF6E13F0020F6D4913C0020301
+FF90B5C8FC020091B512FC031F180C0303181EDB001FEBE3FE93C7EA01FF74133E74137E
+7413FEF2F8077290B5FC1CFCA285A21CF8A2851CF07314E0A27314C0731480731400735B
+9638007FF8F21FE0576A79D265>I<B912F0F0FF8019F819FF1AC0D8000701F0C714F006
+0F7F060113FE727F737F737F85737F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC
+4F5A06035B060F13F095B512C092B8C9FC19F819E019F89226F0000313FE9439007FFF80
+727F727F727F727F727F8684A28684A787A71D1C75133EA38575137E73157C7513FC7314
+01B86C6D9038F803F807039038FE07F07390B512E0736C14C0080F1400CEEA7FFC5F537C
+D164>I<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC006D
+5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F82
+A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFFC0
+17F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F15
+C0ED007F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA26C
+EFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFFC0
+03FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D24B
+>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F49
+193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912F0
+A553517BD05E>I<B800C00103B612FCA5D8000701F8CAEBF000F31F80B3B3B11B3FA26D
+97C7FC81637F1B7E6D6D17FE505A6E7E505A6E6D15076E4D5A6E6D4B5A6E6D4B5A6E01F8
+4B5A6E6DDA03FFC8FC6E6CB46CEB0FFE6F9039F001FFF8030F90B65A030316C0DB007F92
+C9FC040F14F8DC007F13805E537CD167>I<B700FE031FB512FEA5D8001F01F0CA383FFE
+00F307F06D626F170F6D62811B1F6D6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A01
+6E6D5E1A036E60701507A26E6D5E1A0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E14
+7E1AFE6F5E711301A26F6D5C19036F6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F
+93C9FC715BA26FEC807E19FE706D5A18C1705C18E3705C18F318F770EBFFE0A2705CA270
+5CA37091CAFCA2705BA2715AA3715AA2715AA2715A715A5F537DD166>I<B700FC017FB6
+00FE91B612F0A5D8003F01C0C8001F01E0C9EBF8006F71EE0FC06D7161876F1C1F6D7196
+C7FC6F8373606D1E3E6F836D7160876F1CFC6D666F4B801F016D66704A806E525A88704A
+17076E059F5F70021F80080F160F6E6570023F806EDC3E074CC8FC8870027E5F6EDC7C03
+163E7002FC804F6C167E6E1C7C700101814F6C16FC6E745B70010317016E4C6D5D060716
+C00580496D14036F63DDC00F16E04F6D14076F07F05BDDE01F170F6F92C76C5D1DF8DDF0
+3E6E141F6F98C9FCDDF87E16FC067C6E5C6FF1FE3EDDFCFC177E6F4A6E147C1DFFDDFFF0
+6E14FC6F62A24E816F62A270496F5BA24E817061A295C97E7061A270487090CAFCA37048
+705AA24D1601040360A27048705A84537DD18B>I<003FB7D88003B7FCA5D8000749C800
+0701F8C7FC6D6D9238007F806D6E93C8FC7015FE6D17016E6D5D704A5A6E16076E6D4A5A
+6E6D5D4F5A6E6D143F6E6D4A5A7191C9FC6E16FE6EECC00171485A6F5D6F6D485A6FEBF8
+0F71485A6F5D6F6D485AEFFF7F6F4ACAFC6F5C6F5CA2705B705B8482707F707FA2707F70
+80855E4C80855E4C80DC3FCF7F058F7FEE7F074C6C7FDB01FE814C7E4B486C8003076E7F
+4B48814C7F4B486D7F033F824C7F4BC76C7F4B6E7F4A5A4B6E804A486E800207844A4881
+4B6F7F4A4883023F824A486F7F92C96C7F02FE840101830103718090263FFFC084B76C01
+03B712F8A55D527CD166>I<B8030FB61280A5D8000F01FCCA003F90C7FC6FEF07F86D6D
+606D4F5A826D6E4C5A6D4F5A826E6D4CC8FC6E18FE826E6D4B5A6E4D5A826E6D4B5A6E4D
+5A836E6E4A5A6E4D5A836F6D4AC9FC6F5E715C6F6D495A6F1503715C6F6D495A6F150F06
+805B6F6E485A6F153F06E05B706D48CAFC705C725A70EBFDFC7013FF61705C82705C6182
+715B96CBFCB3AA030FB712F8A561527ED166>I<001FBA12C01AE0A40380C714C002F8C7
+5A02C0178091C8481400495D495F494B5B495D495F48484B5B5F495F94B55A5E90C85D4C
+91C7FC5E60003E4B5B5E604C5B5EC95C93B55A5D604B91C8FC5D5F4B5B5D5F4B5B5D5F92
+B55A5C5F4A91C9FC5C5E4A5B5C4CEC03E04A5B5C5E91B55A5B4C14074991C8FC4918C05D
+495B5B4B150F495B5B4B151F90B55A48183F5D4891C9127F4818FF4A5D48495D485F4A5D
+4849033F1380484CB5FC4A143FBBFCA47E435279D152>I<EC7FFF0107B512F0013F14FE
+90B77E48D9E00F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7F
+A26C90C7FC6C5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FF
+FC004813F0485B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F
+6C6D01F113F86C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC
+010713E0010101E090C8FC3C387CB641>97 D<EB3FF0B5FCA51203C6FCB3A4923801FFE0
+030F13FE033FEBFFC092B612F002F301017F913AF7F8003FFEDAFFE0EB0FFF03806D7F92
+C76C7F4A6E7F4A824A6E7FA2727EA285A28584A31A80AC1A00A44E5AA36118FF616E4A5B
+A26E4A5B6E4A5B6F495BDACFC04990C7FCDA87F0EB7FFC913A03FE03FFF849C6B612E049
+6D148049011F01FCC8FC90C7000313C041547BD24B>I<913801FFF8021FEBFF8091B612
+F0010315FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C
+5A485BA2486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C
+7F17076C6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F90
+38E01FF0010390B55A01001580023F49C7FC020113E033387CB63C>I<913803FFC0023F
+13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F48496D7E
+48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CAFCA6
+127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC3F80
+6D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC020113F0
+34387CB63D>101 D<D93FF0EB1FFCB591B512C0030314F0030F8092391FE07FFC92393F
+001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6
+D8F807B612C0A542367BB54B>110 D<913801FFE0021F13FE91B612C0010315F0010F90
+38807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890
+C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5F
+A26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF
+807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<90397FE003FEB59038
+0FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014
+EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>
+114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F
+4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15
+F06C816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC00
+7F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE90
+39FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147E
+A414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3
+A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B
+020313802A4D7ECB34>I E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fy cmbx12 17.28 5
+/Fy 5 54 df<B812C0AD2A0D7EA636>45 D<EA01FCEA07FF4813804813C04813E04813F0
+A2B512F8A76C13F0A26C13E06C13C06C13806C1300EA01FC151574942D>I<913801FFF8
+021FEBFFC091B612F8010315FF010F16C0013F8290267FFC0114F89027FFE0003F7F4890
+C7000F7F48486E7FD807F86E148048486E14C048486E14E048486F13F001FC17F8486C81
+6D17FC6E80B56C16FE8380A219FFA283A36C5BA26C5B6C90C8FCD807FC5DEA01F0CA14FE
+A34D13FCA219F85F19F04D13E0A294B512C019804C14004C5B604C5B4C5B604C13804C90
+C7FC4C5A4C5A4B13F05F4B13804B90C8FC4B5AED1FF84B5A4B5A4B48143F4A5B4A48C8FC
+4A5A4A48157E4A5A4A5AEC7F8092C9FC02FE16FE495A495A4948ED01FCD90FC0150749B8
+FC5B5B90B9FC5A4818F85A5A5A5A5ABAFCA219F0A4405E78DD51>50
+D<92B5FC020F14F8023F14FF49B712C04916F0010FD9C01F13FC90271FFC00077FD93FE0
+01017F49486D8049C86C7F484883486C6F7F14C0486D826E806E82487FA4805CA36C5E4A
+5E6C5B6C5B6C495E011FC85A90C95CA294B55A614C91C7FC604C5B4C5B4C5B4C5B047F13
+8092260FFFFEC8FC020FB512F817E094C9FC17F817FF91C7003F13E0040713F8040113FE
+707F717F7113E085717FA2717F85A285831A80A31AC0EA03FCEA0FFF487F487F487FA2B5
+7EA31A80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F000F5ED807FE92B55A6C6C6C
+4914806C01F0010791C7FC6C9026FF803F5B6D90B65A011F16F0010716C001014BC8FCD9
+001F14F0020149C9FC426079DD51>I<01C0EE01C0D801F8160F01FF167F02F0EC07FFDA
+FF8090B5FC92B7128019006060606060606095C7FC17FC5F17E0178004FCC8FC16E09026
+FC3FFCC9FC91CBFCADED3FFE0203B512F0020F14FE023F6E7E91B712E001FDD9E00F7F90
+27FFFE00037F02F801007F02E06EB4FC02806E138091C8FC496F13C04917E07113F0EA00
+F090C914F8A219FC83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57EA319FEA35C
+4D13FC6C90C8FC5B4917F8EA3FF001804B13F06D17E0001F5E6C6C17C06D4B1380D807FC
+92B512006C6C4A5B6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712C0010F93C7FC6D
+15FC010115F0D9003F1480020301F0C8FC406078DD51>53 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: Fz cmbx12 24.88 23
+/Fz 23 125 df[<EB1FE0EBFFFC00037F486D7E488048804880A24880A281B6FC81A281
+A416807EA37EA27E7E6C14BF6C143FC613FCEB1FE090C7FC157F1600A55D5DA214015DA2
+14035D1407A24A5AA24A5AA24A5A147F5D4AC7FC5B495A5C1307495A495A495AEBFFC048
+5B4890C8FC485A5B6C5A6C5A6C5A>33 70 111 270 65 39 D[<F31FE0F37FF8A2517EA2
+507FA3507FA25080A35080A25080A35080A25080A397B67EA24F81A34F81A24F82A34F82
+A24F82A21AFBDF3FF981A2DF7FF1811AF06207FF6D80A24E01C081871A804E6E80A24E01
+00828761060F6E81A24E48838761063F6E81A24E4883876106FF6F80A24D498388614D70
+80A24D90C8FC768160050F7081A260051F708160053F7081A260057F70816005FF7180A2
+604C7280604C7280A295CAFC4C72815F040F7281A294BDFC4C88A24C88A34C88A293BE7E
+05E0CB7E5F4B7480A24B497280A294CCFC4B7481A24B487381A25E031F7481A24B487381
+A25E037F7481A24B487480A25E4A7680A24A497480A293CEFC4A7681A24A4875814A7E01
+07B512FCB96C043FBA12FCA9>158 145 120 272 175 65 D[<BFFC1EFEF6FFE01FFCF7
+FF8020F020FC20FF8DC7000392CA001F15E00B0181776C800C1F807814FF0C03818A7881
+8E79808B8E8B8E8B8EA27980A4791580AB551500A4555CA26A676A676A555C9CB65AA254
+5D5492C7FC545C5414F80C3F5C545C53B612800B0F4AC8FC0B7F14F80A1FB612E095BBC9
+FC1FF81F801FF8F7FF8020F820FE95CBECFFC00C1F14F00C07807814FE0C006E7E798079
+8079807980798079808E79158023C08B23E08C23F0A223F88CA223FCA38C23FEAB5614FC
+A55614F8A39DB612F0A25515E06723C055158067551500555C555C9CB6FC545D0C075D0C
+1F15C09BB75A0B0F93C7FCC212FC6921E021800EFCC8FC20F020800DF0C9FC0CFCCAFC>
+143 142 120 269 165 I[<BC12C0A9C7000103E0C8FCB3B3B3B3B3B3B0BC12C0A9>74
+142 122 269 87 73 D[<BC12F8A9C7000303C0CEFCB3B3B3B3A5F8FF80A4672100A667
+A368A21F07A41F0FA3555AA21F3FA21F7FA21FFFA2666668666666666653B5FC65650B1F
+5C1D7F0A03B6FC1C1F0903B7FCC1FCA468A5>121 142 120 269
+140 76 D[<B900C00C7FB812E0729BB9FC72657265A37265A27265C70003A101F8C8FC72
+F51FEFA2706EF43FCFA3706EF47F8FA2706EF4FF0FA2706EF301FEA3706EF303FCA2706E
+F307F8A2706EF30FF0A2706EF31FE0A3716EF23FC0A2716EF27F80A2716EF2FF00A2716E
+4F5AA3716E4F5AA2716E4F5AA2716E4F5AA3716E4F5AA2726E4E5AA2726E4E5AA2726E4E
+C7FCA3726E4D5AA2726E4D5AA2726E4D5AA2726E4D5AA3726E4D5AA2736E4C5AA2736E4C
+5AA3736E4CC8FCA2736E4B5AA2736E4B5AA2736E4B5AA3736E4B5AA2736E4B5AA2746E4A
+5AA2746E4A5AA3746E4AC9FCA2746E495AA2746E495AA3746E495AA2746E495AA2746E49
+5AA2756E485AA3756E485AA2756E48CAFCA275ECF1FEA275ECFBFCA375ECFFF8A2755DA2
+755DA3765CA2765CA27691CBFCA2765BA34A6D715B49B512FEB900FC6F490303BB12E0A2
+765BA2765BA3775A0B1FC9FC>203 142 120 269 220 I[<BE12F8F5FFF01EFF1FE01FFC
+F7FF8020E020F820FEC700030380C8000781E2003F15C00B03810B00810C3F8078800C07
+807880788178818E8B8E8B8E8B8EA28EA28B8EA42380AC2300A46A67A26AA26A676A676A
+9CB65A6A665492C7FC545C0C1F5C545C9BB612E00B075D0B3F5D0A07B648C8FC95BB12F8
+20E0208055C9FC1FF09CCAFC1EF00BF8CBFC06C0D0FCB3B3B2BCFCA9>137
+142 120 269 159 80 D[<93260FFFF8163E4BB600E0153F031F03FE5D037FDBFFC05C02
+03B800F05B020F05FC5B4A05FF5B027FF0C00F91B526FE000FECF01F010302C0D9007F6D
+5A4991C800076D5A4901FC030090B6FC4901F0163F4949160F4901808290B5170192CBFC
+4849844849181F87484984A2484984874886A248498588A24887A388A2B58680A36E85A2
+80A26E8580A2818103F0725A6C6E96C7FC15FE8116E06C15FEEEFFE017FF6C17F0F0FF80
+6C18F8F1FFC06C19FCF2FF806C1AE01BF86C1AFE6C747E6D1AE0886D866D866D1AFF6D87
+6D87010087806E86020F86020386020086153F030F851501DB001F19801601DC000F18C0
+EF007F060717E0F0003F070316F0F1003F1A0F080315F81A00871B1F877514FCA287007F
+86486C85A288A388A36D86A31EF87FA37F1EF0A26D626D1CE0A27F6D5013C0A26E1B806E
+96B5FC6E1B0002F8606E4E5B6E626E6C5F03E04D5B03F84D5B03FE057F5BDBFFC093B55A
+04F803035C496CD9FF80021F91C7FCD9FC1F02FF49B55AD9F80792B75A496C19F049C661
+49011F18804901074DC8FC90C817F848031F16C048030003FCC9FC007C04011480>102
+146 115 271 129 83 D<93B512FC037FECFFF00207B8FC023F17E091B912F84918FE01
+07727E499126C0007F14E04901E0C7000F80496D020380496D020014FE6F6F7F90B57080
+6F6F8085486E6F807380A27380A28885886C5CA26D4982886D5B6D5B010713C0010190CA
+FC90CCFCA90603B7FC050FB8FC0403B9FC167F0307BAFC153F4AB7EA807F020FEDE00002
+3F02FCC7FC91B612E0010392C8FC4914FC011F14F04914C0495C90B548C9FC485C485C48
+5C485C5A5D485CA24891CAFCA3B6FC5CA397B6FCA461806C60F107EF6C6E150F6F16CF6C
+183F6FDB7F8F806C6EDBFF0F14E06C02FCDA03FE15FE6C6E91260FFC0791B5FC6C6E6CD9
+3FF817806C923AF803FFF003013F91B6487E010FEF8000010394C77E010004FC141F021F
+03F0140702010380DA007F1400DA000701F8CDFC695F79DD71>97
+D[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B296383FFFC00607B512FE063FECFFE0
+4DB712F8050716FF051F17C0057F17F094B5D8C00F8004F301FCC714FE04F701E0023F7F
+93B50080020F804DC86C14E005F80301804D6F804D707F05808294CA804C717F4C7180A2
+4C71808BA27680A28B88A28BA28BA3888BA52080B02000A56764A267A3676467A2525CA2
+67647062704D91C7FC704D5BA2714C5B7193B55A05F04B5CDCBFF84B5CDC1FFC030F5C4B
+6CB44B91C8FC7001C0027F5B4B6C01F00103B55A4BC601FF013F14F04B6D90B712C04B01
+1F94C9FC4B6D16FC4B010316F092C86C15804A030F02F8CAFC90CB49CBFC>113
+144 121 270 129 I<94387FFFC0040FB6FC93B712E0030716FC031F16FF037F17C04AB9
+12F00207DAF80380021F912680003F13FE4A49C7000F7F4A01F802038049B5486E804902
+C06E6C7F494A6F7F4991C9FC49727F4949707F4B84498490B548707F5A4B198048855D48
+1CC086481CE05D5A871DF05AA25D5AA21DF887A2B6FCA392BBFCA51DF00380CDFCA77EA4
+817EA37EA2817EA26CF307F06FF00FF87E816C1B1F6F19F06C1B3F6D6DF07FE06D7FF4FF
+C06D6E4C13806D6E5E6D02F04C13006D6EEE1FFE6D6E4C5A6D6C01FFEEFFF86E02E00203
+5B6E02FC021F5B02079126FFC003B55A6E92B7C7FC020060033F17F8030F17E003011780
+DB003F03FCC8FC040315C0DC000F01F8C9FC5D5F7ADD6A>101 D<F5FFC093260FFFFC03
+0F13F04BB600E0027F7F031F03FE49B512FE037F9226FF8007800203B8EAF01F020FDDFC
+3F15804A7148133F027FDA003F90B500F014C091B500F80107ED807F4902E00101ECFC00
+010702806D6C5B93C87E49496F7F49496F7F49496F6D6D1380491A8077130090B5486F6E
+6C5AF503F84875C8FCA2484A6F80A44887AB6C63A46C6E4B5CA26C63A26D6D4B5CA26D97
+C9FC6D6D4B5B6D6D4B5B6D6D4B5B705C010102E049B512E06D02F801075C4902FF013F5C
+4992B648CAFC496002F317F090260FE07F1680031F4BCBFC90261FC00115E0DB000F01FC
+CCFC013F91CFFCA3137FA280A380A28080806E7E15F092B812F06DF0FFE01BFEF3FFC06D
+1AF81CFE767E6D1BE06D87896D1BFE6D877F6E878A0103BD7E130F013F8890BEFC4802E0
+C9003F814891CBFC4801FC180F48490601804849727E484985884849737F88A2B55A88A6
+6E616C65A26E616C6D4F5B6C656E616C6D4F5B6C6D96B55A6C6D6C05035C6F5FC602F005
+1F49C7FC6D01FC057F5B6DD9FF800303B55A010F02F8033F14E06DDAFFE0010FB65A0101
+92B9C8FCD9003F19F8020F19E0020196C9FCDA001F17F0030194CAFCDB000192CBFC6A88
+7ADD74>103 D[<EC3FC0ECFFF0010313FC497F497F498049804980A290B67EA24881A86C
+5DA26D5CA26D5C6D5C6D91C8FC6D5B6D5B010013F0EC3FC091CAFCB3A3ED1FF0017FB5FC
+B7FCA9EA003F1307A27FB3B3B3B0B91280A9>49 144 119 271 65
+105 D[<ED1FF0017FB5FCB7FCA9EA003F1307A27FB3B3B3B3B3B3ACB912C0A9>50
+143 119 270 65 108 D<DB3FE0912601FFFC943801FFFC017FB5031FD9FFE0041FEBFF
+E0B792B600FC93B612FC060303FF030315FF060F04C0020F16C0063F04F0023F16F095B8
+6C91B87E4DD9FC036E49D9FC03804DD9C0006E49D9C000804D48C7003F6D4948C7003F7F
+DD0FF86EDB0FF880D8003F4B48714848830107DB3FC06E9126C03FC06E804D484E5A6D4B
+C86F48C881DCE1FE6FDAE1FE814D61DCE3F8DEF3F884DCE7F0F0F7F04D6F4B81DCEFC0F0
+FFC0A2DCFF804F84A294C993C9FCA24C61A34C61A44C61B3B3AFB900E090B900E090B912
+E0A9B35D77DCC2>I<DB3FE0913803FFFC017FB5033FEBFFE0B792B612F8060715FE061F
+6F7E4E16E095B87E4DD9FC03804DD9C000804D48C76C7FDD0FF880D8003FDB1FE0820107
+4B486E804D5A6D03FEC881DCE1FC815F04E385EEE7F04D81EEEFC0A2DCFF8084A294C9FC
+A25EA35EA45EB3B3AFB9D8E001B912C0A9725D77DC81>I<94381FFFF00407B612C0047F
+15FC0303B87E030F17E0037F17FC4ABAFC4A9126FC007F80020F02C0010714E04A49C880
+027F01F8033F13FC91B5486F7F4902C003077F494A6F804991C96C80494970804949717F
+49874949717FA290B548717F48884B83481D80A2481DC04B83481DE0A2481DF0A3484A71
+14F8A4481DFCA5B61BFEAF6C1DFCA56C6E4D14F8A36C1DF0A36C1DE06F5F6C1DC0A26C6E
+4D1480A26C1D006F5F6C646D6D4D5B6F94B5FC6D636D6D4C5C6D6E4B5C6D6E4B5C6D02F0
+031F5C6D6E4B91C7FC6D6C01FE92B512FC6ED9FFC001075C6E02FC017F5C020791B812C0
+020196C8FC6E6C17FC031F17F003031780DB007F03FCC9FC040715C0DC001F01F0CAFC67
+5F7ADD74>I<DB7FC049B47E90B6021F13F8B7027F13FE4DB67E4D15E04D814D814D0107
+7F94263FF00F7F94387FC01F4D48487FD8003F16000107DAC1FE491480EEC3FC6D5DEEC7
+F05F16CF5F16DF4D6D1400A204FFC76C5BA2735B4C6E5B735B070013C04C92C8FCA45EA6
+5EB3B3AAB912FCA9515D79DC5F>114 D<92261FFFF814F80203B638C001FC023FEDFC07
+91B8121F010317FF130F013F9038F8001F4990C8FCD9FFF8153F4801E0150F4849150348
+49814890CAFC197F4848173F191F485AA2007F180FA31907487EA27FA28002E0705A6E93
+C8FC14FC14FF15F06CECFF8016FCEEFFF06CEEFF8018F06C17FE727E6C18E0856C18FC6C
+846C727E6C856D84011F846D841303010084023F83140F020183EC001FDB007F16801603
+DC000F15C01700183F060F14E0007F1703486C82727E857F85857FA2857F1BC07FA27F1B
+806D5F7F1B006E5E6E5F6E163F6E4C5A02FC4C5A6E03035B6E6C4A5B03F0023F5B03FF01
+07B55A01F991B7C7FCD9F07F16FCD9E01F16F0D9800716C0D9000193C8FC48D9003F14F8
+007C020349C9FC4B5F78DD5C>I[<ED03FEA81507A5150FA4151FA3153FA2157FA215FFA2
+5CA25C5CA25C5C5C5C91B5FC13035B131F017F91B712F00007BAFCBBFCA7C74AC9FCB3B3
+AAF101FFB1616E17FE82A219076E17FC836EEE0FF871131F6E6EEB3FF071137F6E6EEBFF
+E06EDAFF0313C06E92B512806E1700033F5D6F5D03075D030015E0041F1480040001FCC7
+FC>72 132 124 258 90 I<DB0FF8F01FF0017FB594B6FCB74BB7FCA9D8003F94C77E01
+07190FA26D85B3B3B063A463A263A27F6398B6FCA26DF001FB7015036EEF07F3E00FE380
+6E6D151FE07FC314FF6E6D6CDAFF83EDFFC06E6E010313036E02FCEB3FFE6E91B612FC02
+0017F86F16E0031F16800303EDFE00DB007F14F8040102C093C8FC725E77DC81>I<007F
+B800C04AB71280A9D800034ACA000791C7FC6D080013F0775A6D6E4E5AA26E6E6064836E
+4F90C8FC836E4F5A836E4F5AA26E6E4C5AA26E6E5F1C3F6E6E5F1C7F836E4F5A846F4D5B
+846F4D90C9FCA26F6E4A5AA26F6E5D1B0F846F4D5A846F4D5A846F4D5AA26F6E4A5AA270
+6E5C627002C091CAFC6219E0704B5A19F0704B5AA2706E485AA2706E485AA27002FE5B1A
+7F19FF704B5AA2715DA27192CBFCA2715CA2715CA3715CA2715CA2715CA2715CA2725BA2
+7290CCFCA3725AA2725AA24E5AA24E5AA261187FA24E5AA24D5B13FE2603FF804A90CDFC
+000F13E0486D4A5A487F486D4A5AA260B56C141F4D5AA24D5A17FF604C5B4A4990CEFC6C
+5D4C5A6C49EB3FFC4A495A6C4948485A9026FE80075B270FFFC03F5B6C90B6CFFC6C5D6C
+15F86C6C5C011F14C0010749D0FC9038007FE071857CDB7B>121
+D<C5BD12FEA7E70780BBE8>124 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: FA cmr12 12 28
+/FA 28 122 df<EC03F0EC0FF8EC3E1EEC7C0E4A7E49487E130302E07F01071301A3EB0F
+C0A4150393CAFC14E05D1506150E5D1518010713386E5A156015E0ECF1C0DAFB800107B5
+12C06DB4C7FC5C4A9139007FFC000101EE1FE019806E6FC7FC0100160E497E495E496C6C
+1418010E1638496C6C1430011816709026381FE05C01705E496C6C1301D801C06D5C0003
+01071403D807806D91C8FC000F6D6C5B001F0101140E003F6E130C90C7EB801C48027F5B
+EEC0304891383FE070031F5B705AED0FF9923807FB806D6DB4C812C05E6F7E007F6E6D13
+016D6E6C14804C6C13036C6C496D1400001F912603CFF85B6C6C90260F07FC130E6C6C90
+263E01FE133C3D03FE01F800FF80F8C6B54890383FFFF0013F0180010713C0D907FCC890
+C7FC42497CC64C>38 D<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A78891B>46
+D<14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F4848EB07C04848
+EB03E0A2000F15F0491301001F15F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FE
+A56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F
+806C6CEB3F00013E137C90381F81F8903807FFE0010090C7FC28447CC131>48
+D<EC07FCEC3FFF91B512C0903903FC03E0903907E000F0D91FC0133849C71258017EEB01
+FC01FE1303491307485A485AA24848EB03F8000FEC01F092C7FC485AA3485AA3127FA290
+38007F80903801FFF090380780FC39FF0E003E49EB1F8049EB0FC049EB07E0136001E0EB
+03F04914F8150116FC5BED00FEA390C812FFA47EA57F123FA216FE121F15016D14FC120F
+ED03F86C7EED07F06C6C14E06C6CEB0FC06C6CEB1F80017EEB3F0090383F80FE90380FFF
+F8010313E00100138028447CC131>54 D<121CA2EA1F8090B712C0A3481680A217005E00
+38C8120C0030151C00705D0060153016705E5E4814014B5A4BC7FCC81206150E5D151815
+385D156015E04A5AA24A5A140792C8FC5CA25C141E143EA2147E147CA214FCA21301A349
+5AA41307A6130FAA6D5AEB01C02A457BC231>I<16C04B7EA34B7EA34B7EA34B7EA3ED19
+FEA3ED30FFA203707FED607FA203E07FEDC03FA2020180ED801FA2DA03007F160FA20206
+801607A24A6D7EA34A6D7EA34A6D7EA20270810260147FA202E08191B7FCA249820280C7
+121FA249C87F170FA20106821707A2496F7EA3496F7EA3496F7EA201788313F8486C83D8
+0FFF03037FB500E0027FEBFFC0A342477DC649>65 D<DB0FFE146092B500C013E0020314
+F0913A0FFC01FC0191393FC0003E02FFC7EA0F83D903FCEC03C74948EC01E74948EC00FF
+4948157F4948153F4948151F49C9120F485A491607120348481603A248481601A2484816
+00A2123FA2491760127FA31900485AAE6C7EA21960A2123F7FA2001F18E07F000F18C0A2
+6C6C160119806C6C160312016DEE07006C6C16066D6C150E6D6C5D6D6C5D6D6C15786D6C
+5D6D6C4A5AD900FFEC0780DA3FC0011FC7FCDA0FFC13FC0203B512F0020014C0DB0FFEC8
+FC3B487BC546>67 D<B56C020FB5FC8080C6040013F06D6CED1F80D96FF8ED0F00A2D967
+FC1506EB63FEA2EB61FF01607FA26E7E6E7EA26E7E6E7EA26E7E6E7EA26E7E6E7FA26F7E
+6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE1FF0EE0FF8A2EE07FC
+EE03FEA2EE01FF701386A2EF7FC6EF3FE6A2EF1FF6EF0FFEA217071703A217011700A201
+F0167E183E487ED80FFF161EB500F0150EA2180640447CC349>78
+D<B712FCEEFFC017F800019039C0000FFC6C6C48EB01FF9338007F80EF1FE0170FEF07F0
+18F8EF03FCA218FE1701A218FFA718FEA2170318FCA2EF07F818F0EF0FE0EF1FC0EF7F80
+933801FE00EE0FFC91B612F017800280C9FCB3AA3801FFE0B612C0A338447CC342>80
+D<B712E016FF17C000019039C0003FF86C6C48EB03FCEE00FF717E717E717E717E717EA2
+84170384A760A21707604D5AA24D5A4D5A4DC8FCEE01FEEE07F8EE3FE091B6C9FC16FC91
+3980007F80EE0FE0707EEE03FC707E160083717EA2717EA784A71A6084171FA21AE0716C
+13C02601FFE002071301B600C01680943801FC03943900FE0700CBEA3FFEF007F843467C
+C348>82 D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49
+EB03DF48486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7
+FC7F7FEA3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F8001
+0180D9001F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607
+A37EA36C16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A
+90393FC00FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>I<B600C0010FB5FC
+A3000101E0C813F026007F80ED1F80F00F00A21806B3B3A7180E6D6C150CA2181C131F6E
+1518010F163818306D6C1570606D6C14016D6C5D6D6CEC0780027F4AC7FC6E6C131EDA1F
+E0137C913907FC03F00201B55A6E6C1380DB07FCC8FC40467CC349>85
+D<EB07FC90383FFF809038F80FE03903C003F048C66C7E000E6D7ED80FC0137E486C137F
+6D6D7EA36F7EA26C5AEA0380C8FCA4EC0FFF49B5FC90380FFE1FEB3FC0EBFF00EA03FC48
+5A485A485A485A127F5B176048C7FCA3153FA36D137F007F14EF6D9038C7E0C0003F1301
+3A1FE00783F13B07F81E03FF802701FFFC0113003A001FE0007C2B2E7CAC31>97
+D<EC7F80903803FFF090380FC07C90383F000F01FCEB03804848EB01C00003140F4848EB
+1FE049133F120F485AA2485AED1FC0007FEC070092C7FCA290C9FC5AAB7E7FA2123F1630
+7F001F15706C6C146016E06C6C14C06C6C13010001EC03806C6CEB0700013F131E90381F
+C078903807FFF001001380242E7DAC2B>99 D<EB01FE903807FFC090381F03F090387E00
+FC49137E48487F485A4848EB1F80000F15C049130F121F484814E01507A2007F15F090C7
+FCA25AA390B6FCA290C9FCA67EA27FA2123F16306C7E1670000F15606D14E06C6C14C000
+0314016C6CEB03806C6CEB0700013E131E90381F80F8903803FFE0010090C7FC242E7DAC
+2B>101 D<EA01FC12FFA3120712031201B3EC01FE913807FFC091381E07F091383801F8
+02707FECE000D9FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F83F13FEA3
+2F457DC436>104 D<EA01E0EA07F8A2487EA46C5AA2EA01E0C8FCADEA01FC12FFA31207
+12031201B3B0487EB512F8A315437DC21C>I<143C14FFA2491380A46D1300A2143C91C7
+FCADEC7F80EB3FFFA31300147F143FB3B3AA123E127F39FF807F00A2147EA25C6C485A38
+3C01F06C485A3807FF80D801FEC7FC195785C21E>I<EA01FC12FFA3120712031201B3A2
+92381FFFE0A36F1300ED07F816E05E5E030EC7FC5D5D5D5D4A5A4A5A4AC8FC5CEC3F804A
+7E14FF9038FDCFE09038FF8FF01407496C7E01FC7F14016E7E81816F7E82151F6F7E8215
+07826F7E8282486C491380B5D8F81F13F8A32D457DC433>I<EA01FC12FFA31207120312
+01B3B3B3A5487EB512F8A315457DC41C>I<D801FC01FFEC1FE000FF010701E0EBFFFC91
+3B0F03F801E07F913C3C01FC07803F800007903C7000FE0E001FC0000349D97E1C130F26
+01FDC0D97F38804A143001FFDA3FF06D7E91C75BA2495DA3495DB3A8486C4A6C497EB5D8
+F81FB50003B512E0A34B2C7DAB52>I<3901FC01FE00FF903807FFC091381E07F0913838
+01F8000701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80
+B5D8F83F13FEA32F2C7DAB36>I<EC7F80903803FFF090380FC0FC90383E001F496D7E49
+6D7E48486D7E48486D7E48486D7E000F81A24848147E003F157FA290C87E481680A44816
+C0AA6C1680A26D147F003F1600A2001F157E6D14FE000F5D6D130100075D6C6C495A6C6C
+495A6C6C495A013E49C7FC90381FC0FE903807FFF89038007F802A2E7DAC31>I<3903F8
+03F000FFEB1FFCEC3C3EEC707F0007EBE0FF3803F9C000015B13FBEC007E153C01FF1300
+5BA45BB3A748B4FCB512FEA3202C7DAB26>114 D<90383FE0183901FFFC383907E01F78
+390F0003F8001E1301481300007C1478127800F81438A21518A27EA27E6C6C13006C7E13
+FC383FFFE06C13FC6C13FF6C14C06C14E0C614F0011F13F81300EC0FFC140300C0EB01FE
+1400157E7E153EA27EA36C143C6C147C15786C14F86CEB01F039F38003E039F1F00F8039
+E07FFE0038C00FF01F2E7DAC26>I<1306A5130EA4131EA3133E137EA213FE1201120700
+1FB512F0B6FCA2C648C7FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070
+903807E0E0903801FFC09038007F001E3E7EBC26>I<D801FC147F00FFEC3FFFA3000714
+01000380000181B3A85EA35DA212006D5B017E9038077F80017F010E13C06D011C13FE90
+380FC078903803FFF09026007F8013002F2D7DAB36>I<B539F001FFFCA3000790C7EA7F
+E06C48EC1F8000011600160E0000150C6D141C6D1418A26E1338013F1430A26D6C5BA26E
+13E0010F5CA26D6C485AA2ECF803010391C7FCA2903801FC06A2ECFE0E0100130CA2EC7F
+18A215B8EC3FB0A2EC1FE0A36E5AA26E5AA36EC8FCA21406A35CA25CA2123C007E5BB4FC
+5CA25CEAFE01387C0380D87007C9FCEA3C1EEA0FFCEA03F02E3F7EAA33>121
+D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: FB cmbx10 10.95 65
+/FB 65 122 df<EDFFFC021FEBFFFC147F49B6FC0107EBC01F90390FFE003FEB1FF8EB3F
+E04948137F01FF143F5C5A91C7121F160FABB8FCA50001903880000FB3AC007FD9FE03B5
+12F0A534407EBF3A>13 D<DBFFF8903807FFC0021F01FE017F13F8027FD9FF83B57E49B6
+00CF14FF01079028C03FFFFE007F90270FFE000F01F0133FD91FF84901C0497ED93FE049
+90C712FF49484A497F13FF4A495A5A91C76C5AA2041F6E5B040F6F5A081EC7FC97C8FCA6
+F21FE0BCFCA50001902780000FFCC7FC1A7FB3AB007FD9FE03B5D8F01FB51280A551407E
+BF57>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA313FEA3127F123F121FEA0FDEEA001EA2
+133E133CA2137C1378A213F8EA01F0A2EA03E0EA07C0EA0F80121FEA3F00121E120C0F20
+79BE1D>39 D<EC0780140F141FEC3E0014FE495A495A5C495A130F495A495AA249C7FC5B
+5B1201485AA212075BA2120F5B121FA3485AA4127F5BA512FFB0127FA57F123FA46C7EA3
+120F7F1207A27F1203A26C7E12007F7F6D7EA26D7E6D7E13076D7E806D7E6D7E143EEC1F
+80140F1407195A77C329>I<127012F8127C7EEA3F806C7E6C7E12076C7E7F6C7E6C7EA2
+137F80133F806D7EA280130FA280130780A36D7EA4807FA51580B01500A55B5CA4495AA3
+5C130F5CA2131F5CA2495A5C137F91C7FC13FEA2485A485A5B485A120F485A485A003EC8
+FC5A5A1270195A7AC329>I<147C14FE497EA5260C00FE1360003FEC01F8D87F80EB03FC
+01C0130701E0130F3AFFF87C3FFED87FFCEB7FFC01FE13FF263FFF7D13F8000F90B512E0
+00011500D8003F13F8010713C0A2013F13F848B6FC000F15E0003F017D13F8267FFE7C13
+FC01FC137FD8FFF8EB3FFE3A7FE0FE0FFC01C0130701801303D83F00EB01F8000CEC0060
+C6486C1300A56D5A147C27287AC334>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA313FEA3
+127F123F121FEA0FDEEA001EA2133E133CA2137C1378A213F8EA01F0A2EA03E0EA07C0EA
+0F80121FEA3F00121E120C0F20798D1D>44 D<B612E0A91B097F9823>I<EA0FC0EA1FE0
+EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC00E0E798D1D>I<161C163E167EA2
+16FE16FC150116F8A2150316F0A2150716E0150F16C0A2151F1680153F1600A25D157E15
+FE5DA214015DA214035D14075DA2140F5D141F5DA2143F92C7FC5C147EA214FE5CA21301
+5C13035CA213075C130F5CA2131F5C133F91C8FCA25B137EA213FE5B12015BA212035B12
+075BA2120F5B121F5BA2123F90C9FCA25A127E12FE5AA25A1278275B7AC334>I<ECFFE0
+010713FC011F13FF017F14C0D9FFE07F489038803FF03A03FE000FF848486D7EA248486D
+7E001F81A348486D1380A3007F16C0A500FF16E0B3A2007F16C0A5003F16806D5BA2001F
+1600A2000F5D6D13076C6C495A6C6C495A6C6D485A6C9038E0FFE06DB55A011F91C7FC01
+0713FC010013E02B3D7CBB34>I<140F143F5C495A130F48B5FCB6FCA313F7EAFE071200
+B3B3A8007FB612F0A5243C78BB34>I<903803FF80013F13F890B512FE00036E7E488126
+0FF80F7F261FC0037F4848C67F486C6D7E6D6D7E487E6D6D7EA26F1380A46C5A6C5A6C5A
+0007C7FCC8FC4B1300A25E153F5E4B5AA24B5A5E4A5B4A5B4A48C7FC5D4A5AEC1FE04A5A
+4A5A9139FF000F80EB01FC495A4948EB1F00495AEB1F8049C7FC017E5C5B48B7FC485D5A
+5A5A5A5AB7FC5EA4293C7BBB34>I<903801FFE0010F13FE013F6D7E90B612E04801817F
+3A03FC007FF8D807F06D7E82D80FFC131F6D80121F7FA56C5A5E6C48133FD801F05CC8FC
+4B5A5E4B5A4A5B020F5B902607FFFEC7FC15F815FEEDFFC0D9000113F06E6C7E6F7E6F7E
+6F7E1780A26F13C0A217E0EA0FC0487E487E487E487EA317C0A25D491580127F49491300
+D83FC0495A6C6C495A3A0FFE01FFF86CB65A6C5DC61580013F49C7FC010313E02B3D7CBB
+34>I<ED01F815031507A2150F151F153FA2157F15FF5C5CA25C5CEC1FBFEC3F3F143E14
+7C14FCEB01F814F0EB03E01307EB0FC0EB1F801400133E137E5B485A5B485A1207485A5B
+48C7FC5A127E5AB812F8A5C8387FF800AA49B612F8A52D3C7DBB34>I<00071538D80FE0
+EB01F801FE133F90B6FC5E5E5E5E93C7FC5D15F85D15C04AC8FC0180C9FCA9ECFFC00187
+13FC019F13FF90B67E020113E09039F8007FF0496D7E01C06D7E5B6CC77FC8120F82A317
+80A21207EA1FC0487E487E12FF7FA21700A25B4B5A6C5A01805C6CC7123F6D495AD81FE0
+495A260FFC075B6CB65A6C92C7FCC614FC013F13F0010790C8FC293D7BBB34>I<EC07FF
+023F13C049B512F001078049EB03FC90383FF80090397FE001FE9038FFC0034849487E48
+495AA2485A120FA2485A6F5A003F6E5A6F5A92C8FC485AA21402EC3FFE00FF496C7E01F9
+B512E001FB809138E03FF89039FF800FFC4A6C7E825B6F13804915C0A317E05BA4127FA5
+123FA26D15C0121FA2000F4A13806D150012076C6C495A6C6D485A6C9038E07FF86DB55A
+6D5C6D1480010749C7FC010013F02B3D7CBB34>I<121F7F13F890B712F0A45A17E017C0
+178017005E5E5A007EC7EA01F84B5A007C4A5A4B5A4B5A93C7FC485C157E5DC7485A4A5A
+A24A5A140F5D141F143F5D147FA214FF92C8FC5BA25BA3495AA3130FA5131FAA6D5A6D5A
+6D5A2C3F7ABD34>I<ECFFF0010713FE011F6D7E017F14E09039FFC07FF03A01FE001FF8
+48486D7E48486D7E1503485A8281121FA27F7F7F6D5B02C05B14F06C6D485A9138FE0FF8
+9138FF9FF06CECFFE06C5D5E6C92C7FC6C816D14E0011F80498090B67E48812607FE3F7F
+48486C1480381FF807D9F00114C048486C7E007F8049010F13E0150348487F81167FA216
+3FA36D15C0127FEE7F807F6C6CECFF006C6C5B01FEEB07FE3A0FFFC03FFC6C90B55A0001
+15E06C6C5C011F49C7FC010113F02B3D7CBB34>I<903801FFE0010F13FC013F13FF90B6
+12C04801E07F489038003FF048486D7E000F6E7E485A6F7E123F48488081178012FFA217
+C0A517E0A4007F5CA4003F5C6C7E5D6C7E00075C3903FF80FB6C13FF6C6C13F36D13C301
+0F018313C090380008031400A24B1380EA03F0487E486C1500487E4B5AA25E151F4B5A49
+5C6C48EBFFE049485B2607FC0F5B6CB6C7FC6C14FC6C14F06D13C0D90FFEC8FC2B3D7CBB
+34>I<EA0FC0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC0C7FCACEA0F
+C0EA1FE0EA3FF0EA7FF8EAFFFCA6EA7FF8EA3FF0EA1FE0EA0FC00E2879A71D>I<16FCA2
+4B7EA24B7EA34B7FA24B7FA34B7FA24B7FA34B7F157C03FC7FEDF87FA2020180EDF03F02
+03804B7E02078115C082020F814B7E021F811500824A81023E7F027E81027C7FA202FC81
+4A147F49B77EA34982A2D907E0C7001F7F4A80010F835C83011F8391C87E4983133E8301
+7E83017C81B500FC91B612FCA5463F7CBE4F>65 D<B812F8EFFF8018F018FC8426003FFC
+C7EA3FFF050F13807113C07113E08319F0A27113F8A719F05FA24D13E019C04D13804D13
+00EF3FFE933801FFF891B712E0188018F818FE02FCC7380FFF80050313C07113E07113F0
+19F8F07FFCA2F03FFEA219FFA38460A419FE187FA2F0FFFC4D13F85F4D13F0053F13E0BA
+12C0190018FC18F095C7FC403E7DBD4A>I<922607FFC0130E92B500FC131E020702FF13
+3E023FEDC07E91B7EAE1FE01039138803FFB499039F80003FF4901C01300013F90C8127F
+4948151FD9FFF8150F48491507485B4A1503481701485B18004890CAFC197E5A5B193E12
+7FA349170012FFAC127F7F193EA2123FA27F6C187E197C6C7F19FC6C6D16F86C6D150119
+F06C6D15036C6DED07E0D97FFEED0FC06D6CED3F80010F01C0ECFF006D01F8EB03FE6D90
+39FF801FFC010091B55A023F15E002071580020002FCC7FC030713C03F407ABE4C>I<B8
+12F8EFFF8018F018FC18FF26003FFCC76C13C005077F05017F716C7E727E727E727E7213
+80A27213C0A27213E0A21AF084A21AF8A41AFCA5197FA319FFA51AF8A41AF0A2601AE0A2
+4E13C0A24E13804E1300604E5A4E5A4D485A050713E0057F5BBA5A4EC7FC18F818C005F8
+C8FC463E7DBD50>I<BAFCA4198026003FFEC7123F1707170183183FA2181FF00FC0A318
+07EE07C0A3F003E0A3160F95C7FC161F163F16FF91B6FCA54AC6FC163F161F040F147CA2
+160719F8A593C71201A219F01803A21807A2180FF01FE0183F18FF1703173FBAFCA219C0
+A33E3D7DBC45>I<B912FEA48426003FFEC77E170F1703170084A284F01F80A3180FA2EE
+07C0A2F007C0A4040F90C7FCA2161F163F16FF91B6FCA54AC6FC163F161F160FA21607A6
+93C9FCACB712E0A53A3D7DBC42>I<922607FFC0130E92B500FC131E020702FF133E023F
+EDC07E91B7EAE1FE01039138803FFB499039F80003FF4901C01300013F90C8127F494815
+1FD9FFF8150F48491507485B4A1503481701485B18004890CAFC197E5A5B193E127FA349
+94C7FC12FFAB0407B612FC127F7FA3003F92C7383FFE00A27F7EA26C7FA26C7F6C7FA26C
+7F6C7FD97FFE157F6D6C7E010F01E014FF6D01F813036D9038FF801F010091B512F3023F
+15C00207ED803E02009138FE000E030701E090C7FC46407ABE52>I<B71280A526003FFE
+C7FCB3B3B0B71280A5213E7DBD28>73 D<B76C90B6FCA526003FFEC8D801FCC7FCF007F8
+4E5A4E5AF03F804EC8FC18FEEF03FC4D5A4D5AEF1FC04D5A4DC9FCEE01FE4C5A4C5AEE0F
+E04C5A4C5A16FF4B7F4B7F5D4B7F4B7F037F7F92B5FC6E486C7E9238F83FFF03F0804B7E
+4B6C7F4B6C7F0300804A7F707F707F84717E83717F85717F83717F85717F83727E85727F
+84B7D88007B612C0A54A3E7DBD52>75 D<B712E0A526003FFEC9FCB3AD183EA4187E187C
+A418FCA21701A2EF03F8A21707170F171F177FEE01FF160FB9FC18F0A4373E7DBD3F>I<
+B6051FB512C06F5EA26F5EA2D8003F97C7FC6F16F7A26E6CED01E7A26E6CED03C7A36E6C
+ED0787A26E6CED0F07A26E6C151EA36E6D143CA26E6D1478A26E6D14F0A26F6CEB01E0A3
+6F6CEB03C0A26F6CEB0780A26F6CEB0F00A36F6C131EA26F6D5AA26F6D5AA26F6D5AA393
+387FF1E0A293383FFBC0A270B45AA37090C7FCA2705AA2705AB600C0031FB612C0A2705A
+A2705A5A3E7CBD63>I<B6037FB512E0A2818181D8003F6D9139001F800081A281816E7E
+6E7F6E7F80826E7F6E7F6E7F6E7F157F826F7F6F7F6F7F6F7F81836F7F6F7F707E701380
+A27013C07013E07013F07013F87013FCA27013FEEF7FFF71139F7113DF8319FF83838383
+84A28484848484A284B600C080197F193F191FA24B3E7DBD52>I<ED3FFF0203B512F002
+1F14FE027F6E7E902701FFF80713E00107D9C00013F84990C7EA3FFCD93FFCEC0FFF4948
+6E7F49486E7F48496E7F4A80488448496F7EA24890C96C7E4884A249161F003F84A34848
+701380A400FF19C0AD007F19806D5EA3003F1900A26D5E6C60A26C6D4B5AA26C6D4B5A6C
+6D4A5BA26C6D4A5B6C6D4A5B6D6C4A5B6DB4023F90C7FC6D01C0EBFFFE0107D9F80713F8
+010190B612E06D5E021F4AC8FC020314F0DA003F90C9FC42407ABE4F>I<B812F017FF18
+C018F018FC26003FFCC77FEF1FFF7113807113C07113E0A27113F0A319F8A819F0A34D13
+E019C05F4D1380053F1300EFFFFE91B712F860188005FCC7FC4ACAFCB3A4B77EA53D3E7D
+BD47>I<B87E17FCEFFF8018F08428003FFC000113FE9338003FFF050F7F717F717FA285
+8385A761A25F61614D5B4D90C8FCEF3FFE4CB45A91B712F018C04DC9FC717E9126FC000F
+7F040113F0707F717EA2717EA2717EA685A6F207C019C0A271140F07E01380B76DEBF01F
+719038FC3F007190B5FC716C5B061F13F8CB000113E04A3F7DBD4E>82
+D<903A03FFC001C0011FEBF803017FEBFE0748B6128F4815DF48010013FFD80FF8130F48
+481303497F4848EB007F127F49143F161F12FF160FA27F1607A27F7F01FC91C7FCEBFF80
+6C13F8ECFFC06C14FCEDFF806C15E016F86C816C816C816C16806C6C15C07F010715E0EB
+007F020714F0EC003F1503030013F8167F163F127800F8151FA2160FA27EA217F07E161F
+6C16E06D143F01E015C001F8EC7F8001FEEB01FF9026FFE00713004890B55A486C14F8D8
+F81F5CD8F00314C027E0003FFEC7FC2D407ABE3A>I<003FB912FCA5903BFE003FFE003F
+D87FF0EE0FFE01C0160349160190C71500197E127EA2007C183EA400FC183F48181FA5C8
+1600B3AF010FB712F8A5403D7CBC49>I<B76C90B61280A526003FFEC9003EC7FCB3B3A4
+197E011F177C80A26D17FC616D6D14014E5A6D6D4A5A6D6D140F6D01F8EC3FC0DA7FFEEC
+FF8091273FFFC00F90C8FC020F90B512FC02035D020015E0031F1480030101F8C9FC493F
+7DBD50>I<B600FC020FB512C0A5C66C48C9381F8000013F95C7FC80616D173E6F157E6D
+177C6F15FC6D5F8118016D6D5D18036D5F6F14076D5F6F140F027F5E81181F023F93C8FC
+6F5C6E153E70137E6E157C8218FC6E6D5B17016E5DEEF0036E5DEEF8076E5D16FC170F03
+7F5CEEFE1F033F91C9FC705A6F133E17BE17FE6F5BA26F5BA26F5BA26F5BA36F5BA2705A
+A270CAFCA24A3F7EBD4F>I<B6D8FC03B600F090B512FEA5C601FCC7000301F0C8EA7E00
+017F6F177C856E6E17FC013F63856D6C037F4B5AA26F4A6C14036D634D7F6F18076D634D
+806F02EF150F6D636F01076E131F6D04C793C7FC050F806F02835D6D1A3E051F806F0201
+157E027F197C6F013F6E13FC023FDA3E005D057E806F017C017F13016E6105FC14FE7048
+013F13036E6104C1EDFF076E4A6D5C04C31687DCE3E06D138F6E6104E716CFDCF7C06D13
+DF6E96C8FC04FF16FF6E4A6D5BA294C77E6F5FA24C80033F5FA26F486F5AA24C153F030F
+5FA24C151F03075FA26F486F5A673F7EBD6C>I<007FB6013FB512F0A5D8001F01C0D900
+3FC7FC6D6D147E18FE6D6D5C6D6D495A6D4B5A6F13076D6D5C6E6C495A4D5A6EEB803F6E
+01C090C8FC6E147E705A6E13F16EEBF9F86EEBFBF0EEFFE0806F5B5F816F7F81836F7F81
+834B7F4B7F5D83DB3F3F7FED7E1F03FE804B6C7F4A486C7F4A487E0207814B6C7F4A487E
+4A4880023F6E7E92C76C7F027E804A8201016F7F4A6E7F495A49486E7F010F6F7F4A80B6
+00C0017F90B5FCA5483E7DBD4F>I<B600FE020FB512C0A5C66C90C9381F80006D6D4BC7
+FC6D6D157EA26D6D5D6D6D4A5A816D4C5A6D6D4A5A816D4C5A6E6C4A5A6E7F4EC8FC6E6D
+137E6E7F606E6D485A6E13F84D5A6E6D485A6E13FE70485A6F495A6F139F05FFC9FC6F5B
+815F6F5B816F5B5FB3A20207B612F8A54A3E7EBD4F>I<903807FFC0013F13F848B6FC48
+812607FE037F260FF8007F6DEB3FF0486C806F7EA36F7EA26C5A6C5AEA01E0C8FC153F91
+B5FC130F137F3901FFFE0F4813E0000F1380381FFE00485A5B485A12FF5BA4151F7F007F
+143F6D90387BFF806C6C01FB13FE391FFF07F36CEBFFE100031480C6EC003FD91FF890C7
+FC2F2B7DA933>97 D<13FFB5FCA512077EAFEDFFE0020713FC021FEBFF80027F80DAFF81
+13F09139FC003FF802F06D7E4A6D7E4A13074A80701380A218C082A318E0AA18C0A25E18
+80A218005E6E5C6E495A6E495A02FCEB7FF0903AFCFF01FFE0496CB55AD9F01F91C7FCD9
+E00713FCC7000113C033407DBE3A>I<EC7FF00107B5FC011F14C0017F14E09039FFF01F
+F0489038800FF848EB001F4848EB3FFC120F485AA2485AA2007FEC1FF849EB0FF0ED03C0
+00FF91C7FCAB127F7FA3003F153E7F001F157E6C6C147C6C6C14FC91388001F86C9038C0
+03F0C69038F81FE06DB512C0011F14800107EBFE009038007FF0272B7DA92E>I<EE07F8
+ED07FFA5ED003F161FAFEC7FF0903807FFFE011FEBFF9F017F14DF9039FFF01FFF48EBC0
+0348EB00014848EB007F485A001F153F5B123FA2127F5BA212FFAA127FA37F123FA26C6C
+147F120F6D14FF6C6C01037F6C6D48EBFFE06CEBF03F6C6CB512BF6D143F010713FC0100
+01E0EBE00033407DBE3A>I<ECFFF0010713FE011F6D7E017F809039FFE07FE048903880
+1FF048496C7E48486D7E48486D7E121F491301003F81A2485A6F1380A212FFA290B7FCA4
+01F0C9FCA5127FA27F123FEE0F806C7E161F6C6C15006C6C5C6C6D137E6C9038E001FC6C
+9038F80FF8013FB55A6D14C0010391C7FC9038007FF8292B7DA930>I<EC07FE91387FFF
+8049B512C0010714E090390FFE3FF0EB1FF090393FE07FF8EB7FC013FF1480A248903800
+3FF0ED1FE0ED0FC092C7FCAAB612E0A500010180C7FCB3AC007FEBFF80A525407DBF20>
+I<903A03FF8007F0013F9038F83FF8499038FCFFFC48B712FE48018313F93A07FC007FC3
+4848EB3FE1001FEDF1FC4990381FF0F81700003F81A7001F5DA26D133F000F5D6C6C495A
+3A03FF83FF8091B5C7FC4814FC01BF5BD80F03138090CAFCA2487EA27F13F06CB6FC16F0
+16FC6C15FF17806C16C06C16E01207001F16F0393FE000034848EB003F49EC1FF800FF15
+0F90C81207A56C6CEC0FF06D141F003F16E001F0147FD81FFC903801FFC02707FF800F13
+006C90B55AC615F8013F14E0010101FCC7FC2F3D7DA834>I<13FFB5FCA512077EAFED1F
+F8EDFFFE02036D7E4A80DA0FE07F91381F007F023C805C4A6D7E5CA25CA35CB3A4B5D8FE
+0FB512E0A5333F7CBE3A>I<EA01F8487E487E487E481380A66C13006C5A6C5A6C5AC8FC
+A913FFB5FCA512077EB3ABB512F8A515407CBF1D>I<13FFB5FCA512077EB3B3AFB512FC
+A5163F7CBE1D>108 D<01FFD91FF8ECFFC0B590B5010713F80203DAC01F13FE4A6E487F
+DA0FE09026F07F077F91261F003FEBF8010007013EDAF9F0806C0178ECFBC04A6DB4486C
+7FA24A92C7FC4A5CA34A5CB3A4B5D8FE07B5D8F03FEBFF80A551297CA858>I<01FFEB1F
+F8B5EBFFFE02036D7E4A80DA0FE07F91381F007F0007013C806C5B4A6D7E5CA25CA35CB3
+A4B5D8FE0FB512E0A533297CA83A>I<EC7FF0903803FFFE011FEBFFC0017F14F09039FF
+E03FF8489038800FFC3A03FE0003FE48486D7E000F168048486D13C0A2003F16E049147F
+007F16F0A400FF16F8AA007F16F0A46C6CECFFE0A2001F16C06C6C491380A26C6C491300
+3A03FF800FFE6C9038E03FFC6C6CB512F0011F14C0010791C7FC9038007FF02D2B7DA934
+>I<01FFEBFFE0B5000713FC021FEBFF80027F80DAFF8113F09139FC007FF8000701F06D
+7E6C496D7E4A130F4A6D7E1880A27013C0A38218E0AA4C13C0A318805E18005E6E5C6E49
+5A6E495A02FCEBFFF0DAFF035B92B55A029F91C7FC028713FC028113C00280C9FCACB512
+FEA5333B7DA83A>I<3901FE01FE00FF903807FF804A13E04A13F0EC3F1F91387C3FF800
+0713F8000313F0EBFFE0A29138C01FF0ED0FE091388007C092C7FCA391C8FCB3A2B6FCA5
+25297DA82B>114 D<90383FFC1E48B512BE000714FE5A381FF00F383F800148C7FC007E
+147EA200FE143EA27E7F6D90C7FC13F8EBFFE06C13FF15C06C14F06C806C806C806C80C6
+1580131F1300020713C014000078147F00F8143F151F7EA27E16806C143F6D140001E013
+FF9038F803FE90B55A15F0D8F87F13C026E00FFEC7FC222B7DA929>I<EB07C0A5130FA4
+131FA3133F137FA213FF5A1207001FEBFFFEB6FCA40001EBC000B3151FA96CEBE03EA201
+7F137EECF8FC90383FFFF86D13F0010713E001001380203B7EB929>I<D9FF80EB0FF8B5
+EB0FFFA50007EC007F6C153FB3A5167FA316FF6C5C4B7F6C903AC007DFFFE09138F01F9F
+6DB5121F6D13FE010F13F8010101E0EBE000332A7CA83A>I<B500FC90383FFFC0A50001
+01C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E137E
+010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA26E
+5AA26E5AA26E5AA232287EA737>I<B53CFC3FFFFC03FFFEA50003D980009039C0000F80
+6E161F6C037F15006E496C5B6C183E836E48157E017F177C6E486D13FC013F02EF5C83DA
+FC071401011F02C75CDAFE0FEBFE03010F02835C17FFDAFF1F14076D02015C03BF148F6D
+D9BE005C18CF03FE14DF6D49017F90C7FC18FF6D496D5AA36E486D5AA26E486D5AA36E48
+6D5AA26E486D5A47287EA74C>I<B5D8FC03B51280A5C69026E0007FC7FC6E13FE6D6C5B
+6D6C485A6D6C485A010F13076D6C485AED9FC06DEBFF806D91C8FC6D5B6E5AA2143F6E7E
+140F814A7F4A7F4A7F02FE7F903801FC7F49486C7E02F07F49486C7E49486C7E011F7F49
+486C7FD97F008001FE6D7FB5D8C007EBFFC0A532287EA737>I<B500FC90383FFFC0A500
+0101C0903803E0006E1307A26C5E6E130F017F5D6E131F013F92C7FC6E5B011F143E6E13
+7E010F147C6E13FCA26D5C15816D5C15C36D5C15E76D5C15FF6E5BA36E90C8FCA26E5AA2
+6E5AA26E5AA26E5AA35D14075D000E130FD83F805B387FC01FD8FFE090C9FC5C143E147E
+5CEBC1F8387FC3F0387E0FE06CB45A6C5B6C48CAFCEA03F8323B7EA737>I
+E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: FC cmcsc10 10.95 17
+/FC 17 122 df<ED03C0A34B7EA24B7EA34B7EA3ED3BFCA3ED71FEA2EDF1FF15E0A20201
+80EDC07FA2DA03807F163FA24A486C7EA24A80020E130FA2021E80021C1307A2023C8002
+381303A24A6D7EA34A6D7EA249B77EA3D903C0C76C7E4A143FA249C87F171FA2010E6F7E
+A2011E82011C1507A2013C820138150313788401FC1501486C4B7ED80FFF030F1380B500
+F049B6FCA340417CC04A>65 D<B612F0A3000101E0C9FC38007F80B3B0EF01C0A5170318
+80A41707A3170FA2171F173F177FEFFF00160348486C133FB9FCA3323E7BBD3E>76
+D<B712E016FE707E00019039C0007FF06C6C48EB0FF8EE03FE707E707F717E717EA28417
+1F84A760173F60604D5A4DC8FC4C5A4C5AEE0FF0EE7FC091B500FEC9FC16F891388000FE
+EE3F80EE0FE0707E707E83160183160083A384A484A4725AF10380A2177F18F0053FEB07
+002601FFE015F8B600C0011F5B94380FFC0E943803FE1CCBEAFFF8F01FE041407BBD49>
+82 D<EC01E0A24A7EA34A7EA34A7EA24A7E141CA2EC3CFFEC387FA24A6C7EA34A6C7EA2
+010180ECC00FA249486C7EA349486C7EA24980010E1301010FB5FC4980A2011CC7FC4914
+7FA20178810170143FA201F08149141F1201486C811207486CEC3FF8D8FFFE49B512C0A3
+32317DB038>97 D<B612FEEDFFC016F03A03FC0007F86C48EB01FE1500167F1780163F17
+C0A61780167F170016FE4B5AED07F0ED7FE090B6128016F09039F80001FC6F7EEE7F8016
+3FEE1FC017E0160F17F0A617E0161FA2EE3FC0EE7F80923801FF00486CEB07FEB712F85E
+93C7FC2C2F7CAE35>I<B612FCEDFFC016F03A03FE000FF86C48EB01FEED007FEE3F80EE
+1FC0EE0FE0EE07F0160317F8160117FCA2EE00FEA417FFAA17FEA3EE01FCA3EE03F817F0
+1607EE0FE017C0EE3F80EE7F00ED01FE486CEB0FFCB712F016C04BC7FC302F7CAE39>
+100 D<B8FCA33903FE00016C489038003F80161F160F1607A21603A317C0ED1C01A393C7
+FCA2153CA215FC90B5FCA3EBFC00153CA2151CA21770A392C712E0A41601A2EE03C0A216
+07160F161F486C14FFB81280A32C2F7CAE33>I<B712FEA33903FE00036C48EB007F8282
+82A282A3EE0380A21538A293C7FCA31578A2EC01F890B5FCA3EBFC01EC0078A21538A592
+C8FCAA487EB512FCA3292F7CAE31>I<B5D8F81FB5FCA3D803FEC7EA7FC06C48EC3F80B1
+90B7FCA301FCC7123FB3486CEC7FC0B5D8F81FB5FCA3302F7CAE38>104
+D<B512FCA3D803FEC8FC6C5AB3A7160EA4161CA4163CA2167C16FC1501ED03F8486C131F
+B7FCA3272F7CAE2F>108 D<D8FFFC49B5FC7F7F00019138001FF06EEB0FE06EEB07C0EE
+0380EBDFE0EBCFF013C780EBC3FC13C180EBC0FF801580EC3FC0EC1FE0A2EC0FF0EC07F8
+A2EC03FCEC01FE140015FFED7F83153F16C3ED1FE3ED0FF3A2ED07FBED03FFA28181A216
+7F163F486C141F487E486C140FB56C1307A21603302F7CAE38>110
+D<EC1FF891B5FC903907F00FE090390FC003F0013FC712FC017E147E49804848EC1F8048
+48EC0FC04848EC07E0000F16F0491403001F16F8491401003F16FCA2007F16FE90C9FCA3
+4816FFAA6C6CEC01FEA3003F16FCA26D1403001F16F86C6CEC07F0A26C6CEC0FE0000316
+C06C6CEC1F806C6CEC3F00017E147E6D5C90390FC003F0903907F00FE00100B5C7FCEC1F
+F830317BAF3A>I<B612FCEDFF8016E03A03FE000FF86C48EB03FCED00FE167FA2EE3F80
+A217C0A61780A2EE7F00A216FEED03F8ED0FF090B612C093C7FC01FCC9FCB2487EB512F8
+A32A2F7CAE33>I<B612E015FE6F7E3A03FE003FE06C48EB07F8ED01FC6F7EA2828283A5
+94C7FC5E5E4B5A4B5A4B5AED3FC090B500FEC8FC5D9038FC007FED1F806F7E826F7EA26F
+7EA582A4EF01C016FEA21501486CED0380B538F800FF93383F8700EE1FFEC9EA03F83230
+7CAE37>114 D<007FB712F8A39039801FF0073A7E000FE00000781678A20070163800F0
+163CA348161CA5C71500B3A8EC3FF8011FB512F0A32E2E7CAD36>116
+D<B5D8F801B5FCA3D803FEC7EA1FF06C48EC0FE0EE07C0EE0380B3AB16076C6C1500A201
+7E5C017F141E6D141C6D6C133C6D6C5B6D6C485A903903FC07E00100B51280DA3FFEC7FC
+EC07F830307CAE38>I<B500E0903807FFF0A3000790C7000113800001923800FE006C16
+F86E5C017F4A5A6D7E6E495A011F5D6D6C13076E49C7FC0107140E6D6C131E6E5B010114
+386D6C13786F5A027F5BEC3FC191381FE3C05EEC0FF76EB4C8FC5D14036E5AB04A7E91B5
+12F0A3342F7EAE38>121 D E
+%EndDVIPSBitmapFont
+%DVIPSBitmapFont: FD cmr10 10.95 91
+/FD 91 125 df<16E04B7EA24B7EA24B7EA24B7EA2ED1DFFA203387FA29238787FC01570
+9238F03FE015E002016D7E15C002036D7E158002076D7E15004A6D7E140E021E6D7E141C
+023C6D7F143802786E7E147002F06E7E5C01016F7E5C01036F7E5C01076F7E91C8FC496F
+7E130E011E6F7E131C013C6F7F13380178707E137001F0707E5B0001717E5B0003717E5B
+0007717E90CAFC48717E120E001E717E001FBAFC481980A24819C0A2BB12E0A243417CC0
+4C>1 D<913801FFC0021F13FC9139FF007F80D903F8EB0FE0D90FF0EB07F8D91FC0EB01
+FCD97F806DB4FC49C86C7E48486F7E00038348486F7E000F8349150F001F83491507003F
+83A348486F7EAA6C6C4B5AA3001F5FA26C6C4B5AA200075F6D151F00035FA26C6C4B5A00
+005FA2017F4BC7FC6D157EA26D6C5C010F5DA26D6C495A00E0EF0380010315E0D8700192
+38C007006E130301001580A36C0160EC000E003C017049131E263FFFF0ECFFFEA36C5FA3
+39407CBF42>10 D<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD9
+07F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91
+C7FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>I<EC
+03FE91383FFF809138FE03E0903903F800F0D90FE013384948137C90393F8001FE90387F
+00035B5BA2485A6F5AED007093C7FCAA16FEB7FCA33901FC000315011500B3AC486C497E
+B5D8F87F13FCA32E407EBF33>I<EC03FF023F13EE9138FE01FEEB03F090380FE003EB1F
+C0EB3F80EB7F005B5B150148481300AEB7FCA3D801FCC7FCB3AE486C497EB5D8F87F13FC
+A32E407EBF33>I<DA03FE49B4FC91273FFF801F13C0913BFE03E07F01F0903C03F000F1
+FC0078D90FE0D97FF0131C49484948133E4948484913FF494848495A5B491500A248485C
+03016E5A0300153896C7FCAA197FBBFCA3D801FCC738FE00018485B3AC486C496CECFF80
+B5D8F87FD9FC3F13FEA347407EBF4C>I<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC121E
+AB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33
+D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013
+00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E
+0018130C0038131C003013181C1C7DBE2D>I<013F1603D9FFC04B7E2601E0E0150F2607
+C070151F48486C4BC7FC023E157E48486C15FE48D90FC0EB03FC003ED90EF0EB0FF8DA0F
+3F13FD007E903A070FFFF1F0007C0200EB03E0160000FC6D6C495A170F604DC8FC5F173E
+5F17FC5F4C5A1603007CD907005B4C5A007E150F003E495C020E49C9FC003F5D6C49133E
+260F803C5B023813FC6C6C485B3A01E0E001F03800FFC090273F0003E0133F90C70007EC
+FFC09339C001E0E0923A0F8007C070031F49487E0400143C033E90381F001C037E497F03
+7C133E4B150F0201027E7F4B137C4A5A020702FCEB03805D4A5A141F92C7FC143E147E14
+7C5CA2495A0103037CEB07005C4948147E010F033E5B4A160E49C8123F496F5B013E9238
+0F803C49173801FC6F6C5A49923801E0E0496FB45A0160043FC7FC41497BC34C>37
+D<EC0F80EC7FE0ECF870903803E0380107133CECC01CEB0F80011F131E150EA2EB3F00A5
+5D1480A25D157815705D6D6C5A14C1ECC38002C7CAFC02EE91387FFFFCEB0FEC14FC4A02
+0713C06D48913801FE006E5DEF00F06D7E01074B5A496C5D011D1503D939FF4A5A017093
+C7FC496D5B0001017F140E496C6C131E00036E131C2607801F143C000F6E5B001F6D6C13
+70263F000714F0486E485ADA03FE5B913801FF03486D495A0487C8FCED7FCFED3FFE6F48
+14386D5C150F007F6E6C14786D6D6C1470003F4A6C14F06D496C6C13E0001F91393E3FC0
+016C6C903AFC1FF003C03D07FC07F007FC1F800001B5D8C001B512006C6C90C7EA7FFCD9
+0FF8EC0FF03E437CC047>I<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013
+C0A312011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0
+EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FC
+A25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA2
+12017F12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C323>I<
+12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130F
+A214C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B133EA2
+5BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I<150615
+0FB3A9007FB912E0BA12F0A26C18E0C8000FC9FCB3A915063C3C7BB447>43
+D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A
+120E5A1218123812300B1C798919>I<B512FEA617067F961E>I<121EEA7F80A2EAFFC0A4
+EA7F80A2EA1E000A0A798919>I<ED0180ED03C01507A21680150FA216005DA2151E153E
+A2153C157CA2157815F8A25D1401A25D1403A25D1407A25D140FA24AC7FCA2141E143EA2
+143C147CA2147814F8A25C1301A25C1303A25C1307A25C130FA291C8FC5BA2131E133EA2
+5BA2137813F8A25B1201A25B1203A25B1207A25B120FA290C9FC5AA2121E123EA2123C12
+7CA2127812F8A25A1260225B7BC32D>I<EB01FE90380FFFC090383F03F090387C00F849
+137C48487F48487F4848EB0F80A2000F15C04848EB07E0A3003F15F0A290C712034815F8
+A64815FCB3A26C15F8A56C6CEB07F0A3001F15E0A36C6CEB0FC0A26C6CEB1F8000031500
+6C6C133E6C6C5B017C5B90383F03F090380FFFC0D901FEC7FC263F7DBC2D>I<EB01C013
+031307131F137FEA07FFB5FC139FEAF81F1200B3B3ACEB7FF0B612F8A31D3D78BC2D>I<
+EB07FC90383FFF8090B512E03903F01FF83907C007FC390F0001FE001E6D7E001C158000
+3CEC7FC05AED3FE01270B4FC6DEB1FF07FA56C5A6CC7FC120CC813E0153FA216C0157F16
+8015FF16004A5A5D4A5A4A5A5D4A5A4A5A4AC7FC147E147C5C495A495A495A495A49C712
+70133E133C5B4914E0485A485A485A48C7120148B6FCA25A4815C0B7FCA3243D7CBC2D>
+I<EB07FC90383FFF809038F80FE03901E003F839078001FCD80F007F000E6D7E001E1580
+D81F80137F486C14C07FA27F5BA2121F6C5AC8138015FF1600A24A5AA24A5A5DEC07E04A
+5A023FC7FCEB1FFCECFF809038000FE0EC07F86E7E6E7E6E7E1680ED7FC0A216E0153FA2
+16F0A2120C123F487E487EA316E0A249137F6CC713C01278EDFF807E6C4913006C495A39
+07C007FC3903F80FF0C6B55A013F1380D907F8C7FC243F7CBC2D>I<150E151E153EA215
+7EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB0700
+A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC
+4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092C7
+FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E497F
+90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC
+007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B5
+5A013F90C7FCEB07F8243F7CBC2D>I<EC1FE0ECFFF8903803F03E90380FC00F90391F00
+0780133E017EEB1FC049133F4848137F12035B12074848EB3F80ED1F00001F91C7FC5BA2
+123FA3485AA214FE903887FF8039FF8F07E090389C01F09038B800FC01B0137E13F0497F
+16804914C0A2ED1FE0A34914F0A5127FA6123F6D14E0A2121FED3FC0A26C6C1480A20007
+EC7F006C6C137E6C6C5B6C6C485A90387E07F06DB45A010F1380D903FCC7FC243F7CBC2D
+>I<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED078016005D
+48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A2
+13015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>I<EB03FC90
+381FFF8090387C07E09038F001F83901E0007C48487F48487F48C7FCED0F80121E16C000
+3E1407A4123FA26DEB0F807F6C6C131F6D140001FC133E6C6C5B9038FF80786C6D5A6CEB
+F3E06CEBFF806C91C7FC133F6D13C06D7F013F13F801787F48486C7E3903E01FFF48486C
+1380260F800313C048487E489038007FE0003E143F007E141F007CEC0FF01507481403A3
+1501A46C15E0007C1403A2007E15C06C14076CEC0F806DEB1F006C6C133ED807F05B3901
+FC03F86CB512E0011F1380D903FCC7FC243F7CBC2D>I<EB03FCEB1FFF90387E07C09038
+FC03F048486C7E48486C7E4848137C000F147E4848137F81003F15805B007F15C0A2151F
+12FF16E0A516F0A5127F153FA36C7EA2001F147F120F6C6C13FF6D13DF000313013900F8
+039F90387E0F1FD91FFE13E0EB07F090C7FCA2ED3FC0A41680157FD80F801400487E486C
+13FEA24A5A5D49485AEB8007391E000FE0001F495A260FC07FC7FC3803FFFE6C13F83800
+3FC0243F7CBC2D>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EA
+FFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FC
+B3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C12
+1C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A2
+6C18E03C167BA147>61 D<EB1FF890B5FC3903E01FC0390F0007F0001EEB03F848EB01FC
+4814FE140000FE14FF7E7FA46CC7FC123EC7EA01FEA2EC03FCEC07F815F0EC0FC0EC1F80
+EC3F00143E5C147814F85C13015CA2495AA25CAB91C7FC90C8FCA8EB0780EB1FE0A2497E
+A46D5AA2EB078020407BBF2B>63 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A29138
+01C7FC15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7E
+A349486D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153FA2
+013C820138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417D
+C044>65 D<B712FCEEFF8017F00001903980000FF86C6CC7EA03FE707E701380EF7FC0EF
+3FE0A2EF1FF0A218F8A3170F171FA318F0A2EF3FE0177F18C0EFFF804C1300EE03FCEE0F
+F8EE7FE091B6C7FC17E091C7EA07FCEE01FE933800FF80EF7FC0EF3FE0EF1FF018F8170F
+18FC1707A218FEA718FC170FA2EF1FF818F0173FEF7FE0EFFFC00403138048486C90380F
+FE00B85A17E094C7FC373E7DBD40>I<DB3FF01306912603FFFE130E020F9038FF801E91
+3A3FF007E03E9139FF8000F8D903FEC7EA7C7ED907F8EC1EFE4948140FD93FE014074948
+1403495A91C812014848150012034848167E5B000F173EA24848161EA2123F5B180E127F
+A349160012FFAC127F7F180EA2123FA27F001F171E181C6C7EA20007173C6D16386C6C16
+78000117706C6C16F06EEC01E06D6C15C06D6C1403D90FF0EC07806D6CEC1F00D903FE14
+3E902600FF8013F891393FF007F0020FB512C0020391C7FC9138003FF037427BBF42>I<
+B712FCEEFF8017E000019039C0001FF86C6C48EB03FEEE00FF717E717EEF0FE084717E71
+7E170184717EA21980187F19C0A3F03FE0A519F0AB19E0A5F07FC0A21980A218FF19004D
+5AA24D5A6017074D5A4D5AEF7FC04DC7FCEE03FE48486CEB1FF8B85A178004FCC8FC3C3E
+7DBD45>I<B912E0A300019038C000016C6C48EB001FEF0FF01703A217011700A31870A4
+18381638A41800A21678A216F81501150791B5FCA3EC8007150115001678A21638A2180E
+A3181C93C7FCA4183C1838A21878A318F8EF01F0A21707170F173F48486CEB03FFB912E0
+A3373E7DBD3E>I<B91280A300019038C000036C6C48EB007FEF1FC0170F1707A21703A3
+1701A4EF00E0A21638A31800A31678A216F81501150791B5FCA3EC8007150115001678A2
+1638A693C8FCAF3801FFE0B612F0A3333E7DBD3B>I<DB3FE0130C912603FFFE131C021F
+9038FF803C913A7FF00FC07C9139FF0001F0D903FC90380078FC4948143DD91FE0141F49
+48140F4948140701FF15034890C8FC491501485A000716005B000F177C5B001F173CA248
+5AA2181C127FA25B95C7FC12FFAB041FB512F0127FA26D9139000FFE00EF03FC123FA27F
+121FA26C7EA212077F12036C7E7F6C7F6D6C14076D7E6D6C140FD907F8141ED903FEEC3C
+7C902600FF80EBF83C913A7FF007F01C021FB5EAC00C020391C8FC9138003FF03C427BBF
+47>I<B6D8C01FB512F8A3000101E0C7383FFC0026007F80EC0FF0B3A691B7FCA30280C7
+120FB3A92601FFE0EC3FFCB6D8C01FB512F8A33D3E7DBD44>I<B612F0A3C6EBF000EB3F
+C0B3B3B2EBFFF0B612F0A31C3E7EBD21>I<011FB512FCA3D9000713006E5A1401B3B3A6
+123FEA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603
+E07EC7FC3800FFF8EB3FC026407CBD2F>I<B600C090387FFFFCA3000101E0C7000F1380
+26007F80913807FE0018F818E0604D5A4DC7FC173E5F5F4C5A4C5A4C5A4C5A4CC8FC163E
+5E5E4B5A4B5AED07804B7E151F4B7E4B7E15FF913881EFF8913883C7FCEC878791388F03
+FE91389E01FF14BCDAF8007F4A6D7E5C4A6D7E4A6D7EA2707E707EA2707E707EA2707F71
+7E84173F717E717EA2717E848419802601FFE04A13C0B600C090B6FCA3403E7DBD47>I<
+B612F8A3000101E0C9FC38007F80B3B0EF0380A517071800A45FA35FA25F5F5F4C5A1607
+48486C133FB8FCA3313E7DBD39>I<B500C093B512C0A300016D4BEBE000D8007F1880D9
+77F0ED03BFA3D973F8ED073FA3D971FC150EA2D970FE151CA3027F1538A36E6C1470A36E
+6C14E0A26E6CEB01C0A36E6CEB0380A36E6CEB0700A26E6C130EA36E6C5BA3037F5BA26F
+6C5AA36F6C5AA392380FE1C0A3923807F380A26FB4C7FCA36F5AA213F8486C6D5AD807FF
+EFFFE0B500F80178017FEBFFC0A34A3E7CBD53>I<B56C91B512F88080D8007F03071300
+6EEC01FC6E6E5A1870EB77FCEB73FEA2EB71FF01707FA26E7E6E7EA26E7E6E7EA26E7E6E
+7EA26E7E6E7FA26F7E6F7EA26F7E6F7EA26F7E6F7EA26F7E6F1380A2EE7FC0EE3FE0A2EE
+1FF0EE0FF8A2EE07FCEE03FEA2EE01FF7013F0A2177F173FA2171F170FA2170701F81503
+487ED807FF1501B500F81400A218703D3E7DBD44>I<ED7FE0913807FFFE91391FC03F80
+91397E0007E04948EB03F8D907F0EB00FE4948147F49486E7E49486E7E49C86C7E01FE6F
+7E00018349150300038348486F7EA248486F7EA2001F188049167F003F18C0A3007F18E0
+49163FA300FF18F0AC007F18E06D167FA4003F18C0A26C6CEEFF80A36C6C4B1300A26C6C
+4B5A00035F6D150700015F6C6C4B5A6D5E6D6C4A5A6D6C4A5A6D6C4AC7FC6D6C14FED901
+FCEB03F8D9007FEB0FE091391FC03F80912607FFFEC8FC9138007FE03C427BBF47>I<B7
+12F8EEFF8017E000019039C0003FF86C6C48EB07FCEE01FE707EEF7F80EF3FC018E0A2EF
+1FF0A218F8A818F0A2EF3FE0A218C0EF7F80EFFF004C5AEE07FCEE3FF091B612C04CC7FC
+0280C9FCB3A73801FFE0B612C0A3353E7DBD3E>I<ED7FE0913807FFFE91391FC03F8091
+397F000FE0D901FCEB03F8D907F0EB00FE4948147F49486E7E49486E7E49C86C7E498248
+486F7E49150300038348486F7EA2000F834981001F1880A24848EE7FC0A3007F18E0A249
+163FA200FF18F0AC007F18E0A26D167FA3003F18C0A26C6CEEFF80A3000F18006D5D0007
+DA0F805B6C6C90393FE003FCED70706C6C496C485A6C6C48486C485A017FD9800E5BD93F
+819038061FC0D91FC19038073F80D90FE14AC7FCD907F1EB03FE902601FDC013F8903A00
+7EE007E091271FF03FC013180207B5FC9139007FE1E0DB0001143883711378A2706C13F0
+EFFF0318FFA27113E0A37113C0711380711300715AEF01F83D527BBF47>I<B712C016FC
+EEFF800001D9C00013E06C6C48EB1FF0EE07FCEE01FE707E84717EA2717EA284A760177F
+606017FF95C7FCEE01FCEE07F8EE1FE0EEFF8091B500FCC8FC16F091388001FCED003FEE
+1FC0707E707E83160383160183A383A484A4F0C004190EA28218E0057F131E2601FFE016
+1CB600C0EB3FF094381FF83805071370CA3801FFE09438003F803F407DBD43>I<D907FC
+131890391FFF8038017FEBE0783901FC03F83A03F0007CF8D807C0133F4848130F001F14
+0748C7FC003E1403007E1401A2007C140012FC1678A46C1538A27EA26C6C14007F7FEA3F
+F8EBFF806C13F86CEBFF806C14F06C14FC6C14FF6C15C0013F14E0010714F0EB007F0207
+13F89138007FFC150FED07FE15031501ED00FFA200E0157FA3163FA27EA3163E7E167E6C
+157C6C15FC6C15F86D13016DEB03F06DEB07E0D8F9FCEB0FC03AF07F803F8090391FFFFE
+00D8E00713F839C0007FC028427BBF33>I<003FB91280A3903AF0007FE001018090393F
+C0003F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E
+4B7E0107B612FEA33B3D7DBC42>I<B600C090B512F8A3000101E0C70007130026007F80
+EC01FC715A1870B3B3A4013F16F06E5DA21701011F5E80010F15036E4A5A010793C7FC6D
+6C5C6D6C141E6D6C5C027F14F86E6C485A91390FF00FE00203B51280020049C8FCED1FF0
+3D407DBD44>I<B691380FFFFEA3000301E0020113E06C01809138007F806CEF3F00017F
+163E181C6E153C013F1638A26E1578011F1670A26D6C5DA26E140101075EA26E14030103
+5EA26D6C4AC7FCA2806D150EA26F131E027F141CA26F133C023F1438A26E6C5BA26F13F0
+020F5CA2EDF80102075CA26E6C485AA2EDFE07020191C8FCA26F5A6E130EA2ED7F9CA216
+DCED3FF8A36F5AA36F5AA26F5AA36F5A3F407EBD44>I<B500FE017FB5D88007B5FCA300
+0301C0010101E0C713F86C90C849EC3FE07148EC0F807E7215006E143F017F190E84A26D
+6C60A24D7E6D6C60A2EFE7F86D6C60A2933801C3FC6E18F001076104037F6E0281140101
+036104077F17006D6C4D5AA2040EEB7F806D6C4DC7FCA24CEB3FC0DA7F80160EA24CEB1F
+E003C0161E023F171C047814F0DBE070010F133C021F173804F014F84C1307DA0FF05EA2
+DBF1C0EB03FCDA07F95EA2DBFB80EB01FEDA03FF6F5AA293C8FCA26E5FA24B157F020094
+C8FCA24B81037C153EA20378151E0338151C58407EBD5D>I<007FB5D8C003B512E0A3C6
+49C7EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C1470
+6D6D13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C
+6E6C5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F91
+3801C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D
+7F130149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC01
+03B512FEA33F3E7EBD44>I<B66C0103B51280A3000101F0C8EBF8006C6C48ED3FC0725A
+013F041EC7FC6D7E606D6C15386D6C1578606D6C5D6E14016D5E6D6D1303606E6C49C8FC
+6E6C5B170E6E6C131E171C6E6C5B6E6C137817706E6C13F06F5B6E13016EEB83C05FED7F
+C7DB3FE7C9FC16EFED1FFE5E150F6F5AB3A4ED1FFC020FB512FCA3413E7FBD44>I<003F
+B712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF80A2003C4A130000
+7C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A5AA24A5AA2
+4A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2495A495A173C495AA2
+4890C8FC485A1778485A484815F8A24848140116034848140F4848143FED01FFB8FCA32E
+3E7BBD38>I<EAFFFCA4EAF000B3B3B3B3ABEAFFFCA40E5B77C319>I<486C13C000031301
+01001380481303000EEB070048130E0018130C0038131C003013180070133800601330A3
+00E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0
+390F0007801C1C73BE2D>I<EAFFFCA4EA003CB3B3B3B3ABEAFFFCA40E5B7FC319>I<121E
+EA7F80A2EAFFC0A4EA7F80A2EA1E000A0A79BD19>95 D<EA0180120313005A120E5A1218
+1238123012701260A312E05AA412CFEAFFC013E0A3127FA2123F13C0EA0F000B1C7ABE19
+>I<EB0FF8EBFFFE3903F01F8039078007E0000F6D7E9038E001F8D81FF07F6E7EA3157F
+6C5AEA0380C8FCA4EC1FFF0103B5FC90381FF87FEB7F803801FC00EA07F8EA0FE0485A48
+5AA248C7FCEE038012FEA315FFA3007F5BEC03BF3B3F80071F8700261FC00E13CF3A07F0
+3C0FFE3A01FFF807FC3A003FC001F0292A7DA82D>I<EA01FC12FFA3120712031201B1EC
+03FC91381FFF8091387C07E09039FDE001F09039FFC000FC4A137E91C77E49158049141F
+17C0EE0FE0A217F0A2160717F8AA17F0A2160FA217E0161F17C06D1580EE3F006D5C6E13
+FE9039F3C001F89039F1E003F09039E0780FC09026C03FFFC7FCC7EA07F82D407EBE33>
+I<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA2
+4848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C13
+076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA8
+28>I<ED01FC15FFA3150715031501B114FF010713E190381F80F990387E003D49131FD8
+03F81307485A49130348481301121F123F5B127FA290C7FCA25AAA7E7FA2123FA26C7E00
+0F14037F000714076C6C497E6C6C497ED8007C017913F890383F01F190380FFFC1903A01
+FE01FC002D407DBE33>I<EB01FE90380FFFC090383F03F09038FC01F848486C7E484813
+7E48487F000F158049131F001F15C04848130FA2127F16E090C7FCA25AA290B6FCA290C9
+FCA67EA27F123F16E06C7E1501000F15C06C6C13036DEB07806C6C1400C66C131E017E5B
+90381F80F8903807FFE0010090C7FC232A7EA828>I<EC1FC0EC7FF8903801F83C903807
+E07E90380FC0FFEB1FC1EB3F811401137FEC00FE01FE137C1500AEB6FCA3C648C7FCB3AE
+487E007F13FFA320407EBF1C>I<167C903903F801FF903A1FFF078F8090397E0FDE1F90
+38F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE
+00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120F
+A27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E140048
+157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE01
+7FC7FC90383FFFFC010313C0293D7EA82D>I<EA01FC12FFA3120712031201B1EC01FE91
+3807FFC091381E07E091387803F09138E001F8D9FDC07F148001FF6D7E91C7FCA25BA25B
+B3A6486C497EB5D8F87F13FCA32E3F7DBE33>I<EA01E0EA07F8A2487EA46C5AA2EA01E0
+C8FCACEA01FC127FA3120712031201B3AC487EB512F0A3143E7DBD1A>I<1478EB01FEA2
+EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E
+14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>I<EA01
+FC12FFA3120712031201B292B51280A392383FFC0016E0168093C7FC153C5D5D4A5AEC07
+C04A5A4AC8FC143E147F4A7E13FD9038FFDFC0EC9FE0140F496C7E01FC7F496C7E140181
+6E7E81826F7E151F826F7EA282486C14FEB539F07FFFE0A32B3F7EBE30>I<EA01FC12FF
+A3120712031201B3B3B1487EB512F8A3153F7DBE1A>I<2701F801FE14FF00FF902707FF
+C00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D48
+7F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8
+F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803
+F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5
+D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB
+0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA9
+6C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8
+007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF9038
+1FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1F
+C017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C0
+01F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA7
+33>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0F
+FC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C
+130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B5
+12F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01
+FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC06039
+01FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D13
+00EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0F
+F800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038
+E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512
+C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07
+FEEB01F81B397EB723>I<D801FC14FE00FF147FA3000714030003140100011400B3A515
+01A31503120015076DEB06FF017E010E13806D4913FC90381FC078903807FFE001009038
+80FE002E297DA733>I<B539E00FFFE0A32707FE000313006C48EB00FC5E00015D7F0000
+5DA26D13016D5CA26D6C485AA2ECC007011F91C7FCA290380FE00EA2ECF01E0107131CA2
+6D6C5AA2ECFC7801011370A2ECFEF001005BA2EC7FC0A36E5AA26EC8FCA3140E2B287EA6
+30>I<B53BC3FFFE03FFF8A3290FFE003FE00013C06C486D48EB3F806C4817006D010F14
+1E00016F131C15076D163C00004A6C1338A2017F5E4B7E151DD93F805DED3DFC1538D91F
+C04A5AED78FE9238707E03D90FE0017F5BEDE03F02F0140701070387C7FC9138F1C01F02
+F9148F010315CE9138FB800F02FF14DE6D15FCED00076D5DA24A1303027E5CA2027C1301
+023C5C023813003D287EA642>I<B539F01FFFE0A30003D9C00F1300C690388007F8D97F
+0013E002805BD93FC05B011F49C7FC90380FE00EECF01E6D6C5A01035B6D6C5A6E5AEB00
+FF6E5A6E5A81141F814A7E81147BECF1FC903801E1FEECC0FF01037F49486C7ED90F007F
+011E6D7E013E130F496D7E01FC80486C80000F4A7EB539803FFFF8A32D277FA630>I<B5
+39E00FFFE0A32707FE000313006C48EB01FC6F5A00015D7F00005DA2017F495AA2EC8003
+013F5CA26D6C48C7FCA26E5A010F130EA26D6C5AA2ECF83C01031338A26D6C5AA2ECFEF0
+01005BA2EC7FC0A36E5AA36EC8FCA2140EA2141E141C143C1438A2147800181370127EB4
+5BA2495AA248485AD87E07C9FCEA780EEA3C3CEA1FF8EA07E02B3A7EA630>I<001FB612
+80A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7
+FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B48481307120749
+1400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I<B812F0A22C02
+80982D>I<BE12C0A25A0280985B>I E
+%EndDVIPSBitmapFont
+end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 0 351 a FD(CCLR)m(C)29 b(/)i FC(R)m(utherf)n(ord)h(Appleton)h
+(Labora)-6 b(tor)g(y)1228 b FB(SUN/67.70)0 464 y FA(P)m(article)32
+b(Ph)m(ysics)i(&)e(Astronom)m(y)h(Researc)m(h)h(Council)0
+577 y(Starlink)d(Pro)5 b(ject)0 690 y(Starlink)31 b(User)j(Note)e
+(67.70)3271 927 y FD(P)-8 b(.)15 b(T.)g(W)-8 b(allace)3053
+1040 y(19)31 b(Decem)m(b)s(er)h(2005)p 0 1183 3780 12
+v 177 1788 a Fz(SLALIB)77 b(|)g(P)-6 b(ositional)76 b(Astronom)-6
+b(y)1510 2037 y(Library)1719 2449 y Fy(2.5-3)751 2856
+y Fz(Programmer's)75 b(Man)-6 b(ual)1633 3566 y Fx(Abstract)0
+3828 y FD(SLALIB)42 b(is)g(a)h(library)d(used)i(b)m(y)h(writers)e(of)i
+(p)s(ositional-astronom)m(y)f(applications.)76 b(Most)43
+b(of)g(the)g(188)0 3941 y(routines)30 b(are)i(concerned)f(with)f
+(astronomical)h(p)s(osition)e(and)i(time,)g(but)g(a)g(n)m(um)m(b)s(er)f
+(ha)m(v)m(e)j(wider)c(trigono-)0 4054 y(metrical,)h(n)m(umerical)f(or)h
+(general)h(applications.)p eop
+%%Page: 2 2
+2 1 bop 0 52 a FD(ii)0 351 y Fx(Con)l(ten)l(ts)0 555
+y FB(1)84 b(INTR)m(ODUCTION)2732 b(1)136 668 y FD(1.1)94
+b(Purp)s(ose)61 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)151 b(1)136
+781 y(1.2)94 b(Example)30 b(Application)38 b(.)45 b(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)151 b(1)136 894
+y(1.3)94 b(Scop)s(e)84 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)151
+b(2)136 1007 y(1.4)94 b(Ob)5 b(jectiv)m(es)38 b(.)46
+b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)151 b(3)136 1120 y(1.5)94 b(F)-8 b(ortran)32
+b(V)-8 b(ersion)43 b(.)i(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)151 b(4)136 1233 y(1.6)94
+b(C)30 b(V)-8 b(ersion)65 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)151 b(4)136
+1345 y(1.7)94 b(F)-8 b(uture)31 b(V)-8 b(ersions)43 b(.)i(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)151
+b(4)136 1458 y(1.8)94 b(New)31 b(F)-8 b(unctions)77 b(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)151 b(5)136 1571 y(1.9)94 b(Ac)m(kno)m(wledgemen)m(ts)60
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)151 b(5)0 1775 y FB(2)84 b(LINKING)3120 b(5)0 1979
+y(3)84 b(SUBPR)m(OGRAM)37 b(SPECIFICA)-9 b(TIONS)1881
+b(6)0 2183 y(4)84 b(EXPLANA)-9 b(TION)34 b(AND)h(EXAMPLES)1803
+b(171)136 2296 y FD(4.1)94 b(Spherical)29 b(T)-8 b(rigonometry)85
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(171)136 2409 y(4.2)94 b(V)-8 b(ectors)32 b(and)e(Matrices)38
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(174)136 2521 y(4.3)94 b(Celestial)30 b(Co)s(ordinate)f(Systems)69
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(176)136
+2634 y(4.4)94 b(Precession)30 b(and)g(Nutation)46 b(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(179)136 2747
+y(4.5)94 b(Mean)31 b(Places)c(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(181)136
+2860 y(4.6)94 b(Ep)s(o)s(c)m(h)62 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(181)136 2973 y(4.7)94 b(Prop)s(er)30 b(Motion)80 b(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)60 b(182)136 3086 y(4.8)94 b(P)m(arallax)31 b(and)e(Radial)g(V)-8
+b(elo)s(cit)m(y)87 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(182)136 3199 y(4.9)94 b(Ab)s(erration)c(.)46 b(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(183)136 3312 y(4.10)49 b(Di\013eren)m(t)31 b(Sorts)f(of)h(Mean)g
+(Place)55 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(184)136 3425 y(4.11)49 b(Mean)31 b(Place)g(T)-8 b(ransformations)90
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(185)136
+3538 y(4.12)49 b(Mean)31 b(Place)g(to)g(Apparen)m(t)g(Place)81
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(187)136
+3651 y(4.13)49 b(Apparen)m(t)31 b(Place)f(to)i(Observ)m(ed)d(Place)73
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(188)136 3763
+y(4.14)49 b(The)30 b(Hipparcos)g(Catalogue)h(and)f(the)g(ICRS)63
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)60 b(191)136 3876 y(4.15)49 b(Time)30
+b(Scales)50 b(.)c(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(191)136 3989 y(4.16)49
+b(Calendars)59 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60 b(196)136 4102
+y(4.17)49 b(Geo)s(cen)m(tric)32 b(Co)s(ordinates)86 b(.)46
+b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(196)136 4215 y(4.18)49 b(Ephemerides)88 b(.)46 b(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(197)136 4328 y(4.19)49 b(Radial)30 b(V)-8 b(elo)s(cit)m(y)31
+b(and)e(Ligh)m(t-Time)h(Corrections)47 b(.)f(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(206)136 4441 y(4.20)49 b(F)-8 b(o)s(cal-Plane)31 b(Astrometry)71
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(207)136 4554 y(4.21)49 b(Numerical)30 b(Metho)s(ds)d(.)46
+b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)60
+b(208)0 4758 y FB(5)84 b(SUMMAR)-9 b(Y)37 b(OF)d(CALLS)2369
+b(212)p eop
+%%Page: 1 3
+1 2 bop 0 52 a Fw(SUN/67.70)3297 b FD(1)0 351 y Fx(1)135
+b(INTR)l(ODUCTION)0 605 y Fv(1.1)112 b(Purp)s(ose)0 824
+y FD(SLALIB)330 791 y Fu(1)404 824 y FD(is)34 b(a)h(library)d(of)j
+(routines)f(in)m(tended)g(to)h(mak)m(e)h(accurate)g(and)f(reliable)d(p)
+s(ositional-astronom)m(y)0 937 y(applications)i(easier)h(to)h(write.)56
+b(Most)36 b(SLALIB)f(routines)f(are)i(concerned)g(with)e(astronomical)h
+(p)s(osition)0 1049 y(and)k(time,)k(but)c(a)h(n)m(um)m(b)s(er)f(ha)m(v)
+m(e)i(wider)d(trigonometrical,)k(n)m(umerical)d(or)g(general)h
+(applications.)68 b(The)0 1162 y(applications)20 b(ASTR)m(OM,)h(COCO,)f
+(R)-10 b(V)22 b(and)e(TPOINT)h(all)f(mak)m(e)i(extensiv)m(e)g(use)f(of)
+h(the)f(SLALIB)g(routines,)0 1275 y(as)31 b(do)f(a)h(n)m(um)m(b)s(er)e
+(of)h(telescop)s(e)h(con)m(trol)g(systems)f(around)g(the)g(w)m(orld.)40
+b(The)30 b(SLALIB)g(v)m(ersions)f(curren)m(tly)0 1388
+y(in)i(service)h(are)g(written)f(in)g(F)-8 b(ortran)32
+b(77)h(and)f(run)e(on)i(V)-10 b(AX/VMS,)33 b(sev)m(eral)f(Unix)f
+(platforms)g(and)h(PC.)f(A)0 1501 y(proprietary)k(ANSI)h(C)g(v)m
+(ersion)f(is)h(also)g(a)m(v)-5 b(ailable)35 b(from)h(the)h(author;)i
+(it)d(is)f(functionally)f(similar)f(to)k(the)0 1614 y(F)-8
+b(ortran)31 b(v)m(ersion)f(up)s(on)f(whic)m(h)g(the)h(presen)m(t)h(do)s
+(cumen)m(t)f(concen)m(trates.)0 1904 y Fv(1.2)112 b(Example)37
+b(Application)0 2122 y FD(Here)31 b(is)e(a)i(simple)d(example)i(of)h
+(an)f(application)f(program)h(written)g(using)e(SLALIB)i(calls:)430
+2375 y Ft(PROGRAM)45 b(FK4FK5)143 2487 y(*)143 2600 y(*)95
+b(Read)47 b(a)g(B1950)g(position)e(from)i(I/O)g(unit)g(5)g(and)g(reply)
+f(on)h(I/O)g(unit)g(6)143 2713 y(*)95 b(with)47 b(the)g(J2000)f
+(equivalent.)93 b(Enter)46 b(a)i(period)e(to)h(quit.)143
+2826 y(*)430 2939 y(IMPLICIT)e(NONE)430 3052 y(CHARACTER)g(C*80,S)430
+3165 y(INTEGER)g(I,J,IHMSF\(4\),IDMSF\(4\))430 3278 y(DOUBLE)h
+(PRECISION)f(R4,D4,R5,D5)430 3391 y(LOGICAL)g(BAD)143
+3617 y(*)143 b(Loop)47 b(until)f(a)i(period)e(is)h(entered)430
+3729 y(C)g(=)g(')h(')430 3842 y(DO)f(WHILE)f(\(C\(:1\).NE.'.'\))143
+4068 y(*)239 b(Read)46 b(h)i(m)f(s)h(d)f(')g(")573 4181
+y(READ)f(\(5,'\(A\)'\))g(C)573 4294 y(IF)h(\(C\(:1\).NE.'.'\))d(THEN)
+716 4407 y(BAD)j(=)g(.TRUE.)143 4633 y(*)382 b(Decode)46
+b(the)h(RA)716 4746 y(I)g(=)h(1)716 4859 y(CALL)f
+(sla_DAFIN\(C,I,R4,J\))716 4971 y(IF)g(\(J.EQ.0\))f(THEN)859
+5084 y(R4)h(=)h(15D0*R4)143 5310 y(*)525 b(Decode)46
+b(the)h(Dec)859 5423 y(CALL)g(sla_DAFIN\(C,I,D4,J\))859
+5536 y(IF)g(\(J.EQ.0\))f(THEN)p 0 5607 1512 4 v 104 5661
+a Fs(1)138 5693 y Fr(The)26 b(name)f(isn't)h(an)g(acron)n(ym;)f(it)g
+(just)h(stands)g(for)h(\\Subprogram)d(Library)i(A".)p
+eop
+%%Page: 2 4
+2 3 bop 0 52 a FD(2)143 464 y Ft(*)668 b(FK4)47 b(to)g(FK5)1002
+577 y(CALL)g(sla_FK45Z\(R4,D4,1950D0,R)o(5,D5)o(\))143
+803 y(*)668 b(Format)46 b(and)h(output)f(the)h(result)1002
+916 y(CALL)g(sla_DR2TF\(2,R5,S,IHMSF\))1002 1029 y(CALL)g
+(sla_DR2AF\(1,D5,S,IDMSF\))1002 1142 y(WRITE)g(\(6,)382
+1255 y(:)334 b('\(1X,I2.2,2I3.2,''.'',I)o(2.2,)o(2X,)o(A,I2)o(.2,2)o
+(I3.)o(2,'')o(.'',)o(I1\))o('\))382 1367 y(:)2529 b(IHMSF,S,IDMSF)1002
+1480 y(BAD)47 b(=)h(.FALSE.)859 1593 y(END)f(IF)716 1706
+y(END)g(IF)716 1819 y(IF)g(\(BAD\))f(WRITE)h(\(6,'\(1X,''?''\)'\))573
+1932 y(END)g(IF)430 2045 y(END)f(DO)430 2271 y(END)0
+2518 y FD(In)36 b(this)g(example,)i(SLALIB)f(not)g(only)f(pro)m(vides)g
+(the)h(complicated)g(FK4)g(to)h(FK5)f(transformation)f(but)0
+2631 y(also)28 b(simpli\014es)d(the)j(tedious)g(and)g(error-prone)f
+(tasks)i(of)f(deco)s(ding)g(and)f(formatting)h(angles)h(expressed)e(as)
+0 2744 y(hours,)i(min)m(utes)g Fq(etc)p FD(.)40 b(The)30
+b(example)f(incorp)s(orates)h(range)g(c)m(hec)m(king,)h(and)e(a)m(v)m
+(oids)h(the)g(notorious)g(\\min)m(us)0 2857 y(zero")24
+b(problem)d(\(an)i(often-p)s(erp)s(etrated)g(bug)f(where)h
+(declinations)e(b)s(et)m(w)m(een)i(0)2754 2824 y Fp(\016)2817
+2857 y FD(and)f Fo(\000)p FD(1)3102 2824 y Fp(\016)3165
+2857 y FD(lose)g(their)g(min)m(us)0 2970 y(sign\).)37
+b(With)22 b(a)h(little)e(extra)i(elab)s(oration)f(and)g(a)g(few)g(more)
+h(calls)e(to)j(SLALIB,)e(defaulting)e(can)j(b)s(e)f(pro)m(vided)0
+3083 y(\(enabling)31 b(un)m(used)g(\014elds)f(to)j(b)s(e)f(replaced)g
+(with)f(commas)i(to)f(a)m(v)m(oid)h(ret)m(yping\),)g(prop)s(er)e
+(motions)h(can)g(b)s(e)0 3196 y(handled,)37 b(di\013eren)m(t)f(ep)s(o)s
+(c)m(hs)g(can)h(b)s(e)f(sp)s(eci\014ed,)h(and)f(so)h(on.)60
+b(See)37 b(the)g(program)g(COCO)e(\(SUN/56\))k(for)0
+3308 y(further)29 b(ideas.)0 3596 y Fv(1.3)112 b(Scop)s(e)0
+3814 y FD(SLALIB)30 b(con)m(tains)g(188)i(routines)d(co)m(v)m(ering)j
+(the)e(follo)m(wing)f(topics:)136 4038 y Fo(\017)46 b
+FD(String)29 b(Deco)s(ding,)i(Sexagesimal)f(Con)m(v)m(ersions)136
+4222 y Fo(\017)46 b FD(Angles,)30 b(V)-8 b(ectors)32
+b(&)e(Rotation)i(Matrices)136 4406 y Fo(\017)46 b FD(Calendars,)30
+b(Time)f(Scales)136 4590 y Fo(\017)46 b FD(Precession)30
+b(&)g(Nutation)136 4774 y Fo(\017)46 b FD(Prop)s(er)30
+b(Motion)136 4958 y Fo(\017)46 b FD(FK4/FK5/Hipparcos,)32
+b(Elliptic)27 b(Ab)s(erration)136 5141 y Fo(\017)46 b
+FD(Geo)s(cen)m(tric)32 b(Co)s(ordinates)136 5325 y Fo(\017)46
+b FD(Apparen)m(t)31 b(&)f(Observ)m(ed)f(Place)136 5509
+y Fo(\017)46 b FD(Azim)m(uth)30 b(&)g(Elev)-5 b(ation)136
+5693 y Fo(\017)46 b FD(Refraction)31 b(&)f(Air)f(Mass)p
+eop
+%%Page: 3 5
+3 4 bop 0 52 a Fw(SUN/67.70)3297 b FD(3)136 351 y Fo(\017)46
+b FD(Ecliptic,)29 b(Galactic,)j(Sup)s(ergalactic)d(Co)s(ordinates)136
+547 y Fo(\017)46 b FD(Ephemerides)136 743 y Fo(\017)g
+FD(Astrometry)136 938 y Fo(\017)g FD(Numerical)29 b(Metho)s(ds)0
+1245 y Fv(1.4)112 b(Ob)6 b(jectiv)m(es)0 1473 y FD(SLALIB)26
+b(w)m(as)h(designed)f(to)h(giv)m(e)g(application)e(programmers)h(a)h
+(basic)f(set)h(of)g(p)s(ositional-astronom)m(y)f(to)s(ols)0
+1586 y(whic)m(h)j(w)m(ere)i(accurate)h(and)e(easy)h(to)g(use.)40
+b(T)-8 b(o)31 b(this)e(end,)h(the)h(library)d(is:)136
+1833 y Fo(\017)46 b FD(Readily)29 b(a)m(v)-5 b(ailable,)30
+b(including)d(source)k(co)s(de)f(and)g(do)s(cumen)m(tation.)136
+2029 y Fo(\017)46 b FD(Supp)s(orted)28 b(and)i(main)m(tained.)136
+2225 y Fo(\017)46 b FD(P)m(ortable)23 b({)h(co)s(ded)e(in)g(standard)g
+(languages)h(and)f(a)m(v)-5 b(ailable)22 b(for)h(m)m(ultiple)d
+(computers)j(and)f(op)s(erating)227 2337 y(systems.)136
+2533 y Fo(\017)46 b FD(Thoroughly)21 b(commen)m(ted,)k(b)s(oth)d(for)h
+(main)m(tainabilit)m(y)d(and)h(to)j(assist)e(those)h(wishing)d(to)j
+(cannibalize)227 2646 y(the)31 b(co)s(de.)136 2842 y
+Fo(\017)46 b FD(Stable.)136 3038 y Fo(\017)g FD(T)-8
+b(rust)m(w)m(orth)m(y)22 b({)g(some)h(care)f(has)g(gone)g(in)m(to)g
+(testing)g(SLALIB,)f(b)s(oth)g(b)m(y)h(comparison)f(with)f(published)
+227 3150 y(data)31 b(and)f(b)m(y)g(c)m(hec)m(ks)i(for)e(in)m(ternal)f
+(consistency)-8 b(.)136 3346 y Fo(\017)46 b FD(Rigorous)27
+b({)h(corners)f(are)h(not)g(cut,)g(ev)m(en)h(where)e(the)g(practical)g
+(consequences)h(w)m(ould,)g(as)f(a)h(rule,)f(b)s(e)227
+3459 y(negligible.)136 3655 y Fo(\017)46 b FD(Comprehensiv)m(e,)28
+b(without)f(including)e(to)s(o)k(man)m(y)g(esoteric)g(features)f
+(required)f(only)g(b)m(y)h(sp)s(ecialists.)136 3850 y
+Fo(\017)46 b FD(Practical)40 b({)h(almost)f(all)f(the)h(routines)f(ha)m
+(v)m(e)i(b)s(een)e(written)g(to)i(satisfy)f(real)f(needs)h(encoun)m
+(tered)227 3963 y(during)28 b(the)j(dev)m(elopmen)m(t)g(of)f(real-life)
+f(applications.)136 4159 y Fo(\017)46 b FD(En)m(vironmen)m(t-indep)s
+(enden)m(t)28 b({)j(the)f(pac)m(k)-5 b(age)33 b(is)c(completely)h(free)
+h(of)f(pauses,)g(stops,)h(I/O)f Fq(etc)p FD(.)136 4355
+y Fo(\017)46 b FD(Self-con)m(tained)30 b({)h(SLALIB)f(calls)f(no)i
+(other)f(libraries.)0 4602 y(A)g(few)h Fq(c)-5 b(ave)g(ats)p
+FD(:)136 4850 y Fo(\017)46 b FD(SLALIB)30 b(do)s(es)g(not)g(pretend)g
+(to)h(b)s(e)e(canonical.)41 b(It)30 b(is)f(in)g(essence)i(an)f(an)m
+(thology)-8 b(,)32 b(and)e(the)g(adopted)227 4963 y(algorithms)g(are)g
+(liable)f(to)i(c)m(hange)g(as)g(more)f(up-to-date)i(ones)e(b)s(ecome)h
+(a)m(v)-5 b(ailable.)136 5159 y Fo(\017)46 b FD(The)26
+b(functions)e(aren't)i(orthogonal)h({)f(there)g(are)g(sev)m(eral)g
+(cases)h(of)f(di\013eren)m(t)f(routines)g(doing)g(similar)227
+5271 y(things,)30 b(and)f(man)m(y)h(examples)g(where)g(sequences)g(of)g
+(SLALIB)g(calls)f(ha)m(v)m(e)j(simply)27 b(b)s(een)j(pac)m(k)-5
+b(aged,)227 5384 y(all)30 b(to)h(mak)m(e)g(applications)e(less)g
+(trouble)h(to)h(write.)136 5580 y Fo(\017)46 b FD(There)20
+b(are)h(omissions)d({)j(for)f(example)g(there)g(are)h(no)f(routines)f
+(for)h(calculating)g(ph)m(ysical)f(ephemerides)227 5693
+y(of)31 b(Solar-System)f(b)s(o)s(dies.)p eop
+%%Page: 4 6
+4 5 bop 0 52 a FD(4)136 351 y Fo(\017)46 b FD(SLALIB)33
+b(is)f(not)h(homogeneous,)i(though)e(imp)s(ortan)m(t)f(subsets)g(\(for)
+h(example)g(the)g(FK4/FK5)i(rou-)227 464 y(tines\))30
+b(are.)136 657 y Fo(\017)46 b FD(The)28 b(library)e(is)i(not)h(fo)s
+(olpro)s(of.)38 b(Y)-8 b(ou)29 b(ha)m(v)m(e)h(to)f(kno)m(w)g(what)f(y)m
+(ou)h(are)g(trying)e(to)i(do)g(\()p Fq(e.g.)f FD(b)m(y)g(reading)227
+769 y(textb)s(o)s(oks)j(on)f(p)s(ositional)e(astronom)m(y\),)k(and)d
+(it)h(is)f(the)i(caller's)f(resp)s(onsibilit)m(y)c(to)31
+b(supply)c(sensible)227 882 y(argumen)m(ts)k(\(although)f(enough)g(in)m
+(ternal)f(v)-5 b(alidation)29 b(is)g(done)i(to)g(a)m(v)m(oid)g
+(arithmetic)e(errors\).)136 1075 y Fo(\017)46 b FD(Without)32
+b(b)s(eing)e(written)h(in)f(a)i(w)m(asteful)f(manner,)h(SLALIB)f(is)f
+(nonetheless)h(optimized)g(for)g(main-)227 1188 y(tainabilit)m(y)e
+(rather)h(than)g(sp)s(eed.)39 b(In)30 b(addition,)f(there)h(are)h(man)m
+(y)f(places)g(where)g(considerable)e(sim-)227 1301 y(pli\014cation)c(w)
+m(ould)h(b)s(e)h(p)s(ossible)e(if)h(some)i(sp)s(eci\014ed)d(amoun)m(t)j
+(of)f(accuracy)i(could)d(b)s(e)h(sacri\014ced;)h(suc)m(h)227
+1413 y(compromises)g(are)h(left)f(to)h(the)g(individual)23
+b(programmer)k(and)g(are)g(not)h(allo)m(w)m(ed)f(to)i(limit)c(SLALIB's)
+227 1526 y(v)-5 b(alue)30 b(as)h(a)f(source)h(of)g(comparison)e
+(results.)0 1828 y Fv(1.5)112 b(F)-9 b(ortran)38 b(V)-9
+b(ersion)0 2052 y FD(The)26 b(F)-8 b(ortran)26 b(v)m(ersions)g(of)g
+(SLALIB)f(use)h(ANSI)g(F)-8 b(ortran)26 b(77)h(with)e(a)h(few)g
+(commonplace)g(extensions.)39 b(Just)0 2165 y(three)33
+b(out)g(of)g(the)h(188)g(routines)e(require)f(platform-sp)s(eci\014c)g
+(tec)m(hniques)i(and)f(accordingly)g(are)i(supplied)0
+2278 y(in)42 b(di\013eren)m(t)g(forms.)78 b(SLALIB)43
+b(has)g(b)s(een)f(implemen)m(ted)g(on)h(the)g(follo)m(wing)e
+(platforms:)65 b(V)-10 b(AX/VMS,)0 2391 y(PC)37 b(\(Microsoft)h(F)-8
+b(ortran,)40 b(Lin)m(ux\),)e(DECstation)g(\(Ultrix\),)h(DEC)e(Alpha)f
+(\(DEC)i(Unix\),)g(Sun)e(\(SunOS,)0 2504 y(Solaris\),)29
+b(Hewlett)i(P)m(ac)m(k)-5 b(ard)32 b(\(HP-UX\),)g(CONVEX,)e(P)m
+(erkin-Elmer)f(and)g(F)-8 b(ujitsu.)0 2805 y Fv(1.6)112
+b(C)38 b(V)-9 b(ersion)0 3030 y FD(An)41 b(ANSI)g(C)g(v)m(ersion)g(of)h
+(SLALIB)f(is)g(a)m(v)-5 b(ailable)41 b(from)g(the)g(author)h(but)e(is)h
+(not)h(part)f(of)h(the)g(Starlink)0 3143 y(release.)57
+b(The)36 b(functionalit)m(y)e(of)i(this)e(\(proprietary\))i(C)f(v)m
+(ersion)g(closely)g(matc)m(hes)i(that)g(of)f(the)g(Starlink)0
+3256 y(F)-8 b(ortran)39 b(SLALIB,)e(partly)g(for)h(the)g(con)m(v)m
+(enience)h(of)f(existing)f(users)g(of)h(the)g(F)-8 b(ortran)39
+b(v)m(ersion,)g(some)f(of)0 3369 y(whom)28 b(ha)m(v)m(e)j(in)c(the)j
+(past)f(implemen)m(ted)e(C)i(\\wrapp)s(ers".)39 b(The)29
+b(function)e(names)i(cannot)h(b)s(e)f(the)g(same)g(as)0
+3482 y(the)34 b(F)-8 b(ortran)35 b(v)m(ersions)f(b)s(ecause)g(of)h(p)s
+(oten)m(tial)e(linking)f(problems)g(when)h(b)s(oth)h(forms)f(of)i(the)f
+(library)e(are)0 3595 y(presen)m(t;)40 b(the)d(C)g(routine)f(whic)m(h)f
+(is)h(the)h(equiv)-5 b(alen)m(t)37 b(of)g(\(for)g(example\))g
+Ft(SLA_REFRO)d FD(is)i Ft(slaRefro)p FD(.)58 b(The)0
+3708 y(t)m(yp)s(es)37 b(of)f(argumen)m(ts)h(follo)m(w)f(the)h(F)-8
+b(ortran)37 b(v)m(ersion,)h(except)g(that)f(in)m(tegers)g(are)g
+Ft(int)f FD(rather)g(than)h Ft(long)0 3821 y FD(\(the)29
+b(one)f(exception)g(b)s(eing)f Ft(slaIntin)p FD(,)f(whic)m(h)h(returns)
+g(a)h Ft(long)f FD(and)g(is)g(supplemen)m(ted)g(b)m(y)h(an)g
+(additional)0 3933 y(routine,)23 b(not)f(presen)m(t)g(in)e(the)i(F)-8
+b(ortran)23 b(SLALIB,)f(called)f Ft(slaInt2in)p FD(,)g(whic)m(h)g
+(returns)f(an)i Ft(int)p FD(\).)37 b(Argumen)m(t)0 4046
+y(passing)28 b(is)g(b)m(y)h(v)-5 b(alue)29 b(\(except)h(for)f(arra)m
+(ys)h(and)e(strings)g(of)i(course\))f(for)g(giv)m(en)g(argumen)m(ts)h
+(and)e(b)m(y)h(p)s(oin)m(ter)0 4159 y(for)h(returned)f(argumen)m(ts.)41
+b(All)29 b(the)i(C)f(functions)f(are)i(re-en)m(tran)m(t.)0
+4324 y(The)f(F)-8 b(ortran)31 b(routines)e Ft(sla_GRESID)p
+FD(,)f Ft(sla_RANDOM)g FD(and)h Ft(sla_WAIT)f FD(ha)m(v)m(e)k(no)e(C)g
+(coun)m(terparts.)0 4489 y(F)-8 b(urther)31 b(details)f(of)i(the)f(C)g
+(v)m(ersion)f(of)i(SLALIB)e(are)i(a)m(v)-5 b(ailable)31
+b(from)f(the)i(author.)43 b(The)31 b(de\014nitiv)m(e)e(guide)0
+4602 y(to)i(the)g(calling)e(sequences)h(is)g(the)g(\014le)g
+Ft(slalib.h)p FD(.)0 4904 y Fv(1.7)112 b(F)-9 b(uture)38
+b(V)-9 b(ersions)0 5128 y FD(The)24 b(homogeneit)m(y)i(and)e(ease)i(of)
+f(use)g(of)g(SLALIB)f(could)g(p)s(erhaps)g(b)s(e)g(impro)m(v)m(ed)g(in)
+g(the)h(future)f(b)m(y)g(turning)0 5241 y(to)30 b(ob)5
+b(ject-orien)m(ted)30 b(tec)m(hniques,)f(in)f(particular)f(through)h
+(the)h(C++)f(and)h(Ja)m(v)-5 b(a)30 b(languages.)40 b(F)-8
+b(or)30 b(example)0 5354 y(\\celestial)21 b(p)s(osition")f(could)g(b)s
+(e)g(a)i(class)f(and)f(man)m(y)h(of)h(the)f(transformations)f(could)g
+(happ)s(en)g(automatically)-8 b(.)0 5467 y(This)22 b(requires)h
+(further)g(study)g(and)g(w)m(ould)g(result)g(in)g(a)h(complete)h
+(redesign.)37 b(V)-8 b(arious)24 b(attempts)h(ha)m(v)m(e)g(b)s(een)0
+5580 y(made)36 b(to)h(do)g(this,)g(but)e(none)h(as)h(y)m(et)g(has)g
+(the)f(author's)g(seal)h(of)f(appro)m(v)-5 b(al.)58 b(F)-8
+b(urthermore,)38 b(the)f(impact)0 5693 y(of)c(F)-8 b(ortran)33
+b(90)h(has)e(y)m(et)i(to)g(b)s(e)e(assessed.)48 b(Should)30
+b(compilers)i(b)s(ecome)h(widely)e(a)m(v)-5 b(ailable,)33
+b(some)g(in)m(ternal)p eop
+%%Page: 5 7
+5 6 bop 0 52 a Fw(SUN/67.70)3297 b FD(5)0 351 y(reco)s(ding)33
+b(ma)m(y)i(b)s(e)f(w)m(orth)m(while)f(in)g(order)g(to)i(simplify)c
+(parts)j(of)h(the)f(co)s(de.)53 b(Ho)m(w)m(ev)m(er,)37
+b(as)e(with)e(C++,)h(a)0 464 y(redesign)d(of)i(the)f(application)f(in)m
+(terfaces)i(will)d(b)s(e)h(needed)h(if)g(the)g(capabilities)e(of)j(the)
+f(new)g(language)h(are)0 577 y(to)e(b)s(e)f(exploited)f(to)i(the)g
+(full.)0 865 y Fv(1.8)112 b(New)37 b(F)-9 b(unctions)0
+1083 y FD(In)39 b(a)i(pac)m(k)-5 b(age)41 b(lik)m(e)f(SLALIB)f(it)h(is)
+f(di\016cult)f(to)i(kno)m(w)g(ho)m(w)g(far)g(to)h(go.)70
+b(Is)39 b(it)h(enough)g(to)g(pro)m(vide)f(the)0 1196
+y(primitiv)m(e)20 b(op)s(erations,)k(or)f(should)e(more)i(complicated)f
+(functions)f(b)s(e)h(pac)m(k)-5 b(aged?)40 b(Is)22 b(it)g(w)m(orth)h
+(encroac)m(hing)0 1309 y(on)37 b(sp)s(ecialist)e(areas,)k(where)d
+(individual)d(exp)s(erts)j(ha)m(v)m(e)i(all)e(written)g(their)g(o)m(wn)
+g(soft)m(w)m(are)j(already?)59 b(T)-8 b(o)0 1422 y(what)44
+b(exten)m(t)i(should)d(CPU)h(e\016ciency)h(b)s(e)f(an)g(issue?)82
+b(Ho)m(w)45 b(m)m(uc)m(h)f(supp)s(ort)f(of)i(di\013eren)m(t)f(n)m
+(umerical)0 1535 y(precisions)28 b(is)i(required?)38
+b(And)30 b(so)h(on.)0 1694 y(In)38 b(practice,)k(almost)d(all)f(the)h
+(routines)f(in)f(SLALIB)i(are)g(there)g(b)s(ecause)g(they)g(w)m(ere)h
+(needed)e(for)h(some)0 1807 y(sp)s(eci\014c)27 b(application,)g(and)g
+(this)g(is)h(lik)m(ely)e(to)j(remain)e(the)h(pattern)g(for)g(an)m(y)h
+(enhancemen)m(ts)f(in)f(the)h(future.)0 1920 y(Suggestions)i(for)g
+(additional)e(SLALIB)i(routines)f(should)g(b)s(e)h(addressed)f(to)i
+(the)g(author.)0 2207 y Fv(1.9)112 b(Ac)m(kno)m(wledgemen)m(ts)0
+2425 y FD(SLALIB)39 b(is)f(descended)h(from)g(a)h(pac)m(k)-5
+b(age)42 b(of)d(routines)g(written)f(for)i(the)f(AA)m(O)h(16-bit)g
+(minicomputers)0 2538 y(in)33 b(the)h(mid-1970s.)51 b(The)33
+b(coming)h(of)g(the)g(V)-10 b(AX)34 b(allo)m(w)m(ed)g(a)g(m)m(uc)m(h)g
+(more)g(comprehensiv)m(e)f(and)h(thorough)0 2651 y(pac)m(k)-5
+b(age)38 b(to)f(b)s(e)f(designed)f(for)h(Starlink,)g(esp)s(ecially)f
+(imp)s(ortan)m(t)g(at)i(a)g(time)f(when)f(the)i(adoption)f(of)g(the)0
+2764 y(IA)m(U)f(1976)h(resolutions)d(mean)m(t)i(that)g(astronomers)g(w)
+m(ould)e(ha)m(v)m(e)j(to)f(cop)s(e)f(with)f(a)i(mixture)e(of)i
+(reference)0 2877 y(frames,)30 b(time)g(scales)h(and)f(nomenclature.)0
+3036 y(Muc)m(h)k(of)h(the)f(preparatory)g(w)m(ork)g(on)g(SLALIB)g(w)m
+(as)h(done)f(b)m(y)g(Althea)g(Wilkinson)e(of)i(Manc)m(hester)h(Uni-)0
+3149 y(v)m(ersit)m(y)-8 b(.)98 b(During)48 b(its)h(dev)m(elopmen)m(t,)
+54 b(Andrew)48 b(Murra)m(y)-8 b(,)55 b(Catherine)48 b(Hohenk)m(erk,)55
+b(Andrew)48 b(Sinclair,)0 3262 y(Bernard)25 b(Y)-8 b(allop)25
+b(and)g(Brian)f(Emerson)h(of)h(Her)f(Ma)5 b(jest)m(y's)28
+b(Nautical)d(Almanac)g(O\016ce)h(w)m(ere)g(consulted)f(on)0
+3375 y(man)m(y)f(o)s(ccasions;)i(their)d(advice)h(w)m(as)g(indisp)s
+(ensable.)34 b(I)23 b(am)h(esp)s(ecially)e(grateful)i(to)g(Catherine)f
+(Hohenk)m(erk)0 3488 y(for)34 b(supplying)c(preprin)m(ts)i(of)i(pap)s
+(ers,)g(and)f(test)i(data.)52 b(A)34 b(n)m(um)m(b)s(er)f(of)h
+(enhancemen)m(ts)g(to)h(SLALIB)e(w)m(ere)0 3601 y(at)39
+b(the)g(suggestion)g(of)g(Russell)d(Ow)m(en,)41 b(Univ)m(ersit)m(y)d
+(of)g(W)-8 b(ashington,)41 b(the)e(late)g(Phil)e(Hill,)h(St)h(Andrews)0
+3714 y(Univ)m(ersit)m(y)-8 b(,)37 b(Bill)d(V)-8 b(acca,)40
+b(JILA,)c(Boulder)f(and)g(Ron)h(Maddalena,)i(NRA)m(O.)e(Mark)g
+(Calabretta,)i(CSIR)m(O)0 3826 y(Radioph)m(ysics,)c(Sydney)e(supplied)f
+(c)m(hanges)k(to)g(suit)e(Con)m(v)m(ex.)53 b(I)33 b(am)h(indebted)f(to)
+i(Derek)f(Jones)g(\(R)m(GO\))0 3939 y(for)c(in)m(tro)s(ducing)e(me)j
+(to)g(the)f(\\univ)m(ersal)f(v)-5 b(ariables")30 b(metho)s(d)g(of)g
+(calculating)g(orbits.)0 4099 y(The)j(\014rst)g(C)g(v)m(ersion)f(of)i
+(SLALIB)f(w)m(as)h(a)g(hand-co)s(ded)e(transcription)f(of)j(the)g
+(Starlink)d(F)-8 b(ortran)34 b(v)m(ersion)0 4211 y(carried)j(out)i(b)m
+(y)f(Stev)m(e)h(Eaton)f(\(Univ)m(ersit)m(y)g(of)g(Leeds\))h(in)e(the)h
+(course)g(of)g(MSc)h(w)m(ork.)64 b(This)36 b(w)m(as)i(later)0
+4324 y(enhanced)29 b(b)m(y)g(John)f(Straede)h(\(AA)m(O\))h(and)f
+(Martin)f(Shepherd)f(\(Caltec)m(h\).)41 b(The)29 b(curren)m(t)g(C)f
+(SLALIB)h(is)f(a)0 4437 y(complete)21 b(rewrite)f(b)m(y)h(the)f(presen)
+m(t)h(author)g(and)f(includes)e(a)j(comprehensiv)m(e)f(v)-5
+b(alidation)19 b(suite.)37 b(Additional)0 4550 y(commen)m(ts)31
+b(on)g(the)f(C)g(v)m(ersion)g(came)h(from)f(Bob)h(P)m(a)m(yne)g(\(NRA)m
+(O\))h(and)d(Jerem)m(y)i(Bailey)f(\(AA)m(O\).)0 4881
+y Fx(2)135 b(LINKING)0 5130 y FD(On)30 b(Unix)f(systems)h(\(Lin)m(ux,)g
+(Sun,)f(DEC)h(Alpha)f Fq(etc.)p FD(\):)227 5355 y Ft(\045)95
+b(f77)47 b(progname.o)e(-L/star/lib)g(`sla_link`)g(-o)i(progname)0
+5580 y FD(\(The)29 b(ab)s(o)m(v)m(e)i(assumes)e(that)h(all)e(Starlink)g
+(directories)g(ha)m(v)m(e)j(b)s(een)d(added)h(to)h(the)g
+Ft(LD_LIBRARY_PATH)25 b FD(and)0 5693 y Ft(PATH)k FD(en)m(vironmen)m(t)
+h(v)-5 b(ariables)29 b(as)i(describ)s(ed)d(in)h(SUN/202.\))p
+eop
+%%Page: 6 8
+6 7 bop 0 52 a FD(6)0 351 y Fx(3)135 b(SUBPR)l(OGRAM)44
+b(SPECIFICA)-11 b(TIONS)p 0 465 3780 8 v 0 578 a(SLA)p
+Fn(_)p Fx(ADDET)383 b Fm(Add)39 b(E-terms)d(of)i(Ab)s(erration)382
+b Fx(SLA)p Fn(_)p Fx(ADDET)0 928 y FB(A)m(CTION)44 b
+FD(:)61 b(Add)40 b(the)h(E-terms)g(\(elliptic)e(comp)s(onen)m(t)i(of)g
+(ann)m(ual)e(ab)s(erration\))i(to)g(a)g(pre)f(IA)m(U)i(1976)227
+1041 y(mean)31 b(place)f(to)h(conform)f(to)i(the)e(old)g(catalogue)i
+(con)m(v)m(en)m(tion.)0 1228 y FB(CALL)45 b FD(:)77 b
+Ft(CALL)46 b(sla_ADDET)g(\(RM,)g(DM,)h(EQ,)g(RC,)g(DC\))0
+1629 y FB(GIVEN)e FD(:)277 1775 y Fq(RM,DM)409 b FB(D)565
+b FD([)15 b Fl(\013;)g(\016)20 b FD(])31 b(without)e(E-terms)i
+(\(radians\))277 1888 y Fq(EQ)604 b FB(D)565 b FD(Besselian)30
+b(ep)s(o)s(c)m(h)g(of)g(mean)h(equator)g(and)f(equino)m(x)0
+2325 y FB(RETURNED)46 b FD(:)277 2497 y Fq(R)n(C,DC)445
+b FB(D)565 b FD([)15 b Fl(\013;)g(\016)20 b FD(])31 b(with)e(E-terms)i
+(included)c(\(radians\))0 2943 y FB(NOTE)44 b FD(:)39
+b(Most)28 b(star)g(p)s(ositions)d(from)i(pre-1984)h(optical)f
+(catalogues)i(\(or)e(obtained)g(b)m(y)g(astrometry)h(with)227
+3056 y(resp)s(ect)d(to)h(suc)m(h)f(stars\))h(ha)m(v)m(e)g(the)f
+(E-terms)g(built-in.)36 b(If)25 b(it)f(is)h(necessary)g(to)h(con)m(v)m
+(ert)h(a)e(formal)f(mean)227 3169 y(place)31 b(\(for)f(example)g(a)h
+(pulsar)e(timing)f(p)s(osition\))h(to)i(one)g(consisten)m(t)g(with)e
+(suc)m(h)h(a)h(star)g(catalogue,)227 3282 y(then)f(the)h([)15
+b Fl(\013;)g(\016)20 b FD(])31 b(should)d(b)s(e)i(adjusted)g(using)e
+(this)i(routine.)0 3728 y FB(REFERENCE)44 b FD(:)56 b
+Fq(Explanatory)42 b(Supplement)f(to)f(the)g(Astr)-5 b(onomic)g(al)43
+b(Ephemeris)p FD(,)e(section)d(2D,)h(page)227 3841 y(48.)p
+0 3990 V 0 4103 a Fx(SLA)p Fn(_)p Fx(AFIN)274 b Fm(Sexagesimal)36
+b(c)m(haracter)g(string)h(to)i(angle)275 b Fx(SLA)p Fn(_)p
+Fx(AFIN)0 4453 y FB(A)m(CTION)44 b FD(:)k(Deco)s(de)35
+b(a)g(free-format)g(sexagesimal)f(string)f(\(degrees,)j(arcmin)m(utes,)
+f(arcseconds\))g(in)m(to)f(a)227 4566 y(single)29 b(precision)g
+(\015oating)h(p)s(oin)m(t)g(n)m(um)m(b)s(er)f(\(radians\).)0
+4754 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_AFIN)g(\(STRING,)f
+(NSTRT,)i(RESLT,)f(JF\))0 5154 y FB(GIVEN)f FD(:)277
+5300 y Fq(STRING)381 b FB(C*\(*\))i FD(string)29 b(con)m(taining)h
+(deg,)h(arcmin,)f(arcsec)h(\014elds)277 5413 y Fq(NSTR)-7
+b(T)428 b FB(I)605 b FD(p)s(oin)m(ter)36 b(to)h(start)g(of)f(deco)s(de)
+h(\(b)s(eginning)d(of)j(STRING)1658 5526 y(=)30 b(1\))p
+eop
+%%Page: 7 9
+7 8 bop 0 52 a Fw(SUN/67.70)3297 b FD(7)0 351 y FB(RETURNED)46
+b FD(:)277 497 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(adv)-5
+b(anced)31 b(past)f(the)h(deco)s(ded)f(angle)277 610
+y Fq(RESL)-7 b(T)442 b FB(R)567 b FD(angle)31 b(in)e(radians)277
+723 y Fq(JF)629 b FB(I)605 b FD(status:)1825 836 y(0)31
+b(=)f(OK)1752 949 y(+1)h(=)f(default,)f(RESL)-8 b(T)30
+b(unc)m(hanged)g(\(note)h(2\))1752 1062 y Fo(\000)p FD(1)g(=)f(bad)f
+(degrees)i(\(note)h(3\))1752 1175 y Fo(\000)p FD(2)f(=)f(bad)f(arcmin)m
+(utes)h(\(note)i(3\))1752 1288 y Fo(\000)p FD(3)f(=)f(bad)f(arcseconds)
+i(\(note)g(3\))0 1694 y FB(EXAMPLE)45 b FD(:)277 1840
+y Fq(ar)-5 b(gument)369 b(b)-5 b(efor)g(e)1235 b(after)277
+2066 y FD(STRING)1013 2033 y Fp(0)1036 2066 y Ft
+(-57 17 44.806  12 34 56.7)2236 2033 y Fp(0)2476 2066
+y FD(unc)m(hanged)277 2179 y(NSTR)-8 b(T)426 b(1)1418
+b(16)32 b(\()p Fq(i.e.)e FD(p)s(oin)m(ting)e(to)j(12...\))277
+2292 y(RESL)-8 b(T)441 b(-)1433 b Fo(\000)p FD(1)p Fl(:)p
+FD(00000)277 2405 y(JF)630 b(-)1433 b(0)0 2691 y(A)48
+b(further)e(call)g(to)j(sla)p Ft(_)p FD(AFIN,)e(without)g(adjustmen)m
+(t)g(of)h(NSTR)-8 b(T,)47 b(will)d(deco)s(de)k(the)g(second)f(angle,)0
+2804 y(12)90 2771 y Fp(\016)145 2804 y FD(34)235 2767
+y Fk(0)278 2804 y FD(56)363 2767 y Fk(0)m(0)367 2804
+y Fl(:)p FD(7.)0 3098 y FB(NOTES)d FD(:)311 3307 y(1.)i(The)27
+b(\014rst)f(three)h(\\\014elds")f(in)g(STRING)g(are)h(degrees,)i
+(arcmin)m(utes,)e(arcseconds,)h(separated)g(b)m(y)427
+3420 y(spaces)d(or)e(commas.)40 b(The)23 b(degrees)h(\014eld)f(ma)m(y)h
+(b)s(e)g(signed,)g(but)f(not)h(the)g(others.)39 b(The)24
+b(deco)s(ding)427 3533 y(is)30 b(carried)f(out)i(b)m(y)f(the)h(sla)p
+Ft(_)p FD(DFL)-8 b(TIN)30 b(routine)f(and)h(is)g(free-format.)311
+3689 y(2.)46 b(Successiv)m(e)24 b(\014elds)e(ma)m(y)i(b)s(e)f(absen)m
+(t,)j(defaulting)c(to)j(zero.)39 b(F)-8 b(or)25 b(zero)f(status,)i(the)
+e(only)e(com)m(bina-)427 3802 y(tions)31 b(allo)m(w)m(ed)g(are)g
+(degrees)h(alone,)f(degrees)h(and)f(arcmin)m(utes,)g(and)f(all)g(three)
+i(\014elds)d(presen)m(t.)427 3915 y(If)34 b(all)f(three)i(\014elds)d
+(are)j(omitted,)h(a)e(status)h(of)f(+1)h(is)e(returned)g(and)h(RESL)-8
+b(T)33 b(is)h(unc)m(hanged.)427 4028 y(In)c(all)f(other)i(cases)g(RESL)
+-8 b(T)30 b(is)f(c)m(hanged.)311 4185 y(3.)46 b(Range)31
+b(c)m(hec)m(king:)506 4342 y Fo(\017)46 b FD(The)38 b(degrees)h
+(\014eld)e(is)g(not)i(range)g(c)m(hec)m(k)m(ed.)66 b(Ho)m(w)m(ev)m(er,)
+43 b(it)38 b(is)f(exp)s(ected)i(to)g(b)s(e)f(in)m(tegral)597
+4454 y(unless)29 b(the)i(other)f(t)m(w)m(o)i(\014elds)d(are)h(absen)m
+(t.)506 4589 y Fo(\017)46 b FD(The)33 b(arcmin)m(utes)h(\014eld)e(is)g
+(exp)s(ected)i(to)h(b)s(e)e(0-59,)j(and)d(in)m(tegral)g(if)g(the)h
+(arcseconds)g(\014eld)597 4702 y(is)39 b(presen)m(t.)70
+b(If)40 b(the)g(arcseconds)g(\014eld)f(is)g(absen)m(t,)k(the)d(arcmin)m
+(utes)g(is)f(exp)s(ected)h(to)h(b)s(e)597 4815 y(0-59.9999...)506
+4950 y Fo(\017)46 b FD(The)30 b(arcseconds)h(\014eld)e(is)g(exp)s
+(ected)i(to)g(b)s(e)f(0-59.9999...)506 5085 y Fo(\017)46
+b FD(Deco)s(ding)40 b(con)m(tin)m(ues)g(ev)m(en)h(when)e(a)h(c)m(hec)m
+(k)i(has)d(failed.)68 b(Under)39 b(these)i(circumstances)597
+5198 y(the)d(\014eld)e(tak)m(es)i(the)g(supplied)c(v)-5
+b(alue,)38 b(defaulting)e(to)i(zero,)i(and)c(the)i(result)e(RESL)-8
+b(T)36 b(is)597 5310 y(computed)30 b(and)g(returned.)311
+5467 y(4.)46 b(F)-8 b(urther)31 b(\014elds)f(after)h(the)g(three)h(exp)
+s(ected)f(ones)g(are)h(not)f(treated)h(as)g(an)e(error.)43
+b(The)30 b(p)s(oin)m(ter)427 5580 y(NSTR)-8 b(T)35 b(is)g(left)g(in)f
+(the)i(correct)h(state)f(for)g(further)e(deco)s(ding)g(with)h(the)g
+(presen)m(t)h(routine)e(or)427 5693 y(with)29 b(sla)p
+Ft(_)p FD(DFL)-8 b(TIN)31 b Fq(etc)p FD(.)40 b(See)31
+b(the)f(example,)h(ab)s(o)m(v)m(e.)p eop
+%%Page: 8 10
+8 9 bop 0 52 a FD(8)311 351 y(5.)46 b(If)27 b(STRING)h(con)m(tains)f
+(hours,)h(min)m(utes,)f(seconds)h(instead)f(of)h(degrees)g
+Fq(etc)p FD(,)g(or)g(if)e(the)i(required)427 464 y(units)k(are)h(turns)
+f(\(or)h(da)m(ys\))h(instead)e(of)i(radians,)e(the)h(result)f(RESL)-8
+b(T)33 b(should)e(b)s(e)h(m)m(ultiplied)427 577 y(as)f(follo)m(ws:)477
+723 y Fq(for)i(STRING)145 b(to)33 b(obtain)202 b(multiply)34
+b(RESL)-7 b(T)33 b(by)477 949 y Fo(\016)583 943 y Fp(0)65
+b(00)1122 949 y FD(radians)264 b(1)p Fl(:)p FD(0)477
+1062 y Fo(\016)583 1056 y Fp(0)65 b(00)1122 1062 y FD(turns)345
+b(1)p Fl(=)p FD(2)p Fl(\031)30 b FD(=)25 b(0)p Fl(:)p
+FD(1591549430918)q(95)q(335)q(8)477 1175 y(h)30 b(m)g(s)422
+b(radians)264 b(15)p Fl(:)p FD(0)477 1288 y(h)30 b(m)g(s)422
+b(da)m(ys)377 b(15)p Fl(=)p FD(2)p Fl(\031)30 b FD(=)25
+b(2)p Fl(:)p FD(387324146378)q(43)q(003)q(65)p 0 1441
+3780 8 v 0 1554 a Fx(SLA)p Fn(_)p Fx(AIRMAS)781 b Fm(Air)38
+b(Mass)784 b Fx(SLA)p Fn(_)p Fx(AIRMAS)0 1904 y FB(A)m(CTION)44
+b FD(:)c(Air)30 b(mass)g(at)h(giv)m(en)g(zenith)e(distance)h(\(double)g
+(precision\).)0 2092 y FB(CALL)45 b FD(:)77 b Ft(D)47
+b(=)h(sla_AIRMAS)d(\(ZD\))0 2444 y FB(GIVEN)g FD(:)277
+2616 y Fq(ZD)611 b FB(D)565 b FD(observ)m(ed)31 b(zenith)e(distance)h
+(\(radians\))0 2989 y FB(RETURNED)46 b FD(:)277 3161
+y Fq(sla)p Ft(_)p Fq(AIRMAS)212 b FB(D)565 b FD(air)30
+b(mass)g(\(1)h(at)g(zenith\))0 3534 y FB(NOTES)44 b FD(:)311
+3726 y(1.)i(The)30 b Fq(observe)-5 b(d)41 b FD(zenith)30
+b(distance)g(referred)f(to)i(ab)s(o)m(v)m(e)h(means)e(\\as)h
+(a\013ected)h(b)m(y)e(refraction".)311 3875 y(2.)46 b(The)32
+b(routine)g(uses)g(Hardie's)f(\(1962\))k(p)s(olynomial)30
+b(\014t)i(to)h(Bemp)s(orad's)f(data)i(for)e(the)g(relativ)m(e)427
+3987 y(air)i(mass,)h Fl(X)7 b FD(,)36 b(in)d(units)g(of)h(thic)m(kness)
+g(at)h(the)f(zenith)g(as)h(tabulated)f(b)m(y)g(Sc)m(ho)s(en)m(b)s(erg)g
+(\(1929\).)427 4100 y(This)39 b(is)g(adequate)j(for)e(all)f(normal)g
+(needs)h(as)h(it)e(is)h(accurate)i(to)f(b)s(etter)f(than)g(0.1\045)h
+(up)f(to)427 4213 y Fl(X)33 b FD(=)25 b(6)p Fl(:)p FD(8)h(and)f(b)s
+(etter)h(than)f(1\045)h(up)e(to)i Fl(X)33 b FD(=)25 b(10.)40
+b(Bemp)s(orad's)25 b(tabulated)g(v)-5 b(alues)25 b(are)h(unlik)m(ely)
+427 4326 y(to)42 b(b)s(e)f(trust)m(w)m(orth)m(y)h(to)f(suc)m(h)g
+(accuracy)i(b)s(ecause)e(of)g(v)-5 b(ariations)40 b(in)g(densit)m(y)-8
+b(,)44 b(pressure)c(and)427 4439 y(other)31 b(conditions)e(in)g(the)h
+(atmosphere)h(from)f(those)h(assumed)e(in)g(his)g(w)m(ork.)311
+4587 y(3.)46 b(The)30 b(sign)g(of)g(the)h(ZD)f(is)f(ignored.)311
+4736 y(4.)46 b(A)m(t)29 b(zenith)d(distances)h(greater)i(than)e(ab)s
+(out)g Fl(\020)k FD(=)25 b(87)2241 4703 y Fp(\016)2309
+4736 y FD(the)i(air)g(mass)g(is)f(held)g(constan)m(t)j(to)f(a)m(v)m
+(oid)427 4849 y(arithmetic)i(o)m(v)m(er\015o)m(ws.)0
+5222 y FB(REFERENCES)44 b FD(:)311 5414 y(1.)i(Hardie,)h(R.H.,)g(1962,)
+i(in)42 b Fq(Astr)-5 b(onomic)g(al)47 b(T)-7 b(e)i(chniques)59
+b FD(ed.)80 b(W.A.)44 b(Hiltner,)i(Univ)m(ersit)m(y)c(of)427
+5527 y(Chicago)31 b(Press,)f(p180.)311 5675 y(2.)46 b(Sc)m(ho)s(en)m(b)
+s(erg,)31 b(E.,)f(1929,)j(Hdb.)c(d.)h(Ap.,)h(Berlin,)e(Julius)e
+(Springer,)i(2,)i(268.)p eop
+%%Page: 9 11
+9 10 bop 0 52 a Fw(SUN/67.70)3297 b FD(9)p 0 267 3780
+8 v 0 380 a Fx(SLA)p Fn(_)p Fx(AL)-11 b(T)g(AZ)191 b
+Fm(V)-10 b(elo)s(cities)37 b Fj(etc.)h Fm(for)g(Altazim)m(uth)d(Moun)m
+(t)193 b Fx(SLA)p Fn(_)p Fx(AL)-11 b(T)g(AZ)0 730 y FB(A)m(CTION)44
+b FD(:)52 b(P)m(ositions,)38 b(v)m(elo)s(cities)d(and)h(accelerations)h
+(for)f(an)g(altazim)m(uth)g(telescop)s(e)h(moun)m(t)g(that)f(is)227
+843 y(trac)m(king)31 b(a)g(star)f(\(double)g(precision\).)0
+1031 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_ALTAZ)g(\(HA,)g(DEC,)h
+(PHI,)1192 1144 y(AZ,)f(AZD,)h(AZDD,)f(EL,)h(ELD,)g(ELDD,)f(PA,)h(PAD,)
+g(PADD\))0 1490 y FB(GIVEN)e FD(:)277 1636 y Fq(HA)600
+b FB(D)565 b FD(hour)30 b(angle)277 1749 y Fq(DEC)540
+b FB(D)565 b FD(declination)277 1862 y Fq(PHI)571 b FB(D)565
+b FD(observ)-5 b(atory)31 b(latitude)0 2209 y FB(RETURNED)46
+b FD(:)277 2355 y Fq(AZ)612 b FB(D)565 b FD(azim)m(uth)277
+2468 y Fq(AZD)543 b FB(D)565 b FD(azim)m(uth)30 b(v)m(elo)s(cit)m(y)277
+2581 y Fq(AZDD)474 b FB(D)565 b FD(azim)m(uth)30 b(acceleration)277
+2694 y Fq(EL)617 b FB(D)565 b FD(elev)-5 b(ation)277
+2807 y Fq(ELD)548 b FB(D)565 b FD(elev)-5 b(ation)30
+b(v)m(elo)s(cit)m(y)277 2920 y Fq(ELDD)479 b FB(D)565
+b FD(elev)-5 b(ation)30 b(acceleration)277 3033 y Fq(P)-7
+b(A)613 b FB(D)565 b FD(parallactic)30 b(angle)277 3146
+y Fq(P)-7 b(AD)544 b FB(D)565 b FD(parallactic)30 b(angle)g(v)m(elo)s
+(cit)m(y)277 3259 y Fq(P)-7 b(ADD)475 b FB(D)565 b FD(parallactic)30
+b(angle)g(acceleration)0 3606 y FB(NOTES)44 b FD(:)311
+3793 y(1.)i(Natural)32 b(units)e(are)i(used)f(throughout.)45
+b(HA,)33 b(DEC,)f(PHI,)g(AZ,)f(EL)h(and)f(ZD)h(are)g(in)f(radians.)427
+3906 y(The)41 b(v)m(elo)s(cities)g(and)g(accelerations)h(assume)g
+(constan)m(t)h(declination)c(and)i(constan)m(t)i(rate)f(of)427
+4019 y(c)m(hange)36 b(of)e(hour)f(angle)i(\(as)f(for)g(trac)m(king)h(a)
+g(star\);)i(the)d(units)f(of)h(AZD,)h(ELD)f(and)g(P)-8
+b(AD)35 b(are)427 4132 y(radians)e(p)s(er)g(radian)g(of)i(HA,)g(while)d
+(the)j(units)d(of)j(AZDD,)g(ELDD)g(and)f(P)-8 b(ADD)35
+b(are)g(radians)427 4245 y(p)s(er)29 b(radian)g(of)h(HA)g(squared.)40
+b(T)-8 b(o)30 b(con)m(v)m(ert)i(in)m(to)e(practical)f(degree-)i(and)f
+(second-based)g(units:)1121 4460 y(angles)99 b Fo(\002)p
+FD(360)p Fl(=)p FD(2)p Fl(\031)770 b Fo(!)100 b FD(degrees)1002
+4573 y(v)m(elo)s(cities)f Fo(\002)p FD(\(2)p Fl(\031)s(=)p
+FD(86400\))24 b Fo(\002)c FD(\(360)p Fl(=)p FD(2)p Fl(\031)s
+FD(\))142 b Fo(!)100 b FD(degree/sec)858 4686 y(accelerations)g
+Fo(\002)p FD(\(2)p Fl(\031)s(=)p FD(86400\))1974 4653
+y Fu(2)2038 4686 y Fo(\002)20 b FD(\(360)p Fl(=)p FD(2)p
+Fl(\031)s FD(\))102 b Fo(!)e FD(degree/sec/sec)427 4901
+y(Note)33 b(that)f(the)f(seconds)g(here)g(are)h(sidereal)e(rather)h
+(than)g(SI.)g(One)f(sidereal)g(second)h(is)g(ab)s(out)427
+5014 y(0.99727)j(SI)29 b(seconds.)427 5176 y(The)c(v)m(elo)s(cit)m(y)i
+(and)e(acceleration)h(factors)h(assume)e(the)h(sidereal)e(trac)m(king)i
+(case.)41 b(Their)24 b(resp)s(ec-)427 5289 y(tiv)m(e)31
+b(n)m(umerical)e(v)-5 b(alues)30 b(are)g(\(exactly\))i(1/240)h(and)d
+(\(appro)m(ximately\))g(1/3300236.9.)311 5467 y(2.)46
+b(Azim)m(uth)31 b(is)g(returned)f(in)g(the)i(range)f([)15
+b(0)p Fl(;)g FD(2)p Fl(\031)20 b FD(];)33 b(north)e(is)f(zero,)j(and)e
+(east)h(is)f(+)p Fl(\031)s(=)p FD(2.)44 b(Elev)-5 b(ation)427
+5580 y(and)32 b(parallactic)g(angle)g(are)h(returned)e(in)h(the)g
+(range)h Fo(\006)p Fl(\031)s FD(.)47 b(P)m(osition)31
+b(angle)i(is)e(+v)m(e)i(for)f(a)h(star)427 5693 y(w)m(est)e(of)g(the)f
+(meridian)e(and)i(is)g(the)g(angle)h(NP{star{zenith.)p
+eop
+%%Page: 10 12
+10 11 bop 0 52 a FD(10)311 351 y(3.)46 b(The)25 b(latitude)g(is)g(geo)s
+(detic)h(as)g(opp)s(osed)e(to)j(geo)s(cen)m(tric.)40
+b(The)25 b(hour)g(angle)g(and)g(declination)f(are)427
+464 y(top)s(o)s(cen)m(tric.)47 b(Refraction)32 b(and)g(de\014ciencies)f
+(in)f(the)j(telescop)s(e)g(moun)m(ting)e(are)i(ignored.)45
+b(The)427 577 y(purp)s(ose)30 b(of)i(the)g(routine)f(is)f(to)j(giv)m(e)
+f(the)g(general)g(form)f(of)h(the)f(quan)m(tities.)44
+b(The)32 b(details)e(of)i(a)427 690 y(real)e(telescop)s(e)h(could)f
+(profoundly)d(c)m(hange)32 b(the)f(results,)e(esp)s(ecially)f(close)j
+(to)g(the)g(zenith.)311 866 y(4.)46 b(No)31 b(range)g(c)m(hec)m(king)g
+(of)g(argumen)m(ts)f(is)g(carried)f(out.)311 1042 y(5.)46
+b(In)28 b(applications)e(whic)m(h)i(in)m(v)m(olv)m(e)g(man)m(y)h(suc)m
+(h)f(calculations,)g(rather)g(than)g(calling)f(the)h(presen)m(t)427
+1155 y(routine)i(it)g(will)e(b)s(e)i(more)g(e\016cien)m(t)h(to)h(use)e
+(inline)d(co)s(de,)k(ha)m(ving)g(previously)d(computed)i(\014xed)427
+1268 y(terms)g(suc)m(h)f(as)h(sine)f(and)g(cosine)g(of)h(latitude,)f
+(and)g(\(for)h(trac)m(king)g(a)g(star\))g(sine)f(and)g(cosine)g(of)427
+1381 y(declination.)p 0 1489 3780 8 v 0 1602 a Fx(SLA)p
+Fn(_)p Fx(AMP)775 b Fm(Apparen)m(t)37 b(to)h(Mean)777
+b Fx(SLA)p Fn(_)p Fx(AMP)0 1953 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m
+(ert)32 b(star)e([)15 b Fl(\013;)g(\016)21 b FD(])30
+b(from)g(geo)s(cen)m(tric)i(apparen)m(t)e(to)h(mean)g(place)f(\(p)s
+(ost)g(IA)m(U)h(1976\).)0 2140 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_AMP)g(\(RA,)h(DA,)g(DATE,)f(EQ,)h(RM,)g(DM\))0
+2481 y FB(GIVEN)e FD(:)277 2627 y Fq(RA,D)n(A)439 b FB(D)565
+b FD(apparen)m(t)31 b([)15 b Fl(\013;)g(\016)20 b FD(])31
+b(\(radians\))277 2740 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(TDB)31 b(for)f(apparen)m(t)h(place)f(\(JD)p Fo(\000)p
+FD(2400000.5\))277 2853 y Fq(EQ)604 b FB(D)565 b FD(equino)m(x:)40
+b(Julian)28 b(ep)s(o)s(c)m(h)i(of)h(mean)f(place)0 3191
+y FB(RETURNED)46 b FD(:)277 3363 y Fq(RM,DM)409 b FB(D)565
+b FD(mean)31 b([)15 b Fl(\013;)g(\016)20 b FD(])30 b(\(radians\))0
+3710 y FB(NOTES)44 b FD(:)311 3895 y(1.)i(The)35 b(distinction)e(b)s
+(et)m(w)m(een)k(the)e(required)f(TDB)i(and)f(TT)g(is)f(alw)m(a)m(ys)i
+(negligible.)54 b(Moreo)m(v)m(er,)427 4008 y(for)30 b(all)g(but)f(the)i
+(most)g(critical)e(applications)f(UTC)i(is)g(adequate.)311
+4152 y(2.)46 b(Iterativ)m(e)41 b(tec)m(hniques)f(are)g(used)g(for)f
+(the)i(ab)s(erration)e(and)g(ligh)m(t)g(de\015ection)h(corrections)g
+(so)427 4265 y(that)i(the)g(routines)f(sla)p Ft(_)p FD(AMP)g(\(or)h
+(sla)p Ft(_)p FD(AMPQK\))f(and)g(sla)p Ft(_)p FD(MAP)g(\(or)h(sla)p
+Ft(_)p FD(MAPQK\))f(are)427 4378 y(accurate)d(in)m(v)m(erses;)i(ev)m
+(en)d(at)g(the)g(edge)g(of)g(the)f(Sun's)f(disc)h(the)g(discrepancy)g
+(is)f(only)h(ab)s(out)427 4491 y(1)31 b(nanoarcsecond.)311
+4635 y(3.)46 b(Where)31 b(m)m(ultiple)e(apparen)m(t)h(places)h(are)g
+(to)g(b)s(e)f(con)m(v)m(erted)i(to)g(mean)f(places,)f(for)h(a)g
+(\014xed)f(date)427 4748 y(and)35 b(equino)m(x,)h(it)e(is)h(more)g
+(e\016cien)m(t)g(to)h(use)f(the)g(sla)p Ft(_)p FD(MAPP)-8
+b(A)36 b(routine)e(to)i(compute)f(the)g(re-)427 4860
+y(quired)29 b(parameters)i(once,)g(follo)m(w)m(ed)f(b)m(y)g(one)h(call)
+e(to)j(sla)p Ft(_)p FD(AMPQK)d(p)s(er)g(star.)311 5004
+y(4.)46 b(F)-8 b(or)49 b(EQ=2000D0,)55 b(the)48 b(agreemen)m(t)i(with)c
+(ICRS)h(sub-mas,)52 b(limited)46 b(b)m(y)i(the)g(precession-)427
+5117 y(n)m(utation)30 b(mo)s(del)e(\(IA)m(U)j(1976)g(precession,)f
+(Shirai)d(&)i(F)-8 b(ukushima)28 b(2001)k(forced)e(n)m(utation)f(and)
+427 5230 y(precession)h(corrections\).)311 5374 y(5.)46
+b(The)25 b(accuracy)h(is)d(further)h(limited)f(b)m(y)h(the)h(routine)f
+(sla)p Ft(_)p FD(EVP)-8 b(,)25 b(called)f(b)m(y)h(sla)p
+Ft(_)p FD(MAPP)-8 b(A,)25 b(whic)m(h)427 5487 y(computes)32
+b(the)g(Earth)f(p)s(osition)e(and)i(v)m(elo)s(cit)m(y)h(using)e(the)i
+(metho)s(ds)f(of)g(Stump\013.)43 b(The)31 b(maxi-)427
+5600 y(m)m(um)f(error)g(is)f(ab)s(out)i(0.3)g(milliarcsecond.)p
+eop
+%%Page: 11 13
+11 12 bop 0 52 a Fw(SUN/67.70)3252 b FD(11)0 351 y FB(REFERENCES)44
+b FD(:)311 554 y(1.)i(1984)32 b Fq(Astr)-5 b(onomic)g(al)36
+b(A)n(lmanac)p FD(,)31 b(pp)e(B39-B41.)311 707 y(2.)46
+b(Lederle)30 b(&)g(Sc)m(h)m(w)m(an,)h(1984.)h Fq(Astr.Astr)-5
+b(ophys.)33 b FB(134)p FD(,)e(1-6.)p 0 855 3780 8 v 0
+968 a Fx(SLA)p Fn(_)p Fx(AMPQK)400 b Fm(Quic)m(k)38 b(Apparen)m(t)f(to)
+h(Mean)402 b Fx(SLA)p Fn(_)p Fx(AMPQK)0 1318 y FB(A)m(CTION)44
+b FD(:)c(Con)m(v)m(ert)30 b(star)g([)15 b Fl(\013;)g(\016)20
+b FD(])30 b(from)f(geo)s(cen)m(tric)i(apparen)m(t)f(to)g(mean)f(place)h
+(\(p)s(ost)f(IA)m(U)i(1976\).)42 b(Use)227 1431 y(of)31
+b(this)f(routine)g(is)f(appropriate)h(when)g(e\016ciency)h(is)e(imp)s
+(ortan)m(t)h(and)g(where)h(man)m(y)g(star)g(p)s(ositions)227
+1544 y(are)38 b(all)d(to)j(b)s(e)e(transformed)h(for)f(one)h(ep)s(o)s
+(c)m(h)g(and)f(equino)m(x.)60 b(The)37 b(star-indep)s(enden)m(t)e
+(parameters)227 1657 y(can)c(b)s(e)f(obtained)f(b)m(y)i(calling)e(the)h
+(sla)p Ft(_)p FD(MAPP)-8 b(A)31 b(routine.)0 1844 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_AMPQK)g(\(RA,)g(DA,)h(AMPRMS,)f(RM,)h
+(DM\))0 2216 y FB(GIVEN)e FD(:)277 2362 y Fq(RA,D)n(A)439
+b FB(D)565 b FD(apparen)m(t)31 b([)15 b Fl(\013;)g(\016)20
+b FD(])31 b(\(radians\))277 2475 y Fq(AMPRMS)325 b FB(D\(21\))379
+b FD(star-indep)s(enden)m(t)29 b(mean-to-apparen)m(t)j(parameters:)537
+2588 y(\(1\))1006 b(time)30 b(in)m(terv)-5 b(al)30 b(for)g(prop)s(er)f
+(motion)h(\(Julian)e(y)m(ears\))499 2701 y(\(2-4\))969
+b(barycen)m(tric)30 b(p)s(osition)f(of)h(the)h(Earth)f(\(A)m(U\))499
+2814 y(\(5-7\))969 b(helio)s(cen)m(tric)29 b(direction)g(of)i(the)f
+(Earth)g(\(unit)g(v)m(ector\))537 2927 y(\(8\))1006 b(\(gra)m
+(vitational)52 b(radius)e(of)i(Sun\))p Fo(\002)p FD(2)p
+Fl(=)p FD(\(Sun-Earth)e(dis-)1658 3040 y(tance\))477
+3153 y(\(9-11\))946 b FB(v)p FD(:)41 b(barycen)m(tric)30
+b(Earth)g(v)m(elo)s(cit)m(y)h(in)e(units)g(of)i(c)514
+3299 y(\(12\))1658 3193 y Fi(q)p 1741 3193 302 4 v 106
+x FD(1)21 b Fo(\000)f(j)p FB(v)p Fo(j)2003 3257 y Fu(2)454
+3418 y FD(\(13-21\))924 b(precession-n)m(utation)30 b(3)21
+b Fo(\002)e FD(3)31 b(matrix)0 3809 y FB(RETURNED)46
+b FD(:)277 3980 y Fq(RM,DM)409 b FB(D)565 b FD(mean)31
+b([)15 b Fl(\013;)g(\016)20 b FD(])30 b(\(radians\))0
+4379 y FB(NOTES)44 b FD(:)311 4582 y(1.)i(Iterativ)m(e)41
+b(tec)m(hniques)f(are)g(used)g(for)f(the)i(ab)s(erration)e(and)g(ligh)m
+(t)g(de\015ection)h(corrections)g(so)427 4695 y(that)i(the)g(routines)f
+(sla)p Ft(_)p FD(AMP)g(\(or)h(sla)p Ft(_)p FD(AMPQK\))f(and)g(sla)p
+Ft(_)p FD(MAP)g(\(or)h(sla)p Ft(_)p FD(MAPQK\))f(are)427
+4808 y(accurate)d(in)m(v)m(erses;)i(ev)m(en)d(at)g(the)g(edge)g(of)g
+(the)f(Sun's)f(disc)h(the)g(discrepancy)g(is)f(only)h(ab)s(out)427
+4920 y(1)31 b(nanoarcsecond.)0 5319 y FB(REFERENCES)44
+b FD(:)311 5522 y(1.)i(1984)32 b Fq(Astr)-5 b(onomic)g(al)36
+b(A)n(lmanac)p FD(,)31 b(pp)e(B39-B41.)311 5675 y(2.)46
+b(Lederle)30 b(&)g(Sc)m(h)m(w)m(an,)h(1984.)h Fq(Astr.Astr)-5
+b(ophys.)33 b FB(134)p FD(,)e(1-6.)p eop
+%%Page: 12 14
+12 13 bop 0 52 a FD(12)p 0 267 3780 8 v 0 380 a Fx(SLA)p
+Fn(_)p Fx(A)l(OP)709 b Fm(Apparen)m(t)38 b(to)g(Observ)m(ed)710
+b Fx(SLA)p Fn(_)p Fx(A)l(OP)0 730 y FB(A)m(CTION)44 b
+FD(:)c(Apparen)m(t)31 b(to)g(observ)m(ed)f(place,)h(for)f(sources)g
+(distan)m(t)h(from)e(the)i(solar)f(system.)0 918 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_AOP)g(\(RAP,)h(DAP,)f(DATE,)h(DUT,)f
+(ELONGM,)g(PHIM,)g(HM,)h(XP,)g(YP,)1096 1031 y(TDK,)g(PMB,)f(RH,)h(WL,)
+g(TLR,)g(AOB,)f(ZOB,)h(HOB,)g(DOB,)f(ROB\))0 1361 y FB(GIVEN)f
+FD(:)277 1507 y Fq(RAP,D)n(AP)315 b FB(D)565 b FD(geo)s(cen)m(tric)32
+b(apparen)m(t)e([)15 b Fl(\013;)g(\016)21 b FD(])30 b(\(radians\))277
+1620 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(UTC)140 b(date/time)i(\(Mo)
+s(di\014ed)e(Julian)e(Date,)1658 1733 y(JD)p Fo(\000)p
+FD(2400000.5\))277 1846 y Fq(DUT)534 b FB(D)565 b FD(\001UT:)30
+b(UT1)p Fo(\000)p FD(UTC)g(\(UTC)g(seconds\))277 1959
+y Fq(ELONGM)327 b FB(D)565 b FD(observ)m(er's)31 b(mean)f(longitude)f
+(\(radians,)h(east)h(+v)m(e\))277 2072 y Fq(PHIM)489
+b FB(D)565 b FD(observ)m(er's)31 b(mean)f(geo)s(detic)h(latitude)f
+(\(radians\))277 2185 y Fq(HM)586 b FB(D)565 b FD(observ)m(er's)31
+b(heigh)m(t)f(ab)s(o)m(v)m(e)i(sea)f(lev)m(el)f(\(metres\))277
+2297 y Fq(XP,YP)448 b FB(D)565 b FD(p)s(olar)29 b(motion)h([)15
+b Fl(x;)g(y)k FD(])31 b(co)s(ordinates)f(\(radians\))277
+2410 y Fq(TDK)532 b FB(D)565 b FD(lo)s(cal)30 b(am)m(bien)m(t)g(temp)s
+(erature)g(\(K;)h(std=273.15D0\))277 2523 y Fq(PMB)528
+b FB(D)565 b FD(lo)s(cal)30 b(atmospheric)g(pressure)f(\(m)m(b;)h
+(std=1013.25D0\))277 2636 y Fq(RH)602 b FB(D)565 b FD(lo)s(cal)30
+b(relativ)m(e)g(h)m(umidit)m(y)f(\(in)g(the)i(range)f(0D0)17
+b({)e(1D0\))277 2749 y Fq(WL)588 b FB(D)565 b FD(e\013ectiv)m(e)32
+b(w)m(a)m(v)m(elength)g(\()p Fl(\026)p FD(m,)e Fq(e.g.)g
+FD(0.55D0\))277 2862 y Fq(TLR)548 b FB(D)565 b FD(trop)s(ospheric)84
+b(lapse)h(rate)h(\(K)f(p)s(er)f(metre,)100 b Fq(e.g.)1658
+2975 y FD(0.0065D0\))0 3294 y FB(RETURNED)46 b FD(:)277
+3440 y Fq(A)n(OB)536 b FB(D)565 b FD(observ)m(ed)31 b(azim)m(uth)f
+(\(radians:)39 b(N=0,)31 b(E=90)3236 3407 y Fp(\016)3276
+3440 y FD(\))277 3553 y Fq(ZOB)546 b FB(D)565 b FD(observ)m(ed)31
+b(zenith)e(distance)h(\(radians\))277 3666 y Fq(HOB)534
+b FB(D)565 b FD(observ)m(ed)31 b(Hour)f(Angle)g(\(radians\))277
+3779 y Fq(DOB)533 b FB(D)565 b FD(observ)m(ed)31 b Fl(\016)j
+FD(\(radians\))277 3892 y Fq(R)n(OB)538 b FB(D)565 b
+FD(observ)m(ed)31 b Fl(\013)f FD(\(radians\))0 4212 y
+FB(NOTES)44 b FD(:)311 4394 y(1.)i(This)28 b(routine)h(returns)f
+(zenith)h(distance)g(rather)h(than)f(elev)-5 b(ation)30
+b(in)e(order)h(to)i(re\015ect)f(the)g(fact)427 4507 y(that)h(no)g(allo)
+m(w)m(ance)g(is)e(made)h(for)h(depression)d(of)j(the)f(horizon.)311
+4648 y(2.)46 b(The)30 b(accuracy)i(of)f(the)g(result)e(is)h(limited)e
+(b)m(y)j(the)g(corrections)g(for)f(refraction.)41 b(Pro)m(viding)29
+b(the)427 4761 y(meteorological)j(parameters)f(are)g(kno)m(wn)f
+(accurately)h(and)f(there)h(are)g(no)f(gross)h(lo)s(cal)f(e\013ects,)
+427 4874 y(the)f(predicted)e(azim)m(uth)h(and)g(elev)-5
+b(ation)28 b(should)e(b)s(e)i(within)e(ab)s(out)i(0)2869
+4837 y Fk(0)l(0)2873 4874 y Fl(:)p FD(1)h(for)f Fl(\020)k(<)25
+b FD(70)3367 4841 y Fp(\016)3407 4874 y FD(.)40 b(Ev)m(en)29
+b(at)427 4987 y(a)i(top)s(o)s(cen)m(tric)f(zenith)g(distance)g(of)g(90)
+1800 4954 y Fp(\016)1840 4987 y FD(,)h(the)f(accuracy)i(in)c(elev)-5
+b(ation)31 b(should)d(b)s(e)h(b)s(etter)i(than)427 5100
+y(1)21 b(arcmin)m(ute;)j(useful)19 b(results)g(are)i(a)m(v)-5
+b(ailable)20 b(for)g(a)h(further)f(3)2512 5067 y Fp(\016)2551
+5100 y FD(,)j(b)s(ey)m(ond)d(whic)m(h)f(the)i(sla)p Ft(_)p
+FD(REFR)m(O)427 5213 y(routine)26 b(returns)f(a)i(\014xed)f(v)-5
+b(alue)27 b(of)f(the)h(refraction.)39 b(The)27 b(complemen)m(tary)f
+(routines)g(sla)p Ft(_)p FD(A)m(OP)427 5326 y(\(or)39
+b(sla)p Ft(_)p FD(A)m(OPQK\))f(and)g(sla)p Ft(_)p FD(O)m(AP)g(\(or)h
+(sla)p Ft(_)p FD(O)m(APQK\))f(are)h(self-consisten)m(t)g(to)g(b)s
+(etter)g(than)427 5439 y(1)31 b(microarcsecond)f(all)g(o)m(v)m(er)h
+(the)g(celestial)f(sphere.)311 5580 y(3.)46 b(It)c(is)e(advisable)h(to)
+h(tak)m(e)h(great)g(care)f(with)e(units,)j(as)f(ev)m(en)g(unlik)m(ely)d
+(v)-5 b(alues)41 b(of)h(the)f(input)427 5693 y(parameters)31
+b(are)g(accepted)g(and)f(pro)s(cessed)g(in)f(accordance)j(with)d(the)i
+(mo)s(dels)e(used.)p eop
+%%Page: 13 15
+13 14 bop 0 52 a Fw(SUN/67.70)3252 b FD(13)311 351 y(4.)46
+b Fq(App)-5 b(ar)g(ent)35 b FD([)15 b Fl(\013;)g(\016)20
+b FD(])25 b(means)e(the)i(geo)s(cen)m(tric)g(apparen)m(t)f(righ)m(t)g
+(ascension)f(and)h(declination,)g(whic)m(h)427 464 y(is)31
+b(obtained)g(from)g(a)h(catalogue)h(mean)f(place)g(b)m(y)f(allo)m(wing)
+g(for)g(space)h(motion,)g(parallax,)f(the)427 577 y(Sun's)i(gra)m
+(vitational)h(lens)e(e\013ect,)37 b(ann)m(ual)32 b(ab)s(erration,)i
+(and)g(precession-n)m(utation.)50 b(F)-8 b(or)34 b(star)427
+690 y(p)s(ositions)44 b(in)g(the)h(FK5)h(system)f(\()p
+Fq(i.e.)g FD(J2000\),)51 b(these)46 b(e\013ects)h(can)f(b)s(e)e
+(applied)f(b)m(y)j(means)427 803 y(of)38 b(the)g(sla)p
+Ft(_)p FD(MAP)f Fq(etc.)g FD(routines.)61 b(Starting)37
+b(from)g(other)h(mean)f(place)h(systems,)i(additional)427
+916 y(transformations)22 b(will)e(b)s(e)i(needed;)j(for)d(example,)i
+(FK4)f(\()p Fq(i.e.)g FD(B1950\))i(mean)d(places)h(w)m(ould)e(\014rst)
+427 1029 y(ha)m(v)m(e)32 b(to)f(b)s(e)f(con)m(v)m(erted)i(to)f(FK5,)g
+(whic)m(h)e(can)i(b)s(e)e(done)h(with)g(the)g(sla)p Ft(_)p
+FD(FK425)h Fq(etc.)f FD(routines.)311 1163 y(5.)46 b
+Fq(Observe)-5 b(d)49 b FD([)15 b Fl(Az)t(;)g(E)5 b(l)42
+b FD(])d(means)g(the)g(p)s(osition)d(that)k(w)m(ould)d(b)s(e)i(seen)f
+(b)m(y)h(a)g(p)s(erfect)g(theo)s(dolite)427 1276 y(lo)s(cated)33
+b(at)h(the)f(observ)m(er.)49 b(This)31 b(is)h(obtained)g(from)g(the)h
+(geo)s(cen)m(tric)h(apparen)m(t)f([)15 b Fl(\013;)g(\016)21
+b FD(])33 b(b)m(y)g(al-)427 1389 y(lo)m(wing)25 b(for)g(Earth)h(orien)m
+(tation)g(and)f(diurnal)d(ab)s(erration,)k(rotating)g(from)g(equator)g
+(to)g(horizon)427 1501 y(co)s(ordinates,)f(and)d(then)h(adjusting)f
+(for)h(refraction.)38 b(The)23 b([)15 b Fl(h;)g(\016)20
+b FD(])j(is)g(obtained)f(b)m(y)h(rotating)h(bac)m(k)427
+1614 y(in)m(to)38 b(equatorial)f(co)s(ordinates,)i(using)d(the)h(geo)s
+(detic)h(latitude)f(corrected)h(for)f(p)s(olar)f(motion,)427
+1727 y(and)27 b(is)f(the)i(p)s(osition)d(that)j(w)m(ould)e(b)s(e)g
+(seen)i(b)m(y)f(a)g(p)s(erfect)g(equatorial)g(lo)s(cated)h(at)g(the)f
+(observ)m(er)427 1840 y(and)c(with)f(its)h(p)s(olar)f(axis)h(aligned)f
+(to)i(the)g(Earth's)f(axis)g(of)h(rotation)f(\()p Fq(n.b.)h
+FD(not)f(to)h(the)g(refracted)427 1953 y(p)s(ole\).)40
+b(Finally)-8 b(,)29 b(the)i Fl(\013)g FD(is)e(obtained)h(b)m(y)g
+(subtracting)g(the)g Fq(h)38 b FD(from)30 b(the)h(lo)s(cal)e(apparen)m
+(t)i(ST.)311 2087 y(6.)46 b(T)-8 b(o)37 b(predict)e(the)h(required)e
+(setting)i(of)g(a)g(real)g(telescop)s(e,)i(the)e(observ)m(ed)g(place)g
+(pro)s(duced)f(b)m(y)427 2200 y(this)28 b(routine)f(w)m(ould)g(ha)m(v)m
+(e)j(to)f(b)s(e)e(adjusted)h(for)g(the)h(tilt)e(of)i(the)f(azim)m(uth)g
+(or)h(p)s(olar)e(axis)h(of)g(the)427 2313 y(moun)m(ting)e(\(with)f
+(appropriate)g(corrections)i(for)f(moun)m(t)g(\015exures\),)h(for)f
+(non-p)s(erp)s(endicularit)m(y)427 2426 y(b)s(et)m(w)m(een)j(the)g
+(moun)m(ting)e(axes,)j(for)e(the)g(p)s(osition)e(of)j(the)f(rotator)i
+(axis)d(and)h(the)h(p)s(oin)m(ting)d(axis)427 2539 y(relativ)m(e)38
+b(to)g(it,)g(for)f(tub)s(e)g(\015exure,)h(for)f(gear)i(and)d(enco)s
+(der)h(errors,)i(and)e(\014nally)e(for)i(enco)s(der)427
+2652 y(zero)c(p)s(oin)m(ts.)45 b(Some)32 b(telescop)s(es)g(w)m(ould,)g
+(of)g(course,)h(exhibit)d(other)i(prop)s(erties)f(whic)m(h)g(w)m(ould)
+427 2765 y(need)f(to)i(b)s(e)d(accoun)m(ted)j(for)e(at)h(the)g
+(appropriate)e(p)s(oin)m(t)h(in)f(the)h(sequence.)311
+2899 y(7.)46 b(This)36 b(routine)g(tak)m(es)i(time)f(to)h(execute,)i
+(due)d(mainly)e(to)j(the)f(rigorous)f(in)m(tegration)h(used)g(to)427
+3012 y(ev)-5 b(aluate)33 b(the)f(refraction.)44 b(F)-8
+b(or)33 b(pro)s(cessing)d(m)m(ultiple)f(stars)j(for)g(one)g(lo)s
+(cation)f(and)g(time,)h(call)427 3124 y(sla)p Ft(_)p
+FD(A)m(OPP)-8 b(A)41 b(once)h(follo)m(w)m(ed)f(b)m(y)g(one)g(call)g(p)s
+(er)f(star)h(to)h(sla)p Ft(_)p FD(A)m(OPQK.)e(Where)h(a)h(range)f(of)
+427 3237 y(times)31 b(within)d(a)j(limited)e(p)s(erio)s(d)f(of)j(a)h
+(few)e(hours)g(is)g(in)m(v)m(olv)m(ed,)h(and)f(the)h(highest)f
+(precision)f(is)427 3350 y(not)g(required,)e(call)g(sla)p
+Ft(_)p FD(A)m(OPP)-8 b(A)28 b(once,)i(follo)m(w)m(ed)e(b)m(y)g(a)g
+(call)g(to)h(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)g(T)28 b(eac)m(h)h(time)f
+(the)427 3463 y(time)i(c)m(hanges,)i(follo)m(w)m(ed)e(b)m(y)g(one)h
+(call)f(p)s(er)f(star)h(to)i(sla)p Ft(_)p FD(A)m(OPQK.)311
+3597 y(8.)46 b(The)26 b(D)m(A)-8 b(TE)27 b(argumen)m(t)g(is)e(UTC)h
+(expressed)g(as)g(an)g(MJD.)h(This)e(is,)h(strictly)f(sp)s(eaking,)i
+(wrong,)427 3710 y(b)s(ecause)33 b(of)g(leap)g(seconds.)48
+b(Ho)m(w)m(ev)m(er,)35 b(as)e(long)g(as)g(the)g(\001UT)f(and)h(the)g
+(UTC)f(are)h(consisten)m(t)427 3823 y(there)j(are)h(no)f
+(di\016culties,)f(except)i(during)d(a)i(leap)g(second.)57
+b(In)36 b(this)f(case,)j(the)f(start)f(of)g(the)427 3936
+y(61st)i(second)f(of)g(the)g(\014nal)f(min)m(ute)g(should)f(b)s(egin)g
+(a)j(new)e(MJD)h(da)m(y)h(and)e(the)h(old)f(pre-leap)427
+4049 y(\001UT)i(should)e(con)m(tin)m(ue)i(to)h(b)s(e)e(used.)63
+b(As)38 b(the)g(61st)h(second)f(completes,)j(the)d(MJD)g(should)427
+4162 y(rev)m(ert)31 b(to)h(the)e(start)h(of)g(the)f(da)m(y)h(as,)g(sim)
+m(ultaneously)-8 b(,)29 b(the)h(\001UT)g(c)m(hanges)h(b)m(y)g(one)f
+(second)h(to)427 4275 y(its)f(p)s(ost-leap)g(new)g(v)-5
+b(alue.)311 4409 y(9.)46 b(The)27 b(\001UT)h(\(UT1)p
+Fo(\000)p FD(UTC\))g(is)e(tabulated)i(in)e(IERS)h(circulars)f(and)h
+(elsewhere.)39 b(It)28 b(increases)g(b)m(y)427 4522 y(exactly)k(one)f
+(second)f(at)i(the)f(end)f(of)h(eac)m(h)g(UTC)f(leap)h(second,)g(in)m
+(tro)s(duced)e(in)g(order)h(to)i(k)m(eep)427 4635 y(\001UT)e(within)e
+Fo(\006)p FD(0)1066 4602 y Fu(s)1071 4635 y Fl(:)p FD(9.)266
+4769 y(10.)46 b(IMPOR)-8 b(T)g(ANT)39 b({)g(T)-8 b(AKE)38
+b(CARE)g(WITH)h(THE)f(LONGITUDE)h(SIGN)f(CONVENTION.)427
+4882 y(The)33 b(longitude)f(required)g(b)m(y)h(the)g(presen)m(t)h
+(routine)e(is)h FB(east-p)s(ositiv)m(e)p FD(,)h(in)e(accordance)j(with)
+427 4994 y(geographical)f(con)m(v)m(en)m(tion)g(\(and)f(righ)m
+(t-handed\).)49 b(In)32 b(particular,)h(note)h(that)g(the)f(longitudes)
+427 5107 y(returned)d(b)m(y)i(the)f(sla)p Ft(_)p FD(OBS)f(routine)h
+(are)h(w)m(est-p)s(ositiv)m(e)f(\(as)h(in)e(the)i Fq(Astr)-5
+b(onomic)g(al)36 b(A)n(lmanac)427 5220 y FD(b)s(efore)30
+b(1984\))j(and)c(m)m(ust)i(b)s(e)e(rev)m(ersed)i(in)e(sign)g(b)s(efore)
+h(use)h(in)e(the)h(presen)m(t)h(routine.)266 5354 y(11.)46
+b(The)37 b(p)s(olar)f(co)s(ordinates)h(XP)-8 b(,YP)38
+b(can)f(b)s(e)g(obtained)f(from)h(IERS)f(circulars)f(and)i(equiv)-5
+b(alen)m(t)427 5467 y(publications.)36 b(The)24 b(maxim)m(um)f
+(amplitude)g(is)g(ab)s(out)h(0)2373 5430 y Fk(0)m(0)2377
+5467 y Fl(:)p FD(3.)40 b(If)24 b(XP)-8 b(,YP)25 b(v)-5
+b(alues)24 b(are)h(una)m(v)-5 b(ailable,)427 5580 y(use)31
+b(XP=YP=0D0.)43 b(See)32 b(page)g(B60)g(of)f(the)g(1988)i
+Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)h FD(for)30
+b(a)i(de\014nition)427 5693 y(of)f(the)f(t)m(w)m(o)i(angles.)p
+eop
+%%Page: 14 16
+14 15 bop 0 52 a FD(14)266 351 y(12.)46 b(The)35 b(heigh)m(t)g(ab)s(o)m
+(v)m(e)h(sea)f(lev)m(el)g(of)g(the)g(observing)f(station,)i(HM,)g(can)f
+(b)s(e)g(obtained)f(from)g(the)427 464 y Fq(Astr)-5 b(onomic)g(al)33
+b(A)n(lmanac)f FD(\(Section)c(J)e(in)g(the)i(1988)g(edition\),)f(or)h
+(via)e(the)i(routine)e(sla)p Ft(_)p FD(OBS.)g(If)427
+577 y(P)-8 b(,)27 b(the)f(pressure)e(in)h(millibars,)e(is)i(a)m(v)-5
+b(ailable,)26 b(an)g(adequate)h(estimate)f(of)g(HM)h(can)f(b)s(e)f
+(obtained)427 690 y(from)30 b(the)h(follo)m(wing)e(expression:)597
+873 y Ft(HM=-29.3D0*TSL*LOG\(P/1013)o(.25D)o(0\))427
+1055 y FD(where)22 b(TSL)f(is)h(the)g(appro)m(ximate)h(sea-lev)m(el)g
+(air)e(temp)s(erature)h(in)f(K)h(\(see)i Fq(Astr)-5 b(ophysic)g(al)28
+b(Quan-)427 1168 y(tities)p FD(,)k(C.W.Allen,)g(3rd)f(edition,)f
+Fo(x)p FD(52\).)46 b(Similarly)-8 b(,)29 b(if)h(the)i(pressure)e(P)h
+(is)g(not)h(kno)m(wn,)f(it)g(can)427 1281 y(b)s(e)f(estimated)h(from)f
+(the)g(heigh)m(t)g(of)h(the)f(observing)g(station,)h(HM)f(as)h(follo)m
+(ws:)597 1464 y Ft(P=1013.25D0*EXP\(-HM/\(29.3)o(D0*T)o(SL\)\))427
+1647 y FD(Note,)g(ho)m(w)m(ev)m(er,)g(that)f(the)f(refraction)g(is)g
+(nearly)f(prop)s(ortional)f(to)j(the)f(pressure)f(and)h(that)h(an)427
+1759 y(accurate)i(P)e(v)-5 b(alue)30 b(is)g(imp)s(ortan)m(t)f(for)h
+(precise)g(w)m(ork.)266 1942 y(13.)46 b(The)31 b(azim)m(uths)g
+Fq(etc.)g FD(used)g(b)m(y)g(the)h(presen)m(t)f(routine)g(are)h(with)e
+(resp)s(ect)h(to)h(the)g(celestial)f(p)s(ole.)427 2055
+y(Corrections)f(to)h(the)g(terrestrial)e(p)s(ole)h(can)g(b)s(e)g
+(computed)g(using)f(sla)p Ft(_)p FD(POLMO.)p 0 2261 3780
+8 v 0 2374 a Fx(SLA)p Fn(_)p Fx(A)l(OPP)-11 b(A)464 b
+Fm(Appt-to-Obs)37 b(P)m(arameters)462 b Fx(SLA)p Fn(_)p
+Fx(A)l(OPP)-11 b(A)0 2724 y FB(A)m(CTION)44 b FD(:)60
+b(Pre-compute)40 b(the)h(set)f(of)g(apparen)m(t)h(to)g(observ)m(ed)f
+(place)g(parameters)g(required)e(b)m(y)i(the)227 2837
+y(\\quic)m(k")31 b(routines)e(sla)p Ft(_)p FD(A)m(OPQK)h(and)f(sla)p
+Ft(_)p FD(O)m(APQK.)0 3025 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_AOPPA)g(\(DATE,)g(DUT,)g(ELONGM,)g(PHIM,)h(HM,)f(XP,)h(YP,)1192
+3138 y(TDK,)f(PMB,)h(RH,)g(WL,)f(TLR,)h(AOPRMS\))0 3597
+y FB(GIVEN)e FD(:)277 3743 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(UTC)140 b(date/time)i(\(Mo)s(di\014ed)e(Julian)e(Date,)1658
+3856 y(JD)p Fo(\000)p FD(2400000.5\))277 3969 y Fq(DUT)534
+b FB(D)565 b FD(\001UT:)30 b(UT1)p Fo(\000)p FD(UTC)g(\(UTC)g
+(seconds\))277 4082 y Fq(ELONGM)327 b FB(D)565 b FD(observ)m(er's)31
+b(mean)f(longitude)f(\(radians,)h(east)h(+v)m(e\))277
+4195 y Fq(PHIM)489 b FB(D)565 b FD(observ)m(er's)31 b(mean)f(geo)s
+(detic)h(latitude)f(\(radians\))277 4308 y Fq(HM)586
+b FB(D)565 b FD(observ)m(er's)31 b(heigh)m(t)f(ab)s(o)m(v)m(e)i(sea)f
+(lev)m(el)f(\(metres\))277 4420 y Fq(XP,YP)448 b FB(D)565
+b FD(p)s(olar)29 b(motion)h([)15 b Fl(x;)g(y)k FD(])31
+b(co)s(ordinates)f(\(radians\))277 4533 y Fq(TDK)532
+b FB(D)565 b FD(lo)s(cal)30 b(am)m(bien)m(t)g(temp)s(erature)g(\(K;)h
+(std=273.15D0\))277 4646 y Fq(PMB)528 b FB(D)565 b FD(lo)s(cal)30
+b(atmospheric)g(pressure)f(\(m)m(b;)h(std=1013.25D0\))277
+4759 y Fq(RH)602 b FB(D)565 b FD(lo)s(cal)30 b(relativ)m(e)g(h)m
+(umidit)m(y)f(\(in)g(the)i(range)f(0D0)17 b({)e(1D0\))277
+4872 y Fq(WL)588 b FB(D)565 b FD(e\013ectiv)m(e)32 b(w)m(a)m(v)m
+(elength)g(\()p Fl(\026)p FD(m,)e Fq(e.g.)g FD(0.55D0\))277
+4985 y Fq(TLR)548 b FB(D)565 b FD(trop)s(ospheric)84
+b(lapse)h(rate)h(\(K)f(p)s(er)f(metre,)100 b Fq(e.g.)1658
+5098 y FD(0.0065D0\))0 5634 y FB(RETURNED)46 b FD(:)p
+eop
+%%Page: 15 17
+15 16 bop 0 52 a Fw(SUN/67.70)3252 b FD(15)277 339 y
+Fq(A)n(OPRMS)339 b FB(D\(14\))379 b FD(star-indep)s(enden)m(t)85
+b(apparen)m(t-to-observ)m(ed)j(parame-)1658 452 y(ters:)537
+565 y(\(1\))1006 b(geo)s(detic)31 b(latitude)f(\(radians\))502
+678 y(\(2,3\))971 b(sine)29 b(and)h(cosine)g(of)h(geo)s(detic)g
+(latitude)537 791 y(\(4\))1006 b(magnitude)30 b(of)g(diurnal)e(ab)s
+(erration)h(v)m(ector)537 904 y(\(5\))1006 b(heigh)m(t)30
+b(\(HM\))537 1016 y(\(6\))1006 b(am)m(bien)m(t)31 b(temp)s(erature)f
+(\(TDK\))537 1129 y(\(7\))1006 b(pressure)29 b(\(PMB\))537
+1242 y(\(8\))1006 b(relativ)m(e)31 b(h)m(umidit)m(y)d(\(RH\))537
+1355 y(\(9\))1006 b(w)m(a)m(v)m(elength)32 b(\(WL\))514
+1468 y(\(10\))984 b(lapse)30 b(rate)h(\(TLR\))456 1581
+y(\(11,12\))927 b(refraction)30 b(constan)m(ts)i(A)e(and)g(B)h
+(\(radians\))514 1694 y(\(13\))984 b(longitude)41 b(+)h(eqn)h(of)f
+(equino)m(xes)g(+)h(\\sidereal)e(\001UT")1658 1807 y(\(radians\))514
+1920 y(\(14\))984 b(lo)s(cal)30 b(apparen)m(t)g(sidereal)f(time)h
+(\(radians\))0 2311 y FB(NOTES)44 b FD(:)311 2513 y(1.)i(It)c(is)e
+(advisable)h(to)h(tak)m(e)h(great)g(care)f(with)e(units,)j(as)f(ev)m
+(en)g(unlik)m(ely)d(v)-5 b(alues)41 b(of)h(the)f(input)427
+2626 y(parameters)31 b(are)g(accepted)g(and)f(pro)s(cessed)g(in)f
+(accordance)j(with)d(the)i(mo)s(dels)e(used.)311 2780
+y(2.)46 b(The)26 b(D)m(A)-8 b(TE)27 b(argumen)m(t)g(is)e(UTC)h
+(expressed)g(as)g(an)g(MJD.)h(This)e(is,)h(strictly)f(sp)s(eaking,)i
+(wrong,)427 2893 y(b)s(ecause)33 b(of)g(leap)g(seconds.)48
+b(Ho)m(w)m(ev)m(er,)35 b(as)e(long)g(as)g(the)g(\001UT)f(and)h(the)g
+(UTC)f(are)h(consisten)m(t)427 3006 y(there)j(are)h(no)f
+(di\016culties,)f(except)i(during)d(a)i(leap)g(second.)57
+b(In)36 b(this)f(case,)j(the)f(start)f(of)g(the)427 3118
+y(61st)i(second)f(of)g(the)g(\014nal)f(min)m(ute)g(should)f(b)s(egin)g
+(a)j(new)e(MJD)h(da)m(y)h(and)e(the)h(old)f(pre-leap)427
+3231 y(\001UT)i(should)e(con)m(tin)m(ue)i(to)h(b)s(e)e(used.)63
+b(As)38 b(the)g(61st)h(second)f(completes,)j(the)d(MJD)g(should)427
+3344 y(rev)m(ert)31 b(to)h(the)e(start)h(of)g(the)f(da)m(y)h(as,)g(sim)
+m(ultaneously)-8 b(,)29 b(the)h(\001UT)g(c)m(hanges)h(b)m(y)g(one)f
+(second)h(to)427 3457 y(its)f(p)s(ost-leap)g(new)g(v)-5
+b(alue.)311 3611 y(3.)46 b(The)27 b(\001UT)h(\(UT1)p
+Fo(\000)p FD(UTC\))g(is)e(tabulated)i(in)e(IERS)h(circulars)f(and)h
+(elsewhere.)39 b(It)28 b(increases)g(b)m(y)427 3724 y(exactly)k(one)f
+(second)f(at)i(the)f(end)f(of)h(eac)m(h)g(UTC)f(leap)h(second,)g(in)m
+(tro)s(duced)e(in)g(order)h(to)i(k)m(eep)427 3837 y(\001UT)38
+b(within)d Fo(\006)p FD(0)1081 3804 y Fu(s)1086 3837
+y Fl(:)p FD(9.)64 b(The)37 b(\\sidereal)g(\001UT")h(whic)m(h)f(forms)g
+(part)h(of)g(A)m(OPRMS\(13\))h(is)e(the)427 3950 y(same)27
+b(quan)m(tit)m(y)-8 b(,)29 b(but)d(con)m(v)m(erted)i(from)f(solar)f(to)
+i(sidereal)d(seconds)i(and)f(expressed)g(in)g(radians.)311
+4103 y(4.)46 b(IMPOR)-8 b(T)g(ANT)39 b({)g(T)-8 b(AKE)38
+b(CARE)g(WITH)h(THE)f(LONGITUDE)h(SIGN)f(CONVENTION.)427
+4216 y(The)33 b(longitude)f(required)g(b)m(y)h(the)g(presen)m(t)h
+(routine)e(is)h FB(east-p)s(ositiv)m(e)p FD(,)h(in)e(accordance)j(with)
+427 4329 y(geographical)f(con)m(v)m(en)m(tion)g(\(and)f(righ)m
+(t-handed\).)49 b(In)32 b(particular,)h(note)h(that)g(the)f(longitudes)
+427 4442 y(returned)d(b)m(y)i(the)f(sla)p Ft(_)p FD(OBS)f(routine)h
+(are)h(w)m(est-p)s(ositiv)m(e)f(\(as)h(in)e(the)i Fq(Astr)-5
+b(onomic)g(al)36 b(A)n(lmanac)427 4555 y FD(b)s(efore)30
+b(1984\))j(and)c(m)m(ust)i(b)s(e)e(rev)m(ersed)i(in)e(sign)g(b)s(efore)
+h(use)h(in)e(the)h(presen)m(t)h(routine.)311 4708 y(5.)46
+b(The)37 b(p)s(olar)f(co)s(ordinates)h(XP)-8 b(,YP)38
+b(can)f(b)s(e)g(obtained)f(from)h(IERS)f(circulars)f(and)i(equiv)-5
+b(alen)m(t)427 4821 y(publications.)36 b(The)24 b(maxim)m(um)f
+(amplitude)g(is)g(ab)s(out)h(0)2373 4784 y Fk(0)m(0)2377
+4821 y Fl(:)p FD(3.)40 b(If)24 b(XP)-8 b(,YP)25 b(v)-5
+b(alues)24 b(are)h(una)m(v)-5 b(ailable,)427 4934 y(use)31
+b(XP=YP=0D0.)43 b(See)32 b(page)g(B60)g(of)f(the)g(1988)i
+Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)h FD(for)30
+b(a)i(de\014nition)427 5047 y(of)f(the)f(t)m(w)m(o)i(angles.)311
+5201 y(6.)46 b(The)35 b(heigh)m(t)g(ab)s(o)m(v)m(e)h(sea)f(lev)m(el)g
+(of)g(the)g(observing)f(station,)i(HM,)g(can)f(b)s(e)g(obtained)f(from)
+g(the)427 5314 y Fq(Astr)-5 b(onomic)g(al)33 b(A)n(lmanac)f
+FD(\(Section)c(J)e(in)g(the)i(1988)g(edition\),)f(or)h(via)e(the)i
+(routine)e(sla)p Ft(_)p FD(OBS.)g(If)427 5427 y(P)-8
+b(,)27 b(the)f(pressure)e(in)h(millibars,)e(is)i(a)m(v)-5
+b(ailable,)26 b(an)g(adequate)h(estimate)f(of)g(HM)h(can)f(b)s(e)f
+(obtained)427 5539 y(from)30 b(the)h(follo)m(wing)e(expression:)597
+5693 y Ft(HM=-29.3D0*TSL*LOG\(P/1013)o(.25D)o(0\))p eop
+%%Page: 16 18
+16 17 bop 0 52 a FD(16)427 351 y(where)22 b(TSL)f(is)h(the)g(appro)m
+(ximate)h(sea-lev)m(el)g(air)e(temp)s(erature)h(in)f(K)h(\(see)i
+Fq(Astr)-5 b(ophysic)g(al)28 b(Quan-)427 464 y(tities)p
+FD(,)k(C.W.Allen,)g(3rd)f(edition,)f Fo(x)p FD(52\).)46
+b(Similarly)-8 b(,)29 b(if)h(the)i(pressure)e(P)h(is)g(not)h(kno)m(wn,)
+f(it)g(can)427 577 y(b)s(e)f(estimated)h(from)f(the)g(heigh)m(t)g(of)h
+(the)f(observing)g(station,)h(HM)f(as)h(follo)m(ws:)597
+718 y Ft(P=1013.25D0*EXP\(-HM/\(29.3)o(D0*T)o(SL\)\))427
+859 y FD(Note,)g(ho)m(w)m(ev)m(er,)g(that)f(the)f(refraction)g(is)g
+(nearly)f(prop)s(ortional)f(to)j(the)f(pressure)f(and)h(that)h(an)427
+972 y(accurate)i(P)e(v)-5 b(alue)30 b(is)g(imp)s(ortan)m(t)f(for)h
+(precise)g(w)m(ork.)311 1114 y(7.)46 b(Rep)s(eated,)e
+(computationally-exp)s(ensiv)m(e,)e(calls)d(to)i(sla)p
+Ft(_)p FD(A)m(OPP)-8 b(A)41 b(for)f(times)g(that)h(are)g(v)m(ery)427
+1226 y(close)21 b(together)h(can)e(b)s(e)g(a)m(v)m(oided)g(b)m(y)h
+(calling)d(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)21 b(just)e(once)i(and)f
+(then)g(using)f(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)g(T)427
+1339 y(for)23 b(the)g(subsequen)m(t)f(times.)38 b(F)-8
+b(resh)23 b(calls)f(to)i(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)22
+b(will)f(b)s(e)h(needed)h(only)f(when)f(c)m(hanges)427
+1452 y(in)34 b(the)i(precession)e(ha)m(v)m(e)j(gro)m(wn)e(to)h
+(unacceptable)g(lev)m(els)f(or)g(when)f(an)m(ything)h(a\013ecting)h
+(the)427 1565 y(refraction)30 b(has)h(c)m(hanged.)p 0
+1683 3780 8 v 0 1796 a Fx(SLA)p Fn(_)p Fx(A)l(OPP)-11
+b(A)g(T)172 b Fm(Up)s(date)39 b(Appt-to-Obs)e(P)m(arameters)172
+b Fx(SLA)p Fn(_)p Fx(A)l(OPP)-11 b(A)g(T)0 2146 y FB(A)m(CTION)44
+b FD(:)k(Recompute)35 b(the)f(sidereal)f(time)h(in)f(the)h(apparen)m(t)
+h(to)g(observ)m(ed)f(place)g(star-indep)s(enden)m(t)227
+2259 y(parameter)d(blo)s(c)m(k.)0 2447 y FB(CALL)45 b
+FD(:)77 b Ft(CALL)46 b(sla_AOPPAT)f(\(DATE,)h(AOPRMS\))0
+2777 y FB(GIVEN)f FD(:)277 2923 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(UTC)140 b(date/time)i(\(Mo)s(di\014ed)e(Julian)e(Date,)
+1658 3036 y(JD)p Fo(\000)p FD(2400000.5\))277 3149 y
+Fq(A)n(OPRMS)339 b FB(D\(14\))379 b FD(star-indep)s(enden)m(t)85
+b(apparen)m(t-to-observ)m(ed)j(parame-)1658 3262 y(ters:)477
+3375 y(\(1-12\))946 b(not)31 b(required)514 3487 y(\(13\))984
+b(longitude)41 b(+)h(eqn)h(of)f(equino)m(xes)g(+)h(\\sidereal)e
+(\001UT")1658 3600 y(\(radians\))514 3713 y(\(14\))984
+b(not)31 b(required)0 4032 y FB(RETURNED)46 b FD(:)277
+4178 y Fq(A)n(OPRMS)339 b FB(D\(14\))379 b FD(star-indep)s(enden)m(t)85
+b(apparen)m(t-to-observ)m(ed)j(parame-)1658 4291 y(ters:)477
+4404 y(\(1-13\))946 b(not)31 b(c)m(hanged)514 4517 y(\(14\))984
+b(lo)s(cal)30 b(apparen)m(t)g(sidereal)f(time)h(\(radians\))0
+4837 y FB(NOTE)44 b FD(:)d(F)-8 b(or)31 b(more)g(information,)d(see)j
+(sla)p Ft(_)p FD(A)m(OPP)-8 b(A.)p 0 4955 V 0 5068 a
+Fx(SLA)p Fn(_)p Fx(A)l(OPQK)443 b Fm(Quic)m(k)38 b(Appt-to-Observ)m(ed)
+443 b Fx(SLA)p Fn(_)p Fx(A)l(OPQK)0 5418 y FB(A)m(CTION)44
+b FD(:)c(Quic)m(k)30 b(apparen)m(t)h(to)g(observ)m(ed)f(place)h(\(but)f
+(see)h(Note)g(8,)g(b)s(elo)m(w\).)0 5606 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_AOPQK)g(\(RAP,)g(DAP,)h(AOPRMS,)e(AOB,)i
+(ZOB,)g(HOB,)f(DOB,)h(ROB\))p eop
+%%Page: 17 19
+17 18 bop 0 52 a Fw(SUN/67.70)3252 b FD(17)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(RAP,D)n(AP)315 b FB(D)565 b FD(geo)s(cen)m(tric)32
+b(apparen)m(t)e([)15 b Fl(\013;)g(\016)21 b FD(])30 b(\(radians\))277
+610 y Fq(A)n(OPRMS)339 b FB(D\(14\))379 b FD(star-indep)s(enden)m(t)85
+b(apparen)m(t-to-observ)m(ed)j(parame-)1658 723 y(ters:)537
+836 y(\(1\))1006 b(geo)s(detic)31 b(latitude)f(\(radians\))502
+949 y(\(2,3\))971 b(sine)29 b(and)h(cosine)g(of)h(geo)s(detic)g
+(latitude)537 1062 y(\(4\))1006 b(magnitude)30 b(of)g(diurnal)e(ab)s
+(erration)h(v)m(ector)537 1175 y(\(5\))1006 b(heigh)m(t)30
+b(\(metres\))537 1288 y(\(6\))1006 b(am)m(bien)m(t)31
+b(temp)s(erature)f(\(K\))537 1401 y(\(7\))1006 b(pressure)29
+b(\(m)m(b\))537 1514 y(\(8\))1006 b(relativ)m(e)31 b(h)m(umidit)m(y)d
+(\(0)16 b({)g(1\))537 1626 y(\(9\))1006 b(w)m(a)m(v)m(elength)32
+b(\()p Fl(\026)p FD(m\))514 1739 y(\(10\))984 b(lapse)30
+b(rate)h(\(K)f(p)s(er)g(metre\))456 1852 y(\(11,12\))927
+b(refraction)30 b(constan)m(ts)i(A)e(and)g(B)h(\(radians\))514
+1965 y(\(13\))984 b(longitude)41 b(+)h(eqn)h(of)f(equino)m(xes)g(+)h
+(\\sidereal)e(\001UT")1658 2078 y(\(radians\))514 2191
+y(\(14\))984 b(lo)s(cal)30 b(apparen)m(t)g(sidereal)f(time)h
+(\(radians\))0 2497 y FB(RETURNED)46 b FD(:)277 2643
+y Fq(A)n(OB)536 b FB(D)565 b FD(observ)m(ed)31 b(azim)m(uth)f
+(\(radians:)39 b(N=0,)31 b(E=90)3236 2610 y Fp(\016)3276
+2643 y FD(\))277 2756 y Fq(ZOB)546 b FB(D)565 b FD(observ)m(ed)31
+b(zenith)e(distance)h(\(radians\))277 2869 y Fq(HOB)534
+b FB(D)565 b FD(observ)m(ed)31 b(Hour)f(Angle)g(\(radians\))277
+2982 y Fq(DOB)533 b FB(D)565 b FD(observ)m(ed)31 b(Declination)e
+(\(radians\))277 3095 y Fq(R)n(OB)538 b FB(D)565 b FD(observ)m(ed)31
+b(Righ)m(t)f(Ascension)g(\(radians\))0 3401 y FB(NOTES)44
+b FD(:)311 3581 y(1.)i(This)28 b(routine)h(returns)f(zenith)h(distance)
+g(rather)h(than)f(elev)-5 b(ation)30 b(in)e(order)h(to)i(re\015ect)f
+(the)g(fact)427 3694 y(that)h(no)g(allo)m(w)m(ance)g(is)e(made)h(for)h
+(depression)d(of)j(the)f(horizon.)311 3834 y(2.)46 b(The)30
+b(accuracy)i(of)f(the)g(result)e(is)h(limited)e(b)m(y)j(the)g
+(corrections)g(for)f(refraction.)41 b(Pro)m(viding)29
+b(the)427 3947 y(meteorological)j(parameters)f(are)g(kno)m(wn)f
+(accurately)h(and)f(there)h(are)g(no)f(gross)h(lo)s(cal)f(e\013ects,)
+427 4059 y(the)f(predicted)e(azim)m(uth)h(and)g(elev)-5
+b(ation)28 b(should)e(b)s(e)i(within)e(ab)s(out)i(0)2869
+4023 y Fk(0)l(0)2873 4059 y Fl(:)p FD(1)h(for)f Fl(\020)k(<)25
+b FD(70)3367 4026 y Fp(\016)3407 4059 y FD(.)40 b(Ev)m(en)29
+b(at)427 4172 y(a)i(top)s(o)s(cen)m(tric)f(zenith)g(distance)g(of)g(90)
+1800 4139 y Fp(\016)1840 4172 y FD(,)h(the)f(accuracy)i(in)c(elev)-5
+b(ation)31 b(should)d(b)s(e)h(b)s(etter)i(than)427 4285
+y(1)21 b(arcmin)m(ute;)j(useful)19 b(results)g(are)i(a)m(v)-5
+b(ailable)20 b(for)g(a)h(further)f(3)2512 4252 y Fp(\016)2551
+4285 y FD(,)j(b)s(ey)m(ond)d(whic)m(h)f(the)i(sla)p Ft(_)p
+FD(REFR)m(O)427 4398 y(routine)26 b(returns)f(a)i(\014xed)f(v)-5
+b(alue)27 b(of)f(the)h(refraction.)39 b(The)27 b(complemen)m(tary)f
+(routines)g(sla)p Ft(_)p FD(A)m(OP)427 4511 y(\(or)39
+b(sla)p Ft(_)p FD(A)m(OPQK\))f(and)g(sla)p Ft(_)p FD(O)m(AP)g(\(or)h
+(sla)p Ft(_)p FD(O)m(APQK\))f(are)h(self-consisten)m(t)g(to)g(b)s
+(etter)g(than)427 4624 y(1)31 b(microarcsecond)f(all)g(o)m(v)m(er)h
+(the)g(celestial)f(sphere.)311 4763 y(3.)46 b(It)c(is)e(advisable)h(to)
+h(tak)m(e)h(great)g(care)f(with)e(units,)j(as)f(ev)m(en)g(unlik)m(ely)d
+(v)-5 b(alues)41 b(of)h(the)f(input)427 4876 y(parameters)31
+b(are)g(accepted)g(and)f(pro)s(cessed)g(in)f(accordance)j(with)d(the)i
+(mo)s(dels)e(used.)311 5016 y(4.)46 b Fq(App)-5 b(ar)g(ent)35
+b FD([)15 b Fl(\013;)g(\016)20 b FD(])25 b(means)e(the)i(geo)s(cen)m
+(tric)g(apparen)m(t)f(righ)m(t)g(ascension)f(and)h(declination,)g(whic)
+m(h)427 5128 y(is)31 b(obtained)g(from)g(a)h(catalogue)h(mean)f(place)g
+(b)m(y)f(allo)m(wing)g(for)g(space)h(motion,)g(parallax,)f(the)427
+5241 y(Sun's)k(gra)m(vitational)h(lens)f(e\013ect,)40
+b(ann)m(ual)35 b(ab)s(erration)g(and)g(precession-n)m(utation.)57
+b(F)-8 b(or)37 b(star)427 5354 y(p)s(ositions)44 b(in)g(the)h(FK5)h
+(system)f(\()p Fq(i.e.)g FD(J2000\),)51 b(these)46 b(e\013ects)h(can)f
+(b)s(e)e(applied)f(b)m(y)j(means)427 5467 y(of)38 b(the)g(sla)p
+Ft(_)p FD(MAP)f Fq(etc.)g FD(routines.)61 b(Starting)37
+b(from)g(other)h(mean)f(place)h(systems,)i(additional)427
+5580 y(transformations)22 b(will)e(b)s(e)i(needed;)j(for)d(example,)i
+(FK4)f(\()p Fq(i.e.)g FD(B1950\))i(mean)d(places)h(w)m(ould)e(\014rst)
+427 5693 y(ha)m(v)m(e)32 b(to)f(b)s(e)f(con)m(v)m(erted)i(to)f(FK5,)g
+(whic)m(h)e(can)i(b)s(e)e(done)h(with)g(the)g(sla)p Ft(_)p
+FD(FK425)h Fq(etc.)f FD(routines.)p eop
+%%Page: 18 20
+18 19 bop 0 52 a FD(18)311 351 y(5.)46 b Fq(Observe)-5
+b(d)49 b FD([)15 b Fl(Az)t(;)g(E)5 b(l)42 b FD(])d(means)g(the)g(p)s
+(osition)d(that)k(w)m(ould)d(b)s(e)i(seen)f(b)m(y)h(a)g(p)s(erfect)g
+(theo)s(dolite)427 464 y(lo)s(cated)33 b(at)h(the)f(observ)m(er.)49
+b(This)31 b(is)h(obtained)g(from)g(the)h(geo)s(cen)m(tric)h(apparen)m
+(t)f([)15 b Fl(\013;)g(\016)21 b FD(])33 b(b)m(y)g(al-)427
+577 y(lo)m(wing)25 b(for)g(Earth)h(orien)m(tation)g(and)f(diurnal)d(ab)
+s(erration,)k(rotating)g(from)g(equator)g(to)g(horizon)427
+690 y(co)s(ordinates,)f(and)d(then)h(adjusting)f(for)h(refraction.)38
+b(The)23 b([)15 b Fl(h;)g(\016)20 b FD(])j(is)g(obtained)f(b)m(y)h
+(rotating)h(bac)m(k)427 803 y(in)m(to)38 b(equatorial)f(co)s
+(ordinates,)i(using)d(the)h(geo)s(detic)h(latitude)f(corrected)h(for)f
+(p)s(olar)f(motion,)427 916 y(and)27 b(is)f(the)i(p)s(osition)d(that)j
+(w)m(ould)e(b)s(e)g(seen)i(b)m(y)f(a)g(p)s(erfect)g(equatorial)g(lo)s
+(cated)h(at)g(the)f(observ)m(er)427 1029 y(and)c(with)f(its)h(p)s(olar)
+f(axis)h(aligned)f(to)i(the)g(Earth's)f(axis)g(of)h(rotation)f(\()p
+Fq(n.b.)h FD(not)f(to)h(the)g(refracted)427 1142 y(p)s(ole\).)40
+b(Finally)-8 b(,)29 b(the)i Fl(\013)g FD(is)e(obtained)h(b)m(y)g
+(subtracting)g(the)g Fq(h)38 b FD(from)30 b(the)h(lo)s(cal)e(apparen)m
+(t)i(ST.)311 1345 y(6.)46 b(T)-8 b(o)37 b(predict)e(the)h(required)e
+(setting)i(of)g(a)g(real)g(telescop)s(e,)i(the)e(observ)m(ed)g(place)g
+(pro)s(duced)f(b)m(y)427 1458 y(this)28 b(routine)f(w)m(ould)g(ha)m(v)m
+(e)j(to)f(b)s(e)e(adjusted)h(for)g(the)h(tilt)e(of)i(the)f(azim)m(uth)g
+(or)h(p)s(olar)e(axis)h(of)g(the)427 1571 y(moun)m(ting)e(\(with)f
+(appropriate)g(corrections)i(for)f(moun)m(t)g(\015exures\),)h(for)f
+(non-p)s(erp)s(endicularit)m(y)427 1684 y(b)s(et)m(w)m(een)j(the)g
+(moun)m(ting)e(axes,)j(for)e(the)g(p)s(osition)e(of)j(the)f(rotator)i
+(axis)d(and)h(the)h(p)s(oin)m(ting)d(axis)427 1797 y(relativ)m(e)38
+b(to)g(it,)g(for)f(tub)s(e)g(\015exure,)h(for)f(gear)i(and)d(enco)s
+(der)h(errors,)i(and)e(\014nally)e(for)i(enco)s(der)427
+1910 y(zero)c(p)s(oin)m(ts.)45 b(Some)32 b(telescop)s(es)g(w)m(ould,)g
+(of)g(course,)h(exhibit)d(other)i(prop)s(erties)f(whic)m(h)g(w)m(ould)
+427 2023 y(need)f(to)i(b)s(e)d(accoun)m(ted)j(for)e(at)h(the)g
+(appropriate)e(p)s(oin)m(t)h(in)f(the)h(sequence.)311
+2226 y(7.)46 b(The)40 b(star-indep)s(enden)m(t)f(apparen)m(t-to-observ)
+m(ed-place)k(parameters)e(in)e(A)m(OPRMS)i(ma)m(y)g(b)s(e)427
+2339 y(computed)31 b(b)m(y)f(means)g(of)h(the)g(sla)p
+Ft(_)p FD(A)m(OPP)-8 b(A)30 b(routine.)40 b(If)30 b(nothing)g(has)g(c)m
+(hanged)h(signi\014can)m(tly)427 2452 y(except)45 b(the)g(time,)i(the)d
+(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)g(T)45 b(routine)e(ma)m(y)h(b)s(e)g
+(used)f(to)i(p)s(erform)e(the)h(requisite)427 2565 y(partial)29
+b(recomputation)i(of)f(A)m(OPRMS.)311 2768 y(8.)46 b(A)m(t)32
+b(zenith)e(distances)h(b)s(ey)m(ond)f(ab)s(out)h(76)1890
+2735 y Fp(\016)1930 2768 y FD(,)g(the)g(need)g(for)f(sp)s(ecial)g(care)
+i(with)d(the)i(corrections)427 2881 y(for)j(refraction)f(causes)h(a)g
+(mark)m(ed)g(increase)f(in)f(execution)i(time.)50 b(Moreo)m(v)m(er,)37
+b(the)c(e\013ect)i(gets)427 2994 y(w)m(orse)k(with)d(increasing)h
+(zenith)g(distance.)64 b(Adroit)37 b(programming)g(in)g(the)h(calling)e
+(applica-)427 3107 y(tion)d(ma)m(y)h(allo)m(w)e(the)i(problem)d(to)j(b)
+s(e)e(reduced.)49 b(Prepare)33 b(an)g(alternativ)m(e)g(A)m(OPRMS)g
+(arra)m(y)-8 b(,)427 3220 y(computed)32 b(for)f(zero)h(air-pressure;)f
+(this)f(will)f(disable)h(the)i(refraction)f(corrections)h(and)f(cause)
+427 3333 y(rapid)25 b(execution.)40 b(Using)25 b(this)h(A)m(OPRMS)g
+(arra)m(y)-8 b(,)29 b(a)e(preliminary)c(call)j(to)h(the)g(presen)m(t)f
+(routine)427 3446 y(will,)e(dep)s(ending)f(on)j(the)g(application,)f
+(pro)s(duce)f(a)i(rough)f(p)s(osition)f(whic)m(h)g(ma)m(y)i(b)s(e)f
+(enough)h(to)427 3559 y(establish)g(whether)h(the)h(full,)e(slo)m(w)h
+(calculation)g(\(using)g(the)g(real)h(A)m(OPRMS)f(arra)m(y\))i(is)d(w)m
+(orth-)427 3672 y(while.)38 b(F)-8 b(or)28 b(example,)g(there)g(w)m
+(ould)f(b)s(e)g(no)g(need)g(for)h(the)g(full)d(calculation)i(if)f(the)i
+(preliminary)427 3785 y(call)i(had)f(already)h(established)f(that)i
+(the)f(source)g(w)m(as)h(w)m(ell)e(b)s(elo)m(w)h(the)g(elev)-5
+b(ation)30 b(limits)e(for)i(a)427 3898 y(particular)f(telescop)s(e.)311
+4101 y(9.)46 b(The)31 b(azim)m(uths)g Fq(etc.)g FD(used)g(b)m(y)g(the)h
+(presen)m(t)f(routine)g(are)h(with)e(resp)s(ect)h(to)h(the)g(celestial)
+f(p)s(ole.)427 4214 y(Corrections)f(to)h(the)g(terrestrial)e(p)s(ole)h
+(can)g(b)s(e)g(computed)g(using)f(sla)p Ft(_)p FD(POLMO.)p
+0 4461 3780 8 v 0 4574 a Fx(SLA)p Fn(_)p Fx(A)-11 b(TMDSP)377
+b Fm(A)m(tmospheric)35 b(Disp)s(ersion)380 b Fx(SLA)p
+Fn(_)p Fx(A)-11 b(TMDSP)0 4925 y FB(A)m(CTION)44 b FD(:)c(Apply)29
+b(atmospheric-disp)s(ersion)e(adjustmen)m(ts)j(to)h(refraction)f(co)s
+(e\016cien)m(ts.)0 5112 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_ATMDSP)f(\(TDK,)i(PMB,)f(RH,)h(WL1,)g(A1,)g(B1,)g(WL2,)f(A2,)h
+(B2\))0 5634 y FB(GIVEN)e FD(:)p eop
+%%Page: 19 21
+19 20 bop 0 52 a Fw(SUN/67.70)3252 b FD(19)277 339 y
+Fq(TDK)532 b FB(D)565 b FD(am)m(bien)m(t)31 b(temp)s(erature)f(at)h
+(the)g(observ)m(er)f(\(K\))277 452 y Fq(PMB)528 b FB(D)565
+b FD(pressure)29 b(at)i(the)g(observ)m(er)f(\(m)m(b\))277
+565 y Fq(RH)602 b FB(D)565 b FD(relativ)m(e)31 b(h)m(umidit)m(y)d(at)j
+(the)g(observ)m(er)f(\(range)h(0)16 b({)g(1\))277 678
+y Fq(WL1)542 b FB(D)565 b FD(base)31 b(w)m(a)m(v)m(elength)g(\()p
+Fl(\026)p FD(m\))277 791 y Fq(A1)622 b FB(D)565 b FD(refraction)32
+b(co)s(e\016cien)m(t)g(A)g(for)f(w)m(a)m(v)m(elength)i(WL1)g(\(radi-)
+1658 904 y(ans\))277 1016 y Fq(B1)626 b FB(D)565 b FD(refraction)32
+b(co)s(e\016cien)m(t)h(B)g(for)f(w)m(a)m(v)m(elength)i(WL1)f(\(radi-)
+1658 1129 y(ans\))277 1242 y Fq(WL2)542 b FB(D)565 b
+FD(w)m(a)m(v)m(elength)35 b(for)e(whic)m(h)f(adjusted)h(A,B)h(required)
+e(\()p Fl(\026)p FD(m\))0 1772 y FB(RETURNED)46 b FD(:)277
+1918 y Fq(A2)622 b FB(D)565 b FD(refraction)32 b(co)s(e\016cien)m(t)g
+(A)g(for)f(w)m(a)m(v)m(elength)i(WL2)g(\(radi-)1658 2031
+y(ans\))277 2144 y Fq(B2)626 b FB(D)565 b FD(refraction)32
+b(co)s(e\016cien)m(t)h(B)g(for)f(w)m(a)m(v)m(elength)i(WL2)f(\(radi-)
+1658 2257 y(ans\))0 2674 y FB(NOTES)44 b FD(:)311 2887
+y(1.)i(T)-8 b(o)37 b(use)f(this)g(routine,)h(\014rst)e(call)h(sla)p
+Ft(_)p FD(REF)m(CO)g(sp)s(ecifying)e(WL1)j(as)g(the)f(w)m(a)m(v)m
+(elength.)60 b(This)427 3000 y(yields)29 b(refraction)h(co)s(e\016cien)
+m(ts)h(A1,)h(B1,)f(correct)h(for)e(that)h(w)m(a)m(v)m(elength.)43
+b(Subsequen)m(tly)-8 b(,)29 b(calls)427 3113 y(to)i(sla)p
+Ft(_)p FD(A)-8 b(TMDSP)29 b(sp)s(ecifying)e(di\013eren)m(t)i(w)m(a)m(v)
+m(elengths)i(will)c(pro)s(duce)i(new,)g(sligh)m(tly)f(adjusted)427
+3226 y(refraction)i(co)s(e\016cien)m(ts)h(A2,)h(B2,)f(whic)m(h)e(apply)
+g(to)i(the)g(sp)s(eci\014ed)e(w)m(a)m(v)m(elength.)311
+3385 y(2.)46 b(Most)26 b(of)g(the)f(atmospheric)g(disp)s(ersion)d(happ)
+s(ens)h(b)s(et)m(w)m(een)j(0)p Fl(:)p FD(7)15 b Fl(\026)p
+FD(m)26 b(and)e(the)i(UV)f(atmospheric)427 3498 y(cuto\013,)34
+b(and)e(the)g(e\013ect)i(increases)e(strongly)g(to)m(w)m(ards)h(the)f
+(UV)h(end.)45 b(F)-8 b(or)34 b(this)d(reason)h(a)h(blue)427
+3611 y(reference)e(w)m(a)m(v)m(elength)h(is)d(recommended,)h(for)h
+(example)f(0)p Fl(:)p FD(4)15 b Fl(\026)p FD(m.)311 3770
+y(3.)46 b(The)30 b(accuracy)-8 b(,)32 b(for)e(this)g(set)h(of)f
+(conditions:)703 3974 y(heigh)m(t)g(ab)s(o)m(v)m(e)i(sea)f(lev)m(el)229
+b(2000)17 b(m)1257 4087 y(latitude)228 b(29)1884 4054
+y Fp(\016)1240 4200 y FD(pressure)g(793)17 b(m)m(b)1077
+4313 y(temp)s(erature)229 b(290)1929 4280 y Fp(\016)1985
+4313 y FD(K)1209 4426 y(h)m(umidit)m(y)e(0.5)32 b(\(50\045\))1180
+4539 y(lapse)e(rate)230 b(0)p Fl(:)p FD(0065)2044 4506
+y Fp(\016)2086 4539 y Fl(m)2166 4506 y Fp(\000)p Fu(1)744
+4652 y FD(reference)30 b(w)m(a)m(v)m(elength)231 b(0)p
+Fl(:)p FD(4)15 b Fl(\026)p FD(m)1031 4765 y(star)31 b(elev)-5
+b(ation)229 b(15)1884 4732 y Fp(\016)427 4970 y FD(is)30
+b(ab)s(out)g(2.5)16 b(mas)31 b(RMS)f(b)s(et)m(w)m(een)h(0.3)g(and)f(1)p
+Fl(:)p FD(0)15 b Fl(\026)p FD(m,)31 b(and)f(sta)m(ys)i(within)27
+b(4)16 b(mas)30 b(for)h(the)f(whole)427 5083 y(range)41
+b(longw)m(ard)e(of)h(0)p Fl(:)p FD(3)15 b Fl(\026)p FD(m)41
+b(\(compared)g(with)e(a)h(total)h(disp)s(ersion)c(from)j(0.3)h(to)g(20)
+15 b Fl(\026)p FD(m)40 b(of)427 5195 y(ab)s(out)c(11)778
+5159 y Fk(0)l(0)819 5195 y FD(\).)56 b(These)36 b(errors)f(are)h(t)m
+(ypical)f(for)g(ordinary)f(conditions;)j(in)e(extreme)h(conditions)427
+5308 y(v)-5 b(alues)30 b(a)h(few)f(times)g(this)f(size)h(ma)m(y)h(o)s
+(ccur.)311 5467 y(4.)46 b(If)d(either)g(w)m(a)m(v)m(elength)i(exceeds)f
+(100)15 b Fl(\026)p FD(m,)48 b(the)c(radio)e(case)j(is)d(assumed)h(and)
+g(the)h(returned)427 5580 y(refraction)e(co)s(e\016cien)m(ts)i(are)f
+(the)f(same)h(as)g(the)g(giv)m(en)f(ones.)77 b(Note)44
+b(that)f(radio)f(refraction)427 5693 y(co)s(e\016cien)m(ts)31
+b(cannot)g(b)s(e)f(turned)f(in)m(to)i(optical)f(v)-5
+b(alues)29 b(using)g(this)g(routine,)h(nor)g(vice)g(v)m(ersa.)p
+eop
+%%Page: 20 22
+20 21 bop 0 52 a FD(20)311 351 y(5.)46 b(The)29 b(algorithm)g(consists)
+g(of)h(calculation)f(of)h(the)g(refractivit)m(y)f(of)h(the)g(air)f(at)h
+(the)g(observ)m(er)g(for)427 464 y(the)f(t)m(w)m(o)g(w)m(a)m(v)m
+(elengths,)h(using)d(the)h(metho)s(ds)f(of)h(the)h(sla)p
+Ft(_)p FD(REFR)m(O)e(routine,)h(and)g(then)f(scaling)427
+577 y(of)22 b(the)g(t)m(w)m(o)h(refraction)e(co)s(e\016cien)m(ts)h
+(according)g(to)g(classical)f(refraction)g(theory)-8
+b(.)38 b(This)20 b(amoun)m(ts)427 690 y(to)35 b(scaling)f(the)g(A)h(co)
+s(e\016cien)m(t)g(in)e(prop)s(ortion)f(to)j(\()p Fl(\026)23
+b Fo(\000)g FD(1\))35 b(and)e(the)i(B)f(co)s(e\016cien)m(t)h(almost)g
+(in)427 803 y(the)i(same)g(ratio)f(\(see)i(R.M.Green,)h
+Fq(Spheric)-5 b(al)40 b(Astr)-5 b(onomy,)40 b FD(Cam)m(bridge)c(Univ)m
+(ersit)m(y)g(Press,)427 916 y(1985\).)p 0 1062 3780 8
+v 0 1175 a Fx(SLA)p Fn(_)p Fx(A)-15 b(V2M)286 b Fm(Rotation)36
+b(Matrix)h(from)g(Axial)g(V)-10 b(ector)287 b Fx(SLA)p
+Fn(_)p Fx(A)-15 b(V2M)0 1526 y FB(A)m(CTION)44 b FD(:)c(F)-8
+b(orm)31 b(the)g(rotation)g(matrix)e(corresp)s(onding)g(to)i(a)g(giv)m
+(en)f(axial)g(v)m(ector)i(\(single)d(precision\).)0 1713
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_AV2M)g(\(AXVEC,)g(RMAT\))0
+2076 y FB(GIVEN)f FD(:)277 2248 y Fq(AXVEC)405 b FB(R\(3\))433
+b FD(axial)30 b(v)m(ector)i(\(radians\))0 2632 y FB(RETURNED)46
+b FD(:)277 2803 y Fq(RMA)-7 b(T)462 b FB(R\(3,3\))352
+b FD(rotation)31 b(matrix)0 3187 y FB(NOTES)44 b FD(:)311
+3384 y(1.)i(A)38 b(rotation)f(matrix)g(describ)s(es)e(a)j(rotation)g
+(ab)s(out)f(some)g(arbitrary)f(axis,)j(called)d(the)i(Euler)427
+3497 y(axis.)58 b(The)35 b Fq(axial)40 b(ve)-5 b(ctor)36
+b FD(supplied)d(to)k(this)e(routine)g(has)h(the)h(same)f(direction)f
+(as)i(the)f(Euler)427 3610 y(axis,)30 b(and)g(its)g(magnitude)f(is)h
+(the)g(amoun)m(t)h(of)g(rotation)f(in)g(radians.)311
+3760 y(2.)46 b(If)30 b(AXVEC)h(is)e(n)m(ull,)g(the)h(unit)f(matrix)h
+(is)f(returned.)311 3911 y(3.)46 b(The)28 b(reference)g(frame)g
+(rotates)h(clo)s(c)m(kwise)e(as)i(seen)f(lo)s(oking)e(along)i(the)g
+(axial)f(v)m(ector)j(from)d(the)427 4024 y(origin.)p
+0 4165 V 0 4278 a Fx(SLA)p Fn(_)p Fx(BEAR)212 b Fm(Direction)37
+b(Bet)m(w)m(een)h(P)m(oin)m(ts)f(on)h(a)h(Sphere)213
+b Fx(SLA)p Fn(_)p Fx(BEAR)0 4628 y FB(A)m(CTION)44 b
+FD(:)j(Returns)33 b(the)i(b)s(earing)d(\(p)s(osition)g(angle\))j(of)f
+(one)g(p)s(oin)m(t)f(on)g(a)i(sphere)e(seen)h(from)f(another)227
+4741 y(\(single)d(precision\).)0 4929 y FB(CALL)45 b
+FD(:)77 b Ft(R)47 b(=)h(sla_BEAR)d(\(A1,)i(B1,)g(A2,)g(B2\))0
+5292 y FB(GIVEN)e FD(:)277 5438 y Fq(A1,B1)484 b FB(R)567
+b FD(spherical)29 b(co)s(ordinates)h(of)g(one)h(p)s(oin)m(t)277
+5551 y Fq(A2,B2)484 b FB(R)567 b FD(spherical)29 b(co)s(ordinates)h(of)
+g(the)h(other)g(p)s(oin)m(t)p eop
+%%Page: 21 23
+21 22 bop 0 52 a Fw(SUN/67.70)3252 b FD(21)0 351 y FB(RETURNED)46
+b FD(:)277 523 y Fq(sla)p Ft(_)p Fq(BEAR)322 b FB(R)567
+b FD(b)s(earing)29 b(from)h(\014rst)g(p)s(oin)m(t)f(to)i(second)0
+810 y FB(NOTES)44 b FD(:)311 987 y(1.)i(The)30 b(spherical)f(co)s
+(ordinates)h(are)h([)15 b Fl(\013;)g(\016)20 b FD(],)31
+b([)p Fl(\025;)15 b(\036)p FD(])31 b Fq(etc.)p FD(,)f(in)f(radians.)311
+1122 y(2.)46 b(The)33 b(result)f(is)h(the)h(b)s(earing)e(\(p)s(osition)
+f(angle\),)k(in)d(radians,)h(of)h(p)s(oin)m(t)e([A2,B2])k(as)d(seen)h
+(from)427 1235 y(p)s(oin)m(t)j([A1,B1].)65 b(It)38 b(is)f(in)g(the)h
+(range)g Fo(\006)p Fl(\031)s FD(.)63 b(The)37 b(sense)h(is)f(suc)m(h)h
+(that)g(if)f([A2,B2])j(is)d(a)h(small)427 1348 y(distance)f(due)f(east)
+i(of)g([A1,B1])h(the)e(result)f(is)g(ab)s(out)h(+)p Fl(\031)s(=)p
+FD(2.)61 b(Zero)37 b(is)f(returned)g(if)g(the)h(t)m(w)m(o)427
+1461 y(p)s(oin)m(ts)30 b(are)g(coinciden)m(t.)311 1596
+y(3.)46 b(If)32 b(either)g(B-co)s(ordinate)h(is)f(outside)f(the)i
+(range)g Fo(\006)p Fl(\031)s(=)p FD(2,)g(the)g(result)e(ma)m(y)i
+(corresp)s(ond)f(to)h(\\the)427 1709 y(long)d(w)m(a)m(y)i(round".)311
+1844 y(4.)46 b(The)f(routine)e(sla)p Ft(_)p FD(P)-8 b(A)e(V)45
+b(p)s(erforms)e(an)i(equiv)-5 b(alen)m(t)44 b(function)g(except)i(that)
+f(the)g(p)s(oin)m(ts)f(are)427 1957 y(sp)s(eci\014ed)29
+b(in)g(the)i(form)e(of)i(Cartesian)f(unit)f(v)m(ectors.)p
+0 2058 3780 8 v 0 2171 a Fx(SLA)p Fn(_)p Fx(CAF2R)331
+b Fm(Deg,Arcmin,Arcsec)35 b(to)j(Radians)332 b Fx(SLA)p
+Fn(_)p Fx(CAF2R)0 2521 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32
+b(degrees,)f(arcmin)m(utes,)f(arcseconds)h(to)g(radians)e(\(single)g
+(precision\).)0 2709 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_CAF2R)g(\(IDEG,)g(IAMIN,)g(ASEC,)g(RAD,)h(J\))0
+3015 y FB(GIVEN)e FD(:)277 3162 y Fq(IDEG)500 b FB(I)605
+b FD(degrees)277 3274 y Fq(IAMIN)448 b FB(I)605 b FD(arcmin)m(utes)277
+3387 y Fq(ASEC)490 b FB(R)567 b FD(arcseconds)0 3666
+y FB(RETURNED)46 b FD(:)277 3812 y Fq(RAD)533 b FB(R)567
+b FD(angle)31 b(in)e(radians)277 3925 y Fq(J)688 b FB(I)605
+b FD(status:)1825 4038 y(1)31 b(=)f(IDEG)g(outside)g(range)h(0)p
+Fo(\000)p FD(359)1825 4151 y(2)g(=)f(IAMIN)g(outside)g(range)h(0)p
+Fo(\000)p FD(59)1825 4264 y(3)g(=)f(ASEC)f(outside)h(range)g(0)p
+Fo(\000)p FD(59.999)p Fo(\001)15 b(\001)g(\001)0 4542
+y FB(NOTES)44 b FD(:)311 4719 y(1.)i(The)30 b(result)f(is)h(computed)g
+(ev)m(en)h(if)e(an)m(y)i(of)g(the)f(range)h(c)m(hec)m(ks)h(fail.)311
+4854 y(2.)46 b(The)30 b(sign)g(m)m(ust)g(b)s(e)g(dealt)g(with)f
+(outside)g(this)h(routine.)p 0 4955 V 0 5068 a Fx(SLA)p
+Fn(_)p Fx(CALDJ)525 b Fm(Calendar)37 b(Date)h(to)h(MJD)527
+b Fx(SLA)p Fn(_)p Fx(CALDJ)0 5418 y FB(A)m(CTION)44 b
+FD(:)c(Gregorian)31 b(Calendar)e(to)i(Mo)s(di\014ed)e(Julian)f(Date,)k
+(with)d(cen)m(tury)i(default.)0 5606 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_CALDJ)g(\(IY,)g(IM,)h(ID,)g(DJM,)g(J\))p
+eop
+%%Page: 22 24
+22 23 bop 0 52 a FD(22)0 351 y FB(GIVEN)45 b FD(:)277
+523 y Fq(IY,IM,ID)356 b FB(I)605 b FD(y)m(ear,)32 b(mon)m(th,)e(da)m(y)
+h(in)e(Gregorian)h(calendar)0 843 y FB(RETURNED)46 b
+FD(:)277 989 y Fq(DJM)537 b FB(D)565 b FD(mo)s(di\014ed)28
+b(Julian)g(Date)k(\(JD)p Fo(\000)p FD(2400000.5\))j(for)30
+b(0)3385 956 y Fu(h)277 1102 y Fq(J)688 b FB(I)605 b
+FD(status:)1825 1215 y(0)31 b(=)f(OK)1825 1328 y(1)h(=)f(bad)f(y)m(ear)
+j(\(MJD)f(not)f(computed\))1825 1441 y(2)h(=)f(bad)f(mon)m(th)i(\(MJD)g
+(not)f(computed\))1825 1554 y(3)h(=)f(bad)f(da)m(y)i(\(MJD)g
+(computed\))0 1866 y FB(NOTES)44 b FD(:)311 2047 y(1.)i(This)29
+b(routine)g(supp)s(orts)g(the)h Fq(c)-5 b(entury)33 b(default)40
+b FD(feature.)h(Acceptable)31 b(y)m(ears)h(are:)506 2187
+y Fo(\017)46 b FD(00-49,)33 b(in)m(terpreted)d(as)g(2000)17
+b({)f(2049,)506 2314 y Fo(\017)46 b FD(50-99,)33 b(in)m(terpreted)d(as)
+g(1950)17 b({)f(1999,)32 b(and)506 2440 y Fo(\017)46
+b FD(100)32 b(up)m(w)m(ards,)e(in)m(terpreted)f(literally)-8
+b(.)427 2581 y(F)g(or)31 b(1-100AD)i(use)e(the)f(routine)f(sla)p
+Ft(_)p FD(CLDJ)h(instead.)311 2721 y(2.)46 b(F)-8 b(or)31
+b(y)m(ear)h Fl(n)p FD(BC)e(use)g(IY)g(=)g Fo(\000)p FD(\()p
+Fl(n)20 b Fo(\000)g FD(1\).)311 2861 y(3.)46 b(When)d(an)g(in)m(v)-5
+b(alid)40 b(y)m(ear)k(or)f(mon)m(th)g(is)f(supplied)e(\(status)k(J)e(=)
+h(1)g(or)g(2\))h(the)f(MJD)g(is)g FB(not)427 2974 y FD(computed.)e
+(When)30 b(an)g(in)m(v)-5 b(alid)28 b(da)m(y)j(is)e(supplied)e
+(\(status)k(J)f(=)g(3\))i(the)e(MJD)h FB(is)g FD(computed.)p
+0 3094 3780 8 v 0 3206 a Fx(SLA)p Fn(_)p Fx(CAL)-11 b(YD)518
+b Fm(Calendar)37 b(to)h(Y)-10 b(ear,)37 b(Da)m(y)520
+b Fx(SLA)p Fn(_)p Fx(CAL)-11 b(YD)0 3557 y FB(A)m(CTION)44
+b FD(:)j(Gregorian)34 b(calendar)f(date)h(to)h(y)m(ear)f(and)f(da)m(y)h
+(in)f(y)m(ear,)i(in)e(a)h(Julian)d(calendar)i(aligned)g(to)227
+3670 y(the)e(20th/21st)h(cen)m(tury)f(Gregorian)f(calendar,)h(with)e
+(cen)m(tury)h(default.)0 3857 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_CALYD)g(\(IY,)g(IM,)h(ID,)g(NY,)g(ND,)g(J\))0
+4183 y FB(GIVEN)e FD(:)277 4329 y Fq(IY,IM,ID)356 b FB(I)605
+b FD(y)m(ear,)32 b(mon)m(th,)e(da)m(y)h(in)e(Gregorian)i(calendar:)40
+b(y)m(ear)31 b(ma)m(y)1658 4442 y(optionally)e(omit)h(the)h(cen)m(tury)
+0 4754 y FB(RETURNED)46 b FD(:)277 4900 y Fq(NY)600 b
+FB(I)605 b FD(y)m(ear)31 b(\(re-aligned)f(Julian)e(calendar\))277
+5013 y Fq(ND)599 b FB(I)605 b FD(da)m(y)31 b(in)e(y)m(ear)i(\(1)g(=)f
+(Jan)m(uary)g(1st\))277 5126 y Fq(J)688 b FB(I)605 b
+FD(status:)1825 5239 y(0)31 b(=)f(OK)1825 5352 y(1)h(=)f(bad)f(y)m(ear)
+j(\(b)s(efore)e Fo(\000)p FD(4711\))1825 5465 y(2)h(=)f(bad)f(mon)m(th)
+1825 5577 y(3)i(=)f(bad)f(da)m(y)p eop
+%%Page: 23 25
+23 24 bop 0 52 a Fw(SUN/67.70)3252 b FD(23)0 351 y FB(NOTES)44
+b FD(:)311 534 y(1.)i(This)29 b(routine)g(supp)s(orts)g(the)h
+Fq(c)-5 b(entury)33 b(default)40 b FD(feature.)h(Acceptable)31
+b(y)m(ears)h(are:)506 674 y Fo(\017)46 b FD(00-49,)33
+b(in)m(terpreted)d(as)g(2000)17 b({)f(2049,)506 801 y
+Fo(\017)46 b FD(50-99,)33 b(in)m(terpreted)d(as)g(1950)17
+b({)f(1999,)32 b(and)506 928 y Fo(\017)46 b FD(other)31
+b(y)m(ears)g(after)g Fo(\000)p FD(4712,)h(in)m(terpreted)e(literally)-8
+b(.)427 1069 y(Use)31 b(sla)p Ft(_)p FD(CL)-8 b(YD)30
+b(for)g(y)m(ears)h(b)s(efore)f(100AD.)311 1209 y(2.)46
+b(The)30 b(purp)s(ose)f(of)h(sla)p Ft(_)p FD(CALDJ)g(is)f(to)i(supp)s
+(ort)e(sla)p Ft(_)p FD(EAR)-8 b(TH,)30 b(sla)p Ft(_)p
+FD(MOON)g(and)f(sla)p Ft(_)p FD(ECOR.)311 1350 y(3.)46
+b(Bet)m(w)m(een)31 b(1900)f(Marc)m(h)f(1)g(and)e(2100)k(F)-8
+b(ebruary)28 b(28)h(it)f(returns)f(answ)m(ers)h(whic)m(h)f(are)i
+(consisten)m(t)427 1463 y(with)d(the)i(ordinary)e(Gregorian)h
+(calendar.)39 b(Outside)26 b(this)h(range)h(there)f(will)e(b)s(e)i(a)h
+(discrepancy)427 1576 y(whic)m(h)h(increases)h(b)m(y)h(one)f(da)m(y)h
+(for)f(ev)m(ery)h(non-leap)f(cen)m(tury)h(y)m(ear.)311
+1717 y(4.)46 b(When)26 b(an)g(in)m(v)-5 b(alid)23 b(y)m(ear)k(or)f(mon)
+m(th)g(is)f(supplied)e(\(status)k(J)e(=)h(1)g(or)g(J)g(=)f(2\))i(the)f
+(results)f(are)i FB(not)427 1830 y FD(computed.)55 b(When)35
+b(a)g(da)m(y)h(is)e(supplied)e(whic)m(h)i(is)g(outside)g(the)h(con)m(v)
+m(en)m(tional)h(range)g(\(status)427 1943 y(J)30 b(=)g(3\))h(the)g
+(results)e FB(are)h FD(computed.)p 0 2064 3780 8 v 0
+2177 a Fx(SLA)p Fn(_)p Fx(CC2S)664 b Fm(Cartesian)37
+b(to)h(Spherical)664 b Fx(SLA)p Fn(_)p Fx(CC2S)0 2528
+y FB(A)m(CTION)44 b FD(:)c(Cartesian)30 b(co)s(ordinates)g(to)i
+(spherical)c(co)s(ordinates)i(\(single)g(precision\).)0
+2715 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_CC2S)g(\(V,)h(A,)g(B\))0
+3043 y FB(GIVEN)e FD(:)277 3215 y Fq(V)668 b FB(R\(3\))433
+b FD([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(])30 b(v)m(ector)0
+3540 y FB(RETURNED)46 b FD(:)277 3711 y Fq(A,B)576 b
+FB(R)567 b FD(spherical)29 b(co)s(ordinates)h(in)f(radians)0
+4036 y FB(NOTES)44 b FD(:)311 4218 y(1.)i(The)d(spherical)f(co)s
+(ordinates)i(are)g(longitude)e(\(+v)m(e)i(an)m(ticlo)s(c)m(kwise)g(lo)s
+(oking)e(from)h(the)h(+v)m(e)427 4331 y(latitude)38 b(p)s(ole\))f(and)h
+(latitude.)64 b(The)37 b(Cartesian)h(co)s(ordinates)g(are)h(righ)m(t)f
+(handed,)h(with)e(the)427 4444 y Fq(x)p FD(-axis)31 b(at)g(zero)g
+(longitude)e(and)h(latitude,)f(and)h(the)h Fq(z)p FD(-axis)f(at)h(the)g
+(+v)m(e)f(latitude)g(p)s(ole.)311 4584 y(2.)46 b(If)30
+b(V)h(is)e(n)m(ull,)g(zero)i(A)f(and)g(B)h(are)g(returned.)311
+4725 y(3.)46 b(A)m(t)32 b(either)d(p)s(ole,)h(zero)h(A)g(is)e
+(returned.)p 0 4842 V 0 4955 a Fx(SLA)p Fn(_)p Fx(CC62S)363
+b Fm(Cartesian)37 b(6-V)-10 b(ector)37 b(to)h(Spherical)362
+b Fx(SLA)p Fn(_)p Fx(CC62S)0 5305 y FB(A)m(CTION)44 b
+FD(:)38 b(Con)m(v)m(ersion)25 b(of)g(p)s(osition)f(&)h(v)m(elo)s(cit)m
+(y)g(in)f(Cartesian)h(co)s(ordinates)g(to)h(spherical)e(co)s(ordinates)
+227 5418 y(\(single)30 b(precision\).)0 5606 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_CC62S)g(\(V,)h(A,)g(B,)g(R,)g(AD,)g(BD,)g
+(RD\))p eop
+%%Page: 24 26
+24 25 bop 0 52 a FD(24)0 351 y FB(GIVEN)45 b FD(:)277
+523 y Fq(V)668 b FB(R\(6\))433 b FD([)15 b Fl(x;)g(y)s(;)g(z)t(;)33
+b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(])0 821 y FB(RETURNED)46 b FD(:)277 967
+y Fq(A)668 b FB(R)567 b FD(longitude)29 b(\(radians\))h({)h(for)f
+(example)g Fl(\013)277 1080 y Fq(B)672 b FB(R)567 b FD(latitude)30
+b(\(radians\))f({)i(for)f(example)g Fl(\016)277 1193
+y Fq(R)670 b FB(R)567 b FD(radial)29 b(co)s(ordinate)277
+1306 y Fq(AD)599 b FB(R)567 b FD(longitude)29 b(deriv)-5
+b(ativ)m(e)30 b(\(radians)f(p)s(er)h(unit)f(time\))277
+1419 y Fq(BD)603 b FB(R)567 b FD(latitude)30 b(deriv)-5
+b(ativ)m(e)29 b(\(radians)h(p)s(er)f(unit)g(time\))277
+1532 y Fq(RD)601 b FB(R)567 b FD(radial)29 b(deriv)-5
+b(ativ)m(e)p 0 1653 3780 8 v 0 1766 a Fx(SLA)p Fn(_)p
+Fx(CD2TF)559 b Fm(Da)m(ys)38 b(to)g(Hour,Min,Sec)558
+b Fx(SLA)p Fn(_)p Fx(CD2TF)0 2116 y FB(A)m(CTION)44 b
+FD(:)c(Con)m(v)m(ert)32 b(an)e(in)m(terv)-5 b(al)29 b(in)h(da)m(ys)g
+(to)h(hours,)f(min)m(utes,)f(seconds)i(\(single)e(precision\).)0
+2304 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_CD2TF)g(\(NDP,)g(DAYS,)g
+(SIGN,)h(IHMSF\))0 2617 y FB(GIVEN)e FD(:)277 2763 y
+Fq(NDP)537 b FB(I)605 b FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e(places)h
+(of)h(seconds)277 2876 y Fq(D)n(A)-7 b(YS)489 b FB(R)567
+b FD(in)m(terv)-5 b(al)30 b(in)f(da)m(ys)0 3166 y FB(RETURNED)46
+b FD(:)277 3312 y Fq(SIGN)512 b FB(C)569 b FD(`+')31
+b(or)f(`)p Fo(\000)p FD(')277 3425 y Fq(IHMSF)441 b FB(I\(4\))471
+b FD(hours,)30 b(min)m(utes,)f(seconds,)i(fraction)0
+3714 y FB(NOTES)44 b FD(:)311 3893 y(1.)i(NDP)31 b(less)f(than)g(zero)h
+(is)e(in)m(terpreted)h(as)h(zero.)311 4030 y(2.)46 b(The)41
+b(largest)h(useful)e(v)-5 b(alue)42 b(for)f(NDP)h(is)f(determined)f(b)m
+(y)i(the)g(size)f(of)h(D)m(A)-8 b(YS,)43 b(the)f(format)427
+4143 y(of)34 b(REAL)g(\015oating-p)s(oin)m(t)f(n)m(um)m(b)s(ers)g(on)g
+(the)i(target)g(mac)m(hine,)g(and)e(the)h(risk)f(of)h(o)m(v)m(er\015o)m
+(wing)427 4256 y(IHMSF\(4\).)51 b(On)32 b(some)h(arc)m(hitectures,)i
+(for)e(D)m(A)-8 b(YS)34 b(up)e(to)i(1.0,)h(the)f(a)m(v)-5
+b(ailable)32 b(\015oating-p)s(oin)m(t)427 4369 y(precision)k(corresp)s
+(onds)g(roughly)g(to)i(NDP=3.)63 b(This)35 b(is)i(w)m(ell)f(b)s(elo)m
+(w)h(the)g(ultimate)g(limit)e(of)427 4482 y(NDP=9)c(set)g(b)m(y)f(the)h
+(capacit)m(y)h(of)e(a)h(t)m(ypical)f(32-bit)g(IHMSF\(4\).)311
+4619 y(3.)46 b(The)32 b(absolute)g(v)-5 b(alue)32 b(of)h(D)m(A)-8
+b(YS)34 b(ma)m(y)f(exceed)g(1.0.)48 b(In)32 b(cases)h(where)f(it)g(do)s
+(es)g(not,)i(it)e(is)f(up)h(to)427 4732 y(the)f(caller)g(to)g(test)h
+(for)f(and)f(handle)g(the)h(case)h(where)e(D)m(A)-8 b(YS)32
+b(is)e(v)m(ery)i(nearly)e(1.0)i(and)e(rounds)427 4844
+y(up)g(to)h(24)g(hours,)e(b)m(y)i(testing)f(for)g(IHMSF\(1\)=24)j(and)c
+(setting)i(IHMSF\(1-4\))h(to)f(zero.)p 0 4955 V 0 5068
+a Fx(SLA)p Fn(_)p Fx(CLDJ)769 b Fm(Calendar)37 b(to)h(MJD)771
+b Fx(SLA)p Fn(_)p Fx(CLDJ)0 5418 y FB(A)m(CTION)44 b
+FD(:)c(Gregorian)31 b(Calendar)e(to)i(Mo)s(di\014ed)e(Julian)f(Date.)0
+5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_CLDJ)g(\(IY,)h(IM,)f
+(ID,)h(DJM,)g(J\))p eop
+%%Page: 25 27
+25 26 bop 0 52 a Fw(SUN/67.70)3252 b FD(25)0 351 y FB(GIVEN)45
+b FD(:)277 523 y Fq(IY,IM,ID)356 b FB(I)605 b FD(y)m(ear,)32
+b(mon)m(th,)e(da)m(y)h(in)e(Gregorian)h(calendar)0 874
+y FB(RETURNED)46 b FD(:)277 1020 y Fq(DJM)537 b FB(D)565
+b FD(mo)s(di\014ed)28 b(Julian)g(Date)k(\(JD)p Fo(\000)p
+FD(2400000.5\))j(for)30 b(0)3385 987 y Fu(h)277 1133
+y Fq(J)688 b FB(I)605 b FD(status:)1825 1246 y(0)31 b(=)f(OK)1825
+1359 y(1)h(=)f(bad)f(y)m(ear)1825 1471 y(2)i(=)f(bad)f(mon)m(th)1825
+1584 y(3)i(=)f(bad)f(da)m(y)0 1927 y FB(NOTES)44 b FD(:)311
+2113 y(1.)i(When)d(an)g(in)m(v)-5 b(alid)40 b(y)m(ear)k(or)f(mon)m(th)g
+(is)f(supplied)e(\(status)k(J)e(=)h(1)g(or)g(2\))h(the)f(MJD)g(is)g
+FB(not)427 2226 y FD(computed.)e(When)30 b(an)g(in)m(v)-5
+b(alid)28 b(da)m(y)j(is)e(supplied)e(\(status)k(J)f(=)g(3\))i(the)e
+(MJD)h FB(is)g FD(computed.)311 2370 y(2.)46 b(The)30
+b(y)m(ear)h(m)m(ust)g(b)s(e)e Fo(\000)p FD(4699)j(\()p
+Fq(i.e.)e FD(4700BC\))j(or)d(later.)41 b(F)-8 b(or)31
+b(y)m(ear)g Fl(n)p FD(BC)f(use)g(IY)h(=)f Fo(\000)p FD(\()p
+Fl(n)19 b Fo(\000)h FD(1\).)311 2515 y(3.)46 b(An)35
+b(alternativ)m(e)g(to)h(the)f(presen)m(t)f(routine)g(is)g(sla)p
+Ft(_)p FD(CALDJ,)g(whic)m(h)g(accepts)i(a)f(y)m(ear)h(with)d(the)427
+2628 y(cen)m(tury)e(missing.)0 2978 y FB(REFERENCE)44
+b FD(:)c(The)28 b(algorithm)f(is)h(adapted)g(from)h(Hatc)m(her,)h
+Fq(Q.)15 b(Jl.)g(R.)h(astr.)h(So)-5 b(c.)29 b FD(\(1984\))i
+FB(25)p FD(,)e(53-55.)p 0 3111 3780 8 v 0 3224 a Fx(SLA)p
+Fn(_)p Fx(CL)-11 b(YD)620 b Fm(Calendar)37 b(to)h(Y)-10
+b(ear,)37 b(Da)m(y)622 b Fx(SLA)p Fn(_)p Fx(CL)-11 b(YD)0
+3575 y FB(A)m(CTION)44 b FD(:)j(Gregorian)34 b(calendar)f(date)h(to)h
+(y)m(ear)f(and)f(da)m(y)h(in)f(y)m(ear,)i(in)e(a)h(Julian)d(calendar)i
+(aligned)g(to)227 3687 y(the)e(20th/21st)h(cen)m(tury)f(Gregorian)f
+(calendar.)0 3875 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_CLYD)g(\(IY,)h(IM,)f(ID,)h(NY,)g(ND,)g(J\))0 4218
+y FB(GIVEN)e FD(:)277 4390 y Fq(IY,IM,ID)356 b FB(I)605
+b FD(y)m(ear,)32 b(mon)m(th,)e(da)m(y)h(in)e(Gregorian)h(calendar)0
+4741 y FB(RETURNED)46 b FD(:)277 4887 y Fq(NY)600 b FB(I)605
+b FD(y)m(ear)31 b(\(re-aligned)f(Julian)e(calendar\))277
+5000 y Fq(ND)599 b FB(I)605 b FD(da)m(y)31 b(in)e(y)m(ear)i(\(1)g(=)f
+(Jan)m(uary)g(1st\))277 5113 y Fq(J)688 b FB(I)605 b
+FD(status:)1825 5226 y(0)31 b(=)f(OK)1825 5338 y(1)h(=)f(bad)f(y)m(ear)
+j(\(b)s(efore)e Fo(\000)p FD(4711\))1825 5451 y(2)h(=)f(bad)f(mon)m(th)
+1825 5564 y(3)i(=)f(bad)f(da)m(y)p eop
+%%Page: 26 28
+26 27 bop 0 52 a FD(26)0 351 y FB(NOTES)44 b FD(:)311
+546 y(1.)i(The)30 b(purp)s(ose)f(of)h(sla)p Ft(_)p FD(CL)-8
+b(YD)30 b(is)g(to)h(supp)s(ort)e(sla)p Ft(_)p FD(EAR)-8
+b(TH,)30 b(sla)p Ft(_)p FD(MOON)f(and)h(sla)p Ft(_)p
+FD(ECOR.)311 695 y(2.)46 b(Bet)m(w)m(een)31 b(1900)f(Marc)m(h)f(1)g
+(and)e(2100)k(F)-8 b(ebruary)28 b(28)h(it)f(returns)f(answ)m(ers)h
+(whic)m(h)f(are)i(consisten)m(t)427 808 y(with)d(the)i(ordinary)e
+(Gregorian)h(calendar.)39 b(Outside)26 b(this)h(range)h(there)f(will)e
+(b)s(e)i(a)h(discrepancy)427 921 y(whic)m(h)h(increases)h(b)m(y)h(one)f
+(da)m(y)h(for)f(ev)m(ery)h(non-leap)f(cen)m(tury)h(y)m(ear.)311
+1070 y(3.)46 b(When)26 b(an)g(in)m(v)-5 b(alid)23 b(y)m(ear)k(or)f(mon)
+m(th)g(is)f(supplied)e(\(status)k(J)e(=)h(1)g(or)g(J)g(=)f(2\))i(the)f
+(results)f(are)i FB(not)427 1183 y FD(computed.)55 b(When)35
+b(a)g(da)m(y)h(is)e(supplied)e(whic)m(h)i(is)g(outside)g(the)h(con)m(v)
+m(en)m(tional)h(range)g(\(status)427 1296 y(J)30 b(=)g(3\))h(the)g
+(results)e FB(are)h FD(computed.)p 0 1440 3780 8 v 0
+1553 a Fx(SLA)p Fn(_)p Fx(COMBN)570 b Fm(Next)38 b(Com)m(bination)566
+b Fx(SLA)p Fn(_)p Fx(COMBN)0 1904 y FB(A)m(CTION)44 b
+FD(:)39 b(Generate)29 b(the)e(next)h(com)m(bination,)f(a)h(subset)f(of)
+g(a)h(sp)s(eci\014ed)e(size)h(c)m(hosen)h(from)e(a)i(sp)s(eci\014ed)227
+2017 y(n)m(um)m(b)s(er)h(of)i(items.)0 2204 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_COMBN)g(\(NSEL,)g(NCAND,)g(LIST,)g(J\))0
+2564 y FB(GIVEN)f FD(:)277 2710 y Fq(NSEL)498 b FB(I)605
+b FD(n)m(um)m(b)s(er)29 b(of)i(items)f(\(subset)g(size\))277
+2823 y Fq(NCAND)398 b FB(I)605 b FD(n)m(um)m(b)s(er)29
+b(of)i(candidates)f(\(set)h(size\))0 3194 y FB(GIVEN)j(and)h(RETURNED)
+46 b FD(:)277 3365 y Fq(LIST)528 b FB(I\(NSEL\))251 b
+FD(latest)31 b(com)m(bination,)f(LIST\(1\)=0)h(to)g(initialize)0
+3744 y FB(RETURNED)46 b FD(:)277 3890 y Fq(J)688 b FB(I)605
+b FD(status:)1825 4003 y Fo(\000)p FD(1)30 b(=)g(illegal)f(NSEL)h(or)g
+(NCAND)1898 4116 y(0)g(=)g(OK)1825 4229 y(+1)g(=)g(no)h(more)f(com)m
+(binations)g(a)m(v)-5 b(ailable)0 4599 y FB(NOTES)44
+b FD(:)311 4793 y(1.)i(NSEL)33 b(and)h(NCAND)g(m)m(ust)g(b)s(oth)f(b)s
+(e)g(at)h(least)g(1,)i(and)d(NSEL)g(m)m(ust)g(b)s(e)h(less)f(than)g(or)
+h(equal)427 4906 y(to)d(NCAND.)311 5055 y(2.)46 b(This)32
+b(routine)g(returns,)h(in)f(the)i(LIST)e(arra)m(y)-8
+b(,)35 b(a)f(subset)f(of)g(NSEL)g(in)m(tegers)h(c)m(hosen)f(from)g(the)
+427 5168 y(range)h(1)h(to)f(NCAND)g(inclusiv)m(e,)f(in)g(ascending)g
+(order.)50 b(Before)35 b(calling)d(the)i(routine)f(for)g(the)427
+5281 y(\014rst)f(time,)h(the)g(caller)f(m)m(ust)h(set)g(the)g(\014rst)f
+(elemen)m(t)h(of)f(the)h(LIST)f(arra)m(y)h(to)g(zero)h(\(an)m(y)f(v)-5
+b(alue)427 5394 y(less)30 b(than)g(1)h(will)d(do\))i(to)h(cause)g
+(initialization.)311 5544 y(3.)46 b(The)30 b(\014rst)g(com)m(bination)f
+(to)j(b)s(e)d(generated)j(is:)597 5693 y(LIST\(1\)=1,)f(LIST\(2\)=2,)g
+(.)15 b(.)g(.)h(,)30 b(LIST\(NSEL\)=NSEL)p eop
+%%Page: 27 29
+27 28 bop 0 52 a Fw(SUN/67.70)3252 b FD(27)427 351 y(This)33
+b(is)h(also)h(the)g(com)m(bination)f(returned)g(for)h(the)g
+(\\\014nished")e(\(J=1\))i(case.)55 b(The)35 b(\014nal)e(p)s(er-)427
+464 y(m)m(utation)e(to)g(b)s(e)f(generated)h(is:)597
+617 y(LIST\(1\)=NCAND,)g(LIST\(2\)=NCAND)p Fo(\000)p
+FD(1,)g(.)16 b(.)f(.)g(,)1537 730 y(LIST\(NSEL\)=NCAND)p
+Fo(\000)p FD(NSEL+1)311 883 y(4.)46 b(If)20 b(the)h(\\\014nished")e
+(\(J=1\))i(status)g(is)f(ignored,)i(the)f(routine)e(con)m(tin)m(ues)i
+(to)h(deliv)m(er)d(com)m(binations,)427 996 y(the)31
+b(pattern)f(rep)s(eating)g(ev)m(ery)h(NCAND!/\(NSEL!\(NCAND)p
+Fo(\000)p FD(NSEL\)!\))i(calls.)311 1149 y(5.)46 b(The)30
+b(algorithm)g(is)f(b)m(y)h(R.)16 b(F.)f(W)-8 b(arren-Smith)30
+b(\(priv)-5 b(ate)30 b(comm)m(unication\).)p 0 1301 3780
+8 v 0 1414 a Fx(SLA)p Fn(_)p Fx(CR2AF)331 b Fm(Radians)38
+b(to)g(Deg,Arcmin,Arcsec)329 b Fx(SLA)p Fn(_)p Fx(CR2AF)0
+1764 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32 b(an)e(angle)g(in)f
+(radians)g(to)i(degrees,)h(arcmin)m(utes,)e(arcseconds)h(\(single)e
+(precision\).)0 1952 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_CR2AF)g(\(NDP,)g(ANGLE,)g(SIGN,)g(IDMSF\))0 2323
+y FB(GIVEN)f FD(:)277 2469 y Fq(NDP)537 b FB(I)605 b
+FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e(places)h(of)h(arcseconds)277
+2582 y Fq(ANGLE)411 b FB(R)567 b FD(angle)31 b(in)e(radians)0
+2970 y FB(RETURNED)46 b FD(:)277 3116 y Fq(SIGN)512 b
+FB(C)569 b FD(`+')31 b(or)f(`)p Fo(\000)p FD(')277 3229
+y Fq(IDMSF)440 b FB(I\(4\))471 b FD(degrees,)31 b(arcmin)m(utes,)f
+(arcseconds,)h(fraction)0 3618 y FB(NOTES)44 b FD(:)311
+3819 y(1.)i(NDP)31 b(less)f(than)g(zero)h(is)e(in)m(terpreted)h(as)h
+(zero.)311 3972 y(2.)46 b(The)36 b(largest)g(useful)e(v)-5
+b(alue)36 b(for)f(NDP)i(is)e(determined)f(b)m(y)i(the)g(size)g(of)g
+(ANGLE,)h(the)f(format)427 4085 y(of)e(REAL)g(\015oating-p)s(oin)m(t)f
+(n)m(um)m(b)s(ers)g(on)g(the)i(target)g(mac)m(hine,)g(and)e(the)h(risk)
+f(of)h(o)m(v)m(er\015o)m(wing)427 4198 y(IDMSF\(4\).)41
+b(On)24 b(some)i(arc)m(hitectures,)h(for)f(ANGLE)f(up)g(to)h(2pi,)g
+(the)f(a)m(v)-5 b(ailable)25 b(\015oating-p)s(oin)m(t)427
+4311 y(precision)36 b(corresp)s(onds)g(roughly)g(to)i(NDP=3.)63
+b(This)35 b(is)i(w)m(ell)f(b)s(elo)m(w)h(the)g(ultimate)g(limit)e(of)
+427 4424 y(NDP=9)c(set)g(b)m(y)f(the)h(capacit)m(y)h(of)e(a)h(t)m
+(ypical)f(32-bit)g(IDMSF\(4\).)311 4577 y(3.)46 b(The)29
+b(absolute)f(v)-5 b(alue)29 b(of)g(ANGLE)g(ma)m(y)g(exceed)h(2)p
+Fl(\031)s FD(.)41 b(In)28 b(cases)i(where)e(it)g(do)s(es)h(not,)h(it)e
+(is)g(up)g(to)427 4690 y(the)f(caller)g(to)g(test)h(for)f(and)f(handle)
+f(the)j(case)g(where)e(ANGLE)h(is)f(v)m(ery)h(nearly)f(2)p
+Fl(\031)31 b FD(and)26 b(rounds)427 4803 y(up)k(to)h(360)805
+4770 y Fp(\016)845 4803 y FD(,)g(b)m(y)f(testing)h(for)f
+(IDMSF\(1\)=360)j(and)d(setting)g(IDMSF\(1-4\))j(to)e(zero.)p
+0 4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(CR2TF)482 b Fm(Radians)38
+b(to)g(Hour,Min,Sec)481 b Fx(SLA)p Fn(_)p Fx(CR2TF)0
+5418 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32 b(an)e(angle)g(in)f
+(radians)g(to)i(hours,)f(min)m(utes,)g(seconds)g(\(single)f
+(precision\).)0 5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_CR2TF)g(\(NDP,)g(ANGLE,)g(SIGN,)g(IHMSF\))p eop
+%%Page: 28 30
+28 29 bop 0 52 a FD(28)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(NDP)537 b FB(I)605 b FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e
+(places)h(of)h(seconds)277 610 y Fq(ANGLE)411 b FB(R)567
+b FD(angle)31 b(in)e(radians)0 886 y FB(RETURNED)46 b
+FD(:)277 1032 y Fq(SIGN)512 b FB(C)569 b FD(`+')31 b(or)f(`)p
+Fo(\000)p FD(')277 1145 y Fq(IHMSF)441 b FB(I\(4\))471
+b FD(hours,)30 b(min)m(utes,)f(seconds,)i(fraction)0
+1421 y FB(NOTES)44 b FD(:)311 1597 y(1.)i(NDP)31 b(less)f(than)g(zero)h
+(is)e(in)m(terpreted)h(as)h(zero.)311 1732 y(2.)46 b(The)36
+b(largest)g(useful)e(v)-5 b(alue)36 b(for)f(NDP)i(is)e(determined)f(b)m
+(y)i(the)g(size)g(of)g(ANGLE,)h(the)f(format)427 1845
+y(of)e(REAL)g(\015oating-p)s(oin)m(t)f(n)m(um)m(b)s(ers)g(on)g(the)i
+(target)g(mac)m(hine,)g(and)e(the)h(risk)f(of)h(o)m(v)m(er\015o)m(wing)
+427 1958 y(IHMSF\(4\).)41 b(On)24 b(some)i(arc)m(hitectures,)i(for)d
+(ANGLE)h(up)e(to)j(2pi,)f(the)f(a)m(v)-5 b(ailable)25
+b(\015oating-p)s(oin)m(t)427 2071 y(precision)36 b(corresp)s(onds)g
+(roughly)g(to)i(NDP=3.)63 b(This)35 b(is)i(w)m(ell)f(b)s(elo)m(w)h(the)
+g(ultimate)g(limit)e(of)427 2184 y(NDP=9)c(set)g(b)m(y)f(the)h(capacit)
+m(y)h(of)e(a)h(t)m(ypical)f(32-bit)g(IHMSF\(4\).)311
+2319 y(3.)46 b(The)29 b(absolute)f(v)-5 b(alue)29 b(of)g(ANGLE)g(ma)m
+(y)g(exceed)h(2)p Fl(\031)s FD(.)41 b(In)28 b(cases)i(where)e(it)g(do)s
+(es)h(not,)h(it)e(is)g(up)g(to)427 2432 y(the)f(caller)g(to)g(test)h
+(for)f(and)f(handle)f(the)j(case)g(where)e(ANGLE)h(is)f(v)m(ery)h
+(nearly)f(2)p Fl(\031)31 b FD(and)26 b(rounds)427 2545
+y(up)k(to)h(24)g(hours,)e(b)m(y)i(testing)f(for)g(IHMSF\(1\)=24)j(and)c
+(setting)i(IHMSF\(1-4\))h(to)f(zero.)p 0 2649 3780 8
+v 0 2762 a Fx(SLA)p Fn(_)p Fx(CS2C)664 b Fm(Spherical)38
+b(to)g(Cartesian)663 b Fx(SLA)p Fn(_)p Fx(CS2C)0 3112
+y FB(A)m(CTION)44 b FD(:)c(Spherical)29 b(co)s(ordinates)h(to)h
+(Cartesian)f(co)s(ordinates)g(\(single)f(precision\).)0
+3300 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_CS2C)g(\(A,)h(B,)g(V\))0
+3605 y FB(GIVEN)e FD(:)277 3777 y Fq(A,B)576 b FB(R)567
+b FD(spherical)29 b(co)s(ordinates)h(in)f(radians:)39
+b([)15 b Fl(\013;)g(\016)20 b FD(])31 b Fq(etc.)0 4061
+y FB(RETURNED)46 b FD(:)277 4233 y Fq(V)668 b FB(R\(3\))433
+b FD([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(])30 b(unit)f(v)m(ector)0
+4517 y FB(NOTE)44 b FD(:)65 b(The)42 b(spherical)f(co)s(ordinates)i
+(are)g(longitude)e(\(+v)m(e)i(an)m(ticlo)s(c)m(kwise)g(lo)s(oking)e
+(from)h(the)h(+v)m(e)227 4630 y(latitude)33 b(p)s(ole\))g(and)g
+(latitude.)50 b(The)33 b(Cartesian)h(co)s(ordinates)f(are)h(righ)m(t)f
+(handed,)h(with)f(the)h Fq(x)p FD(-axis)227 4743 y(at)d(zero)h
+(longitude)d(and)g(latitude,)h(and)g(the)g Fq(z)p FD(-axis)h(at)g(the)f
+(+v)m(e)h(latitude)f(p)s(ole.)p 0 4842 V 0 4955 a Fx(SLA)p
+Fn(_)p Fx(CS2C6)377 b Fm(Spherical)37 b(P)m(os/V)-10
+b(el)37 b(to)h(Cartesian)375 b Fx(SLA)p Fn(_)p Fx(CS2C6)0
+5305 y FB(A)m(CTION)44 b FD(:)38 b(Con)m(v)m(ersion)25
+b(of)g(p)s(osition)f(&)h(v)m(elo)s(cit)m(y)g(in)f(spherical)g(co)s
+(ordinates)h(to)h(Cartesian)f(co)s(ordinates)227 5418
+y(\(single)30 b(precision\).)0 5606 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_CS2C6)g(\(A,)h(B,)g(R,)g(AD,)g(BD,)g(RD,)g(V\))p
+eop
+%%Page: 29 31
+29 30 bop 0 52 a Fw(SUN/67.70)3252 b FD(29)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(A)668 b FB(R)567 b FD(longitude)29
+b(\(radians\))h({)h(for)f(example)g Fl(\013)277 610 y
+Fq(B)672 b FB(R)567 b FD(latitude)30 b(\(radians\))f({)i(for)f(example)
+g Fl(\016)277 723 y Fq(R)670 b FB(R)567 b FD(radial)29
+b(co)s(ordinate)277 836 y Fq(AD)599 b FB(R)567 b FD(longitude)29
+b(deriv)-5 b(ativ)m(e)30 b(\(radians)f(p)s(er)h(unit)f(time\))277
+949 y Fq(BD)603 b FB(R)567 b FD(latitude)30 b(deriv)-5
+b(ativ)m(e)29 b(\(radians)h(p)s(er)f(unit)g(time\))277
+1062 y Fq(RD)601 b FB(R)567 b FD(radial)29 b(deriv)-5
+b(ativ)m(e)0 1309 y FB(RETURNED)46 b FD(:)277 1480 y
+Fq(V)668 b FB(R\(6\))433 b FD([)15 b Fl(x;)g(y)s(;)g(z)t(;)33
+b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(])0 1736 y FB(NOTE)44 b FD(:)65 b(The)42
+b(spherical)f(co)s(ordinates)i(are)g(longitude)e(\(+v)m(e)i(an)m(ticlo)
+s(c)m(kwise)g(lo)s(oking)e(from)h(the)h(+v)m(e)227 1849
+y(latitude)33 b(p)s(ole\))g(and)g(latitude.)50 b(The)33
+b(Cartesian)h(co)s(ordinates)f(are)h(righ)m(t)f(handed,)h(with)f(the)h
+Fq(x)p FD(-axis)227 1962 y(at)d(zero)h(longitude)d(and)g(latitude,)h
+(and)g(the)g Fq(z)p FD(-axis)h(at)g(the)f(+v)m(e)h(latitude)f(p)s(ole.)
+p 0 2049 3780 8 v 0 2161 a Fx(SLA)p Fn(_)p Fx(CTF2D)559
+b Fm(Hour,Min,Sec)36 b(to)i(Da)m(ys)560 b Fx(SLA)p Fn(_)p
+Fx(CTF2D)0 2512 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32
+b(hours,)d(min)m(utes,)h(seconds)g(to)h(da)m(ys)g(\(single)e
+(precision\).)0 2699 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_CTF2D)g(\(IHOUR,)f(IMIN,)i(SEC,)f(DAYS,)h(J\))0
+2988 y FB(GIVEN)e FD(:)277 3134 y Fq(IHOUR)429 b FB(I)605
+b FD(hours)277 3247 y Fq(IMIN)516 b FB(I)605 b FD(min)m(utes)277
+3360 y Fq(SEC)558 b FB(R)567 b FD(seconds)0 3607 y FB(RETURNED)46
+b FD(:)277 3753 y Fq(D)n(A)-7 b(YS)489 b FB(R)567 b FD(in)m(terv)-5
+b(al)30 b(in)f(da)m(ys)277 3866 y Fq(J)688 b FB(I)605
+b FD(status:)1825 3979 y(0)31 b(=)f(OK)1825 4092 y(1)h(=)f(IHOUR)g
+(outside)f(range)i(0-23)1825 4205 y(2)g(=)f(IMIN)g(outside)g(range)g
+(0-59)1825 4318 y(3)h(=)f(SEC)f(outside)h(range)g(0-59.999)p
+Fo(\001)15 b(\001)g(\001)0 4565 y FB(NOTES)44 b FD(:)311
+4737 y(1.)i(The)30 b(result)f(is)h(computed)g(ev)m(en)h(if)e(an)m(y)i
+(of)g(the)f(range)h(c)m(hec)m(ks)h(fail.)311 4868 y(2.)46
+b(The)30 b(sign)g(m)m(ust)g(b)s(e)g(dealt)g(with)f(outside)g(this)h
+(routine.)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(CTF2R)482
+b Fm(Hour,Min,Sec)37 b(to)h(Radians)482 b Fx(SLA)p Fn(_)p
+Fx(CTF2R)0 5418 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32
+b(hours,)d(min)m(utes,)h(seconds)g(to)h(radians)e(\(single)h
+(precision\).)0 5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_CTF2R)g(\(IHOUR,)f(IMIN,)i(SEC,)f(RAD,)h(J\))p
+eop
+%%Page: 30 32
+30 31 bop 0 52 a FD(30)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(IHOUR)429 b FB(I)605 b FD(hours)277 610 y Fq(IMIN)516
+b FB(I)605 b FD(min)m(utes)277 723 y Fq(SEC)558 b FB(R)567
+b FD(seconds)0 1202 y FB(RETURNED)46 b FD(:)277 1348
+y Fq(RAD)533 b FB(R)567 b FD(angle)31 b(in)e(radians)277
+1461 y Fq(J)688 b FB(I)605 b FD(status:)1825 1574 y(0)31
+b(=)f(OK)1825 1687 y(1)h(=)f(IHOUR)g(outside)f(range)i(0-23)1825
+1800 y(2)g(=)f(IMIN)g(outside)g(range)g(0-59)1825 1913
+y(3)h(=)f(SEC)f(outside)h(range)g(0-59.999)p Fo(\001)15
+b(\001)g(\001)0 2392 y FB(NOTES)44 b FD(:)311 2630 y(1.)i(The)30
+b(result)f(is)h(computed)g(ev)m(en)h(if)e(an)m(y)i(of)g(the)f(range)h
+(c)m(hec)m(ks)h(fail.)311 2801 y(2.)46 b(The)30 b(sign)g(m)m(ust)g(b)s
+(e)g(dealt)g(with)f(outside)g(this)h(routine.)p 0 2984
+3780 8 v 0 3097 a Fx(SLA)p Fn(_)p Fx(D)l(AF2R)329 b Fm
+(Deg,Arcmin,Arcsec)35 b(to)j(Radians)330 b Fx(SLA)p Fn(_)p
+Fx(D)l(AF2R)0 3448 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32
+b(degrees,)f(arcmin)m(utes,)f(arcseconds)h(to)g(radians)e(\(double)g
+(precision\).)0 3635 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DAF2R)g(\(IDEG,)g(IAMIN,)g(ASEC,)g(RAD,)h(J\))0
+4060 y FB(GIVEN)e FD(:)277 4206 y Fq(IDEG)500 b FB(I)605
+b FD(degrees)277 4319 y Fq(IAMIN)448 b FB(I)605 b FD(arcmin)m(utes)277
+4432 y Fq(ASEC)490 b FB(D)565 b FD(arcseconds)0 4912
+y FB(RETURNED)46 b FD(:)277 5058 y Fq(RAD)533 b FB(D)565
+b FD(angle)31 b(in)e(radians)277 5171 y Fq(J)688 b FB(I)605
+b FD(status:)1825 5283 y(1)31 b(=)f(IDEG)g(outside)g(range)h(0)p
+Fo(\000)p FD(359)1825 5396 y(2)g(=)f(IAMIN)g(outside)g(range)h(0)p
+Fo(\000)p FD(59)1825 5509 y(3)g(=)f(ASEC)f(outside)h(range)g(0)p
+Fo(\000)p FD(59.999)p Fo(\001)15 b(\001)g(\001)p eop
+%%Page: 31 33
+31 32 bop 0 52 a Fw(SUN/67.70)3252 b FD(31)0 351 y FB(NOTES)44
+b FD(:)311 538 y(1.)i(The)30 b(result)f(is)h(computed)g(ev)m(en)h(if)e
+(an)m(y)i(of)g(the)f(range)h(c)m(hec)m(ks)h(fail.)311
+683 y(2.)46 b(The)30 b(sign)g(m)m(ust)g(b)s(e)g(dealt)g(with)f(outside)
+g(this)h(routine.)p 0 813 3780 8 v 0 926 a Fx(SLA)p Fn(_)p
+Fx(D)l(AFIN)175 b Fm(Sexagesimal)36 b(c)m(haracter)g(string)h(to)i
+(angle)175 b Fx(SLA)p Fn(_)p Fx(D)l(AFIN)0 1276 y FB(A)m(CTION)44
+b FD(:)k(Deco)s(de)35 b(a)g(free-format)g(sexagesimal)f(string)f
+(\(degrees,)j(arcmin)m(utes,)f(arcseconds\))g(in)m(to)f(a)227
+1389 y(double)29 b(precision)g(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s
+(er)g(\(radians\).)0 1576 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DAFIN)g(\(STRING,)f(NSTRT,)h(DRESLT,)g(JF\))0 1922
+y FB(GIVEN)f FD(:)277 2068 y Fq(STRING)381 b FB(C*\(*\))i
+FD(string)29 b(con)m(taining)h(deg,)h(arcmin,)f(arcsec)h(\014elds)277
+2181 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(p)s(oin)m(ter)36
+b(to)h(start)g(of)f(deco)s(de)h(\(b)s(eginning)d(of)j(STRING)1658
+2294 y(=)30 b(1\))0 2640 y FB(RETURNED)46 b FD(:)277
+2786 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(adv)-5 b(anced)31
+b(past)f(the)h(deco)s(ded)f(angle)277 2899 y Fq(DRESL)-7
+b(T)373 b FB(D)565 b FD(angle)31 b(in)e(radians)277 3012
+y Fq(JF)629 b FB(I)605 b FD(status:)1825 3125 y(0)31
+b(=)f(OK)1752 3238 y(+1)h(=)f(default,)f(DRESL)-8 b(T)30
+b(unc)m(hanged)g(\(note)i(2\))1752 3351 y Fo(\000)p FD(1)f(=)f(bad)f
+(degrees)i(\(note)h(3\))1752 3464 y Fo(\000)p FD(2)f(=)f(bad)f(arcmin)m
+(utes)h(\(note)i(3\))1752 3577 y Fo(\000)p FD(3)f(=)f(bad)f(arcseconds)
+i(\(note)g(3\))0 3923 y FB(EXAMPLE)45 b FD(:)277 4069
+y Fq(ar)-5 b(gument)369 b(b)-5 b(efor)g(e)1235 b(after)277
+4295 y FD(STRING)1013 4262 y Fp(0)1036 4295 y Ft
+(-57 17 44.806  12 34 56.7)2236 4262 y Fp(0)2476 4295
+y FD(unc)m(hanged)277 4408 y(NSTR)-8 b(T)426 b(1)1418
+b(16)32 b(\()p Fq(i.e.)e FD(p)s(oin)m(ting)e(to)j(12...\))277
+4521 y(RESL)-8 b(T)441 b(-)1433 b Fo(\000)p FD(1)p Fl(:)p
+FD(00000)p Ft(D0)277 4634 y FD(JF)630 b(-)1433 b(0)45
+4813 y(A)39 b(further)f(call)g(to)i(sla)p Ft(_)p FD(D)m(AFIN,)f
+(without)f(adjustmen)m(t)h(of)g(NSTR)-8 b(T,)38 b(will)e(deco)s(de)j
+(the)g(second)g(angle,)227 4926 y(12)317 4893 y Fp(\016)373
+4926 y FD(34)463 4889 y Fk(0)505 4926 y FD(56)590 4889
+y Fk(0)m(0)594 4926 y Fl(:)p FD(7.)0 5281 y FB(NOTES)44
+b FD(:)311 5467 y(1.)i(The)27 b(\014rst)f(three)h(\\\014elds")f(in)g
+(STRING)g(are)h(degrees,)i(arcmin)m(utes,)e(arcseconds,)h(separated)g
+(b)m(y)427 5580 y(spaces)d(or)e(commas.)40 b(The)23 b(degrees)h
+(\014eld)f(ma)m(y)h(b)s(e)g(signed,)g(but)f(not)h(the)g(others.)39
+b(The)24 b(deco)s(ding)427 5693 y(is)30 b(carried)f(out)i(b)m(y)f(the)h
+(sla)p Ft(_)p FD(DFL)-8 b(TIN)30 b(routine)f(and)h(is)g(free-format.)p
+eop
+%%Page: 32 34
+32 33 bop 0 52 a FD(32)311 351 y(2.)46 b(Successiv)m(e)24
+b(\014elds)e(ma)m(y)i(b)s(e)f(absen)m(t,)j(defaulting)c(to)j(zero.)39
+b(F)-8 b(or)25 b(zero)f(status,)i(the)e(only)e(com)m(bina-)427
+464 y(tions)31 b(allo)m(w)m(ed)g(are)g(degrees)h(alone,)f(degrees)h
+(and)f(arcmin)m(utes,)g(and)f(all)g(three)i(\014elds)d(presen)m(t.)427
+577 y(If)h(all)e(three)i(\014elds)e(are)i(omitted,)g(a)g(status)g(of)g
+(+1)g(is)f(returned)f(and)i(DRESL)-8 b(T)29 b(is)g(unc)m(hanged.)427
+690 y(In)h(all)f(other)i(cases)g(DRESL)-8 b(T)30 b(is)f(c)m(hanged.)311
+848 y(3.)46 b(Range)31 b(c)m(hec)m(king:)506 1006 y Fo(\017)46
+b FD(The)38 b(degrees)h(\014eld)e(is)g(not)i(range)g(c)m(hec)m(k)m(ed.)
+66 b(Ho)m(w)m(ev)m(er,)43 b(it)38 b(is)f(exp)s(ected)i(to)g(b)s(e)f(in)
+m(tegral)597 1119 y(unless)29 b(the)i(other)f(t)m(w)m(o)i(\014elds)d
+(are)h(absen)m(t.)506 1254 y Fo(\017)46 b FD(The)33 b(arcmin)m(utes)h
+(\014eld)e(is)g(exp)s(ected)i(to)h(b)s(e)e(0-59,)j(and)d(in)m(tegral)g
+(if)g(the)h(arcseconds)g(\014eld)597 1367 y(is)39 b(presen)m(t.)70
+b(If)40 b(the)g(arcseconds)g(\014eld)f(is)g(absen)m(t,)k(the)d(arcmin)m
+(utes)g(is)f(exp)s(ected)h(to)h(b)s(e)597 1480 y(0-59.9999...)506
+1615 y Fo(\017)46 b FD(The)30 b(arcseconds)h(\014eld)e(is)g(exp)s
+(ected)i(to)g(b)s(e)f(0-59.9999...)506 1751 y Fo(\017)46
+b FD(Deco)s(ding)40 b(con)m(tin)m(ues)g(ev)m(en)h(when)e(a)h(c)m(hec)m
+(k)i(has)d(failed.)68 b(Under)39 b(these)i(circumstances)597
+1864 y(the)33 b(\014eld)d(tak)m(es)k(the)e(supplied)d(v)-5
+b(alue,)32 b(defaulting)f(to)h(zero,)i(and)d(the)i(result)e(DRESL)-8
+b(T)31 b(is)597 1977 y(computed)f(and)g(returned.)311
+2134 y(4.)46 b(F)-8 b(urther)31 b(\014elds)f(after)h(the)g(three)h(exp)
+s(ected)f(ones)g(are)h(not)f(treated)h(as)g(an)e(error.)43
+b(The)30 b(p)s(oin)m(ter)427 2247 y(NSTR)-8 b(T)35 b(is)g(left)g(in)f
+(the)i(correct)h(state)f(for)g(further)e(deco)s(ding)g(with)h(the)g
+(presen)m(t)h(routine)e(or)427 2360 y(with)29 b(sla)p
+Ft(_)p FD(DFL)-8 b(TIN)31 b Fq(etc)p FD(.)40 b(See)31
+b(the)f(example,)h(ab)s(o)m(v)m(e.)311 2518 y(5.)46 b(If)27
+b(STRING)h(con)m(tains)f(hours,)h(min)m(utes,)f(seconds)h(instead)f(of)
+h(degrees)g Fq(etc)p FD(,)g(or)g(if)e(the)i(required)427
+2631 y(units)e(are)j(turns)d(\(or)i(da)m(ys\))g(instead)f(of)h
+(radians,)f(the)h(result)f(DRESL)-8 b(T)27 b(should)f(b)s(e)h(m)m
+(ultiplied)427 2744 y(as)k(follo)m(ws:)477 2890 y Fq(for)i(STRING)145
+b(to)33 b(obtain)202 b(multiply)34 b(DRESL)-7 b(T)32
+b(by)477 3116 y Fo(\016)583 3110 y Fp(0)65 b(00)1122
+3116 y FD(radians)264 b(1)p Fl(:)p FD(0)p Ft(D0)477 3229
+y Fo(\016)583 3223 y Fp(0)65 b(00)1122 3229 y FD(turns)345
+b(1)p Fl(=)p FD(2)p Fl(\031)30 b FD(=)25 b(0)p Fl(:)p
+FD(1591549430918)q(95)q(335)q(8)p Ft(D0)477 3342 y FD(h)30
+b(m)g(s)422 b(radians)264 b(15)p Fl(:)p FD(0)p Ft(D0)477
+3455 y FD(h)30 b(m)g(s)422 b(da)m(ys)377 b(15)p Fl(=)p
+FD(2)p Fl(\031)30 b FD(=)25 b(2)p Fl(:)p FD(387324146378)q(43)q(003)q
+(65)q Ft(D0)p 0 3627 3780 8 v 0 3740 a Fx(SLA)p Fn(_)p
+Fx(D)l(A)-11 b(T)1008 b Fm(T)-10 b(AI)p Fh(\000)p Fm(UTC)1010
+b Fx(SLA)p Fn(_)p Fx(D)l(A)-11 b(T)0 4090 y FB(A)m(CTION)44
+b FD(:)38 b(Incremen)m(t)26 b(to)g(b)s(e)f(applied)e(to)k(Co)s
+(ordinated)d(Univ)m(ersal)g(Time)h(UTC)g(to)h(giv)m(e)g(In)m
+(ternational)227 4203 y(A)m(tomic)31 b(Time)f(T)-8 b(AI.)0
+4391 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_DAT)d(\(UTC\))0
+4772 y FB(GIVEN)g FD(:)277 4944 y Fq(UTC)538 b FB(D)565
+b FD(UTC)30 b(date)h(as)g(a)f(mo)s(di\014ed)f(JD)h(\(JD)p
+Fo(\000)p FD(2400000.5\))0 5364 y FB(RETURNED)46 b FD(:)277
+5536 y Fq(sla)p Ft(_)p Fq(D)n(A)-7 b(T)389 b FB(D)565
+b FD(T)-8 b(AI)p Fo(\000)p FD(UTC)30 b(in)f(seconds)p
+eop
+%%Page: 33 35
+33 34 bop 0 52 a Fw(SUN/67.70)3252 b FD(33)0 351 y FB(NOTES)44
+b FD(:)311 529 y(1.)i(The)32 b(UTC)f(is)g(sp)s(eci\014ed)f(to)i(b)s(e)f
+(a)i(date)f(rather)g(than)f(a)h(time)g(to)g(indicate)f(that)i(care)f
+(needs)g(to)427 642 y(b)s(e)g(tak)m(en)i(not)f(to)h(sp)s(ecify)d(an)i
+(instan)m(t)g(whic)m(h)e(lies)h(within)e(a)j(leap)g(second.)48
+b(Though)32 b(in)f(most)427 755 y(cases)39 b(UTC)e(can)i(include)c(the)
+j(fractional)g(part,)i(correct)f(b)s(eha)m(viour)d(on)i(the)g(da)m(y)h
+(of)f(a)g(leap)427 868 y(second)31 b(can)f(b)s(e)g(guaran)m(teed)i
+(only)d(up)g(to)i(the)g(end)f(of)g(the)h(second)f(23)2892
+835 y Fu(h)2952 868 y FD(59)3042 835 y Fu(m)3121 868
+y FD(59)3211 835 y Fu(s)3244 868 y FD(.)311 1004 y(2.)46
+b(F)-8 b(or)21 b(ep)s(o)s(c)m(hs)f(from)g(1961)i(Jan)m(uary)e(1)h(on)m
+(w)m(ards,)h(the)e(expressions)f(from)h(the)h(\014le)e
+Ft(ftp://maia.usno.navy.mil)o(/ser)o(7/ta)o(i-u)o(tc.d)o(at)427
+1117 y FD(are)32 b(used.)44 b(A)31 b(5ms)h(time)f(step)h(at)g(1961)h
+(Jan)m(uary)f(1)f(is)g(tak)m(en)i(from)e(2.58.1)j(\(p87\))e(of)g(the)g
+(1992)427 1230 y(Explanatory)e(Supplemen)m(t.)311 1366
+y(3.)46 b(UTC)26 b(b)s(egan)f(at)i(1960)h(Jan)m(uary)d(1.0)i(\(JD)f
+(2436934.5\))k(and)c(it)f(is)g(improp)s(er)f(to)i(call)f(the)h(routine)
+427 1479 y(with)34 b(an)i(earlier)e(ep)s(o)s(c)m(h.)56
+b(Ho)m(w)m(ev)m(er,)39 b(if)34 b(this)h(is)f(attempted,)k(the)e(T)-8
+b(AI)p Fo(\000)p FD(UTC)34 b(expression)h(for)427 1592
+y(the)c(y)m(ear)g(1960)h(is)e(used.)311 1728 y(4.)46
+b(This)35 b(routine)h(has)g(to)h(b)s(e)f(up)s(dated)f(on)i(eac)m(h)h(o)
+s(ccasion)f(that)g(a)g(leap)f(second)g(is)g(announced,)427
+1841 y(and)28 b(programs)h(using)e(it)h(relink)m(ed.)38
+b(Refer)29 b(to)g(the)g(program)g(source)f(co)s(de)h(for)g(information)
+e(on)427 1954 y(when)j(the)g(most)h(recen)m(t)g(leap)f(second)h(w)m(as)
+f(added.)p 0 2058 3780 8 v 0 2171 a Fx(SLA)p Fn(_)p Fx(D)l(A)-15
+b(V2M)187 b Fm(Rotation)36 b(Matrix)h(from)g(Axial)g(V)-10
+b(ector)188 b Fx(SLA)p Fn(_)p Fx(D)l(A)-15 b(V2M)0 2521
+y FB(A)m(CTION)44 b FD(:)39 b(F)-8 b(orm)28 b(the)f(rotation)h(matrix)f
+(corresp)s(onding)e(to)j(a)g(giv)m(en)f(axial)g(v)m(ector)h(\(double)f
+(precision\).)0 2709 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DAV2M)g(\(AXVEC,)f(RMAT\))0 3019 y FB(GIVEN)g FD(:)277
+3191 y Fq(AXVEC)405 b FB(D\(3\))431 b FD(axial)30 b(v)m(ector)i
+(\(radians\))0 3484 y FB(RETURNED)46 b FD(:)277 3656
+y Fq(RMA)-7 b(T)462 b FB(D\(3,3\))350 b FD(rotation)31
+b(matrix)0 3949 y FB(NOTES)44 b FD(:)311 4127 y(1.)i(A)38
+b(rotation)f(matrix)g(describ)s(es)e(a)j(rotation)g(ab)s(out)f(some)g
+(arbitrary)f(axis,)j(called)d(the)i(Euler)427 4240 y(axis.)58
+b(The)35 b Fq(axial)40 b(ve)-5 b(ctor)36 b FD(supplied)d(to)k(this)e
+(routine)g(has)h(the)h(same)f(direction)f(as)i(the)f(Euler)427
+4353 y(axis,)30 b(and)g(its)g(magnitude)f(is)h(the)g(amoun)m(t)h(of)g
+(rotation)f(in)g(radians.)311 4489 y(2.)46 b(If)30 b(AXVEC)h(is)e(n)m
+(ull,)g(the)h(unit)f(matrix)h(is)f(returned.)311 4626
+y(3.)46 b(The)28 b(reference)g(frame)g(rotates)h(clo)s(c)m(kwise)e(as)i
+(seen)f(lo)s(oking)e(along)i(the)g(axial)f(v)m(ector)j(from)d(the)427
+4739 y(origin.)p 0 4842 V 0 4955 a Fx(SLA)p Fn(_)p Fx(DBEAR)109
+b Fm(Direction)37 b(Bet)m(w)m(een)h(P)m(oin)m(ts)f(on)h(a)h(Sphere)110
+b Fx(SLA)p Fn(_)p Fx(DBEAR)0 5305 y FB(A)m(CTION)44 b
+FD(:)h(Returns)31 b(the)i(b)s(earing)e(\(p)s(osition)f(angle\))j(of)g
+(one)g(p)s(oin)m(t)e(on)h(a)h(sphere)f(relativ)m(e)g(to)h(another)227
+5418 y(\(double)d(precision\).)0 5606 y FB(CALL)45 b
+FD(:)77 b Ft(D)47 b(=)h(sla_DBEAR)d(\(A1,)i(B1,)f(A2,)h(B2\))p
+eop
+%%Page: 34 36
+34 35 bop 0 52 a FD(34)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(A1,B1)484 b FB(D)565 b FD(spherical)29 b(co)s(ordinates)h(of)g
+(one)h(p)s(oin)m(t)277 610 y Fq(A2,B2)484 b FB(D)565
+b FD(spherical)29 b(co)s(ordinates)h(of)g(the)h(other)g(p)s(oin)m(t)0
+889 y FB(RETURNED)46 b FD(:)277 1060 y Fq(sla)p Ft(_)p
+Fq(DBEAR)253 b FB(D)565 b FD(b)s(earing)29 b(from)h(\014rst)g(p)s(oin)m
+(t)f(to)i(second)0 1347 y FB(NOTES)44 b FD(:)311 1524
+y(1.)i(The)30 b(spherical)f(co)s(ordinates)h(are)h([)15
+b Fl(\013;)g(\016)20 b FD(],)31 b([)p Fl(\025;)15 b(\036)p
+FD(])31 b Fq(etc.)p FD(,)f(in)f(radians.)311 1660 y(2.)46
+b(The)33 b(result)f(is)h(the)h(b)s(earing)e(\(p)s(osition)f(angle\),)k
+(in)d(radians,)h(of)h(p)s(oin)m(t)e([A2,B2])k(as)d(seen)h(from)427
+1773 y(p)s(oin)m(t)j([A1,B1].)65 b(It)38 b(is)f(in)g(the)h(range)g
+Fo(\006)p Fl(\031)s FD(.)63 b(The)37 b(sense)h(is)f(suc)m(h)h(that)g
+(if)f([A2,B2])j(is)d(a)h(small)427 1885 y(distance)f(due)f(east)i(of)g
+([A1,B1])h(the)e(result)f(is)g(ab)s(out)h(+)p Fl(\031)s(=)p
+FD(2.)61 b(Zero)37 b(is)f(returned)g(if)g(the)h(t)m(w)m(o)427
+1998 y(p)s(oin)m(ts)30 b(are)g(coinciden)m(t.)311 2134
+y(3.)46 b(If)32 b(either)g(B-co)s(ordinate)h(is)f(outside)f(the)i
+(range)g Fo(\006)p Fl(\031)s(=)p FD(2,)g(the)g(result)e(ma)m(y)i
+(corresp)s(ond)f(to)h(\\the)427 2247 y(long)d(w)m(a)m(y)i(round".)311
+2382 y(4.)46 b(The)38 b(routine)g(sla)p Ft(_)p FD(DP)-8
+b(A)e(V)39 b(p)s(erforms)e(an)h(equiv)-5 b(alen)m(t)38
+b(function)f(except)j(that)f(the)g(p)s(oin)m(ts)e(are)427
+2495 y(sp)s(eci\014ed)29 b(in)g(the)i(form)e(of)i(Cartesian)f(v)m
+(ectors.)p 0 2595 3780 8 v 0 2708 a Fx(SLA)p Fn(_)p Fx(DBJIN)262
+b Fm(Deco)s(de)40 b(String)d(to)h(B/J)h(Ep)s(o)s(c)m(h)f(\(DP\))263
+b Fx(SLA)p Fn(_)p Fx(DBJIN)0 3059 y FB(A)m(CTION)44 b
+FD(:)64 b(Deco)s(de)42 b(a)h(c)m(haracter)g(string)e(in)m(to)h(a)g
+(DOUBLE)g(PRECISION)f(n)m(um)m(b)s(er,)i(with)e(sp)s(ecial)227
+3172 y(pro)m(vision)21 b(for)h(Besselian)f(and)h(Julian)e(ep)s(o)s(c)m
+(hs.)37 b(The)22 b(string)f(syn)m(tax)i(is)e(as)h(for)g(sla)p
+Ft(_)p FD(DFL)-8 b(TIN,)23 b(pre\014xed)227 3285 y(b)m(y)31
+b(an)f(optional)f(`B')j(or)e(`J'.)0 3472 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DBJIN)g(\(STRING,)f(NSTRT,)h(DRESLT,)g
+(J1,)h(J2\))0 3779 y FB(GIVEN)e FD(:)277 3925 y Fq(STRING)381
+b FB(C)569 b FD(string)29 b(con)m(taining)h(\014eld)f(to)i(b)s(e)f
+(deco)s(ded)277 4038 y Fq(NSTR)-7 b(T)428 b FB(I)605
+b FD(p)s(oin)m(ter)30 b(to)h(\014rst)e(c)m(haracter)j(of)f(\014eld)e
+(in)g(string)0 4317 y FB(RETURNED)46 b FD(:)277 4463
+y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(incremen)m(ted)30
+b(past)h(the)f(deco)s(ded)g(\014eld)277 4575 y Fq(DRESL)-7
+b(T)373 b FB(D)565 b FD(result)277 4688 y Fq(J1)642 b
+FB(I)605 b FD(DFL)-8 b(TIN)31 b(status:)1752 4801 y Fo(\000)p
+FD(1)g(=)f Fo(\000)p FD(OK)1825 4914 y(0)h(=)f(+OK)1825
+5027 y(1)h(=)f(n)m(ull)e(\014eld)1825 5140 y(2)j(=)f(error)277
+5253 y Fq(J2)642 b FB(I)605 b FD(syn)m(tax)31 b(\015ag:)1825
+5366 y(0)g(=)f(normal)f(DFL)-8 b(TIN)31 b(syn)m(tax)1825
+5479 y(1)g(=)f(`B')h(or)f(`b')1825 5592 y(2)h(=)f(`J')g(or)g(`j')p
+eop
+%%Page: 35 37
+35 36 bop 0 52 a Fw(SUN/67.70)3252 b FD(35)0 351 y FB(NOTES)44
+b FD(:)311 532 y(1.)i(The)27 b(purp)s(ose)f(of)i(the)g(syn)m(tax)g
+(extensions)f(is)g(to)h(help)e(cop)s(e)i(with)e(mixed)h(FK4)h(and)e
+(FK5)j(data,)427 645 y(allo)m(wing)g(\014elds)g(suc)m(h)h(as)h(`B1950')
+i(or)d(`J2000')j(to)e(b)s(e)e(deco)s(ded.)311 785 y(2.)46
+b(In)30 b(addition)e(to)i(the)h(syn)m(tax)f(accepted)i(b)m(y)d(sla)p
+Ft(_)p FD(DFL)-8 b(TIN,)31 b(the)f(follo)m(wing)e(t)m(w)m(o)k
+(extensions)d(are)427 898 y(recognized)i(b)m(y)f(sla)p
+Ft(_)p FD(DBJIN:)436 1037 y(\(a\))46 b(A)31 b(v)-5 b(alid)28
+b(non-n)m(ull)h(\014eld)f(preceded)j(b)m(y)f(the)g(c)m(haracter)i(`B')g
+(\(or)e(`b'\))h(is)e(accepted.)431 1164 y(\(b\))45 b(A)31
+b(v)-5 b(alid)28 b(non-n)m(ull)h(\014eld)f(preceded)j(b)m(y)f(the)g(c)m
+(haracter)i(`J')f(\(or)g(`j'\))g(is)e(accepted.)311 1303
+y(3.)46 b(The)33 b(calling)e(program)h(is)g(told)g(of)h(the)g(`B')h(or)
+e(`J')h(through)f(an)h(supplemen)m(tary)e(status)i(argu-)427
+1416 y(men)m(t.)41 b(The)30 b(rest)h(of)f(the)h(argumen)m(ts)g(are)f
+(as)h(for)f(sla)p Ft(_)p FD(DFL)-8 b(TIN.)p 0 1529 3780
+8 v 0 1642 a Fx(SLA)p Fn(_)p Fx(DC62S)357 b Fm(Cartesian)37
+b(6-V)-10 b(ector)37 b(to)h(Spherical)356 b Fx(SLA)p
+Fn(_)p Fx(DC62S)0 1993 y FB(A)m(CTION)44 b FD(:)38 b(Con)m(v)m(ersion)
+25 b(of)g(p)s(osition)f(&)h(v)m(elo)s(cit)m(y)g(in)f(Cartesian)h(co)s
+(ordinates)g(to)h(spherical)e(co)s(ordinates)227 2106
+y(\(double)30 b(precision\).)0 2293 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_DC62S)g(\(V,)h(A,)g(B,)g(R,)g(AD,)g(BD,)g(RD\))0
+2617 y FB(GIVEN)e FD(:)277 2788 y Fq(V)668 b FB(D\(6\))431
+b FD([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43 b Fl(x)r(;)32
+b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20 b FD(])0
+3105 y FB(RETURNED)46 b FD(:)277 3251 y Fq(A)668 b FB(D)565
+b FD(longitude)29 b(\(radians\))277 3364 y Fq(B)672 b
+FB(D)565 b FD(latitude)30 b(\(radians\))277 3477 y Fq(R)670
+b FB(D)565 b FD(radial)29 b(co)s(ordinate)277 3590 y
+Fq(AD)599 b FB(D)565 b FD(longitude)29 b(deriv)-5 b(ativ)m(e)30
+b(\(radians)f(p)s(er)h(unit)f(time\))277 3703 y Fq(BD)603
+b FB(D)565 b FD(latitude)30 b(deriv)-5 b(ativ)m(e)29
+b(\(radians)h(p)s(er)f(unit)g(time\))277 3816 y Fq(RD)601
+b FB(D)565 b FD(radial)29 b(deriv)-5 b(ativ)m(e)p 0 3945
+V 0 4058 a Fx(SLA)p Fn(_)p Fx(DCC2S)561 b Fm(Cartesian)37
+b(to)h(Spherical)561 b Fx(SLA)p Fn(_)p Fx(DCC2S)0 4408
+y FB(A)m(CTION)44 b FD(:)c(Cartesian)30 b(co)s(ordinates)g(to)i
+(spherical)c(co)s(ordinates)i(\(double)f(precision\).)0
+4596 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DCC2S)g(\(V,)h(A,)g(B\))
+0 4919 y FB(GIVEN)e FD(:)277 5091 y Fq(V)668 b FB(D\(3\))431
+b FD([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(])30 b(v)m(ector)0
+5408 y FB(RETURNED)46 b FD(:)277 5579 y Fq(A,B)576 b
+FB(D)565 b FD(spherical)29 b(co)s(ordinates)h(in)f(radians)p
+eop
+%%Page: 36 38
+36 37 bop 0 52 a FD(36)0 351 y FB(NOTES)44 b FD(:)311
+545 y(1.)i(The)d(spherical)f(co)s(ordinates)i(are)g(longitude)e(\(+v)m
+(e)i(an)m(ticlo)s(c)m(kwise)g(lo)s(oking)e(from)h(the)h(+v)m(e)427
+658 y(latitude)38 b(p)s(ole\))f(and)h(latitude.)64 b(The)37
+b(Cartesian)h(co)s(ordinates)g(are)h(righ)m(t)f(handed,)h(with)e(the)
+427 771 y Fq(x)p FD(-axis)31 b(at)g(zero)g(longitude)e(and)h(latitude,)
+f(and)h(the)h Fq(z)p FD(-axis)f(at)h(the)g(+v)m(e)f(latitude)g(p)s
+(ole.)311 920 y(2.)46 b(If)30 b(V)h(is)e(n)m(ull,)g(zero)i(A)f(and)g(B)
+h(are)g(returned.)311 1070 y(3.)46 b(A)m(t)32 b(either)d(p)s(ole,)h
+(zero)h(A)g(is)e(returned.)p 0 1209 3780 8 v 0 1322 a
+Fx(SLA)p Fn(_)p Fx(DCMPF)558 b Fm(In)m(terpret)37 b(Linear)h(Fit)559
+b Fx(SLA)p Fn(_)p Fx(DCMPF)0 1672 y FB(A)m(CTION)44 b
+FD(:)c(Decomp)s(ose)31 b(an)e([)15 b Fl(x;)g(y)k FD(])30
+b(linear)e(\014t)h(in)m(to)h(its)f(constituen)m(t)h(parameters:)41
+b(zero)30 b(p)s(oin)m(ts,)f(scales,)227 1785 y(nonp)s(erp)s
+(endicularit)m(y)d(and)k(orien)m(tation.)0 1973 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DCMPF)g(\(COEFFS,XZ,YZ,XS,YS,PER)o(P,OR)o
+(IEN)o(T\))0 2332 y FB(GIVEN)f FD(:)277 2504 y Fq(COEFFS)370
+b FB(D\(6\))431 b FD(transformation)30 b(co)s(e\016cien)m(ts)h(\(see)g
+(note\))0 2882 y FB(RETURNED)46 b FD(:)277 3028 y Fq(XZ)612
+b FB(D)565 b Fq(x)31 b FD(zero)g(p)s(oin)m(t)277 3141
+y Fq(YZ)612 b FB(D)565 b Fq(y)31 b FD(zero)g(p)s(oin)m(t)277
+3254 y Fq(XS)617 b FB(D)565 b Fq(x)31 b FD(scale)277
+3366 y Fq(YS)617 b FB(D)565 b Fq(y)31 b FD(scale)277
+3479 y Fq(PERP)484 b FB(D)565 b FD(nonp)s(erp)s(endicularit)m(y)26
+b(\(radians\))277 3592 y Fq(ORIENT)370 b FB(D)565 b FD(orien)m(tation)
+31 b(\(radians\))0 3962 y FB(NOTES)44 b FD(:)311 4156
+y(1.)i(The)30 b(mo)s(del)f(relates)h(t)m(w)m(o)h(sets)g(of)f([)15
+b Fl(x;)g(y)k FD(])30 b(co)s(ordinates)f(as)i(follo)m(ws.)39
+b(Naming)30 b(the)g(six)f(elemen)m(ts)427 4269 y(of)23
+b(COEFFS)g Fl(a;)15 b(b;)g(c;)g(d;)g(e)25 b FD(&)e Fl(f)10
+b FD(,)24 b(the)f(mo)s(del)f(transforms)g(co)s(ordinates)g([)p
+Fl(x)2922 4283 y Fu(1)2962 4269 y Fl(;)15 b(y)3047 4283
+y Fu(1)3102 4269 y FD(])23 b(in)m(to)g(co)s(ordinates)427
+4382 y([)p Fl(x)504 4396 y Fu(2)544 4382 y Fl(;)15 b(y)629
+4396 y Fu(2)683 4382 y FD(])31 b(as)g(follo)m(ws:)597
+4531 y Fl(x)649 4545 y Fu(2)714 4531 y FD(=)25 b Fl(a)20
+b FD(+)g Fl(bx)1060 4545 y Fu(1)1120 4531 y FD(+)g Fl(cy)1295
+4545 y Fu(1)597 4644 y Fl(y)642 4658 y Fu(2)707 4644
+y FD(=)k Fl(d)d FD(+)f Fl(ex)1055 4658 y Fu(1)1115 4644
+y FD(+)g Fl(f)10 b(y)1306 4658 y Fu(1)427 4793 y FD(The)30
+b(sla)p Ft(_)p FD(DCMPF)g(routine)g(decomp)s(oses)g(this)f
+(transformation)h(in)m(to)h(four)e(steps:)436 4943 y(\(a\))46
+b(Zero)31 b(p)s(oin)m(ts:)752 5074 y Fl(x)804 5041 y
+Fp(0)852 5074 y FD(=)25 b Fl(x)1000 5088 y Fu(1)1060
+5074 y FD(+)20 b(XZ)752 5187 y Fl(y)800 5154 y Fp(0)848
+5187 y FD(=)25 b Fl(y)989 5201 y Fu(1)1048 5187 y FD(+)20
+b(YZ)431 5318 y(\(b\))45 b(Scales:)752 5449 y Fl(x)804
+5416 y Fp(00)871 5449 y FD(=)25 b Fl(x)1019 5416 y Fp(0)1043
+5449 y FD(XS)752 5562 y Fl(y)800 5529 y Fp(00)867 5562
+y FD(=)g Fl(y)1011 5529 y Fp(0)1034 5562 y FD(YS)441
+5693 y(\(c\))46 b(Nonp)s(erp)s(endicularit)m(y:)p eop
+%%Page: 37 39
+37 38 bop 0 52 a Fw(SUN/67.70)3252 b FD(37)752 351 y
+Fl(x)804 318 y Fp(000)891 351 y FD(=)25 b(+)p Fl(x)1110
+318 y Fp(00)1167 351 y FD(cos)16 b(PERP)o Fl(=)p FD(2)21
+b(+)f Fl(y)1806 318 y Fp(00)1864 351 y FD(sin)13 b(PERP)p
+Fl(=)p FD(2)752 464 y Fl(y)800 431 y Fp(000)886 464 y
+FD(=)25 b(+)p Fl(x)1105 431 y Fp(00)1163 464 y FD(sin)13
+b(PERP)p Fl(=)p FD(2)21 b(+)f Fl(y)1792 431 y Fp(00)1849
+464 y FD(cos)c(PERP)p Fl(=)p FD(2)431 596 y(\(d\))45
+b(Orien)m(tation:)752 728 y Fl(x)804 742 y Fu(2)868 728
+y FD(=)25 b(+)p Fl(x)1087 695 y Fp(000)1164 728 y FD(cos)16
+b(ORIENT)j(+)h Fl(y)1826 695 y Fp(000)1903 728 y FD(sin)13
+b(ORIENT)752 841 y Fl(y)797 855 y Fu(2)861 841 y FD(=)25
+b Fo(\000)p Fl(x)1080 808 y Fp(000)1156 841 y FD(sin)14
+b(ORIENT)20 b(+)f Fl(y)1808 808 y Fp(000)1885 841 y FD(cos)d(ORIENT)311
+992 y(2.)46 b(See)31 b(also)f(sla)p Ft(_)p FD(FITXY,)g(sla)p
+Ft(_)p FD(PXY,)g(sla)p Ft(_)p FD(INVF,)h(sla)p Ft(_)p
+FD(XY2XY.)p 0 1135 3780 8 v 0 1248 a Fx(SLA)p Fn(_)p
+Fx(DCS2C)561 b Fm(Spherical)38 b(to)g(Cartesian)560 b
+Fx(SLA)p Fn(_)p Fx(DCS2C)0 1598 y FB(A)m(CTION)44 b FD(:)c(Spherical)29
+b(co)s(ordinates)h(to)h(Cartesian)f(co)s(ordinates)g(\(double)f
+(precision\).)0 1786 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DCS2C)g(\(A,)h(B,)g(V\))0 2151 y FB(GIVEN)e FD(:)277
+2322 y Fq(A,B)576 b FB(D)565 b FD(spherical)29 b(co)s(ordinates)h(in)f
+(radians:)39 b([)15 b Fl(\013;)g(\016)20 b FD(])31 b
+Fq(etc.)0 2710 y FB(RETURNED)46 b FD(:)277 2881 y Fq(V)668
+b FB(D\(3\))431 b FD([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(])30
+b(unit)f(v)m(ector)0 3268 y FB(NOTE)44 b FD(:)65 b(The)42
+b(spherical)f(co)s(ordinates)i(are)g(longitude)e(\(+v)m(e)i(an)m(ticlo)
+s(c)m(kwise)g(lo)s(oking)e(from)h(the)h(+v)m(e)227 3381
+y(latitude)33 b(p)s(ole\))g(and)g(latitude.)50 b(The)33
+b(Cartesian)h(co)s(ordinates)f(are)h(righ)m(t)f(handed,)h(with)f(the)h
+Fq(x)p FD(-axis)227 3494 y(at)d(zero)h(longitude)d(and)g(latitude,)h
+(and)g(the)g Fq(z)p FD(-axis)h(at)g(the)f(+v)m(e)h(latitude)f(p)s(ole.)
+p 0 3637 V 0 3750 a Fx(SLA)p Fn(_)p Fx(DD2TF)553 b Fm(Da)m(ys)38
+b(to)g(Hour,Min,Sec)552 b Fx(SLA)p Fn(_)p Fx(DD2TF)0
+4100 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32 b(an)e(in)m(terv)-5
+b(al)29 b(in)h(da)m(ys)g(in)m(to)g(hours,)g(min)m(utes,)g(seconds)g
+(\(double)f(precision\).)0 4288 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_DD2TF)g(\(NDP,)g(DAYS,)g(SIGN,)h(IHMSF\))0
+4653 y FB(GIVEN)e FD(:)277 4799 y Fq(NDP)537 b FB(I)605
+b FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e(places)h(of)h(seconds)277
+4912 y Fq(D)n(A)-7 b(YS)489 b FB(D)565 b FD(in)m(terv)-5
+b(al)30 b(in)f(da)m(ys)0 5290 y FB(RETURNED)46 b FD(:)277
+5437 y Fq(SIGN)512 b FB(C)569 b FD(`+')31 b(or)f(`)p
+Fo(\000)p FD(')277 5549 y Fq(IHMSF)441 b FB(I\(4\))471
+b FD(hours,)30 b(min)m(utes,)f(seconds,)i(fraction)p
+eop
+%%Page: 38 40
+38 39 bop 0 52 a FD(38)0 351 y FB(NOTES)44 b FD(:)311
+532 y(1.)i(NDP)31 b(less)f(than)g(zero)h(is)e(in)m(terpreted)h(as)h
+(zero.)311 672 y(2.)46 b(The)34 b(largest)g(useful)e(v)-5
+b(alue)34 b(for)g(NDP)g(is)f(determined)g(b)m(y)h(the)g(size)g(of)g(D)m
+(A)-8 b(YS,)36 b(the)e(format)g(of)427 785 y(DOUBLE)h(PRECISION)f
+(\015oating-p)s(oin)m(t)g(n)m(um)m(b)s(ers)f(on)i(the)g(target)i(mac)m
+(hine,)e(and)g(the)g(risk)427 898 y(of)29 b(o)m(v)m(er\015o)m(wing)g
+(IHMSF\(4\).)42 b(On)27 b(some)i(arc)m(hitectures,)h(for)e(D)m(A)-8
+b(YS)30 b(up)e(to)h(1D0,)h(the)f(a)m(v)-5 b(ailable)427
+1010 y(\015oating-p)s(oin)m(t)21 b(precision)f(corresp)s(onds)h
+(roughly)f(to)j(NDP=12.)39 b(Ho)m(w)m(ev)m(er,)25 b(the)d(practical)g
+(limit)427 1123 y(is)30 b(NDP=9,)h(set)g(b)m(y)f(the)h(capacit)m(y)g
+(of)g(a)g(t)m(ypical)f(32-bit)g(IHMSF\(4\).)311 1263
+y(3.)46 b(The)30 b(absolute)g(v)-5 b(alue)29 b(of)i(D)m(A)-8
+b(YS)31 b(ma)m(y)g(exceed)g(1D0.)42 b(In)29 b(cases)i(where)f(it)f(do)s
+(es)h(not,)h(it)e(is)h(up)f(to)427 1376 y(the)g(caller)e(to)i(test)g
+(for)f(and)g(handle)e(the)j(case)g(where)f(D)m(A)-8 b(YS)29
+b(is)e(v)m(ery)i(nearly)e(1D0)j(and)d(rounds)427 1489
+y(up)j(to)h(24)g(hours,)e(b)m(y)i(testing)f(for)g(IHMSF\(1\)=24)j(and)c
+(setting)i(IHMSF\(1-4\))h(to)f(zero.)p 0 1606 3780 8
+v 0 1719 a Fx(SLA)p Fn(_)p Fx(DE2H)885 b Fg(h;)20 b(\016)44
+b Fm(to)38 b(Az,El)884 b Fx(SLA)p Fn(_)p Fx(DE2H)0 2070
+y FB(A)m(CTION)44 b FD(:)c(Equatorial)30 b(to)h(horizon)f(co)s
+(ordinates)g(\(double)f(precision\).)0 2257 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DE2H)g(\(HA,)h(DEC,)f(PHI,)h(AZ,)g(EL\))0
+2580 y FB(GIVEN)e FD(:)277 2726 y Fq(HA)600 b FB(D)565
+b FD(hour)30 b(angle)g(\(radians\))277 2839 y Fq(DEC)540
+b FB(D)565 b FD(declination)29 b(\(radians\))277 2952
+y Fq(PHI)571 b FB(D)565 b FD(latitude)30 b(\(radians\))0
+3259 y FB(RETURNED)46 b FD(:)277 3405 y Fq(AZ)612 b FB(D)565
+b FD(azim)m(uth)30 b(\(radians\))277 3518 y Fq(EL)617
+b FB(D)565 b FD(elev)-5 b(ation)30 b(\(radians\))0 3825
+y FB(NOTES)44 b FD(:)311 4006 y(1.)i(Azim)m(uth)28 b(is)g(returned)f
+(in)g(the)i(range)g(0)q Fo(\000)q FD(2)p Fl(\031)s FD(;)h(north)e(is)g
+(zero,)i(and)e(east)h(is)f(+)p Fl(\031)s(=)p FD(2.)41
+b(Elev)-5 b(ation)27 b(is)427 4119 y(returned)i(in)h(the)g(range)h
+Fo(\006)p Fl(\031)s FD(.)311 4258 y(2.)46 b(The)32 b(latitude)f(m)m
+(ust)i(b)s(e)e(geo)s(detic.)48 b(In)31 b(critical)h(applications,)f
+(corrections)i(for)f(p)s(olar)f(motion)427 4371 y(should)e(b)s(e)g
+(applied.)311 4511 y(3.)46 b(In)36 b(some)h(applications)e(it)i(will)d
+(b)s(e)i(imp)s(ortan)m(t)g(to)h(sp)s(ecify)f(the)h(correct)h(t)m(yp)s
+(e)f(of)g(hour)e(angle)427 4624 y(and)f(declination)f(in)g(order)h(to)h
+(pro)s(duce)e(the)i(required)d(t)m(yp)s(e)j(of)g(azim)m(uth)f(and)f
+(elev)-5 b(ation.)53 b(In)427 4737 y(particular,)25 b(it)f(ma)m(y)h(b)s
+(e)f(imp)s(ortan)m(t)g(to)h(distinguish)c(b)s(et)m(w)m(een)26
+b(elev)-5 b(ation)24 b(as)h(a\013ected)h(b)m(y)f(refrac-)427
+4850 y(tion,)g(whic)m(h)d(w)m(ould)h(require)f(the)i
+Fq(observe)-5 b(d)24 b FD([)15 b Fl(h;)g(\016)20 b FD(],)26
+b(and)d(the)g(elev)-5 b(ation)24 b Fq(in)i(vacuo)p FD(,)f(whic)m(h)e(w)
+m(ould)427 4962 y(require)35 b(the)h Fq(top)-5 b(o)g(c)g(entric)39
+b FD([)15 b Fl(h;)g(\016)20 b FD(].)59 b(If)35 b(the)i(e\013ects)g(of)f
+(diurnal)d(ab)s(erration)j(can)g(b)s(e)g(neglected,)427
+5075 y(the)31 b Fq(app)-5 b(ar)g(ent)33 b FD([)15 b Fl(h;)g(\016)20
+b FD(])31 b(ma)m(y)g(b)s(e)f(used)f(instead)h(of)g(the)h(top)s(o)s(cen)
+m(tric)f([)15 b Fl(h;)g(\016)21 b FD(].)311 5215 y(4.)46
+b(No)31 b(range)g(c)m(hec)m(king)g(of)g(argumen)m(ts)f(is)g(carried)f
+(out.)311 5354 y(5.)46 b(In)28 b(applications)e(whic)m(h)i(in)m(v)m
+(olv)m(e)g(man)m(y)h(suc)m(h)f(calculations,)g(rather)g(than)g(calling)
+f(the)h(presen)m(t)427 5467 y(routine)i(it)g(will)e(b)s(e)i(more)g
+(e\016cien)m(t)h(to)h(use)e(inline)d(co)s(de,)k(ha)m(ving)g(previously)
+d(computed)i(\014xed)427 5580 y(terms)g(suc)m(h)f(as)h(sine)f(and)g
+(cosine)g(of)h(latitude,)f(and)g(\(for)h(trac)m(king)g(a)g(star\))g
+(sine)f(and)g(cosine)g(of)427 5693 y(declination.)p eop
+%%Page: 39 41
+39 40 bop 0 52 a Fw(SUN/67.70)3252 b FD(39)p 0 267 3780
+8 v 0 380 a Fx(SLA)p Fn(_)p Fx(DEULER)168 b Fm(Euler)37
+b(Angles)h(to)g(Rotation)f(Matrix)166 b Fx(SLA)p Fn(_)p
+Fx(DEULER)0 730 y FB(A)m(CTION)44 b FD(:)k(F)-8 b(orm)35
+b(a)f(rotation)h(matrix)e(from)h(the)g(Euler)f(angles)h({)h(three)f
+(successiv)m(e)g(rotations)h(ab)s(out)227 843 y(sp)s(eci\014ed)29
+b(Cartesian)h(axes)h(\(double)e(precision\).)0 1031 y
+FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DEULER)f(\(ORDER,)h(PHI,)h
+(THETA,)f(PSI,)h(RMAT\))0 1326 y FB(GIVEN)e FD(:)277
+1472 y Fq(ORDER)403 b FB(C)569 b FD(sp)s(eci\014es)29
+b(ab)s(out)h(whic)m(h)f(axes)i(the)g(rotations)g(o)s(ccur)277
+1585 y Fq(PHI)571 b FB(D)565 b FD(1st)31 b(rotation)g(\(radians\))277
+1698 y Fq(THET)-7 b(A)415 b FB(D)565 b FD(2nd)30 b(rotation)h
+(\(radians\))277 1811 y Fq(PSI)588 b FB(D)565 b FD(3rd)30
+b(rotation)h(\(radians\))0 2070 y FB(RETURNED)46 b FD(:)277
+2241 y Fq(RMA)-7 b(T)462 b FB(D\(3,3\))350 b FD(rotation)31
+b(matrix)0 2509 y FB(NOTES)44 b FD(:)311 2683 y(1.)i(A)30
+b(rotation)h(is)e(p)s(ositiv)m(e)f(when)h(the)h(reference)h(frame)f
+(rotates)h(an)m(ticlo)s(c)m(kwise)e(as)i(seen)f(lo)s(oking)427
+2796 y(to)m(w)m(ards)h(the)g(origin)e(from)h(the)g(p)s(ositiv)m(e)g
+(region)g(of)g(the)h(sp)s(eci\014ed)d(axis.)311 2928
+y(2.)46 b(The)25 b(c)m(haracters)i(of)e(ORDER)g(de\014ne)g(whic)m(h)f
+(axes)i(the)f(three)h(successiv)m(e)f(rotations)h(are)f(ab)s(out.)427
+3041 y(A)40 b(t)m(ypical)e(v)-5 b(alue)39 b(is)f(`ZXZ',)h(indicating)e
+(that)j(RMA)-8 b(T)40 b(is)e(to)i(b)s(ecome)f(the)h(direction)e(cosine)
+427 3154 y(matrix)29 b(corresp)s(onding)f(to)j(rotations)f(of)g(the)g
+(reference)g(frame)g(through)f(PHI)g(radians)g(ab)s(out)427
+3267 y(the)21 b(old)e Fq(z)p FD(-axis,)k(follo)m(w)m(ed)d(b)m(y)g(THET)
+-8 b(A)20 b(radians)f(ab)s(out)h(the)h(resulting)d Fq(x)p
+FD(-axis,)k(then)e(PSI)g(radians)427 3380 y(ab)s(out)30
+b(the)h(resulting)d Fq(z)p FD(-axis.)311 3512 y(3.)46
+b(The)34 b(axis)f(names)h(can)g(b)s(e)g(an)m(y)g(of)g(the)h(follo)m
+(wing,)e(in)g(an)m(y)h(order)g(or)g(com)m(bination:)47
+b(X,)34 b(Y,)h(Z,)427 3625 y(upp)s(ercase)30 b(or)g(lo)m(w)m(ercase,)i
+(1,)f(2,)g(3.)42 b(Normal)30 b(axis)g(lab)s(elling/n)m(um)m(b)s(ering)
+25 b(con)m(v)m(en)m(tions)32 b(apply;)427 3738 y(the)k
+Fq(xyz)g FD(\()p Fo(\021)f FD(123\))i(triad)e(is)g(righ)m(t-handed.)55
+b(Th)m(us,)37 b(the)f(`ZXZ')f(example)h(giv)m(en)f(ab)s(o)m(v)m(e)i
+(could)427 3851 y(b)s(e)f(written)f(`zxz')i(or)f(`313')i(\(or)f(ev)m
+(en)g(`ZxZ')e(or)h(`3xZ'\).)h(ORDER)f(is)f(terminated)h(b)m(y)g(length)
+427 3964 y(or)j(b)m(y)g(the)g(\014rst)f(unrecognized)g(c)m(haracter.)68
+b(F)-8 b(ew)m(er)40 b(than)f(three)g(rotations)g(are)g(acceptable,)427
+4077 y(in)g(whic)m(h)g(case)i(the)f(later)g(angle)g(argumen)m(ts)g(are)
+g(ignored.)69 b(Zero)39 b(rotations)i(pro)s(duces)d(the)427
+4190 y(iden)m(tit)m(y)30 b(RMA)-8 b(T.)p 0 4282 V 0 4395
+a Fx(SLA)p Fn(_)p Fx(DFL)d(TIN)150 b Fm(Deco)s(de)39
+b(a)f(Double)h(Precision)e(Num)m(b)s(er)150 b Fx(SLA)p
+Fn(_)p Fx(DFL)-11 b(TIN)0 4745 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m
+(ert)32 b(free-format)f(input)d(in)m(to)j(double)e(precision)f
+(\015oating)i(p)s(oin)m(t.)0 4933 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_DFLTIN)f(\(STRING,)h(NSTRT,)g(DRESLT,)g(JFLAG\))0
+5228 y FB(GIVEN)f FD(:)277 5374 y Fq(STRING)381 b FB(C)569
+b FD(string)29 b(con)m(taining)h(n)m(um)m(b)s(er)f(to)j(b)s(e)d(deco)s
+(ded)277 5487 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(p)s(oin)m(ter)30
+b(to)h(where)f(deco)s(ding)f(is)g(to)i(commence)277 5600
+y Fq(DRESL)-7 b(T)373 b FB(D)565 b FD(curren)m(t)30 b(v)-5
+b(alue)30 b(of)h(result)p eop
+%%Page: 40 42
+40 41 bop 0 52 a FD(40)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(adv)-5 b(anced)31
+b(to)g(next)f(n)m(um)m(b)s(er)277 610 y Fq(DRESL)-7 b(T)373
+b FB(D)565 b FD(result)277 723 y Fq(JFLA)n(G)436 b FB(I)605
+b FD(status:)65 b Fo(\000)p FD(1)43 b(=)f Fo(\000)p FD(OK,)f(0)i(=)f
+(+OK,)g(1)h(=)f(n)m(ull)e(result,)1658 836 y(2)31 b(=)f(error)0
+1174 y FB(NOTES)44 b FD(:)311 1359 y(1.)i(The)37 b(reason)h(sla)p
+Ft(_)p FD(DFL)-8 b(TIN)37 b(has)g(separate)h(`OK')f(status)h(v)-5
+b(alues)36 b(for)h(+)g(and)g Fo(\000)g FD(is)f(to)i(enable)427
+1472 y(min)m(us)28 b(zero)j(to)g(b)s(e)e(detected.)42
+b(This)28 b(is)g(of)i(crucial)f(imp)s(ortance)g(when)g(deco)s(ding)g
+(mixed-radix)427 1585 y(n)m(um)m(b)s(ers.)68 b(F)-8 b(or)40
+b(example,)j(an)c(angle)h(expressed)f(as)i(degrees,)i(arcmin)m(utes)c
+(and)g(arcseconds)427 1698 y(ma)m(y)31 b(ha)m(v)m(e)h(a)f(leading)e
+(min)m(us)f(sign)i(but)f(a)i(zero)g(degrees)g(\014eld.)311
+1842 y(2.)46 b(A)32 b(T)-8 b(AB)32 b(is)f(in)m(terpreted)g(as)h(a)g
+(space,)h(and)e(lo)m(w)m(ercase)i(c)m(haracters)g(are)f(in)m(terpreted)
+f(as)h(upp)s(er-)427 1955 y(case.)42 b Fq(n.b.)30 b FD(The)g(test)h
+(for)f(T)-8 b(AB)31 b(is)f(ASCI)s(I-sp)s(eci\014c.)311
+2098 y(3.)46 b(The)38 b(basic)f(format)h(is)f(the)h(sequence)h(of)f
+(\014elds)e Fo(\006)p Fl(n:nx)24 b Fo(\006)h Fl(n)p FD(,)40
+b(where)d Fo(\006)h FD(is)f(a)h(sign)f(c)m(haracter)427
+2211 y(`+')f(or)g(`)p Fo(\000)p FD(',)i Fl(n)e FD(means)f(a)i(string)e
+(of)h(decimal)f(digits,)h(`.')58 b(is)35 b(a)h(decimal)f(p)s(oin)m(t,)i
+(and)e Fl(x)p FD(,)j(whic)m(h)427 2324 y(indicates)30
+b(an)h(exp)s(onen)m(t,)h(means)f(`D')h(or)f(`E'.)h(V)-8
+b(arious)31 b(com)m(binations)f(of)h(these)h(\014elds)e(can)h(b)s(e)427
+2437 y(omitted,)g(and)f(em)m(b)s(edded)f(blanks)g(are)i(p)s(ermissible)
+26 b(in)j(certain)h(places.)311 2581 y(4.)46 b(Spaces:)506
+2725 y Fo(\017)g FD(Leading)30 b(spaces)h(are)g(ignored.)506
+2853 y Fo(\017)46 b FD(Em)m(b)s(edded)38 b(spaces)i(are)g(allo)m(w)m
+(ed)f(only)f(after)i(+,)i Fo(\000)p FD(,)g(D)d(or)h(E,)f(and)g(after)h
+(the)f(decimal)597 2966 y(p)s(oin)m(t)30 b(if)f(the)i(\014rst)e
+(sequence)i(of)f(digits)f(is)h(absen)m(t.)506 3095 y
+Fo(\017)46 b FD(T)-8 b(railing)38 b(spaces)i(are)h(ignored;)j(the)c
+(\014rst)f(signi\014es)f(end)h(of)h(deco)s(ding)f(and)g(subsequen)m(t)
+597 3207 y(ones)31 b(are)g(skipp)s(ed.)311 3351 y(5.)46
+b(Delimiters:)506 3495 y Fo(\017)g FD(An)m(y)32 b(c)m(haracter)h(other)
+f(than)f(+,)p Fo(\000)p FD(,0-9,.,D,E)j(or)e(space)g(ma)m(y)g(b)s(e)f
+(used)g(to)h(signal)e(the)i(end)597 3608 y(of)f(the)f(n)m(um)m(b)s(er)f
+(and)h(terminate)h(deco)s(ding.)506 3736 y Fo(\017)46
+b FD(Comma)29 b(is)e(recognized)i(b)m(y)f(sla)p Ft(_)p
+FD(DFL)-8 b(TIN)28 b(as)h(a)g(sp)s(ecial)e(case;)j(it)e(is)g(skipp)s
+(ed,)e(lea)m(ving)i(the)597 3849 y(p)s(oin)m(ter)i(on)g(the)g(next)h(c)
+m(haracter.)42 b(See)31 b(13,)g(b)s(elo)m(w.)506 3978
+y Fo(\017)46 b FD(Deco)s(ding)31 b(will)c(in)i(all)h(cases)h(terminate)
+f(if)g(end)f(of)i(string)e(is)h(reac)m(hed.)311 4122
+y(6.)46 b(Both)31 b(signs)f(are)g(optional.)40 b(The)30
+b(default)g(is)f(+.)311 4265 y(7.)46 b(The)30 b(man)m(tissa)g
+Fl(n:n)g FD(defaults)g(to)h(unit)m(y)-8 b(.)311 4409
+y(8.)46 b(The)30 b(exp)s(onen)m(t)h Fl(x)5 b Fo(\006)g
+Fl(n)29 b FD(defaults)h(to)h(`D0'.)311 4553 y(9.)46 b(The)30
+b(strings)f(of)i(decimal)e(digits)g(ma)m(y)i(b)s(e)f(of)g(an)m(y)h
+(length.)266 4697 y(10.)46 b(The)30 b(decimal)f(p)s(oin)m(t)h(is)f
+(optional)h(for)g(whole)g(n)m(um)m(b)s(ers.)266 4841
+y(11.)46 b(A)28 b Fq(nul)5 b(l)30 b(r)-5 b(esult)37 b
+FD(o)s(ccurs)28 b(when)e(the)i(string)f(of)h(c)m(haracters)h(b)s(eing)d
+(deco)s(ded)h(do)s(es)h(not)g(b)s(egin)e(with)427 4954
+y(+,)p Fo(\000)p FD(,0-9,.,D)44 b(or)d(E,)g(or)g(consists)g(en)m
+(tirely)f(of)h(spaces.)74 b(When)41 b(this)f(condition)g(is)g
+(detected,)427 5067 y(JFLA)m(G)31 b(is)f(set)h(to)g(1)g(and)e(DRESL)-8
+b(T)30 b(is)g(left)g(un)m(touc)m(hed.)266 5210 y(12.)46
+b(NSTR)-8 b(T)30 b(=)g(1)h(for)f(the)g(\014rst)g(c)m(haracter)i(in)d
+(the)i(string.)266 5354 y(13.)46 b(On)21 b(return)f(from)h(sla)p
+Ft(_)p FD(DFL)-8 b(TIN,)21 b(NSTR)-8 b(T)21 b(is)f(set)i(ready)f(for)g
+(the)g(next)h(deco)s(de)f({)h(follo)m(wing)d(trail-)427
+5467 y(ing)31 b(blanks)g(and)g(an)m(y)h(comma.)47 b(If)31
+b(a)i(delimiter)c(other)j(than)g(comma)h(is)e(b)s(eing)f(used,)i(NSTR)
+-8 b(T)427 5580 y(m)m(ust)36 b(b)s(e)f(incremen)m(ted)g(b)s(efore)g
+(the)h(next)g(call)f(to)h(sla)p Ft(_)p FD(DFL)-8 b(TIN,)36
+b(otherwise)f(all)f(subsequen)m(t)427 5693 y(calls)c(will)e(return)h(a)
+i(n)m(ull)d(result.)p eop
+%%Page: 41 43
+41 42 bop 0 52 a Fw(SUN/67.70)3252 b FD(41)266 351 y(14.)46
+b(Errors)30 b(\(JFLA)m(G=2\))i(o)s(ccur)e(when:)506 491
+y Fo(\017)46 b FD(a)31 b(+,)f Fo(\000)p FD(,)h(D)f(or)h(E)f(is)f(left)h
+(unsatis\014ed;)f(or)506 617 y Fo(\017)46 b FD(the)30
+b(decimal)e(p)s(oin)m(t)h(is)f(presen)m(t)i(without)f(at)h(least)g(one)
+f(decimal)g(digit)f(b)s(efore)h(or)h(after)g(it;)597
+730 y(or)506 856 y Fo(\017)46 b FD(an)31 b(exp)s(onen)m(t)f(more)g
+(than)h(100)g(has)f(b)s(een)g(presen)m(ted.)266 996 y(15.)46
+b(When)31 b(an)f(error)h(has)f(b)s(een)g(detected,)j(NSTR)-8
+b(T)30 b(is)g(left)g(p)s(oin)m(ting)f(to)j(the)f(c)m(haracter)h(follo)m
+(wing)427 1109 y(the)41 b(last)g(one)g(used)g(b)s(efore)f(the)h(error)g
+(came)h(to)f(ligh)m(t.)72 b(This)39 b(ma)m(y)j(b)s(e)e(after)i(the)f(p)
+s(oin)m(t)f(at)427 1222 y(whic)m(h)g(a)h(more)f(sophisticated)g
+(program)h(could)e(ha)m(v)m(e)j(detected)g(the)f(error.)71
+b(F)-8 b(or)42 b(example,)427 1334 y(sla)p Ft(_)p FD(DFL)-8
+b(TIN)28 b(do)s(es)f(not)h(detect)h(that)f(`1D999')i(is)d(unacceptable)
+g(\(on)h(a)g(computer)f(where)h(this)427 1447 y(is)i(so\))h(un)m(til)d
+(the)j(en)m(tire)f(n)m(um)m(b)s(er)f(has)h(b)s(een)g(deco)s(ded.)266
+1587 y(16.)46 b(Certain)28 b(highly)f(unlik)m(ely)g(com)m(binations)h
+(of)h(man)m(tissa)g(and)f(exp)s(onen)m(t)h(can)h(cause)f(arithmetic)427
+1700 y(faults)j(during)e(the)i(deco)s(de,)i(in)d(some)i(cases)g
+(despite)e(the)i(fact)g(that)g(they)g(together)h(could)d(b)s(e)427
+1813 y(construed)f(as)h(a)g(v)-5 b(alid)28 b(n)m(um)m(b)s(er.)266
+1952 y(17.)46 b(Deco)s(ding)31 b(is)e(left)h(to)h(righ)m(t,)f(one)h
+(pass.)266 2092 y(18.)46 b(See)31 b(also)f(sla)p Ft(_)p
+FD(FLOTIN)f(and)h(sla)p Ft(_)p FD(INTIN.)p 0 2196 3780
+8 v 0 2309 a Fx(SLA)p Fn(_)p Fx(DH2E)885 b Fm(Az,El)38
+b(to)g Fg(h;)20 b(\016)890 b Fx(SLA)p Fn(_)p Fx(DH2E)0
+2659 y FB(A)m(CTION)44 b FD(:)c(Horizon)31 b(to)g(equatorial)f(co)s
+(ordinates)g(\(double)f(precision\).)0 2847 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DH2E)g(\(AZ,)h(EL,)f(PHI,)h(HA,)g(DEC\))0
+3170 y FB(GIVEN)e FD(:)277 3316 y Fq(AZ)612 b FB(D)565
+b FD(azim)m(uth)30 b(\(radians\))277 3429 y Fq(EL)617
+b FB(D)565 b FD(elev)-5 b(ation)30 b(\(radians\))277
+3542 y Fq(PHI)571 b FB(D)565 b FD(latitude)30 b(\(radians\))0
+3849 y FB(RETURNED)46 b FD(:)277 3995 y Fq(HA)600 b FB(D)565
+b FD(hour)30 b(angle)g(\(radians\))277 4108 y Fq(DEC)540
+b FB(D)565 b FD(declination)29 b(\(radians\))0 4416 y
+FB(NOTES)44 b FD(:)311 4597 y(1.)i(The)30 b(sign)g(con)m(v)m(en)m(tion)
+h(for)f(azim)m(uth)g(is)g(north)f(zero,)j(east)f(+)p
+Fl(\031)s(=)p FD(2.)311 4736 y(2.)46 b(HA)31 b(is)e(returned)h(in)f
+(the)h(range)h Fo(\006)p Fl(\031)s FD(.)40 b(Declination)30
+b(is)f(returned)h(in)f(the)h(range)h Fo(\006)p Fl(\031)s(=)p
+FD(2.)311 4876 y(3.)46 b(The)33 b(latitude)g(is)f(\(in)h(principle\))d
+(geo)s(detic.)51 b(In)33 b(critical)f(applications,)h(corrections)g
+(for)h(p)s(olar)427 4989 y(motion)c(should)f(b)s(e)g(applied)g(\(see)i
+(sla)p Ft(_)p FD(POLMO\).)311 5128 y(4.)46 b(In)34 b(some)g
+(applications)e(it)i(will)d(b)s(e)j(imp)s(ortan)m(t)f(to)i(sp)s(ecify)e
+(the)h(correct)h(t)m(yp)s(e)f(of)h(elev)-5 b(ation)34
+b(in)427 5241 y(order)42 b(to)h(pro)s(duce)f(the)g(required)f(t)m(yp)s
+(e)h(of)h([)15 b Fl(h;)g(\016)20 b FD(].)77 b(In)42 b(particular,)i(it)
+e(ma)m(y)h(b)s(e)e(imp)s(ortan)m(t)427 5354 y(to)f(distinguish)35
+b(b)s(et)m(w)m(een)k(the)g(elev)-5 b(ation)39 b(as)g(a\013ected)h(b)m
+(y)f(refraction,)i(whic)m(h)c(will)f(yield)h(the)427
+5467 y Fq(observe)-5 b(d)32 b FD([)15 b Fl(h;)g(\016)20
+b FD(],)31 b(and)e(the)i(elev)-5 b(ation)30 b Fq(in)j(vacuo)p
+FD(,)e(whic)m(h)e(will)f(yield)g(the)j Fq(top)-5 b(o)g(c)g(entric)33
+b FD([)15 b Fl(h;)g(\016)20 b FD(].)41 b(If)427 5580
+y(the)28 b(e\013ects)h(of)f(diurnal)d(ab)s(erration)i(can)h(b)s(e)f
+(neglected,)i(the)f(top)s(o)s(cen)m(tric)g([)15 b Fl(h;)g(\016)20
+b FD(])28 b(ma)m(y)g(b)s(e)f(used)427 5693 y(as)k(an)f(appro)m
+(ximation)f(to)j(the)e Fq(app)-5 b(ar)g(ent)33 b FD([)15
+b Fl(h;)g(\016)21 b FD(].)p eop
+%%Page: 42 44
+42 43 bop 0 52 a FD(42)311 351 y(5.)46 b(No)31 b(range)g(c)m(hec)m
+(king)g(of)g(argumen)m(ts)f(is)g(carried)f(out.)311 490
+y(6.)46 b(In)28 b(applications)e(whic)m(h)i(in)m(v)m(olv)m(e)g(man)m(y)
+h(suc)m(h)f(calculations,)g(rather)g(than)g(calling)f(the)h(presen)m(t)
+427 603 y(routine)i(it)g(will)e(b)s(e)i(more)g(e\016cien)m(t)h(to)h
+(use)e(inline)d(co)s(de,)k(ha)m(ving)g(previously)d(computed)i(\014xed)
+427 716 y(terms)h(suc)m(h)f(as)g(sine)g(and)f(cosine)h(of)h(latitude.)p
+0 809 3780 8 v 0 922 a Fx(SLA)p Fn(_)p Fx(DIMXV)375 b
+Fm(Apply)38 b(3D)h(Rev)m(erse)f(Rotation)375 b Fx(SLA)p
+Fn(_)p Fx(DIMXV)0 1273 y FB(A)m(CTION)44 b FD(:)c(Multiply)28
+b(a)j(3-v)m(ector)i(b)m(y)d(the)h(in)m(v)m(erse)f(of)g(a)h(rotation)g
+(matrix)f(\(double)f(precision\).)0 1460 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DIMXV)g(\(DM,)g(VA,)h(VB\))0
+1781 y FB(GIVEN)e FD(:)277 1927 y Fq(DM)585 b FB(D\(3,3\))350
+b FD(rotation)31 b(matrix)277 2040 y Fq(V)-9 b(A)609
+b FB(D\(3\))431 b FD(v)m(ector)32 b(to)f(b)s(e)f(rotated)0
+2343 y FB(RETURNED)46 b FD(:)277 2515 y Fq(VB)604 b FB(D\(3\))431
+b FD(result)29 b(v)m(ector)0 2826 y FB(NOTES)44 b FD(:)311
+3006 y(1.)i(This)29 b(routine)g(p)s(erforms)g(the)i(op)s(eration:)597
+3145 y FB(b)g FD(=)f FB(M)886 3112 y Ff(T)941 3145 y
+Fo(\001)p FB(a)427 3284 y FD(where)g FB(a)f FD(and)g
+FB(b)h FD(are)g(the)g(3-v)m(ectors)i(V)-10 b(A)30 b(and)f(VB)i(resp)s
+(ectiv)m(ely)-8 b(,)30 b(and)f FB(M)h FD(is)f(the)h(3)19
+b Fo(\002)g FD(3)30 b(matrix)427 3397 y(DM.)311 3536
+y(2.)46 b(The)34 b(main)g(function)f(of)i(this)e(routine)h(is)f(apply)g
+(an)i(in)m(v)m(erse)f(rotation;)j(under)c(these)i(circum-)427
+3649 y(stances,)d FB(M)e FD(is)g Fq(ortho)-5 b(gonal)p
+FD(,)34 b(with)29 b(its)g(in)m(v)m(erse)i(the)f(same)h(as)g(its)e
+(transp)s(ose.)311 3788 y(3.)46 b(T)-8 b(o)25 b(comply)f(with)g(the)h
+(ANSI)f(F)-8 b(ortran)26 b(77)f(standard,)g(V)-10 b(A)25
+b(and)f(VB)i(m)m(ust)e FB(not)h FD(b)s(e)f(the)h(same)g(ar-)427
+3901 y(ra)m(y)-8 b(.)40 b(The)25 b(routine)f(is,)i(in)e(fact,)k(co)s
+(ded)d(so)g(as)h(to)g(w)m(ork)f(prop)s(erly)f(on)h(the)g(V)-10
+b(AX)26 b(and)f(man)m(y)g(other)427 4014 y(systems)31
+b(ev)m(en)g(if)e(this)g(rule)g(is)h(violated,)g(something)g(that)h(is)e
+FB(not)p FD(,)i(ho)m(w)m(ev)m(er,)h(recommended.)p 0
+4125 V 0 4238 a Fx(SLA)p Fn(_)p Fx(DJCAL)347 b Fm(MJD)40
+b(to)e(Gregorian)e(for)i(Output)347 b Fx(SLA)p Fn(_)p
+Fx(DJCAL)0 4588 y FB(A)m(CTION)44 b FD(:)39 b(Mo)s(di\014ed)27
+b(Julian)f(Date)j(to)g(Gregorian)f(Calendar)f(Date,)k(expressed)c(in)g
+(a)i(form)e(con)m(v)m(enien)m(t)227 4701 y(for)22 b(formatting)g
+(messages)i(\(namely)e(rounded)e(to)j(a)g(sp)s(eci\014ed)d(precision,)j
+(and)e(with)g(the)i(\014elds)d(stored)227 4814 y(in)29
+b(a)i(single)e(arra)m(y\).)0 5001 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_DJCAL)g(\(NDP,)g(DJM,)h(IYMDF,)f(J\))0
+5322 y FB(GIVEN)f FD(:)277 5468 y Fq(NDP)537 b FB(I)605
+b FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e(places)h(of)h(da)m(ys)f(in)f
+(fraction)277 5581 y Fq(DJM)537 b FB(D)565 b FD(mo)s(di\014ed)28
+b(Julian)g(Date)k(\(JD)p Fo(\000)p FD(2400000.5\))p eop
+%%Page: 43 45
+43 44 bop 0 52 a Fw(SUN/67.70)3252 b FD(43)0 351 y FB(RETURNED)46
+b FD(:)277 497 y Fq(IYMDF)423 b FB(I\(4\))471 b FD(y)m(ear,)32
+b(mon)m(th,)e(da)m(y)-8 b(,)32 b(fraction)e(in)f(Gregorian)h(calendar)
+277 610 y Fq(J)688 b FB(I)605 b FD(status:)41 b(nonzero)31
+b(=)f(out)g(of)h(range)0 977 y FB(NOTES)44 b FD(:)311
+1169 y(1.)i(An)m(y)31 b(date)g(after)g(4701BC)h(Marc)m(h)f(1)g(is)e
+(accepted.)311 1318 y(2.)46 b(Large)31 b(NDP)g(v)-5 b(alues)30
+b(risk)f(in)m(ternal)g(o)m(v)m(er\015o)m(ws.)42 b(It)30
+b(is)g(t)m(ypically)f(safe)i(to)g(use)f(up)f(to)i(NDP=4.)0
+1693 y FB(REFERENCE)44 b FD(:)c(The)28 b(algorithm)f(is)h(adapted)g
+(from)h(Hatc)m(her,)h Fq(Q.)15 b(Jl.)g(R.)h(astr.)h(So)-5
+b(c.)29 b FD(\(1984\))i FB(25)p FD(,)e(53-55.)p 0 1836
+3780 8 v 0 1949 a Fx(SLA)p Fn(_)p Fx(DJCL)456 b Fm(MJD)40
+b(to)e(Y)-10 b(ear,Mon)m(th,Da)m(y)g(,F)g(rac)452 b Fx(SLA)p
+Fn(_)p Fx(DJCL)0 2299 y FB(A)m(CTION)44 b FD(:)c(Mo)s(di\014ed)29
+b(Julian)f(Date)k(to)f(Gregorian)g(y)m(ear,)g(mon)m(th,)g(da)m(y)-8
+b(,)31 b(and)f(fraction)g(of)h(a)f(da)m(y)-8 b(.)0 2487
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DJCL)g(\(DJM,)g(IY,)h(IM,)g
+(ID,)g(FD,)g(J\))0 2844 y FB(GIVEN)e FD(:)277 3016 y
+Fq(DJM)537 b FB(D)565 b FD(mo)s(di\014ed)28 b(Julian)g(Date)k(\(JD)p
+Fo(\000)p FD(2400000.5\))0 3390 y FB(RETURNED)46 b FD(:)277
+3536 y Fq(IY)633 b FB(I)605 b FD(y)m(ear)277 3649 y Fq(IM)619
+b FB(I)605 b FD(mon)m(th)277 3762 y Fq(ID)632 b FB(I)605
+b FD(da)m(y)277 3875 y Fq(FD)j FB(D)565 b FD(fraction)30
+b(of)h(da)m(y)277 3988 y Fq(J)688 b FB(I)605 b FD(status:)1795
+4101 y(0)30 b(=)g(OK)1722 4214 y Fo(\000)p FD(1)g(=)g(unacceptable)h
+(date)2085 4327 y(\(b)s(efore)g(4701)17 b(BC)30 b(Marc)m(h)h(1\))0
+4699 y FB(REFERENCE)44 b FD(:)c(The)28 b(algorithm)f(is)h(adapted)g
+(from)h(Hatc)m(her,)h Fq(Q.)15 b(Jl.)g(R.)h(astr.)h(So)-5
+b(c.)29 b FD(\(1984\))i FB(25)p FD(,)e(53-55.)p 0 4842
+V 0 4955 a Fx(SLA)p Fn(_)p Fx(DM2A)-15 b(V)250 b Fm(Rotation)36
+b(Matrix)h(to)h(Axial)f(V)-10 b(ector)251 b Fx(SLA)p
+Fn(_)p Fx(DM2A)-15 b(V)0 5305 y FB(A)m(CTION)44 b FD(:)49
+b(F)-8 b(rom)35 b(a)g(rotation)g(matrix,)g(determine)e(the)i(corresp)s
+(onding)e(axial)g(v)m(ector)k(\(double)c(preci-)227 5418
+y(sion\).)0 5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DM2AV)g(\(RMAT,)g(AXVEC\))p eop
+%%Page: 44 46
+44 45 bop 0 52 a FD(44)0 351 y FB(GIVEN)45 b FD(:)277
+523 y Fq(RMA)-7 b(T)462 b FB(D\(3,3\))350 b FD(rotation)31
+b(matrix)0 997 y FB(RETURNED)46 b FD(:)277 1169 y Fq(AXVEC)405
+b FB(D\(3\))431 b FD(axial)30 b(v)m(ector)i(\(radians\))0
+1643 y FB(NOTES)44 b FD(:)311 1876 y(1.)i(A)38 b(rotation)f(matrix)g
+(describ)s(es)e(a)j(rotation)g(ab)s(out)f(some)g(arbitrary)f(axis,)j
+(called)d(the)i(Euler)427 1989 y(axis.)53 b(The)34 b
+Fq(axial)k(ve)-5 b(ctor)35 b FD(returned)e(b)m(y)i(this)e(routine)h
+(has)g(the)h(same)g(direction)e(as)i(the)g(Euler)427
+2102 y(axis,)30 b(and)g(its)g(magnitude)f(is)h(the)g(amoun)m(t)h(of)g
+(rotation)f(in)g(radians.)311 2270 y(2.)46 b(The)35 b(magnitude)g(and)g
+(direction)f(of)i(the)g(axial)f(v)m(ector)i(can)f(b)s(e)f(separated)h
+(b)m(y)f(means)h(of)f(the)427 2383 y(routine)30 b(sla)p
+Ft(_)p FD(D)m(VN.)311 2552 y(3.)46 b(The)28 b(reference)g(frame)g
+(rotates)h(clo)s(c)m(kwise)e(as)i(seen)f(lo)s(oking)e(along)i(the)g
+(axial)f(v)m(ector)j(from)d(the)427 2665 y(origin.)311
+2833 y(4.)46 b(If)30 b(RMA)-8 b(T)31 b(is)e(n)m(ull,)g(so)i(is)e(the)i
+(result.)p 0 3011 3780 8 v 0 3124 a Fx(SLA)p Fn(_)p Fx(DMA)-11
+b(T)385 b Fm(Solv)m(e)38 b(Sim)m(ultaneous)d(Equations)385
+b Fx(SLA)p Fn(_)p Fx(DMA)-11 b(T)0 3474 y FB(A)m(CTION)44
+b FD(:)c(Matrix)31 b(in)m(v)m(ersion)e(and)h(solution)f(of)h(sim)m
+(ultaneous)f(equations)h(\(double)f(precision\).)0 3662
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DMAT)g(\(N,)h(A,)g(Y,)g(D,)g
+(JF,)g(IW\))0 4079 y FB(GIVEN)e FD(:)277 4225 y Fq(N)668
+b FB(I)605 b FD(n)m(um)m(b)s(er)29 b(of)i(unkno)m(wns)277
+4338 y Fq(A)668 b FB(D\(N,N\))290 b FD(matrix)277 4451
+y Fq(Y)668 b FB(D\(N\))401 b FD(v)m(ector)0 4917 y FB(RETURNED)46
+b FD(:)277 5063 y Fq(A)668 b FB(D\(N,N\))290 b FD(matrix)30
+b(in)m(v)m(erse)277 5176 y Fq(Y)668 b FB(D\(N\))401 b
+FD(solution)277 5289 y Fq(D)667 b FB(D)565 b FD(determinan)m(t)277
+5402 y Fq(JF)629 b FB(I)605 b FD(singularit)m(y)28 b(\015ag:)41
+b(0=OK)277 5515 y Fq(IW)610 b FB(I\(N\))441 b FD(w)m(orkspace)p
+eop
+%%Page: 45 47
+45 46 bop 0 52 a Fw(SUN/67.70)3252 b FD(45)0 351 y FB(NOTES)44
+b FD(:)311 579 y(1.)i(F)-8 b(or)31 b(the)g(set)g(of)f
+Fl(n)g FD(sim)m(ultaneous)f(linear)g(equations)h(in)f
+Fl(n)h FD(unkno)m(wns:)597 746 y FB(A)p Fo(\001)p FB(y)h
+FD(=)f FB(x)427 912 y FD(where:)506 1078 y Fo(\017)46
+b FB(A)31 b FD(is)e(a)i(non-singular)d Fl(n)20 b Fo(\002)f
+Fl(n)30 b FD(matrix,)506 1218 y Fo(\017)46 b FB(y)31
+b FD(is)e(the)i(v)m(ector)h(of)e Fl(n)g FD(unkno)m(wns,)f(and)506
+1358 y Fo(\017)46 b FB(x)31 b FD(is)e(the)i(kno)m(wn)f(v)m(ector,)427
+1524 y(sla)p Ft(_)p FD(DMA)-8 b(T)31 b(computes:)506
+1690 y Fo(\017)46 b FD(the)31 b(in)m(v)m(erse)f(of)h(matrix)e
+FB(A)p FD(,)506 1830 y Fo(\017)46 b FD(the)31 b(determinan)m(t)f(of)g
+(matrix)g FB(A)p FD(,)h(and)506 1969 y Fo(\017)46 b FD(the)31
+b(v)m(ector)h(of)e Fl(n)g FD(unkno)m(wns)f FB(y)p FD(.)427
+2136 y(Argumen)m(t)h(N)f(is)g(the)h(order)f Fl(n)p FD(,)g(A)h(\(giv)m
+(en\))g(is)e(the)i(matrix)f FB(A)p FD(,)g(Y)h(\(giv)m(en\))g(is)f(the)g
+(v)m(ector)i FB(x)f FD(and)427 2249 y(Y)g(\(returned\))g(is)f(the)i(v)m
+(ector)g FB(y)p FD(.)41 b(The)30 b(argumen)m(t)g(A)g(\(returned\))g(is)
+f(the)h(in)m(v)m(erse)g(matrix)g FB(A)3660 2216 y Fp(\000)p
+Fu(1)3754 2249 y FD(,)427 2362 y(and)g(D)h(is)e Fq(det)9
+b FD(\()p FB(A)p FD(\).)311 2528 y(2.)46 b(JF)40 b(is)e(the)i
+(singularit)m(y)d(\015ag.)68 b(If)39 b(the)g(matrix)g(is)f
+(non-singular,)i(JF=0)f(is)g(returned.)66 b(If)39 b(the)427
+2641 y(matrix)29 b(is)f(singular,)g(JF=)p Fo(\000)p FD(1)h(and)g(D=0D0)
+i(are)e(returned.)40 b(In)28 b(the)i(latter)f(case,)i(the)f(con)m(ten)m
+(ts)427 2754 y(of)h(arra)m(y)g(A)f(on)g(return)g(are)g(unde\014ned.)311
+2920 y(3.)46 b(The)38 b(algorithm)g(is)f(Gaussian)h(elimination)e(with)
+h(partial)h(piv)m(oting.)64 b(This)37 b(metho)s(d)h(is)f(v)m(ery)427
+3033 y(fast;)49 b(some)43 b(m)m(uc)m(h)f(slo)m(w)m(er)h(algorithms)e
+(can)i(giv)m(e)f(b)s(etter)h(accuracy)-8 b(,)47 b(but)42
+b(only)f(b)m(y)h(a)h(small)427 3146 y(factor.)311 3312
+y(4.)j(This)29 b(routine)g(replaces)h(the)h(obsolete)g(sla)p
+Ft(_)p FD(DMA)-8 b(TRX.)p 0 3485 3780 8 v 0 3598 a Fx(SLA)p
+Fn(_)p Fx(DMOON)455 b Fm(Appro)m(x)38 b(Mo)s(on)g(P)m(os/V)-10
+b(el)455 b Fx(SLA)p Fn(_)p Fx(DMOON)0 3949 y FB(A)m(CTION)44
+b FD(:)c(Appro)m(ximate)31 b(geo)s(cen)m(tric)g(p)s(osition)e(and)g(v)m
+(elo)s(cit)m(y)i(of)g(the)f(Mo)s(on)h(\(double)e(precision\).)0
+4136 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DMOON)g(\(DATE,)g(PV\))0
+4547 y FB(GIVEN)f FD(:)277 4693 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(TDB)61 b(\(lo)s(osely)f(ET\))h(as)g(a)g(Mo)s(di\014ed)e
+(Julian)g(Date)1658 4805 y(\(JD)p Fo(\000)p FD(2400000.5\))0
+5260 y FB(RETURNED)46 b FD(:)277 5406 y Fq(PV)606 b FB(D\(6\))431
+b FD(Mo)s(on)41 b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43
+b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(],)44 b(mean)d(equator)h(and)f(equino)m(x)1658 5519
+y(of)31 b(date)g(\(A)m(U,)g(A)m(U)h(s)2389 5486 y Fp(\000)p
+Fu(1)2483 5519 y FD(\))p eop
+%%Page: 46 48
+46 47 bop 0 52 a FD(46)0 351 y FB(NOTES)44 b FD(:)311
+531 y(1.)i(This)27 b(routine)g(is)g(a)i(full)d(implemen)m(tation)h(of)h
+(the)h(algorithm)e(published)d(b)m(y)29 b(Meeus)f(\(see)h(refer-)427
+644 y(ence\).)311 781 y(2.)46 b(Meeus)e(quotes)g(accuracies)g(of)f(10)
+1664 745 y Fk(0)m(0)1748 781 y FD(in)f(longitude,)j(3)2347
+745 y Fk(0)m(0)2431 781 y FD(in)d(latitude)g(and)h(0)3131
+745 y Fk(0)l(0)3135 781 y Fl(:)p FD(2)h(arcsec)h(in)c(HP)427
+894 y(\(equiv)-5 b(alen)m(t)43 b(to)h(ab)s(out)f(20)h(km)f(in)f
+(distance\).)80 b(Comparison)41 b(with)h(JPL)h(DE200)i(o)m(v)m(er)f
+(the)427 1007 y(in)m(terv)-5 b(al)31 b(1960-2025)k(giv)m(es)c(RMS)g
+(errors)g(of)g(3)2041 970 y Fk(0)m(0)2045 1007 y Fl(:)p
+FD(7)i(and)d(83)i(mas/hour)f(in)f(longitude,)g(2)3435
+970 y Fk(0)l(0)3439 1007 y Fl(:)p FD(3)i(arcsec)427 1120
+y(and)e(48)h(mas/hour)f(in)f(latitude,)g(11)i(km)f(and)g(81)h(mm/s)f
+(in)f(distance.)40 b(The)30 b(maxim)m(um)f(errors)427
+1233 y(o)m(v)m(er)46 b(the)e(same)h(in)m(terv)-5 b(al)43
+b(are)i(18)1641 1196 y Fk(0)m(0)1726 1233 y FD(and)f(0)1957
+1196 y Fk(0)l(0)1961 1233 y Fl(:)p FD(50/hour)h(in)e(longitude,)k(11)
+2996 1196 y Fk(0)l(0)3081 1233 y FD(and)d(0)3312 1196
+y Fk(0)l(0)3316 1233 y Fl(:)p FD(24/hour)h(in)427 1346
+y(latitude,)30 b(40)h(km)f(and)g(0.29)i(m/s)e(in)f(distance.)311
+1484 y(3.)46 b(The)40 b(original)e(algorithm)h(is)g(expressed)g(in)f
+(terms)i(of)g(the)g(obsolete)h(time)e(scale)i Fq(Ephemeris)427
+1597 y(Time)p FD(.)71 b(Either)39 b(TDB)h(or)g(TT)g(can)g(b)s(e)g
+(used,)i(but)e(not)g(UT)g(without)f(incurring)f(signi\014can)m(t)427
+1710 y(errors)30 b(\(30)806 1673 y Fk(0)m(0)878 1710
+y FD(at)h(the)g(presen)m(t)f(time\))g(due)g(to)h(the)g(Mo)s(on's)g(0)
+2503 1673 y Fk(0)l(0)2507 1710 y Fl(:)p FD(5/s)g(mo)m(v)m(emen)m(t.)311
+1847 y(4.)46 b(The)38 b(algorithm)f(is)g(based)g(on)h(pre)g(IA)m(U)g
+(1976)i(standards.)62 b(Ho)m(w)m(ev)m(er,)42 b(the)d(result)d(has)i(b)s
+(een)427 1960 y(mo)m(v)m(ed)27 b(on)m(to)f(the)g(new)f(\(FK5\))i
+(equino)m(x,)f(an)f(adjustmen)m(t)g(whic)m(h)g(is)f(in)g(an)m(y)i(case)
+g(m)m(uc)m(h)g(smaller)427 2073 y(than)k(the)h(in)m(trinsic)d(accuracy)
+j(of)g(the)f(pro)s(cedure.)311 2211 y(5.)46 b(V)-8 b(elo)s(cit)m(y)31
+b(is)f(obtained)f(b)m(y)i(a)f(complete)h(analytical)f(di\013eren)m
+(tiation)f(of)i(the)f(Meeus)h(mo)s(del.)0 2515 y FB(REFERENCE)44
+b FD(:)d(Meeus,)31 b Fq(l'Astr)-5 b(onomie)p FD(,)32
+b(June)e(1984,)i(p348.)p 0 2623 3780 8 v 0 2736 a Fx(SLA)p
+Fn(_)p Fx(DMXM)497 b Fm(Multiply)37 b(3)27 b Fh(\002)f
+Fm(3)39 b(Matrices)498 b Fx(SLA)p Fn(_)p Fx(DMXM)0 3086
+y FB(A)m(CTION)44 b FD(:)c(Pro)s(duct)30 b(of)h(t)m(w)m(o)g(3)21
+b Fo(\002)f FD(3)31 b(matrices)f(\(double)f(precision\).)0
+3274 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DMXM)g(\(A,)h(B,)g(C\))0
+3591 y FB(GIVEN)e FD(:)277 3737 y Fq(A)668 b FB(D\(3,3\))350
+b FD(matrix)30 b FB(A)277 3850 y Fq(B)672 b FB(D\(3,3\))350
+b FD(matrix)30 b FB(B)0 4145 y(RETURNED)46 b FD(:)277
+4317 y Fq(C)671 b FB(D\(3,3\))350 b FD(matrix)30 b(result:)40
+b FB(A)p Fo(\002)p FB(B)0 4621 y(NOTE)k FD(:)c(T)-8 b(o)30
+b(comply)e(with)g(the)h(ANSI)g(F)-8 b(ortran)29 b(77)h(standard,)f(A,)h
+(B)f(and)f(C)h(m)m(ust)g(b)s(e)f(di\013eren)m(t)h(arra)m(ys.)227
+4734 y(Ho)m(w)m(ev)m(er,)34 b(the)e(routine)e(is)h(co)s(ded)g(so)h(as)g
+(to)g(w)m(ork)f(prop)s(erly)f(on)h(man)m(y)g(platforms)g(ev)m(en)h(if)e
+(this)h(rule)227 4847 y(is)f(violated,)g(something)g(that)h(is)e
+FB(not)p FD(,)i(ho)m(w)m(ev)m(er,)h(recommended.)p 0
+4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(DMXV)641 b Fm(Apply)38
+b(3D)h(Rotation)640 b Fx(SLA)p Fn(_)p Fx(DMXV)0 5418
+y FB(A)m(CTION)44 b FD(:)c(Multiply)28 b(a)j(3-v)m(ector)i(b)m(y)d(a)h
+(rotation)f(matrix)g(\(double)f(precision\).)0 5606 y
+FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DMXV)g(\(DM,)h(VA,)f(VB\))p
+eop
+%%Page: 47 49
+47 48 bop 0 52 a Fw(SUN/67.70)3252 b FD(47)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(DM)585 b FB(D\(3,3\))350 b FD(rotation)31
+b(matrix)277 610 y Fq(V)-9 b(A)609 b FB(D\(3\))431 b
+FD(v)m(ector)32 b(to)f(b)s(e)f(rotated)0 967 y FB(RETURNED)46
+b FD(:)277 1138 y Fq(VB)604 b FB(D\(3\))431 b FD(result)29
+b(v)m(ector)0 1503 y FB(NOTES)44 b FD(:)311 1692 y(1.)i(This)29
+b(routine)g(p)s(erforms)g(the)i(op)s(eration:)597 1839
+y FB(b)g FD(=)f FB(M)p Fo(\001)p FB(a)427 1985 y FD(where)g
+FB(a)f FD(and)g FB(b)h FD(are)g(the)g(3-v)m(ectors)i(V)-10
+b(A)30 b(and)f(VB)i(resp)s(ectiv)m(ely)-8 b(,)30 b(and)f
+FB(M)h FD(is)f(the)h(3)19 b Fo(\002)g FD(3)30 b(matrix)427
+2098 y(DM.)311 2245 y(2.)46 b(The)30 b(main)f(function)g(of)i(this)e
+(routine)g(is)h(apply)f(a)h(rotation;)h(under)e(these)i(circumstances,)
+f FB(M)427 2358 y FD(is)g(a)g Fq(pr)-5 b(op)g(er)36 b(r)-5
+b(e)g(al)34 b(ortho)-5 b(gonal)43 b FD(matrix.)311 2505
+y(3.)j(T)-8 b(o)35 b(comply)e(with)f(the)i(ANSI)g(F)-8
+b(ortran)34 b(77)h(standard,)f(V)-10 b(A)34 b(and)f(VB)h(m)m(ust)g
+FB(not)g FD(b)s(e)f(the)h(same)427 2618 y(arra)m(y)-8
+b(.)83 b(The)43 b(routine)g(is,)k(in)42 b(fact,)49 b(co)s(ded)43
+b(so)i(as)f(to)g(w)m(ork)g(prop)s(erly)e(with)h(man)m(y)h(F)-8
+b(ortran)427 2731 y(compilers)26 b(ev)m(en)h(if)f(this)g(rule)f(is)h
+(violated,)i(something)e(that)i(is)e FB(not)p FD(,)h(ho)m(w)m(ev)m(er,)
+j(recommended.)p 0 2864 3780 8 v 0 2977 a Fx(SLA)p Fn(_)p
+Fx(DP)-11 b(A)c(V)178 b Fm(P)m(osition-Angle)35 b(Bet)m(w)m(een)i(Tw)m
+(o)h(Directions)178 b Fx(SLA)p Fn(_)p Fx(DP)-11 b(A)c(V)0
+3328 y FB(A)m(CTION)44 b FD(:)66 b(Returns)43 b(the)h(b)s(earing)e(\(p)
+s(osition)f(angle\))j(of)g(one)f(celestial)g(direction)f(with)g(resp)s
+(ect)i(to)227 3441 y(another)31 b(\(double)e(precision\).)0
+3628 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_DPAV)d(\(V1,)i(V2\))0
+3980 y FB(GIVEN)e FD(:)277 4126 y Fq(V1)622 b FB(D\(3\))431
+b FD(v)m(ector)32 b(to)f(one)g(p)s(oin)m(t)277 4239 y
+Fq(V2)622 b FB(D\(3\))431 b FD(v)m(ector)32 b(to)f(the)g(other)f(p)s
+(oin)m(t)0 4595 y FB(RETURNED)46 b FD(:)277 4767 y Fq(sla)p
+Ft(_)p Fq(DP)-7 b(A)e(V)331 b FB(D)565 b FD(p)s(osition-angle)29
+b(of)i(2nd)e(p)s(oin)m(t)h(with)f(resp)s(ect)h(to)h(1st)0
+5132 y FB(NOTES)44 b FD(:)311 5320 y(1.)i(The)30 b(co)s(ordinate)g
+(frames)h(corresp)s(ond)e(to)i([)15 b Fl(\013;)g(\016)20
+b FD(],)31 b([)p Fl(\025;)15 b(\036)p FD(])31 b Fq(etc.)p
+FD(.)311 5467 y(2.)46 b(The)30 b(result)e(is)h(the)h(b)s(earing)f(\(p)s
+(osition)f(angle\),)j(in)d(radians,)h(of)h(p)s(oin)m(t)f(V2)h(as)g
+(seen)g(from)f(p)s(oin)m(t)427 5580 y(V1.)48 b(It)33
+b(is)f(in)f(the)i(range)g Fo(\006)p Fl(\031)s FD(.)47
+b(The)33 b(sense)f(is)g(suc)m(h)g(that)h(if)f(V2)h(is)f(a)h(small)e
+(distance)h(due)g(east)427 5693 y(of)f(V1)g(the)f(result)g(is)f(ab)s
+(out)h(+)p Fl(\031)s(=)p FD(2.)41 b(Zero)31 b(is)e(returned)g(if)h(the)
+g(t)m(w)m(o)i(p)s(oin)m(ts)d(are)i(coinciden)m(t.)p eop
+%%Page: 48 50
+48 49 bop 0 52 a FD(48)311 351 y(3.)46 b(There)30 b(is)g(no)g
+(requiremen)m(t)f(for)i(either)e(v)m(ector)j(to)f(b)s(e)f(of)h(unit)e
+(length.)311 495 y(4.)46 b(The)31 b(routine)f(sla)p Ft(_)p
+FD(DBEAR)h(p)s(erforms)f(an)h(equiv)-5 b(alen)m(t)31
+b(function)f(except)i(that)g(the)f(p)s(oin)m(ts)f(are)427
+608 y(sp)s(eci\014ed)f(in)g(the)i(form)e(of)i(spherical)e(co)s
+(ordinates.)p 0 734 3780 8 v 0 847 a Fx(SLA)p Fn(_)p
+Fx(DR2AF)369 b Fm(Radians)38 b(to)g(Deg,Min,Sec,F)-10
+b(rac)368 b Fx(SLA)p Fn(_)p Fx(DR2AF)0 1197 y FB(A)m(CTION)44
+b FD(:)49 b(Con)m(v)m(ert)36 b(an)e(angle)h(in)f(radians)f(to)i
+(degrees,)i(arcmin)m(utes,)f(arcseconds,)g(fraction)f(\(double)227
+1310 y(precision\).)0 1498 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DR2AF)g(\(NDP,)g(ANGLE,)g(SIGN,)g(IDMSF\))0 1839
+y FB(GIVEN)f FD(:)277 1985 y Fq(NDP)537 b FB(I)605 b
+FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e(places)h(of)h(arcseconds)277
+2098 y Fq(ANGLE)411 b FB(D)565 b FD(angle)31 b(in)e(radians)0
+2436 y FB(RETURNED)46 b FD(:)277 2582 y Fq(SIGN)512 b
+FB(C)569 b FD(`+')31 b(or)f(`)p Fo(\000)p FD(')277 2695
+y Fq(IDMSF)440 b FB(I\(4\))471 b FD(degrees,)31 b(arcmin)m(utes,)f
+(arcseconds,)h(fraction)0 3033 y FB(NOTES)44 b FD(:)311
+3219 y(1.)i(NDP)31 b(less)f(than)g(zero)h(is)e(in)m(terpreted)h(as)h
+(zero.)311 3363 y(2.)46 b(The)28 b(largest)h(useful)e(v)-5
+b(alue)29 b(for)f(NDP)h(is)f(determined)f(b)m(y)i(the)g(size)f(of)h
+(ANGLE,)g(the)g(format)g(of)427 3476 y(DOUBLE)d(PRECISION)d
+(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers)g(on)h(the)g(target)i(mac)m
+(hine,)f(and)e(the)i(risk)d(of)427 3589 y(o)m(v)m(er\015o)m(wing)34
+b(IDMSF\(4\).)52 b(On)32 b(some)i(arc)m(hitectures,)h(for)e(ANGLE)h(up)
+f(to)h(2pi,)f(the)h(a)m(v)-5 b(ailable)427 3701 y(\015oating-p)s(oin)m
+(t)21 b(precision)f(corresp)s(onds)h(roughly)f(to)j(NDP=12.)39
+b(Ho)m(w)m(ev)m(er,)25 b(the)d(practical)g(limit)427
+3814 y(is)30 b(NDP=9,)h(set)g(b)m(y)f(the)h(capacit)m(y)g(of)g(a)g(t)m
+(ypical)f(32-bit)g(IDMSF\(4\).)311 3958 y(3.)46 b(The)29
+b(absolute)f(v)-5 b(alue)29 b(of)g(ANGLE)g(ma)m(y)g(exceed)h(2)p
+Fl(\031)s FD(.)41 b(In)28 b(cases)i(where)e(it)g(do)s(es)h(not,)h(it)e
+(is)g(up)g(to)427 4071 y(the)f(caller)g(to)g(test)h(for)f(and)f(handle)
+f(the)j(case)g(where)e(ANGLE)h(is)f(v)m(ery)h(nearly)f(2)p
+Fl(\031)31 b FD(and)26 b(rounds)427 4184 y(up)k(to)h(360)805
+4151 y Fp(\016)845 4184 y FD(,)g(b)m(y)f(testing)h(for)f
+(IDMSF\(1\)=360)j(and)d(setting)g(IDMSF\(1-4\))j(to)e(zero.)p
+0 4315 V 0 4428 a Fx(SLA)p Fn(_)p Fx(DR2TF)348 b Fm(Radians)38
+b(to)g(Hour,Min,Sec,F)-10 b(rac)347 b Fx(SLA)p Fn(_)p
+Fx(DR2TF)0 4779 y FB(A)m(CTION)44 b FD(:)37 b(Con)m(v)m(ert)25
+b(an)f(angle)g(in)e(radians)h(to)h(hours,)g(min)m(utes,)h(seconds,)g
+(fraction)f(\(double)f(precision\).)0 4966 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DR2TF)g(\(NDP,)g(ANGLE,)g(SIGN,)g(IHMSF\))
+0 5307 y FB(GIVEN)f FD(:)277 5453 y Fq(NDP)537 b FB(I)605
+b FD(n)m(um)m(b)s(er)29 b(of)i(decimal)e(places)h(of)h(seconds)277
+5566 y Fq(ANGLE)411 b FB(D)565 b FD(angle)31 b(in)e(radians)p
+eop
+%%Page: 49 51
+49 50 bop 0 52 a Fw(SUN/67.70)3252 b FD(49)0 351 y FB(RETURNED)46
+b FD(:)277 497 y Fq(SIGN)512 b FB(C)569 b FD(`+')31 b(or)f(`)p
+Fo(\000)p FD(')277 610 y Fq(IHMSF)441 b FB(I\(4\))471
+b FD(hours,)30 b(min)m(utes,)f(seconds,)i(fraction)0
+1018 y FB(NOTES)44 b FD(:)311 1227 y(1.)i(NDP)31 b(less)f(than)g(zero)h
+(is)e(in)m(terpreted)h(as)h(zero.)311 1384 y(2.)46 b(The)28
+b(largest)h(useful)e(v)-5 b(alue)29 b(for)f(NDP)h(is)f(determined)f(b)m
+(y)i(the)g(size)f(of)h(ANGLE,)g(the)g(format)g(of)427
+1497 y(DOUBLE)d(PRECISION)d(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s(ers)g
+(on)h(the)g(target)i(mac)m(hine,)f(and)e(the)i(risk)d(of)427
+1610 y(o)m(v)m(er\015o)m(wing)34 b(IHMSF\(4\).)52 b(On)33
+b(some)h(arc)m(hitectures,)h(for)e(ANGLE)h(up)e(to)j(2pi,)e(the)h(a)m
+(v)-5 b(ailable)427 1723 y(\015oating-p)s(oin)m(t)21
+b(precision)f(corresp)s(onds)h(roughly)f(to)j(NDP=12.)39
+b(Ho)m(w)m(ev)m(er,)25 b(the)d(practical)g(limit)427
+1836 y(is)30 b(NDP=9,)h(set)g(b)m(y)f(the)h(capacit)m(y)g(of)g(a)g(t)m
+(ypical)f(32-bit)g(IHMSF\(4\).)311 1993 y(3.)46 b(The)29
+b(absolute)f(v)-5 b(alue)29 b(of)g(ANGLE)g(ma)m(y)g(exceed)h(2)p
+Fl(\031)s FD(.)41 b(In)28 b(cases)i(where)e(it)g(do)s(es)h(not,)h(it)e
+(is)g(up)g(to)427 2106 y(the)f(caller)g(to)g(test)h(for)f(and)f(handle)
+f(the)j(case)g(where)e(ANGLE)h(is)f(v)m(ery)h(nearly)f(2)p
+Fl(\031)31 b FD(and)26 b(rounds)427 2219 y(up)k(to)h(24)g(hours,)e(b)m
+(y)i(testing)f(for)g(IHMSF\(1\)=24)j(and)c(setting)i(IHMSF\(1-4\))h(to)
+f(zero.)p 0 2378 3780 8 v 0 2491 a Fx(SLA)p Fn(_)p Fx(DRANGE)304
+b Fm(Put)38 b(Angle)g(in)m(to)f(Range)h Fh(\006)p Fg(\031)310
+b Fx(SLA)p Fn(_)p Fx(DRANGE)0 2841 y FB(A)m(CTION)44
+b FD(:)c(Normalize)31 b(an)f(angle)g(in)m(to)h(the)f(range)h
+Fo(\006)p Fl(\031)i FD(\(double)c(precision\).)0 3029
+y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_DRANGE)d(\(ANGLE\))0
+3407 y FB(GIVEN)g FD(:)277 3579 y Fq(ANGLE)411 b FB(D)565
+b FD(angle)31 b(in)e(radians)0 3995 y FB(RETURNED)46
+b FD(:)277 4167 y Fq(sla)p Ft(_)p Fq(DRANGE)179 b FB(D)565
+b FD(ANGLE)31 b(expressed)f(in)f(the)h(range)h Fo(\006)p
+Fl(\031)s FD(.)p 0 4337 V 0 4450 a Fx(SLA)p Fn(_)p Fx(DRANRM)204
+b Fm(Put)39 b(Angle)e(in)m(to)h(Range)g(0)7 b Fh(\000)g
+Fm(2)p Fg(\031)209 b Fx(SLA)p Fn(_)p Fx(DRANRM)0 4800
+y FB(A)m(CTION)44 b FD(:)c(Normalize)31 b(an)f(angle)g(in)m(to)h(the)f
+(range)h(0)5 b Fo(\000)g FD(2)p Fl(\031)34 b FD(\(double)29
+b(precision\).)0 4988 y FB(CALL)45 b FD(:)77 b Ft(D)47
+b(=)h(sla_DRANRM)d(\(ANGLE\))0 5366 y FB(GIVEN)g FD(:)277
+5538 y Fq(ANGLE)411 b FB(D)565 b FD(angle)31 b(in)e(radians)p
+eop
+%%Page: 50 52
+50 51 bop 0 52 a FD(50)0 351 y FB(RETURNED)46 b FD(:)277
+523 y Fq(sla)p Ft(_)p Fq(DRANRM)163 b FB(D)565 b FD(ANGLE)31
+b(expressed)f(in)f(the)h(range)h(0)5 b Fo(\000)g FD(2)p
+Fl(\031)p 0 678 3780 8 v 0 791 a Fx(SLA)p Fn(_)p Fx(DS2C6)371
+b Fm(Spherical)37 b(P)m(os/V)-10 b(el)37 b(to)h(Cartesian)369
+b Fx(SLA)p Fn(_)p Fx(DS2C6)0 1141 y FB(A)m(CTION)44 b
+FD(:)38 b(Con)m(v)m(ersion)25 b(of)g(p)s(osition)f(&)h(v)m(elo)s(cit)m
+(y)g(in)f(spherical)g(co)s(ordinates)h(to)h(Cartesian)f(co)s(ordinates)
+227 1254 y(\(double)30 b(precision\).)0 1441 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DS2C6)g(\(A,)h(B,)g(R,)g(AD,)g(BD,)g(RD,)g
+(V\))0 1800 y FB(GIVEN)e FD(:)277 1946 y Fq(A)668 b FB(D)565
+b FD(longitude)29 b(\(radians\))h({)h(for)f(example)g
+Fl(\013)277 2059 y Fq(B)672 b FB(D)565 b FD(latitude)30
+b(\(radians\))f({)i(for)f(example)g Fl(\016)277 2172
+y Fq(R)670 b FB(D)565 b FD(radial)29 b(co)s(ordinate)277
+2285 y Fq(AD)599 b FB(D)565 b FD(longitude)29 b(deriv)-5
+b(ativ)m(e)30 b(\(radians)f(p)s(er)h(unit)f(time\))277
+2398 y Fq(BD)603 b FB(D)565 b FD(latitude)30 b(deriv)-5
+b(ativ)m(e)29 b(\(radians)h(p)s(er)f(unit)g(time\))277
+2511 y Fq(RD)601 b FB(D)565 b FD(radial)29 b(deriv)-5
+b(ativ)m(e)0 2879 y FB(RETURNED)46 b FD(:)277 3051 y
+Fq(V)668 b FB(D\(6\))431 b FD([)15 b Fl(x;)g(y)s(;)g(z)t(;)33
+b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(])p 0 3206 V 0 3319 a Fx(SLA)p Fn(_)p
+Fx(DS2TP)442 b Fm(Spherical)37 b(to)h(T)-10 b(angen)m(t)38
+b(Plane)442 b Fx(SLA)p Fn(_)p Fx(DS2TP)0 3669 y FB(A)m(CTION)44
+b FD(:)c(Pro)5 b(jection)31 b(of)f(spherical)f(co)s(ordinates)h(on)m
+(to)i(the)e(tangen)m(t)i(plane)d(\(double)h(precision\).)0
+3857 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DS2TP)g(\(RA,)g(DEC,)h
+(RAZ,)g(DECZ,)f(XI,)h(ETA,)f(J\))0 4215 y FB(GIVEN)f
+FD(:)277 4361 y Fq(RA,DEC)378 b FB(D)565 b FD(spherical)29
+b(co)s(ordinates)h(of)g(star)h(\(radians\))277 4474 y
+Fq(RAZ,DECZ)266 b FB(D)565 b FD(spherical)29 b(co)s(ordinates)h(of)g
+(tangen)m(t)i(p)s(oin)m(t)e(\(radians\))0 4843 y FB(RETURNED)46
+b FD(:)277 4989 y Fq(XI,ET)-7 b(A)417 b FB(D)565 b FD(tangen)m(t)32
+b(plane)d(co)s(ordinates)h(\(radians\))277 5102 y Fq(J)688
+b FB(I)605 b FD(status:)1825 5215 y(0)31 b(=)f(OK,)g(star)g(on)g
+(tangen)m(t)i(plane)1825 5328 y(1)f(=)f(error,)g(star)g(to)s(o)h(far)g
+(from)f(axis)1825 5441 y(2)h(=)f(error,)g(an)m(tistar)g(on)h(tangen)m
+(t)h(plane)1825 5554 y(3)f(=)f(error,)g(an)m(tistar)g(to)s(o)i(far)e
+(from)g(axis)p eop
+%%Page: 51 53
+51 52 bop 0 52 a Fw(SUN/67.70)3252 b FD(51)0 351 y FB(NOTES)44
+b FD(:)311 537 y(1.)i(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+649 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 762 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 906 y(2.)46 b(When)26 b(w)m(orking)g(in)e([)15
+b Fl(x;)g(y)s(;)g(z)21 b FD(])26 b(rather)g(than)g(spherical)e(co)s
+(ordinates,)j(the)f(equiv)-5 b(alen)m(t)26 b(Cartesian)427
+1019 y(routine)k(sla)p Ft(_)p FD(D)m(V2TP)g(is)g(a)m(v)-5
+b(ailable.)p 0 1136 3780 8 v 0 1249 a Fx(SLA)p Fn(_)p
+Fx(DSEP)329 b Fm(Angle)38 b(Bet)m(w)m(een)f(2)i(P)m(oin)m(ts)e(on)h
+(Sphere)330 b Fx(SLA)p Fn(_)p Fx(DSEP)0 1599 y FB(A)m(CTION)44
+b FD(:)c(Angle)31 b(b)s(et)m(w)m(een)g(t)m(w)m(o)g(p)s(oin)m(ts)f(on)g
+(a)h(sphere)e(\(double)g(precision\).)0 1787 y FB(CALL)45
+b FD(:)77 b Ft(D)47 b(=)h(sla_DSEP)d(\(A1,)i(B1,)g(A2,)g(B2\))0
+2127 y FB(GIVEN)e FD(:)277 2273 y Fq(A1,B1)484 b FB(D)565
+b FD(spherical)29 b(co)s(ordinates)h(of)g(one)h(p)s(oin)m(t)e
+(\(radians\))277 2386 y Fq(A2,B2)484 b FB(D)565 b FD(spherical)26
+b(co)s(ordinates)i(of)h(the)f(other)g(p)s(oin)m(t)g(\(radians\))0
+2723 y FB(RETURNED)46 b FD(:)277 2895 y Fq(sla)p Ft(_)p
+Fq(DSEP)338 b FB(D)565 b FD(angle)31 b(b)s(et)m(w)m(een)g([A1,B1])h
+(and)e([A2,B2])i(in)d(radians)0 3240 y FB(NOTES)44 b
+FD(:)311 3425 y(1.)i(The)26 b(spherical)e(co)s(ordinates)h(are)h(righ)m
+(t)g(ascension)f(and)g(declination,)h(longitude)e(and)h(latitude,)427
+3538 y Fq(etc.)p FD(,)31 b(in)e(radians.)311 3682 y(2.)46
+b(The)30 b(result)f(is)h(alw)m(a)m(ys)h(p)s(ositiv)m(e.)p
+0 3808 V 0 3921 a Fx(SLA)p Fn(_)p Fx(DSEPV)471 b Fm(Angle)38
+b(Bet)m(w)m(een)g(2)g(V)-10 b(ectors)472 b Fx(SLA)p Fn(_)p
+Fx(DSEPV)0 4271 y FB(A)m(CTION)44 b FD(:)c(Angle)31 b(b)s(et)m(w)m(een)
+g(t)m(w)m(o)g(v)m(ectors)h(\(double)d(precision\).)0
+4459 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_DSEPV)d(\(V1,)i(V2\))0
+4799 y FB(GIVEN)e FD(:)277 4945 y Fq(V1)622 b FB(D\(3\))431
+b FD(\014rst)30 b(v)m(ector)277 5058 y Fq(V2)622 b FB(D\(3\))431
+b FD(second)31 b(v)m(ector)0 5395 y FB(RETURNED)46 b
+FD(:)277 5567 y Fq(sla)p Ft(_)p Fq(DSEPV)270 b FB(D)565
+b FD(angle)31 b(b)s(et)m(w)m(een)g(V1)f(and)g(V2)h(in)e(radians)p
+eop
+%%Page: 52 54
+52 53 bop 0 52 a FD(52)0 351 y FB(NOTES)44 b FD(:)311
+523 y(1.)i(There)30 b(is)g(no)g(requiremen)m(t)f(for)i(either)e(v)m
+(ector)j(to)f(b)s(e)f(of)h(unit)e(length.)311 654 y(2.)46
+b(If)30 b(either)g(v)m(ector)i(is)d(n)m(ull,)g(zero)i(is)f(returned.)
+311 784 y(3.)46 b(The)30 b(result)f(is)h(alw)m(a)m(ys)h(p)s(ositiv)m
+(e.)p 0 870 3780 8 v 0 983 a Fx(SLA)p Fn(_)p Fx(DT)661
+b Fm(Appro)m(ximate)35 b(ET)j(min)m(us)f(UT)662 b Fx(SLA)p
+Fn(_)p Fx(DT)0 1334 y FB(A)m(CTION)44 b FD(:)d(Estimate)31
+b(\001T,)g(the)g(o\013set)h(b)s(et)m(w)m(een)f(dynamical)e(time)i(and)f
+(Univ)m(ersal)g(Time,)g(for)g(a)h(giv)m(en)227 1447 y(historical)e(ep)s
+(o)s(c)m(h.)0 1634 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_DT)e
+(\(EPOCH\))0 1918 y FB(GIVEN)f FD(:)277 2089 y Fq(EPOCH)409
+b FB(D)565 b FD(\(Julian\))29 b(ep)s(o)s(c)m(h)h(\()p
+Fq(e.g.)g FD(1850D0\))0 2342 y FB(RETURNED)46 b FD(:)277
+2488 y Fq(sla)p Ft(_)p Fq(DT)448 b FB(D)565 b FD(appro)m(ximate)50
+b(ET)p Fo(\000)p FD(UT)f(\(after)h(1984,)57 b(TT)p Fo(\000)p
+FD(UT1\))49 b(in)1658 2601 y(seconds)0 2846 y FB(NOTES)44
+b FD(:)311 3018 y(1.)i(Dep)s(ending)29 b(on)h(the)h(ep)s(o)s(c)m(h,)f
+(one)h(of)f(three)h(parab)s(olic)e(appro)m(ximations)g(is)g(used:)554
+3169 y(b)s(efore)h(AD)g(979)318 b(Stephenson)30 b(&)g(Morrison's)f(390)
+j(BC)e(to)h(AD)g(948)h(mo)s(del)554 3282 y(AD)e(979)i(to)f(AD)g(1708)
+100 b(Stephenson)30 b(&)g(Morrison's)f(AD)i(948)h(to)f(AD)g(1600)h(mo)s
+(del)554 3395 y(after)e(AD)h(1708)331 b(McCarth)m(y)32
+b(&)e(Bab)s(co)s(c)m(k's)h(p)s(ost-1650)h(mo)s(del)427
+3547 y(The)42 b(breakp)s(oin)m(ts)f(are)h(c)m(hosen)h(to)g(ensure)e
+(con)m(tin)m(uit)m(y:)64 b(they)42 b(o)s(ccur)g(at)h(places)f(where)f
+(the)427 3659 y(adjacen)m(t)32 b(mo)s(dels)d(giv)m(e)i(the)f(same)h
+(answ)m(er)f(as)h(eac)m(h)h(other.)311 3790 y(2.)46 b(The)d(accuracy)i
+(is)e(mo)s(dest,)k(with)42 b(errors)h(of)h(up)e(to)i(20)2447
+3757 y Fu(s)2524 3790 y FD(during)d(the)j(in)m(terv)-5
+b(al)43 b(since)f(1650,)427 3903 y(rising)27 b(to)i(p)s(erhaps)e(30)
+1213 3870 y Fu(m)1306 3903 y FD(b)m(y)h(1000)j(BC.)e(Comparativ)m(ely)f
+(accurate)i(v)-5 b(alues)28 b(from)g(AD)i(1600)g(are)427
+4016 y(tabulated)g(in)f(the)i Fq(Astr)-5 b(onomic)g(al)35
+b(A)n(lmanac)h FD(\(see)c(section)e(K8)h(of)f(the)h(1995)h(edition\).)
+311 4146 y(3.)46 b(The)34 b(use)h(of)f Ft(DOUBLE)46 b(PRECISION)32
+b FD(for)j(b)s(oth)f(argumen)m(t)h(and)f(result)f(is)h(simply)e(for)i
+(compati-)427 4259 y(bilit)m(y)29 b(with)g(other)h(SLALIB)g(time)g
+(routines.)311 4390 y(4.)46 b(The)28 b(mo)s(dels)g(used)f(are)i(based)f
+(on)h(a)g(lunar)e(tidal)g(acceleration)i(v)-5 b(alue)28
+b(of)h Fo(\000)p FD(26)3157 4353 y Fk(0)l(0)3161 4390
+y Fl(:)p FD(00)h(p)s(er)e(cen)m(tury)-8 b(.)0 4643 y
+FB(REFERENCE)44 b FD(:)50 b(Seidelmann,)33 b(P)-8 b(.K.)36
+b(\(ed\),)g(1992.)56 b Fq(Explanatory)39 b(Supplement)f(to)g(the)f
+(Astr)-5 b(onomic)g(al)227 4756 y(A)n(lmanac,)38 b FD(ISBN)d
+(0-935702-68-7.)62 b(This)34 b(con)m(tains)i(references)g(to)g(the)g
+(pap)s(ers)f(b)m(y)g(Stephenson)g(&)227 4869 y(Morrison)30
+b(and)f(b)m(y)i(McCarth)m(y)g(&)f(Bab)s(co)s(c)m(k)h(whic)m(h)e
+(describ)s(e)g(the)i(mo)s(dels)e(used)g(here.)p 0 4955
+V 0 5068 a Fx(SLA)p Fn(_)p Fx(DTF2D)553 b Fm(Hour,Min,Sec)36
+b(to)i(Da)m(ys)554 b Fx(SLA)p Fn(_)p Fx(DTF2D)0 5418
+y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32 b(hours,)d(min)m(utes,)h
+(seconds)g(to)h(da)m(ys)g(\(double)e(precision\).)0 5606
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DTF2D)g(\(IHOUR,)f(IMIN,)i
+(SEC,)f(DAYS,)h(J\))p eop
+%%Page: 53 55
+53 54 bop 0 52 a Fw(SUN/67.70)3252 b FD(53)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(IHOUR)429 b FB(I)605 b FD(hours)277
+610 y Fq(IMIN)516 b FB(I)605 b FD(min)m(utes)277 723
+y Fq(SEC)558 b FB(D)565 b FD(seconds)0 1180 y FB(RETURNED)46
+b FD(:)277 1326 y Fq(D)n(A)-7 b(YS)489 b FB(D)565 b FD(in)m(terv)-5
+b(al)30 b(in)f(da)m(ys)277 1439 y Fq(J)688 b FB(I)605
+b FD(status:)1825 1552 y(0)31 b(=)f(OK)1825 1665 y(1)h(=)f(IHOUR)g
+(outside)f(range)i(0-23)1825 1778 y(2)g(=)f(IMIN)g(outside)g(range)g
+(0-59)1825 1890 y(3)h(=)f(SEC)f(outside)h(range)g(0-59.999)p
+Fo(\001)15 b(\001)g(\001)0 2347 y FB(NOTES)44 b FD(:)311
+2576 y(1.)i(The)30 b(result)f(is)h(computed)g(ev)m(en)h(if)e(an)m(y)i
+(of)g(the)f(range)h(c)m(hec)m(ks)h(fail.)311 2743 y(2.)46
+b(The)30 b(sign)g(m)m(ust)g(b)s(e)g(dealt)g(with)f(outside)g(this)h
+(routine.)p 0 2917 3780 8 v 0 3030 a Fx(SLA)p Fn(_)p
+Fx(DTF2R)476 b Fm(Hour,Min,Sec)37 b(to)h(Radians)476
+b Fx(SLA)p Fn(_)p Fx(DTF2R)0 3380 y FB(A)m(CTION)44 b
+FD(:)c(Con)m(v)m(ert)32 b(hours,)d(min)m(utes,)h(seconds)g(to)h
+(radians)e(\(double)g(precision\).)0 3568 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DTF2R)g(\(IHOUR,)f(IMIN,)i(SEC,)f(RAD,)h
+(J\))0 3979 y FB(GIVEN)e FD(:)277 4125 y Fq(IHOUR)429
+b FB(I)605 b FD(hours)277 4238 y Fq(IMIN)516 b FB(I)605
+b FD(min)m(utes)277 4351 y Fq(SEC)558 b FB(D)565 b FD(seconds)0
+4808 y FB(RETURNED)46 b FD(:)277 4954 y Fq(RAD)533 b
+FB(D)565 b FD(angle)31 b(in)e(radians)277 5067 y Fq(J)688
+b FB(I)605 b FD(status:)1825 5180 y(0)31 b(=)f(OK)1825
+5292 y(1)h(=)f(IHOUR)g(outside)f(range)i(0-23)1825 5405
+y(2)g(=)f(IMIN)g(outside)g(range)g(0-59)1825 5518 y(3)h(=)f(SEC)f
+(outside)h(range)g(0-59.999)p Fo(\001)15 b(\001)g(\001)p
+eop
+%%Page: 54 56
+54 55 bop 0 52 a FD(54)0 351 y FB(NOTES)44 b FD(:)311
+537 y(1.)i(The)30 b(result)f(is)h(computed)g(ev)m(en)h(if)e(an)m(y)i
+(of)g(the)f(range)h(c)m(hec)m(ks)h(fail.)311 680 y(2.)46
+b(The)30 b(sign)g(m)m(ust)g(b)s(e)g(dealt)g(with)f(outside)g(this)h
+(routine.)p 0 806 3780 8 v 0 919 a Fx(SLA)p Fn(_)p Fx(DTP2S)442
+b Fm(T)-10 b(angen)m(t)37 b(Plane)h(to)g(Spherical)442
+b Fx(SLA)p Fn(_)p Fx(DTP2S)0 1269 y FB(A)m(CTION)44 b
+FD(:)c(T)-8 b(ransform)28 b(tangen)m(t)i(plane)e(co)s(ordinates)h(in)m
+(to)f(spherical)g(co)s(ordinates)g(\(double)g(precision\))0
+1457 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DTP2S)g(\(XI,)g(ETA,)h
+(RAZ,)g(DECZ,)f(RA,)h(DEC\))0 1797 y FB(GIVEN)e FD(:)277
+1943 y Fq(XI,ET)-7 b(A)417 b FB(D)565 b FD(tangen)m(t)32
+b(plane)d(rectangular)i(co)s(ordinates)f(\(radians\))277
+2056 y Fq(RAZ,DECZ)266 b FB(D)565 b FD(spherical)29 b(co)s(ordinates)h
+(of)g(tangen)m(t)i(p)s(oin)m(t)e(\(radians\))0 2393 y
+FB(RETURNED)46 b FD(:)277 2565 y Fq(RA,DEC)378 b FB(D)565
+b FD(spherical)29 b(co)s(ordinates)h(\(radians\))0 2910
+y FB(NOTES)44 b FD(:)311 3096 y(1.)i(The)24 b(pro)5 b(jection)25
+b(is)f(called)f(the)i Fq(gnomonic)31 b FD(pro)5 b(jection;)27
+b(the)d(Cartesian)h(co)s(ordinates)f([)15 b Fl(\030)t(;)g(\021)k
+FD(])25 b(are)427 3209 y(called)30 b Fq(standar)-5 b(d)37
+b(c)-5 b(o)g(or)g(dinates.)45 b FD(The)30 b(latter)i(are)f(in)f(units)f
+(of)i(the)h(distance)e(from)h(the)g(tangen)m(t)427 3322
+y(plane)f(to)h(the)f(pro)5 b(jection)30 b(p)s(oin)m(t,)g
+Fq(i.e.)g FD(radians)f(near)h(the)h(origin.)311 3465
+y(2.)46 b(When)26 b(w)m(orking)g(in)e([)15 b Fl(x;)g(y)s(;)g(z)21
+b FD(])26 b(rather)g(than)g(spherical)e(co)s(ordinates,)j(the)f(equiv)
+-5 b(alen)m(t)26 b(Cartesian)427 3578 y(routine)k(sla)p
+Ft(_)p FD(DTP2V)g(is)f(a)m(v)-5 b(ailable.)p 0 3695 V
+0 3808 a Fx(SLA)p Fn(_)p Fx(DTP2V)201 b Fm(T)-10 b(angen)m(t)37
+b(Plane)h(to)g(Direction)f(Cosines)202 b Fx(SLA)p Fn(_)p
+Fx(DTP2V)0 4158 y FB(A)m(CTION)44 b FD(:)63 b(Giv)m(en)42
+b(the)g(tangen)m(t-plane)h(co)s(ordinates)e(of)h(a)g(star)g(and)f(the)h
+(direction)f(cosines)g(of)h(the)227 4271 y(tangen)m(t)32
+b(p)s(oin)m(t,)e(determine)f(the)i(direction)e(cosines)h(of)g(the)h
+(star)g(\(double)e(precision\).)0 4459 y FB(CALL)45 b
+FD(:)77 b Ft(CALL)46 b(sla_DTP2V)g(\(XI,)g(ETA,)h(V0,)g(V\))0
+4799 y FB(GIVEN)e FD(:)277 4945 y Fq(XI,ET)-7 b(A)417
+b FB(D)565 b FD(tangen)m(t)32 b(plane)d(co)s(ordinates)h(of)h(star)g
+(\(radians\))277 5058 y Fq(V0)622 b FB(D\(3\))431 b FD(direction)29
+b(cosines)h(of)h(tangen)m(t)h(p)s(oin)m(t)0 5395 y FB(RETURNED)46
+b FD(:)277 5567 y Fq(V)668 b FB(D\(3\))431 b FD(direction)29
+b(cosines)h(of)h(star)p eop
+%%Page: 55 57
+55 56 bop 0 52 a Fw(SUN/67.70)3252 b FD(55)0 351 y FB(NOTES)44
+b FD(:)311 536 y(1.)i(If)30 b(v)m(ector)i(V0)f(is)f(not)g(of)h(unit)e
+(length,)h(the)g(returned)f(v)m(ector)j(V)f(will)d(b)s(e)h(wrong.)311
+680 y(2.)46 b(If)35 b(v)m(ector)i(V0)f(p)s(oin)m(ts)e(at)i(a)f(p)s
+(ole,)h(the)g(returned)e(v)m(ector)j(V)e(will)e(b)s(e)h(based)h(on)g
+(the)h(arbitrary)427 793 y(assumption)29 b(that)i Fl(\013)26
+b FD(=)f(0)31 b(at)g(the)f(tangen)m(t)i(p)s(oin)m(t.)311
+936 y(3.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+1049 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 1162 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 1306 y(4.)46 b(This)29 b(routine)g(is)h(the)g(Cartesian)g
+(equiv)-5 b(alen)m(t)30 b(of)g(the)h(routine)e(sla)p
+Ft(_)p FD(DTP2S.)p 0 1431 3780 8 v 0 1543 a Fx(SLA)p
+Fn(_)p Fx(DTPS2C)265 b Fm(Plate)37 b(cen)m(tre)h(from)f
+Fg(\030)6 b(;)20 b(\021)42 b Fm(and)d Fg(\013)q(;)20
+b(\016)270 b Fx(SLA)p Fn(_)p Fx(DTPS2C)0 1894 y FB(A)m(CTION)44
+b FD(:)39 b(F)-8 b(rom)27 b(the)h(tangen)m(t)g(plane)e(co)s(ordinates)h
+(of)g(a)g(star)h(of)f(kno)m(wn)f([)15 b Fl(\013;)g(\016)21
+b FD(],)28 b(determine)e(the)h([)15 b Fl(\013;)g(\016)20
+b FD(])227 2007 y(of)31 b(the)f(tangen)m(t)i(p)s(oin)m(t)e(\(double)f
+(precision\))0 2194 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_DTPS2C)f(\(XI,)i(ETA,)g(RA,)g(DEC,)f(RAZ1,)h(DECZ1,)f(RAZ2,)g
+(DECZ2,)g(N\))0 2534 y FB(GIVEN)f FD(:)277 2680 y Fq(XI,ET)-7
+b(A)417 b FB(D)565 b FD(tangen)m(t)32 b(plane)d(rectangular)i(co)s
+(ordinates)f(\(radians\))277 2793 y Fq(RA,DEC)378 b FB(D)565
+b FD(spherical)29 b(co)s(ordinates)h(\(radians\))0 3128
+y FB(RETURNED)46 b FD(:)277 3274 y Fq(RAZ1,DECZ1)174
+b FB(D)565 b FD(spherical)29 b(co)s(ordinates)h(of)g(tangen)m(t)i(p)s
+(oin)m(t,)e(solution)f(1)277 3387 y Fq(RAZ2,DECZ2)174
+b FB(D)565 b FD(spherical)29 b(co)s(ordinates)h(of)g(tangen)m(t)i(p)s
+(oin)m(t,)e(solution)f(2)277 3500 y Fq(N)668 b FB(I)605
+b FD(n)m(um)m(b)s(er)29 b(of)i(solutions:)1779 3613 y(0)g(=)f(no)g
+(solutions)f(returned)g(\(note)j(2\))1779 3726 y(1)f(=)f(only)g(the)g
+(\014rst)g(solution)f(is)g(useful)g(\(note)i(3\))1779
+3839 y(2)g(=)f(there)h(are)f(t)m(w)m(o)i(useful)d(solutions)g(\(note)i
+(3\))0 4174 y FB(NOTES)44 b FD(:)311 4359 y(1.)i(The)30
+b(RAZ1)h(and)e(RAZ2)i(v)-5 b(alues)29 b(returned)h(are)g(in)f(the)i
+(range)g(0)5 b Fo(\000)g FD(2)p Fl(\031)s FD(.)311 4503
+y(2.)46 b(Cases)39 b(where)f(there)h(is)f(no)g(solution)f(can)i(only)f
+(arise)g(near)g(the)h(p)s(oles.)64 b(F)-8 b(or)40 b(example,)g(it)e(is)
+427 4616 y(clearly)27 b(imp)s(ossible)d(for)j(a)h(star)f(at)h(the)g(p)s
+(ole)e(itself)g(to)j(ha)m(v)m(e)f(a)g(non-zero)g Fl(\030)j
+FD(v)-5 b(alue,)28 b(and)e(hence)i(it)427 4728 y(is)k(meaningless)g(to)
+h(ask)g(where)f(the)h(tangen)m(t)i(p)s(oin)m(t)c(w)m(ould)h(ha)m(v)m(e)
+i(to)f(b)s(e)g(to)g(bring)e(ab)s(out)i(this)427 4841
+y(com)m(bination)d(of)g Fl(\030)35 b FD(and)30 b Fl(\016)s
+FD(.)311 4985 y(3.)46 b(Also)33 b(near)f(the)h(p)s(oles,)f(cases)i(can)
+f(arise)f(where)g(there)h(are)g(t)m(w)m(o)g(useful)e(solutions.)46
+b(The)32 b(argu-)427 5098 y(men)m(t)j(N)g(indicates)e(whether)h(the)h
+(second)g(of)g(the)f(t)m(w)m(o)i(solutions)d(returned)h(is)f(useful.)52
+b(N)15 b(=)g(1)427 5211 y(indicates)41 b(only)h(one)g(useful)e
+(solution,)k(the)e(usual)f(case;)49 b(under)41 b(these)h
+(circumstances,)j(the)427 5324 y(second)35 b(solution)e(corresp)s(onds)
+g(to)j(the)f(\\o)m(v)m(er-the-p)s(ole")i(case,)g(and)d(this)f(is)h
+(re\015ected)h(in)e(the)427 5437 y(v)-5 b(alues)30 b(of)h(RAZ2)f(and)g
+(DECZ2)g(whic)m(h)f(are)i(returned.)311 5580 y(4.)46
+b(The)35 b(DECZ1)g(and)f(DECZ2)h(v)-5 b(alues)34 b(returned)g(are)h(in)
+f(the)h(range)g Fo(\006)p Fl(\031)s FD(,)h(but)f(in)e(the)i(ordinary)-8
+b(,)427 5693 y(non-p)s(ole-crossing,)29 b(case,)j(the)f(range)f(is)g
+Fo(\006)p Fl(\031)s(=)p FD(2.)p eop
+%%Page: 56 58
+56 57 bop 0 52 a FD(56)311 351 y(5.)46 b(RA,)31 b(DEC,)f(RAZ1,)h
+(DECZ1,)g(RAZ2,)f(DECZ2)h(are)f(all)g(in)f(radians.)311
+507 y(6.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+620 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 733 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 888 y(7.)46 b(When)26 b(w)m(orking)g(in)e([)15
+b Fl(x;)g(y)s(;)g(z)21 b FD(])26 b(rather)g(than)g(spherical)e(co)s
+(ordinates,)j(the)f(equiv)-5 b(alen)m(t)26 b(Cartesian)427
+1001 y(routine)k(sla)p Ft(_)p FD(DTPV2C)g(is)f(a)m(v)-5
+b(ailable.)p 0 1144 3780 8 v 0 1256 a Fx(SLA)p Fn(_)p
+Fx(DTPV2C)184 b Fm(Plate)37 b(cen)m(tre)h(from)e Fg(\030)6
+b(;)20 b(\021)43 b Fm(and)38 b Fg(x;)20 b(y)t(;)g(z)190
+b Fx(SLA)p Fn(_)p Fx(DTPV2C)0 1607 y FB(A)m(CTION)44
+b FD(:)38 b(F)-8 b(rom)26 b(the)f(tangen)m(t)i(plane)d(co)s(ordinates)h
+(of)g(a)h(star)f(of)h(kno)m(wn)e(direction)g(cosines,)i(determine)227
+1720 y(the)31 b(direction)e(cosines)h(of)g(the)h(tangen)m(t)h(p)s(oin)m
+(t)d(\(double)g(precision\))0 1907 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_DTPV2C)f(\(XI,)i(ETA,)g(V,)g(V01,)f(V02,)h(N\))0
+2285 y FB(GIVEN)e FD(:)277 2431 y Fq(XI,ET)-7 b(A)417
+b FB(D)565 b FD(tangen)m(t)32 b(plane)d(co)s(ordinates)h(of)h(star)g
+(\(radians\))277 2544 y Fq(V)668 b FB(D\(3\))431 b FD(direction)29
+b(cosines)h(of)h(star)0 2945 y FB(RETURNED)46 b FD(:)277
+3091 y Fq(V01)576 b FB(D\(3\))431 b FD(direction)29 b(cosines)h(of)h
+(tangen)m(t)h(p)s(oin)m(t,)d(solution)g(1)277 3204 y
+Fq(V02)576 b FB(D\(3\))431 b FD(direction)29 b(cosines)h(of)h(tangen)m
+(t)h(p)s(oin)m(t,)d(solution)g(2)277 3317 y Fq(N)668
+b FB(I)605 b FD(n)m(um)m(b)s(er)29 b(of)i(solutions:)1779
+3430 y(0)g(=)f(no)g(solutions)f(returned)g(\(note)j(2\))1779
+3543 y(1)f(=)f(only)g(the)g(\014rst)g(solution)f(is)g(useful)g(\(note)i
+(3\))1779 3656 y(2)g(=)f(there)h(are)f(t)m(w)m(o)i(useful)d(solutions)g
+(\(note)i(3\))0 4056 y FB(NOTES)44 b FD(:)311 4263 y(1.)i(The)30
+b(v)m(ector)i(V)f(m)m(ust)f(b)s(e)g(of)g(unit)f(length)h(or)g(the)h
+(result)e(will)f(b)s(e)h(wrong.)311 4418 y(2.)46 b(Cases)39
+b(where)f(there)h(is)f(no)g(solution)f(can)i(only)f(arise)g(near)g(the)
+h(p)s(oles.)64 b(F)-8 b(or)40 b(example,)g(it)e(is)427
+4531 y(clearly)30 b(imp)s(ossible)d(for)j(a)h(star)f(at)h(the)g(p)s
+(ole)e(itself)h(to)h(ha)m(v)m(e)g(a)g(non-zero)g(XI)f(v)-5
+b(alue.)311 4687 y(3.)46 b(Also)33 b(near)f(the)h(p)s(oles,)f(cases)i
+(can)f(arise)f(where)g(there)h(are)g(t)m(w)m(o)g(useful)e(solutions.)46
+b(The)32 b(argu-)427 4800 y(men)m(t)j(N)g(indicates)e(whether)h(the)h
+(second)g(of)g(the)f(t)m(w)m(o)i(solutions)d(returned)h(is)f(useful.)52
+b(N)15 b(=)g(1)427 4913 y(indicates)41 b(only)h(one)g(useful)e
+(solution,)k(the)e(usual)f(case;)49 b(under)41 b(these)h
+(circumstances,)j(the)427 5026 y(second)27 b(solution)f(can)h(b)s(e)g
+(regarded)f(as)i(v)-5 b(alid)25 b(if)h(the)h(v)m(ector)i(V02)f(is)e(in)
+m(terpreted)g(as)h(the)g(\\o)m(v)m(er-)427 5138 y(the-p)s(ole")k(case.)
+311 5294 y(4.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+5407 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 5520 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 5675 y(5.)46 b(This)29 b(routine)g(is)h(the)g(Cartesian)g
+(equiv)-5 b(alen)m(t)30 b(of)g(the)h(routine)e(sla)p
+Ft(_)p FD(DTPS2C.)p eop
+%%Page: 57 59
+57 58 bop 0 52 a Fw(SUN/67.70)3252 b FD(57)p 0 267 3780
+8 v 0 380 a Fx(SLA)p Fn(_)p Fx(DTT)875 b Fm(TT)38 b(min)m(us)f(UTC)877
+b Fx(SLA)p Fn(_)p Fx(DTT)0 730 y FB(A)m(CTION)44 b FD(:)c(Compute)28
+b(\001TT,)g(the)h(incremen)m(t)g(to)g(b)s(e)g(applied)d(to)k(Co)s
+(ordinated)d(Univ)m(ersal)h(Time)g(UTC)227 843 y(to)j(giv)m(e)g(T)-8
+b(errestrial)29 b(Time)h(TT.)0 1031 y FB(CALL)45 b FD(:)77
+b Ft(D)47 b(=)h(sla_DTT)d(\(DJU\))0 1334 y FB(GIVEN)g
+FD(:)277 1505 y Fq(DJU)551 b FB(D)565 b FD(UTC)30 b(date)h(as)g(a)f(mo)
+s(di\014ed)f(JD)h(\(JD)p Fo(\000)p FD(2400000.5\))0 1792
+y FB(RETURNED)46 b FD(:)277 1964 y Fq(sla)p Ft(_)p Fq(DTT)383
+b FB(D)565 b FD(TT)p Fo(\000)p FD(UTC)29 b(in)g(seconds)0
+2251 y FB(NOTES)44 b FD(:)311 2428 y(1.)i(The)32 b(UTC)f(is)g(sp)s
+(eci\014ed)f(to)i(b)s(e)f(a)i(date)f(rather)g(than)f(a)h(time)g(to)g
+(indicate)f(that)i(care)f(needs)g(to)427 2540 y(b)s(e)g(tak)m(en)i(not)
+f(to)h(sp)s(ecify)d(an)i(instan)m(t)g(whic)m(h)e(lies)h(within)e(a)j
+(leap)g(second.)48 b(Though)32 b(in)f(most)427 2653 y(cases)39
+b(UTC)e(can)i(include)c(the)j(fractional)g(part,)i(correct)f(b)s(eha)m
+(viour)d(on)i(the)g(da)m(y)h(of)f(a)g(leap)427 2766 y(second)31
+b(can)f(b)s(e)g(guaran)m(teed)i(only)d(up)g(to)i(the)g(end)f(of)g(the)h
+(second)f(23)2892 2733 y Fu(h)2952 2766 y FD(59)3042
+2733 y Fu(m)3121 2766 y FD(59)3211 2733 y Fu(s)3244 2766
+y FD(.)311 2902 y(2.)46 b(Pre)30 b(1972)j(Jan)m(uary)d(1)g(a)h(\014xed)
+f(v)-5 b(alue)30 b(of)g(10)h(+)f(ET)p Fo(\000)p FD(T)-8
+b(AI)30 b(is)f(returned.)311 3037 y(3.)46 b(TT)30 b(is)f(one)i(in)m
+(terpretation)f(of)g(the)h(defunct)f(time)g(scale)g Fq(Ephemeris)k
+(Time)p FD(,)c(ET.)311 3172 y(4.)46 b(See)31 b(also)f(the)h(routine)e
+(sla)p Ft(_)p FD(DT,)h(whic)m(h)f(roughly)g(estimates)i(ET)p
+Fo(\000)p FD(UT)f(for)g(historical)e(ep)s(o)s(c)m(hs.)p
+0 3273 V 0 3386 a Fx(SLA)p Fn(_)p Fx(D)l(V2TP)205 b Fm(Direction)37
+b(Cosines)h(to)g(T)-10 b(angen)m(t)37 b(Plane)205 b Fx(SLA)p
+Fn(_)p Fx(D)l(V2TP)0 3736 y FB(A)m(CTION)44 b FD(:)39
+b(Giv)m(en)27 b(the)g(direction)f(cosines)h(of)g(a)h(star)f(and)g(of)g
+(the)h(tangen)m(t)g(p)s(oin)m(t,)f(determine)g(the)g(star's)227
+3849 y(tangen)m(t-plane)32 b(co)s(ordinates)e(\(double)f(precision\).)0
+4037 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_DV2TP)g(\(V,)h(V0,)f
+(XI,)h(ETA,)g(J\))0 4344 y FB(GIVEN)e FD(:)277 4490 y
+Fq(V)668 b FB(D\(3\))431 b FD(direction)29 b(cosines)h(of)h(star)277
+4603 y Fq(V0)622 b FB(D\(3\))431 b FD(direction)29 b(cosines)h(of)h
+(tangen)m(t)h(p)s(oin)m(t)0 4881 y FB(RETURNED)46 b FD(:)277
+5027 y Fq(XI,ET)-7 b(A)417 b FB(D)565 b FD(tangen)m(t)32
+b(plane)d(co)s(ordinates)h(\(radians\))277 5140 y Fq(J)688
+b FB(I)605 b FD(status:)1825 5253 y(0)31 b(=)f(OK,)g(star)g(on)g
+(tangen)m(t)i(plane)1825 5366 y(1)f(=)f(error,)g(star)g(to)s(o)h(far)g
+(from)f(axis)1825 5479 y(2)h(=)f(error,)g(an)m(tistar)g(on)h(tangen)m
+(t)h(plane)1825 5592 y(3)f(=)f(error,)g(an)m(tistar)g(to)s(o)i(far)e
+(from)g(axis)p eop
+%%Page: 58 60
+58 59 bop 0 52 a FD(58)0 351 y FB(NOTES)44 b FD(:)311
+559 y(1.)i(If)32 b(v)m(ector)h(V0)f(is)f(not)h(of)g(unit)e(length,)i
+(or)f(if)g(v)m(ector)i(V)f(is)f(of)h(zero)g(length,)g(the)g(results)e
+(will)f(b)s(e)427 672 y(wrong.)311 828 y(2.)46 b(If)35
+b(V0)i(p)s(oin)m(ts)d(at)i(a)g(p)s(ole,)h(the)e(returned)g
+Fl(\030)t(;)15 b(\021)39 b FD(will)33 b(b)s(e)i(based)g(on)h(the)g
+(arbitrary)e(assumption)427 941 y(that)d Fl(\013)26 b
+FD(=)f(0)31 b(at)g(the)f(tangen)m(t)i(p)s(oin)m(t.)311
+1097 y(3.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+1210 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 1323 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 1479 y(4.)46 b(This)29 b(routine)g(is)h(the)g(Cartesian)g
+(equiv)-5 b(alen)m(t)30 b(of)g(the)h(routine)e(sla)p
+Ft(_)p FD(DS2TP)-8 b(.)p 0 1632 3780 8 v 0 1745 a Fx(SLA)p
+Fn(_)p Fx(D)l(VD)l(V)785 b Fm(Scalar)37 b(Pro)s(duct)785
+b Fx(SLA)p Fn(_)p Fx(D)l(VD)l(V)0 2095 y FB(A)m(CTION)44
+b FD(:)c(Scalar)30 b(pro)s(duct)g(of)g(t)m(w)m(o)i(3-v)m(ectors)g
+(\(double)e(precision\).)0 2283 y FB(CALL)45 b FD(:)77
+b Ft(D)47 b(=)h(sla_DVDV)d(\(VA,)i(VB\))0 2663 y FB(GIVEN)e
+FD(:)277 2809 y Fq(V)-9 b(A)609 b FB(D\(3\))431 b FD(\014rst)30
+b(v)m(ector)277 2922 y Fq(VB)604 b FB(D\(3\))431 b FD(second)31
+b(v)m(ector)0 3325 y FB(RETURNED)46 b FD(:)277 3497 y
+Fq(sla)p Ft(_)p Fq(D)n(VD)n(V)312 b FB(D)565 b FD(scalar)30
+b(pro)s(duct)g(V)-10 b(A.VB)p 0 3666 V 0 3779 a Fx(SLA)p
+Fn(_)p Fx(D)l(VN)820 b Fm(Normalize)35 b(V)-10 b(ector)820
+b Fx(SLA)p Fn(_)p Fx(D)l(VN)0 4129 y FB(A)m(CTION)44
+b FD(:)c(Normalize)31 b(a)f(3-v)m(ector,)j(also)e(giving)e(the)h(mo)s
+(dulus)e(\(double)h(precision\).)0 4317 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DVN)g(\(V,)h(UV,)g(VM\))0
+4697 y FB(GIVEN)e FD(:)277 4868 y Fq(V)668 b FB(D\(3\))431
+b FD(v)m(ector)0 5280 y FB(RETURNED)46 b FD(:)277 5427
+y Fq(UV)600 b FB(D\(3\))431 b FD(unit)29 b(v)m(ector)j(in)d(direction)g
+(of)i(V)277 5539 y Fq(VM)586 b FB(D)565 b FD(mo)s(dulus)28
+b(of)i(V)p eop
+%%Page: 59 61
+59 60 bop 0 52 a Fw(SUN/67.70)3252 b FD(59)0 351 y FB(NOTE)44
+b FD(:)d(If)30 b(the)g(mo)s(dulus)e(of)j(V)f(is)f(zero,)j(UV)f(is)e
+(set)i(to)g(zero)g(as)g(w)m(ell.)p 0 458 3780 8 v 0 571
+a Fx(SLA)p Fn(_)p Fx(D)l(VXV)772 b Fm(V)-10 b(ector)38
+b(Pro)s(duct)773 b Fx(SLA)p Fn(_)p Fx(D)l(VXV)0 921 y
+FB(A)m(CTION)44 b FD(:)c(V)-8 b(ector)33 b(pro)s(duct)c(of)h(t)m(w)m(o)
+i(3-v)m(ectors)h(\(double)c(precision\).)0 1109 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DVXV)g(\(VA,)h(VB,)f(VC\))0
+1423 y FB(GIVEN)f FD(:)277 1569 y Fq(V)-9 b(A)609 b FB(D\(3\))431
+b FD(\014rst)30 b(v)m(ector)277 1682 y Fq(VB)604 b FB(D\(3\))431
+b FD(second)31 b(v)m(ector)0 1974 y FB(RETURNED)46 b
+FD(:)277 2146 y Fq(V)n(C)605 b FB(D\(3\))431 b FD(v)m(ector)32
+b(pro)s(duct)d(V)-10 b(A)p Fo(\002)p FD(VB)p 0 2268 V
+0 2381 a Fx(SLA)p Fn(_)p Fx(E2H)988 b Fg(h;)20 b(\016)44
+b Fm(to)38 b(Az,El)987 b Fx(SLA)p Fn(_)p Fx(E2H)0 2732
+y FB(A)m(CTION)44 b FD(:)c(Equatorial)30 b(to)h(horizon)f(co)s
+(ordinates)g(\(single)f(precision\).)0 2919 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_DE2H)g(\(HA,)h(DEC,)f(PHI,)h(AZ,)g(EL\))0
+3234 y FB(GIVEN)e FD(:)277 3380 y Fq(HA)600 b FB(R)567
+b FD(hour)30 b(angle)g(\(radians\))277 3493 y Fq(DEC)540
+b FB(R)567 b FD(declination)29 b(\(radians\))277 3606
+y Fq(PHI)571 b FB(R)c FD(latitude)30 b(\(radians\))0
+3898 y FB(RETURNED)46 b FD(:)277 4044 y Fq(AZ)612 b FB(R)567
+b FD(azim)m(uth)30 b(\(radians\))277 4157 y Fq(EL)617
+b FB(R)567 b FD(elev)-5 b(ation)30 b(\(radians\))0 4449
+y FB(NOTES)44 b FD(:)311 4628 y(1.)i(Azim)m(uth)28 b(is)g(returned)f
+(in)g(the)i(range)g(0)q Fo(\000)q FD(2)p Fl(\031)s FD(;)h(north)e(is)g
+(zero,)i(and)e(east)h(is)f(+)p Fl(\031)s(=)p FD(2.)41
+b(Elev)-5 b(ation)27 b(is)427 4741 y(returned)i(in)h(the)g(range)h
+Fo(\006)p Fl(\031)s FD(.)311 4878 y(2.)46 b(The)32 b(latitude)f(m)m
+(ust)i(b)s(e)e(geo)s(detic.)48 b(In)31 b(critical)h(applications,)f
+(corrections)i(for)f(p)s(olar)f(motion)427 4991 y(should)e(b)s(e)g
+(applied.)311 5128 y(3.)46 b(In)36 b(some)h(applications)e(it)i(will)d
+(b)s(e)i(imp)s(ortan)m(t)g(to)h(sp)s(ecify)f(the)h(correct)h(t)m(yp)s
+(e)f(of)g(hour)e(angle)427 5241 y(and)f(declination)f(in)g(order)h(to)h
+(pro)s(duce)e(the)i(required)d(t)m(yp)s(e)j(of)g(azim)m(uth)f(and)f
+(elev)-5 b(ation.)53 b(In)427 5354 y(particular,)25 b(it)f(ma)m(y)h(b)s
+(e)f(imp)s(ortan)m(t)g(to)h(distinguish)c(b)s(et)m(w)m(een)26
+b(elev)-5 b(ation)24 b(as)h(a\013ected)h(b)m(y)f(refrac-)427
+5467 y(tion,)g(whic)m(h)d(w)m(ould)h(require)f(the)i
+Fq(observe)-5 b(d)24 b FD([)15 b Fl(h;)g(\016)20 b FD(],)26
+b(and)d(the)g(elev)-5 b(ation)24 b Fq(in)i(vacuo)p FD(,)f(whic)m(h)e(w)
+m(ould)427 5580 y(require)35 b(the)h Fq(top)-5 b(o)g(c)g(entric)39
+b FD([)15 b Fl(h;)g(\016)20 b FD(].)59 b(If)35 b(the)i(e\013ects)g(of)f
+(diurnal)d(ab)s(erration)j(can)g(b)s(e)g(neglected,)427
+5693 y(the)31 b Fq(app)-5 b(ar)g(ent)33 b FD([)15 b Fl(h;)g(\016)20
+b FD(])31 b(ma)m(y)g(b)s(e)f(used)f(instead)h(of)g(the)h(top)s(o)s(cen)
+m(tric)f([)15 b Fl(h;)g(\016)21 b FD(].)p eop
+%%Page: 60 62
+60 61 bop 0 52 a FD(60)311 351 y(4.)46 b(No)31 b(range)g(c)m(hec)m
+(king)g(of)g(argumen)m(ts)f(is)g(carried)f(out.)311 484
+y(5.)46 b(In)28 b(applications)e(whic)m(h)i(in)m(v)m(olv)m(e)g(man)m(y)
+h(suc)m(h)f(calculations,)g(rather)g(than)g(calling)f(the)h(presen)m(t)
+427 597 y(routine)i(it)g(will)e(b)s(e)i(more)g(e\016cien)m(t)h(to)h
+(use)e(inline)d(co)s(de,)k(ha)m(ving)g(previously)d(computed)i(\014xed)
+427 710 y(terms)g(suc)m(h)f(as)h(sine)f(and)g(cosine)g(of)h(latitude,)f
+(and)g(\(for)h(trac)m(king)g(a)g(star\))g(sine)f(and)g(cosine)g(of)427
+823 y(declination.)p 0 898 3780 8 v 0 1011 a Fx(SLA)p
+Fn(_)p Fx(EAR)-11 b(TH)514 b Fm(Appro)m(x)38 b(Earth)f(P)m(os/V)-10
+b(el)514 b Fx(SLA)p Fn(_)p Fx(EAR)-11 b(TH)0 1361 y FB(A)m(CTION)44
+b FD(:)c(Appro)m(ximate)31 b(helio)s(cen)m(tric)e(p)s(osition)f(and)i
+(v)m(elo)s(cit)m(y)h(of)f(the)h(Earth)f(\(single)f(precision\).)0
+1549 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_EARTH)g(\(IY,)g(ID,)h
+(FD,)g(PV\))0 1845 y FB(GIVEN)e FD(:)277 1991 y Fq(IY)633
+b FB(I)605 b FD(y)m(ear)277 2104 y Fq(ID)632 b FB(I)605
+b FD(da)m(y)31 b(in)e(y)m(ear)i(\(1)g(=)f(Jan)g(1st\))277
+2217 y Fq(FD)608 b FB(R)567 b FD(fraction)30 b(of)h(da)m(y)0
+2477 y FB(RETURNED)46 b FD(:)277 2649 y Fq(PV)606 b FB(R\(6\))433
+b FD(Earth)30 b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43
+b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(])31 b(\(A)m(U,)g(A)m(U)g(s)2947 2615 y Fp(\000)p
+Fu(1)3042 2649 y FD(\))0 2917 y FB(NOTES)44 b FD(:)311
+3091 y(1.)i(The)30 b(date)g(and)f(time)h(is)f(TDB)h(\(lo)s(osely)f
+(ET\))h(in)e(a)j(Julian)c(calendar)i(whic)m(h)g(has)h(b)s(een)f
+(aligned)427 3204 y(to)c(the)f(ordinary)d(Gregorian)j(calendar)f(for)h
+(the)g(in)m(terv)-5 b(al)22 b(1900)k(Marc)m(h)e(1)g(to)h(2100)g(F)-8
+b(ebruary)23 b(28.)427 3317 y(The)30 b(y)m(ear)h(and)f(da)m(y)h(can)g
+(b)s(e)e(obtained)h(b)m(y)g(calling)f(sla)p Ft(_)p FD(CAL)-8
+b(YD)30 b(or)h(sla)p Ft(_)p FD(CL)-8 b(YD.)311 3450 y(2.)46
+b(The)31 b(Earth)g(helio)s(cen)m(tric)f(6-v)m(ector)k(is)c(referred)g
+(to)i(the)g(FK4)g(mean)f(equator)h(and)f(equino)m(x)f(of)427
+3563 y(date.)311 3696 y(3.)46 b(Maxim)m(um/RMS)30 b(errors)g
+(1950-2050:)506 3828 y Fo(\017)46 b FD(13/5)32 b Fo(\002)p
+FD(10)970 3795 y Fp(\000)p Fu(5)1096 3828 y FD(A)m(U)f(=)f(19200/7600)
+35 b(km)30 b(in)f(p)s(osition)506 3951 y Fo(\017)46 b
+FD(47/26)33 b Fo(\002)p FD(10)1016 3918 y Fp(\000)p Fu(10)1176
+3951 y FD(A)m(U)f(s)1377 3918 y Fp(\000)p Fu(1)1501 3951
+y FD(=)e(0.0070/0.0039)36 b(km)30 b(s)2373 3918 y Fp(\000)p
+Fu(1)2497 3951 y FD(in)f(sp)s(eed)311 4084 y(4.)46 b(More)31
+b(accurate)h(results)d(are)i(obtainable)f(with)f(the)h(routines)f(sla)p
+Ft(_)p FD(EVP)h(and)g(sla)p Ft(_)p FD(EPV.)p 0 4168 V
+0 4281 a Fx(SLA)p Fn(_)p Fx(ECLEQ)559 b Fm(Ecliptic)37
+b(to)h(Equatorial)555 b Fx(SLA)p Fn(_)p Fx(ECLEQ)0 4631
+y FB(A)m(CTION)44 b FD(:)c(T)-8 b(ransformation)30 b(from)g(ecliptic)f
+(longitude)g(and)h(latitude)f(to)i(J2000.0)i([)15 b Fl(\013;)g(\016)20
+b FD(].)0 4818 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_ECLEQ)g(\(DL,)
+g(DB,)h(DATE,)g(DR,)f(DD\))0 5115 y FB(GIVEN)f FD(:)277
+5261 y Fq(DL,DB)449 b FB(D)565 b FD(ecliptic)29 b(longitude)g(and)g
+(latitude)g(\(mean)h(of)h(date,)f(IA)m(U)1658 5374 y(1980)i(theory)-8
+b(,)32 b(radians\))277 5487 y Fq(D)n(A)-7 b(TE)481 b
+FB(D)565 b FD(TDB)68 b(\(formerly)f(ET\))g(as)h(Mo)s(di\014ed)d(Julian)
+h(Date)1658 5600 y(\(JD)p Fo(\000)p FD(2400000.5\))p
+eop
+%%Page: 61 63
+61 62 bop 0 52 a Fw(SUN/67.70)3252 b FD(61)0 351 y FB(RETURNED)46
+b FD(:)277 523 y Fq(DR,DD)435 b FB(D)565 b FD(J2000.0)33
+b(mean)d([)15 b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))p
+0 660 3780 8 v 0 773 a Fx(SLA)p Fn(_)p Fx(ECMA)-11 b(T)441
+b Fm(F)-10 b(orm)38 b Fg(\013)q(;)20 b(\016)37 b Fh(!)c
+Fg(\025;)20 b(\014)45 b Fm(Matrix)442 b Fx(SLA)p Fn(_)p
+Fx(ECMA)-11 b(T)0 1123 y FB(A)m(CTION)44 b FD(:)c(F)-8
+b(orm)31 b(the)g(equatorial)f(to)h(ecliptic)e(rotation)i(matrix)f(\(IA)
+m(U)h(1980)h(theory\).)0 1311 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_ECMAT)g(\(DATE,)g(RMAT\))0 1645 y
+FB(GIVEN)f FD(:)277 1791 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(TDB)68 b(\(formerly)f(ET\))g(as)h(Mo)s(di\014ed)d(Julian)h(Date)
+1658 1904 y(\(JD)p Fo(\000)p FD(2400000.5\))0 2230 y
+FB(RETURNED)46 b FD(:)277 2401 y Fq(RMA)-7 b(T)462 b
+FB(D\(3,3\))350 b FD(rotation)31 b(matrix)0 2736 y FB(NOTES)44
+b FD(:)311 2919 y(1.)i(RMA)-8 b(T)31 b(is)f(matrix)f
+FB(M)i FD(in)e(the)h(expression)g FB(v)2007 2934 y Ff(ecl)2126
+2919 y FD(=)g FB(M)p Fo(\001)p FB(v)2406 2933 y Ff(eq)r(u)2519
+2919 y FD(.)311 3061 y(2.)46 b(The)30 b(equator,)h(equino)m(x)f(and)g
+(ecliptic)f(are)i(mean)f(of)h(date.)0 3396 y FB(REFERENCE)44
+b FD(:)d(Murra)m(y)-8 b(,)31 b(C.A.,)g Fq(V)-7 b(e)i(ctorial)33
+b(Astr)-5 b(ometry)p FD(,)33 b(section)d(4.3.)p 0 3517
+V 0 3630 a Fx(SLA)p Fn(_)p Fx(ECOR)505 b Fm(R)-13 b(V)39
+b(&)g(Time)d(Corrns)i(to)g(Sun)505 b Fx(SLA)p Fn(_)p
+Fx(ECOR)0 3980 y FB(A)m(CTION)44 b FD(:)39 b(Comp)s(onen)m(t)27
+b(of)g(Earth)g(orbit)g(v)m(elo)s(cit)m(y)g(and)g(helio)s(cen)m(tric)f
+(ligh)m(t)h(time)g(in)f(a)h(giv)m(en)h(direction.)0 4168
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_ECOR)g(\(RM,)h(DM,)f(IY,)h
+(ID,)g(FD,)g(RV,)g(TL\))0 4502 y FB(GIVEN)e FD(:)277
+4648 y Fq(RM,DM)409 b FB(R)567 b FD(mean)31 b([)15 b
+Fl(\013;)g(\016)20 b FD(])30 b(of)h(date)g(\(radians\))277
+4761 y Fq(IY)633 b FB(I)605 b FD(y)m(ear)277 4873 y Fq(ID)632
+b FB(I)605 b FD(da)m(y)31 b(in)e(y)m(ear)i(\(1)g(=)f(Jan)g(1st\))277
+4986 y Fq(FD)608 b FB(R)567 b FD(fraction)30 b(of)h(da)m(y)0
+5312 y FB(RETURNED)46 b FD(:)277 5458 y Fq(R)-9 b(V)611
+b FB(R)567 b FD(comp)s(onen)m(t)31 b(of)f(Earth)g(orbital)g(v)m(elo)s
+(cit)m(y)g(\(km)h(s)3340 5425 y Fp(\000)p Fu(1)3434 5458
+y FD(\))277 5571 y Fq(TL)614 b FB(R)567 b FD(comp)s(onen)m(t)31
+b(of)f(helio)s(cen)m(tric)f(ligh)m(t)h(time)g(\(s\))p
+eop
+%%Page: 62 64
+62 63 bop 0 52 a FD(62)0 351 y FB(NOTES)44 b FD(:)311
+528 y(1.)i(The)30 b(date)g(and)f(time)h(is)f(TDB)h(\(lo)s(osely)f(ET\))
+h(in)e(a)j(Julian)c(calendar)i(whic)m(h)g(has)h(b)s(een)f(aligned)427
+641 y(to)35 b(the)g(ordinary)e(Gregorian)h(calendar)g(for)g(the)h(in)m
+(terv)-5 b(al)33 b(1900)k(Marc)m(h)e(1)f(to)i(2100)g(F)-8
+b(ebruary)427 754 y(28.)42 b(The)30 b(y)m(ear)h(and)f(da)m(y)g(can)h(b)
+s(e)f(obtained)g(b)m(y)g(calling)f(sla)p Ft(_)p FD(CAL)-8
+b(YD)30 b(or)g(sla)p Ft(_)p FD(CL)-8 b(YD.)311 890 y(2.)46
+b(Sign)29 b(con)m(v)m(en)m(tion:)506 1026 y Fo(\017)46
+b FD(The)30 b(v)m(elo)s(cit)m(y)h(comp)s(onen)m(t)f(is)f(+v)m(e)i(when)
+e(the)h(Earth)g(is)g(receding)f(from)h(the)g(giv)m(en)g(p)s(oin)m(t)597
+1138 y(on)h(the)f(sky)-8 b(.)506 1263 y Fo(\017)46 b
+FD(The)33 b(ligh)m(t)e(time)i(comp)s(onen)m(t)g(is)f(+v)m(e)h(when)f
+(the)h(Earth)f(lies)g(b)s(et)m(w)m(een)h(the)g(Sun)e(and)h(the)597
+1376 y(giv)m(en)f(p)s(oin)m(t)e(on)h(the)h(sky)-8 b(.)311
+1511 y(3.)46 b(Accuracy:)506 1647 y Fo(\017)g FD(The)31
+b(v)m(elo)s(cit)m(y)h(comp)s(onen)m(t)g(is)e(usually)f(within)g(0.004)k
+(km)e(s)2705 1614 y Fp(\000)p Fu(1)2831 1647 y FD(of)g(the)h(correct)g
+(v)-5 b(alue)31 b(and)597 1760 y(is)f(nev)m(er)g(in)f(error)h(b)m(y)h
+(more)f(than)g(0.007)j(km)d(s)2254 1727 y Fp(\000)p Fu(1)2348
+1760 y FD(.)506 1884 y Fo(\017)46 b FD(The)36 b(error)g(in)f(ligh)m(t)h
+(time)g(correction)h(is)e(ab)s(out)h(0)2399 1851 y Fu(s)2404
+1884 y Fl(:)p FD(03)i(at)f(w)m(orst,)h(but)e(is)f(usually)f(b)s(etter)
+597 1997 y(than)c(0)854 1964 y Fu(s)859 1997 y Fl(:)p
+FD(01.)427 2133 y(F)-8 b(or)31 b(applications)e(requiring)f(higher)h
+(accuracy)-8 b(,)32 b(see)f(the)g(sla)p Ft(_)p FD(EVP)e(and)h(sla)p
+Ft(_)p FD(EPV)f(routines.)p 0 2234 3780 8 v 0 2347 a
+Fx(SLA)p Fn(_)p Fx(EG50)669 b Fm(B1950)37 b Fg(\013)q(;)20
+b(\016)43 b Fm(to)38 b(Galactic)667 b Fx(SLA)p Fn(_)p
+Fx(EG50)0 2697 y FB(A)m(CTION)44 b FD(:)59 b(T)-8 b(ransformation)38
+b(from)h(B1950.0)k(FK4)d(equatorial)f(co)s(ordinates)g(to)h(IA)m(U)g
+(1958)h(galactic)227 2810 y(co)s(ordinates.)0 2998 y
+FB(CALL)k FD(:)77 b Ft(CALL)46 b(sla_EG50)g(\(DR,)h(DD,)f(DL,)h(DB\))0
+3306 y FB(GIVEN)e FD(:)277 3477 y Fq(DR,DD)435 b FB(D)565
+b FD(B1950.0)33 b([)15 b Fl(\013;)g(\016)21 b FD(])30
+b(\(radians\))0 3766 y FB(RETURNED)46 b FD(:)277 3937
+y Fq(DL,DB)449 b FB(D)565 b FD(galactic)29 b(longitude)e(and)h
+(latitude)f([)15 b Fl(l)2966 3904 y Ff(I)-7 b(I)3030
+3937 y Fl(;)15 b(b)3109 3904 y Ff(I)-7 b(I)3189 3937
+y FD(])28 b(\(radians\))0 4226 y FB(NOTE)44 b FD(:)d(The)30
+b(equatorial)g(co)s(ordinates)h(are)g(B1950.0)i(FK4.)42
+b(Use)30 b(the)h(routine)f(sla)p Ft(_)p FD(EQGAL)f(if)h(con)m(v)m(er-)
+227 4339 y(sion)g(from)g(J2000.0)i(FK5)f(co)s(ordinates)f(is)f
+(required.)0 4628 y FB(REFERENCE)44 b FD(:)d(Blaau)m(w)30
+b Fq(et)j(al.)p FD(,)e(1960,)h Fq(Mon.Not.R.astr.So)-5
+b(c.)p FD(,)33 b FB(121)p FD(,)e(123.)p 0 4729 V 0 4842
+a Fx(SLA)p Fn(_)p Fx(EL2UE)224 b Fm(Con)m(v)m(en)m(tional)35
+b(to)j(Univ)m(ersal)f(Elemen)m(ts)222 b Fx(SLA)p Fn(_)p
+Fx(EL2UE)0 5192 y FB(A)m(CTION)44 b FD(:)c(T)-8 b(ransform)30
+b(con)m(v)m(en)m(tional)h(osculating)f(orbital)f(elemen)m(ts)i(in)m(to)
+f(\\univ)m(ersal")g(form.)0 5380 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_EL2UE)g(\(DATE,)g(JFORM,)g(EPOCH,)g(ORBINC,)g
+(ANODE,)1192 5493 y(PERIH,)f(AORQ,)i(E,)g(AORL,)f(DM,)1192
+5606 y(U,)h(JSTAT\))p eop
+%%Page: 63 65
+63 64 bop 0 52 a Fw(SUN/67.70)3252 b FD(63)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(ep)s(o)s(c)m(h)30
+b(\(TT)g(MJD\))h(of)g(osculation)f(\(Note)i(3\))277 610
+y Fq(JF)n(ORM)413 b FB(I)605 b FD(c)m(hoice)31 b(of)g(elemen)m(t)g(set)
+g(\(1-3;)h(Note)f(6\))277 723 y Fq(EPOCH)409 b FB(D)565
+b FD(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)g(\()p Fl(t)2462
+737 y Fu(0)2531 723 y FD(or)g Fl(T)13 b FD(,)30 b(TT)g(MJD\))277
+836 y Fq(ORBINC)368 b FB(D)565 b FD(inclination)28 b(\()p
+Fl(i)p FD(,)j(radians\))277 949 y Fq(ANODE)399 b FB(D)565
+b FD(longitude)29 b(of)i(the)f(ascending)g(no)s(de)g(\(\012,)g
+(radians\))277 1062 y Fq(PERIH)443 b FB(D)565 b FD(longitude)29
+b(or)i(argumen)m(t)f(of)h(p)s(erihelion)c(\()p Fl($)33
+b FD(or)e Fl(!)s FD(,)1825 1175 y(radians\))277 1288
+y Fq(A)n(OR)n(Q)466 b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s
+(erihelion)d(distance)k(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277
+1401 y Fq(E)674 b FB(D)565 b FD(eccen)m(tricit)m(y)32
+b(\()p Fl(e)p FD(\))277 1514 y Fq(A)n(ORL)477 b FB(D)565
+b FD(mean)31 b(anomaly)f(or)g(longitude)f(\()p Fl(M)41
+b FD(or)30 b Fl(L)p FD(,)h(radians,)1825 1626 y(JF)m(ORM=1,2)g(only\))
+277 1739 y Fq(DM)585 b FB(D)565 b FD(daily)29 b(motion)h(\()p
+Fl(n)p FD(,)g(radians,)g(JF)m(ORM=1)h(only\))0 2082 y
+FB(RETURNED)46 b FD(:)277 2228 y Fq(U)668 b FB(D\(13\))379
+b FD(univ)m(ersal)29 b(orbital)g(elemen)m(ts)i(\(Note)h(1\))537
+2341 y(\(1\))1006 b(com)m(bined)30 b(mass)g(\()p Fl(M)h
+FD(+)20 b Fl(m)p FD(\))537 2454 y(\(2\))1006 b(total)31
+b(energy)g(of)g(the)f(orbit)g(\()p Fl(\013)p FD(\))537
+2567 y(\(3\))1006 b(reference)31 b(\(osculating\))f(ep)s(o)s(c)m(h)h
+(\()p Fl(t)2869 2581 y Fu(0)2908 2567 y FD(\))499 2680
+y(\(4-6\))969 b(p)s(osition)29 b(at)i(reference)g(ep)s(o)s(c)m(h)f(\()p
+FB(r)2836 2694 y Fu(0)2876 2680 y FD(\))499 2793 y(\(7-9\))969
+b(v)m(elo)s(cit)m(y)31 b(at)g(reference)g(ep)s(o)s(c)m(h)f(\()p
+FB(v)2837 2807 y Fu(0)2877 2793 y FD(\))514 2906 y(\(10\))984
+b(helio)s(cen)m(tric)29 b(distance)h(at)h(reference)g(ep)s(o)s(c)m(h)
+514 3019 y(\(11\))984 b FB(r)1701 3033 y Fu(0)1741 3019
+y Fl(:)p FB(v)1821 3033 y Fu(0)514 3132 y FD(\(12\))g(date)31
+b(\()p Fl(t)p FD(\))514 3244 y(\(13\))984 b(univ)m(ersal)29
+b(eccen)m(tric)i(anomaly)f(\()p Fl( )s FD(\))i(of)e(date,)i(appro)m(x)
+277 3470 y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1866
+3583 y(0)30 b(=)h(OK)1798 3696 y Fo(\000)p FD(1)f(=)g(illegal)f(JF)m
+(ORM)1798 3809 y Fo(\000)p FD(2)h(=)g(illegal)f(E)1798
+3922 y Fo(\000)p FD(3)h(=)g(illegal)f(A)m(OR)m(Q)1798
+4035 y Fo(\000)p FD(4)h(=)g(illegal)f(DM)1798 4148 y
+Fo(\000)p FD(5)h(=)g(n)m(umerical)f(error)0 4491 y FB(NOTES)44
+b FD(:)311 4677 y(1.)i(The)40 b(\\univ)m(ersal")f(elemen)m(ts)h(are)g
+(those)h(whic)m(h)d(de\014ne)h(the)h(orbit)f(for)h(the)g(purp)s(oses)e
+(of)i(the)427 4790 y(metho)s(d)32 b(of)g(univ)m(ersal)e(v)-5
+b(ariables)31 b(\(see)i(reference\).)47 b(They)32 b(consist)f(of)i(the)
+f(com)m(bined)f(mass)h(of)427 4903 y(the)h(t)m(w)m(o)h(b)s(o)s(dies,)e
+(an)g(ep)s(o)s(c)m(h,)h(and)f(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m
+(y)h(v)m(ectors)h(\(arbitrary)e(reference)427 5016 y(frame\))j(at)g
+(that)g(ep)s(o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g
+(includes)e(also)j(v)-5 b(arious)33 b(quan)m(tities)427
+5128 y(that)i(can,)g(in)d(fact,)k(b)s(e)d(deriv)m(ed)f(from)i(the)f
+(other)h(information.)49 b(This)32 b(approac)m(h)i(is)f(tak)m(en)i(to)
+427 5241 y(a)m(v)m(oiding)d(unnecessary)f(computation)h(and)g(loss)f
+(of)h(accuracy)-8 b(.)48 b(The)31 b(supplemen)m(tary)g(quan)m(ti-)427
+5354 y(ties)22 b(are)h(\(i\))f Fl(\013)p FD(,)i(whic)m(h)d(is)g(prop)s
+(ortional)f(to)j(the)g(total)g(energy)f(of)h(the)f(orbit,)h(\(ii\))e
+(the)i(helio)s(cen)m(tric)427 5467 y(distance)35 b(at)g(ep)s(o)s(c)m
+(h,)h(\(iii\))d(the)i(out)m(w)m(ards)g(comp)s(onen)m(t)g(of)g(the)g(v)m
+(elo)s(cit)m(y)g(at)h(the)f(giv)m(en)f(ep)s(o)s(c)m(h,)427
+5580 y(\(iv\))29 b(an)f(estimate)h(of)g Fl( )s FD(,)h(the)e(\\univ)m
+(ersal)g(eccen)m(tric)h(anomaly")g(at)g(a)g(giv)m(en)g(date)g(and)f
+(\(v\))h(that)427 5693 y(date.)p eop
+%%Page: 64 66
+64 65 bop 0 52 a FD(64)311 351 y(2.)46 b(The)25 b(companion)g(routine)f
+(is)h(sla)p Ft(_)p FD(UE2PV.)h(This)d(tak)m(es)k(the)f(set)g(of)g(n)m
+(um)m(b)s(ers)e(that)i(the)f(presen)m(t)427 464 y(routine)31
+b(outputs)h(and)f(uses)g(them)h(to)h(deriv)m(e)e(the)h(ob)5
+b(ject's)33 b(p)s(osition)d(and)i(v)m(elo)s(cit)m(y)-8
+b(.)46 b(A)32 b(single)427 577 y(prediction)24 b(requires)h(one)h(call)
+g(to)g(the)h(presen)m(t)f(routine)f(follo)m(w)m(ed)g(b)m(y)h(one)g
+(call)g(to)g(sla)p Ft(_)p FD(UE2PV;)427 690 y(for)41
+b(con)m(v)m(enience,)k(the)c(t)m(w)m(o)h(calls)e(are)h(pac)m(k)-5
+b(aged)43 b(as)e(the)g(routine)f(sla)p Ft(_)p FD(PLANEL.)g(Multiple)427
+803 y(predictions)30 b(ma)m(y)i(b)s(e)f(made)h(b)m(y)g(again)f(calling)
+f(the)i(presen)m(t)g(routine)f(once,)i(but)e(then)g(calling)427
+916 y(sla)p Ft(_)p FD(UE2PV)f(m)m(ultiple)e(times,)j(whic)m(h)e(is)g
+(faster)i(than)f(m)m(ultiple)e(calls)i(to)h(sla)p Ft(_)p
+FD(PLANEL.)311 1067 y(3.)46 b(D)m(A)-8 b(TE)40 b(is)e(the)h(ep)s(o)s(c)
+m(h)g(of)g(osculation.)65 b(It)39 b(is)f(in)g(the)h(TT)f(time)g(scale)h
+(\(formerly)f(Ephemeris)427 1180 y(Time,)30 b(ET\))g(and)g(is)f(a)i(Mo)
+s(di\014ed)e(Julian)f(Date)k(\(JD)p Fo(\000)p FD(2400000.5\).)311
+1332 y(4.)46 b(The)40 b(supplied)e(orbital)h(elemen)m(ts)i(are)h(with)d
+(resp)s(ect)i(to)g(the)g(J2000)h(ecliptic)e(and)g(equino)m(x.)427
+1445 y(The)27 b(p)s(osition)f(and)h(v)m(elo)s(cit)m(y)h(parameters)g
+(returned)e(in)g(the)i(arra)m(y)g(U)f(are)h(with)f(resp)s(ect)g(to)h
+(the)427 1558 y(mean)39 b(equator)f(and)g(equino)m(x)g(of)g(ep)s(o)s(c)
+m(h)g(J2000,)k(and)c(are)g(for)g(the)h(p)s(erihelion)c(prior)h(to)j
+(the)427 1671 y(sp)s(eci\014ed)29 b(ep)s(o)s(c)m(h.)311
+1822 y(5.)46 b(The)31 b(univ)m(ersal)e(elemen)m(ts)i(returned)f(in)g
+(the)h(arra)m(y)h(U)f(are)g(in)f(canonical)h(units)e(\(solar)i(masses,)
+427 1935 y(A)m(U)g(and)f(canonical)g(da)m(ys\).)311 2087
+y(6.)46 b(Three)30 b(di\013eren)m(t)g(elemen)m(t-format)i(options)d
+(are)i(supp)s(orted,)e(as)h(follo)m(ws.)427 2332 y(JF)m(ORM=1,)h
+(suitable)e(for)i(the)f(ma)5 b(jor)30 b(planets:)602
+2534 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)f
+Fl(t)1910 2548 y Fu(0)1980 2534 y FD(\(TT)g(MJD\))602
+2647 y(ORBINC)45 b(=)55 b(inclination)27 b Fl(i)k FD(\(radians\))602
+2760 y(ANODE)76 b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)
+f(\012)h(\(radians\))602 2873 y(PERIH)122 b(=)55 b(longitude)29
+b(of)h(p)s(erihelion)d Fl($)34 b FD(\(radians\))602 2986
+y(A)m(OR)m(Q)143 b(=)55 b(mean)30 b(distance)g Fl(a)h
+FD(\(A)m(U\))602 3099 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h(<)f FD(1\))602
+3212 y(A)m(ORL)154 b(=)55 b(mean)30 b(longitude)f Fl(L)i
+FD(\(radians\))602 3325 y(DM)262 b(=)55 b(daily)29 b(motion)h
+Fl(n)g FD(\(radians\))427 3527 y(JF)m(ORM=2,)h(suitable)e(for)i(minor)d
+(planets:)602 3730 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)f Fl(t)1910 3744 y Fu(0)1980 3730
+y FD(\(TT)g(MJD\))602 3843 y(ORBINC)45 b(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 3956 y(ANODE)76 b(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+4069 y(PERIH)122 b(=)55 b(argumen)m(t)31 b(of)f(p)s(erihelion)d
+Fl(!)33 b FD(\(radians\))602 4182 y(A)m(OR)m(Q)143 b(=)55
+b(mean)30 b(distance)g Fl(a)h FD(\(A)m(U\))602 4295 y(E)352
+b(=)55 b(eccen)m(tricit)m(y)31 b Fl(e)g FD(\(0)26 b Fo(\024)f
+Fl(e)h(<)f FD(1\))602 4408 y(A)m(ORL)154 b(=)55 b(mean)30
+b(anomaly)h Fl(M)40 b FD(\(radians\))427 4610 y(JF)m(ORM=3,)31
+b(suitable)e(for)i(comets:)602 4813 y(EPOCH)85 b(=)55
+b(ep)s(o)s(c)m(h)30 b(of)h(p)s(erihelion)c Fl(T)43 b
+FD(\(TT)30 b(MJD\))602 4926 y(ORBINC)45 b(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 5039 y(ANODE)76 b(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+5152 y(PERIH)122 b(=)55 b(argumen)m(t)31 b(of)f(p)s(erihelion)d
+Fl(!)33 b FD(\(radians\))602 5265 y(A)m(OR)m(Q)143 b(=)55
+b(p)s(erihelion)27 b(distance)j Fl(q)j FD(\(A)m(U\))602
+5377 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31 b Fl(e)g
+FD(\(0)26 b Fo(\024)f Fl(e)h Fo(\024)f FD(10\))311 5580
+y(7.)46 b(Un)m(used)36 b(elemen)m(ts)h(\(DM)h(for)f(JF)m(ORM=2,)i(A)m
+(ORL)e(and)f(DM)h(for)g(JF)m(ORM=3\))g(are)g(not)g(ac-)427
+5693 y(cessed.)p eop
+%%Page: 65 67
+65 66 bop 0 52 a Fw(SUN/67.70)3252 b FD(65)311 351 y(8.)46
+b(The)36 b(algorithm)f(w)m(as)h(originally)e(adapted)i(from)g(the)g
+(EPHSLA)f(program)h(of)g(D.)16 b(H.)g(P)-8 b(.)16 b(Jones)427
+464 y(\(priv)-5 b(ate)36 b(comm)m(unication,)h(1996\).)59
+b(The)35 b(metho)s(d)h(is)f(based)g(on)h(Stump\013)7
+b('s)35 b(Univ)m(ersal)f(V)-8 b(ari-)427 577 y(ables.)0
+870 y FB(REFERENCE)44 b FD(:)d(Ev)m(erhart,)31 b(E.)f(&)g(Pitkin,)f
+(E.T.,)h(Am.)h(J.)f(Ph)m(ys.)g(51,)i(712,)g(1983.)p 0
+974 3780 8 v 0 1087 a Fx(SLA)p Fn(_)p Fx(EPB)659 b Fm(MJD)40
+b(to)e(Besselian)g(Ep)s(o)s(c)m(h)660 b Fx(SLA)p Fn(_)p
+Fx(EPB)0 1437 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ersion)30
+b(of)h(Mo)s(di\014ed)e(Julian)f(Date)k(to)f(Besselian)e(Ep)s(o)s(c)m
+(h.)0 1625 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_EPB)d(\(DATE\))0
+1931 y FB(GIVEN)g FD(:)277 2103 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(Mo)s(di\014ed)29 b(Julian)f(Date)k(\(JD)p
+Fo(\000)p FD(2400000.5\))0 2396 y FB(RETURNED)46 b FD(:)277
+2568 y Fq(sla)p Ft(_)p Fq(EPB)394 b FB(D)565 b FD(Besselian)30
+b(Ep)s(o)s(c)m(h)0 2861 y FB(REFERENCE)44 b FD(:)d(Liesk)m(e,)31
+b(J.H.,)f(1979,)j Fq(Astr.Astr)-5 b(ophys.)33 b FB(73)p
+FD(,)e(282.)p 0 2964 V 0 3077 a Fx(SLA)p Fn(_)p Fx(EPB2D)489
+b Fm(Besselian)38 b(Ep)s(o)s(c)m(h)h(to)f(MJD)491 b Fx(SLA)p
+Fn(_)p Fx(EPB2D)0 3427 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ersion)30
+b(of)h(Besselian)f(Ep)s(o)s(c)m(h)f(to)i(Mo)s(di\014ed)e(Julian)f
+(Date.)0 3615 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_EPB2D)d
+(\(EPB\))0 3922 y FB(GIVEN)g FD(:)277 4093 y Fq(EPB)548
+b FB(D)565 b FD(Besselian)30 b(Ep)s(o)s(c)m(h)0 4387
+y FB(RETURNED)46 b FD(:)277 4558 y Fq(sla)p Ft(_)p Fq(EPB2D)279
+b FB(D)565 b FD(Mo)s(di\014ed)29 b(Julian)f(Date)k(\(JD)p
+Fo(\000)p FD(2400000.5\))0 4851 y FB(REFERENCE)44 b FD(:)d(Liesk)m(e,)
+31 b(J.H.,)f(1979.)43 b Fq(Astr.Astr)-5 b(ophys.)33 b
+FB(73)p FD(,)e(282.)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p
+Fx(EPCO)554 b Fm(Con)m(v)m(ert)36 b(Ep)s(o)s(c)m(h)j(to)f(B)h(or)f(J)
+555 b Fx(SLA)p Fn(_)p Fx(EPCO)0 5418 y FB(A)m(CTION)44
+b FD(:)c(Con)m(v)m(ert)32 b(an)e(ep)s(o)s(c)m(h)g(to)h(Besselian)f(or)g
+(Julian)e(to)j(matc)m(h)h(another)e(one.)0 5606 y FB(CALL)45
+b FD(:)77 b Ft(D)47 b(=)h(sla_EPCO)d(\(K0,)i(K,)g(E\))p
+eop
+%%Page: 66 68
+66 67 bop 0 52 a FD(66)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(K0)620 b FB(C)569 b FD(form)30 b(of)h(result:)39
+b(`B'=Besselian,)31 b(`J'=Julian)277 610 y Fq(K)666 b
+FB(C)569 b FD(form)30 b(of)h(giv)m(en)f(ep)s(o)s(c)m(h:)40
+b(`B')32 b(or)e(`J')277 723 y Fq(E)674 b FB(D)565 b FD(ep)s(o)s(c)m(h)0
+1085 y FB(RETURNED)46 b FD(:)277 1257 y Fq(sla)p Ft(_)p
+Fq(EPCO)323 b FB(D)565 b FD(the)31 b(giv)m(en)f(ep)s(o)s(c)m(h)g(con)m
+(v)m(erted)i(as)f(necessary)0 1627 y FB(NOTES)44 b FD(:)311
+1818 y(1.)i(The)27 b(result)f(is)h(alw)m(a)m(ys)h(either)e(equal)h(to)h
+(or)g(v)m(ery)f(close)h(to)g(the)f(giv)m(en)h(ep)s(o)s(c)m(h)f(E.)g
+(The)g(routine)f(is)427 1931 y(required)j(only)g(in)g(applications)f
+(where)i(punctilious)c(treatmen)m(t)32 b(of)e(heterogeneous)i(mixtures)
+427 2044 y(of)f(star)f(p)s(ositions)f(is)g(necessary)-8
+b(.)311 2192 y(2.)46 b(K0)31 b(and)f(K)g(are)g(not)h(v)-5
+b(alidated.)40 b(They)30 b(are)g(in)m(terpreted)g(as)h(follo)m(ws:)506
+2340 y Fo(\017)46 b FD(If)30 b(K0)h(and)e(K)h(are)h(the)g(same,)g(the)f
+(result)g(is)f(E.)506 2470 y Fo(\017)46 b FD(If)30 b(K0)h(is)e(`B')i
+(and)f(K)g(isn't,)g(the)g(con)m(v)m(ersion)h(is)e(J)h(to)i(B.)506
+2601 y Fo(\017)46 b FD(In)30 b(all)f(other)i(cases,)g(the)g(con)m(v)m
+(ersion)g(is)e(B)i(to)g(J.)p 0 2737 3780 8 v 0 2850 a
+Fx(SLA)p Fn(_)p Fx(EPJ)763 b Fm(MJD)40 b(to)e(Julian)g(Ep)s(o)s(c)m(h)
+763 b Fx(SLA)p Fn(_)p Fx(EPJ)0 3200 y FB(A)m(CTION)44
+b FD(:)c(Con)m(v)m(ert)32 b(Mo)s(di\014ed)c(Julian)g(Date)k(to)g
+(Julian)c(Ep)s(o)s(c)m(h.)0 3388 y FB(CALL)45 b FD(:)77
+b Ft(D)47 b(=)h(sla_EPJ)d(\(DATE\))0 3738 y FB(GIVEN)g
+FD(:)277 3910 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(Mo)s(di\014ed)29
+b(Julian)f(Date)k(\(JD)p Fo(\000)p FD(2400000.5\))0 4281
+y FB(RETURNED)46 b FD(:)277 4452 y Fq(sla)p Ft(_)p Fq(EPJ)410
+b FB(D)565 b FD(Julian)28 b(Ep)s(o)s(c)m(h)0 4823 y FB(REFERENCE)44
+b FD(:)d(Liesk)m(e,)31 b(J.H.,)f(1979.)j Fq(Astr.Astr)-5
+b(ophys.)p FD(,)33 b FB(73)p FD(,)e(282.)p 0 4959 V 0
+5072 a Fx(SLA)p Fn(_)p Fx(EPJ2D)593 b Fm(Julian)38 b(Ep)s(o)s(c)m(h)g
+(to)h(MJD)594 b Fx(SLA)p Fn(_)p Fx(EPJ2D)0 5422 y FB(A)m(CTION)44
+b FD(:)c(Con)m(v)m(ert)32 b(Julian)c(Ep)s(o)s(c)m(h)h(to)i(Mo)s
+(di\014ed)e(Julian)f(Date.)0 5610 y FB(CALL)45 b FD(:)77
+b Ft(D)47 b(=)h(sla_EPJ2D)d(\(EPJ\))p eop
+%%Page: 67 69
+67 68 bop 0 52 a Fw(SUN/67.70)3252 b FD(67)0 351 y FB(GIVEN)45
+b FD(:)277 523 y Fq(EPJ)564 b FB(D)h FD(Julian)28 b(Ep)s(o)s(c)m(h)0
+944 y FB(RETURNED)46 b FD(:)277 1115 y Fq(sla)p Ft(_)p
+Fq(EPJ2D)295 b FB(D)565 b FD(Mo)s(di\014ed)29 b(Julian)f(Date)k(\(JD)p
+Fo(\000)p FD(2400000.5\))0 1536 y FB(REFERENCE)44 b FD(:)d(Liesk)m(e,)
+31 b(J.H.,)f(1979.)j Fq(Astr.Astr)-5 b(ophys.)p FD(,)33
+b FB(73)p FD(,)e(282.)p 0 1692 3780 8 v 0 1805 a Fx(SLA)p
+Fn(_)p Fx(EPV)205 b Fm(Earth)37 b(P)m(osition)f(&)j(V)-10
+b(elo)s(cit)m(y)37 b(\(high)h(accuracy\))204 b Fx(SLA)p
+Fn(_)p Fx(EPV)0 2156 y FB(A)m(CTION)44 b FD(:)71 b(Earth)45
+b(p)s(osition)f(and)h(v)m(elo)s(cit)m(y)-8 b(,)50 b(helio)s(cen)m(tric)
+45 b(and)g(barycen)m(tric,)k(with)44 b(resp)s(ect)i(to)g(the)227
+2268 y(Barycen)m(tric)31 b(Celestial)f(Reference)h(System.)0
+2456 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_EPV)g(\(DATE,)g(PH,)h
+(VH,)g(PB,)g(VB\))0 2841 y FB(GIVEN)e FD(:)277 3013 y
+Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(TDB)31 b(Mo)s(di\014ed)e(Julian)f
+(Date)k(\(Note)g(1\))0 3434 y FB(RETURNED)46 b FD(:)277
+3580 y Fq(PH)606 b FB(D\(3\))431 b FD(helio)s(cen)m(tric)29
+b([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(],)30 b(A)m(U)277
+3692 y Fq(VH)600 b FB(D\(3\))431 b FD(helio)s(cen)m(tric)29
+b([)j(_)-42 b Fl(x)q(;)31 b FD(_)-41 b Fl(y)s(;)31 b
+FD(_)-41 b Fl(z)20 b FD(],)30 b(A)m(U)i(d)2722 3659 y
+Fp(\000)p Fu(1)277 3805 y Fq(PB)610 b FB(D\(3\))431 b
+FD(barycen)m(tric)30 b([)15 b Fl(x;)g(y)s(;)g(z)21 b
+FD(],)31 b(A)m(U)277 3918 y Fq(VB)604 b FB(D\(3\))431
+b FD(barycen)m(tric)30 b([)i(_)-42 b Fl(x)q(;)32 b FD(_)-42
+b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20 b FD(],)31 b(A)m(U)g(d)2712
+3885 y Fp(\000)p Fu(1)0 4331 y FB(NOTES)44 b FD(:)311
+4542 y(1.)i(The)39 b(date)g(is)f(TDB)h(as)g(MJD)h(\(=JD)p
+Fo(\000)p FD(2400000.5\).)70 b(TT)38 b(can)h(b)s(e)f(used)g(instead)g
+(of)i(TDB)f(in)427 4655 y(most)31 b(applications.)311
+4813 y(2.)46 b(The)29 b(v)m(ectors)i(are)e(with)f(resp)s(ect)i(to)g
+(the)f(Barycen)m(tric)h(Celestial)e(Reference)i(System)f(\(BCRS\).)427
+4926 y(P)m(ositions)h(are)h(in)e(A)m(U;)i(v)m(elo)s(cities)f(are)h(in)e
+(A)m(U)i(p)s(er)e(TDB)i(da)m(y)-8 b(.)311 5083 y(3.)46
+b(The)22 b(routine)g(is)f(a)i Fq(simpli\014e)-5 b(d)27
+b(solution)k FD(from)22 b(the)g(planetary)g(theory)h(VSOP2000)h(\(X.)16
+b(Moisson,)427 5196 y(P)-8 b(.)16 b(Bretagnon,)37 b(2001,)g(Celes.)52
+b(Mec)m(hanics)34 b(&)g(Dyn.)53 b(Astron.,)35 b FB(80)p
+FD(,)h(3/4,)h(205-213\))h(and)33 b(is)h(an)427 5309 y(adaptation)23
+b(of)f(original)f(F)-8 b(ortran)23 b(co)s(de)f(supplied)d(b)m(y)k(P)-8
+b(.)15 b(Bretagnon)24 b(\(priv)-5 b(ate)22 b(comm)m(unication,)427
+5422 y(2000\).)311 5580 y(4.)46 b(Comparisons)27 b(o)m(v)m(er)j(the)f
+(time)f(span)g(1900-2100)33 b(with)27 b(this)g(simpli\014ed)e(solution)
+i(and)h(the)h(JPL)427 5693 y(DE405)j(ephemeris)d(giv)m(e)i(the)g(follo)
+m(wing)e(results:)p eop
+%%Page: 68 70
+68 69 bop 0 52 a FD(68)1543 351 y(RMS)118 b(max)602 464
+y(Helio)s(cen)m(tric:)753 577 y(p)s(osition)28 b(error)251
+b(3.7)204 b(11.2)i(km)753 690 y(v)m(elo)s(cit)m(y)31
+b(error)261 b(1.4)234 b(5.0)221 b(mm/s)602 803 y(Barycen)m(tric:)753
+916 y(p)s(osition)28 b(error)251 b(4.6)204 b(13.4)i(km)753
+1029 y(v)m(elo)s(cit)m(y)31 b(error)261 b(1.4)234 b(4.9)221
+b(mm/s)427 1190 y(The)30 b(results)f(deteriorate)i(outside)f(this)f
+(time)h(span.)311 1331 y(5.)46 b(The)27 b(routine)f(sla)p
+Ft(_)p FD(EVP)g(is)h(faster)g(but)g(less)f(accurate.)41
+b(The)27 b(presen)m(t)g(routine)f(targets)j(the)e(case)427
+1444 y(where)34 b(high)e(accuracy)j(is)e(more)h(imp)s(ortan)m(t)g(than)
+f(CPU)h(time,)h(y)m(et)g(the)f(extra)g(complication)427
+1557 y(of)d(reading)e(a)i(pre-computed)f(ephemeris)f(is)g(not)i
+(justi\014ed.)p 0 1674 3780 8 v 0 1787 a Fx(SLA)p Fn(_)p
+Fx(EQECL)569 b Fm(J2000)37 b Fg(\013)q(;)20 b(\016)43
+b Fm(to)c(Ecliptic)567 b Fx(SLA)p Fn(_)p Fx(EQECL)0 2137
+y FB(A)m(CTION)44 b FD(:)c(T)-8 b(ransformation)28 b(from)g(J2000.0)j
+(equatorial)d(co)s(ordinates)h(to)h(ecliptic)d(longitude)h(and)g(lati-)
+227 2250 y(tude.)0 2438 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_EQECL)g(\(DR,)g(DD,)h(DATE,)g(DL,)f(DB\))0 2767
+y FB(GIVEN)f FD(:)277 2913 y Fq(DR,DD)435 b FB(D)565
+b FD(J2000.0)33 b(mean)d([)15 b Fl(\013;)g(\016)20 b
+FD(])31 b(\(radians\))277 3026 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(TDB)68 b(\(formerly)f(ET\))g(as)h(Mo)s(di\014ed)d
+(Julian)h(Date)1658 3139 y(\(JD)p Fo(\000)p FD(2400000.5\))0
+3456 y FB(RETURNED)46 b FD(:)277 3602 y Fq(DL,DB)449
+b FB(D)565 b FD(ecliptic)29 b(longitude)g(and)g(latitude)g(\(mean)h(of)
+h(date,)f(IA)m(U)1658 3715 y(1980)i(theory)-8 b(,)32
+b(radians\))p 0 3848 V 0 3961 a Fx(SLA)p Fn(_)p Fx(EQEQX)410
+b Fm(Equation)36 b(of)j(the)f(Equino)m(xes)410 b Fx(SLA)p
+Fn(_)p Fx(EQEQX)0 4311 y FB(A)m(CTION)44 b FD(:)c(Equation)30
+b(of)h(the)f(equino)m(xes)g(\(IA)m(U)i(1994\).)0 4499
+y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_EQEQX)d(\(DATE\))0
+4828 y FB(GIVEN)g FD(:)277 4974 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(TDB)68 b(\(formerly)f(ET\))g(as)h(Mo)s(di\014ed)d
+(Julian)h(Date)1658 5087 y(\(JD)p Fo(\000)p FD(2400000.5\))0
+5404 y FB(RETURNED)46 b FD(:)277 5575 y Fq(sla)p Ft(_)p
+Fq(EQEQX)250 b FB(D)565 b FD(The)30 b(equation)g(of)h(the)f(equino)m
+(xes)g(\(radians\))p eop
+%%Page: 69 71
+69 70 bop 0 52 a Fw(SUN/67.70)3252 b FD(69)0 351 y FB(NOTES)44
+b FD(:)311 533 y(1.)i(The)36 b(equation)f(of)i(the)f(equino)m(xes)f(is)
+g(de\014ned)g(here)h(as)g(GAST)f Fo(\000)h FD(GMST:)g(it)f(is)g(added)g
+(to)i(a)427 646 y Fq(me)-5 b(an)39 b FD(sidereal)29 b(time)h(to)h(giv)m
+(e)g(the)f Fq(app)-5 b(ar)g(ent)42 b FD(sidereal)29 b(time.)311
+787 y(2.)46 b(The)25 b(c)m(hange)i(from)e(the)g(classic)g(\\textb)s(o)s
+(ok")i(expression)d(\001)p Fl( )18 b(cos)d(\017)26 b
+FD(o)s(ccurred)e(with)h(IA)m(U)h(Reso-)427 900 y(lution)g(C7,)i
+(Recommendation)g(3)g(\(1994\).)42 b(The)27 b(new)g(form)m(ulation)f
+(tak)m(es)j(in)m(to)e(accoun)m(t)i(cross-)427 1013 y(terms)37
+b(b)s(et)m(w)m(een)h(the)f(v)-5 b(arious)36 b(precession)h(and)f(n)m
+(utation)h(quan)m(tities,)h(amoun)m(ting)f(to)h(ab)s(out)427
+1125 y(3)c(milliarcsec.)48 b(The)33 b(transition)f(from)h(the)h(old)e
+(to)j(the)e(new)g(mo)s(del)g(o\016cially)f(to)s(ok)i(place)g(on)427
+1238 y(1997)e(F)-8 b(ebruary)31 b(27.)0 1561 y FB(REFERENCE)44
+b FD(:)d(Capitaine,)29 b(N.)i(&)f(Gon)m(tier,)h(A.-M.)g(\(1993\),)j
+Fq(Astr)-5 b(on.)42 b(Astr)-5 b(ophys.)p FD(,)33 b FB(275)p
+FD(,)f(645-650.)p 0 1682 3780 8 v 0 1795 a Fx(SLA)p Fn(_)p
+Fx(EQGAL)530 b Fm(J2000)38 b Fg(\013)q(;)20 b(\016)43
+b Fm(to)38 b(Galactic)530 b Fx(SLA)p Fn(_)p Fx(EQGAL)0
+2145 y FB(A)m(CTION)44 b FD(:)62 b(T)-8 b(ransformation)40
+b(from)h(J2000.0)i(FK5)f(equatorial)e(co)s(ordinates)h(to)h(IA)m(U)g
+(1958)g(galactic)227 2258 y(co)s(ordinates.)0 2446 y
+FB(CALL)j FD(:)77 b Ft(CALL)46 b(sla_EQGAL)g(\(DR,)g(DD,)h(DL,)g(DB\))0
+2773 y FB(GIVEN)e FD(:)277 2945 y Fq(DR,DD)435 b FB(D)565
+b FD(J2000.0)33 b([)15 b Fl(\013;)g(\016)20 b FD(])31
+b(\(radians\))0 3268 y FB(RETURNED)46 b FD(:)277 3439
+y Fq(DL,DB)449 b FB(D)565 b FD(galactic)29 b(longitude)e(and)h
+(latitude)f([)15 b Fl(l)2966 3406 y Ff(I)-7 b(I)3030
+3439 y Fl(;)15 b(b)3109 3406 y Ff(I)-7 b(I)3189 3439
+y FD(])28 b(\(radians\))0 3762 y FB(NOTE)44 b FD(:)d(The)29
+b(equatorial)h(co)s(ordinates)g(are)h(J2000.0)h(FK5.)41
+b(Use)31 b(the)f(routine)f(sla)p Ft(_)p FD(EG50)i(if)e(con)m(v)m
+(ersion)227 3875 y(from)h(B1950.0)j(FK4)e(co)s(ordinates)f(is)g
+(required.)0 4198 y FB(REFERENCE)44 b FD(:)d(Blaau)m(w)30
+b Fq(et)j(al.)p FD(,)e(1960,)h Fq(Mon.Not.R.astr.So)-5
+b(c.)p FD(,)33 b FB(121)p FD(,)e(123.)p 0 4314 V 0 4427
+a Fx(SLA)p Fn(_)p Fx(ETRMS)516 b Fm(E-terms)37 b(of)h(Ab)s(erration)515
+b Fx(SLA)p Fn(_)p Fx(ETRMS)0 4777 y FB(A)m(CTION)44 b
+FD(:)39 b(Compute)26 b(the)h(E-terms)h(v)m(ector)g({)f(the)h(part)e(of)
+i(the)f(ann)m(ual)f(ab)s(erration)g(whic)m(h)g(arises)g(from)227
+4890 y(the)31 b(eccen)m(tricit)m(y)g(of)g(the)g(Earth's)f(orbit.)0
+5078 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_ETRMS)g(\(EP,)g(EV\))0
+5405 y FB(GIVEN)f FD(:)277 5576 y Fq(EP)612 b FB(D)565
+b FD(Besselian)30 b(ep)s(o)s(c)m(h)p eop
+%%Page: 70 72
+70 71 bop 0 52 a FD(70)0 351 y FB(RETURNED)46 b FD(:)277
+523 y Fq(EV)606 b FB(D\(3\))431 b FD(E-terms)31 b(as)f([\001)p
+Fl(x;)15 b FD(\001)p Fl(y)s(;)g FD(\001)p Fl(z)20 b FD(])0
+845 y FB(NOTE)44 b FD(:)g(Note)33 b(the)f(use)g(of)g(the)g(J2000)i(ab)s
+(erration)d(constan)m(t)i(\(20)2410 808 y Fk(0)m(0)2414
+845 y Fl(:)p FD(49552\).)49 b(This)30 b(is)h(a)h(re\015ection)g(of)g
+(the)227 958 y(fact)g(that)g(the)f(E-terms)g(em)m(b)s(o)s(died)e(in)h
+(existing)g(star)h(catalogues)h(w)m(ere)g(computed)e(from)h(a)g(v)-5
+b(ariet)m(y)227 1071 y(of)30 b(ab)s(erration)f(constan)m(ts.)42
+b(Rather)30 b(than)f(adopting)g(one)h(of)g(the)g(old)f(constan)m(ts)i
+(the)f(latest)g(v)-5 b(alue)29 b(is)227 1184 y(used)h(here.)0
+1506 y FB(REFERENCES)44 b FD(:)311 1688 y(1.)i(Smith,)29
+b(C.A.)i Fq(et)h(al.)p FD(,)g(1989.)42 b Fq(Astr.J.)30
+b FB(97)p FD(,)h(265.)311 1828 y(2.)46 b(Y)-8 b(allop,)30
+b(B.D.)i Fq(et)h(al.)p FD(,)e(1989.)42 b Fq(Astr.J.)30
+b FB(97)p FD(,)h(274.)p 0 1944 3780 8 v 0 2057 a Fx(SLA)p
+Fn(_)p Fx(EULER)204 b Fm(Rotation)36 b(Matrix)h(from)g(Euler)h(Angles)
+203 b Fx(SLA)p Fn(_)p Fx(EULER)0 2407 y FB(A)m(CTION)44
+b FD(:)k(F)-8 b(orm)35 b(a)f(rotation)h(matrix)e(from)h(the)g(Euler)f
+(angles)h({)h(three)f(successiv)m(e)g(rotations)h(ab)s(out)227
+2520 y(sp)s(eci\014ed)29 b(Cartesian)h(axes)h(\(single)e(precision\).)0
+2708 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_EULER)g(\(ORDER,)f(PHI,)
+i(THETA,)f(PSI,)h(RMAT\))0 3035 y FB(GIVEN)e FD(:)277
+3181 y Fq(ORDER)403 b FB(C*\(*\))383 b FD(sp)s(eci\014es)29
+b(ab)s(out)h(whic)m(h)f(axes)i(the)g(rotations)g(o)s(ccur)277
+3294 y Fq(PHI)571 b FB(R)c FD(1st)31 b(rotation)g(\(radians\))277
+3406 y Fq(THET)-7 b(A)415 b FB(R)567 b FD(2nd)30 b(rotation)h
+(\(radians\))277 3519 y Fq(PSI)588 b FB(R)567 b FD(3rd)30
+b(rotation)h(\(radians\))0 3833 y FB(RETURNED)46 b FD(:)277
+4005 y Fq(RMA)-7 b(T)462 b FB(R\(3,3\))352 b FD(rotation)31
+b(matrix)0 4327 y FB(NOTES)44 b FD(:)311 4509 y(1.)i(A)30
+b(rotation)h(is)e(p)s(ositiv)m(e)f(when)h(the)h(reference)h(frame)f
+(rotates)h(an)m(ticlo)s(c)m(kwise)e(as)i(seen)f(lo)s(oking)427
+4622 y(to)m(w)m(ards)h(the)g(origin)e(from)h(the)g(p)s(ositiv)m(e)g
+(region)g(of)g(the)h(sp)s(eci\014ed)d(axis.)311 4762
+y(2.)46 b(The)25 b(c)m(haracters)i(of)e(ORDER)g(de\014ne)g(whic)m(h)f
+(axes)i(the)f(three)h(successiv)m(e)f(rotations)h(are)f(ab)s(out.)427
+4875 y(A)40 b(t)m(ypical)e(v)-5 b(alue)39 b(is)f(`ZXZ',)h(indicating)e
+(that)j(RMA)-8 b(T)40 b(is)e(to)i(b)s(ecome)f(the)h(direction)e(cosine)
+427 4988 y(matrix)29 b(corresp)s(onding)f(to)j(rotations)f(of)g(the)g
+(reference)g(frame)g(through)f(PHI)g(radians)g(ab)s(out)427
+5101 y(the)21 b(old)e Fq(z)p FD(-axis,)k(follo)m(w)m(ed)d(b)m(y)g(THET)
+-8 b(A)20 b(radians)f(ab)s(out)h(the)h(resulting)d Fq(x)p
+FD(-axis,)k(then)e(PSI)g(radians)427 5214 y(ab)s(out)30
+b(the)h(resulting)d Fq(z)p FD(-axis.)41 b(In)30 b(detail:)506
+5354 y Fo(\017)46 b FD(The)30 b(axis)g(names)h(can)g(b)s(e)f(an)m(y)h
+(of)g(the)f(follo)m(wing,)g(in)f(an)m(y)i(order)f(or)h(com)m(bination:)
+40 b(X,)31 b(Y,)597 5467 y(Z,)f(upp)s(ercase)f(or)g(lo)m(w)m(ercase,)j
+(1,)e(2,)h(3.)41 b(Normal)29 b(axis)g(lab)s(elling/n)m(um)m(b)s(ering)c
+(con)m(v)m(en)m(tions)597 5580 y(apply;)43 b(the)d Fq(xyz)g
+FD(\()p Fo(\021)g FD(123\))h(triad)e(is)g(righ)m(t-handed.)66
+b(Th)m(us,)41 b(the)f(`ZXZ')f(example)g(giv)m(en)597
+5693 y(ab)s(o)m(v)m(e)32 b(could)d(b)s(e)h(written)f(`zxz')j(or)e
+(`313')j(\(or)d(ev)m(en)h(`ZxZ')f(or)h(`3xZ'\).)p eop
+%%Page: 71 73
+71 72 bop 0 52 a Fw(SUN/67.70)3252 b FD(71)506 351 y
+Fo(\017)46 b FD(ORDER)30 b(is)g(terminated)g(b)m(y)g(length)g(or)g(b)m
+(y)g(the)h(\014rst)f(unrecognized)f(c)m(haracter.)506
+480 y Fo(\017)46 b FD(F)-8 b(ew)m(er)23 b(than)e(three)g(rotations)h
+(are)f(acceptable,)k(in)20 b(whic)m(h)g(case)i(the)g(later)f(angle)g
+(argumen)m(ts)597 593 y(are)31 b(ignored.)311 736 y(3.)46
+b(Zero)31 b(rotations)f(pro)s(duces)f(the)i(iden)m(tit)m(y)f(RMA)-8
+b(T.)p 0 862 3780 8 v 0 975 a Fx(SLA)p Fn(_)p Fx(EVP)623
+b Fm(Earth)37 b(P)m(osition)f(&)j(V)-10 b(elo)s(cit)m(y)622
+b Fx(SLA)p Fn(_)p Fx(EVP)0 1325 y FB(A)m(CTION)44 b FD(:)c(Barycen)m
+(tric)32 b(and)d(helio)s(cen)m(tric)g(v)m(elo)s(cit)m(y)i(and)f(p)s
+(osition)f(of)h(the)h(Earth.)0 1513 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_EVP)g(\(DATE,)g(DEQX,)h(DVB,)f(DPB,)h(DVH,)g(DPH\))0
+1853 y FB(GIVEN)e FD(:)277 2000 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(TDB)52 b(\(formerly)e(ET\))h(as)h(a)g(Mo)s(di\014ed)e
+(Julian)f(Date)1658 2112 y(\(JD)p Fo(\000)p FD(2400000.5\))277
+2225 y Fq(DEQX)467 b FB(D)565 b FD(Julian)36 b(Ep)s(o)s(c)m(h)h(\()p
+Fq(e.g.)h FD(2000D0\))j(of)d(mean)g(equator)h(and)1658
+2338 y(equino)m(x)j(of)h(the)g(v)m(ectors)i(returned.)77
+b(If)42 b(DEQX)h Fl(<)i FD(0,)1658 2451 y(all)c(v)m(ectors)h(are)g
+(referred)f(to)h(the)g(mean)g(equator)g(and)1658 2564
+y(equino)m(x)30 b(\(FK5\))i(of)e(date)h(D)m(A)-8 b(TE.)0
+2902 y FB(RETURNED)46 b FD(:)277 3048 y Fq(D)n(VB)537
+b FB(D\(3\))431 b FD(barycen)m(tric)30 b([)i(_)-42 b
+Fl(x)q(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(],)31 b(A)m(U)g(s)2697 3015 y Fp(\000)p Fu(1)277
+3161 y Fq(DPB)541 b FB(D\(3\))431 b FD(barycen)m(tric)30
+b([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(],)31 b(A)m(U)277
+3273 y Fq(D)n(VH)533 b FB(D\(3\))431 b FD(helio)s(cen)m(tric)29
+b([)j(_)-42 b Fl(x)q(;)31 b FD(_)-41 b Fl(y)s(;)31 b
+FD(_)-41 b Fl(z)20 b FD(],)30 b(A)m(U)i(s)2707 3240 y
+Fp(\000)p Fu(1)277 3386 y Fq(DPH)537 b FB(D\(3\))431
+b FD(helio)s(cen)m(tric)29 b([)15 b Fl(x;)g(y)s(;)g(z)21
+b FD(],)30 b(A)m(U)0 3724 y FB(NOTES)44 b FD(:)311 3909
+y(1.)i(This)24 b(routine)g(is)g(accurate)i(enough)f(for)g(man)m(y)g
+(purp)s(oses)f(but)g(faster)i(and)e(more)h(compact)i(than)427
+4022 y(the)36 b(sla)p Ft(_)p FD(EPV)e(routine.)53 b(The)35
+b(maxim)m(um)f(deviations)g(from)h(the)g(JPL)f(DE96)i(ephemeris)e(are)
+427 4135 y(as)d(follo)m(ws:)506 4279 y Fo(\017)46 b FD(v)m(elo)s(cit)m
+(y)31 b(\(barycen)m(tric)g(or)f(helio)s(cen)m(tric\):)40
+b(420)32 b(mm)d(s)2495 4246 y Fp(\000)p Fu(1)506 4407
+y Fo(\017)46 b FD(p)s(osition)29 b(\(barycen)m(tric\):)41
+b(6900)32 b(km)506 4536 y Fo(\017)46 b FD(p)s(osition)29
+b(\(helio)s(cen)m(tric\):)40 b(1600)32 b(km)311 4679
+y(2.)46 b(The)41 b(routine)g(is)f(adapted)i(from)f(the)g(BAR)-10
+b(VEL)42 b(and)f(BAR)m(COR)g(subroutines)e(of)j(Stump\013)427
+4792 y(\(1980\).)i(Most)31 b(of)g(the)g(c)m(hanges)g(are)g(merely)f
+(cosmetic)i(and)e(do)g(not)h(a\013ect)h(the)f(results)e(at)i(all.)427
+4905 y(Ho)m(w)m(ev)m(er,)d(some)c(adjustmen)m(ts)g(ha)m(v)m(e)h(b)s
+(een)e(made)h(so)g(as)g(to)g(giv)m(e)h(results)d(that)j(refer)e(to)i
+(the)f(IA)m(U)427 5018 y(1976)k(`FK5')f(equino)m(x)f(and)f(precession,)
+i(although)e(the)h(di\013erences)g(these)g(c)m(hanges)h(mak)m(e)h
+(rela-)427 5131 y(tiv)m(e)e(to)g(the)g(results)e(from)h(Stump\013)7
+b('s)24 b(original)g(`FK4')i(v)m(ersion)f(are)h(smaller)e(than)h(the)h
+(inheren)m(t)427 5244 y(accuracy)34 b(of)e(the)g(algorithm.)46
+b(One)32 b(minor)e(shortcoming)i(in)f(the)h(original)f(routines)g(that)
+i(has)427 5357 y FB(not)27 b FD(b)s(een)e(corrected)j(is)d(that)i
+(sligh)m(tly)e(b)s(etter)i(n)m(umerical)e(accuracy)i(could)f(b)s(e)g
+(ac)m(hiev)m(ed)h(if)e(the)427 5470 y(v)-5 b(arious)32
+b(p)s(olynomial)e(ev)-5 b(aluations)32 b(w)m(ere)h(to)g(b)s(e)f(so)h
+(arranged)g(that)g(the)g(smallest)e(terms)i(w)m(ere)427
+5583 y(computed)d(\014rst.)p eop
+%%Page: 72 74
+72 73 bop 0 52 a FD(72)0 351 y FB(REFERENCE)44 b FD(:)d(Stump\013,)29
+b(P)-8 b(.,)31 b(1980.,)i Fq(Astr)-5 b(on.Astr)g(ophys.Suppl.Ser.)34
+b FB(41)p FD(,)e(1-8.)p 0 490 3780 8 v 0 603 a Fx(SLA)p
+Fn(_)p Fx(FITXY)209 b Fm(Fit)38 b(Linear)g(Mo)s(del)g(to)h(Tw)m(o)e([)
+20 b Fg(x;)g(y)j Fm(])38 b(Sets)212 b Fx(SLA)p Fn(_)p
+Fx(FITXY)0 953 y FB(A)m(CTION)44 b FD(:)c(Fit)31 b(a)f(linear)f(mo)s
+(del)g(to)j(relate)e(t)m(w)m(o)i(sets)f(of)f([)15 b Fl(x;)g(y)k
+FD(])31 b(co)s(ordinates.)0 1141 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_FITXY)g(\(ITYPE,)f(NP,)i(XYE,)g(XYM,)g(COEFFS,)e
+(J\))0 1500 y FB(GIVEN)g FD(:)277 1646 y Fq(ITYPE)444
+b FB(I)605 b FD(t)m(yp)s(e)31 b(of)f(mo)s(del:)40 b(4)31
+b(or)f(6)h(\(note)g(1\))277 1759 y Fq(NP)606 b FB(I)f
+FD(n)m(um)m(b)s(er)29 b(of)i(samples)e(\(note)j(2\))277
+1872 y Fq(XYE)538 b FB(D\(2,NP\))249 b FD(exp)s(ected)31
+b([)15 b Fl(x;)g(y)k FD(])30 b(for)g(eac)m(h)i(sample)277
+1985 y Fq(XYM)518 b FB(D\(2,NP\))249 b FD(measured)30
+b([)15 b Fl(x;)g(y)k FD(])30 b(for)g(eac)m(h)i(sample)0
+2354 y FB(RETURNED)46 b FD(:)277 2500 y Fq(COEFFS)370
+b FB(D\(6\))431 b FD(co)s(e\016cien)m(ts)31 b(of)g(mo)s(del)e(\(note)i
+(3\))277 2613 y Fq(J)688 b FB(I)605 b FD(status:)1825
+2726 y(0)31 b(=)f(OK)1752 2839 y Fo(\000)p FD(1)h(=)f(illegal)e(ITYPE)
+1752 2952 y Fo(\000)p FD(2)j(=)f(insu\016cien)m(t)e(data)1752
+3065 y Fo(\000)p FD(3)j(=)f(singular)e(solution)0 3434
+y FB(NOTES)44 b FD(:)311 3628 y(1.)i(ITYPE,)32 b(whic)m(h)f(m)m(ust)i
+(b)s(e)f(either)g(4)g(or)h(6,)g(selects)g(the)g(t)m(yp)s(e)g(of)f(mo)s
+(del)f(\014tted.)48 b(Both)33 b(allo)m(w)m(ed)427 3741
+y(ITYPE)j(v)-5 b(alues)35 b(pro)s(duce)g(a)h(mo)s(del)f(COEFFS)g(whic)m
+(h)f(consists)i(of)g(six)f(co)s(e\016cien)m(ts,)j(namely)427
+3854 y(the)k(zero)g(p)s(oin)m(ts)e(and,)j(for)e(eac)m(h)h(of)g(XE)f
+(and)g(YE,)g(the)g(co)s(e\016cien)m(t)h(of)g(XM)f(and)g(YM.)h(F)-8
+b(or)427 3967 y(ITYPE=6,)39 b(all)d(six)g(co)s(e\016cien)m(ts)i(are)g
+(indep)s(enden)m(t,)f(mo)s(delling)d(squash)i(and)h(shear)g(as)g(w)m
+(ell)427 4080 y(as)d(origin,)f(scale,)i(and)e(orien)m(tation.)50
+b(Ho)m(w)m(ev)m(er,)37 b(ITYPE=4)c(selects)h(the)f Fq(solid)k(b)-5
+b(o)g(dy)37 b(r)-5 b(otation)427 4193 y FD(option;)41
+b(the)d(mo)s(del)e(COEFFS)h(still)e(consists)i(of)h(the)f(same)h(six)f
+(co)s(e\016cien)m(ts,)j(but)d(no)m(w)g(t)m(w)m(o)427
+4306 y(of)32 b(them)f(are)g(used)f(t)m(wice)i(\(appropriately)e
+(signed\).)42 b(Origin,)29 b(scale)i(and)g(orien)m(tation)g(are)h
+(still)427 4419 y(mo)s(delled,)d(but)h(not)g(squash)g(or)g(shear)g({)h
+(the)f(units)f(of)i(X)f(and)g(Y)h(ha)m(v)m(e)g(to)g(b)s(e)f(the)h
+(same.)311 4568 y(2.)46 b(F)-8 b(or)31 b(NC=4,)g(NP)f(m)m(ust)h(b)s(e)e
+(at)i(least)g(2.)41 b(F)-8 b(or)31 b(NC=6,)g(NP)f(m)m(ust)g(b)s(e)g(at)
+h(least)g(3.)311 4717 y(3.)46 b(The)33 b(mo)s(del)e(is)h(returned)g(in)
+f(the)i(arra)m(y)g(COEFFS.)g(Naming)f(the)h(six)f(elemen)m(ts)h(of)g
+(COEFFS)427 4830 y Fl(a;)15 b(b;)g(c;)g(d;)g(e)43 b FD(&)d
+Fl(f)10 b FD(,)42 b(the)e(mo)s(del)f(transforms)g Fq(me)-5
+b(asur)g(e)g(d)52 b FD(co)s(ordinates)40 b([)p Fl(x)2968
+4844 y Ff(m)3035 4830 y Fl(;)15 b(y)3120 4844 y Ff(m)3201
+4830 y FD(])41 b(in)m(to)f Fq(exp)-5 b(e)g(cte)g(d)427
+4943 y FD(co)s(ordinates)30 b([)p Fl(x)987 4957 y Ff(e)1024
+4943 y Fl(;)15 b(y)1109 4957 y Ff(e)1161 4943 y FD(])31
+b(as)g(follo)m(ws:)597 5092 y Fl(x)649 5106 y Ff(e)711
+5092 y FD(=)25 b Fl(a)c FD(+)e Fl(bx)1057 5106 y Ff(m)1144
+5092 y FD(+)h Fl(cy)1319 5106 y Ff(m)597 5205 y Fl(y)642
+5219 y Ff(e)704 5205 y FD(=)25 b Fl(d)20 b FD(+)g Fl(ex)1052
+5219 y Ff(m)1139 5205 y FD(+)g Fl(f)10 b(y)1330 5219
+y Ff(m)427 5354 y FD(F)-8 b(or)33 b(the)g Fq(solid)i(b)-5
+b(o)g(dy)36 b(r)-5 b(otation)42 b FD(option)32 b(\(ITYPE=4\),)h(the)g
+(magnitudes)e(of)i Fl(b)f FD(and)g Fl(f)10 b FD(,)32
+b(and)g(of)g Fl(c)427 5467 y FD(and)k Fl(e)p FD(,)i(are)e(equal.)57
+b(The)35 b(signs)g(of)h(these)h(co)s(e\016cien)m(ts)f(dep)s(end)f(on)h
+(whether)f(there)h(is)f(a)h(sign)427 5580 y(rev)m(ersal)41
+b(b)s(et)m(w)m(een)g([)p Fl(x)1210 5594 y Ff(e)1247 5580
+y Fl(;)15 b(y)1332 5594 y Ff(e)1369 5580 y FD(])41 b(and)f([)p
+Fl(x)1699 5594 y Ff(m)1766 5580 y Fl(;)15 b(y)1851 5594
+y Ff(m)1917 5580 y FD(];)47 b(\014ts)40 b(are)h(p)s(erformed)e(with)h
+(and)g(without)f(a)i(sign)427 5693 y(rev)m(ersal)31 b(and)e(the)i(b)s
+(est)f(one)h(c)m(hosen.)p eop
+%%Page: 73 75
+73 74 bop 0 52 a Fw(SUN/67.70)3252 b FD(73)311 351 y(4.)46
+b(Error)27 b(status)h(v)-5 b(alues)27 b(J=)p Fo(\000)p
+FD(1)h(and)f Fo(\000)p FD(2)h(lea)m(v)m(e)h(COEFFS)e(unc)m(hanged;)i
+(if)d(J=)p Fo(\000)p FD(3)i(COEFFS)f(ma)m(y)427 464 y(ha)m(v)m(e)32
+b(b)s(een)e(c)m(hanged.)311 602 y(5.)46 b(See)31 b(also)f(sla)p
+Ft(_)p FD(PXY,)g(sla)p Ft(_)p FD(INVF,)h(sla)p Ft(_)p
+FD(XY2XY,)g(sla)p Ft(_)p FD(DCMPF.)p 0 709 3780 8 v 0
+821 a Fx(SLA)p Fn(_)p Fx(FK425)862 b Fm(FK4)39 b(to)f(FK5)862
+b Fx(SLA)p Fn(_)p Fx(FK425)0 1172 y FB(A)m(CTION)44 b
+FD(:)c(Con)m(v)m(ert)31 b(B1950.0)h(FK4)f(star)e(data)i(to)f(J2000.0)i
+(FK5.)41 b(This)28 b(routine)h(con)m(v)m(erts)i(stars)f(from)227
+1285 y(the)37 b(old,)g(Bessel-New)m(com)m(b,)j(FK4)d(system)f(to)h(the)
+g(new,)g(IA)m(U)g(1976,)j(FK5,)f(F)-8 b(ric)m(k)m(e)37
+b(system.)59 b(The)227 1398 y(precepts)34 b(of)h(Smith)d
+Fq(et)37 b(al.)d FD(\(see)h(reference)g(1\))g(are)g(follo)m(w)m(ed,)g
+(using)e(the)h(implemen)m(tation)f(b)m(y)h(Y)-8 b(al-)227
+1511 y(lop)22 b Fq(et)j(al.)e FD(\(reference)g(2\))g(of)g(a)f(matrix)g
+(metho)s(d)g(due)f(to)j(Standish.)36 b(Kinoshita's)20
+b(dev)m(elopmen)m(t)j(of)g(An-)227 1623 y(do)m(y)m(er's)28
+b(p)s(ost-New)m(com)m(b)g(precession)d(is)h(used.)39
+b(The)26 b(n)m(umerical)f(constan)m(ts)j(from)e(Seidelmann)e
+Fq(et)29 b(al.)227 1736 y FD(\(reference)i(3\))h(are)e(used)g
+(canonically)-8 b(.)0 1924 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_FK425)g(\(R1950,D1950,DR1950,DD1)o(950,)o(P19)o(50,V)o(1950)o(,)
+1192 2037 y(R2000,D2000,DR2000,DD2)o(000,)o(P20)o(00,V)o(2000)o(\))0
+2352 y FB(GIVEN)f FD(:)277 2498 y Fq(R1950)486 b FB(D)565
+b FD(B1950.0)33 b Fl(\013)e FD(\(radians\))277 2611 y
+Fq(D1950)483 b FB(D)565 b FD(B1950.0)33 b Fl(\016)i FD(\(radians\))277
+2724 y Fq(DR1950)417 b FB(D)565 b FD(B1950.0)39 b(prop)s(er)c(motion)h
+(in)f Fl(\013)i FD(\(radians)f(p)s(er)f(tropical)1658
+2837 y(y)m(ear\))277 2950 y Fq(DD1950)414 b FB(D)565
+b FD(B1950.0)41 b(prop)s(er)c(motion)i(in)e Fl(\016)42
+b FD(\(radians)37 b(p)s(er)h(tropical)1658 3063 y(y)m(ear\))277
+3176 y Fq(P1950)490 b FB(D)565 b FD(B1950.0)33 b(parallax)d(\(arcsec\))
+277 3289 y Fq(V1950)484 b FB(D)565 b FD(B1950.0)48 b(radial)c(v)m(elo)s
+(cit)m(y)i(\(km)f(s)2884 3256 y Fp(\000)p Fu(1)2978 3289
+y FD(,)50 b(+v)m(e)45 b(=)g(mo)m(ving)1658 3402 y(a)m(w)m(a)m(y\))0
+3695 y FB(RETURNED)h FD(:)277 3841 y Fq(R2000)486 b FB(D)565
+b FD(J2000.0)33 b Fl(\013)e FD(\(radians\))277 3954 y
+Fq(D2000)483 b FB(D)565 b FD(J2000.0)33 b Fl(\016)h FD(\(radians\))277
+4067 y Fq(DR2000)417 b FB(D)565 b FD(J2000.0)50 b(prop)s(er)c(motion)h
+(in)f Fl(\013)i FD(\(radians)e(p)s(er)g(Julian)1658 4180
+y(y)m(ear\))277 4293 y Fq(DD2000)414 b FB(D)565 b FD(J2000.0)52
+b(prop)s(er)c(motion)h(in)f Fl(\016)54 b FD(\(radians)48
+b(p)s(er)g(Julian)1658 4406 y(y)m(ear\))277 4518 y Fq(P2000)490
+b FB(D)565 b FD(J2000.0)33 b(parallax)c(\(arcsec\))277
+4631 y Fq(V2000)484 b FB(D)565 b FD(J2000.0)50 b(radial)c(v)m(elo)s
+(cit)m(y)i(\(km)g(s)2876 4598 y Fp(\000)p Fu(1)2970 4631
+y FD(,)53 b(+v)m(e)48 b(=)f(mo)m(ving)1658 4744 y(a)m(w)m(a)m(y\))0
+5038 y FB(NOTES)d FD(:)311 5217 y(1.)i(The)37 b Fl(\013)h
+FD(prop)s(er)e(motions)h(are)57 b(_)-45 b Fl(\013)38
+b FD(rather)f(than)57 b(_)-44 b Fl(\013)15 b FD(cos)h
+Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)i(rather)f(than)g(p)s
+(er)427 5330 y(cen)m(tury)-8 b(.)311 5467 y(2.)46 b(Con)m(v)m(ersion)31
+b(from)f(Besselian)g(ep)s(o)s(c)m(h)h(1950.0)i(to)f(Julian)c(ep)s(o)s
+(c)m(h)j(2000.0)i(only)d(is)g(pro)m(vided)f(for.)427
+5580 y(Con)m(v)m(ersions)42 b(in)m(v)m(olving)e(other)i(ep)s(o)s(c)m
+(hs)g(will)d(require)h(use)i(of)g(the)g(appropriate)f(precession,)427
+5693 y(prop)s(er)29 b(motion,)i(and)e(E-terms)i(routines)e(b)s(efore)h
+(and/or)g(after)h(FK425)h(is)d(called.)p eop
+%%Page: 74 76
+74 75 bop 0 52 a FD(74)311 351 y(3.)46 b(In)41 b(the)h(FK4)g(catalogue)
+h(the)f(prop)s(er)e(motions)h(of)h(stars)f(within)e(10)2905
+318 y Fp(\016)2987 351 y FD(of)j(the)f(p)s(oles)g(do)g(not)427
+464 y(include)29 b(the)j Fq(di\013er)-5 b(ential)34 b(E-terms)39
+b FD(e\013ect)33 b(and)d(should,)g(strictly)g(sp)s(eaking,)g(b)s(e)h
+(handled)e(in)h(a)427 577 y(di\013eren)m(t)37 b(manner)f(from)g(stars)h
+(outside)f(these)h(regions.)60 b(Ho)m(w)m(ev)m(er,)40
+b(giv)m(en)d(the)g(general)g(lac)m(k)427 690 y(of)i(homogeneit)m(y)g
+(of)f(the)h(star)f(data)h(a)m(v)-5 b(ailable)38 b(for)g(routine)f
+(astrometry)-8 b(,)42 b(the)d(di\016culties)c(of)427
+803 y(handling)30 b(p)s(ositions)g(that)j(ma)m(y)g(ha)m(v)m(e)h(b)s
+(een)e(determined)f(from)h(astrometric)h(\014elds)d(spanning)427
+916 y(the)25 b(p)s(olar)e(and)h(non-p)s(olar)f(regions,)i(the)f(lik)m
+(eliho)s(o)s(d)d(that)k(the)g(di\013eren)m(tial)e(E-terms)h(e\013ect)i
+(w)m(as)427 1029 y(not)31 b(tak)m(en)h(in)m(to)f(accoun)m(t)h(when)d
+(allo)m(wing)h(for)g(prop)s(er)f(motion)i(in)e(past)i(astrometry)-8
+b(,)32 b(and)e(the)427 1142 y(undesirabilit)m(y)c(of)j(a)h(discon)m
+(tin)m(uit)m(y)d(in)h(the)i(algorithm,)f(the)g(decision)f(has)h(b)s
+(een)f(made)i(in)e(this)427 1255 y(routine)c(to)h(include)d(the)j
+(e\013ect)h(of)f(di\013eren)m(tial)e(E-terms)h(on)h(the)f(prop)s(er)f
+(motions)h(for)h(all)e(stars,)427 1367 y(whether)h(p)s(olar)f(or)h
+(not.)39 b(A)m(t)25 b(ep)s(o)s(c)m(h)f(J2000,)j(and)d(measuring)f(on)h
+(the)h(sky)f(rather)g(than)g(in)f(terms)427 1480 y(of)34
+b(\001)p Fl(\013)p FD(,)h(the)e(errors)g(resulting)f(from)h(this)f
+(simpli\014cation)e(are)k(less)f(than)g(1)h(milliarcsecond)d(in)427
+1593 y(p)s(osition)e(and)h(1)g(milliarcsecond)e(p)s(er)h(cen)m(tury)i
+(in)e(prop)s(er)g(motion.)311 1749 y(4.)46 b(See)31 b(also)f(sla)p
+Ft(_)p FD(FK45Z,)h(sla)p Ft(_)p FD(FK524,)g(sla)p Ft(_)p
+FD(FK54Z.)0 2156 y FB(REFERENCES)44 b FD(:)311 2362 y(1.)i(Smith,)29
+b(C.A.)i Fq(et)h(al.)p FD(,)g(1989.)g Fq(Astr.J.)e FB(97)p
+FD(,)h(265.)311 2517 y(2.)46 b(Y)-8 b(allop,)30 b(B.D.)i
+Fq(et)h(al.)p FD(,)e(1989.)h Fq(Astr.J.)e FB(97)p FD(,)h(274.)311
+2672 y(3.)46 b(Seidelmann,)27 b(P)-8 b(.K.)28 b(\(ed\),)i(1992.)41
+b Fq(Explanatory)34 b(Supplement)e(to)f(the)g(Astr)-5
+b(onomic)g(al)33 b(A)n(lmanac,)427 2785 y FD(ISBN)d(0-935702-68-7.)p
+0 2919 3780 8 v 0 3032 a Fx(SLA)p Fn(_)p Fx(FK45Z)305
+b Fm(FK4)39 b(to)f(FK5,)h(no)f(P)-10 b(.M.)39 b(or)f(P)m(arallax)302
+b Fx(SLA)p Fn(_)p Fx(FK45Z)0 3382 y FB(A)m(CTION)44 b
+FD(:)j(Con)m(v)m(ert)35 b(B1950.0)h(FK4)e(star)g(data)h(to)f(J2000.0)i
+(FK5)e(assuming)f(zero)h(prop)s(er)e(motion)i(in)227
+3495 y(the)i(FK5)f(frame.)55 b(This)33 b(routine)h(con)m(v)m(erts)j
+(stars)e(from)g(the)g(old,)h(Bessel-New)m(com)m(b,)i(FK4)d(system)227
+3608 y(to)e(the)f(new,)f(IA)m(U)h(1976,)i(FK5,)f(F)-8
+b(ric)m(k)m(e)33 b(system,)f(in)f(suc)m(h)g(a)h(w)m(a)m(y)h(that)f(the)
+g(FK5)g(prop)s(er)e(motion)h(is)227 3721 y(zero.)54 b(Because)36
+b(suc)m(h)e(a)h(star)g(has,)h(in)d(general,)j(a)f(non-zero)g(prop)s(er)
+e(motion)h(in)f(the)i(FK4)g(system,)227 3834 y(the)e(routine)f
+(requires)g(the)h(ep)s(o)s(c)m(h)f(at)i(whic)m(h)d(the)i(p)s(osition)e
+(in)h(the)h(FK4)g(system)g(w)m(as)h(determined.)227 3946
+y(The)c(metho)s(d)g(is)f(from)h(app)s(endix)e(2)j(of)f(reference)h(1,)g
+(but)f(using)f(the)h(constan)m(ts)i(of)e(reference)h(4.)0
+4134 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_FK45Z)g(\(R1950,)f
+(D1950,)i(BEPOCH,)e(R2000,)h(D2000\))0 4511 y FB(GIVEN)f
+FD(:)277 4657 y Fq(R1950)486 b FB(D)565 b FD(B1950.0)33
+b(FK4)e Fl(\013)g FD(at)g(ep)s(o)s(c)m(h)f(BEPOCH)g(\(radians\))277
+4770 y Fq(D1950)483 b FB(D)565 b FD(B1950.0)33 b(FK4)e
+Fl(\016)j FD(at)d(ep)s(o)s(c)m(h)g(BEPOCH)f(\(radians\))277
+4883 y Fq(BEPOCH)345 b FB(D)565 b FD(Besselian)30 b(ep)s(o)s(c)m(h)g
+(\()p Fq(e.g.)g FD(1979.3D0\))0 5282 y FB(RETURNED)46
+b FD(:)277 5428 y Fq(R2000)486 b FB(D)565 b FD(J2000.0)33
+b(FK5)e Fl(\013)f FD(\(radians\))277 5541 y Fq(D2000)483
+b FB(D)565 b FD(J2000.0)33 b(FK5)e Fl(\016)j FD(\(radians\))p
+eop
+%%Page: 75 77
+75 76 bop 0 52 a Fw(SUN/67.70)3252 b FD(75)0 351 y FB(NOTES)44
+b FD(:)311 563 y(1.)i(The)31 b(ep)s(o)s(c)m(h)f(BEPOCH)h(is)f(strictly)
+f(sp)s(eaking)h(Besselian,)h(but)f(if)g(a)h(Julian)d(ep)s(o)s(c)m(h)j
+(is)f(supplied)427 676 y(the)h(result)e(will)f(b)s(e)i(a\013ected)h
+(only)f(to)h(a)g(negligible)d(exten)m(t.)311 834 y(2.)46
+b(Con)m(v)m(ersion)31 b(from)f(Besselian)g(ep)s(o)s(c)m(h)h(1950.0)i
+(to)f(Julian)c(ep)s(o)s(c)m(h)j(2000.0)i(only)d(is)g(pro)m(vided)f
+(for.)427 947 y(Con)m(v)m(ersions)42 b(in)m(v)m(olving)e(other)i(ep)s
+(o)s(c)m(hs)g(will)d(require)h(use)i(of)g(the)g(appropriate)f
+(precession,)427 1060 y(prop)s(er)29 b(motion,)i(and)e(E-terms)i
+(routines)e(b)s(efore)h(and/or)g(after)h(FK45Z)g(is)e(called.)311
+1218 y(3.)46 b(In)41 b(the)h(FK4)g(catalogue)h(the)f(prop)s(er)e
+(motions)h(of)h(stars)f(within)e(10)2905 1185 y Fp(\016)2987
+1218 y FD(of)j(the)f(p)s(oles)g(do)g(not)427 1331 y(include)29
+b(the)j Fq(di\013er)-5 b(ential)34 b(E-terms)39 b FD(e\013ect)33
+b(and)d(should,)g(strictly)g(sp)s(eaking,)g(b)s(e)h(handled)e(in)h(a)
+427 1444 y(di\013eren)m(t)37 b(manner)f(from)g(stars)h(outside)f(these)
+h(regions.)60 b(Ho)m(w)m(ev)m(er,)40 b(giv)m(en)d(the)g(general)g(lac)m
+(k)427 1557 y(of)i(homogeneit)m(y)g(of)f(the)h(star)f(data)h(a)m(v)-5
+b(ailable)38 b(for)g(routine)f(astrometry)-8 b(,)42 b(the)d
+(di\016culties)c(of)427 1670 y(handling)30 b(p)s(ositions)g(that)j(ma)m
+(y)g(ha)m(v)m(e)h(b)s(een)e(determined)f(from)h(astrometric)h(\014elds)
+d(spanning)427 1783 y(the)25 b(p)s(olar)e(and)h(non-p)s(olar)f
+(regions,)i(the)f(lik)m(eliho)s(o)s(d)d(that)k(the)g(di\013eren)m(tial)
+e(E-terms)h(e\013ect)i(w)m(as)427 1896 y(not)31 b(tak)m(en)h(in)m(to)f
+(accoun)m(t)h(when)d(allo)m(wing)h(for)g(prop)s(er)f(motion)i(in)e
+(past)i(astrometry)-8 b(,)32 b(and)e(the)427 2008 y(undesirabilit)m(y)c
+(of)j(a)h(discon)m(tin)m(uit)m(y)d(in)h(the)i(algorithm,)f(the)g
+(decision)f(has)h(b)s(een)f(made)i(in)e(this)427 2121
+y(routine)c(to)h(include)d(the)j(e\013ect)h(of)f(di\013eren)m(tial)e
+(E-terms)h(on)h(the)f(prop)s(er)f(motions)h(for)h(all)e(stars,)427
+2234 y(whether)k(p)s(olar)f(or)i(not.)40 b(A)m(t)29 b(ep)s(o)s(c)m(h)e
+(2000,)j(and)d(measuring)f(on)i(the)f(sky)h(rather)f(than)g(in)g(terms)
+427 2347 y(of)34 b(\001)p Fl(\013)p FD(,)h(the)e(errors)g(resulting)f
+(from)h(this)f(simpli\014cation)e(are)k(less)f(than)g(1)h
+(milliarcsecond)d(in)427 2460 y(p)s(osition)e(and)h(1)g(milliarcsecond)
+e(p)s(er)h(cen)m(tury)i(in)e(prop)s(er)g(motion.)311
+2618 y(4.)46 b(See)31 b(also)f(sla)p Ft(_)p FD(FK425,)h(sla)p
+Ft(_)p FD(FK524,)h(sla)p Ft(_)p FD(FK54Z.)0 3041 y FB(REFERENCES)44
+b FD(:)311 3252 y(1.)i(Aoki,)31 b(S.,)f Fq(et)j(al.)p
+FD(,)e(1983.)h Fq(Astr.Astr)-5 b(ophys.)p FD(,)33 b FB(128)p
+FD(,)e(263.)311 3410 y(2.)46 b(Smith,)29 b(C.A.)i Fq(et)h(al.)p
+FD(,)g(1989.)g Fq(Astr.J.)e FB(97)p FD(,)h(265.)311 3569
+y(3.)46 b(Y)-8 b(allop,)30 b(B.D.)i Fq(et)h(al.)p FD(,)e(1989.)h
+Fq(Astr.J.)e FB(97)p FD(,)h(274.)311 3727 y(4.)46 b(Seidelmann,)27
+b(P)-8 b(.K.)28 b(\(ed\),)i(1992.)41 b Fq(Explanatory)34
+b(Supplement)e(to)f(the)g(Astr)-5 b(onomic)g(al)33 b(A)n(lmanac,)427
+3840 y FD(ISBN)d(0-935702-68-7.)p 0 3979 3780 8 v 0 4092
+a Fx(SLA)p Fn(_)p Fx(FK524)862 b Fm(FK5)39 b(to)f(FK4)862
+b Fx(SLA)p Fn(_)p Fx(FK524)0 4442 y FB(A)m(CTION)44 b
+FD(:)c(Con)m(v)m(ert)31 b(J2000.0)h(FK5)e(star)g(data)g(to)h(B1950.0)h
+(FK4.)41 b(This)28 b(routine)h(con)m(v)m(erts)i(stars)f(from)227
+4555 y(the)35 b(new,)h(IA)m(U)f(1976,)j(FK5,)e(F)-8 b(ric)m(k)m(e)36
+b(system,)h(to)e(the)g(old,)g(Bessel-New)m(com)m(b,)j(FK4)d(system.)54
+b(The)227 4668 y(precepts)22 b(of)h(Smith)d Fq(et)25
+b(al.)d FD(\(reference)h(1\))g(are)f(follo)m(w)m(ed,)i(using)d(the)h
+(implemen)m(tation)f(b)m(y)h(Y)-8 b(allop)21 b Fq(et)k(al.)227
+4781 y FD(\(reference)33 b(2\))g(of)f(a)h(matrix)e(metho)s(d)h(due)f
+(to)i(Standish.)44 b(Kinoshita's)30 b(dev)m(elopmen)m(t)j(of)f(Ando)m
+(y)m(er's)227 4894 y(p)s(ost-New)m(com)m(b)f(precession)e(is)f(used.)40
+b(The)29 b(n)m(umerical)f(constan)m(ts)j(from)e(Seidelmann)e
+Fq(et)32 b(al.)e FD(\(refer-)227 5007 y(ence)h(3\))g(are)g(used)f
+(canonically)-8 b(.)0 5194 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_FK524)g(\(R2000,)f(D2000,)i(DR2000,)e(DD2000,)h(P2000,)g(V2000,)
+1192 5307 y(R1950,)f(D1950,)i(DR1950,)e(DD1950,)h(P1950,)g(V1950\))0
+5693 y FB(GIVEN)f FD(:)p eop
+%%Page: 76 78
+76 77 bop 0 52 a FD(76)277 339 y Fq(R2000)486 b FB(D)565
+b FD(J2000.0)33 b Fl(\013)e FD(\(radians\))277 452 y
+Fq(D2000)483 b FB(D)565 b FD(J2000.0)33 b Fl(\016)h FD(\(radians\))277
+565 y Fq(DR2000)417 b FB(D)565 b FD(J2000.0)50 b(prop)s(er)c(motion)h
+(in)f Fl(\013)i FD(\(radians)e(p)s(er)g(Julian)1658 678
+y(y)m(ear\))277 791 y Fq(DD2000)414 b FB(D)565 b FD(J2000.0)52
+b(prop)s(er)c(motion)h(in)f Fl(\016)54 b FD(\(radians)48
+b(p)s(er)g(Julian)1658 904 y(y)m(ear\))277 1016 y Fq(P2000)490
+b FB(D)565 b FD(J2000.0)33 b(parallax)c(\(arcsec\))277
+1129 y Fq(V2000)484 b FB(D)565 b FD(J2000)24 b(radial)c(v)m(elo)s(cit)m
+(y)i(\(km)g(s)2702 1096 y Fp(\000)p Fu(1)2796 1129 y
+FD(,)i(+v)m(e)f(=)e(mo)m(ving)h(a)m(w)m(a)m(y\))0 1607
+y FB(RETURNED)46 b FD(:)277 1753 y Fq(R1950)486 b FB(D)565
+b FD(B1950.0)33 b Fl(\013)e FD(\(radians\))277 1866 y
+Fq(D1950)483 b FB(D)565 b FD(B1950.0)33 b Fl(\016)i FD(\(radians\))277
+1979 y Fq(DR1950)417 b FB(D)565 b FD(B1950.0)39 b(prop)s(er)c(motion)h
+(in)f Fl(\013)i FD(\(radians)f(p)s(er)f(tropical)1658
+2092 y(y)m(ear\))277 2205 y Fq(DD1950)414 b FB(D)565
+b FD(B1950.0)41 b(prop)s(er)c(motion)i(in)e Fl(\016)42
+b FD(\(radians)37 b(p)s(er)h(tropical)1658 2318 y(y)m(ear\))277
+2431 y Fq(P1950)490 b FB(D)565 b FD(B1950.0)33 b(parallax)d(\(arcsec\))
+277 2544 y Fq(V1950)484 b FB(D)565 b FD(radial)29 b(v)m(elo)s(cit)m(y)i
+(\(km)f(s)2477 2511 y Fp(\000)p Fu(1)2571 2544 y FD(,)h(+v)m(e)g(=)f
+(mo)m(ving)g(a)m(w)m(a)m(y\))0 2909 y FB(NOTES)44 b FD(:)311
+3101 y(1.)i(The)37 b Fl(\013)h FD(prop)s(er)e(motions)h(are)57
+b(_)-45 b Fl(\013)38 b FD(rather)f(than)57 b(_)-44 b
+Fl(\013)15 b FD(cos)h Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)
+i(rather)f(than)g(p)s(er)427 3214 y(cen)m(tury)-8 b(.)311
+3363 y(2.)46 b(Note)f(that)e(con)m(v)m(ersion)h(from)e(Julian)f(ep)s(o)
+s(c)m(h)i(2000.0)j(to)d(Besselian)g(ep)s(o)s(c)m(h)g(1950.0)i(only)d
+(is)427 3475 y(pro)m(vided)31 b(for.)46 b(Con)m(v)m(ersions)31
+b(in)m(v)m(olving)g(other)h(ep)s(o)s(c)m(hs)g(will)d(require)i(use)h
+(of)g(the)g(appropriate)427 3588 y(precession,)c(prop)s(er)e(motion,)i
+(and)f(E-terms)g(routines)f(b)s(efore)h(and/or)h(after)g(FK524)h(is)d
+(called.)311 3737 y(3.)46 b(In)41 b(the)h(FK4)g(catalogue)h(the)f(prop)
+s(er)e(motions)h(of)h(stars)f(within)e(10)2905 3704 y
+Fp(\016)2987 3737 y FD(of)j(the)f(p)s(oles)g(do)g(not)427
+3850 y(include)29 b(the)j Fq(di\013er)-5 b(ential)34
+b(E-terms)39 b FD(e\013ect)33 b(and)d(should,)g(strictly)g(sp)s
+(eaking,)g(b)s(e)h(handled)e(in)h(a)427 3963 y(di\013eren)m(t)37
+b(manner)f(from)g(stars)h(outside)f(these)h(regions.)60
+b(Ho)m(w)m(ev)m(er,)40 b(giv)m(en)d(the)g(general)g(lac)m(k)427
+4076 y(of)i(homogeneit)m(y)g(of)f(the)h(star)f(data)h(a)m(v)-5
+b(ailable)38 b(for)g(routine)f(astrometry)-8 b(,)42 b(the)d
+(di\016culties)c(of)427 4188 y(handling)30 b(p)s(ositions)g(that)j(ma)m
+(y)g(ha)m(v)m(e)h(b)s(een)e(determined)f(from)h(astrometric)h(\014elds)
+d(spanning)427 4301 y(the)25 b(p)s(olar)e(and)h(non-p)s(olar)f
+(regions,)i(the)f(lik)m(eliho)s(o)s(d)d(that)k(the)g(di\013eren)m(tial)
+e(E-terms)h(e\013ect)i(w)m(as)427 4414 y(not)31 b(tak)m(en)h(in)m(to)f
+(accoun)m(t)h(when)d(allo)m(wing)h(for)g(prop)s(er)f(motion)i(in)e
+(past)i(astrometry)-8 b(,)32 b(and)e(the)427 4527 y(undesirabilit)m(y)c
+(of)j(a)h(discon)m(tin)m(uit)m(y)d(in)h(the)i(algorithm,)f(the)g
+(decision)f(has)h(b)s(een)f(made)i(in)e(this)427 4640
+y(routine)c(to)h(include)d(the)j(e\013ect)h(of)f(di\013eren)m(tial)e
+(E-terms)h(on)h(the)f(prop)s(er)f(motions)h(for)h(all)e(stars,)427
+4753 y(whether)k(p)s(olar)f(or)i(not.)40 b(A)m(t)29 b(ep)s(o)s(c)m(h)e
+(2000,)j(and)d(measuring)f(on)i(the)f(sky)h(rather)f(than)g(in)g(terms)
+427 4866 y(of)34 b(\001)p Fl(\013)p FD(,)h(the)e(errors)g(resulting)f
+(from)h(this)f(simpli\014cation)e(are)k(less)f(than)g(1)h
+(milliarcsecond)d(in)427 4979 y(p)s(osition)e(and)h(1)g(milliarcsecond)
+e(p)s(er)h(cen)m(tury)i(in)e(prop)s(er)g(motion.)311
+5127 y(4.)46 b(See)31 b(also)f(sla)p Ft(_)p FD(FK425,)h(sla)p
+Ft(_)p FD(FK45Z,)g(sla)p Ft(_)p FD(FK54Z.)0 5501 y FB(REFERENCES)44
+b FD(:)311 5693 y(1.)i(Smith,)29 b(C.A.)i Fq(et)h(al.)p
+FD(,)g(1989.)g Fq(Astr.J.)e FB(97)p FD(,)h(265.)p eop
+%%Page: 77 79
+77 78 bop 0 52 a Fw(SUN/67.70)3252 b FD(77)311 351 y(2.)46
+b(Y)-8 b(allop,)30 b(B.D.)i Fq(et)h(al.)p FD(,)e(1989.)h
+Fq(Astr.J.)e FB(97)p FD(,)h(274.)311 481 y(3.)46 b(Seidelmann,)27
+b(P)-8 b(.K.)28 b(\(ed\),)i(1992.)41 b Fq(Explanatory)34
+b(Supplement)e(to)f(the)g(Astr)-5 b(onomic)g(al)33 b(A)n(lmanac,)427
+594 y FD(ISBN)d(0-935702-68-7.)p 0 660 3780 8 v 0 773
+a Fx(SLA)p Fn(_)p Fx(FK52H)681 b Fm(FK5)39 b(to)f(Hipparcos)680
+b Fx(SLA)p Fn(_)p Fx(FK52H)0 1123 y FB(A)m(CTION)44 b
+FD(:)68 b(T)-8 b(ransform)43 b(an)i(FK5)f(\(J2000\))j(p)s(osition)42
+b(and)h(prop)s(er)g(motion)h(in)m(to)g(the)h(frame)f(of)g(the)227
+1236 y(Hipparcos)30 b(catalogue.)0 1424 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_FK52H)g(\(R5,)g(D5,)h(DR5,)g(DD5,)f(RH,)h
+(DH,)g(DRH,)g(DDH\))0 1708 y FB(GIVEN)e FD(:)277 1854
+y Fq(R5)624 b FB(D)565 b FD(J2000.0)33 b(FK5)e Fl(\013)f
+FD(\(radians\))277 1967 y Fq(D5)621 b FB(D)565 b FD(J2000.0)33
+b(FK5)e Fl(\016)j FD(\(radians\))277 2080 y Fq(DR5)555
+b FB(D)565 b FD(J2000.0)36 b(FK5)f(prop)s(er)e(motion)g(in)g
+Fl(\013)i FD(\(radians)e(p)s(er)g(Ju-)1658 2193 y(lian)c(y)m(ear\))277
+2305 y Fq(DD5)552 b FB(D)565 b FD(J2000.0)24 b(FK5)e(prop)s(er)d
+(motion)j(in)e Fl(\016)25 b FD(\(radians)20 b(p)s(er)g(Julian)1658
+2418 y(y)m(ear\))0 2657 y FB(RETURNED)46 b FD(:)277 2803
+y Fq(RH)602 b FB(D)565 b FD(Hipparcos)30 b Fl(\013)g
+FD(\(radians\))277 2916 y Fq(DH)599 b FB(D)565 b FD(Hipparcos)30
+b Fl(\016)k FD(\(radians\))277 3029 y Fq(DRH)533 b FB(D)565
+b FD(Hipparcos)33 b(prop)s(er)f(motion)h(in)f Fl(\013)i
+FD(\(radians)e(p)s(er)g(Julian)1658 3142 y(y)m(ear\))277
+3255 y Fq(DDH)530 b FB(D)565 b FD(Hipparcos)35 b(prop)s(er)f(motion)h
+(in)f Fl(\016)40 b FD(\(radians)34 b(p)s(er)g(Julian)1658
+3368 y(y)m(ear\))0 3607 y FB(NOTES)44 b FD(:)311 3778
+y(1.)i(The)37 b Fl(\013)h FD(prop)s(er)e(motions)h(are)57
+b(_)-45 b Fl(\013)38 b FD(rather)f(than)57 b(_)-44 b
+Fl(\013)15 b FD(cos)h Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)
+i(rather)f(than)g(p)s(er)427 3891 y(cen)m(tury)-8 b(.)311
+4021 y(2.)46 b(The)41 b(FK5)g(to)g(Hipparcos)f(transformation)g
+(consists)g(of)h(a)g(pure)f(rotation)h(and)f(spin;)k(zonal)427
+4134 y(errors)30 b(in)f(the)i(FK5)g(catalogue)h(are)e(not)h(tak)m(en)g
+(in)m(to)g(accoun)m(t.)311 4264 y(3.)46 b(The)c(adopted)h(ep)s(o)s(c)m
+(h)g(J2000.0)h(FK5)g(to)f(Hipparcos)f(orien)m(tation)g(and)g(spin)f(v)
+-5 b(alues)42 b(are)h(as)427 4376 y(follo)m(ws)30 b(\(see)h
+(reference\):)p 821 4497 1115 4 v 819 4610 4 113 v 971
+4610 V 971 4610 V 1023 4577 a Fq(orientation)p 1509 4610
+V 199 w(spin)p 1934 4610 V 821 4614 1115 4 v 819 4727
+4 113 v 871 4693 a Fl(x)p 971 4727 V 184 w Fo(\000)p
+FD(19)p Fl(:)p FD(9)p 1509 4727 V 254 w Fo(\000)p FD(0)p
+Fl(:)p FD(30)p 1934 4727 V 819 4840 V 875 4806 a Fl(y)p
+971 4840 V 232 w Fo(\000)p FD(9)p Fl(:)p FD(1)p 1509
+4840 V 254 w(+0)p Fl(:)p FD(60)p 1934 4840 V 819 4952
+V 877 4919 a Fl(z)p 971 4952 V 188 w FD(+22)p Fl(:)p
+FD(9)p 1509 4952 V 254 w(+0)p Fl(:)p FD(70)p 1934 4952
+V 821 4956 1115 4 v 819 5069 4 113 v 971 5069 V 1151
+5035 a Fq(mas)p 1509 5069 V 299 w(mas/y)p 1934 5069 V
+821 5072 1115 4 v 427 5269 a FD(These)40 b(orien)m(tation)h(and)e(spin)
+f(comp)s(onen)m(ts)j(are)g(in)m(terpreted)e(as)i Fq(axial)h(ve)-5
+b(ctors.)71 b FD(An)40 b(axial)427 5382 y(v)m(ector)35
+b(p)s(oin)m(ts)d(at)i(the)g(p)s(ole)e(of)i(the)f(rotation)h(and)f(its)f
+(length)h(is)f(the)i(amoun)m(t)g(of)f(rotation)h(in)427
+5495 y(radians.)311 5625 y(4.)46 b(See)31 b(also)f(sla)p
+Ft(_)p FD(FK5HZ,)g(sla)p Ft(_)p FD(H2FK5,)h(sla)p Ft(_)p
+FD(HFK5Z.)p eop
+%%Page: 78 80
+78 79 bop 0 52 a FD(78)0 351 y FB(REFERENCE)44 b FD(:)d(F)-8
+b(eissel,)30 b(M.)h(&)f(Mignard,)g(F.,)h(1998.,)h Fq(Astr)-5
+b(on.Astr)g(ophys.)34 b FB(331)p FD(,)d(L33-L36.)p 0
+516 3780 8 v 0 629 a Fx(SLA)p Fn(_)p Fx(FK54Z)305 b Fm(FK5)39
+b(to)f(FK4,)h(no)f(P)-10 b(.M.)39 b(or)f(P)m(arallax)302
+b Fx(SLA)p Fn(_)p Fx(FK54Z)0 979 y FB(A)m(CTION)44 b
+FD(:)i(Con)m(v)m(ert)34 b(a)g(J2000.0)h(FK5)f(star)f(p)s(osition)f(to)i
+(B1950.0)i(FK4)d(assuming)f(FK5)i(zero)g(prop)s(er)227
+1092 y(motion)e(and)f(parallax.)43 b(This)30 b(routine)g(con)m(v)m
+(erts)k(star)d(p)s(ositions)f(from)h(the)h(new,)g(IA)m(U)g(1976,)i
+(FK5,)227 1205 y(F)-8 b(ric)m(k)m(e)32 b(system)e(to)i(the)e(old,)g
+(Bessel-New)m(com)m(b,)i(FK4)f(system.)0 1393 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_FK54Z)g(\(R2000,)f(D2000,)i(BEPOCH,)e
+(R1950,)h(D1950,)h(DR1950,)e(DD1950\))0 1791 y FB(GIVEN)g
+FD(:)277 1937 y Fq(R2000)486 b FB(D)565 b FD(J2000.0)33
+b(FK5)e Fl(\013)f FD(\(radians\))277 2050 y Fq(D2000)483
+b FB(D)565 b FD(J2000.0)33 b(FK5)e Fl(\016)j FD(\(radians\))277
+2163 y Fq(BEPOCH)345 b FB(D)565 b FD(Besselian)30 b(ep)s(o)s(c)m(h)g
+(\()p Fq(e.g.)g FD(1950D0\))0 2597 y FB(RETURNED)46 b
+FD(:)277 2743 y Fq(R1950)486 b FB(D)565 b FD(B1950.0)33
+b(FK4)e Fl(\013)g FD(at)g(ep)s(o)s(c)m(h)f(BEPOCH)g(\(radians\))277
+2856 y Fq(D1950)483 b FB(D)565 b FD(B1950.0)33 b(FK4)e
+Fl(\016)j FD(at)d(ep)s(o)s(c)m(h)g(BEPOCH)f(\(radians\))277
+2969 y Fq(DR1950)417 b FB(D)565 b FD(B1950.0)26 b(FK4)e(prop)s(er)d
+(motion)i(in)f Fl(\013)i FD(\(radians)e(p)s(er)g(trop-)1658
+3081 y(ical)30 b(y)m(ear\))277 3194 y Fq(DD1950)414 b
+FB(D)565 b FD(B1950.0)28 b(FK4)d(prop)s(er)f(motion)h(in)e
+Fl(\016)29 b FD(\(radians)24 b(p)s(er)g(trop-)1658 3307
+y(ical)30 b(y)m(ear\))0 3741 y FB(NOTES)44 b FD(:)311
+3961 y(1.)i(The)37 b Fl(\013)h FD(prop)s(er)e(motions)h(are)57
+b(_)-45 b Fl(\013)38 b FD(rather)f(than)57 b(_)-44 b
+Fl(\013)15 b FD(cos)h Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)
+i(rather)f(than)g(p)s(er)427 4074 y(cen)m(tury)-8 b(.)311
+4236 y(2.)46 b(Con)m(v)m(ersion)31 b(from)f(Julian)f(ep)s(o)s(c)m(h)h
+(2000.0)j(to)f(Besselian)e(ep)s(o)s(c)m(h)h(1950.0)i(only)d(is)g(pro)m
+(vided)f(for.)427 4349 y(Con)m(v)m(ersions)44 b(in)m(v)m(olving)f
+(other)i(ep)s(o)s(c)m(hs)f(will)d(require)j(use)g(of)g(the)h
+(appropriate)e(precession)427 4462 y(routines)30 b(b)s(efore)f(and)h
+(after)h(this)e(routine)h(is)f(called.)311 4624 y(3.)46
+b(Unlik)m(e)24 b(in)f(the)h(sla)p Ft(_)p FD(FK524)h(routine,)g(the)f
+(FK5)h(prop)s(er)e(motions,)i(the)g(parallax)e(and)h(the)g(radial)427
+4737 y(v)m(elo)s(cit)m(y)31 b(are)g(presumed)e(zero.)311
+4899 y(4.)46 b(It)25 b(w)m(as)g(the)f(in)m(ten)m(tion)g(that)h(FK5)g
+(should)d(b)s(e)i(a)h(close)f(appro)m(ximation)g(to)h(an)f(inertial)e
+(frame,)k(so)427 5012 y(that)i(distan)m(t)e(ob)5 b(jects)28
+b(ha)m(v)m(e)f(zero)h(prop)s(er)d(motion;)j(suc)m(h)f(ob)5
+b(jects)27 b(ha)m(v)m(e)h(\(in)e(general\))h(non-zero)427
+5125 y(prop)s(er)i(motion)h(in)f(FK4,)i(and)f(this)f(routine)h(returns)
+f(those)i Fq(\014ctitious)i(pr)-5 b(op)g(er)35 b(motions)p
+FD(.)311 5287 y(5.)46 b(The)25 b(p)s(osition)e(returned)h(b)m(y)g(this)
+g(routine)g(is)g(in)g(the)h(B1950)i(reference)e(frame)g(but)f(at)i
+(Besselian)427 5400 y(ep)s(o)s(c)m(h)36 b(BEPOCH.)h(F)-8
+b(or)37 b(comparison)f(with)f(catalogues)j(the)f(BEPOCH)f(argumen)m(t)h
+(will)c(fre-)427 5513 y(quen)m(tly)d(b)s(e)g(1950D0.)311
+5675 y(6.)46 b(See)31 b(also)f(sla)p Ft(_)p FD(FK425,)h(sla)p
+Ft(_)p FD(FK45Z,)g(sla)p Ft(_)p FD(FK524.)p eop
+%%Page: 79 81
+79 80 bop 0 52 a Fw(SUN/67.70)3252 b FD(79)p 0 267 3780
+8 v 0 380 a Fx(SLA)p Fn(_)p Fx(FK5HZ)428 b Fm(FK5)39
+b(to)f(Hipparcos,)f(no)h(P)-10 b(.M.)428 b Fx(SLA)p Fn(_)p
+Fx(FK5HZ)0 730 y FB(A)m(CTION)44 b FD(:)38 b(T)-8 b(ransform)24
+b(an)g(FK5)h(\(J2000\))i(star)e(p)s(osition)e(in)m(to)i(the)g(frame)g
+(of)g(the)g(Hipparcos)f(catalogue,)227 843 y(assuming)29
+b(zero)i(Hipparcos)f(prop)s(er)f(motion.)0 1031 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_FK5HZ)g(\(R5,)g(D5,)h(EPOCH,)f(RH,)h(DH\))
+0 1337 y FB(GIVEN)e FD(:)277 1483 y Fq(R5)624 b FB(D)565
+b FD(J2000.0)33 b(FK5)e Fl(\013)f FD(\(radians\))277
+1596 y Fq(D5)621 b FB(D)565 b FD(J2000.0)33 b(FK5)e Fl(\016)j
+FD(\(radians\))277 1709 y Fq(EPOCH)409 b FB(D)565 b FD(Julian)28
+b(ep)s(o)s(c)m(h)i(\(TDB\))0 1987 y FB(RETURNED)46 b
+FD(:)277 2133 y Fq(RH)602 b FB(D)565 b FD(Hipparcos)30
+b Fl(\013)g FD(\(radians\))277 2246 y Fq(DH)599 b FB(D)565
+b FD(Hipparcos)30 b Fl(\016)k FD(\(radians\))0 2523 y
+FB(NOTES)44 b FD(:)311 2700 y(1.)i(The)37 b Fl(\013)h
+FD(prop)s(er)e(motions)h(are)57 b(_)-45 b Fl(\013)38
+b FD(rather)f(than)57 b(_)-44 b Fl(\013)15 b FD(cos)h
+Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)i(rather)f(than)g(p)s
+(er)427 2813 y(cen)m(tury)-8 b(.)311 2948 y(2.)46 b(The)41
+b(FK5)g(to)g(Hipparcos)f(transformation)g(consists)g(of)h(a)g(pure)f
+(rotation)h(and)f(spin;)k(zonal)427 3061 y(errors)30
+b(in)f(the)i(FK5)g(catalogue)h(are)e(not)h(tak)m(en)g(in)m(to)g(accoun)
+m(t.)311 3196 y(3.)46 b(The)c(adopted)h(ep)s(o)s(c)m(h)g(J2000.0)h(FK5)
+g(to)f(Hipparcos)f(orien)m(tation)g(and)g(spin)f(v)-5
+b(alues)42 b(are)h(as)427 3309 y(follo)m(ws)30 b(\(see)h(reference\):)p
+821 3433 1115 4 v 819 3546 4 113 v 971 3546 V 971 3546
+V 1023 3512 a Fq(orientation)p 1509 3546 V 199 w(spin)p
+1934 3546 V 821 3549 1115 4 v 819 3662 4 113 v 871 3628
+a Fl(x)p 971 3662 V 184 w Fo(\000)p FD(19)p Fl(:)p FD(9)p
+1509 3662 V 254 w Fo(\000)p FD(0)p Fl(:)p FD(30)p 1934
+3662 V 819 3775 V 875 3741 a Fl(y)p 971 3775 V 232 w
+Fo(\000)p FD(9)p Fl(:)p FD(1)p 1509 3775 V 254 w(+0)p
+Fl(:)p FD(60)p 1934 3775 V 819 3888 V 877 3854 a Fl(z)p
+971 3888 V 188 w FD(+22)p Fl(:)p FD(9)p 1509 3888 V 254
+w(+0)p Fl(:)p FD(70)p 1934 3888 V 821 3891 1115 4 v 819
+4004 4 113 v 971 4004 V 1151 3970 a Fq(mas)p 1509 4004
+V 299 w(mas/y)p 1934 4004 V 821 4008 1115 4 v 427 4208
+a FD(These)40 b(orien)m(tation)h(and)e(spin)f(comp)s(onen)m(ts)j(are)g
+(in)m(terpreted)e(as)i Fq(axial)h(ve)-5 b(ctors.)71 b
+FD(An)40 b(axial)427 4320 y(v)m(ector)35 b(p)s(oin)m(ts)d(at)i(the)g(p)
+s(ole)e(of)i(the)f(rotation)h(and)f(its)f(length)h(is)f(the)i(amoun)m
+(t)g(of)f(rotation)h(in)427 4433 y(radians.)311 4569
+y(4.)46 b(See)31 b(also)f(sla)p Ft(_)p FD(FK52H,)h(sla)p
+Ft(_)p FD(H2FK5,)g(sla)p Ft(_)p FD(HFK5Z.)0 4855 y FB(REFERENCE)44
+b FD(:)d(F)-8 b(eissel,)30 b(M.)h(&)f(Mignard,)g(F.,)h(1998.,)h
+Fq(Astr)-5 b(on.Astr)g(ophys.)34 b FB(331)p FD(,)d(L33-L36.)p
+0 4955 3780 8 v 0 5068 a Fx(SLA)p Fn(_)p Fx(FLOTIN)459
+b Fm(Deco)s(de)39 b(a)g(Real)f(Num)m(b)s(er)459 b Fx(SLA)p
+Fn(_)p Fx(FLOTIN)0 5418 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32
+b(free-format)f(input)d(in)m(to)j(single)e(precision)f(\015oating)j(p)s
+(oin)m(t.)0 5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_FLOTIN)f(\(STRING,)h(NSTRT,)g(RESLT,)g(JFLAG\))p
+eop
+%%Page: 80 82
+80 81 bop 0 52 a FD(80)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(STRING)381 b FB(C)569 b FD(string)29 b(con)m(taining)h(n)m(um)
+m(b)s(er)f(to)j(b)s(e)d(deco)s(ded)277 610 y Fq(NSTR)-7
+b(T)428 b FB(I)605 b FD(p)s(oin)m(ter)30 b(to)h(where)f(deco)s(ding)f
+(is)g(to)i(commence)277 723 y Fq(RESL)-7 b(T)442 b FB(R)567
+b FD(curren)m(t)30 b(v)-5 b(alue)30 b(of)h(result)0 1041
+y FB(RETURNED)46 b FD(:)277 1187 y Fq(NSTR)-7 b(T)428
+b FB(I)605 b FD(adv)-5 b(anced)31 b(to)g(next)f(n)m(um)m(b)s(er)277
+1300 y Fq(RESL)-7 b(T)442 b FB(R)567 b FD(result)277
+1413 y Fq(JFLA)n(G)436 b FB(I)605 b FD(status:)65 b Fo(\000)p
+FD(1)43 b(=)f Fo(\000)p FD(OK,)f(0)i(=)f(+OK,)g(1)h(=)f(n)m(ull)e
+(result,)1658 1526 y(2)31 b(=)f(error)0 1843 y FB(NOTES)44
+b FD(:)311 2026 y(1.)i(The)36 b(reason)h(sla)p Ft(_)p
+FD(FLOTIN)f(has)g(separate)i(`OK')e(status)h(v)-5 b(alues)36
+b(for)g(+)h(and)f Fo(\000)g FD(is)g(to)h(enable)427 2139
+y(min)m(us)28 b(zero)j(to)g(b)s(e)e(detected.)42 b(This)28
+b(is)g(of)i(crucial)f(imp)s(ortance)g(when)g(deco)s(ding)g(mixed-radix)
+427 2251 y(n)m(um)m(b)s(ers.)68 b(F)-8 b(or)40 b(example,)j(an)c(angle)
+h(expressed)f(as)i(degrees,)i(arcmin)m(utes)c(and)g(arcseconds)427
+2364 y(ma)m(y)31 b(ha)m(v)m(e)h(a)f(leading)e(min)m(us)f(sign)i(but)f
+(a)i(zero)g(degrees)g(\014eld.)311 2505 y(2.)46 b(A)32
+b(T)-8 b(AB)32 b(is)f(in)m(terpreted)g(as)h(a)g(space,)h(and)e(lo)m(w)m
+(ercase)i(c)m(haracters)g(are)f(in)m(terpreted)f(as)h(upp)s(er-)427
+2618 y(case.)42 b Fq(n.b.)30 b FD(The)g(test)h(for)f(T)-8
+b(AB)31 b(is)f(ASCI)s(I-sp)s(eci\014c.)311 2759 y(3.)46
+b(The)38 b(basic)f(format)h(is)f(the)h(sequence)h(of)f(\014elds)e
+Fo(\006)p Fl(n:nx)24 b Fo(\006)h Fl(n)p FD(,)40 b(where)d
+Fo(\006)h FD(is)f(a)h(sign)f(c)m(haracter)427 2872 y(`+')f(or)g(`)p
+Fo(\000)p FD(',)i Fl(n)e FD(means)f(a)i(string)e(of)h(decimal)f
+(digits,)h(`.')58 b(is)35 b(a)h(decimal)f(p)s(oin)m(t,)i(and)e
+Fl(x)p FD(,)j(whic)m(h)427 2985 y(indicates)30 b(an)h(exp)s(onen)m(t,)h
+(means)f(`D')h(or)f(`E'.)h(V)-8 b(arious)31 b(com)m(binations)f(of)h
+(these)h(\014elds)e(can)h(b)s(e)427 3098 y(omitted,)g(and)f(em)m(b)s
+(edded)f(blanks)g(are)i(p)s(ermissible)26 b(in)j(certain)h(places.)311
+3239 y(4.)46 b(Spaces:)506 3380 y Fo(\017)g FD(Leading)30
+b(spaces)h(are)g(ignored.)506 3507 y Fo(\017)46 b FD(Em)m(b)s(edded)38
+b(spaces)i(are)g(allo)m(w)m(ed)f(only)f(after)i(+,)i
+Fo(\000)p FD(,)g(D)d(or)h(E,)f(and)g(after)h(the)f(decimal)597
+3620 y(p)s(oin)m(t)30 b(if)f(the)i(\014rst)e(sequence)i(of)f(digits)f
+(is)h(absen)m(t.)506 3747 y Fo(\017)46 b FD(T)-8 b(railing)38
+b(spaces)i(are)h(ignored;)j(the)c(\014rst)f(signi\014es)f(end)h(of)h
+(deco)s(ding)f(and)g(subsequen)m(t)597 3860 y(ones)31
+b(are)g(skipp)s(ed.)311 4001 y(5.)46 b(Delimiters:)506
+4142 y Fo(\017)g FD(An)m(y)32 b(c)m(haracter)h(other)f(than)f(+,)p
+Fo(\000)p FD(,0-9,.,D,E)j(or)e(space)g(ma)m(y)g(b)s(e)f(used)g(to)h
+(signal)e(the)i(end)597 4255 y(of)f(the)f(n)m(um)m(b)s(er)f(and)h
+(terminate)h(deco)s(ding.)506 4381 y Fo(\017)46 b FD(Comma)28
+b(is)f(recognized)h(b)m(y)f(sla)p Ft(_)p FD(FLOTIN)g(as)h(a)g(sp)s
+(ecial)e(case;)k(it)d(is)g(skipp)s(ed,)f(lea)m(ving)h(the)597
+4494 y(p)s(oin)m(ter)j(on)g(the)g(next)h(c)m(haracter.)42
+b(See)31 b(13,)g(b)s(elo)m(w.)506 4621 y Fo(\017)46 b
+FD(Deco)s(ding)31 b(will)c(in)i(all)h(cases)h(terminate)f(if)g(end)f
+(of)i(string)e(is)h(reac)m(hed.)311 4762 y(6.)46 b(Both)31
+b(signs)f(are)g(optional.)40 b(The)30 b(default)g(is)f(+.)311
+4903 y(7.)46 b(The)30 b(man)m(tissa)g Fl(n:n)g FD(defaults)g(to)h(unit)
+m(y)-8 b(.)311 5044 y(8.)46 b(The)30 b(exp)s(onen)m(t)h
+Fl(x)5 b Fo(\006)g Fl(n)29 b FD(defaults)h(to)h(`E0'.)311
+5185 y(9.)46 b(The)30 b(strings)f(of)i(decimal)e(digits)g(ma)m(y)i(b)s
+(e)f(of)g(an)m(y)h(length.)266 5326 y(10.)46 b(The)30
+b(decimal)f(p)s(oin)m(t)h(is)f(optional)h(for)g(whole)g(n)m(um)m(b)s
+(ers.)266 5467 y(11.)46 b(A)28 b Fq(nul)5 b(l)30 b(r)-5
+b(esult)37 b FD(o)s(ccurs)28 b(when)e(the)i(string)f(of)h(c)m
+(haracters)h(b)s(eing)d(deco)s(ded)h(do)s(es)h(not)g(b)s(egin)e(with)
+427 5580 y(+,)p Fo(\000)p FD(,0-9,.,D)44 b(or)d(E,)g(or)g(consists)g
+(en)m(tirely)f(of)h(spaces.)74 b(When)41 b(this)f(condition)g(is)g
+(detected,)427 5693 y(JFLA)m(G)31 b(is)f(set)h(to)g(1)g(and)e(RESL)-8
+b(T)30 b(is)f(left)h(un)m(touc)m(hed.)p eop
+%%Page: 81 83
+81 82 bop 0 52 a Fw(SUN/67.70)3252 b FD(81)266 351 y(12.)46
+b(NSTR)-8 b(T)30 b(=)g(1)h(for)f(the)g(\014rst)g(c)m(haracter)i(in)d
+(the)i(string.)266 504 y(13.)46 b(On)20 b(return)g(from)g(sla)p
+Ft(_)p FD(FLOTIN,)f(NSTR)-8 b(T)20 b(is)g(set)h(ready)g(for)f(the)h
+(next)f(deco)s(de)h({)g(follo)m(wing)e(trail-)427 617
+y(ing)31 b(blanks)g(and)g(an)m(y)h(comma.)47 b(If)31
+b(a)i(delimiter)c(other)j(than)g(comma)h(is)e(b)s(eing)f(used,)i(NSTR)
+-8 b(T)427 729 y(m)m(ust)35 b(b)s(e)f(incremen)m(ted)g(b)s(efore)h(the)
+g(next)g(call)f(to)h(sla)p Ft(_)p FD(FLOTIN,)f(otherwise)g(all)g
+(subsequen)m(t)427 842 y(calls)c(will)e(return)h(a)i(n)m(ull)d(result.)
+266 995 y(14.)46 b(Errors)30 b(\(JFLA)m(G=2\))i(o)s(ccur)e(when:)506
+1147 y Fo(\017)46 b FD(a)31 b(+,)f Fo(\000)p FD(,)h(D)f(or)h(E)f(is)f
+(left)h(unsatis\014ed;)f(or)506 1280 y Fo(\017)46 b FD(the)30
+b(decimal)e(p)s(oin)m(t)h(is)f(presen)m(t)i(without)f(at)h(least)g(one)
+f(decimal)g(digit)f(b)s(efore)h(or)h(after)g(it;)597
+1393 y(or)506 1525 y Fo(\017)46 b FD(an)31 b(exp)s(onen)m(t)f(more)g
+(than)h(100)g(has)f(b)s(een)g(presen)m(ted.)266 1678
+y(15.)46 b(When)31 b(an)f(error)h(has)f(b)s(een)g(detected,)j(NSTR)-8
+b(T)30 b(is)g(left)g(p)s(oin)m(ting)f(to)j(the)f(c)m(haracter)h(follo)m
+(wing)427 1790 y(the)41 b(last)g(one)g(used)g(b)s(efore)f(the)h(error)g
+(came)h(to)f(ligh)m(t.)72 b(This)39 b(ma)m(y)j(b)s(e)e(after)i(the)f(p)
+s(oin)m(t)f(at)427 1903 y(whic)m(h)g(a)h(more)f(sophisticated)g
+(program)h(could)e(ha)m(v)m(e)j(detected)g(the)f(error.)71
+b(F)-8 b(or)42 b(example,)427 2016 y(sla)p Ft(_)p FD(FLOTIN)26
+b(do)s(es)i(not)f(detect)i(that)f(`1E999')i(is)c(unacceptable)i(\(on)f
+(a)h(computer)g(where)f(this)427 2129 y(is)j(so\))h(un)m(til)d(the)j
+(en)m(tire)f(n)m(um)m(b)s(er)f(has)h(b)s(een)g(deco)s(ded.)266
+2282 y(16.)46 b(Certain)28 b(highly)f(unlik)m(ely)g(com)m(binations)h
+(of)h(man)m(tissa)g(and)f(exp)s(onen)m(t)h(can)h(cause)f(arithmetic)427
+2394 y(faults)j(during)e(the)i(deco)s(de,)i(in)d(some)i(cases)g
+(despite)e(the)i(fact)g(that)g(they)g(together)h(could)d(b)s(e)427
+2507 y(construed)f(as)h(a)g(v)-5 b(alid)28 b(n)m(um)m(b)s(er.)266
+2660 y(17.)46 b(Deco)s(ding)31 b(is)e(left)h(to)h(righ)m(t,)f(one)h
+(pass.)266 2812 y(18.)46 b(See)31 b(also)f(sla)p Ft(_)p
+FD(DFL)-8 b(TIN)31 b(and)e(sla)p Ft(_)p FD(INTIN.)p 0
+2948 3780 8 v 0 3061 a Fx(SLA)p Fn(_)p Fx(GALEQ)530 b
+Fm(Galactic)37 b(to)h(J2000)f Fg(\013)q(;)20 b(\016)537
+b Fx(SLA)p Fn(_)p Fx(GALEQ)0 3411 y FB(A)m(CTION)44 b
+FD(:)62 b(T)-8 b(ransformation)40 b(from)h(IA)m(U)g(1958)i(galactic)f
+(co)s(ordinates)f(to)h(J2000.0)h(FK5)f(equatorial)227
+3524 y(co)s(ordinates.)0 3712 y FB(CALL)j FD(:)77 b Ft(CALL)46
+b(sla_GALEQ)g(\(DL,)g(DB,)h(DR,)g(DD\))0 4080 y FB(GIVEN)e
+FD(:)277 4252 y Fq(DL,DB)449 b FB(D)565 b FD(galactic)31
+b(longitude)e(and)h(latitude)g([)15 b Fl(l)2975 4219
+y Ff(I)-7 b(I)3039 4252 y Fl(;)15 b(b)3118 4219 y Ff(I)-7
+b(I)3197 4252 y FD(])0 4645 y FB(RETURNED)46 b FD(:)277
+4817 y Fq(DR,DD)435 b FB(D)565 b FD(J2000.0)33 b([)15
+b Fl(\013;)g(\016)20 b FD(])0 5210 y FB(NOTES)44 b FD(:)311
+5410 y(1.)i(All)29 b(argumen)m(ts)i(are)g(in)e(radians.)311
+5562 y(2.)46 b(The)29 b(equatorial)f(co)s(ordinates)h(are)g(J2000.0)i
+(FK5.)40 b(Use)29 b(the)g(routine)f(sla)p Ft(_)p FD(GE50)h(if)f(con)m
+(v)m(ersion)427 5675 y(to)j(B1950.0)j(FK4)c(co)s(ordinates)g(is)g
+(required.)p eop
+%%Page: 82 84
+82 83 bop 0 52 a FD(82)p 0 267 3780 8 v 0 380 a Fx(SLA)p
+Fn(_)p Fx(GALSUP)365 b Fm(Galactic)36 b(to)j(Sup)s(ergalactic)364
+b Fx(SLA)p Fn(_)p Fx(GALSUP)0 730 y FB(A)m(CTION)44 b
+FD(:)39 b(T)-8 b(ransformation)26 b(from)h(IA)m(U)h(1958)h(galactic)f
+(co)s(ordinates)f(to)h(de)f(V)-8 b(aucouleurs)27 b(sup)s(ergalac-)227
+843 y(tic)k(co)s(ordinates.)0 1031 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_GALSUP)f(\(DL,)i(DB,)g(DSL,)g(DSB\))0
+1410 y FB(GIVEN)e FD(:)277 1582 y Fq(DL,DB)449 b FB(D)565
+b FD(galactic)29 b(longitude)e(and)h(latitude)f([)15
+b Fl(l)2966 1549 y Ff(I)-7 b(I)3030 1582 y Fl(;)15 b(b)3109
+1549 y Ff(I)-7 b(I)3189 1582 y FD(])28 b(\(radians\))0
+1993 y FB(RETURNED)46 b FD(:)277 2165 y Fq(DSL,DSB)347
+b FB(D)565 b FD(sup)s(ergalactic)30 b(longitude)f(and)h(latitude)f
+(\(radians\))0 2576 y FB(REFERENCES)44 b FD(:)311 2783
+y(1.)i(de)41 b(V)-8 b(aucouleurs,)42 b(de)f(V)-8 b(aucouleurs,)43
+b(&)d(Corwin,)h Fq(Se)-5 b(c)g(ond)43 b(R)-5 b(efer)g(enc)g(e)43
+b(Catalo)-5 b(gue)44 b(of)e(Bright)427 2896 y(Galaxies)p
+FD(,)32 b(U.T)-8 b(exas,)32 b(p8.)311 3052 y(2.)46 b(Systems)31
+b(&)h(Applied)d(Sciences)i(Corp.,)g(do)s(cumen)m(tation)h(for)f(the)h
+(mac)m(hine-readable)f(v)m(ersion)427 3165 y(of)g(the)f(ab)s(o)m(v)m(e)
+i(catalogue,)g(Con)m(tract)g(NAS)e(5-26490.)227 3372
+y(\(These)k(t)m(w)m(o)h(references)g(giv)m(e)f(di\013eren)m(t)f(v)-5
+b(alues)33 b(for)h(the)g(galactic)h(longitude)d(of)i(the)g(sup)s
+(ergalactic)227 3485 y(origin.)39 b(Both)31 b(are)g(wrong;)f(the)h
+(correct)h(v)-5 b(alue)29 b(is)h Fl(l)2012 3452 y Ff(I)-7
+b(I)2101 3485 y FD(=)25 b(137)p Fl(:)p FD(37.\))p 0 3642
+V 0 3755 a Fx(SLA)p Fn(_)p Fx(GE50)669 b Fm(Galactic)36
+b(to)j(B1950)e Fg(\013)q(;)20 b(\016)673 b Fx(SLA)p Fn(_)p
+Fx(GE50)0 4106 y FB(A)m(CTION)44 b FD(:)59 b(T)-8 b(ransformation)38
+b(from)h(IA)m(U)h(1958)i(galactic)e(co)s(ordinates)f(to)i(B1950.0)h
+(FK4)e(equatorial)227 4219 y(co)s(ordinates.)0 4406 y
+FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_GE50)g(\(DL,)h(DB,)f(DR,)h
+(DD\))0 4786 y FB(GIVEN)e FD(:)277 4957 y Fq(DL,DB)449
+b FB(D)565 b FD(galactic)31 b(longitude)e(and)h(latitude)g([)15
+b Fl(l)2975 4924 y Ff(I)-7 b(I)3039 4957 y Fl(;)15 b(b)3118
+4924 y Ff(I)-7 b(I)3197 4957 y FD(])0 5368 y FB(RETURNED)46
+b FD(:)277 5540 y Fq(DR,DD)435 b FB(D)565 b FD(B1950.0)33
+b([)15 b Fl(\013;)g(\016)21 b FD(])p eop
+%%Page: 83 85
+83 84 bop 0 52 a Fw(SUN/67.70)3252 b FD(83)0 351 y FB(NOTES)44
+b FD(:)311 536 y(1.)i(All)29 b(argumen)m(ts)i(are)g(in)e(radians.)311
+679 y(2.)46 b(The)29 b(equatorial)g(co)s(ordinates)g(are)g(B1950.0)j
+(FK4.)41 b(Use)30 b(the)f(routine)f(sla)p Ft(_)p FD(GALEQ)h(if)f(con)m
+(v)m(er-)427 792 y(sion)i(to)h(J2000.0)h(FK5)f(co)s(ordinates)f(is)g
+(required.)0 1131 y FB(REFERENCE)44 b FD(:)d(Blaau)m(w)30
+b Fq(et)j(al.)p FD(,)e(1960,)h Fq(Mon.Not.R.astr.So)-5
+b(c.)p FD(,)33 b FB(121)p FD(,)e(123.)p 0 1254 3780 8
+v 0 1367 a Fx(SLA)p Fn(_)p Fx(GEOC)587 b Fm(Geo)s(detic)38
+b(to)g(Geo)s(cen)m(tric)586 b Fx(SLA)p Fn(_)p Fx(GEOC)0
+1718 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ert)32 b(geo)s(detic)f(p)s
+(osition)d(to)j(geo)s(cen)m(tric.)0 1905 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_GEOC)g(\(P,)h(H,)g(R,)g(Z\))0
+2242 y FB(GIVEN)e FD(:)277 2388 y Fq(P)674 b FB(D)565
+b FD(latitude)30 b(\(geo)s(detic,)h(radians\))277 2501
+y Fq(H)668 b FB(D)565 b FD(heigh)m(t)31 b(ab)s(o)m(v)m(e)i(reference)f
+(spheroid)d(\(geo)s(detic,)k(metres\))0 2946 y FB(RETURNED)46
+b FD(:)277 3092 y Fq(R)670 b FB(D)565 b FD(distance)30
+b(from)g(Earth)g(axis)g(\(A)m(U\))277 3205 y Fq(Z)680
+b FB(D)565 b FD(distance)30 b(from)g(plane)g(of)g(Earth)g(equator)h
+(\(A)m(U\))0 3536 y FB(NOTES)44 b FD(:)311 3720 y(1.)i(Geo)s(cen)m
+(tric)32 b(latitude)d(can)i(b)s(e)e(obtained)h(b)m(y)g(ev)-5
+b(aluating)30 b Ft(ATAN2\(Z,R\))p FD(.)311 3863 y(2.)46
+b(IA)m(U)31 b(1976)h(constan)m(ts)g(are)f(used.)0 4203
+y FB(REFERENCE)44 b FD(:)d(Green,)31 b(R.M.,)g(1985.)h
+Fq(Spheric)-5 b(al)35 b(Astr)-5 b(onomy)p FD(,)32 b(Cam)m(bridge)e(U.P)
+-8 b(.,)31 b(p98.)p 0 4326 V 0 4439 a Fx(SLA)p Fn(_)p
+Fx(GMST)815 b Fm(UT)39 b(to)f(GMST)817 b Fx(SLA)p Fn(_)p
+Fx(GMST)0 4789 y FB(A)m(CTION)44 b FD(:)c(Con)m(v)m(ersion)30
+b(from)g(univ)m(ersal)f(time)h(UT1)h(to)g(Green)m(wic)m(h)f(mean)g
+(sidereal)f(time.)0 4977 y FB(CALL)45 b FD(:)77 b Ft(D)47
+b(=)h(sla_GMST)d(\(UT1\))0 5310 y FB(GIVEN)g FD(:)277
+5456 y Fq(UT1)557 b FB(D)565 b FD(univ)m(ersal)21 b(time)i(\(strictly)g
+(UT1\))g(expressed)g(as)g(mo)s(di\014ed)1658 5569 y(Julian)28
+b(Date)k(\(JD)p Fo(\000)p FD(2400000.5\))p eop
+%%Page: 84 86
+84 85 bop 0 52 a FD(84)0 351 y FB(RETURNED)46 b FD(:)277
+523 y Fq(sla)p Ft(_)p Fq(GMST)314 b FB(D)565 b FD(Green)m(wic)m(h)30
+b(mean)h(sidereal)e(time)h(\(radians\))0 818 y FB(NOTES)44
+b FD(:)311 996 y(1.)i(The)31 b(IA)m(U)i(1982)g(expression)e(\(see)h
+(page)h(S15)f(of)g(the)g(1984)h Fq(Astr)-5 b(onomic)g(al)37
+b(A)n(lmanac)p FD(\))32 b(is)f(used,)427 1108 y(but)41
+b(rearranged)g(to)h(reduce)f(rounding)e(errors.)73 b(This)39
+b(expression)h(is)g(alw)m(a)m(ys)i(describ)s(ed)d(as)427
+1221 y(giving)d(the)h(GMST)g(at)g(0)1337 1188 y Fu(h)1381
+1221 y FD(UT;)g(in)e(fact,)40 b(it)c(giv)m(es)i(the)f(di\013erence)f(b)
+s(et)m(w)m(een)h(the)g(GMST)g(and)427 1334 y(the)g(UT,)g(whic)m(h)e
+(happ)s(ens)g(to)i(equal)f(the)h(GMST)g(\(mo)s(dulo)e(24)i(hours\))f
+(at)h(0)3195 1301 y Fu(h)3239 1334 y FD(UT)g(eac)m(h)g(da)m(y)-8
+b(.)427 1447 y(In)33 b(sla)p Ft(_)p FD(GMST,)g(the)g(en)m(tire)h(UT)f
+(is)f(used)h(directly)f(as)i(the)g(argumen)m(t)f(for)h(the)f(canonical)
+g(for-)427 1560 y(m)m(ula,)42 b(and)d(the)h(fractional)f(part)h(of)g
+(the)g(UT)f(is)g(added)g(separately;)45 b(note)40 b(that)h(the)e
+(factor)427 1673 y(1)p Fl(:)p FD(0027379)15 b Fo(\001)g(\001)g(\001)36
+b FD(do)s(es)30 b(not)g(app)s(ear.)311 1810 y(2.)46 b(See)40
+b(also)f(the)h(routine)e(sla)p Ft(_)p FD(GMST)-8 b(A,)39
+b(whic)m(h)f(deliv)m(ers)g(b)s(etter)i(n)m(umerical)e(precision)f(b)m
+(y)i(ac-)427 1922 y(cepting)30 b(the)h(UT)f(date)h(and)f(time)g(as)h
+(separate)g(argumen)m(ts.)p 0 2026 3780 8 v 0 2139 a
+Fx(SLA)p Fn(_)p Fx(GMST)-11 b(A)283 b Fm(UT)39 b(to)f(GMST)g(\(extra)f
+(precision\))285 b Fx(SLA)p Fn(_)p Fx(GMST)-11 b(A)0
+2490 y FB(A)m(CTION)44 b FD(:)37 b(Con)m(v)m(ersion)24
+b(from)g(univ)m(ersal)e(time)i(UT1)g(to)h(Green)m(wic)m(h)f(mean)h
+(sidereal)d(time,)k(with)d(round-)227 2602 y(ing)30 b(errors)g
+(minimized.)0 2790 y FB(CALL)45 b FD(:)77 b Ft(D)47 b(=)h(sla_GMSTA)d
+(\(DATE,)h(UT1\))0 3101 y FB(GIVEN)f FD(:)277 3247 y
+Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(UT1)30 b(date)h(as)f(Mo)s
+(di\014ed)e(Julian)g(Date)j(\(in)m(teger)g(part)f(of)1658
+3360 y(JD)p Fo(\000)p FD(2400000.5\))277 3473 y Fq(UT1)557
+b FB(D)565 b FD(UT1)31 b(time)f(\(fraction)g(of)h(a)g(da)m(y\))0
+3760 y FB(RETURNED)46 b FD(:)277 3931 y Fq(sla)p Ft(_)p
+Fq(GMST)314 b FB(D)565 b FD(Green)m(wic)m(h)30 b(mean)h(sidereal)e
+(time)h(\(radians\))0 4226 y FB(NOTES)44 b FD(:)311 4404
+y(1.)i(The)38 b(algorithm)g(is)f(deriv)m(ed)h(from)g(the)h(IA)m(U)g
+(1982)h(expression)e(\(see)h(page)g(S15)g(of)g(the)g(1984)427
+4517 y(Astronomical)30 b(Almanac\).)311 4653 y(2.)46
+b(There)34 b(is)f(no)h(restriction)f(on)h(ho)m(w)g(the)g(UT)g(is)f(app)
+s(ortioned)g(b)s(et)m(w)m(een)h(the)h(D)m(A)-8 b(TE)35
+b(and)e(UT1)427 4766 y(argumen)m(ts.)53 b(Either)33 b(of)h(the)g(t)m(w)
+m(o)i(argumen)m(ts)e(could,)g(for)g(example,)h(b)s(e)f(zero)h(and)e
+(the)i(en)m(tire)427 4879 y(date)16 b(+)f(time)32 b(supplied)d(in)i
+(the)h(other.)47 b(Ho)m(w)m(ev)m(er,)35 b(the)d(routine)f(is)h
+(designed)f(to)i(deliv)m(er)e(maxi-)427 4992 y(m)m(um)e(accuracy)h
+(when)e(the)i(D)m(A)-8 b(TE)30 b(argumen)m(t)g(is)e(a)h(whole)g(n)m(um)
+m(b)s(er)f(and)g(the)i(UT1)f(argumen)m(t)427 5105 y(lies)g(in)g(the)i
+(range)g([)15 b(0)p Fl(;)31 b FD(1)15 b(],)32 b(or)e
+Fq(vic)-5 b(e)32 b(versa)p FD(.)311 5241 y(3.)46 b(See)32
+b(also)f(the)g(routine)g(sla)p Ft(_)p FD(GMST,)f(whic)m(h)g(accepts)j
+(the)e(UT1)h(as)f(a)h(single)e(argumen)m(t.)43 b(Com-)427
+5354 y(pared)26 b(with)f(sla)p Ft(_)p FD(GMST,)h(the)h(extra)g(n)m
+(umerical)e(precision)g(deliv)m(ered)g(b)m(y)h(the)h(presen)m(t)f
+(routine)427 5467 y(is)35 b(unlik)m(ely)e(to)j(b)s(e)f(imp)s(ortan)m(t)
+g(in)f(an)i(absolute)f(sense,)i(but)e(ma)m(y)h(b)s(e)f(useful)f(when)g
+(critically)427 5580 y(comparing)27 b(algorithms)f(and)g(in)g
+(applications)f(where)i(t)m(w)m(o)i(sidereal)c(times)i(close)g
+(together)i(are)427 5693 y(di\013erenced.)p eop
+%%Page: 85 87
+85 86 bop 0 52 a Fw(SUN/67.70)3252 b FD(85)p 0 267 3780
+8 v 0 380 a Fx(SLA)p Fn(_)p Fx(GRESID)577 b Fm(Gaussian)38
+b(Residual)578 b Fx(SLA)p Fn(_)p Fx(GRESID)0 730 y FB(A)m(CTION)44
+b FD(:)c(Generate)32 b(pseudo-random)d(normal)h(deviate)g(or)h
+Fq(Gaussian)j(r)-5 b(esidual)p FD(.)0 918 y FB(CALL)45
+b FD(:)77 b Ft(R)47 b(=)h(sla_GRESID)d(\(S\))0 1335 y
+FB(GIVEN)g FD(:)277 1507 y Fq(S)685 b FB(R)567 b FD(standard)30
+b(deviation)0 1988 y FB(NOTES)44 b FD(:)311 2223 y(1.)i(The)28
+b(results)f(of)h(man)m(y)g(calls)f(to)i(this)e(routine)g(will)e(b)s(e)j
+(normally)e(distributed)f(with)i(mean)h(zero)427 2336
+y(and)i(standard)g(deviation)f(S.)311 2506 y(2.)46 b(The)30
+b(Bo)m(x-Muller)g(algorithm)g(is)f(used.)311 2675 y(3.)46
+b(The)30 b(implemen)m(tation)f(is)h(mac)m(hine-dep)s(enden)m(t.)0
+3156 y FB(REFERENCE)44 b FD(:)d(Ahrens)29 b(&)h(Dieter,)h(1972.)i
+Fq(Comm.A.C.M.)d FB(15)p FD(,)h(873.)p 0 3337 V 0 3450
+a Fx(SLA)p Fn(_)p Fx(H2E)988 b Fm(Az,El)38 b(to)g Fg(h;)20
+b(\016)993 b Fx(SLA)p Fn(_)p Fx(H2E)0 3800 y FB(A)m(CTION)44
+b FD(:)c(Horizon)31 b(to)g(equatorial)f(co)s(ordinates)g(\(single)f
+(precision\).)0 3988 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_H2E)g(\(AZ,)h(EL,)g(PHI,)f(HA,)h(DEC\))0 4409 y
+FB(GIVEN)e FD(:)277 4555 y Fq(AZ)612 b FB(R)567 b FD(azim)m(uth)30
+b(\(radians\))277 4668 y Fq(EL)617 b FB(R)567 b FD(elev)-5
+b(ation)30 b(\(radians\))277 4780 y Fq(PHI)571 b FB(R)c
+FD(latitude)30 b(\(radians\))0 5253 y FB(RETURNED)46
+b FD(:)277 5399 y Fq(HA)600 b FB(R)567 b FD(hour)30 b(angle)g
+(\(radians\))277 5512 y Fq(DEC)540 b FB(R)567 b FD(declination)29
+b(\(radians\))p eop
+%%Page: 86 88
+86 87 bop 0 52 a FD(86)0 351 y FB(NOTES)44 b FD(:)311
+579 y(1.)i(The)30 b(sign)g(con)m(v)m(en)m(tion)h(for)f(azim)m(uth)g(is)
+g(north)f(zero,)j(east)f(+)p Fl(\031)s(=)p FD(2.)311
+746 y(2.)46 b(HA)31 b(is)e(returned)h(in)f(the)h(range)h
+Fo(\006)p Fl(\031)s FD(.)40 b(Declination)30 b(is)f(returned)h(in)f
+(the)h(range)h Fo(\006)p Fl(\031)s FD(.)311 912 y(3.)46
+b(The)33 b(latitude)g(is)f(\(in)h(principle\))d(geo)s(detic.)51
+b(In)33 b(critical)f(applications,)h(corrections)g(for)h(p)s(olar)427
+1025 y(motion)c(should)f(b)s(e)g(applied)g(\(see)i(sla)p
+Ft(_)p FD(POLMO\).)311 1191 y(4.)46 b(In)34 b(some)g(applications)e(it)
+i(will)d(b)s(e)j(imp)s(ortan)m(t)f(to)i(sp)s(ecify)e(the)h(correct)h(t)
+m(yp)s(e)f(of)h(elev)-5 b(ation)34 b(in)427 1304 y(order)42
+b(to)h(pro)s(duce)f(the)g(required)f(t)m(yp)s(e)h(of)h([)15
+b Fl(h;)g(\016)20 b FD(].)77 b(In)42 b(particular,)i(it)e(ma)m(y)h(b)s
+(e)e(imp)s(ortan)m(t)427 1417 y(to)f(distinguish)35 b(b)s(et)m(w)m(een)
+k(the)g(elev)-5 b(ation)39 b(as)g(a\013ected)h(b)m(y)f(refraction,)i
+(whic)m(h)c(will)f(yield)h(the)427 1530 y Fq(observe)-5
+b(d)32 b FD([)15 b Fl(h;)g(\016)20 b FD(],)31 b(and)e(the)i(elev)-5
+b(ation)30 b Fq(in)j(vacuo)p FD(,)e(whic)m(h)e(will)f(yield)g(the)j
+Fq(top)-5 b(o)g(c)g(entric)33 b FD([)15 b Fl(h;)g(\016)20
+b FD(].)41 b(If)427 1643 y(the)28 b(e\013ects)h(of)f(diurnal)d(ab)s
+(erration)i(can)h(b)s(e)f(neglected,)i(the)f(top)s(o)s(cen)m(tric)g([)
+15 b Fl(h;)g(\016)20 b FD(])28 b(ma)m(y)g(b)s(e)f(used)427
+1756 y(as)k(an)f(appro)m(ximation)f(to)j(the)e Fq(app)-5
+b(ar)g(ent)33 b FD([)15 b Fl(h;)g(\016)21 b FD(].)311
+1922 y(5.)46 b(No)31 b(range)g(c)m(hec)m(king)g(of)g(argumen)m(ts)f(is)
+g(carried)f(out.)311 2088 y(6.)46 b(In)28 b(applications)e(whic)m(h)i
+(in)m(v)m(olv)m(e)g(man)m(y)h(suc)m(h)f(calculations,)g(rather)g(than)g
+(calling)f(the)h(presen)m(t)427 2201 y(routine)i(it)g(will)e(b)s(e)i
+(more)g(e\016cien)m(t)h(to)h(use)e(inline)d(co)s(de,)k(ha)m(ving)g
+(previously)d(computed)i(\014xed)427 2314 y(terms)h(suc)m(h)f(as)g
+(sine)g(and)f(cosine)h(of)h(latitude.)p 0 2469 3780 8
+v 0 2582 a Fx(SLA)p Fn(_)p Fx(H2FK5)681 b Fm(Hipparcos)37
+b(to)h(FK5)682 b Fx(SLA)p Fn(_)p Fx(H2FK5)0 2933 y FB(A)m(CTION)44
+b FD(:)63 b(T)-8 b(ransform)41 b(a)i(Hipparcos)e(star)h(p)s(osition)e
+(and)h(prop)s(er)f(motion)i(in)m(to)g(the)g(FK5)g(\(J2000\))227
+3046 y(frame.)0 3233 y FB(CALL)j FD(:)77 b Ft(CALL)46
+b(sla_H2FK5)g(\(RH,)g(DH,)h(DRH,)g(DDH,)f(R5,)h(D5,)g(DR5,)g(DD5\))0
+3643 y FB(GIVEN)e FD(:)277 3789 y Fq(RH)602 b FB(D)565
+b FD(Hipparcos)30 b Fl(\013)g FD(\(radians\))277 3902
+y Fq(DH)599 b FB(D)565 b FD(Hipparcos)30 b Fl(\016)k
+FD(\(radians\))277 4015 y Fq(DRH)533 b FB(D)565 b FD(Hipparcos)33
+b(prop)s(er)f(motion)h(in)f Fl(\013)i FD(\(radians)e(p)s(er)g(Julian)
+1658 4128 y(y)m(ear\))277 4241 y Fq(DDH)530 b FB(D)565
+b FD(Hipparcos)35 b(prop)s(er)f(motion)h(in)f Fl(\016)40
+b FD(\(radians)34 b(p)s(er)g(Julian)1658 4354 y(y)m(ear\))0
+4809 y FB(RETURNED)46 b FD(:)277 4955 y Fq(R5)624 b FB(D)565
+b FD(J2000.0)33 b(FK5)e Fl(\013)f FD(\(radians\))277
+5068 y Fq(D5)621 b FB(D)565 b FD(J2000.0)33 b(FK5)e Fl(\016)j
+FD(\(radians\))277 5180 y Fq(DR5)555 b FB(D)565 b FD(J2000.0)36
+b(FK5)f(prop)s(er)e(motion)g(in)g Fl(\013)i FD(\(radians)e(p)s(er)g
+(Ju-)1658 5293 y(lian)c(y)m(ear\))277 5406 y Fq(DD5)552
+b FB(D)565 b FD(FK5)22 b(J2000.0)i(prop)s(er)19 b(motion)j(in)e
+Fl(\016)25 b FD(\(radians)20 b(p)s(er)g(Julian)1658 5519
+y(y)m(ear\))p eop
+%%Page: 87 89
+87 88 bop 0 52 a Fw(SUN/67.70)3252 b FD(87)0 351 y FB(NOTES)44
+b FD(:)311 544 y(1.)i(The)37 b Fl(\013)h FD(prop)s(er)e(motions)h(are)
+57 b(_)-45 b Fl(\013)38 b FD(rather)f(than)57 b(_)-44
+b Fl(\013)15 b FD(cos)h Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m
+(ear)i(rather)f(than)g(p)s(er)427 657 y(cen)m(tury)-8
+b(.)311 806 y(2.)46 b(The)41 b(FK5)g(to)g(Hipparcos)f(transformation)g
+(consists)g(of)h(a)g(pure)f(rotation)h(and)f(spin;)k(zonal)427
+919 y(errors)30 b(in)f(the)i(FK5)g(catalogue)h(are)e(not)h(tak)m(en)g
+(in)m(to)g(accoun)m(t.)311 1068 y(3.)46 b(The)c(adopted)h(ep)s(o)s(c)m
+(h)g(J2000.0)h(FK5)g(to)f(Hipparcos)f(orien)m(tation)g(and)g(spin)f(v)
+-5 b(alues)42 b(are)h(as)427 1181 y(follo)m(ws)30 b(\(see)h
+(reference\):)p 821 1312 1115 4 v 819 1425 4 113 v 971
+1425 V 971 1425 V 1023 1391 a Fq(orientation)p 1509 1425
+V 199 w(spin)p 1934 1425 V 821 1428 1115 4 v 819 1541
+4 113 v 871 1507 a Fl(x)p 971 1541 V 184 w Fo(\000)p
+FD(19)p Fl(:)p FD(9)p 1509 1541 V 254 w Fo(\000)p FD(0)p
+Fl(:)p FD(30)p 1934 1541 V 819 1654 V 875 1620 a Fl(y)p
+971 1654 V 232 w Fo(\000)p FD(9)p Fl(:)p FD(1)p 1509
+1654 V 254 w(+0)p Fl(:)p FD(60)p 1934 1654 V 819 1767
+V 877 1733 a Fl(z)p 971 1767 V 188 w FD(+22)p Fl(:)p
+FD(9)p 1509 1767 V 254 w(+0)p Fl(:)p FD(70)p 1934 1767
+V 821 1770 1115 4 v 819 1883 4 113 v 971 1883 V 1151
+1849 a Fq(mas)p 1509 1883 V 299 w(mas/y)p 1934 1883 V
+821 1886 1115 4 v 427 2093 a FD(These)40 b(orien)m(tation)h(and)e(spin)
+f(comp)s(onen)m(ts)j(are)g(in)m(terpreted)e(as)i Fq(axial)h(ve)-5
+b(ctors.)71 b FD(An)40 b(axial)427 2206 y(v)m(ector)35
+b(p)s(oin)m(ts)d(at)i(the)g(p)s(ole)e(of)i(the)f(rotation)h(and)f(its)f
+(length)h(is)f(the)i(amoun)m(t)g(of)f(rotation)h(in)427
+2319 y(radians.)311 2468 y(4.)46 b(See)31 b(also)f(sla)p
+Ft(_)p FD(FK52H,)h(sla)p Ft(_)p FD(FK5HZ,)f(sla)p Ft(_)p
+FD(HFK5Z.)0 2844 y FB(REFERENCE)44 b FD(:)d(F)-8 b(eissel,)30
+b(M.)h(&)f(Mignard,)g(F.,)h(1998.,)h Fq(Astr)-5 b(on.Astr)g(ophys.)34
+b FB(331)p FD(,)d(L33-L36.)p 0 2982 3780 8 v 0 3095 a
+Fx(SLA)p Fn(_)p Fx(HFK5Z)428 b Fm(Hipparcos)37 b(to)h(FK5,)h(no)f(P)-10
+b(.M.)428 b Fx(SLA)p Fn(_)p Fx(HFK5Z)0 3445 y FB(A)m(CTION)44
+b FD(:)53 b(T)-8 b(ransform)36 b(a)h(Hipparcos)f(star)h(p)s(osition)e
+(in)m(to)i(the)g(FK5)g(\(J2000\))i(frame)d(assuming)g(zero)227
+3558 y(Hipparcos)30 b(prop)s(er)f(motion.)0 3746 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_HFK5Z)g(\(RH,)g(DH,)h(EPOCH,)f(R5,)h(D5,)g
+(DR5,)g(DD5\))0 4104 y FB(GIVEN)e FD(:)277 4250 y Fq(RH)602
+b FB(D)565 b FD(Hipparcos)30 b Fl(\013)g FD(\(radians\))277
+4363 y Fq(DH)599 b FB(D)565 b FD(Hipparcos)30 b Fl(\016)k
+FD(\(radians\))277 4476 y Fq(EPOCH)409 b FB(D)565 b FD(Julian)28
+b(ep)s(o)s(c)m(h)i(\(TDB\))0 4843 y FB(RETURNED)46 b
+FD(:)277 4989 y Fq(R5)624 b FB(D)565 b FD(J2000.0)33
+b(FK5)e Fl(\013)f FD(\(radians\))277 5102 y Fq(D5)621
+b FB(D)565 b FD(J2000.0)33 b(FK5)e Fl(\016)j FD(\(radians\))277
+5215 y Fq(DR5)555 b FB(D)565 b FD(J2000.0)36 b(FK5)f(prop)s(er)e
+(motion)g(in)g Fl(\013)i FD(\(radians)e(p)s(er)g(Ju-)1658
+5328 y(lian)c(y)m(ear\))277 5441 y Fq(DD5)552 b FB(D)565
+b FD(FK5)22 b(J2000.0)i(prop)s(er)19 b(motion)j(in)e
+Fl(\016)25 b FD(\(radians)20 b(p)s(er)g(Julian)1658 5554
+y(y)m(ear\))p eop
+%%Page: 88 90
+88 89 bop 0 52 a FD(88)0 351 y FB(NOTES)44 b FD(:)311
+546 y(1.)i(The)37 b Fl(\013)h FD(prop)s(er)e(motions)h(are)57
+b(_)-45 b Fl(\013)38 b FD(rather)f(than)57 b(_)-44 b
+Fl(\013)15 b FD(cos)h Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)
+i(rather)f(than)g(p)s(er)427 659 y(cen)m(tury)-8 b(.)311
+808 y(2.)46 b(The)41 b(FK5)g(to)g(Hipparcos)f(transformation)g
+(consists)g(of)h(a)g(pure)f(rotation)h(and)f(spin;)k(zonal)427
+921 y(errors)30 b(in)f(the)i(FK5)g(catalogue)h(are)e(not)h(tak)m(en)g
+(in)m(to)g(accoun)m(t.)311 1071 y(3.)46 b(The)c(adopted)h(ep)s(o)s(c)m
+(h)g(J2000.0)h(FK5)g(to)f(Hipparcos)f(orien)m(tation)g(and)g(spin)f(v)
+-5 b(alues)42 b(are)h(as)427 1184 y(follo)m(ws)30 b(\(see)h
+(reference\):)p 821 1314 1115 4 v 819 1427 4 113 v 971
+1427 V 971 1427 V 1023 1393 a Fq(orientation)p 1509 1427
+V 199 w(spin)p 1934 1427 V 821 1431 1115 4 v 819 1544
+4 113 v 871 1510 a Fl(x)p 971 1544 V 184 w Fo(\000)p
+FD(19)p Fl(:)p FD(9)p 1509 1544 V 254 w Fo(\000)p FD(0)p
+Fl(:)p FD(30)p 1934 1544 V 819 1657 V 875 1623 a Fl(y)p
+971 1657 V 232 w Fo(\000)p FD(9)p Fl(:)p FD(1)p 1509
+1657 V 254 w(+0)p Fl(:)p FD(60)p 1934 1657 V 819 1769
+V 877 1736 a Fl(z)p 971 1769 V 188 w FD(+22)p Fl(:)p
+FD(9)p 1509 1769 V 254 w(+0)p Fl(:)p FD(70)p 1934 1769
+V 821 1773 1115 4 v 819 1886 4 113 v 971 1886 V 1151
+1852 a Fq(mas)p 1509 1886 V 299 w(mas/y)p 1934 1886 V
+821 1889 1115 4 v 427 2096 a FD(These)40 b(orien)m(tation)h(and)e(spin)
+f(comp)s(onen)m(ts)j(are)g(in)m(terpreted)e(as)i Fq(axial)h(ve)-5
+b(ctors.)71 b FD(An)40 b(axial)427 2209 y(v)m(ector)35
+b(p)s(oin)m(ts)d(at)i(the)g(p)s(ole)e(of)i(the)f(rotation)h(and)f(its)f
+(length)h(is)f(the)i(amoun)m(t)g(of)f(rotation)h(in)427
+2322 y(radians.)311 2471 y(4.)46 b(It)37 b(w)m(as)g(the)g(in)m(ten)m
+(tion)f(that)h(Hipparcos)f(should)f(b)s(e)h(a)h(close)g(appro)m
+(ximation)e(to)j(an)e(inertial)427 2584 y(frame,)j(so)e(that)g(distan)m
+(t)f(ob)5 b(jects)37 b(ha)m(v)m(e)h(zero)g(prop)s(er)d(motion;)40
+b(suc)m(h)c(ob)5 b(jects)37 b(ha)m(v)m(e)h(\(in)e(gen-)427
+2697 y(eral\))30 b(non-zero)g(prop)s(er)f(motion)g(in)g(FK5,)h(and)f
+(this)g(routine)g(returns)f(those)i Fq(\014ctitious)j(pr)-5
+b(op)g(er)427 2810 y(motions.)311 2960 y FD(5.)46 b(The)39
+b(p)s(osition)f(returned)h(b)m(y)g(this)g(routine)f(is)h(in)f(the)i
+(FK5)g(J2000)h(reference)f(frame)g(but)f(at)427 3073
+y(Julian)28 b(ep)s(o)s(c)m(h)i(EPOCH.)311 3222 y(6.)46
+b(See)31 b(also)f(sla)p Ft(_)p FD(FK52H,)h(sla)p Ft(_)p
+FD(FK5HZ,)f(sla)p Ft(_)p FD(H2FK5.)0 3601 y FB(REFERENCE)44
+b FD(:)d(F)-8 b(eissel,)30 b(M.)h(&)f(Mignard,)g(F.,)h(1998.,)h
+Fq(Astr)-5 b(on.Astr)g(ophys.)34 b FB(331)p FD(,)d(L33-L36.)p
+0 3741 3780 8 v 0 3854 a Fx(SLA)p Fn(_)p Fx(IMXV)478
+b Fm(Apply)38 b(3D)h(Rev)m(erse)f(Rotation)478 b Fx(SLA)p
+Fn(_)p Fx(IMXV)0 4204 y FB(A)m(CTION)44 b FD(:)c(Multiply)28
+b(a)j(3-v)m(ector)i(b)m(y)d(the)h(in)m(v)m(erse)f(of)g(a)h(rotation)g
+(matrix)f(\(single)f(precision\).)0 4392 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_IMXV)g(\(RM,)h(VA,)f(VB\))0
+4752 y FB(GIVEN)f FD(:)277 4898 y Fq(RM)588 b FB(R\(3,3\))352
+b FD(rotation)31 b(matrix)277 5011 y Fq(V)-9 b(A)609
+b FB(R\(3\))433 b FD(v)m(ector)32 b(to)f(b)s(e)f(rotated)0
+5381 y FB(RETURNED)46 b FD(:)277 5553 y Fq(VB)604 b FB(R\(3\))433
+b FD(result)29 b(v)m(ector)p eop
+%%Page: 89 91
+89 90 bop 0 52 a Fw(SUN/67.70)3252 b FD(89)0 351 y FB(NOTES)44
+b FD(:)311 544 y(1.)i(This)29 b(routine)g(p)s(erforms)g(the)i(op)s
+(eration:)597 692 y FB(b)g FD(=)f FB(M)886 659 y Ff(T)941
+692 y Fo(\001)p FB(a)427 841 y FD(where)g FB(a)f FD(and)g
+FB(b)h FD(are)g(the)g(3-v)m(ectors)i(V)-10 b(A)30 b(and)f(VB)i(resp)s
+(ectiv)m(ely)-8 b(,)30 b(and)f FB(M)h FD(is)f(the)h(3)19
+b Fo(\002)g FD(3)30 b(matrix)427 954 y(RM.)311 1102 y(2.)46
+b(The)34 b(main)g(function)f(of)i(this)e(routine)h(is)f(apply)g(an)i
+(in)m(v)m(erse)f(rotation;)j(under)c(these)i(circum-)427
+1215 y(stances,)d FB(M)e FD(is)g Fq(ortho)-5 b(gonal)p
+FD(,)34 b(with)29 b(its)g(in)m(v)m(erse)i(the)f(same)h(as)g(its)e
+(transp)s(ose.)311 1364 y(3.)46 b(T)-8 b(o)25 b(comply)f(with)g(the)h
+(ANSI)f(F)-8 b(ortran)26 b(77)f(standard,)g(V)-10 b(A)25
+b(and)f(VB)i(m)m(ust)e FB(not)h FD(b)s(e)f(the)h(same)g(ar-)427
+1477 y(ra)m(y)-8 b(.)40 b(The)25 b(routine)f(is,)i(in)e(fact,)k(co)s
+(ded)d(so)g(as)h(to)g(w)m(ork)f(prop)s(erly)f(on)h(the)g(V)-10
+b(AX)26 b(and)f(man)m(y)g(other)427 1590 y(systems)31
+b(ev)m(en)g(if)e(this)g(rule)g(is)h(violated,)g(something)g(that)h(is)e
+FB(not)p FD(,)i(ho)m(w)m(ev)m(er,)h(recommended.)p 0
+1727 3780 8 v 0 1840 a Fx(SLA)p Fn(_)p Fx(INTIN)474 b
+Fm(Deco)s(de)39 b(an)g(In)m(teger)f(Num)m(b)s(er)473
+b Fx(SLA)p Fn(_)p Fx(INTIN)0 2191 y FB(A)m(CTION)44 b
+FD(:)c(Con)m(v)m(ert)32 b(free-format)f(input)d(in)m(to)j(an)f(in)m
+(teger.)0 2378 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_INTIN)g
+(\(STRING,)f(NSTRT,)h(IRESLT,)g(JFLAG\))0 2735 y FB(GIVEN)f
+FD(:)277 2881 y Fq(STRING)381 b FB(C)569 b FD(string)29
+b(con)m(taining)h(n)m(um)m(b)s(er)f(to)j(b)s(e)d(deco)s(ded)277
+2994 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(p)s(oin)m(ter)30
+b(to)h(where)f(deco)s(ding)f(is)g(to)i(commence)277 3107
+y Fq(IRESL)-7 b(T)407 b FB(I)605 b FD(curren)m(t)30 b(v)-5
+b(alue)30 b(of)h(result)0 3473 y FB(RETURNED)46 b FD(:)277
+3619 y Fq(NSTR)-7 b(T)428 b FB(I)605 b FD(adv)-5 b(anced)31
+b(to)g(next)f(n)m(um)m(b)s(er)277 3732 y Fq(IRESL)-7
+b(T)407 b FB(I)605 b FD(result)277 3845 y Fq(JFLA)n(G)436
+b FB(I)605 b FD(status:)65 b Fo(\000)p FD(1)43 b(=)f
+Fo(\000)p FD(OK,)f(0)i(=)f(+OK,)g(1)h(=)f(n)m(ull)e(result,)1658
+3958 y(2)31 b(=)f(error)0 4324 y FB(NOTES)44 b FD(:)311
+4516 y(1.)i(The)d(reason)g(sla)p Ft(_)p FD(INTIN)e(has)i(separate)g
+(`OK')g(status)g(v)-5 b(alues)42 b(for)h(+)f(and)g Fo(\000)h
+FD(is)e(to)j(enable)427 4629 y(min)m(us)28 b(zero)j(to)g(b)s(e)e
+(detected.)42 b(This)28 b(is)g(of)i(crucial)f(imp)s(ortance)g(when)g
+(deco)s(ding)g(mixed-radix)427 4742 y(n)m(um)m(b)s(ers.)68
+b(F)-8 b(or)40 b(example,)j(an)c(angle)h(expressed)f(as)i(degrees,)i
+(arcmin)m(utes)c(and)g(arcseconds)427 4855 y(ma)m(y)31
+b(ha)m(v)m(e)h(a)f(leading)e(min)m(us)f(sign)i(but)f(a)i(zero)g
+(degrees)g(\014eld.)311 5004 y(2.)46 b(A)31 b(T)-8 b(AB)31
+b(is)e(in)m(terpreted)h(as)g(a)h(space.)41 b Fq(n.b.)30
+b FD(The)g(test)i(for)e(T)-8 b(AB)31 b(is)e(ASCI)s(I-sp)s(eci\014c.)311
+5152 y(3.)46 b(The)29 b(basic)f(format)h(is)f(the)h(sequence)h(of)f
+(\014elds)e Fo(\006)p Fl(n)p FD(,)i(where)f Fo(\006)h
+FD(is)e(a)j(sign)e(c)m(haracter)i(`+')f(or)g(`)p Fo(\000)p
+FD(',)427 5265 y(and)h Fl(n)g FD(means)g(a)h(string)e(of)i(decimal)e
+(digits.)311 5414 y(4.)46 b(Spaces:)506 5562 y Fo(\017)g
+FD(Leading)30 b(spaces)h(are)g(ignored.)506 5693 y Fo(\017)46
+b FD(Spaces)31 b(b)s(et)m(w)m(een)g(the)f(sign)g(and)f(the)i(n)m(um)m
+(b)s(er)e(are)i(allo)m(w)m(ed.)p eop
+%%Page: 90 92
+90 91 bop 0 52 a FD(90)506 351 y Fo(\017)46 b FD(T)-8
+b(railing)38 b(spaces)i(are)h(ignored;)j(the)c(\014rst)f(signi\014es)f
+(end)h(of)h(deco)s(ding)f(and)g(subsequen)m(t)597 464
+y(ones)31 b(are)g(skipp)s(ed.)311 628 y(5.)46 b(Delimiters:)506
+793 y Fo(\017)g FD(An)m(y)30 b(c)m(haracter)h(other)f(than)f(+,)p
+Fo(\000)p FD(,0-9)i(or)e(space)h(ma)m(y)h(b)s(e)e(used)f(to)j(signal)d
+(the)i(end)f(of)g(the)597 906 y(n)m(um)m(b)s(er)g(and)h(terminate)g
+(deco)s(ding.)506 1044 y Fo(\017)46 b FD(Comma)34 b(is)g(recognized)g
+(b)m(y)g(sla)p Ft(_)p FD(INTIN)f(as)i(a)f(sp)s(ecial)f(case;)38
+b(it)33 b(is)h(skipp)s(ed,)e(lea)m(ving)i(the)597 1157
+y(p)s(oin)m(ter)c(on)g(the)g(next)h(c)m(haracter.)42
+b(See)31 b(9,)g(b)s(elo)m(w.)506 1296 y Fo(\017)46 b
+FD(Deco)s(ding)31 b(will)c(in)i(all)h(cases)h(terminate)f(if)g(end)f
+(of)i(string)e(is)h(reac)m(hed.)311 1460 y(6.)46 b(The)30
+b(sign)g(is)f(optional.)40 b(The)30 b(default)f(is)h(+.)311
+1624 y(7.)46 b(A)28 b Fq(nul)5 b(l)30 b(r)-5 b(esult)37
+b FD(o)s(ccurs)28 b(when)e(the)i(string)f(of)h(c)m(haracters)h(b)s
+(eing)d(deco)s(ded)h(do)s(es)h(not)g(b)s(egin)e(with)427
+1737 y(+,)p Fo(\000)34 b FD(or)f(0-9,)k(or)c(consists)h(en)m(tirely)f
+(of)h(spaces.)51 b(When)34 b(this)e(condition)h(is)f(detected,)37
+b(JFLA)m(G)427 1850 y(is)30 b(set)h(to)g(1)f(and)g(IRESL)-8
+b(T)30 b(is)f(left)h(un)m(touc)m(hed.)311 2014 y(8.)46
+b(NSTR)-8 b(T)30 b(=)g(1)h(for)f(the)g(\014rst)g(c)m(haracter)i(in)d
+(the)i(string.)311 2178 y(9.)46 b(On)26 b(return)g(from)g(sla)p
+Ft(_)p FD(INTIN,)g(NSTR)-8 b(T)26 b(is)g(set)h(ready)g(for)f(the)h
+(next)g(deco)s(de)g({)g(follo)m(wing)e(trail-)427 2291
+y(ing)31 b(blanks)g(and)g(an)m(y)h(comma.)47 b(If)31
+b(a)i(delimiter)c(other)j(than)g(comma)h(is)e(b)s(eing)f(used,)i(NSTR)
+-8 b(T)427 2404 y(m)m(ust)25 b(b)s(e)f(incremen)m(ted)g(b)s(efore)g
+(the)h(next)g(call)f(to)i(sla)p Ft(_)p FD(INTIN,)e(otherwise)g(all)f
+(subsequen)m(t)h(calls)427 2517 y(will)k(return)h(a)i(n)m(ull)d
+(result.)266 2681 y(10.)46 b(Errors)30 b(\(JFLA)m(G=2\))i(o)s(ccur)e
+(when:)506 2845 y Fo(\017)46 b FD(there)31 b(is)e(a)i(+)f(or)g
+Fo(\000)g FD(but)g(no)g(n)m(um)m(b)s(er;)g(or)506 2984
+y Fo(\017)46 b FD(the)31 b(n)m(um)m(b)s(er)e(is)g(greater)j(than)e(2)
+1742 2951 y Fu(31)1837 2984 y Fo(\000)20 b FD(1.)266
+3148 y(11.)46 b(When)31 b(an)f(error)h(has)f(b)s(een)g(detected,)j
+(NSTR)-8 b(T)30 b(is)g(left)g(p)s(oin)m(ting)f(to)j(the)f(c)m(haracter)
+h(follo)m(wing)427 3261 y(the)f(last)f(one)h(used)e(b)s(efore)h(the)h
+(error)f(came)h(to)g(ligh)m(t.)266 3425 y(12.)46 b(See)31
+b(also)f(sla)p Ft(_)p FD(FLOTIN)f(and)h(sla)p Ft(_)p
+FD(DFL)-8 b(TIN.)p 0 3585 3780 8 v 0 3698 a Fx(SLA)p
+Fn(_)p Fx(INVF)713 b Fm(In)m(v)m(ert)38 b(Linear)g(Mo)s(del)715
+b Fx(SLA)p Fn(_)p Fx(INVF)0 4049 y FB(A)m(CTION)44 b
+FD(:)c(In)m(v)m(ert)31 b(a)g(linear)e(mo)s(del)g(of)i(the)f(t)m(yp)s(e)
+h(pro)s(duced)e(b)m(y)h(the)g(sla)p Ft(_)p FD(FITXY)g(routine.)0
+4236 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_INVF)g(\(FWDS,BKWDS,J\))
+0 4640 y FB(GIVEN)f FD(:)277 4812 y Fq(FWDS)466 b FB(D\(6\))431
+b FD(mo)s(del)29 b(co)s(e\016cien)m(ts)0 5264 y FB(RETURNED)46
+b FD(:)277 5410 y Fq(BKWDS)391 b FB(D\(6\))431 b FD(in)m(v)m(erse)30
+b(mo)s(del)277 5523 y Fq(J)688 b FB(I)605 b FD(status:)41
+b(0)31 b(=)f(OK,)g Fo(\000)p FD(1)g(=)g(no)h(in)m(v)m(erse)p
+eop
+%%Page: 91 93
+91 92 bop 0 52 a Fw(SUN/67.70)3252 b FD(91)0 351 y FB(NOTES)44
+b FD(:)311 533 y(1.)i(The)30 b(mo)s(dels)e(relate)j(t)m(w)m(o)g(sets)g
+(of)f([)15 b Fl(x;)g(y)k FD(])30 b(co)s(ordinates)f(as)i(follo)m(ws.)39
+b(Naming)30 b(the)g(six)f(elemen)m(ts)427 646 y(of)c(FWDS)g
+Fl(a;)15 b(b;)g(c;)g(d;)g(e)27 b FD(&)d Fl(f)10 b FD(,)25
+b(where)f(t)m(w)m(o)i(sets)f(of)f(co)s(ordinates)g([)p
+Fl(x)2670 660 y Fu(1)2710 646 y Fl(;)15 b(y)2795 660
+y Fu(1)2834 646 y FD(])25 b(and)f([)p Fl(x)3132 660 y
+Fu(2)3172 646 y Fl(;)15 b(y)3257 660 y Fu(2)3311 646
+y FD(])25 b(are)g(related)427 758 y(th)m(us:)597 898
+y Fl(x)649 912 y Fu(2)714 898 y FD(=)g Fl(a)20 b FD(+)g
+Fl(bx)1060 912 y Fu(1)1120 898 y FD(+)g Fl(cy)1295 912
+y Fu(1)597 1011 y Fl(y)642 1025 y Fu(2)707 1011 y FD(=)k
+Fl(d)d FD(+)f Fl(ex)1055 1025 y Fu(1)1115 1011 y FD(+)g
+Fl(f)10 b(y)1306 1025 y Fu(1)427 1151 y FD(The)45 b(presen)m(t)g
+(routine)f(generates)i(a)f(new)g(set)g(of)g(co)s(e\016cien)m(ts)h
+Fl(p;)15 b(q)s(;)g(r)m(;)g(s;)g(t)46 b FD(&)f Fl(u)f
+FD(\(the)i(arra)m(y)427 1264 y(BKWDS\))31 b(suc)m(h)f(that:)597
+1404 y Fl(x)649 1418 y Fu(1)714 1404 y FD(=)25 b Fl(p)20
+b FD(+)g Fl(q)s(x)1063 1418 y Fu(2)1122 1404 y FD(+)g
+Fl(r)s(y)1302 1418 y Fu(2)597 1517 y Fl(y)642 1531 y
+Fu(1)707 1517 y FD(=)k Fl(s)c FD(+)g Fl(tx)1041 1531
+y Fu(2)1101 1517 y FD(+)g Fl(uy)1289 1531 y Fu(2)311
+1657 y FD(2.)46 b(Tw)m(o)21 b(successiv)m(e)h(calls)e(to)i(this)e
+(routine)g(will)e(deliv)m(er)i(a)i(set)f(of)g(co)s(e\016cien)m(ts)h
+(equal)f(to)g(the)h(starting)427 1769 y(v)-5 b(alues.)311
+1909 y(3.)46 b(T)-8 b(o)25 b(comply)f(with)f(the)i(ANSI)f(F)-8
+b(ortran)25 b(77)g(standard,)g(FWDS)g(and)f(BKWDS)h(m)m(ust)f
+FB(not)g FD(b)s(e)g(the)427 2022 y(same)31 b(arra)m(y)-8
+b(.)41 b(The)30 b(routine)f(is,)g(in)g(fact,)j(co)s(ded)d(so)i(as)f(to)
+h(w)m(ork)f(prop)s(erly)e(with)h(man)m(y)h(F)-8 b(ortran)427
+2135 y(compilers)26 b(ev)m(en)h(if)f(this)g(rule)f(is)h(violated,)i
+(something)e(that)i(is)e FB(not)p FD(,)h(ho)m(w)m(ev)m(er,)j
+(recommended.)311 2275 y(4.)46 b(See)31 b(also)f(sla)p
+Ft(_)p FD(FITXY,)g(sla)p Ft(_)p FD(PXY,)g(sla)p Ft(_)p
+FD(XY2XY,)h(sla)p Ft(_)p FD(DCMPF.)p 0 2389 3780 8 v
+0 2502 a Fx(SLA)p Fn(_)p Fx(KBJ)797 b Fm(Select)39 b(Ep)s(o)s(c)m(h)f
+(Pre\014x)798 b Fx(SLA)p Fn(_)p Fx(KBJ)0 2852 y FB(A)m(CTION)44
+b FD(:)c(Select)31 b(ep)s(o)s(c)m(h)f(pre\014x)g(`B')h(or)f(`J'.)0
+3040 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_KBJ)g(\(JB,)h(E,)g(K,)g
+(J\))0 3364 y FB(GIVEN)e FD(:)277 3510 y Fq(JB)624 b
+FB(I)605 b FD(sla)p Ft(_)p FD(DBJIN)30 b(pre\014x)g(status:)41
+b(0=none,)30 b(1=`B',)i(2=`J')277 3623 y Fq(E)674 b FB(D)565
+b FD(ep)s(o)s(c)m(h)30 b({)h(Besselian)f(or)g(Julian)0
+3933 y FB(RETURNED)46 b FD(:)277 4079 y Fq(K)666 b FB(C)569
+b FD(`B')31 b(or)g(`J')277 4192 y Fq(J)688 b FB(I)605
+b FD(status:)41 b(0=OK)0 4502 y FB(NOTE)j FD(:)51 b(The)35
+b(routine)f(is)h(mainly)e(in)m(tended)h(for)i(use)f(in)f(conjunction)g
+(with)g(the)i(sla)p Ft(_)p FD(DBJIN)f(routine.)227 4615
+y(If)f(the)g(v)-5 b(alue)34 b(of)g(JB)g(indicates)f(that)h(an)g
+(explicit)f(B)h(or)g(J)g(pre\014x)e(w)m(as)j(detected)g(b)m(y)f(sla)p
+Ft(_)p FD(DBJIN,)g(a)227 4728 y(`B')h(or)e(`J')h(is)e(returned)g(to)i
+(matc)m(h.)51 b(If)33 b(JB)h(indicates)e(that)i(no)f(explicit)f(B)i(or)
+f(J)g(w)m(as)h(supplied,)d(the)227 4841 y(c)m(hoice)g(is)f(made)g(on)h
+(the)f(basis)f(of)i(the)f(ep)s(o)s(c)m(h)h(itself;)e(B)i(is)e(assumed)h
+(for)g(E)g Fl(<)25 b FD(1984,)32 b(otherwise)e(J.)p 0
+4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(M2A)-15 b(V)353 b
+Fm(Rotation)36 b(Matrix)h(to)h(Axial)f(V)-10 b(ector)354
+b Fx(SLA)p Fn(_)p Fx(M2A)-15 b(V)0 5418 y FB(A)m(CTION)44
+b FD(:)36 b(F)-8 b(rom)21 b(a)h(rotation)f(matrix,)h(determine)f(the)g
+(corresp)s(onding)e(axial)h(v)m(ector)j(\(single)d(precision\).)0
+5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_M2AV)g(\(RMAT,)g
+(AXVEC\))p eop
+%%Page: 92 94
+92 93 bop 0 52 a FD(92)0 351 y FB(GIVEN)45 b FD(:)277
+523 y Fq(RMA)-7 b(T)462 b FB(R\(3,3\))352 b FD(rotation)31
+b(matrix)0 993 y FB(RETURNED)46 b FD(:)277 1164 y Fq(AXVEC)405
+b FB(R\(3\))433 b FD(axial)30 b(v)m(ector)i(\(radians\))0
+1634 y FB(NOTES)44 b FD(:)311 1865 y(1.)i(A)38 b(rotation)f(matrix)g
+(describ)s(es)e(a)j(rotation)g(ab)s(out)f(some)g(arbitrary)f(axis,)j
+(called)d(the)i(Euler)427 1977 y(axis.)53 b(The)34 b
+Fq(axial)k(ve)-5 b(ctor)35 b FD(returned)e(b)m(y)i(this)e(routine)h
+(has)g(the)h(same)g(direction)e(as)i(the)g(Euler)427
+2090 y(axis,)30 b(and)g(its)g(magnitude)f(is)h(the)g(amoun)m(t)h(of)g
+(rotation)f(in)g(radians.)311 2258 y(2.)46 b(The)35 b(magnitude)g(and)g
+(direction)f(of)i(the)g(axial)f(v)m(ector)i(can)f(b)s(e)f(separated)h
+(b)m(y)f(means)h(of)f(the)427 2371 y(routine)30 b(sla)p
+Ft(_)p FD(VN.)311 2539 y(3.)46 b(The)28 b(reference)g(frame)g(rotates)h
+(clo)s(c)m(kwise)e(as)i(seen)f(lo)s(oking)e(along)i(the)g(axial)f(v)m
+(ector)j(from)d(the)427 2652 y(origin.)311 2819 y(4.)46
+b(If)30 b(RMA)-8 b(T)31 b(is)e(n)m(ull,)g(so)i(is)e(the)i(result.)p
+0 2995 3780 8 v 0 3108 a Fx(SLA)p Fn(_)p Fx(MAP)775 b
+Fm(Mean)39 b(to)f(Apparen)m(t)775 b Fx(SLA)p Fn(_)p Fx(MAP)0
+3458 y FB(A)m(CTION)44 b FD(:)66 b(T)-8 b(ransform)43
+b(star)g([)15 b Fl(\013;)g(\016)21 b FD(])43 b(from)g(mean)g(place)h
+(to)g(geo)s(cen)m(tric)g(apparen)m(t.)80 b(The)43 b(reference)227
+3571 y(frames)30 b(and)g(time)g(scales)h(used)e(are)i(p)s(ost)f(IA)m(U)
+h(1976.)0 3759 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_MAP)g(\(RM,)h
+(DM,)g(PR,)g(PD,)g(PX,)f(RV,)h(EQ,)g(DATE,)g(RA,)g(DA\))0
+4173 y FB(GIVEN)e FD(:)277 4319 y Fq(RM,DM)409 b FB(D)565
+b FD(mean)31 b([)15 b Fl(\013;)g(\016)20 b FD(])30 b(\(radians\))277
+4432 y Fq(PR,PD)449 b FB(D)565 b FD(prop)s(er)29 b(motions:)40
+b([)15 b Fl(\013;)g(\016)21 b FD(])30 b(c)m(hanges)i(p)s(er)d(Julian)f
+(y)m(ear)277 4545 y Fq(PX)606 b FB(D)565 b FD(parallax)29
+b(\(arcsec\))277 4658 y Fq(R)-9 b(V)611 b FB(D)565 b
+FD(radial)29 b(v)m(elo)s(cit)m(y)i(\(km)f(s)2477 4625
+y Fp(\000)p Fu(1)2571 4658 y FD(,)h(+v)m(e)g(if)e(receding\))277
+4771 y Fq(EQ)604 b FB(D)565 b FD(ep)s(o)s(c)m(h)30 b(and)g(equino)m(x)g
+(of)g(star)h(data)g(\(Julian\))277 4884 y Fq(D)n(A)-7
+b(TE)481 b FB(D)565 b FD(TDB)31 b(for)f(apparen)m(t)h(place)f(\(JD)p
+Fo(\000)p FD(2400000.5\))0 5345 y FB(RETURNED)46 b FD(:)277
+5517 y Fq(RA,D)n(A)439 b FB(D)565 b FD(apparen)m(t)31
+b([)15 b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))p
+eop
+%%Page: 93 95
+93 94 bop 0 52 a Fw(SUN/67.70)3252 b FD(93)0 351 y FB(NOTES)44
+b FD(:)311 554 y(1.)i(EQ)41 b(is)f(the)i(Julian)d(ep)s(o)s(c)m(h)i(sp)s
+(ecifying)e(b)s(oth)i(the)g(reference)h(frame)f(and)g(the)h(ep)s(o)s(c)
+m(h)f(of)g(the)427 667 y(p)s(osition)26 b({)j(usually)c(2000.)42
+b(F)-8 b(or)29 b(p)s(ositions)d(where)h(the)i(ep)s(o)s(c)m(h)e(and)h
+(equino)m(x)f(are)i(di\013eren)m(t,)f(use)427 780 y(the)j(routine)e
+(sla)p Ft(_)p FD(PM)h(to)h(apply)e(prop)s(er)g(motion)h(corrections)h
+(b)s(efore)f(using)f(this)g(routine.)311 934 y(2.)46
+b(The)35 b(distinction)e(b)s(et)m(w)m(een)k(the)e(required)f(TDB)i(and)
+f(TT)g(is)f(alw)m(a)m(ys)i(negligible.)54 b(Moreo)m(v)m(er,)427
+1047 y(for)30 b(all)g(but)f(the)i(most)g(critical)e(applications)f(UTC)
+i(is)g(adequate.)311 1201 y(3.)46 b(The)37 b Fl(\013)h
+FD(prop)s(er)e(motions)h(are)57 b(_)-45 b Fl(\013)38
+b FD(rather)f(than)57 b(_)-44 b Fl(\013)15 b FD(cos)h
+Fl(\016)s FD(,)40 b(and)d(are)h(p)s(er)e(y)m(ear)i(rather)f(than)g(p)s
+(er)427 1314 y(cen)m(tury)-8 b(.)311 1467 y(4.)46 b(This)28
+b(routine)h(ma)m(y)h(b)s(e)f(w)m(asteful)g(for)h(some)g(applications)d
+(b)s(ecause)j(it)f(recomputes)h(the)g(Earth)427 1580
+y(p)s(osition/v)m(elo)s(cit)m(y)38 b(and)h(the)g(precession-n)m
+(utation)f(matrix)g(eac)m(h)i(time,)h(and)d(b)s(ecause)h(it)g(al-)427
+1693 y(lo)m(ws)45 b(for)g(parallax)f(and)h(prop)s(er)e(motion.)85
+b(Where)45 b(m)m(ultiple)e(transformations)i(are)g(to)h(b)s(e)427
+1806 y(carried)25 b(out)g(for)g(one)h(ep)s(o)s(c)m(h,)g(a)g(faster)g
+(metho)s(d)f(is)f(to)i(call)f(the)g(sla)p Ft(_)p FD(MAPP)-8
+b(A)26 b(routine)e(once)i(and)427 1919 y(then)j(either)g(the)h(sla)p
+Ft(_)p FD(MAPQK)f(routine)f(\(whic)m(h)h(includes)e(parallax)h(and)h
+(prop)s(er)f(motion\))h(or)427 2032 y(sla)p Ft(_)p FD(MAPQKZ)g(\(whic)m
+(h)h(assumes)g(zero)h(parallax)e(and)h(FK5)h(prop)s(er)e(motion\).)311
+2186 y(5.)46 b(The)j(accuracy)-8 b(,)55 b(starting)49
+b(from)f(ICRS)g(star)h(data,)55 b(is)48 b(limited)f(to)i(ab)s(out)g(1)g
+(mas)g(b)m(y)g(the)427 2299 y(precession-n)m(utation)33
+b(mo)s(del)g(used,)h(SF2001.)52 b(A)34 b(di\013eren)m(t)f(precession-n)
+m(utation)h(mo)s(del)e(can)427 2412 y(b)s(e)38 b(in)m(tro)s(duced)f(b)m
+(y)h(using)f(sla)p Ft(_)p FD(MAPP)-8 b(A)39 b(and)e(sla)p
+Ft(_)p FD(MAPQK)h(\(see)h(the)g(previous)e(note\))i(and)427
+2525 y(replacing)29 b(the)i(precession-n)m(utation)f(matrix)f(in)m(to)i
+(the)f(parameter)h(arra)m(y)g(directly)-8 b(.)311 2678
+y(6.)46 b(The)25 b(accuracy)h(is)d(further)h(limited)f(b)m(y)h(the)h
+(routine)f(sla)p Ft(_)p FD(EVP)-8 b(,)25 b(called)f(b)m(y)h(sla)p
+Ft(_)p FD(MAPP)-8 b(A,)25 b(whic)m(h)427 2791 y(computes)32
+b(the)g(Earth)f(p)s(osition)e(and)i(v)m(elo)s(cit)m(y)h(using)e(the)i
+(metho)s(ds)f(of)g(Stump\013.)43 b(The)31 b(maxi-)427
+2904 y(m)m(um)f(error)g(is)f(ab)s(out)i(0.3)g(milliarcsecond.)0
+3305 y FB(REFERENCES)44 b FD(:)311 3508 y(1.)i(1984)32
+b Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)p FD(,)31
+b(pp)e(B39-B41.)311 3662 y(2.)46 b(Lederle)30 b(&)g(Sc)m(h)m(w)m(an,)h
+(1984.)h Fq(Astr.Astr)-5 b(ophys.)33 b FB(134)p FD(,)e(1-6.)p
+0 3810 3780 8 v 0 3923 a Fx(SLA)p Fn(_)p Fx(MAPP)-11
+b(A)283 b Fm(Mean)39 b(to)f(Apparen)m(t)f(P)m(arameters)283
+b Fx(SLA)p Fn(_)p Fx(MAPP)-11 b(A)0 4273 y FB(A)m(CTION)44
+b FD(:)73 b(Compute)46 b(star-indep)s(enden)m(t)f(parameters)i(in)f
+(preparation)g(for)g(con)m(v)m(ersions)h(b)s(et)m(w)m(een)227
+4386 y(mean)e(place)f(and)g(geo)s(cen)m(tric)h(apparen)m(t)g(place.)82
+b(The)44 b(parameters)g(pro)s(duced)f(b)m(y)h(this)f(routine)227
+4499 y(are)32 b(required)e(in)g(the)i(parallax,)f(ligh)m(t)f
+(de\015ection,)i(ab)s(erration,)f(and)g(precession-n)m(utation)g(parts)
+g(of)227 4612 y(the)j(mean/apparen)m(t)g(transformations.)49
+b(The)33 b(reference)h(frames)f(and)g(time)g(scales)g(used)g(are)h(p)s
+(ost)227 4725 y(IA)m(U)d(1976.)0 4912 y FB(CALL)45 b
+FD(:)77 b Ft(CALL)46 b(sla_MAPPA)g(\(EQ,)g(DATE,)h(AMPRMS\))0
+5285 y FB(GIVEN)e FD(:)277 5431 y Fq(EQ)604 b FB(D)565
+b FD(ep)s(o)s(c)m(h)30 b(of)h(mean)f(equino)m(x)g(to)h(b)s(e)f(used)g
+(\(Julian\))277 5544 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(TDB)31 b(\(JD)p Fo(\000)p FD(2400000.5\))p eop
+%%Page: 94 96
+94 95 bop 0 52 a FD(94)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(AMPRMS)325 b FB(D\(21\))379 b FD(star-indep)s(enden)m(t)29
+b(mean-to-apparen)m(t)j(parameters:)537 610 y(\(1\))1006
+b(time)30 b(in)m(terv)-5 b(al)30 b(for)g(prop)s(er)f(motion)h(\(Julian)
+e(y)m(ears\))499 723 y(\(2-4\))969 b(barycen)m(tric)30
+b(p)s(osition)f(of)h(the)h(Earth)f(\(A)m(U\))499 836
+y(\(5-7\))969 b(helio)s(cen)m(tric)29 b(direction)g(of)i(the)f(Earth)g
+(\(unit)g(v)m(ector\))537 949 y(\(8\))1006 b(\(gra)m(vitational)52
+b(radius)e(of)i(Sun\))p Fo(\002)p FD(2)p Fl(=)p FD(\(Sun-Earth)e(dis-)
+1658 1062 y(tance\))477 1175 y(\(9-11\))946 b FB(v)p
+FD(:)41 b(barycen)m(tric)30 b(Earth)g(v)m(elo)s(cit)m(y)h(in)e(units)g
+(of)i(c)514 1321 y(\(12\))1658 1215 y Fi(q)p 1741 1215
+302 4 v 106 x FD(1)21 b Fo(\000)f(j)p FB(v)p Fo(j)2003
+1280 y Fu(2)454 1440 y FD(\(13-21\))924 b(precession-n)m(utation)30
+b(3)21 b Fo(\002)e FD(3)31 b(matrix)0 1870 y FB(NOTES)44
+b FD(:)311 2088 y(1.)i(F)-8 b(or)36 b(D)m(A)-8 b(TE,)37
+b(the)e(distinction)e(b)s(et)m(w)m(een)j(the)f(required)f(TDB)h(and)g
+(TT)f(is)h(alw)m(a)m(ys)h(negligible.)427 2201 y(Moreo)m(v)m(er,)d(for)
+d(all)f(but)h(the)h(most)f(critical)g(applications)e(UTC)i(is)f
+(adequate.)311 2362 y(2.)46 b(The)25 b(v)m(ectors)j(AMPRMS\(2-4\))f
+(and)e(AMPRMS\(5-7\))j(are)e(\(in)f(essence\))h(referred)f(to)i(the)e
+(mean)427 2475 y(equino)m(x)30 b(and)g(equator)h(of)f(ep)s(o)s(c)m(h)h
+(EQ.)f(F)-8 b(or)31 b(EQ=2000D0,)h(they)f(are)g(referred)e(to)i(the)g
+(ICRS.)311 2636 y(3.)46 b(The)37 b(parameters)g(pro)s(duced)e(b)m(y)i
+(this)f(routine)g(are)i(used)e(b)m(y)h(sla)p Ft(_)p FD(MAPQK,)f(sla)p
+Ft(_)p FD(MAPQKZ)427 2749 y(and)30 b(sla)p Ft(_)p FD(AMPQK.)311
+2910 y(4.)46 b(The)j(accuracy)-8 b(,)55 b(starting)49
+b(from)f(ICRS)g(star)h(data,)55 b(is)48 b(limited)f(to)i(ab)s(out)g(1)g
+(mas)g(b)m(y)g(the)427 3023 y(precession-n)m(utation)33
+b(mo)s(del)g(used,)h(SF2001.)52 b(A)34 b(di\013eren)m(t)f(precession-n)
+m(utation)h(mo)s(del)e(can)427 3136 y(b)s(e)g(in)m(tro)s(duced)f(b)m(y)
+h(\014rst)g(calling)f(the)i(presen)m(t)f(routine)g(and)g(then)g
+(replacing)f(the)i(precession-)427 3249 y(n)m(utation)d(matrix)g(in)f
+(AMPRMS\(13-21\))k(directly)-8 b(.)311 3410 y(5.)46 b(A)d(further)f
+(limit)f(to)j(the)f(accuracy)h(of)g(routines)d(using)h(the)h(parameter)
+h(arra)m(y)f(AMPRMS)427 3523 y(is)c(imp)s(osed)f(b)m(y)h(the)h(routine)
+f(sla)p Ft(_)p FD(EVP)-8 b(,)39 b(used)g(here)h(to)g(compute)g(the)g
+(Earth)f(p)s(osition)f(and)427 3636 y(v)m(elo)s(cit)m(y)31
+b(b)m(y)f(the)h(metho)s(ds)e(of)i(Stump\013.)39 b(The)30
+b(maxim)m(um)f(error)h(in)f(the)h(resulting)e(ab)s(erration)427
+3749 y(corrections)j(is)e(ab)s(out)h(0.3)i(milliarcsecond.)0
+4187 y FB(REFERENCES)44 b FD(:)311 4405 y(1.)i(1984)32
+b Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)p FD(,)31
+b(pp)e(B39-B41.)311 4566 y(2.)46 b(Lederle)30 b(&)g(Sc)m(h)m(w)m(an,)h
+(1984.)h Fq(Astr.Astr)-5 b(ophys.)33 b FB(134)p FD(,)e(1-6.)p
+0 4729 3780 8 v 0 4842 a Fx(SLA)p Fn(_)p Fx(MAPQK)400
+b Fm(Quic)m(k)38 b(Mean)h(to)f(Apparen)m(t)400 b Fx(SLA)p
+Fn(_)p Fx(MAPQK)0 5192 y FB(A)m(CTION)44 b FD(:)51 b(Quic)m(k)35
+b(mean)h(to)h(apparen)m(t)f(place:)51 b(transform)35
+b(a)h(star)g([)15 b Fl(\013;)g(\016)21 b FD(])36 b(from)f(mean)h(place)
+f(to)i(geo-)227 5305 y(cen)m(tric)32 b(apparen)m(t)g(place,)g(giv)m(en)
+f(the)h(star-indep)s(enden)m(t)e(parameters.)44 b(The)31
+b(reference)h(frames)f(and)227 5418 y(time)f(scales)h(used)e(are)i(p)s
+(ost)f(IA)m(U)h(1976.)0 5606 y FB(CALL)45 b FD(:)77 b
+Ft(CALL)46 b(sla_MAPQK)g(\(RM,)g(DM,)h(PR,)g(PD,)g(PX,)g(RV,)g(AMPRMS,)
+f(RA,)h(DA\))p eop
+%%Page: 95 97
+95 96 bop 0 52 a Fw(SUN/67.70)3252 b FD(95)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(RM,DM)409 b FB(D)565 b FD(mean)31
+b([)15 b Fl(\013;)g(\016)20 b FD(])30 b(\(radians\))277
+610 y Fq(PR,PD)449 b FB(D)565 b FD(prop)s(er)29 b(motions:)40
+b([)15 b Fl(\013;)g(\016)21 b FD(])30 b(c)m(hanges)i(p)s(er)d(Julian)f
+(y)m(ear)277 723 y Fq(PX)606 b FB(D)565 b FD(parallax)29
+b(\(arcsec\))277 836 y Fq(R)-9 b(V)611 b FB(D)565 b FD(radial)29
+b(v)m(elo)s(cit)m(y)i(\(km)f(s)2477 803 y Fp(\000)p Fu(1)2571
+836 y FD(,)h(+v)m(e)g(if)e(receding\))277 949 y Fq(AMPRMS)325
+b FB(D\(21\))379 b FD(star-indep)s(enden)m(t)29 b(mean-to-apparen)m(t)j
+(parameters:)537 1062 y(\(1\))1006 b(time)30 b(in)m(terv)-5
+b(al)30 b(for)g(prop)s(er)f(motion)h(\(Julian)e(y)m(ears\))499
+1175 y(\(2-4\))969 b(barycen)m(tric)30 b(p)s(osition)f(of)h(the)h
+(Earth)f(\(A)m(U\))499 1288 y(\(5-7\))969 b(helio)s(cen)m(tric)29
+b(direction)g(of)i(the)f(Earth)g(\(unit)g(v)m(ector\))537
+1401 y(\(8\))1006 b(\(gra)m(vitational)52 b(radius)e(of)i(Sun\))p
+Fo(\002)p FD(2)p Fl(=)p FD(\(Sun-Earth)e(dis-)1658 1514
+y(tance\))477 1626 y(\(9-11\))946 b FB(v)p FD(:)41 b(barycen)m(tric)30
+b(Earth)g(v)m(elo)s(cit)m(y)h(in)e(units)g(of)i(c)514
+1773 y(\(12\))1658 1667 y Fi(q)p 1741 1667 302 4 v 106
+x FD(1)21 b Fo(\000)f(j)p FB(v)p Fo(j)2003 1731 y Fu(2)454
+1892 y FD(\(13-21\))924 b(precession-n)m(utation)30 b(3)21
+b Fo(\002)e FD(3)31 b(matrix)0 2367 y FB(RETURNED)46
+b FD(:)277 2539 y Fq(RA,D)n(A)439 b FB(D)565 b FD(apparen)m(t)31
+b([)15 b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))0
+3022 y FB(NOTES)44 b FD(:)311 3258 y(1.)i(Use)32 b(of)f(this)g(routine)
+f(is)g(appropriate)h(when)f(e\016ciency)h(is)g(imp)s(ortan)m(t)f(and)h
+(where)g(man)m(y)g(star)427 3371 y(p)s(ositions,)26 b(all)f(referred)h
+(to)h(the)g(same)f(equator)i(and)d(equino)m(x,)i(are)g(to)g(b)s(e)f
+(transformed)g(for)g(one)427 3484 y(ep)s(o)s(c)m(h.)40
+b(The)27 b(star-indep)s(enden)m(t)f(parameters)j(can)f(b)s(e)f
+(obtained)g(b)m(y)h(calling)e(the)i(sla)p Ft(_)p FD(MAPP)-8
+b(A)427 3597 y(routine.)311 3767 y(2.)46 b(If)35 b(the)h(parallax)e
+(and)h(prop)s(er)f(motions)h(are)h(zero)g(the)f(sla)p
+Ft(_)p FD(MAPQKZ)f(routine)h(can)g(b)s(e)g(used)427 3880
+y(instead.)311 4051 y(3.)46 b(The)25 b(v)m(ectors)j(AMPRMS\(2-4\))f
+(and)e(AMPRMS\(5-7\))j(are)e(\(in)f(essence\))h(referred)f(to)i(the)e
+(mean)427 4163 y(equino)m(x)30 b(and)g(equator)h(of)f(ep)s(o)s(c)m(h)h
+(EQ.)f(F)-8 b(or)31 b(EQ=2000D0,)h(they)f(are)g(referred)e(to)i(the)g
+(ICRS.)311 4334 y(4.)46 b(Strictly)32 b(sp)s(eaking,)g(the)h(routine)e
+(is)h(not)h(v)-5 b(alid)31 b(for)h(solar-system)h(sources,)h(though)e
+(the)h(error)427 4447 y(will)e(usually)h(b)s(e)h(extremely)g(small.)49
+b(Ho)m(w)m(ev)m(er,)37 b(to)d(prev)m(en)m(t)g(gross)g(errors)f(in)g
+(the)g(case)i(where)427 4560 y(the)41 b(p)s(osition)d(of)i(the)g(Sun)f
+(is)g(sp)s(eci\014ed,)i(the)f(gra)m(vitational)h(de\015ection)e(term)h
+(is)g(restrained)427 4673 y(within)27 b(ab)s(out)i(920)1098
+4636 y Fk(0)m(0)1169 4673 y FD(of)g(the)g(cen)m(tre)h(of)g(the)f(Sun's)
+f(disc.)39 b(The)29 b(term)g(has)g(a)h(maxim)m(um)e(v)-5
+b(alue)28 b(of)427 4785 y(ab)s(out)23 b(1)720 4749 y
+Fk(0)m(0)724 4785 y Fl(:)p FD(85)i(at)f(this)e(radius,)i(and)e
+(decreases)i(to)h(zero)f(as)f(the)h(cen)m(tre)g(of)g(the)f(disc)g(is)f
+(approac)m(hed.)0 5269 y FB(REFERENCES)44 b FD(:)311
+5505 y(1.)i(1984)32 b Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)p
+FD(,)31 b(pp)e(B39-B41.)311 5675 y(2.)46 b(Lederle)30
+b(&)g(Sc)m(h)m(w)m(an,)h(1984.)h Fq(Astr.Astr)-5 b(ophys.)33
+b FB(134)p FD(,)e(1-6.)p eop
+%%Page: 96 98
+96 97 bop 0 52 a FD(96)p 0 267 3780 8 v 0 380 a Fx(SLA)p
+Fn(_)p Fx(MAPQKZ)170 b Fm(Quic)m(k)39 b(Mean-Appt,)e(no)i(PM)g
+Fj(etc.)184 b Fx(SLA)p Fn(_)p Fx(MAPQKZ)0 730 y FB(A)m(CTION)44
+b FD(:)39 b(Quic)m(k)26 b(mean)g(to)i(apparen)m(t)f(place:)39
+b(transform)26 b(a)h(star)g([)15 b Fl(\013;)g(\016)20
+b FD(])27 b(from)f(mean)h(place)g(to)g(geo)s(cen-)227
+843 y(tric)37 b(apparen)m(t)h(place,)h(giv)m(en)f(the)f(star-indep)s
+(enden)m(t)f(parameters,)k(and)c(assuming)g(zero)j(parallax)227
+956 y(and)30 b(FK5)h(prop)s(er)e(motion.)40 b(The)30
+b(reference)h(frames)f(and)g(time)g(scales)g(used)g(are)h(p)s(ost)f(IA)
+m(U)h(1976.)0 1144 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_MAPQKZ)f(\(RM,)i(DM,)g(AMPRMS,)f(RA,)h(DA\))0 1546
+y FB(GIVEN)e FD(:)277 1692 y Fq(RM,DM)409 b FB(D)565
+b FD(mean)31 b([)15 b Fl(\013;)g(\016)20 b FD(])30 b(\(radians\))277
+1805 y Fq(AMPRMS)325 b FB(D\(21\))379 b FD(star-indep)s(enden)m(t)29
+b(mean-to-apparen)m(t)j(parameters:)537 1918 y(\(1\))1006
+b(time)30 b(in)m(terv)-5 b(al)30 b(for)g(prop)s(er)f(motion)h(\(Julian)
+e(y)m(ears\))499 2031 y(\(2-4\))969 b(barycen)m(tric)30
+b(p)s(osition)f(of)h(the)h(Earth)f(\(A)m(U\))499 2143
+y(\(5-7\))969 b(helio)s(cen)m(tric)29 b(direction)g(of)i(the)f(Earth)g
+(\(unit)g(v)m(ector\))537 2256 y(\(8\))1006 b(\(gra)m(vitational)52
+b(radius)e(of)i(Sun\))p Fo(\002)p FD(2)p Fl(=)p FD(\(Sun-Earth)e(dis-)
+1658 2369 y(tance\))477 2482 y(\(9-11\))946 b FB(v)p
+FD(:)41 b(barycen)m(tric)30 b(Earth)g(v)m(elo)s(cit)m(y)h(in)e(units)g
+(of)i(c)514 2629 y(\(12\))1658 2523 y Fi(q)p 1741 2523
+302 4 v 106 x FD(1)21 b Fo(\000)f(j)p FB(v)p Fo(j)2003
+2587 y Fu(2)454 2748 y FD(\(13-21\))924 b(precession-n)m(utation)30
+b(3)21 b Fo(\002)e FD(3)31 b(matrix)0 3189 y FB(RETURNED)46
+b FD(:)277 3360 y Fq(RA,D)n(A)439 b FB(D)565 b FD(apparen)m(t)31
+b([)15 b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))0
+3810 y FB(NOTES)44 b FD(:)311 4032 y(1.)i(Use)32 b(of)f(this)g(routine)
+f(is)g(appropriate)h(when)f(e\016ciency)h(is)g(imp)s(ortan)m(t)f(and)h
+(where)g(man)m(y)g(star)427 4145 y(p)s(ositions,)c(all)g(with)f
+(parallax)h(and)g(prop)s(er)f(motion)i(either)f(zero)i(or)f(already)f
+(allo)m(w)m(ed)h(for,)g(and)427 4258 y(all)34 b(referred)h(to)h(the)f
+(same)h(equator)g(and)e(equino)m(x,)i(are)g(to)g(b)s(e)f(transformed)f
+(for)h(one)g(ep)s(o)s(c)m(h.)427 4371 y(The)23 b(star-indep)s(enden)m
+(t)g(parameters)h(can)g(b)s(e)f(obtained)g(b)m(y)g(calling)g(the)g(sla)
+p Ft(_)p FD(MAPP)-8 b(A)24 b(routine.)311 4534 y(2.)46
+b(The)31 b(corresp)s(onding)d(routine)i(for)h(the)f(case)i(of)f
+(non-zero)g(parallax)f(and)g(FK5)h(prop)s(er)f(motion)427
+4647 y(is)g(sla)p Ft(_)p FD(MAPQK.)311 4811 y(3.)46 b(The)25
+b(v)m(ectors)j(AMPRMS\(2-4\))f(and)e(AMPRMS\(5-7\))j(are)e(\(in)f
+(essence\))h(referred)f(to)i(the)e(mean)427 4924 y(equino)m(x)30
+b(and)g(equator)h(of)f(ep)s(o)s(c)m(h)h(EQ.)f(F)-8 b(or)31
+b(EQ=2000D0,)h(they)f(are)g(referred)e(to)i(the)g(ICRS.)311
+5087 y(4.)46 b(Strictly)32 b(sp)s(eaking,)g(the)h(routine)e(is)h(not)h
+(v)-5 b(alid)31 b(for)h(solar-system)h(sources,)h(though)e(the)h(error)
+427 5200 y(will)e(usually)h(b)s(e)h(extremely)g(small.)49
+b(Ho)m(w)m(ev)m(er,)37 b(to)d(prev)m(en)m(t)g(gross)g(errors)f(in)g
+(the)g(case)i(where)427 5313 y(the)41 b(p)s(osition)d(of)i(the)g(Sun)f
+(is)g(sp)s(eci\014ed,)i(the)f(gra)m(vitational)h(de\015ection)e(term)h
+(is)g(restrained)427 5426 y(within)27 b(ab)s(out)i(920)1098
+5389 y Fk(0)m(0)1169 5426 y FD(of)g(the)g(cen)m(tre)h(of)g(the)f(Sun's)
+f(disc.)39 b(The)29 b(term)g(has)g(a)h(maxim)m(um)e(v)-5
+b(alue)28 b(of)427 5539 y(ab)s(out)23 b(1)720 5502 y
+Fk(0)m(0)724 5539 y Fl(:)p FD(85)i(at)f(this)e(radius,)i(and)e
+(decreases)i(to)h(zero)f(as)f(the)h(cen)m(tre)g(of)g(the)f(disc)g(is)f
+(approac)m(hed.)p eop
+%%Page: 97 99
+97 98 bop 0 52 a Fw(SUN/67.70)3252 b FD(97)0 351 y FB(REFERENCES)44
+b FD(:)311 534 y(1.)i(1984)32 b Fq(Astr)-5 b(onomic)g(al)36
+b(A)n(lmanac)p FD(,)31 b(pp)e(B39-B41.)311 674 y(2.)46
+b(Lederle)30 b(&)g(Sc)m(h)m(w)m(an,)h(1984.)h Fq(Astr.Astr)-5
+b(ophys.)33 b FB(134)p FD(,)e(1-6.)p 0 791 3780 8 v 0
+904 a Fx(SLA)p Fn(_)p Fx(MOON)558 b Fm(Appro)m(x)38 b(Mo)s(on)g(P)m
+(os/V)-10 b(el)558 b Fx(SLA)p Fn(_)p Fx(MOON)0 1254 y
+FB(A)m(CTION)44 b FD(:)c(Appro)m(ximate)31 b(geo)s(cen)m(tric)g(p)s
+(osition)e(and)g(v)m(elo)s(cit)m(y)i(of)g(the)f(Mo)s(on)h(\(single)e
+(precision\).)0 1442 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_MOON)g(\(IY,)h(ID,)f(FD,)h(PV\))0 1770 y FB(GIVEN)e
+FD(:)277 1916 y Fq(IY)633 b FB(I)605 b FD(y)m(ear)277
+2029 y Fq(ID)632 b FB(I)605 b FD(da)m(y)31 b(in)e(y)m(ear)i(\(1)g(=)f
+(Jan)g(1st\))277 2142 y Fq(FD)608 b FB(R)567 b FD(fraction)30
+b(of)h(da)m(y)0 2458 y FB(RETURNED)46 b FD(:)277 2604
+y Fq(PV)606 b FB(R\(6\))433 b FD(Mo)s(on)41 b([)15 b
+Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42
+b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20 b FD(],)44 b(mean)d(equator)h(and)f
+(equino)m(x)1658 2717 y(of)31 b(date)g(\(A)m(U,)g(A)m(U)h(s)2389
+2684 y Fp(\000)p Fu(1)2483 2717 y FD(\))0 3033 y FB(NOTES)44
+b FD(:)311 3216 y(1.)i(The)30 b(date)g(and)f(time)h(is)f(TDB)h(\(lo)s
+(osely)f(ET\))h(in)e(a)j(Julian)c(calendar)i(whic)m(h)g(has)h(b)s(een)f
+(aligned)427 3329 y(to)35 b(the)g(ordinary)e(Gregorian)h(calendar)g
+(for)g(the)h(in)m(terv)-5 b(al)33 b(1900)k(Marc)m(h)e(1)f(to)i(2100)g
+(F)-8 b(ebruary)427 3442 y(28.)42 b(The)30 b(y)m(ear)h(and)f(da)m(y)g
+(can)h(b)s(e)f(obtained)g(b)m(y)g(calling)f(sla)p Ft(_)p
+FD(CAL)-8 b(YD)30 b(or)g(sla)p Ft(_)p FD(CL)-8 b(YD.)311
+3582 y(2.)46 b(The)37 b(p)s(osition)e(is)h(accurate)i(to)g(b)s(etter)f
+(than)g(0.5)h(arcmin)m(ute)f(in)e(direction)h(and)g(1000)j(km)e(in)427
+3695 y(distance.)h(The)21 b(v)m(elo)s(cit)m(y)h(is)e(accurate)j(to)g(b)
+s(etter)e(than)g(0)2363 3658 y Fk(0)m(0)2367 3695 y Fl(:)p
+FD(5)i(p)s(er)d(hour)h(in)f(direction)g(and)h(4)h(metres)427
+3808 y(p)s(er)f(second)h(in)f(distance.)38 b(\(RMS)22
+b(\014gures)f(with)g(resp)s(ect)h(to)h(JPL)e(DE200)j(for)e(the)g(in)m
+(terv)-5 b(al)21 b(1960-)427 3921 y(2025)k(are)e(14)861
+3884 y Fk(0)m(0)925 3921 y FD(and)f(0)1134 3884 y Fk(0)l(0)1138
+3921 y Fl(:)p FD(2)i(p)s(er)d(hour)h(in)g(longitude,)h(9)2145
+3884 y Fk(0)l(0)2208 3921 y FD(and)f(0)2417 3884 y Fk(0)m(0)2421
+3921 y Fl(:)p FD(2)i(p)s(er)e(hour)g(in)f(latitude,)j(350)g(km)e(and)
+427 4034 y(2)34 b(metres)g(p)s(er)f(second)h(in)e(distance.\))50
+b(Note)35 b(that)g(the)e(distance)h(accuracy)h(is)d(comparativ)m(ely)
+427 4147 y(p)s(o)s(or)25 b(b)s(ecause)i(this)e(routine)g(is)g
+(principally)d(in)m(tended)j(for)h(computing)f(top)s(o)s(cen)m(tric)i
+(direction.)311 4288 y(3.)46 b(This)28 b(routine)h(is)g(only)g(a)h
+(partial)f(implemen)m(tation)f(of)i(the)g(original)e(Meeus)i(algorithm)
+f(\(refer-)427 4401 y(ence)f(b)s(elo)m(w\),)f(whic)m(h)f(o\013ers)h(4)g
+(times)f(the)h(accuracy)h(in)e(direction)f(and)h(20)i(times)e(the)h
+(accuracy)427 4514 y(in)i(distance)h(when)g(fully)e(implemen)m(ted)h
+(\(as)i(it)f(is)f(in)g(sla)p Ft(_)p FD(DMOON\).)0 4838
+y FB(REFERENCE)44 b FD(:)d(Meeus,)31 b Fq(l'Astr)-5 b(onomie)p
+FD(,)32 b(June)e(1984,)i(p348.)p 0 4955 V 0 5068 a Fx(SLA)p
+Fn(_)p Fx(MXM)600 b Fm(Multiply)37 b(3)27 b Fh(\002)f
+Fm(3)39 b(Matrices)601 b Fx(SLA)p Fn(_)p Fx(MXM)0 5418
+y FB(A)m(CTION)44 b FD(:)c(Pro)s(duct)30 b(of)h(t)m(w)m(o)g(3)21
+b Fo(\002)f FD(3)31 b(matrices)f(\(single)f(precision\).)0
+5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_MXM)g(\(A,)h(B,)g(C\))p
+eop
+%%Page: 98 100
+98 99 bop 0 52 a FD(98)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(A)668 b FB(R\(3,3\))352 b FD(matrix)30 b FB(A)277
+610 y Fq(B)672 b FB(R\(3,3\))352 b FD(matrix)30 b FB(B)0
+898 y(RETURNED)46 b FD(:)277 1070 y Fq(C)671 b FB(R\(3,3\))352
+b FD(matrix)30 b(result:)40 b FB(A)p Fo(\002)p FB(B)0
+1366 y(NOTE)k FD(:)c(T)-8 b(o)30 b(comply)e(with)g(the)h(ANSI)g(F)-8
+b(ortran)29 b(77)h(standard,)f(A,)h(B)f(and)f(C)h(m)m(ust)g(b)s(e)f
+(di\013eren)m(t)h(arra)m(ys.)227 1479 y(The)h(routine)f(is,)g(in)g
+(fact,)i(co)s(ded)f(so)g(as)g(to)h(w)m(ork)f(prop)s(erly)e(with)h(man)m
+(y)h(F)-8 b(ortran)30 b(compilers)f(ev)m(en)h(if)227
+1592 y(this)g(rule)f(is)g(violated,)h(something)g(that)h(is)e
+FB(not)p FD(,)i(ho)m(w)m(ev)m(er,)h(recommended.)p 0
+1696 3780 8 v 0 1809 a Fx(SLA)p Fn(_)p Fx(MXV)744 b Fm(Apply)38
+b(3D)h(Rotation)743 b Fx(SLA)p Fn(_)p Fx(MXV)0 2159 y
+FB(A)m(CTION)44 b FD(:)c(Multiply)28 b(a)j(3-v)m(ector)i(b)m(y)d(a)h
+(rotation)f(matrix)g(\(single)g(precision\).)0 2347 y
+FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_MXV)g(\(RM,)h(VA,)g(VB\))0
+2659 y FB(GIVEN)e FD(:)277 2805 y Fq(RM)588 b FB(R\(3,3\))352
+b FD(rotation)31 b(matrix)277 2918 y Fq(V)-9 b(A)609
+b FB(R\(3\))433 b FD(v)m(ector)32 b(to)f(b)s(e)f(rotated)0
+3206 y FB(RETURNED)46 b FD(:)277 3377 y Fq(VB)604 b FB(R\(3\))433
+b FD(result)29 b(v)m(ector)0 3674 y FB(NOTES)44 b FD(:)311
+3852 y(1.)i(This)29 b(routine)g(p)s(erforms)g(the)i(op)s(eration:)597
+3989 y FB(b)g FD(=)f FB(M)p Fo(\001)p FB(a)427 4125 y
+FD(where)g FB(a)f FD(and)g FB(b)h FD(are)g(the)g(3-v)m(ectors)i(V)-10
+b(A)30 b(and)f(VB)i(resp)s(ectiv)m(ely)-8 b(,)30 b(and)f
+FB(M)h FD(is)f(the)h(3)19 b Fo(\002)g FD(3)30 b(matrix)427
+4238 y(RM.)311 4375 y(2.)46 b(The)30 b(main)f(function)g(of)i(this)e
+(routine)g(is)h(apply)f(a)h(rotation;)h(under)e(these)i(circumstances,)
+f FB(M)427 4488 y FD(is)g(a)g Fq(pr)-5 b(op)g(er)36 b(r)-5
+b(e)g(al)34 b(ortho)-5 b(gonal)43 b FD(matrix.)311 4624
+y(3.)j(T)-8 b(o)35 b(comply)e(with)f(the)i(ANSI)g(F)-8
+b(ortran)34 b(77)h(standard,)f(V)-10 b(A)34 b(and)f(VB)h(m)m(ust)g
+FB(not)g FD(b)s(e)f(the)h(same)427 4737 y(arra)m(y)-8
+b(.)83 b(The)43 b(routine)g(is,)k(in)42 b(fact,)49 b(co)s(ded)43
+b(so)i(as)f(to)g(w)m(ork)g(prop)s(erly)e(with)h(man)m(y)h(F)-8
+b(ortran)427 4850 y(compilers)26 b(ev)m(en)h(if)f(this)g(rule)f(is)h
+(violated,)i(something)e(that)i(is)e FB(not)p FD(,)h(ho)m(w)m(ev)m(er,)
+j(recommended.)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(NUT)843
+b Fm(Nutation)37 b(Matrix)843 b Fx(SLA)p Fn(_)p Fx(NUT)0
+5418 y FB(A)m(CTION)44 b FD(:)c(F)-8 b(orm)31 b(the)g(matrix)f(of)g(n)m
+(utation)g(\(SF2001)j(theory\))e(for)f(a)h(giv)m(en)f(date.)0
+5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_NUT)g(\(DATE,)g(RMATN\))
+p eop
+%%Page: 99 101
+99 100 bop 0 52 a Fw(SUN/67.70)3252 b FD(99)0 351 y FB(GIVEN)45
+b FD(:)277 497 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(TDB)68
+b(\(formerly)f(ET\))g(as)h(Mo)s(di\014ed)d(Julian)h(Date)1658
+610 y(\(JD)p Fo(\000)p FD(2400000.5\))0 928 y FB(RETURNED)46
+b FD(:)277 1100 y Fq(RMA)-7 b(TN)394 b FB(D\(3,3\))350
+b FD(n)m(utation)30 b(matrix)0 1426 y FB(NOTES)44 b FD(:)311
+1609 y(1.)i(The)30 b(matrix)g(is)f(in)g(the)i(sense:)597
+1750 y FB(v)652 1764 y Ff(tr)r(ue)815 1750 y FD(=)25
+b FB(M)20 b Fo(\002)g FB(v)1176 1764 y Ff(mean)427 1891
+y FD(where)31 b FB(v)746 1905 y Ff(tr)r(ue)914 1891 y
+FD(is)g(the)g(star)h(v)m(ector)h(relativ)m(e)e(to)h(the)g(true)f
+(equator)h(and)e(equino)m(x)h(of)h(date,)g FB(M)f FD(is)427
+2004 y(the)d(3)14 b Fo(\002)g FD(3)28 b(matrix)f Ft(rmatn)e
+FD(and)i FB(v)1585 2018 y Ff(mean)1792 2004 y FD(is)g(the)g(star)h(v)m
+(ector)h(relativ)m(e)e(to)h(the)g(mean)f(equator)h(and)427
+2117 y(equino)m(x)i(of)h(date.)311 2258 y(2.)46 b(The)35
+b(matrix)f(represen)m(ts)h(forced)g(n)m(utation)g(\(but)f(not)h(free)g
+(core)h(n)m(utation\))f(plus)e(corrections)427 2371 y(to)e(the)g(IA)m
+(U)g(1976)h(precession)e(mo)s(del.)311 2512 y(3.)46 b(Earth)h(attitude)
+f(predictions)f(made)i(b)m(y)f(com)m(bining)f(the)i(presen)m(t)f(n)m
+(utation)h(matrix)f(with)427 2624 y(IA)m(U)d(1976)g(precession)e(are)h
+(accurate)i(to)e(1)g(mas)g(\(with)f(resp)s(ect)h(to)g(the)g(ICRS\))f
+(for)h(a)g(few)427 2737 y(decades)31 b(around)e(2000.)311
+2878 y(4.)46 b(The)35 b(distinction)e(b)s(et)m(w)m(een)k(the)e
+(required)f(TDB)i(and)f(TT)g(is)f(alw)m(a)m(ys)i(negligible.)54
+b(Moreo)m(v)m(er,)427 2991 y(for)30 b(all)g(but)f(the)i(most)g
+(critical)e(applications)f(UTC)i(is)g(adequate.)0 3318
+y FB(REFERENCES)44 b FD(:)311 3500 y(1.)i(Kaplan,)30
+b(G.H.,)h(1981.)i Fq(USNO)e(cir)-5 b(cular)34 b(No.)e(163)p
+FD(,)g(pA3-6.)311 3641 y(2.)46 b(Shirai,)28 b(T.)j(&)f(F)-8
+b(ukushima,)29 b(T.,)h(2001,)j(Astron.J.,)d FB(121)p
+FD(,)i(3270-3283.)p 0 3759 3780 8 v 0 3872 a Fx(SLA)p
+Fn(_)p Fx(NUTC)603 b Fm(Nutation)37 b(Comp)s(onen)m(ts)601
+b Fx(SLA)p Fn(_)p Fx(NUTC)0 4222 y FB(A)m(CTION)44 b
+FD(:)38 b(Nutation)24 b(\(SF2001)j(theory\):)38 b(longitude)23
+b(&)i(obliquit)m(y)d(comp)s(onen)m(ts,)k(and)e(mean)h(obliquit)m(y)-8
+b(.)0 4410 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_NUTC)g(\(DATE,)g
+(DPSI,)g(DEPS,)h(EPS0\))0 4739 y FB(GIVEN)e FD(:)277
+4885 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(TDB)68 b(\(formerly)f(ET\))
+g(as)h(Mo)s(di\014ed)d(Julian)h(Date)1658 4998 y(\(JD)p
+Fo(\000)p FD(2400000.5\))0 5316 y FB(RETURNED)46 b FD(:)277
+5462 y Fq(DPSI,DEPS)247 b FB(D)565 b FD(n)m(utation)30
+b(in)f(longitude)g(and)h(obliquit)m(y)e(\(radians\))277
+5575 y Fq(EPS0)515 b FB(D)565 b FD(mean)31 b(obliquit)m(y)d
+(\(radians\))p eop
+%%Page: 100 102
+100 101 bop 0 52 a FD(100)0 351 y FB(NOTES)44 b FD(:)311
+532 y(1.)i(The)31 b(routine)e(predicts)h(forced)h(n)m(utation)g(\(but)f
+(not)h(free)g(core)h(n)m(utation\))f(plus)e(corrections)i(to)427
+645 y(the)g(IA)m(U)g(1976)h(precession)d(mo)s(del.)311
+784 y(2.)46 b(Earth)j(attitude)g(predictions)f(made)h(b)m(y)g(com)m
+(bining)e(the)j(presen)m(t)f(n)m(utation)g(mo)s(del)f(with)427
+897 y(IA)m(U)43 b(1976)g(precession)e(are)h(accurate)i(to)e(1)g(mas)g
+(\(with)f(resp)s(ect)h(to)g(the)g(ICRS\))f(for)h(a)g(few)427
+1010 y(decades)31 b(around)e(2000.)311 1150 y(3.)46 b(The)40
+b(slaNutc80)i(routine)d(is)h(the)h(equiv)-5 b(alen)m(t)40
+b(of)g(the)h(presen)m(t)g(routine)e(but)h(using)f(the)i(IA)m(U)427
+1263 y(1980)33 b(n)m(utation)e(theory)-8 b(.)44 b(The)31
+b(older)f(theory)i(is)e(less)h(accurate,)i(leading)d(to)i(errors)e(as)i
+(large)f(as)427 1375 y(350)39 b(mas)f(o)m(v)m(er)i(the)e(in)m(terv)-5
+b(al)37 b(1900-2100,)44 b(mainly)36 b(b)s(ecause)i(of)g(the)g(error)f
+(in)g(the)h(IA)m(U)h(1976)427 1488 y(precession.)0 1803
+y FB(REFERENCES)44 b FD(:)311 1984 y(1.)i(Shirai,)28
+b(T.)j(&)f(F)-8 b(ukushima,)29 b(T.,)h(Astron.J.)h(121,)h(3270-3283)i
+(\(2001\).)311 2124 y(2.)46 b(F)-8 b(ukushima,)29 b(T.,)i
+(Astron.Astroph)m(ys.)f(244,)i(L11)f(\(1991\).)311 2263
+y(3.)46 b(Simon,)j(J.)e(L.,)j(Bretagnon,)i(P)-8 b(.,)51
+b(Chapron)m(t,)f(J.,)g(Chapron)m(t-T)-8 b(ouze,)52 b(M.,)f(F)-8
+b(rancou,)51 b(G.)c(&)427 2376 y(Lask)-5 b(ar,)31 b(J.,)f
+(Astron.Astroph)m(ys.)h(282,)h(663)g(\(1994\).)p 0 2493
+3780 8 v 0 2606 a Fx(SLA)p Fn(_)p Fx(NUTC80)189 b Fm(Nutation)37
+b(Comp)s(onen)m(ts,)e(IA)m(U)k(1980)188 b Fx(SLA)p Fn(_)p
+Fx(NUTC80)0 2957 y FB(A)m(CTION)44 b FD(:)d(Nutation)31
+b(\(IA)m(U)h(1980)h(theory\):)42 b(longitude)29 b(&)i(obliquit)m(y)d
+(comp)s(onen)m(ts,)k(and)e(mean)h(obliq-)227 3070 y(uit)m(y)-8
+b(.)0 3257 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_NUTC80)f(\(DATE,)h
+(DPSI,)h(DEPS,)f(EPS0\))0 3580 y FB(GIVEN)f FD(:)277
+3726 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(TDB)68 b(\(formerly)f(ET\))
+g(as)h(Mo)s(di\014ed)d(Julian)h(Date)1658 3839 y(\(JD)p
+Fo(\000)p FD(2400000.5\))0 4146 y FB(RETURNED)46 b FD(:)277
+4292 y Fq(DPSI,DEPS)247 b FB(D)565 b FD(n)m(utation)30
+b(in)f(longitude)g(and)h(obliquit)m(y)e(\(radians\))277
+4405 y Fq(EPS0)515 b FB(D)565 b FD(mean)31 b(obliquit)m(y)d
+(\(radians\))0 4711 y FB(NOTES)44 b FD(:)311 4892 y(1.)i(The)27
+b(IA)m(U)g(1980)i(theory)e(used)f(in)f(the)i(presen)m(t)g(function)e
+(has)i(errors)f(as)h(large)g(as)g(350)h(mas)f(o)m(v)m(er)427
+5005 y(the)33 b(in)m(terv)-5 b(al)31 b(1900-2100,)37
+b(mainly)30 b(b)s(ecause)i(of)g(the)h(error)f(in)e(the)j(IA)m(U)g(1976)
+g(precession.)46 b(F)-8 b(or)427 5118 y(more)34 b(accurate)i(results,)e
+(either)f(the)h(corrections)g(published)d(in)h(IERS)h
+Fq(Bul)5 b(letin)36 b(B)43 b FD(m)m(ust)34 b(b)s(e)427
+5231 y(applied,)e(or)g(the)h(sla)p Ft(_)p FD(NUTC)e(function)h(can)h(b)
+s(e)f(used.)46 b(The)33 b(latter)f(is)g(based)g(up)s(on)f(the)i(more)
+427 5344 y(recen)m(t)f(SF2001)g(n)m(utation)e(theory)g(and)g(is)g(of)g
+(b)s(etter)h(than)f(1)15 b(mas)31 b(accuracy)-8 b(.)311
+5483 y(2.)46 b(The)35 b(distinction)e(b)s(et)m(w)m(een)k(the)e
+(required)f(TDB)i(and)f(TT)g(is)f(alw)m(a)m(ys)i(negligible.)54
+b(Moreo)m(v)m(er,)427 5596 y(for)30 b(all)g(but)f(the)i(most)g
+(critical)e(applications)f(UTC)i(is)g(adequate.)p eop
+%%Page: 101 103
+101 102 bop 0 52 a Fw(SUN/67.70)3206 b FD(101)0 351 y
+FB(REFERENCES)44 b FD(:)311 556 y(1.)i(Final)21 b(rep)s(ort)f(of)i(the)
+g(IA)m(U)g(W)-8 b(orking)21 b(Group)g(on)h(Nutation,)h(c)m(hairman)e(P)
+-8 b(.K.Seidelmann,)21 b(1980.)311 710 y(2.)46 b(Kaplan,)30
+b(G.H.,)h(1981.)i Fq(USNO)e(cir)-5 b(cular)34 b(no.)f(163)p
+FD(,)f(pA3-6.)p 0 860 3780 8 v 0 973 a Fx(SLA)p Fn(_)p
+Fx(O)l(AP)709 b Fm(Observ)m(ed)39 b(to)f(Apparen)m(t)709
+b Fx(SLA)p Fn(_)p Fx(O)l(AP)0 1323 y FB(A)m(CTION)44
+b FD(:)c(Observ)m(ed)30 b(to)h(apparen)m(t)g(place.)0
+1511 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_OAP)g(\(TYPE,)g(OB1,)h
+(OB2,)g(DATE,)f(DUT,)h(ELONGM,)e(PHIM,)1096 1624 y(HM,)i(XP,)g(YP,)g
+(TDK,)f(PMB,)h(RH,)g(WL,)g(TLR,)f(RAP,)h(DAP\))0 1999
+y FB(GIVEN)e FD(:)277 2145 y Fq(TYPE)479 b FB(C*\(*\))383
+b FD(t)m(yp)s(e)31 b(of)f(co)s(ordinates)g({)h(`R',)g(`H')g(or)f(`A')h
+(\(see)h(b)s(elo)m(w\))277 2258 y Fq(OB1)556 b FB(D)565
+b FD(observ)m(ed)53 b(Az,)60 b(HA)53 b(or)g(RA)g(\(radians;)64
+b(Az)53 b(is)g(N=0,)1658 2371 y(E=90)1881 2338 y Fp(\016)1921
+2371 y FD(\))277 2484 y Fq(OB2)556 b FB(D)565 b FD(observ)m(ed)31
+b(zenith)e(distance)h(or)h Fl(\016)j FD(\(radians\))277
+2597 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(UTC)140 b(date/time)i(\(Mo)
+s(di\014ed)e(Julian)e(Date,)1658 2710 y(JD)p Fo(\000)p
+FD(2400000.5\))277 2823 y Fq(DUT)534 b FB(D)565 b FD(\001UT:)30
+b(UT1)p Fo(\000)p FD(UTC)g(\(UTC)g(seconds\))277 2936
+y Fq(ELONGM)327 b FB(D)565 b FD(observ)m(er's)31 b(mean)f(longitude)f
+(\(radians,)h(east)h(+v)m(e\))277 3048 y Fq(PHIM)489
+b FB(D)565 b FD(observ)m(er's)31 b(mean)f(geo)s(detic)h(latitude)f
+(\(radians\))277 3161 y Fq(HM)586 b FB(D)565 b FD(observ)m(er's)31
+b(heigh)m(t)f(ab)s(o)m(v)m(e)i(sea)f(lev)m(el)f(\(metres\))277
+3274 y Fq(XP,YP)448 b FB(D)565 b FD(p)s(olar)29 b(motion)h([)15
+b Fl(x;)g(y)k FD(])31 b(co)s(ordinates)f(\(radians\))277
+3387 y Fq(TDK)532 b FB(D)565 b FD(lo)s(cal)30 b(am)m(bien)m(t)g(temp)s
+(erature)g(\(K;)h(std=273.15D0\))277 3500 y Fq(PMB)528
+b FB(D)565 b FD(lo)s(cal)30 b(atmospheric)g(pressure)f(\(m)m(b;)h
+(std=1013.25D0\))277 3613 y Fq(RH)602 b FB(D)565 b FD(lo)s(cal)30
+b(relativ)m(e)g(h)m(umidit)m(y)f(\(in)g(the)i(range)f(0D0)17
+b({)e(1D0\))277 3726 y Fq(WL)588 b FB(D)565 b FD(e\013ectiv)m(e)32
+b(w)m(a)m(v)m(elength)g(\()p Fl(\026)p FD(m,)e Fq(e.g.)g
+FD(0.55D0\))277 3839 y Fq(TLR)548 b FB(D)565 b FD(trop)s(ospheric)84
+b(lapse)h(rate)h(\(K)f(p)s(er)f(metre,)100 b Fq(e.g.)1658
+3952 y FD(0.0065D0\))0 4348 y FB(RETURNED)46 b FD(:)277
+4519 y Fq(RAP,D)n(AP)315 b FB(D)565 b FD(geo)s(cen)m(tric)32
+b(apparen)m(t)e([)15 b Fl(\013;)g(\016)21 b FD(])0 4924
+y FB(NOTES)44 b FD(:)311 5128 y(1.)i(Only)39 b(the)h(\014rst)g(c)m
+(haracter)i(of)e(the)g(TYPE)g(argumen)m(t)h(is)e(signi\014can)m(t.)69
+b(`R')41 b(or)f(`r')h(indicates)427 5241 y(that)g(OBS1)e(and)g(OBS2)h
+(are)g(the)g(observ)m(ed)f(righ)m(t)h(ascension)f(and)g(declination;)k
+(`H')d(or)g(`h')427 5354 y(indicates)31 b(that)i(they)f(are)h(hour)e
+(angle)h(\(w)m(est)i(+v)m(e\))f(and)e(declination;)h(an)m(ything)f
+(else)h(\(`A')h(or)427 5467 y(`a')39 b(is)d(recommended\))i(indicates)e
+(that)i(OBS1)g(and)e(OBS2)i(are)g(azim)m(uth)f(\(north)g(zero,)j(east)
+427 5580 y(90)517 5547 y Fp(\016)558 5580 y FD(\))34
+b(and)f(zenith)g(distance.)50 b(\(Zenith)33 b(distance)g(is)g(used)g
+(rather)g(than)h(elev)-5 b(ation)33 b(in)g(order)g(to)427
+5693 y(re\015ect)e(the)g(fact)g(that)g(no)f(allo)m(w)m(ance)h(is)f
+(made)g(for)g(depression)f(of)i(the)f(horizon.\))p eop
+%%Page: 102 104
+102 103 bop 0 52 a FD(102)311 351 y(2.)46 b(The)30 b(accuracy)i(of)f
+(the)g(result)e(is)h(limited)e(b)m(y)j(the)g(corrections)g(for)f
+(refraction.)41 b(Pro)m(viding)29 b(the)427 464 y(meteorological)j
+(parameters)f(are)g(kno)m(wn)f(accurately)h(and)f(there)h(are)g(no)f
+(gross)h(lo)s(cal)f(e\013ects,)427 577 y(the)f(predicted)e(azim)m(uth)h
+(and)g(elev)-5 b(ation)28 b(should)e(b)s(e)i(within)e(ab)s(out)i(0)2869
+540 y Fk(0)l(0)2873 577 y Fl(:)p FD(1)h(for)f Fl(\020)k(<)25
+b FD(70)3367 544 y Fp(\016)3407 577 y FD(.)40 b(Ev)m(en)29
+b(at)427 690 y(a)i(top)s(o)s(cen)m(tric)f(zenith)g(distance)g(of)g(90)
+1800 657 y Fp(\016)1840 690 y FD(,)h(the)f(accuracy)i(in)c(elev)-5
+b(ation)31 b(should)d(b)s(e)h(b)s(etter)i(than)427 803
+y(1)21 b(arcmin)m(ute;)j(useful)19 b(results)g(are)i(a)m(v)-5
+b(ailable)20 b(for)g(a)h(further)f(3)2512 770 y Fp(\016)2551
+803 y FD(,)j(b)s(ey)m(ond)d(whic)m(h)f(the)i(sla)p Ft(_)p
+FD(REFR)m(O)427 916 y(routine)26 b(returns)f(a)i(\014xed)f(v)-5
+b(alue)27 b(of)f(the)h(refraction.)39 b(The)27 b(complemen)m(tary)f
+(routines)g(sla)p Ft(_)p FD(A)m(OP)427 1029 y(\(or)39
+b(sla)p Ft(_)p FD(A)m(OPQK\))f(and)g(sla)p Ft(_)p FD(O)m(AP)g(\(or)h
+(sla)p Ft(_)p FD(O)m(APQK\))f(are)h(self-consisten)m(t)g(to)g(b)s
+(etter)g(than)427 1142 y(1)31 b(microarcsecond)f(all)g(o)m(v)m(er)h
+(the)g(celestial)f(sphere.)311 1276 y(3.)46 b(It)c(is)e(advisable)h(to)
+h(tak)m(e)h(great)g(care)f(with)e(units,)j(as)f(ev)m(en)g(unlik)m(ely)d
+(v)-5 b(alues)41 b(of)h(the)f(input)427 1389 y(parameters)31
+b(are)g(accepted)g(and)f(pro)s(cessed)g(in)f(accordance)j(with)d(the)i
+(mo)s(dels)e(used.)311 1523 y(4.)46 b Fq(Observe)-5 b(d)49
+b FD([)15 b Fl(Az)t(;)g(E)5 b(l)42 b FD(])d(means)g(the)g(p)s(osition)d
+(that)k(w)m(ould)d(b)s(e)i(seen)f(b)m(y)h(a)g(p)s(erfect)g(theo)s
+(dolite)427 1636 y(lo)s(cated)46 b(at)g(the)g(observ)m(er.)86
+b(This)44 b(is)h(related)g(to)h(the)g(observ)m(ed)g([)15
+b Fl(h;)g(\016)20 b FD(])45 b(via)h(the)f(standard)427
+1748 y(rotation,)30 b(using)c(the)j(geo)s(detic)g(latitude)e
+(\(corrected)j(for)e(p)s(olar)f(motion\),)i(while)e(the)h(observ)m(ed)
+427 1861 y(HA)39 b(and)e(RA)h(are)h(related)f(simply)d(through)j(the)g
+(lo)s(cal)f(apparen)m(t)i(ST.)e Fq(Observe)-5 b(d)48
+b FD([)15 b Fl(\013;)g(\016)20 b FD(])38 b(or)427 1974
+y([)15 b Fl(h;)g(\016)20 b FD(])32 b(th)m(us)f(means)g(the)g(p)s
+(osition)e(that)j(w)m(ould)e(b)s(e)h(seen)g(b)m(y)g(a)g(p)s(erfect)g
+(equatorial)g(lo)s(cated)h(at)427 2087 y(the)25 b(observ)m(er)g(and)f
+(with)g(its)g(p)s(olar)g(axis)g(aligned)f(to)j(the)f(Earth's)g(axis)f
+(of)h(rotation)g(\()p Fq(n.b.)g FD(not)g(to)427 2200
+y(the)32 b(refracted)g(p)s(ole\).)44 b(By)32 b(remo)m(ving)f(from)g
+(the)h(observ)m(ed)g(place)f(the)h(e\013ects)h(of)f(atmospheric)427
+2313 y(refraction)e(and)g(diurnal)e(ab)s(erration,)h(the)i(geo)s(cen)m
+(tric)g(apparen)m(t)g([)15 b Fl(\013;)g(\016)20 b FD(])31
+b(is)e(obtained.)311 2447 y(5.)46 b(F)-8 b(requen)m(tly)g(,)32
+b Fq(me)-5 b(an)38 b FD(rather)30 b(than)g Fq(app)-5
+b(ar)g(ent)49 b FD([)15 b Fl(\013;)g(\016)20 b FD(])31
+b(will)c(b)s(e)j(required,)f(in)g(whic)m(h)g(case)j(further)427
+2560 y(transformations)37 b(will)d(b)s(e)j(necessary)-8
+b(.)62 b(The)37 b(sla)p Ft(_)p FD(AMP)f Fq(etc.)h FD(routines)f(will)f
+(con)m(v)m(ert)k(the)e(ap-)427 2673 y(paren)m(t)k([)15
+b Fl(\013;)g(\016)20 b FD(])41 b(pro)s(duced)d(b)m(y)j(the)f(presen)m
+(t)h(routine)e(in)m(to)h(an)h(FK5)f(J2000)i(mean)f(place,)i(b)m(y)427
+2786 y(allo)m(wing)30 b(for)h(the)h(Sun's)e(gra)m(vitational)i(lens)e
+(e\013ect,)j(ann)m(ual)e(ab)s(erration,)g(n)m(utation)g(and)g(pre-)427
+2899 y(cession.)40 b(Should)25 b(FK4)i(B1950)j(co)s(ordinates)d(b)s(e)f
+(required,)h(the)g(routines)f(sla)p Ft(_)p FD(FK524)i
+Fq(etc.)f FD(will)427 3012 y(also)k(ha)m(v)m(e)g(to)g(b)s(e)f(applied.)
+311 3146 y(6.)46 b(T)-8 b(o)31 b(con)m(v)m(ert)h(to)f(apparen)m(t)f([)
+15 b Fl(\013;)g(\016)21 b FD(])30 b(the)h(co)s(ordinates)f(read)g(from)
+g(a)g(real)g(telescop)s(e,)h(corrections)427 3259 y(w)m(ould)43
+b(ha)m(v)m(e)i(to)g(b)s(e)f(applied)e(for)h(enco)s(der)h(zero)h(p)s
+(oin)m(ts,)i(gear)e(and)e(enco)s(der)h(errors,)j(tub)s(e)427
+3371 y(\015exure,)e(the)d(p)s(osition)e(of)j(the)f(rotator)h(axis)f
+(and)g(the)g(p)s(oin)m(ting)e(axis)i(relativ)m(e)g(to)h(it,)i(non-)427
+3484 y(p)s(erp)s(endicularit)m(y)22 b(b)s(et)m(w)m(een)k(the)g(moun)m
+(ting)f(axes,)i(and)e(\014nally)f(for)h(the)h(tilt)f(of)g(the)h(azim)m
+(uth)f(or)427 3597 y(p)s(olar)32 b(axis)g(of)h(the)h(moun)m(ting)e
+(\(with)g(appropriate)g(corrections)h(for)g(moun)m(t)f(\015exures\).)48
+b(Some)427 3710 y(telescop)s(es)22 b(w)m(ould,)g(of)f(course,)i
+(exhibit)d(other)h(prop)s(erties)e(whic)m(h)h(w)m(ould)g(need)h(to)h(b)
+s(e)e(accoun)m(ted)427 3823 y(for)30 b(at)i(the)e(appropriate)f(p)s
+(oin)m(t)h(in)f(the)h(sequence.)311 3957 y(7.)46 b(This)36
+b(routine)g(tak)m(es)i(time)f(to)h(execute,)i(due)d(mainly)e(to)j(the)f
+(rigorous)f(in)m(tegration)h(used)g(to)427 4070 y(ev)-5
+b(aluate)33 b(the)f(refraction.)44 b(F)-8 b(or)33 b(pro)s(cessing)d(m)m
+(ultiple)f(stars)j(for)g(one)g(lo)s(cation)f(and)g(time,)h(call)427
+4183 y(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)41 b(once)h(follo)m(w)m(ed)f(b)m
+(y)g(one)g(call)g(p)s(er)f(star)h(to)h(sla)p Ft(_)p FD(O)m(APQK.)e
+(Where)h(a)h(range)f(of)427 4296 y(times)31 b(within)d(a)j(limited)e(p)
+s(erio)s(d)f(of)j(a)h(few)e(hours)g(is)g(in)m(v)m(olv)m(ed,)h(and)f
+(the)h(highest)f(precision)f(is)427 4409 y(not)g(required,)e(call)g
+(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)28 b(once,)i(follo)m(w)m(ed)e(b)m(y)g
+(a)g(call)g(to)h(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)g(T)28
+b(eac)m(h)h(time)f(the)427 4522 y(time)i(c)m(hanges,)i(follo)m(w)m(ed)e
+(b)m(y)g(one)h(call)f(p)s(er)f(star)h(to)i(sla)p Ft(_)p
+FD(O)m(APQK.)311 4656 y(8.)46 b(The)26 b(D)m(A)-8 b(TE)27
+b(argumen)m(t)g(is)e(UTC)h(expressed)g(as)g(an)g(MJD.)h(This)e(is,)h
+(strictly)f(sp)s(eaking,)i(wrong,)427 4769 y(b)s(ecause)33
+b(of)g(leap)g(seconds.)48 b(Ho)m(w)m(ev)m(er,)35 b(as)e(long)g(as)g
+(the)g(\001UT)f(and)h(the)g(UTC)f(are)h(consisten)m(t)427
+4882 y(there)j(are)h(no)f(di\016culties,)f(except)i(during)d(a)i(leap)g
+(second.)57 b(In)36 b(this)f(case,)j(the)f(start)f(of)g(the)427
+4994 y(61st)i(second)f(of)g(the)g(\014nal)f(min)m(ute)g(should)f(b)s
+(egin)g(a)j(new)e(MJD)h(da)m(y)h(and)e(the)h(old)f(pre-leap)427
+5107 y(\001UT)i(should)e(con)m(tin)m(ue)i(to)h(b)s(e)e(used.)63
+b(As)38 b(the)g(61st)h(second)f(completes,)j(the)d(MJD)g(should)427
+5220 y(rev)m(ert)31 b(to)h(the)e(start)h(of)g(the)f(da)m(y)h(as,)g(sim)
+m(ultaneously)-8 b(,)29 b(the)h(\001UT)g(c)m(hanges)h(b)m(y)g(one)f
+(second)h(to)427 5333 y(its)f(p)s(ost-leap)g(new)g(v)-5
+b(alue.)311 5467 y(9.)46 b(The)27 b(\001UT)h(\(UT1)p
+Fo(\000)p FD(UTC\))g(is)e(tabulated)i(in)e(IERS)h(circulars)f(and)h
+(elsewhere.)39 b(It)28 b(increases)g(b)m(y)427 5580 y(exactly)k(one)f
+(second)f(at)i(the)f(end)f(of)h(eac)m(h)g(UTC)f(leap)h(second,)g(in)m
+(tro)s(duced)e(in)g(order)h(to)i(k)m(eep)427 5693 y(\001UT)e(within)e
+Fo(\006)p FD(0)1066 5660 y Fu(s)1071 5693 y Fl(:)p FD(9.)p
+eop
+%%Page: 103 105
+103 104 bop 0 52 a Fw(SUN/67.70)3206 b FD(103)266 351
+y(10.)46 b(IMPOR)-8 b(T)g(ANT)39 b({)g(T)-8 b(AKE)38
+b(CARE)g(WITH)h(THE)f(LONGITUDE)h(SIGN)f(CONVENTION.)427
+464 y(The)33 b(longitude)f(required)g(b)m(y)h(the)g(presen)m(t)h
+(routine)e(is)h FB(east-p)s(ositiv)m(e)p FD(,)h(in)e(accordance)j(with)
+427 577 y(geographical)f(con)m(v)m(en)m(tion)g(\(and)f(righ)m
+(t-handed\).)49 b(In)32 b(particular,)h(note)h(that)g(the)f(longitudes)
+427 690 y(returned)d(b)m(y)i(the)f(sla)p Ft(_)p FD(OBS)f(routine)h(are)
+h(w)m(est-p)s(ositiv)m(e)f(\(as)h(in)e(the)i Fq(Astr)-5
+b(onomic)g(al)36 b(A)n(lmanac)427 803 y FD(b)s(efore)30
+b(1984\))j(and)c(m)m(ust)i(b)s(e)e(rev)m(ersed)i(in)e(sign)g(b)s(efore)
+h(use)h(in)e(the)h(presen)m(t)h(routine.)266 1078 y(11.)46
+b(The)37 b(p)s(olar)f(co)s(ordinates)h(XP)-8 b(,YP)38
+b(can)f(b)s(e)g(obtained)f(from)h(IERS)f(circulars)f(and)i(equiv)-5
+b(alen)m(t)427 1191 y(publications.)36 b(The)24 b(maxim)m(um)f
+(amplitude)g(is)g(ab)s(out)h(0)2373 1154 y Fk(0)m(0)2377
+1191 y Fl(:)p FD(3.)40 b(If)24 b(XP)-8 b(,YP)25 b(v)-5
+b(alues)24 b(are)h(una)m(v)-5 b(ailable,)427 1304 y(use)31
+b(XP=YP=0D0.)43 b(See)32 b(page)g(B60)g(of)f(the)g(1988)i
+Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)h FD(for)30
+b(a)i(de\014nition)427 1417 y(of)f(the)f(t)m(w)m(o)i(angles.)266
+1692 y(12.)46 b(The)35 b(heigh)m(t)g(ab)s(o)m(v)m(e)h(sea)f(lev)m(el)g
+(of)g(the)g(observing)f(station,)i(HM,)g(can)f(b)s(e)g(obtained)f(from)
+g(the)427 1804 y Fq(Astr)-5 b(onomic)g(al)39 b(A)n(lmanac)h
+FD(\(Section)35 b(J)f(in)f(the)i(1988)h(edition\),)f(or)f(via)g(the)h
+(routine)e(sla)p Ft(_)p FD(OBS.)427 1917 y(If)i(P)-8
+b(,)35 b(the)g(pressure)e(in)h(m)m(b,)h(is)f(a)m(v)-5
+b(ailable,)36 b(an)e(adequate)i(estimate)g(of)f(HM)g(can)g(b)s(e)f
+(obtained)427 2030 y(from)c(the)h(follo)m(wing)e(expression:)597
+2305 y Ft(HM=-29.3D0*TSL*LOG\(P/1013)o(.25D)o(0\))427
+2580 y FD(where)22 b(TSL)f(is)h(the)g(appro)m(ximate)h(sea-lev)m(el)g
+(air)e(temp)s(erature)h(in)f(K)h(\(see)i Fq(Astr)-5 b(ophysic)g(al)28
+b(Quan-)427 2693 y(tities)p FD(,)k(C.W.Allen,)g(3rd)f(edition,)f
+Fo(x)p FD(52\).)46 b(Similarly)-8 b(,)29 b(if)h(the)i(pressure)e(P)h
+(is)g(not)h(kno)m(wn,)f(it)g(can)427 2806 y(b)s(e)f(estimated)h(from)f
+(the)g(heigh)m(t)g(of)h(the)f(observing)g(station,)h(HM)f(as)h(follo)m
+(ws:)597 3081 y Ft(P=1013.25D0*EXP\(-HM/\(29.3)o(D0*T)o(SL\)\))427
+3356 y FD(Note,)g(ho)m(w)m(ev)m(er,)g(that)f(the)f(refraction)g(is)g
+(nearly)f(prop)s(ortional)f(to)j(the)f(pressure)f(and)h(that)h(an)427
+3469 y(accurate)i(P)e(v)-5 b(alue)30 b(is)g(imp)s(ortan)m(t)f(for)h
+(precise)g(w)m(ork.)266 3744 y(13.)46 b(The)31 b(azim)m(uths)g
+Fq(etc.)g FD(used)g(b)m(y)g(the)h(presen)m(t)f(routine)g(are)h(with)e
+(resp)s(ect)h(to)h(the)g(celestial)f(p)s(ole.)427 3857
+y(Corrections)f(from)g(the)h(terrestrial)e(p)s(ole)g(can)i(b)s(e)f
+(computed)g(using)f(sla)p Ft(_)p FD(POLMO.)p 0 4247 3780
+8 v 0 4360 a Fx(SLA)p Fn(_)p Fx(O)l(APQK)334 b Fm(Quic)m(k)39
+b(Observ)m(ed)f(to)g(Apparen)m(t)334 b Fx(SLA)p Fn(_)p
+Fx(O)l(APQK)0 4710 y FB(A)m(CTION)44 b FD(:)c(Quic)m(k)30
+b(observ)m(ed)h(to)g(apparen)m(t)f(place.)0 4898 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_OAPQK)g(\(TYPE,)g(OB1,)g(OB2,)h(AOPRMS,)f
+(RAP,)g(DAP\))0 5634 y FB(GIVEN)f FD(:)p eop
+%%Page: 104 106
+104 105 bop 0 52 a FD(104)277 339 y Fq(TYPE)479 b FB(C*\(*\))383
+b FD(t)m(yp)s(e)31 b(of)f(co)s(ordinates)g({)h(`R',)g(`H')g(or)f(`A')h
+(\(see)h(b)s(elo)m(w\))277 452 y Fq(OB1)556 b FB(D)565
+b FD(observ)m(ed)53 b(Az,)60 b(HA)53 b(or)g(RA)g(\(radians;)64
+b(Az)53 b(is)g(N=0,)1658 565 y(E=90)1881 532 y Fp(\016)1921
+565 y FD(\))277 678 y Fq(OB2)556 b FB(D)565 b FD(observ)m(ed)31
+b(zenith)e(distance)h(or)h Fl(\016)j FD(\(radians\))277
+791 y Fq(A)n(OPRMS)339 b FB(D\(14\))379 b FD(star-indep)s(enden)m(t)85
+b(apparen)m(t-to-observ)m(ed)j(parame-)1658 904 y(ters:)537
+1016 y(\(1\))1006 b(geo)s(detic)31 b(latitude)f(\(radians\))502
+1129 y(\(2,3\))971 b(sine)29 b(and)h(cosine)g(of)h(geo)s(detic)g
+(latitude)537 1242 y(\(4\))1006 b(magnitude)30 b(of)g(diurnal)e(ab)s
+(erration)h(v)m(ector)537 1355 y(\(5\))1006 b(heigh)m(t)30
+b(\(HM\))537 1468 y(\(6\))1006 b(am)m(bien)m(t)31 b(temp)s(erature)f
+(\(TDK\))537 1581 y(\(7\))1006 b(pressure)29 b(\(PMB\))537
+1694 y(\(8\))1006 b(relativ)m(e)31 b(h)m(umidit)m(y)d(\(RH\))537
+1807 y(\(9\))1006 b(w)m(a)m(v)m(elength)32 b(\(WL\))514
+1920 y(\(10\))984 b(lapse)30 b(rate)h(\(TLR\))456 2033
+y(\(11,12\))927 b(refraction)30 b(constan)m(ts)i(A)e(and)g(B)h
+(\(radians\))514 2146 y(\(13\))984 b(longitude)41 b(+)h(eqn)h(of)f
+(equino)m(xes)g(+)h(\\sidereal)e(\001UT")1658 2258 y(\(radians\))514
+2371 y(\(14\))984 b(lo)s(cal)30 b(apparen)m(t)g(sidereal)f(time)h
+(\(radians\))0 2726 y FB(RETURNED)46 b FD(:)277 2897
+y Fq(RAP,D)n(AP)315 b FB(D)565 b FD(geo)s(cen)m(tric)32
+b(apparen)m(t)e([)15 b Fl(\013;)g(\016)21 b FD(])0 3260
+y FB(NOTES)44 b FD(:)311 3448 y(1.)i(Only)39 b(the)h(\014rst)g(c)m
+(haracter)i(of)e(the)g(TYPE)g(argumen)m(t)h(is)e(signi\014can)m(t.)69
+b(`R')41 b(or)f(`r')h(indicates)427 3561 y(that)g(OBS1)e(and)g(OBS2)h
+(are)g(the)g(observ)m(ed)f(righ)m(t)h(ascension)f(and)g(declination;)k
+(`H')d(or)g(`h')427 3674 y(indicates)31 b(that)i(they)f(are)h(hour)e
+(angle)h(\(w)m(est)i(+v)m(e\))f(and)e(declination;)h(an)m(ything)f
+(else)h(\(`A')h(or)427 3786 y(`a')k(is)d(recommended\))i(indicates)f
+(that)h(OBS1)f(and)g(OBS2)h(are)g(Azim)m(uth)f(\(north)g(zero,)j(east)
+427 3899 y(90)517 3866 y Fp(\016)558 3899 y FD(\))c(and)f(zenith)g
+(distance.)50 b(\(Zenith)33 b(distance)g(is)g(used)g(rather)g(than)h
+(elev)-5 b(ation)33 b(in)g(order)g(to)427 4012 y(re\015ect)e(the)g
+(fact)g(that)g(no)f(allo)m(w)m(ance)h(is)f(made)g(for)g(depression)f
+(of)i(the)f(horizon.\))311 4159 y(2.)46 b(The)30 b(accuracy)i(of)f(the)
+g(result)e(is)h(limited)e(b)m(y)j(the)g(corrections)g(for)f
+(refraction.)41 b(Pro)m(viding)29 b(the)427 4271 y(meteorological)j
+(parameters)f(are)g(kno)m(wn)f(accurately)h(and)f(there)h(are)g(no)f
+(gross)h(lo)s(cal)f(e\013ects,)427 4384 y(the)f(predicted)e(azim)m(uth)
+h(and)g(elev)-5 b(ation)28 b(should)e(b)s(e)i(within)e(ab)s(out)i(0)
+2869 4347 y Fk(0)l(0)2873 4384 y Fl(:)p FD(1)h(for)f
+Fl(\020)k(<)25 b FD(70)3367 4351 y Fp(\016)3407 4384
+y FD(.)40 b(Ev)m(en)29 b(at)427 4497 y(a)i(top)s(o)s(cen)m(tric)f
+(zenith)g(distance)g(of)g(90)1800 4464 y Fp(\016)1840
+4497 y FD(,)h(the)f(accuracy)i(in)c(elev)-5 b(ation)31
+b(should)d(b)s(e)h(b)s(etter)i(than)427 4610 y(1)21 b(arcmin)m(ute;)j
+(useful)19 b(results)g(are)i(a)m(v)-5 b(ailable)20 b(for)g(a)h(further)
+f(3)2512 4577 y Fp(\016)2551 4610 y FD(,)j(b)s(ey)m(ond)d(whic)m(h)f
+(the)i(sla)p Ft(_)p FD(REFR)m(O)427 4723 y(routine)26
+b(returns)f(a)i(\014xed)f(v)-5 b(alue)27 b(of)f(the)h(refraction.)39
+b(The)27 b(complemen)m(tary)f(routines)g(sla)p Ft(_)p
+FD(A)m(OP)427 4836 y(\(or)39 b(sla)p Ft(_)p FD(A)m(OPQK\))f(and)g(sla)p
+Ft(_)p FD(O)m(AP)g(\(or)h(sla)p Ft(_)p FD(O)m(APQK\))f(are)h
+(self-consisten)m(t)g(to)g(b)s(etter)g(than)427 4949
+y(1)31 b(microarcsecond)f(all)g(o)m(v)m(er)h(the)g(celestial)f(sphere.)
+311 5095 y(3.)46 b(It)c(is)e(advisable)h(to)h(tak)m(e)h(great)g(care)f
+(with)e(units,)j(as)f(ev)m(en)g(unlik)m(ely)d(v)-5 b(alues)41
+b(of)h(the)f(input)427 5208 y(parameters)31 b(are)g(accepted)g(and)f
+(pro)s(cessed)g(in)f(accordance)j(with)d(the)i(mo)s(dels)e(used.)311
+5354 y(4.)46 b Fq(Observe)-5 b(d)49 b FD([)15 b Fl(Az)t(;)g(E)5
+b(l)42 b FD(])d(means)g(the)g(p)s(osition)d(that)k(w)m(ould)d(b)s(e)i
+(seen)f(b)m(y)h(a)g(p)s(erfect)g(theo)s(dolite)427 5467
+y(lo)s(cated)46 b(at)g(the)g(observ)m(er.)86 b(This)44
+b(is)h(related)g(to)h(the)g(observ)m(ed)g([)15 b Fl(h;)g(\016)20
+b FD(])45 b(via)h(the)f(standard)427 5580 y(rotation,)30
+b(using)c(the)j(geo)s(detic)g(latitude)e(\(corrected)j(for)e(p)s(olar)f
+(motion\),)i(while)e(the)h(observ)m(ed)427 5693 y(HA)39
+b(and)e(RA)h(are)h(related)f(simply)d(through)j(the)g(lo)s(cal)f
+(apparen)m(t)i(ST.)e Fq(Observe)-5 b(d)48 b FD([)15 b
+Fl(\013;)g(\016)20 b FD(])38 b(or)p eop
+%%Page: 105 107
+105 106 bop 0 52 a Fw(SUN/67.70)3206 b FD(105)427 351
+y([)15 b Fl(h;)g(\016)20 b FD(])32 b(th)m(us)f(means)g(the)g(p)s
+(osition)e(that)j(w)m(ould)e(b)s(e)h(seen)g(b)m(y)g(a)g(p)s(erfect)g
+(equatorial)g(lo)s(cated)h(at)427 464 y(the)25 b(observ)m(er)g(and)f
+(with)g(its)g(p)s(olar)g(axis)g(aligned)f(to)j(the)f(Earth's)g(axis)f
+(of)h(rotation)g(\()p Fq(n.b.)g FD(not)g(to)427 577 y(the)32
+b(refracted)g(p)s(ole\).)44 b(By)32 b(remo)m(ving)f(from)g(the)h
+(observ)m(ed)g(place)f(the)h(e\013ects)h(of)f(atmospheric)427
+690 y(refraction)e(and)g(diurnal)e(ab)s(erration,)h(the)i(geo)s(cen)m
+(tric)g(apparen)m(t)g([)15 b Fl(\013;)g(\016)20 b FD(])31
+b(is)e(obtained.)311 833 y(5.)46 b(F)-8 b(requen)m(tly)g(,)32
+b Fq(me)-5 b(an)38 b FD(rather)30 b(than)g Fq(app)-5
+b(ar)g(ent)49 b FD([)15 b Fl(\013;)g(\016)20 b FD(])31
+b(will)c(b)s(e)j(required,)f(in)g(whic)m(h)g(case)j(further)427
+946 y(transformations)37 b(will)d(b)s(e)j(necessary)-8
+b(.)62 b(The)37 b(sla)p Ft(_)p FD(AMP)f Fq(etc.)h FD(routines)f(will)f
+(con)m(v)m(ert)k(the)e(ap-)427 1059 y(paren)m(t)k([)15
+b Fl(\013;)g(\016)20 b FD(])41 b(pro)s(duced)d(b)m(y)j(the)f(presen)m
+(t)h(routine)e(in)m(to)h(an)h(FK5)f(J2000)i(mean)f(place,)i(b)m(y)427
+1171 y(allo)m(wing)30 b(for)h(the)h(Sun's)e(gra)m(vitational)i(lens)e
+(e\013ect,)j(ann)m(ual)e(ab)s(erration,)g(n)m(utation)g(and)g(pre-)427
+1284 y(cession.)40 b(Should)25 b(FK4)i(B1950)j(co)s(ordinates)d(b)s(e)f
+(required,)h(the)g(routines)f(sla)p Ft(_)p FD(FK524)i
+Fq(etc.)f FD(will)427 1397 y(also)k(ha)m(v)m(e)g(to)g(b)s(e)f(applied.)
+311 1540 y(6.)46 b(T)-8 b(o)31 b(con)m(v)m(ert)h(to)f(apparen)m(t)f([)
+15 b Fl(\013;)g(\016)21 b FD(])30 b(the)h(co)s(ordinates)f(read)g(from)
+g(a)g(real)g(telescop)s(e,)h(corrections)427 1653 y(w)m(ould)43
+b(ha)m(v)m(e)i(to)g(b)s(e)f(applied)e(for)h(enco)s(der)h(zero)h(p)s
+(oin)m(ts,)i(gear)e(and)e(enco)s(der)h(errors,)j(tub)s(e)427
+1766 y(\015exure,)e(the)d(p)s(osition)e(of)j(the)f(rotator)h(axis)f
+(and)g(the)g(p)s(oin)m(ting)e(axis)i(relativ)m(e)g(to)h(it,)i(non-)427
+1879 y(p)s(erp)s(endicularit)m(y)22 b(b)s(et)m(w)m(een)k(the)g(moun)m
+(ting)f(axes,)i(and)e(\014nally)f(for)h(the)h(tilt)f(of)g(the)h(azim)m
+(uth)f(or)427 1992 y(p)s(olar)32 b(axis)g(of)h(the)h(moun)m(ting)e
+(\(with)g(appropriate)g(corrections)h(for)g(moun)m(t)f(\015exures\).)48
+b(Some)427 2105 y(telescop)s(es)22 b(w)m(ould,)g(of)f(course,)i
+(exhibit)d(other)h(prop)s(erties)e(whic)m(h)h(w)m(ould)g(need)h(to)h(b)
+s(e)e(accoun)m(ted)427 2218 y(for)30 b(at)i(the)e(appropriate)f(p)s
+(oin)m(t)h(in)f(the)h(sequence.)311 2360 y(7.)46 b(The)40
+b(star-indep)s(enden)m(t)f(apparen)m(t-to-observ)m(ed-place)k
+(parameters)e(in)e(A)m(OPRMS)i(ma)m(y)g(b)s(e)427 2473
+y(computed)31 b(b)m(y)f(means)g(of)h(the)g(sla)p Ft(_)p
+FD(A)m(OPP)-8 b(A)30 b(routine.)40 b(If)30 b(nothing)g(has)g(c)m
+(hanged)h(signi\014can)m(tly)427 2586 y(except)45 b(the)g(time,)i(the)d
+(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)g(T)45 b(routine)e(ma)m(y)h(b)s(e)g
+(used)f(to)i(p)s(erform)e(the)h(requisite)427 2699 y(partial)29
+b(recomputation)i(of)f(A)m(OPRMS.)311 2842 y(8.)46 b(The)31
+b(azim)m(uths)g Fq(etc.)g FD(used)g(b)m(y)g(the)h(presen)m(t)f(routine)
+g(are)h(with)e(resp)s(ect)h(to)h(the)g(celestial)f(p)s(ole.)427
+2955 y(Corrections)f(from)g(the)h(terrestrial)e(p)s(ole)g(can)i(b)s(e)f
+(computed)g(using)f(sla)p Ft(_)p FD(POLMO.)p 0 3077 3780
+8 v 0 3190 a Fx(SLA)p Fn(_)p Fx(OBS)677 b Fm(Observ)-7
+b(atory)37 b(P)m(arameters)675 b Fx(SLA)p Fn(_)p Fx(OBS)0
+3541 y FB(A)m(CTION)44 b FD(:)39 b(Lo)s(ok)27 b(up)f(an)h(en)m(try)h
+(in)e(a)h(standard)g(list)e(of)j(groundbased)e(observing)g(stations)h
+(parameters.)0 3728 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_OBS)g(\(N,)h(C,)g(NAME,)g(W,)g(P,)g(H\))0 4065
+y FB(GIVEN)e FD(:)277 4236 y Fq(N)668 b FB(I)605 b FD(n)m(um)m(b)s(er)
+29 b(sp)s(ecifying)f(observing)i(station)0 4575 y FB(GIVEN)k(or)h
+(RETURNED)46 b FD(:)277 4746 y Fq(C)671 b FB(C*\(*\))383
+b FD(iden)m(ti\014er)29 b(sp)s(ecifying)f(observing)h(station)0
+5085 y FB(RETURNED)46 b FD(:)277 5231 y Fq(NAME)456 b
+FB(C*\(*\))383 b FD(name)31 b(of)f(sp)s(eci\014ed)f(observing)g
+(station)277 5344 y Fq(W)645 b FB(D)565 b FD(longitude)29
+b(\(radians,)h(w)m(est)h(+v)m(e\))277 5457 y Fq(P)674
+b FB(D)565 b FD(geo)s(detic)31 b(latitude)f(\(radians,)f(north)h(+v)m
+(e\))277 5570 y Fq(H)668 b FB(D)565 b FD(heigh)m(t)30
+b(ab)s(o)m(v)m(e)i(sea)f(lev)m(el)f(\(metres\))p eop
+%%Page: 106 108
+106 107 bop 0 52 a FD(106)0 351 y FB(NOTES)44 b FD(:)311
+542 y(1.)i(Station)26 b(iden)m(ti\014ers)f(C)h(ma)m(y)h(b)s(e)e(up)h
+(to)h(10)g(c)m(haracters)h(long,)f(and)e(station)i(names)f(NAME)h(ma)m
+(y)427 655 y(b)s(e)j(up)f(to)i(40)h(c)m(haracters)f(long.)311
+802 y(2.)46 b(C)23 b(and)f(N)h(are)h Fq(alternative)31
+b FD(w)m(a)m(ys)24 b(of)f(sp)s(ecifying)e(the)i(observing)f(station.)38
+b(The)23 b(C)g(option,)h(whic)m(h)427 915 y(is)k(the)h(most)g
+(generally)e(useful,)h(ma)m(y)h(b)s(e)f(selected)h(b)m(y)g(sp)s
+(ecifying)d(an)i(N)h(v)-5 b(alue)28 b(of)h(zero)g(or)g(less.)427
+1028 y(If)34 b(N)f(is)g(1)h(or)g(more,)h(the)f(parameters)g(of)g(the)g
+(Nth)g(station)g(in)e(the)i(curren)m(tly)f(supp)s(orted)f(list)427
+1141 y(are)c(in)m(terrogated,)h(and)e(the)g(station)h(iden)m(ti\014er)d
+(C)i(is)f(returned)h(as)g(w)m(ell)f(as)i(NAME,)g(W,)g(P)f(and)427
+1254 y(H.)311 1401 y(3.)46 b(If)32 b(the)h(station)f(parameters)h(are)f
+(not)h(a)m(v)-5 b(ailable,)32 b(either)g(b)s(ecause)g(the)h(station)f
+(iden)m(ti\014er)f(C)g(is)427 1514 y(not)d(recognized,)h(or)f(b)s
+(ecause)f(an)h(N)f(v)-5 b(alue)28 b(greater)g(than)g(the)g(n)m(um)m(b)s
+(er)e(of)i(stations)f(supp)s(orted)427 1627 y(is)j(giv)m(en,)g(a)h
+(name)f(of)h(`?')41 b(is)29 b(returned)g(and)h(W,)h(P)f(and)g(H)h(are)f
+(left)h(in)e(their)g(curren)m(t)h(states.)311 1775 y(4.)46
+b(Programs)32 b(can)h(obtain)f(a)g(list)f(of)h(all)f(curren)m(tly)h
+(supp)s(orted)e(stations)i(b)m(y)g(calling)f(the)h(routine)427
+1888 y(rep)s(eatedly)-8 b(,)37 b(with)c(N=1,2,3...)57
+b(When)35 b(NAME=`?')55 b(is)34 b(seen,)j(the)e(list)f(of)h(stations)g
+(has)g(b)s(een)427 2000 y(exhausted.)41 b(The)30 b(stations)g(at)h(the)
+g(time)f(of)g(writing)f(are)i(listed)e(b)s(elo)m(w.)311
+2148 y(5.)46 b(Station)22 b(n)m(um)m(b)s(ers,)h(iden)m(ti\014ers,)f
+(names)g(and)f(other)i(details)e(are)h(sub)5 b(ject)22
+b(to)h(c)m(hange)g(and)e(should)427 2261 y(not)31 b(b)s(e)f(hardwired)d
+(in)m(to)k(application)d(programs.)311 2408 y(6.)46 b(All)29
+b(station)h(iden)m(ti\014ers)e(C)h(are)h(upp)s(ercase)f(only;)h(lo)m(w)
+m(er)g(case)h(c)m(haracters)g(m)m(ust)f(b)s(e)f(con)m(v)m(erted)427
+2521 y(to)j(upp)s(ercase)e(b)m(y)h(the)g(calling)f(program.)42
+b(The)30 b(station)i(names)e(returned)g(ma)m(y)i(con)m(tain)f(b)s(oth)
+427 2634 y(upp)s(er-)44 b(and)h(lo)m(w)m(ercase.)87 b(All)44
+b(c)m(haracters)i(up)f(to)h(the)f(\014rst)g(space)h(are)g(c)m(hec)m(k)m
+(ed;)55 b(th)m(us)45 b(an)427 2747 y(abbreviated)20 b(ID)h(will)d
+(return)h(the)i(parameters)g(for)f(the)h(\014rst)e(station)i(in)e(the)i
+(list)e(whic)m(h)g(matc)m(hes)427 2860 y(the)i(abbreviation)e
+(supplied,)h(and)g(no)g(station)h(in)e(the)i(list)e(will)f(ev)m(er)j
+(con)m(tain)g(em)m(b)s(edded)f(spaces.)427 2973 y(C)30
+b(m)m(ust)g(not)h(ha)m(v)m(e)h(leading)d(spaces.)311
+3121 y(7.)46 b(IMPOR)-8 b(T)g(ANT)28 b({)f(BEW)-10 b(ARE)28
+b(OF)f(THE)g(LONGITUDE)h(SIGN)f(CONVENTION.)f(The)h(lon-)427
+3233 y(gitude)34 b(returned)g(b)m(y)h(sla)p Ft(_)p FD(OBS)e(is)h
+FB(w)m(est-p)s(ositiv)m(e)p FD(,)h(follo)m(wing)f(the)g(pre-1984)j
+Fq(Astr)-5 b(onomic)g(al)427 3346 y(A)n(lmanac)p FD(.)41
+b(Ho)m(w)m(ev)m(er,)31 b(this)c(sign)h(con)m(v)m(en)m(tion)h(is)f
+(left-handed)f(and)h(is)f(the)h(opp)s(osite)g(of)h(the)f(one)427
+3459 y(no)m(w)37 b(used;)i(elsewhere)d(in)g(SLALIB)g(the)g(preferable)g
+(east-p)s(ositiv)m(e)h(con)m(v)m(en)m(tion)h(is)d(used.)59
+b(In)427 3572 y(particular,)36 b(note)g(that)g(for)f(use)g(in)f(sla)p
+Ft(_)p FD(A)m(OP)-8 b(,)36 b(sla)p Ft(_)p FD(A)m(OPP)-8
+b(A)35 b(and)g(sla)p Ft(_)p FD(O)m(AP)g(the)g(sign)g(of)g(the)427
+3685 y(longitude)29 b(m)m(ust)i(b)s(e)e(rev)m(ersed.)311
+3833 y(8.)46 b(Users)40 b(are)g(urged)f(to)h(inform)e(the)i(author)f
+(of)h(an)m(y)g(impro)m(v)m(emen)m(ts)g(they)f(w)m(ould)g(lik)m(e)g(to)h
+(see)427 3946 y(made.)h(F)-8 b(or)31 b(example:)506 4093
+y Fo(\017)46 b FD(t)m(yp)s(ographical)30 b(corrections)506
+4223 y Fo(\017)46 b FD(more)31 b(accurate)h(parameters)506
+4353 y Fo(\017)46 b FD(b)s(etter)31 b(station)f(iden)m(ti\014ers)f(or)h
+(names)506 4484 y Fo(\017)46 b FD(additional)29 b(stations)227
+4674 y(Stations)h(supp)s(orted)f(b)m(y)h(sla)p Ft(_)p
+FD(OBS)f(at)i(the)g(time)f(of)h(writing:)227 4903 y Fq(ID)742
+b(NAME)227 5128 y FD(AA)-8 b(T)652 b(Anglo-Australian)29
+b(3.9m)i(T)-8 b(elescop)s(e)227 5241 y(ANU2.3)527 b(Siding)28
+b(Spring)g(2.3m)227 5354 y(APO3.5)530 b(Apac)m(he)31
+b(P)m(oin)m(t)g(3.5m)227 5467 y(ARECIBO)415 b(Arecib)s(o)30
+b(1000)i(fo)s(ot)227 5580 y(A)-8 b(TCA)586 b(Australia)29
+b(T)-8 b(elescop)s(e)31 b(Compact)g(Arra)m(y)227 5693
+y(BLOEMF)450 b(Blo)s(emfon)m(tein)30 b(1.52m)p eop
+%%Page: 107 109
+107 108 bop 0 52 a Fw(SUN/67.70)3206 b FD(107)227 351
+y(BOSQALEGRE)202 b(Bosque)31 b(Alegre)g(1.54m)227 464
+y(CAMB1MILE)285 b(Cam)m(bridge)30 b(1)g(mile)227 577
+y(CAMB5KM)366 b(Cam)m(bridge)30 b(5)g(km)227 690 y(CA)-8
+b(T)g(ALINA61)278 b(Catalina)30 b(61)h(inc)m(h)227 803
+y(CFHT)587 b(Canada-F)-8 b(rance-Ha)m(w)m(aii)33 b(3.6m)e(T)-8
+b(elescop)s(e)227 916 y(CSO)658 b(Caltec)m(h)31 b(Sub-mm)e(Observ)-5
+b(atory)d(,)31 b(Mauna)f(Kea)227 1029 y(D)m(A)m(O72)554
+b(D)m(A)m(O)32 b(Victoria)e(BC)g(1.85m)227 1142 y(DUNLAP74)364
+b(Da)m(vid)31 b(Dunlap)e(74)i(inc)m(h)227 1255 y(DUPONT)442
+b(Du)30 b(P)m(on)m(t)i(2.5m)f(T)-8 b(elescop)s(e,)31
+b(Las)f(Campanas)227 1367 y(EFFELSBER)m(G)235 b(E\013elsb)s(erg)29
+b(100m)227 1480 y(ESO3.6)547 b(ESO)30 b(3.6m)227 1593
+y(ESONTT)462 b(ESO)30 b(3.5m)h(NTT)227 1706 y(ESOSCHM)394
+b(ESO)30 b(1m)g(Sc)m(hmidt,)f(La)i(Silla)227 1819 y(F)m(CRA)m(O)521
+b(Fiv)m(e)31 b(College)f(Radio)g(Astronom)m(y)h(Obs)227
+1932 y(FLA)m(GSTF61)328 b(USNO)30 b(61)h(inc)m(h)f(astrograph,)h
+(Flagsta\013)227 2045 y(GBV)-10 b(A140)450 b(Green)m(bank)31
+b(140)g(fo)s(ot)227 2158 y(GBV)-10 b(A300)450 b(Green)m(bank)31
+b(300)g(fo)s(ot)227 2271 y(GEMININ)428 b(Gemini)29 b(North)h(8m)227
+2384 y(GEMINIS)445 b(Gemini)29 b(South)h(8m)227 2497
+y(HAR)-10 b(V)g(ARD)391 b(Harv)-5 b(ard)30 b(College)g(Observ)-5
+b(atory)31 b(1.55m)227 2609 y(HPR)m(O)m(V1.52)356 b(Haute)31
+b(Pro)m(v)m(ence)h(1.52m)227 2722 y(HPR)m(O)m(V1.93)356
+b(Haute)31 b(Pro)m(v)m(ence)h(1.93m)227 2835 y(IR)-8
+b(TF)629 b(NASA)31 b(IR)f(T)-8 b(elescop)s(e)30 b(F)-8
+b(acilit)m(y)g(,)31 b(Mauna)g(Kea)227 2948 y(JCMT)584
+b(JCMT)30 b(15m)227 3061 y(JODRELL1)371 b(Jo)s(drell)28
+b(Bank)j(250)h(fo)s(ot)227 3174 y(KECK1)531 b(Kec)m(k)32
+b(10m)e(T)-8 b(elescop)s(e)31 b(1)227 3287 y(KECK2)531
+b(Kec)m(k)32 b(10m)e(T)-8 b(elescop)s(e)31 b(2)227 3400
+y(KISO)620 b(Kiso)30 b(1.05m)h(Sc)m(hmidt,)f(Japan)227
+3513 y(K)m(OSMA3M)377 b(Cologne)31 b(Submillimeter)26
+b(Observ)-5 b(atory)30 b(3m)227 3626 y(K)m(OTT)-8 b(AMIA)331
+b(Kottamia)31 b(74)h(inc)m(h)227 3739 y(KPNO158)439 b(Kitt)30
+b(P)m(eak)i(158)f(inc)m(h)227 3851 y(KPNO36FT)359 b(Kitt)30
+b(P)m(eak)i(36)f(fo)s(ot)227 3964 y(KPNO84)484 b(Kitt)30
+b(P)m(eak)i(84)f(inc)m(h)227 4077 y(KPNO90)484 b(Kitt)30
+b(P)m(eak)i(90)f(inc)m(h)227 4190 y(LICK120)484 b(Lic)m(k)30
+b(120)i(inc)m(h)227 4303 y(LO)m(WELL72)362 b(P)m(erkins)29
+b(72)j(inc)m(h,)d(Lo)m(w)m(ell)227 4416 y(LPO1)611 b(Jacobus)30
+b(Kapteyn)h(1m)f(T)-8 b(elescop)s(e)227 4529 y(LPO2.5)541
+b(Isaac)32 b(Newton)e(2.5m)i(T)-8 b(elescop)s(e)227 4642
+y(LPO4.2)541 b(William)28 b(Hersc)m(hel)j(4.2m)g(T)-8
+b(elescop)s(e)227 4755 y(MA)m(GELLAN1)270 b(Magellan)31
+b(1,)g(6.5m,)g(Las)g(Campanas)227 4868 y(MA)m(GELLAN2)270
+b(Magellan)31 b(2,)g(6.5m,)g(Las)g(Campanas)227 4981
+y(MA)m(UNAK88)333 b(Mauna)31 b(Kea)g(88)g(inc)m(h)227
+5093 y(MCDONLD2.1)248 b(McDonald)31 b(2.1m)227 5206 y(MCDONLD2.7)248
+b(McDonald)31 b(2.7m)227 5319 y(MMT)614 b(MMT,)31 b(Mt)g(Hopkins)227
+5432 y(MOPRA)495 b(A)-8 b(TNF)31 b(Mopra)g(Observ)-5
+b(atory)227 5545 y(MTEKAR)429 b(Mt)31 b(Ek)-5 b(ar)30
+b(1.82m)227 5658 y(MTHOP1.5)381 b(Mt)31 b(Hopkins)e(1.5m)p
+eop
+%%Page: 108 110
+108 109 bop 0 52 a FD(108)227 351 y(MTLEMMON60)183 b(Mt)31
+b(Lemmon)f(60)h(inc)m(h)227 464 y(NOBEY)-8 b(AMA)302
+b(Nob)s(ey)m(ama)32 b(45m)227 577 y(OKA)-8 b(Y)g(AMA)365
+b(Ok)-5 b(a)m(y)m(ama)32 b(1.88m)227 690 y(P)-8 b(ALOMAR200)243
+b(P)m(alomar)31 b(200)h(inc)m(h)227 803 y(P)-8 b(ALOMAR48)288
+b(P)m(alomar)31 b(48-inc)m(h)g(Sc)m(hmidt)227 916 y(P)-8
+b(ALOMAR60)288 b(P)m(alomar)31 b(60)g(inc)m(h)227 1029
+y(P)-8 b(ARKES)473 b(P)m(ark)m(es)32 b(64m)227 1142 y(QUEBEC1.6)338
+b(Queb)s(ec)30 b(1.6m)227 1255 y(SAA)m(O74)501 b(Sutherland)28
+b(74)j(inc)m(h)227 1367 y(SANPM83)424 b(San)30 b(P)m(edro)h(Martir)f
+(83)h(inc)m(h)227 1480 y(ST.ANDREWS)226 b(St)30 b(Andrews)f(Univ)m
+(ersit)m(y)h(Observ)-5 b(atory)227 1593 y(STEW)-10 b(ARD90)290
+b(Stew)m(ard)30 b(90)i(inc)m(h)227 1706 y(STR)m(OMLO74)293
+b(Moun)m(t)31 b(Stromlo)f(74)h(inc)m(h)227 1819 y(SUBAR)m(U)463
+b(Subaru)29 b(8m)227 1932 y(SUGAR)m(GR)m(O)m(VE)191 b(Sugar)30
+b(Gro)m(v)m(e)i(150)g(fo)s(ot)227 2045 y(T)-8 b(A)m(UTNBG)386
+b(T)-8 b(auten)m(burg)30 b(2m)227 2158 y(T)-8 b(A)m(UTSCHM)321
+b(T)-8 b(auten)m(b)s(erg)31 b(1.34m)g(Sc)m(hmidt)227
+2271 y(TIDBINBLA)324 b(Tidbin)m(billa)25 b(64m)227 2384
+y(TOLOLO1.5M)255 b(Cerro)30 b(T)-8 b(ololo)31 b(1.5m)227
+2497 y(TOLOLO4M)325 b(Cerro)30 b(T)-8 b(ololo)31 b(4m)227
+2609 y(UKIR)-8 b(T)549 b(UK)30 b(Infra)g(Red)g(T)-8 b(elescop)s(e)227
+2722 y(UKST)590 b(UK)30 b(1.2m)i(Sc)m(hmidt,)d(Siding)f(Spring)227
+2835 y(USSR6)564 b(USSR)30 b(6m)227 2948 y(USSR600)474
+b(USSR)30 b(600)h(fo)s(ot)227 3061 y(VLA)653 b(V)-8 b(ery)31
+b(Large)g(Arra)m(y)227 3174 y(VL)-8 b(T1)618 b(ESO)30
+b(VL)-8 b(T)30 b(8m,)h(UT1)227 3287 y(VL)-8 b(T2)618
+b(ESO)30 b(VL)-8 b(T)30 b(8m,)h(UT2)227 3400 y(VL)-8
+b(T3)618 b(ESO)30 b(VL)-8 b(T)30 b(8m,)h(UT3)227 3513
+y(VL)-8 b(T4)618 b(ESO)30 b(VL)-8 b(T)30 b(8m,)h(UT4)p
+0 3662 3780 8 v 0 3775 a Fx(SLA)p Fn(_)p Fx(P)-11 b(A)768
+b Fg(h;)20 b(\016)43 b Fm(to)38 b(P)m(arallactic)d(Angle)769
+b Fx(SLA)p Fn(_)p Fx(P)-11 b(A)0 4125 y FB(A)m(CTION)44
+b FD(:)c(Hour)31 b(angle)f(and)g(declination)e(to)j(parallactic)f
+(angle)g(\(double)g(precision\).)0 4313 y FB(CALL)45
+b FD(:)77 b Ft(D)47 b(=)h(sla_PA)e(\(HA,)g(DEC,)h(PHI\))0
+4662 y FB(GIVEN)e FD(:)277 4808 y Fq(HA)600 b FB(D)565
+b FD(hour)30 b(angle)g(in)f(radians)g(\(geo)s(cen)m(tric)j(apparen)m
+(t\))277 4921 y Fq(DEC)540 b FB(D)565 b FD(declination)29
+b(in)g(radians)g(\(geo)s(cen)m(tric)j(apparen)m(t\))277
+5034 y Fq(PHI)571 b FB(D)565 b FD(latitude)30 b(in)f(radians)g(\(geo)s
+(detic\))0 5388 y FB(RETURNED)46 b FD(:)277 5560 y Fq(sla)p
+Ft(_)p Fq(P)-7 b(A)459 b FB(D)565 b FD(parallactic)30
+b(angle)g(\(radians,)g(in)f(the)h(range)h Fo(\006)p Fl(\031)s
+FD(\))p eop
+%%Page: 109 111
+109 110 bop 0 52 a Fw(SUN/67.70)3206 b FD(109)0 351 y
+FB(NOTES)44 b FD(:)311 533 y(1.)i(The)34 b(parallactic)g(angle)h(at)g
+(a)g(p)s(oin)m(t)f(in)f(the)i(sky)f(is)g(the)g(p)s(osition)f(angle)i
+(of)f(the)h(v)m(ertical,)h Fq(i.e.)427 646 y FD(the)29
+b(angle)f(b)s(et)m(w)m(een)g(the)h(direction)d(to)j(the)f(p)s(ole)g
+(and)f(to)i(the)f(zenith.)39 b(In)28 b(precise)f(applications)427
+759 y(care)k(m)m(ust)f(b)s(e)f(tak)m(en)i(only)e(to)h(use)g(geo)s(cen)m
+(tric)h(apparen)m(t)f([)15 b Fl(h;)g(\016)20 b FD(])30
+b(and)f(to)i(consider)d(separately)427 872 y(the)j(e\013ects)h(of)e
+(atmospheric)g(refraction)g(and)g(telescop)s(e)h(moun)m(t)f(errors.)311
+1012 y(2.)46 b(A)m(t)32 b(the)e(p)s(ole)g(a)g(zero)i(result)d(is)g
+(returned.)p 0 1128 3780 8 v 0 1240 a Fx(SLA)p Fn(_)p
+Fx(P)-11 b(A)c(V)281 b Fm(P)m(osition-Angle)35 b(Bet)m(w)m(een)i(Tw)m
+(o)h(Directions)281 b Fx(SLA)p Fn(_)p Fx(P)-11 b(A)c(V)0
+1591 y FB(A)m(CTION)44 b FD(:)66 b(Returns)43 b(the)h(b)s(earing)e(\(p)
+s(osition)f(angle\))j(of)g(one)f(celestial)g(direction)f(with)g(resp)s
+(ect)i(to)227 1704 y(another)31 b(\(single)e(precision\).)0
+1891 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_PAV)d(\(V1,)i(V2\))0
+2218 y FB(GIVEN)e FD(:)277 2364 y Fq(V1)622 b FB(R\(3\))433
+b FD(v)m(ector)32 b(to)f(one)g(p)s(oin)m(t)277 2477 y
+Fq(V2)622 b FB(R\(3\))433 b FD(v)m(ector)32 b(to)f(the)g(other)f(p)s
+(oin)m(t)0 2790 y FB(RETURNED)46 b FD(:)277 2962 y Fq(sla)p
+Ft(_)p Fq(P)-7 b(A)e(V)400 b FB(R)567 b FD(p)s(osition-angle)29
+b(of)i(2nd)e(p)s(oin)m(t)h(with)f(resp)s(ect)h(to)h(1st)0
+3283 y FB(NOTES)44 b FD(:)311 3465 y(1.)i(The)30 b(co)s(ordinate)g
+(frames)h(corresp)s(ond)e(to)i([)15 b Fl(\013;)g(\016)20
+b FD(],)31 b([)p Fl(\025;)15 b(\036)p FD(])31 b Fq(etc.)p
+FD(.)311 3606 y(2.)46 b(The)30 b(result)e(is)h(the)h(b)s(earing)f(\(p)s
+(osition)f(angle\),)j(in)d(radians,)h(of)h(p)s(oin)m(t)f(V2)h(as)g
+(seen)g(from)f(p)s(oin)m(t)427 3718 y(V1.)48 b(It)33
+b(is)f(in)f(the)i(range)g Fo(\006)p Fl(\031)s FD(.)47
+b(The)33 b(sense)f(is)g(suc)m(h)g(that)h(if)f(V2)h(is)f(a)h(small)e
+(distance)h(due)g(east)427 3831 y(of)f(V1)g(the)f(result)g(is)f(ab)s
+(out)h(+)p Fl(\031)s(=)p FD(2.)41 b(Zero)31 b(is)e(returned)g(if)h(the)
+g(t)m(w)m(o)i(p)s(oin)m(ts)d(are)i(coinciden)m(t.)311
+3972 y(3.)46 b(There)30 b(is)g(no)g(requiremen)m(t)f(for)i(either)e(v)m
+(ector)j(to)f(b)s(e)f(of)h(unit)e(length.)311 4112 y(4.)46
+b(The)37 b(routine)g(sla)p Ft(_)p FD(BEAR)g(p)s(erforms)f(an)h(equiv)-5
+b(alen)m(t)37 b(function)f(except)j(that)f(the)g(p)s(oin)m(ts)e(are)427
+4225 y(sp)s(eci\014ed)29 b(in)g(the)i(form)e(of)i(spherical)e(co)s
+(ordinates.)p 0 4340 V 0 4453 a Fx(SLA)p Fn(_)p Fx(PCD)656
+b Fm(Apply)39 b(Radial)e(Distortion)655 b Fx(SLA)p Fn(_)p
+Fx(PCD)0 4804 y FB(A)m(CTION)44 b FD(:)c(Apply)29 b(pincushion/barrel)e
+(distortion)h(to)k(a)e(tangen)m(t-plane)i([)15 b Fl(x;)g(y)j
+FD(].)0 4991 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PCD)g
+(\(DISCO,X,Y\))0 5318 y FB(GIVEN)f FD(:)277 5464 y Fq(DISCO)446
+b FB(D)565 b FD(pincushion/barrel)26 b(distortion)j(co)s(e\016cien)m(t)
+277 5577 y Fq(X,Y)572 b FB(D)565 b FD(tangen)m(t-plane)31
+b([)15 b Fl(x;)g(y)k FD(])p eop
+%%Page: 110 112
+110 111 bop 0 52 a FD(110)0 351 y FB(RETURNED)46 b FD(:)277
+523 y Fq(X,Y)572 b FB(D)565 b FD(distorted)30 b([)15
+b Fl(x;)g(y)k FD(])0 791 y FB(NOTES)44 b FD(:)311 965
+y(1.)i(The)32 b(distortion)e(is)h(of)h(the)g(form)g Fl(\032)c
+FD(=)f Fl(r)s FD(\(1)22 b(+)f Fl(cr)2099 932 y Fu(2)2138
+965 y FD(\),)33 b(where)e Fl(r)k FD(is)c(the)h(radial)e(distance)i
+(from)f(the)427 1078 y(tangen)m(t)g(p)s(oin)m(t,)d Fl(c)h
+FD(is)f(the)h(DISCO)f(argumen)m(t,)i(and)f Fl(\032)g
+FD(is)f(the)h(radial)e(distance)i(in)e(the)i(presence)427
+1191 y(of)i(the)f(distortion.)311 1323 y(2.)46 b(F)-8
+b(or)31 b Fq(pincushion)39 b FD(distortion,)29 b(C)h(is)f(+v)m(e;)i
+(for)g Fq(b)-5 b(arr)g(el)41 b FD(distortion,)29 b(C)h(is)g
+Fo(\000)p FD(v)m(e.)311 1456 y(3.)46 b(F)-8 b(or)37 b(X,Y)g(in)e(units)
+f(of)j(one)f(pro)5 b(jection)36 b(radius)e(\(in)h(the)i(case)g(of)f(a)h
+(photographic)e(plate,)j(the)427 1569 y(fo)s(cal)30 b(length\),)h(the)f
+(follo)m(wing)f(DISCO)h(v)-5 b(alues)29 b(apply:)p 912
+1691 1243 4 v 910 1804 4 113 v 962 1770 a(Geometry)p
+1684 1804 V 423 w(DISCO)p 2153 1804 V 912 1808 1243 4
+v 912 1824 V 910 1937 4 113 v 962 1903 a(astrograph)p
+1684 1937 V 475 w(0.0)p 2153 1937 V 912 1940 1243 4 v
+910 2053 4 113 v 962 2020 a(Sc)m(hmidt)p 1684 2053 V
+470 w Fo(\000)p FD(0.3333)p 2153 2053 V 912 2057 1243
+4 v 910 2170 4 113 v 962 2136 a(AA)-8 b(T)31 b(PF)f(doublet)p
+1684 2170 V 99 w(+147.069)p 2153 2170 V 912 2173 1243
+4 v 910 2286 4 113 v 962 2252 a(AA)-8 b(T)31 b(PF)f(triplet)p
+1684 2286 V 149 w(+178.585)p 2153 2286 V 912 2289 1243
+4 v 910 2402 4 113 v 962 2368 a(AA)-8 b(T)31 b(f/8)p
+1684 2402 V 476 w(+21.20)p 2153 2402 V 912 2405 1243
+4 v 910 2518 4 113 v 962 2484 a(JKT)e(f/8)p 1684 2518
+V 511 w(+14.6)p 2153 2518 V 912 2522 1243 4 v 311 2691
+a(4.)46 b(There)30 b(is)g(a)g(companion)g(routine,)g(sla)p
+Ft(_)p FD(UNPCD,)g(whic)m(h)f(p)s(erforms)g(the)h(in)m(v)m(erse)g(op)s
+(eration.)p 0 2783 3780 8 v 0 2896 a Fx(SLA)p Fn(_)p
+Fx(PD)l(A2H)436 b Fm(H.A.)38 b(for)g(a)g(Giv)m(en)g(Azim)m(uth)435
+b Fx(SLA)p Fn(_)p Fx(PD)l(A2H)0 3247 y FB(A)m(CTION)44
+b FD(:)c(Hour)31 b(Angle)f(corresp)s(onding)e(to)j(a)g(giv)m(en)f(azim)
+m(uth)g(\(double)g(precision\).)0 3434 y FB(CALL)45 b
+FD(:)77 b Ft(CALL)46 b(sla_PDA2H)g(\(P,)h(D,)g(A,)g(H1,)g(J1,)g(H2,)g
+(J2\))0 3730 y FB(GIVEN)e FD(:)277 3876 y Fq(P)674 b
+FB(D)565 b FD(latitude)277 3989 y Fq(D)667 b FB(D)565
+b FD(declination)277 4102 y Fq(A)668 b FB(D)565 b FD(azim)m(uth)0
+4361 y FB(RETURNED)46 b FD(:)277 4508 y Fq(H1)622 b FB(D)565
+b FD(hour)30 b(angle:)40 b(\014rst)30 b(solution)f(if)g(an)m(y)277
+4620 y Fq(J1)642 b FB(I)605 b FD(\015ag:)41 b(0)31 b(=)f(solution)f(1)i
+(is)e(v)-5 b(alid)277 4733 y Fq(H2)622 b FB(D)565 b FD(hour)30
+b(angle:)40 b(second)31 b(solution)e(if)g(an)m(y)277
+4846 y Fq(J2)642 b FB(I)605 b FD(\015ag:)41 b(0)31 b(=)f(solution)f(2)i
+(is)e(v)-5 b(alid)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p
+Fx(PDQ2H)543 b Fm(H.A.)38 b(for)f(a)i(Giv)m(en)f(P)-10
+b(.A.)543 b Fx(SLA)p Fn(_)p Fx(PDQ2H)0 5418 y FB(A)m(CTION)44
+b FD(:)c(Hour)31 b(Angle)f(corresp)s(onding)e(to)j(a)g(giv)m(en)f
+(parallactic)g(angle)g(\(double)g(precision\).)0 5606
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PDQ2H)g(\(P,)h(D,)g(Q,)g(H1,)
+g(J1,)g(H2,)g(J2\))p eop
+%%Page: 111 113
+111 112 bop 0 52 a Fw(SUN/67.70)3206 b FD(111)0 351 y
+FB(GIVEN)45 b FD(:)277 497 y Fq(P)674 b FB(D)565 b FD(latitude)277
+610 y Fq(D)667 b FB(D)565 b FD(declination)277 723 y
+Fq(Q)666 b FB(D)565 b FD(azim)m(uth)0 1088 y FB(RETURNED)46
+b FD(:)277 1234 y Fq(H1)622 b FB(D)565 b FD(hour)30 b(angle:)40
+b(\014rst)30 b(solution)f(if)g(an)m(y)277 1347 y Fq(J1)642
+b FB(I)605 b FD(\015ag:)41 b(0)31 b(=)f(solution)f(1)i(is)e(v)-5
+b(alid)277 1460 y Fq(H2)622 b FB(D)565 b FD(hour)30 b(angle:)40
+b(second)31 b(solution)e(if)g(an)m(y)277 1573 y Fq(J2)642
+b FB(I)605 b FD(\015ag:)41 b(0)31 b(=)f(solution)f(2)i(is)e(v)-5
+b(alid)p 0 1726 3780 8 v 0 1839 a Fx(SLA)p Fn(_)p Fx(PERMUT)502
+b Fm(Next)38 b(P)m(erm)m(utation)499 b Fx(SLA)p Fn(_)p
+Fx(PERMUT)0 2189 y FB(A)m(CTION)44 b FD(:)c(Generate)32
+b(the)f(next)f(p)s(erm)m(utation)g(of)g(a)h(sp)s(eci\014ed)e(n)m(um)m
+(b)s(er)g(of)h(items.)0 2377 y FB(CALL)45 b FD(:)77 b
+Ft(CALL)46 b(sla_PERMUT)f(\(N,)i(ISTATE,)f(IORDER,)g(J\))0
+2734 y FB(GIVEN)f FD(:)277 2880 y Fq(N)668 b FB(I)605
+b FD(n)m(um)m(b)s(er)29 b(of)i(items:)40 b(there)31 b(will)c(b)s(e)j
+(N!)h(p)s(erm)m(utations)277 2993 y Fq(IST)-7 b(A)g(TE)404
+b FB(I\(N\))441 b FD(state,)32 b(IST)-8 b(A)g(TE\(1\)=)26
+b Fo(\000)p FD(1)k(to)h(initialize)0 3357 y FB(RETURNED)46
+b FD(:)277 3504 y Fq(IST)-7 b(A)g(TE)404 b FB(I\(N\))441
+b FD(state,)32 b(up)s(dated)d(ready)h(for)h(next)f(time)277
+3616 y Fq(IORDER)368 b FB(I\(N\))441 b FD(next)31 b(p)s(erm)m(utation)e
+(of)i(n)m(um)m(b)s(ers)e(1,2,.)16 b(.)g(.)f(,N)277 3729
+y Fq(J)688 b FB(I)605 b FD(status:)1825 3842 y Fo(\000)p
+FD(1)30 b(=)g(illegal)f(N)h(\(zero)i(or)e(less)g(is)f(illegal\))1898
+3955 y(0)h(=)g(OK)1825 4068 y(+1)g(=)g(no)h(more)f(p)s(erm)m(utations)f
+(a)m(v)-5 b(ailable)0 4433 y FB(NOTES)44 b FD(:)311 4625
+y(1.)i(This)26 b(routine)h(returns,)g(in)g(the)h(IORDER)f(arra)m(y)-8
+b(,)29 b(the)f(in)m(tegers)g(1)g(to)h(N)f(inclusiv)m(e,)e(in)g(an)i
+(order)427 4738 y(that)f(dep)s(ends)d(on)i(the)h(curren)m(t)f(con)m
+(ten)m(ts)i(of)e(the)g(IST)-8 b(A)g(TE)26 b(arra)m(y)-8
+b(.)40 b(Before)27 b(calling)e(the)h(routine)427 4851
+y(for)37 b(the)g(\014rst)f(time,)i(the)f(caller)g(m)m(ust)f(set)i(the)f
+(\014rst)f(elemen)m(t)h(of)g(the)g(IST)-8 b(A)g(TE)36
+b(arra)m(y)i(to)f Fo(\000)p FD(1)427 4964 y(\(an)m(y)31
+b(negativ)m(e)h(n)m(um)m(b)s(er)d(will)f(do\))i(to)h(cause)g(the)g(IST)
+-8 b(A)g(TE)30 b(arra)m(y)h(to)g(b)s(e)f(fully)e(initialized.)311
+5112 y(2.)46 b(The)30 b(\014rst)g(p)s(erm)m(utation)f(to)i(b)s(e)f
+(generated)h(is:)597 5261 y(IORDER\(1\)=N,)h(IORDER\(2\)=N-1,)g(...,)f
+(IORDER\(N\)=1)427 5409 y(This)i(is)h(also)g(the)h(p)s(erm)m(utation)f
+(returned)g(for)g(the)h(\\\014nished")e(\(J=1\))i(case.)55
+b(The)34 b(\014nal)f(p)s(er-)427 5522 y(m)m(utation)e(to)g(b)s(e)f
+(generated)h(is:)597 5670 y(IORDER\(1\)=1,)h(IORDER\(2\)=2,)f(...,)h
+(IORDER\(N\)=N)p eop
+%%Page: 112 114
+112 113 bop 0 52 a FD(112)311 351 y(3.)46 b(If)20 b(the)h
+(\\\014nished")e(\(J=1\))h(status)h(is)f(ignored,)h(the)g(routine)e
+(con)m(tin)m(ues)i(to)g(deliv)m(er)e(p)s(erm)m(utations,)427
+464 y(the)31 b(pattern)f(rep)s(eating)g(ev)m(ery)h(N!)46
+b(calls.)p 0 627 3780 8 v 0 740 a Fx(SLA)p Fn(_)p Fx(PER)-11
+b(TEL)322 b Fm(P)m(erturb)s(ed)37 b(Orbital)g(Elemen)m(ts)321
+b Fx(SLA)p Fn(_)p Fx(PER)-11 b(TEL)0 1090 y FB(A)m(CTION)44
+b FD(:)61 b(Up)s(date)41 b(the)g(osculating)f(elemen)m(ts)h(of)g(an)g
+(asteroid)g(or)g(comet)h(b)m(y)e(applying)f(planetary)227
+1203 y(p)s(erturbations.)0 1391 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_PERTEL)f(\(JFORM,)h(DATE0,)g(DATE1,)1239
+1504 y(EPOCH0,)g(ORBI0,)g(ANODE0,)g(PERIH0,)g(AORQ0,)g(E0,)h(AM0,)1239
+1617 y(EPOCH1,)f(ORBI1,)g(ANODE1,)g(PERIH1,)g(AORQ1,)g(E1,)h(AM1,)1239
+1730 y(JSTAT\))0 2120 y FB(GIVEN)34 b(\(format)g(and)g(dates\))45
+b FD(:)277 2289 y Fq(JF)n(ORM)413 b FB(I)605 b FD(c)m(hoice)31
+b(of)g(elemen)m(t)g(set)g(\(2)g(or)f(3;)h(Note)h(1\))277
+2402 y Fq(D)n(A)-7 b(TE0)435 b FB(D)565 b FD(date)31
+b(of)g(osculation)f(\(TT)f(MJD\))j(for)e(the)g(giv)m(en)1825
+2514 y(elemen)m(ts)277 2627 y Fq(D)n(A)-7 b(TE1)435 b
+FB(D)565 b FD(date)31 b(of)g(osculation)f(\(TT)f(MJD\))j(for)e(the)g
+(up)s(dated)1825 2740 y(elemen)m(ts)0 3176 y FB(GIVEN)k(\(the)g(unp)s
+(erturb)s(ed)h(elemen)m(ts\))44 b FD(:)277 3344 y Fq(EPOCH0)363
+b FB(D)565 b FD(ep)s(o)s(c)m(h)28 b(of)h(the)f(giv)m(en)g(elemen)m(t)h
+(set)g(\()p Fl(t)2949 3358 y Fu(0)3017 3344 y FD(or)f
+Fl(T)13 b FD(,)29 b(TT)e(MJD;)1825 3457 y(Note)32 b(2\))277
+3570 y Fq(ORBI0)455 b FB(D)565 b FD(inclination)28 b(\()p
+Fl(i)p FD(,)j(radians\))277 3683 y Fq(ANODE0)353 b FB(D)565
+b FD(longitude)29 b(of)i(the)f(ascending)g(no)s(de)g(\(\012,)g
+(radians\))277 3796 y Fq(PERIH0)397 b FB(D)565 b FD(argumen)m(t)31
+b(of)g(p)s(erihelion)26 b(\()p Fl(!)s FD(,)31 b(radians\))277
+3909 y Fq(A)n(OR)n(Q0)420 b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s
+(erihelion)d(distance)k(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277
+4022 y Fq(E0)628 b FB(D)565 b FD(eccen)m(tricit)m(y)32
+b(\()p Fl(e)p FD(\))277 4135 y Fq(AM0)540 b FB(D)565
+b FD(mean)31 b(anomaly)f(\()p Fl(M)10 b FD(,)31 b(radians,)e(JF)m
+(ORM=2)i(only\))0 4570 y FB(RETURNED)k(\(the)f(up)s(dated)h(elemen)m
+(ts\))44 b FD(:)277 4739 y Fq(EPOCH1)363 b FB(D)565 b
+FD(ep)s(o)s(c)m(h)30 b(of)h(the)f(up)s(dated)f(elemen)m(t)i(set)g(\()p
+Fl(t)3080 4753 y Fu(0)3150 4739 y FD(or)f Fl(T)13 b FD(,)1825
+4852 y(TT)29 b(MJD;)i(Note)h(2\))277 4965 y Fq(ORBI1)455
+b FB(D)565 b FD(inclination)28 b(\()p Fl(i)p FD(,)j(radians\))277
+5078 y Fq(ANODE1)353 b FB(D)565 b FD(longitude)29 b(of)i(the)f
+(ascending)g(no)s(de)g(\(\012,)g(radians\))277 5190 y
+Fq(PERIH1)397 b FB(D)565 b FD(argumen)m(t)31 b(of)g(p)s(erihelion)26
+b(\()p Fl(!)s FD(,)31 b(radians\))277 5303 y Fq(A)n(OR)n(Q1)420
+b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s(erihelion)d(distance)k
+(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277 5416 y
+Fq(E1)628 b FB(D)565 b FD(eccen)m(tricit)m(y)32 b(\()p
+Fl(e)p FD(\))277 5529 y Fq(AM1)540 b FB(D)565 b FD(mean)31
+b(anomaly)f(\()p Fl(M)10 b FD(,)31 b(radians,)e(JF)m(ORM=2)i(only\))p
+eop
+%%Page: 113 115
+113 114 bop 0 52 a Fw(SUN/67.70)3206 b FD(113)0 351 y
+FB(RETURNED)35 b(\(status)f(\015ag\))46 b FD(:)277 520
+y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1704
+633 y(+102)31 b(=)f(w)m(arning,)f(distan)m(t)i(ep)s(o)s(c)m(h)1704
+746 y(+101)g(=)f(w)m(arning,)f(large)i(timespan)e(\()p
+Fl(>)d FD(100)31 b(y)m(ears\))1495 859 y(+1)f(to)h(+10)g(=)f(coinciden)
+m(t)g(with)f(ma)5 b(jor)30 b(planet)g(\(Note)i(6\))1866
+972 y(0)e(=)h(OK)1798 1085 y Fo(\000)p FD(1)f(=)g(illegal)f(JF)m(ORM)
+1798 1197 y Fo(\000)p FD(2)h(=)g(illegal)f(E0)1798 1310
+y Fo(\000)p FD(3)h(=)g(illegal)f(A)m(OR)m(Q0)1798 1423
+y Fo(\000)p FD(4)h(=)g(in)m(ternal)f(error)1798 1536
+y Fo(\000)p FD(5)h(=)g(n)m(umerical)f(error)0 1886 y
+FB(NOTES)44 b FD(:)311 2073 y(1.)i(Tw)m(o)31 b(di\013eren)m(t)f(elemen)
+m(t-format)h(options)f(are)h(supp)s(orted,)d(as)j(follo)m(ws.)427
+2315 y(JF)m(ORM=2,)g(suitable)e(for)i(minor)d(planets:)602
+2506 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)f
+Fl(t)1910 2520 y Fu(0)1980 2506 y FD(\(TT)g(MJD\))602
+2619 y(ORBINC)45 b(=)55 b(inclination)27 b Fl(i)k FD(\(radians\))602
+2732 y(ANODE)76 b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)
+f(\012)h(\(radians\))602 2845 y(PERIH)122 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 2957
+y(A)m(OR)m(Q)143 b(=)55 b(mean)30 b(distance)g Fl(a)h
+FD(\(A)m(U\))602 3070 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h(<)f FD(1\))602
+3183 y(A)m(ORL)154 b(=)55 b(mean)30 b(anomaly)h Fl(M)40
+b FD(\(radians\))427 3374 y(JF)m(ORM=3,)31 b(suitable)e(for)i(comets:)
+602 3565 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(p)s(erihelion)c
+Fl(T)43 b FD(\(TT)30 b(MJD\))602 3678 y(ORBINC)45 b(=)55
+b(inclination)27 b Fl(i)k FD(\(radians\))602 3791 y(ANODE)76
+b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f(\012)h
+(\(radians\))602 3904 y(PERIH)122 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 4017
+y(A)m(OR)m(Q)143 b(=)55 b(p)s(erihelion)27 b(distance)j
+Fl(q)j FD(\(A)m(U\))602 4130 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h Fo(\024)f FD(10\))311
+4321 y(2.)46 b(D)m(A)-8 b(TE0,)27 b(D)m(A)-8 b(TE1,)26
+b(EPOCH0)d(and)g(EPOCH1)g(are)h(all)f(instan)m(ts)g(of)g(time)g(in)g
+(the)g(TT)g(time)g(scale)427 4433 y(\(formerly)e(Ephemeris)f(Time,)j
+(ET\),)f(expressed)f(as)h(Mo)s(di\014ed)e(Julian)g(Dates)j(\(JD)p
+Fo(\000)p FD(2400000.5\).)506 4579 y Fo(\017)46 b FD(D)m(A)-8
+b(TE0)33 b(is)d(the)h(instan)m(t)g(at)h(whic)m(h)e(the)i(giv)m(en)f(\()
+p Fq(i.e.)g FD(unp)s(erturb)s(ed\))d(osculating)i(elemen)m(ts)597
+4692 y(are)h(correct.)506 4821 y Fo(\017)46 b FD(D)m(A)-8
+b(TE1)43 b(is)e(the)h(sp)s(eci\014ed)e(instan)m(t)h(at)h(whic)m(h)f
+(the)h(up)s(dated)e(osculating)h(elemen)m(ts)h(are)597
+4934 y(correct.)506 5063 y Fo(\017)k FD(EPOCH0)33 b(and)g(EPOCH1)g
+(will)d(b)s(e)j(the)g(same)h(as)f(D)m(A)-8 b(TE0)35 b(and)e(D)m(A)-8
+b(TE1)34 b(\(resp)s(ectiv)m(ely\))597 5176 y(for)k(the)g(JF)m(ORM=2)g
+(case,)j(normally)36 b(used)h(for)g(minor)f(planets.)62
+b(F)-8 b(or)39 b(the)f(JF)m(ORM=3)597 5289 y(case,)27
+b(the)d(t)m(w)m(o)i(ep)s(o)s(c)m(hs)e(will)d(refer)j(to)h(p)s
+(erihelion)c(passage)k(and)f(so)g(will)e(not,)k(in)c(general,)k(b)s(e)
+597 5402 y(the)k(same)f(as)g(D)m(A)-8 b(TE0)31 b(and/or)e(D)m(A)-8
+b(TE1)30 b(though)f(they)g(ma)m(y)h(b)s(e)e(similar)f(to)j(one)f
+(another.)311 5547 y(3.)46 b(The)30 b(elemen)m(ts)h(are)g(with)e(resp)s
+(ect)h(to)h(the)g(J2000)h(ecliptic)d(and)g(mean)i(equino)m(x.)311
+5693 y(4.)46 b(Un)m(used)30 b(elemen)m(ts)h(\(AM0)g(and)f(AM1)h(for)g
+(JF)m(ORM=3\))g(are)g(not)f(accessed.)p eop
+%%Page: 114 116
+114 115 bop 0 52 a FD(114)311 351 y(5.)46 b(See)31 b(the)f(sla)p
+Ft(_)p FD(PER)-8 b(TUE)30 b(routine)f(for)h(details)g(of)g(the)h
+(algorithm)e(used.)311 484 y(6.)46 b(This)31 b(routine)h(is)g(not)i(in)
+m(tended)d(to)j(b)s(e)f(used)f(for)g(ma)5 b(jor)33 b(planets,)h(whic)m
+(h)d(is)h(wh)m(y)h(JF)m(ORM=1)427 597 y(is)k(not)h(a)m(v)-5
+b(ailable)38 b(and)f(wh)m(y)g(there)h(is)f(no)h(opp)s(ortunit)m(y)e(to)
+j(sp)s(ecify)d(either)i(the)g(longitude)e(of)427 710
+y(p)s(erihelion)g(or)i(the)h(daily)f(motion.)65 b(Ho)m(w)m(ev)m(er,)44
+b(if)37 b(JF)m(ORM=2)j(elemen)m(ts)f(are)g(someho)m(w)g(ob-)427
+823 y(tained)27 b(for)f(a)h(ma)5 b(jor)27 b(planet)g(and)f(supplied)e
+(to)j(the)g(routine,)g(sensible)e(results)h(will,)f(in)g(fact,)k(b)s(e)
+427 935 y(pro)s(duced.)43 b(This)30 b(happ)s(ens)g(b)s(ecause)h(the)h
+(sla)p Ft(_)p FD(PER)-8 b(TUE)30 b(routine)h(that)h(is)f(called)g(to)h
+(p)s(erform)427 1048 y(the)e(calculations)e(c)m(hec)m(ks)i(the)g
+(separation)f(b)s(et)m(w)m(een)g(the)h(b)s(o)s(dy)d(and)i(eac)m(h)h(of)
+f(the)h(planets)e(and)427 1161 y(in)m(terprets)40 b(a)h(suspiciously)d
+(small)h(v)-5 b(alue)40 b(\(0.001)j(A)m(U\))f(as)f(an)f(attempt)i(to)f
+(apply)f(it)g(to)h(the)427 1274 y(planet)33 b(concerned.)50
+b(If)33 b(this)f(condition)g(is)g(detected,)k(the)d(con)m(tribution)f
+(from)h(that)h(planet)e(is)427 1387 y(ignored,)h(and)f(the)h(status)g
+(is)f(set)h(to)h(the)f(planet)f(n)m(um)m(b)s(er)g(\(1{10)i(=)f(Mercury)
+-8 b(,)34 b(V)-8 b(en)m(us,)34 b(EMB,)427 1500 y(Mars,)d(Jupiter,)e
+(Saturn,)g(Uran)m(us,)i(Neptune,)f(Earth,)g(Mo)s(on\))h(as)g(a)g(w)m
+(arning.)0 1767 y FB(REFERENCE)44 b FD(:)55 b(Sterne,)40
+b(Theo)s(dore)d(E.,)j Fq(A)n(n)e(Intr)-5 b(o)g(duction)42
+b(to)e(Celestial)g(Me)-5 b(chanics,)40 b FD(In)m(terscience)227
+1880 y(Publishers,)27 b(1960.)43 b(Section)30 b(6.7,)i(p199.)p
+0 1972 3780 8 v 0 2084 a Fx(SLA)p Fn(_)p Fx(PER)-11 b(TUE)246
+b Fm(P)m(erturb)s(ed)38 b(Univ)m(ersal)e(Elemen)m(ts)244
+b Fx(SLA)p Fn(_)p Fx(PER)-11 b(TUE)0 2435 y FB(A)m(CTION)44
+b FD(:)68 b(Up)s(date)44 b(the)h(univ)m(ersal)d(elemen)m(ts)j(of)g(an)f
+(asteroid)g(or)g(comet)i(b)m(y)e(applying)e(planetary)227
+2548 y(p)s(erturbations.)0 2735 y FB(CALL)j FD(:)77 b
+Ft(CALL)46 b(sla_PERTUE)f(\(DATE,)h(U,)i(JSTAT\))0 3031
+y FB(GIVEN)d FD(:)277 3202 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(\014nal)29 b(ep)s(o)s(c)m(h)h(\(TT)g(MJD\))h(for)g(the)f(up)s
+(dated)f(elemen)m(ts)0 3469 y FB(GIVEN)34 b(and)h(RETURNED)46
+b FD(:)277 3615 y Fq(U)668 b FB(D\(13\))379 b FD(univ)m(ersal)29
+b(elemen)m(ts)h(\(up)s(dated)g(in)f(place\))537 3728
+y(\(1\))1006 b(com)m(bined)30 b(mass)g(\()p Fl(M)h FD(+)20
+b Fl(m)p FD(\))537 3841 y(\(2\))1006 b(total)31 b(energy)g(of)g(the)f
+(orbit)g(\()p Fl(\013)p FD(\))537 3954 y(\(3\))1006 b(reference)31
+b(\(osculating\))f(ep)s(o)s(c)m(h)h(\()p Fl(t)2869 3968
+y Fu(0)2908 3954 y FD(\))499 4067 y(\(4-6\))969 b(p)s(osition)29
+b(at)i(reference)g(ep)s(o)s(c)m(h)f(\()p FB(r)2836 4081
+y Fu(0)2876 4067 y FD(\))499 4180 y(\(7-9\))969 b(v)m(elo)s(cit)m(y)31
+b(at)g(reference)g(ep)s(o)s(c)m(h)f(\()p FB(v)2837 4194
+y Fu(0)2877 4180 y FD(\))514 4293 y(\(10\))984 b(helio)s(cen)m(tric)29
+b(distance)h(at)h(reference)g(ep)s(o)s(c)m(h)514 4405
+y(\(11\))984 b FB(r)1701 4419 y Fu(0)1741 4405 y Fl(:)p
+FB(v)1821 4419 y Fe(0)514 4518 y FD(\(12\))g(date)31
+b(\()p Fl(t)p FD(\))514 4631 y(\(13\))984 b(univ)m(ersal)29
+b(eccen)m(tric)i(anomaly)f(\()p Fl( )s FD(\))i(of)e(date,)i(appro)m(x)0
+4890 y FB(RETURNED)46 b FD(:)277 5036 y Fq(JST)-7 b(A)g(T)453
+b FB(I)605 b FD(status:)1704 5149 y(+102)31 b(=)f(w)m(arning,)f(distan)
+m(t)i(ep)s(o)s(c)m(h)1704 5262 y(+101)g(=)f(w)m(arning,)f(large)i
+(timespan)e(\()p Fl(>)d FD(100)31 b(y)m(ears\))1495 5374
+y(+1)f(to)h(+10)g(=)f(coinciden)m(t)g(with)f(ma)5 b(jor)30
+b(planet)g(\(Note)i(5\))1866 5487 y(0)e(=)h(OK)1798 5600
+y Fo(\000)p FD(1)f(=)g(n)m(umerical)f(error)p eop
+%%Page: 115 117
+115 116 bop 0 52 a Fw(SUN/67.70)3206 b FD(115)0 351 y
+FB(NOTES)44 b FD(:)311 535 y(1.)i(The)40 b(\\univ)m(ersal")f(elemen)m
+(ts)h(are)g(those)h(whic)m(h)d(de\014ne)h(the)h(orbit)f(for)h(the)g
+(purp)s(oses)e(of)i(the)427 648 y(metho)s(d)26 b(of)g(univ)m(ersal)f(v)
+-5 b(ariables)25 b(\(see)i(reference)f(2\).)41 b(They)25
+b(consist)h(of)g(the)h(com)m(bined)e(mass)h(of)427 761
+y(the)33 b(t)m(w)m(o)h(b)s(o)s(dies,)e(an)g(ep)s(o)s(c)m(h,)h(and)f
+(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m(y)h(v)m(ectors)h
+(\(arbitrary)e(reference)427 874 y(frame\))j(at)g(that)g(ep)s(o)s(c)m
+(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)e(also)j(v)
+-5 b(arious)33 b(quan)m(tities)427 987 y(that)i(can,)g(in)d(fact,)k(b)s
+(e)d(deriv)m(ed)f(from)i(the)f(other)h(information.)49
+b(This)32 b(approac)m(h)i(is)f(tak)m(en)i(to)427 1100
+y(a)m(v)m(oiding)d(unnecessary)f(computation)h(and)g(loss)f(of)h
+(accuracy)-8 b(.)48 b(The)31 b(supplemen)m(tary)g(quan)m(ti-)427
+1213 y(ties)22 b(are)h(\(i\))f Fl(\013)p FD(,)i(whic)m(h)d(is)g(prop)s
+(ortional)f(to)j(the)g(total)g(energy)f(of)h(the)f(orbit,)h(\(ii\))e
+(the)i(helio)s(cen)m(tric)427 1326 y(distance)35 b(at)g(ep)s(o)s(c)m
+(h,)h(\(iii\))d(the)i(out)m(w)m(ards)g(comp)s(onen)m(t)g(of)g(the)g(v)m
+(elo)s(cit)m(y)g(at)h(the)f(giv)m(en)f(ep)s(o)s(c)m(h,)427
+1439 y(\(iv\))29 b(an)f(estimate)h(of)g Fl( )s FD(,)h(the)e(\\univ)m
+(ersal)g(eccen)m(tric)h(anomaly")g(at)g(a)g(giv)m(en)g(date)g(and)f
+(\(v\))h(that)427 1552 y(date.)311 1726 y(2.)46 b(The)30
+b(univ)m(ersal)f(elemen)m(ts)h(are)h(with)e(resp)s(ect)i(to)g(the)f
+(J2000)i(equator)f(and)f(equino)m(x.)311 1900 y(3.)46
+b(The)30 b(ep)s(o)s(c)m(hs)g(D)m(A)-8 b(TE,)32 b(U\(3\))f(and)f
+(U\(12\))i(are)f(all)e(Mo)s(di\014ed)g(Julian)f(Dates)k(\(JD)p
+Fo(\000)p FD(2400000.5\).)311 2074 y(4.)46 b(The)30 b(algorithm)g(is)g
+(a)g(simpli\014ed)d(form)j(of)h(Enc)m(k)m(e's)h(metho)s(d.)41
+b(It)30 b(tak)m(es)i(as)f(a)g(basis)e(the)i(unp)s(er-)427
+2187 y(turb)s(ed)i(motion)h(of)h(the)f(b)s(o)s(dy)-8
+b(,)35 b(and)f(n)m(umerically)e(in)m(tegrates)k(the)e(p)s(erturbing)e
+(accelerations)427 2300 y(from)i(the)h(ma)5 b(jor)35
+b(planets.)52 b(The)34 b(expression)f(used)h(is)f(essen)m(tially)h
+(Sterne's)g(6.7-2)j(\(reference)427 2413 y(1\).)57 b(Ev)m(erhart)35
+b(&)g(Pitkin)e(\(reference)k(2\))f(suggest)g(rectifying)e(the)i(orbit)e
+(at)i(eac)m(h)g(in)m(tegration)427 2526 y(step)i(b)m(y)g(propagating)g
+(the)g(new)g(p)s(erturb)s(ed)d(p)s(osition)h(and)i(v)m(elo)s(cit)m(y)g
+(as)h(the)f(new)f(univ)m(ersal)427 2639 y(v)-5 b(ariables.)66
+b(In)38 b(the)h(presen)m(t)h(routine)e(the)h(orbit)f(is)g(recti\014ed)h
+(less)f(frequen)m(tly)g(than)h(this,)i(in)427 2751 y(order)31
+b(to)g(gain)f(a)i(sligh)m(t)d(sp)s(eed)h(adv)-5 b(an)m(tage.)44
+b(Ho)m(w)m(ev)m(er,)33 b(the)e(recti\014cation)g(is)f(done)g(directly)g
+(in)427 2864 y(terms)g(of)f(p)s(osition)f(and)h(v)m(elo)s(cit)m(y)-8
+b(,)31 b(as)e(suggested)i(b)m(y)e(Ev)m(erhart)h(&)f(Pitkin,)f(b)m
+(ypassing)g(the)i(use)427 2977 y(of)h(con)m(v)m(en)m(tional)g(orbital)e
+(elemen)m(ts.)427 3137 y(The)34 b Fl(f)10 b FD(\()p Fl(q)s
+FD(\))34 b(part)h(of)f(the)h(full)d(Enc)m(k)m(e)k(metho)s(d)e(is)f(not)
+i(used.)52 b(The)34 b(purp)s(ose)f(of)i(this)e(part)h(is)g(to)427
+3249 y(a)m(v)m(oid)21 b(subtracting)f(t)m(w)m(o)i(nearly)e(equal)g
+(quan)m(tities)h(when)e(calculating)h(the)h(\\indirect)e(mem)m(b)s
+(er",)427 3362 y(whic)m(h)34 b(tak)m(es)j(accoun)m(t)f(of)g(the)f
+(small)f(c)m(hange)i(in)e(the)h(Sun's)f(attraction)i(due)f(to)h(the)f
+(sligh)m(tly)427 3475 y(displaced)k(p)s(osition)g(of)i(the)h(p)s
+(erturb)s(ed)c(b)s(o)s(dy)-8 b(.)71 b(A)41 b(simpler,)h(direct)e
+(calculation)g(in)g(double)427 3588 y(precision)29 b(pro)m(v)m(es)i(to)
+g(b)s(e)f(faster)g(and)g(not)h(signi\014can)m(tly)d(less)i(accurate.)
+427 3747 y(Apart)g(from)f(emplo)m(ying)f(a)i(v)-5 b(ariable)28
+b(timestep,)h(and)g(o)s(ccasionally)g(\\rectifying)f(the)i(orbit")f(to)
+427 3860 y(k)m(eep)38 b(the)g(indirect)e(mem)m(b)s(er)g(small,)i(the)g
+(in)m(tegration)f(is)g(done)g(in)f(a)i(fairly)e(straigh)m(tforw)m(ard)
+427 3973 y(w)m(a)m(y)-8 b(.)48 b(The)32 b(acceleration)h(estimated)g
+(for)f(the)g(middle)e(of)i(the)h(timestep)f(is)f(assumed)h(to)h(apply)
+427 4086 y(throughout)c(that)g(timestep;)g(it)g(is)f(also)g(used)g(in)g
+(the)h(extrap)s(olation)f(of)h(the)g(p)s(erturbations)e(to)427
+4199 y(the)33 b(middle)d(of)j(the)g(next)g(timestep,)g(to)g(predict)f
+(the)h(new)f(disturb)s(ed)d(p)s(osition.)46 b(There)32
+b(is)g(no)427 4312 y(iteration)e(within)e(a)j(timestep.)427
+4471 y(Measures)24 b(are)h(tak)m(en)f(to)h(reac)m(h)g(a)f(compromise)f
+(b)s(et)m(w)m(een)h(execution)g(time)g(and)f(accuracy)-8
+b(.)40 b(The)427 4584 y(starting-p)s(oin)m(t)29 b(is)f(the)i(goal)g(of)
+g(ac)m(hieving)f(arcsecond)h(accuracy)g(for)f(ordinary)f(minor)g
+(planets)427 4697 y(o)m(v)m(er)35 b(a)f(ten-y)m(ear)h(timespan.)48
+b(This)32 b(goal)i(dictates)g(ho)m(w)f(large)h(the)f(timesteps)g(can)h
+(b)s(e,)g(whic)m(h)427 4810 y(in)c(turn)g(dictates)i(ho)m(w)f(frequen)m
+(tly)f(the)h(unp)s(erturb)s(ed)d(motion)j(has)g(to)g(b)s(e)g
+(recalculated)g(from)427 4923 y(the)g(osculating)f(elemen)m(ts.)427
+5082 y(Within)h(predetermined)g(limits,)f(the)j(timestep)f(for)h(the)f
+(n)m(umerical)f(in)m(tegration)i(is)e(v)-5 b(aried)32
+b(in)427 5195 y(length)38 b(in)e(in)m(v)m(erse)i(prop)s(ortion)e(to)j
+(the)f(magnitude)f(of)h(the)g(net)g(acceleration)h(on)f(the)g(b)s(o)s
+(dy)427 5308 y(from)30 b(the)h(ma)5 b(jor)30 b(planets.)427
+5467 y(The)h(n)m(umerical)f(in)m(tegration)h(requires)f(estimates)i(of)
+g(the)f(ma)5 b(jor-planet)31 b(motions.)43 b(Appro)m(xi-)427
+5580 y(mate)33 b(p)s(ositions)c(for)i(the)h(ma)5 b(jor)32
+b(planets)e(\(Pluto)i(alone)f(is)g(omitted\))g(are)h(obtained)f(from)g
+(the)427 5693 y(routine)25 b(sla)p Ft(_)p FD(PLANET.)g(Tw)m(o)h(lev)m
+(els)g(of)g(in)m(terp)s(olation)e(are)i(used,)h(to)f(enhance)g(sp)s
+(eed)f(without)p eop
+%%Page: 116 118
+116 117 bop 0 52 a FD(116)427 351 y(signi\014can)m(tly)39
+b(degrading)h(accuracy)-8 b(.)72 b(A)m(t)42 b(a)e(lo)m(w)h(frequency)-8
+b(,)43 b(the)e(routine)e(sla)p Ft(_)p FD(PLANET)g(is)427
+464 y(called)30 b(to)h(generate)g(up)s(dated)e(p)s(osition+v)m(elo)s
+(cit)m(y)g(\\state)j(v)m(ectors".)42 b(The)30 b(only)f(task)i(remain-)
+427 577 y(ing)38 b(to)i(b)s(e)e(carried)g(out)h(at)h(the)f(full)e
+(frequency)h(\()p Fq(i.e.)g FD(at)i(eac)m(h)g(in)m(tegration)f(step\))g
+(is)f(to)i(use)427 690 y(the)33 b(state)h(v)m(ectors)g(to)f(extrap)s
+(olate)h(the)e(planetary)g(p)s(ositions.)46 b(In)31 b(place)i(of)g(a)g
+(strictly)e(linear)427 803 y(extrap)s(olation,)g(some)g(allo)m(w)m
+(ance)g(is)f(made)g(for)h(the)g(curv)-5 b(ature)30 b(of)h(the)g(orbit)e
+(b)m(y)i(scaling)f(bac)m(k)427 916 y(the)h(radius)d(v)m(ector)k(as)f
+(the)f(linear)f(extrap)s(olation)h(go)s(es)h(o\013)g(at)g(a)g(tangen)m
+(t.)427 1115 y(V)-8 b(arious)37 b(other)g(appro)m(ximations)e(are)j
+(made.)60 b(F)-8 b(or)37 b(example,)i(p)s(erturbations)34
+b(b)m(y)j(Pluto)f(and)427 1228 y(the)31 b(minor)e(planets)g(are)i
+(neglected)g(and)f(relativistic)f(e\013ects)i(are)g(not)g(tak)m(en)g
+(in)m(to)g(accoun)m(t.)427 1427 y(In)j(the)g(in)m(terests)g(of)g
+(simplicit)m(y)-8 b(,)33 b(the)h(bac)m(kground)g(calculations)f(for)h
+(the)h(ma)5 b(jor)34 b(planets)f(are)427 1540 y(carried)i(out)i
+Fq(en)g(masse.)59 b FD(The)35 b(mean)h(elemen)m(ts)h(and)e(state)i(v)m
+(ectors)h(for)e(all)f(the)h(planets)f(are)427 1653 y(refreshed)30
+b(at)h(the)f(same)h(time,)f(without)g(regard)g(for)g(orbit)g(curv)-5
+b(ature,)30 b(mass)g(or)h(pro)m(ximit)m(y)-8 b(.)427
+1853 y(The)30 b(Earth-Mo)s(on)h(system)g(is)f(treated)h(as)g(a)g
+(single)e(b)s(o)s(dy)g(when)h(the)g(b)s(o)s(dy)f(is)h(distan)m(t)g(but)
+g(as)427 1966 y(separate)38 b(b)s(o)s(dies)c(when)i(closer)h(to)g(the)g
+(EMB)g(than)f(the)h(parameter)g(RNE,)g(whic)m(h)e(incurs)g(a)427
+2078 y(time)30 b(p)s(enalt)m(y)g(but)g(impro)m(v)m(es)g(accuracy)h(for)
+f(near-Earth)h(ob)5 b(jects.)311 2313 y(5.)46 b(This)30
+b(routine)h(is)g(not)h(in)m(tended)f(to)i(b)s(e)e(used)g(for)h(ma)5
+b(jor)32 b(planets.)44 b(Ho)m(w)m(ev)m(er,)35 b(if)c(ma)5
+b(jor-planet)427 2426 y(elemen)m(ts)36 b(are)f(supplied,)e(sensible)h
+(results)f(will,)h(in)g(fact,)j(b)s(e)e(pro)s(duced.)53
+b(This)33 b(happ)s(ens)h(b)s(e-)427 2539 y(cause)26 b(the)f(routine)f
+(c)m(hec)m(ks)i(the)f(separation)g(b)s(et)m(w)m(een)g(the)g(b)s(o)s(dy)
+f(and)g(eac)m(h)i(of)f(the)g(planets)f(and)427 2651 y(in)m(terprets)g
+(a)h(suspiciously)d(small)h(v)-5 b(alue)24 b(\(0.001)k(A)m(U\))d(as)g
+(an)g(attempt)h(to)g(apply)d(the)i(routine)f(to)427 2764
+y(the)29 b(planet)e(concerned.)41 b(If)27 b(this)h(condition)e(is)i
+(detected,)i(the)f(con)m(tribution)d(from)i(that)h(planet)427
+2877 y(is)d(ignored,)g(and)g(the)h(status)g(is)e(set)i(to)h(the)e
+(planet)g(n)m(um)m(b)s(er)f(\(1{10)k(=)d(Mercury)-8 b(,)28
+b(V)-8 b(en)m(us,)28 b(EMB,)427 2990 y(Mars,)j(Jupiter,)e(Saturn,)g
+(Uran)m(us,)i(Neptune,)f(Earth,)g(Mo)s(on\))h(as)g(a)g(w)m(arning.)0
+3535 y FB(REFERENCES)44 b FD(:)311 3796 y(1.)i(Sterne,)25
+b(Theo)s(dore)f(E.,)h Fq(A)n(n)h(Intr)-5 b(o)g(duction)29
+b(to)f(Celestial)f(Me)-5 b(chanics,)25 b FD(In)m(terscience)g
+(Publishers,)427 3909 y(1960.)43 b(Section)30 b(6.7,)i(p199.)311
+4092 y(2.)46 b(Ev)m(erhart,)31 b(E.)g(&)f(Pitkin,)e(E.T.,)j(Am.)f(J.)h
+(Ph)m(ys.)f(51,)h(712,)h(1983.)p 0 4298 3780 8 v 0 4411
+a Fx(SLA)p Fn(_)p Fx(PLANEL)236 b Fm(Planet)37 b(P)m(osition)f(from)h
+(Elemen)m(ts)234 b Fx(SLA)p Fn(_)p Fx(PLANEL)0 4761 y
+FB(A)m(CTION)44 b FD(:)59 b(Helio)s(cen)m(tric)40 b(p)s(osition)e(and)h
+(v)m(elo)s(cit)m(y)h(of)g(a)g(planet,)i(asteroid)e(or)g(comet,)j
+(starting)d(from)227 4874 y(orbital)29 b(elemen)m(ts.)0
+5062 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PLANEL)f(\(DATE,)h
+(JFORM,)h(EPOCH,)f(ORBINC,)f(ANODE,)i(PERIH,)1239 5175
+y(AORQ,)f(E,)i(AORL,)e(DM,)h(PV,)g(JSTAT\))0 5634 y FB(GIVEN)e
+FD(:)p eop
+%%Page: 117 119
+117 118 bop 0 52 a Fw(SUN/67.70)3206 b FD(117)277 339
+y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(TT)30 b(MJD)h(of)f(observ)-5
+b(ation)30 b(\(JD)p Fo(\000)p FD(2400000.5,)1825 452
+y(Note)i(1\))277 565 y Fq(JF)n(ORM)413 b FB(I)605 b FD(c)m(hoice)31
+b(of)g(elemen)m(t)g(set)g(\(1-3,)h(Note)f(3\))277 678
+y Fq(EPOCH)409 b FB(D)565 b FD(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)g
+(\()p Fl(t)2462 692 y Fu(0)2531 678 y FD(or)g Fl(T)13
+b FD(,)30 b(TT)g(MJD,)h(Note)g(4\))277 791 y Fq(ORBINC)368
+b FB(D)565 b FD(inclination)28 b(\()p Fl(i)p FD(,)j(radians\))277
+904 y Fq(ANODE)399 b FB(D)565 b FD(longitude)29 b(of)i(the)f(ascending)
+g(no)s(de)g(\(\012,)g(radians\))277 1016 y Fq(PERIH)443
+b FB(D)565 b FD(longitude)29 b(or)i(argumen)m(t)f(of)h(p)s(erihelion)c
+(\()p Fl($)33 b FD(or)e Fl(!)s FD(,)1825 1129 y(radians\))277
+1242 y Fq(A)n(OR)n(Q)466 b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s
+(erihelion)d(distance)k(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277
+1355 y Fq(E)674 b FB(D)565 b FD(eccen)m(tricit)m(y)32
+b(\()p Fl(e)p FD(\))277 1468 y Fq(A)n(ORL)477 b FB(D)565
+b FD(mean)31 b(anomaly)f(or)g(longitude)f(\()p Fl(M)41
+b FD(or)30 b Fl(L)p FD(,)h(radians,)1825 1581 y(JF)m(ORM=1,2)g(only\))
+277 1694 y Fq(DM)585 b FB(D)565 b FD(daily)29 b(motion)h(\()p
+Fl(n)p FD(,)g(radians,)g(JF)m(ORM=1)h(only\))0 2111 y
+FB(RETURNED)46 b FD(:)277 2257 y Fq(PV)606 b FB(D\(6\))431
+b FD(helio)s(cen)m(tric)29 b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33
+b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(],)31 b(equatorial,)f(J2000)1825 2370
+y(\(A)m(U,)i(A)m(U/s\))277 2482 y Fq(JST)-7 b(A)g(T)453
+b FB(I)605 b FD(status:)1898 2595 y(0)30 b(=)g(OK)1825
+2708 y Fo(\000)p FD(1)g(=)g(illegal)f(JF)m(ORM)1825 2821
+y Fo(\000)p FD(2)h(=)g(illegal)f(E)1825 2934 y Fo(\000)p
+FD(3)h(=)g(illegal)f(A)m(OR)m(Q)1825 3047 y Fo(\000)p
+FD(4)h(=)g(illegal)f(DM)1825 3160 y Fo(\000)p FD(5)h(=)g(n)m(umerical)f
+(error)0 3577 y FB(NOTES)44 b FD(:)311 3789 y(1.)i(D)m(A)-8
+b(TE)34 b(is)d(the)i(instan)m(t)f(for)g(whic)m(h)f(the)h(prediction)f
+(is)g(required.)45 b(It)33 b(is)e(in)g(the)i(TT)e(time)h(scale)427
+3902 y(\(formerly)e(Ephemeris)e(Time,)i(ET\))g(and)g(is)f(a)i(Mo)s
+(di\014ed)e(Julian)f(Date)k(\(JD)p Fo(\000)p FD(2400000.5\).)311
+4061 y(2.)46 b(The)30 b(elemen)m(ts)h(are)g(with)e(resp)s(ect)h(to)h
+(the)g(J2000)h(ecliptic)d(and)g(equino)m(x.)311 4220
+y(3.)46 b(A)31 b(c)m(hoice)g(of)f(three)h(di\013eren)m(t)f(elemen)m
+(t-format)h(options)f(is)g(a)m(v)-5 b(ailable,)30 b(as)g(follo)m(ws.)
+427 4469 y(JF)m(ORM=1,)h(suitable)e(for)i(the)f(ma)5
+b(jor)30 b(planets:)602 4686 y(EPOCH)37 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)f Fl(t)1862 4700 y Fu(0)1932 4686
+y FD(\(TT)g(MJD\))602 4799 y(ORBINC)m(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 4911 y(ANODE)d(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+5024 y(PERIH)74 b(=)55 b(longitude)29 b(of)h(p)s(erihelion)d
+Fl($)34 b FD(\(radians\))602 5137 y(A)m(OR)m(Q)95 b(=)55
+b(mean)30 b(distance)g Fl(a)h FD(\(A)m(U\))602 5250 y(E)304
+b(=)55 b(eccen)m(tricit)m(y)32 b Fl(e)602 5363 y FD(A)m(ORL)106
+b(=)55 b(mean)30 b(longitude)f Fl(L)i FD(\(radians\))602
+5476 y(DM)214 b(=)55 b(daily)29 b(motion)h Fl(n)g FD(\(radians\))427
+5693 y(JF)m(ORM=2,)h(suitable)e(for)i(minor)d(planets:)p
+eop
+%%Page: 118 120
+118 119 bop 0 52 a FD(118)602 351 y(EPOCH)37 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)f Fl(t)1862 365 y Fu(0)1932 351 y
+FD(\(TT)g(MJD\))602 464 y(ORBINC)m(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 577 y(ANODE)d(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+690 y(PERIH)74 b(=)55 b(argumen)m(t)31 b(of)f(p)s(erihelion)d
+Fl(!)33 b FD(\(radians\))602 803 y(A)m(OR)m(Q)95 b(=)55
+b(mean)30 b(distance)g Fl(a)h FD(\(A)m(U\))602 916 y(E)304
+b(=)55 b(eccen)m(tricit)m(y)32 b Fl(e)602 1029 y FD(A)m(ORL)106
+b(=)55 b(mean)30 b(anomaly)h Fl(M)40 b FD(\(radians\))427
+1229 y(JF)m(ORM=3,)31 b(suitable)e(for)i(comets:)602
+1428 y(EPOCH)37 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(p)s(erihelion)c
+Fl(T)43 b FD(\(TT)30 b(MJD\))602 1541 y(ORBINC)m(=)55
+b(inclination)27 b Fl(i)k FD(\(radians\))602 1654 y(ANODE)d(=)55
+b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))
+602 1767 y(PERIH)74 b(=)55 b(argumen)m(t)31 b(of)f(p)s(erihelion)d
+Fl(!)33 b FD(\(radians\))602 1880 y(A)m(OR)m(Q)95 b(=)55
+b(p)s(erihelion)27 b(distance)j Fl(q)j FD(\(A)m(U\))602
+1993 y(E)304 b(=)55 b(eccen)m(tricit)m(y)32 b Fl(e)427
+2193 y FD(Un)m(used)k(elemen)m(ts)h(\(DM)h(for)f(JF)m(ORM=2,)i(A)m(ORL)
+e(and)f(DM)h(for)g(JF)m(ORM=3\))g(are)g(not)g(ac-)427
+2306 y(cessed.)311 2456 y(4.)46 b(Eac)m(h)30 b(of)f(the)g(three)g
+(elemen)m(t)g(sets)g(de\014nes)f(an)h(unp)s(erturb)s(ed)c(helio)s(cen)m
+(tric)i(orbit.)40 b(F)-8 b(or)29 b(a)g(giv)m(en)427 2569
+y(ep)s(o)s(c)m(h)c(of)h(observ)-5 b(ation,)26 b(the)g(p)s(osition)d(of)
+i(the)h(b)s(o)s(dy)e(in)g(its)g(orbit)h(can)g(b)s(e)g(predicted)f(from)
+h(these)427 2682 y(elemen)m(ts,)38 b(whic)m(h)d(are)i(called)e
+Fq(osculating)j(elements,)g FD(using)d(standard)g(t)m(w)m(o-b)s(o)s(dy)
+h(analytical)427 2794 y(solutions.)h(Ho)m(w)m(ev)m(er,)27
+b(due)c(to)h(planetary)f(p)s(erturbations,)g(a)h(giv)m(en)g(set)g(of)f
+(osculating)g(elemen)m(ts)427 2907 y(remains)44 b(usable)g(for)h(only)g
+(as)g(long)g(as)h(the)f(unp)s(erturb)s(ed)d(orbit)i(that)i(it)f
+(describ)s(es)e(is)i(an)427 3020 y(adequate)27 b(appro)m(ximation)e(to)
+i(realit)m(y)-8 b(.)39 b(A)m(ttac)m(hed)28 b(to)f(suc)m(h)e(a)i(set)f
+(of)g(elemen)m(ts)g(is)f(a)i(date)f(called)427 3133 y(the)e
+Fq(osculating)j(ep)-5 b(o)g(ch,)26 b FD(at)f(whic)m(h)d(the)h(elemen)m
+(ts)h(are,)i(momen)m(tarily)-8 b(,)24 b(a)g(p)s(erfect)f(represen)m
+(tation)427 3246 y(of)31 b(the)f(instan)m(taneous)h(p)s(osition)d(and)i
+(v)m(elo)s(cit)m(y)h(of)f(the)h(b)s(o)s(dy)-8 b(.)427
+3417 y(Therefore,)33 b(for)g(an)m(y)g(giv)m(en)f(problem)f(there)i(are)
+g(up)e(to)j(three)e(di\013eren)m(t)g(ep)s(o)s(c)m(hs)g(in)g(pla)m(y)-8
+b(,)33 b(and)427 3530 y(it)d(is)g(vital)f(to)i(distinguish)c(clearly)j
+(b)s(et)m(w)m(een)h(them:)506 3680 y Fo(\017)46 b FD(The)25
+b(ep)s(o)s(c)m(h)g(of)g(observ)-5 b(ation:)38 b(the)26
+b(momen)m(t)g(in)e(time)g(for)h(whic)m(h)f(the)i(p)s(osition)d(of)j
+(the)f(b)s(o)s(dy)597 3793 y(is)30 b(to)h(b)s(e)f(predicted.)506
+3924 y Fo(\017)46 b FD(The)24 b(ep)s(o)s(c)m(h)g(de\014ning)f(the)h(p)s
+(osition)f(of)h(the)h(b)s(o)s(dy:)36 b(the)24 b(momen)m(t)h(in)f(time)g
+(at)h(whic)m(h,)f(in)f(the)597 4037 y(absence)i(of)e(purturbations,)g
+(the)h(sp)s(eci\014ed)e(p)s(osition|mean)g(longitude,)i(mean)g(anomaly)
+-8 b(,)597 4150 y(or)31 b(p)s(erihelion|is)26 b(reac)m(hed.)506
+4282 y Fo(\017)46 b FD(The)f(osculating)f(ep)s(o)s(c)m(h:)70
+b(the)45 b(momen)m(t)h(in)e(time)h(at)h(whic)m(h)d(the)j(giv)m(en)f
+(elemen)m(ts)g(are)597 4394 y(correct.)427 4545 y(F)-8
+b(or)24 b(the)f(ma)5 b(jor-planet)22 b(and)g(minor-planet)f(cases)j(it)
+e(is)g(usual)f(to)j(mak)m(e)g(the)f(ep)s(o)s(c)m(h)f(that)h(de\014nes)
+427 4658 y(the)i(p)s(osition)e(of)i(the)h(b)s(o)s(dy)d(the)i(same)g(as)
+g(the)h(ep)s(o)s(c)m(h)e(of)h(osculation.)39 b(Th)m(us,)25
+b(only)f(t)m(w)m(o)i(di\013eren)m(t)427 4770 y(ep)s(o)s(c)m(hs)38
+b(are)g(in)m(v)m(olv)m(ed:)55 b(the)37 b(ep)s(o)s(c)m(h)h(of)g(the)f
+(elemen)m(ts)h(and)f(the)h(ep)s(o)s(c)m(h)g(of)f(observ)-5
+b(ation.)63 b(F)-8 b(or)427 4883 y(comets,)26 b(the)d(ep)s(o)s(c)m(h)f
+(of)h(p)s(erihelion)d(\014xes)i(the)h(p)s(osition)e(in)h(the)h(orbit)e
+(and)i(in)e(general)i(a)g(di\013eren)m(t)427 4996 y(ep)s(o)s(c)m(h)30
+b(of)h(osculation)f(will)d(b)s(e)j(c)m(hosen.)41 b(Th)m(us,)30
+b(all)f(three)i(t)m(yp)s(es)f(of)h(ep)s(o)s(c)m(h)f(are)h(in)m(v)m(olv)
+m(ed.)427 5167 y(F)-8 b(or)31 b(the)g(presen)m(t)f(routine:)506
+5317 y Fo(\017)46 b FD(The)30 b(ep)s(o)s(c)m(h)g(of)h(observ)-5
+b(ation)30 b(is)f(the)i(argumen)m(t)g(D)m(A)-8 b(TE.)506
+5449 y Fo(\017)46 b FD(The)30 b(ep)s(o)s(c)m(h)g(de\014ning)f(the)h(p)s
+(osition)f(of)h(the)h(b)s(o)s(dy)e(is)g(the)i(argumen)m(t)f(EPOCH.)506
+5580 y Fo(\017)46 b FD(The)f(osculating)g(ep)s(o)s(c)m(h)g(is)f(not)i
+(used)e(and)h(is)f(assumed)h(to)h(b)s(e)f(close)g(enough)g(to)h(the)597
+5693 y(ep)s(o)s(c)m(h)34 b(of)g(observ)-5 b(ation)34
+b(to)h(deliv)m(er)d(adequate)j(accuracy)-8 b(.)54 b(If)33
+b(not,)j(a)e(preliminary)c(call)k(to)p eop
+%%Page: 119 121
+119 120 bop 0 52 a Fw(SUN/67.70)3206 b FD(119)597 351
+y(sla)p Ft(_)p FD(PER)-8 b(TEL)27 b(ma)m(y)h(b)s(e)f(used)g(to)h(up)s
+(date)f(the)h(elemen)m(t-set)h(\(and)f(its)f(asso)s(ciated)h(osculat-)
+597 464 y(ing)i(ep)s(o)s(c)m(h\))g(b)m(y)h(applying)d(planetary)i(p)s
+(erturbations.)311 637 y(5.)46 b(The)e(reference)h(frame)f(for)g(the)g
+(result)g(is)f(equatorial)h(and)f(is)h(with)f(resp)s(ect)h(to)h(the)f
+(mean)427 750 y(equino)m(x)30 b(and)g(ecliptic)f(of)i(ep)s(o)s(c)m(h)f
+(J2000.)311 924 y(6.)46 b(The)36 b(algorithm)f(w)m(as)h(originally)e
+(adapted)i(from)g(the)g(EPHSLA)f(program)h(of)g(D.)16
+b(H.)g(P)-8 b(.)16 b(Jones)427 1037 y(\(priv)-5 b(ate)36
+b(comm)m(unication,)h(1996\).)59 b(The)35 b(metho)s(d)h(is)f(based)g
+(on)h(Stump\013)7 b('s)35 b(Univ)m(ersal)f(V)-8 b(ari-)427
+1150 y(ables.)0 1648 y FB(REFERENCE)44 b FD(:)d(Ev)m(erhart,)31
+b(E.)f(&)g(Pitkin,)f(E.T.,)h(Am.)h(J.)f(Ph)m(ys.)g(51,)i(712,)g(1983.)p
+0 1835 3780 8 v 0 1948 a Fx(SLA)p Fn(_)p Fx(PLANET)412
+b Fm(Planetary)37 b(Ephemerides)412 b Fx(SLA)p Fn(_)p
+Fx(PLANET)0 2298 y FB(A)m(CTION)44 b FD(:)c(Appro)m(ximate)31
+b(helio)s(cen)m(tric)e(p)s(osition)f(and)i(v)m(elo)s(cit)m(y)h(of)f(a)h
+(planet.)0 2486 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PLANET)f
+(\(DATE,)h(NP,)h(PV,)g(JSTAT\))0 2917 y FB(GIVEN)e FD(:)277
+3063 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(Mo)s(di\014ed)29
+b(Julian)f(Date)k(\(JD)p Fo(\000)p FD(2400000.5\))277
+3176 y Fq(NP)606 b FB(I)f FD(planet:)1825 3289 y(1)15
+b(=)g(Mercury)1825 3402 y(2)g(=)g(V)-8 b(en)m(us)1825
+3515 y(3)15 b(=)g(Earth-Mo)s(on)31 b(Barycen)m(tre)1825
+3627 y(4)15 b(=)g(Mars)1825 3740 y(5)g(=)g(Jupiter)1825
+3853 y(6)g(=)g(Saturn)1825 3966 y(7)g(=)g(Uran)m(us)1825
+4079 y(8)g(=)g(Neptune)1825 4192 y(9)g(=)g(Pluto)0 4682
+y FB(RETURNED)46 b FD(:)277 4828 y Fq(PV)606 b FB(D\(6\))431
+b FD(helio)s(cen)m(tric)29 b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33
+b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(],)31 b(equatorial,)f(J2000)1825 4941
+y(\(A)m(U,)i(A)m(U/s\))277 5053 y Fq(JST)-7 b(A)g(T)453
+b FB(I)605 b FD(status:)1825 5166 y(+1)30 b(=)g(w)m(arning:)40
+b(date)31 b(outside)f(of)g(range)1898 5279 y(0)g(=)g(OK)1825
+5392 y Fo(\000)p FD(1)g(=)g(illegal)f(NP)h(\(outside)g(1-9\))1825
+5505 y Fo(\000)p FD(2)g(=)g(solution)f(didn't)g(con)m(v)m(erge)p
+eop
+%%Page: 120 122
+120 121 bop 0 52 a FD(120)0 351 y FB(NOTES)44 b FD(:)311
+541 y(1.)i(The)31 b(ep)s(o)s(c)m(h,)g(D)m(A)-8 b(TE,)33
+b(is)d(in)g(the)h(TDB)h(time)e(scale)i(and)e(is)h(in)e(the)j(form)e(of)
+i(a)f(Mo)s(di\014ed)f(Julian)427 654 y(Date)i(\(JD)p
+Fo(\000)p FD(2400000.5\).)311 801 y(2.)46 b(The)24 b(reference)h(frame)
+g(is)e(equatorial)h(and)g(is)g(with)f(resp)s(ect)h(to)i(the)e(mean)h
+(equino)m(x)f(and)g(ecliptic)427 914 y(of)31 b(ep)s(o)s(c)m(h)f(J2000.)
+311 1061 y(3.)46 b(If)29 b(a)g(planet)g(n)m(um)m(b)s(er,)f(NP)-8
+b(,)29 b(outside)g(the)g(range)g(1-9)h(is)f(supplied,)d(an)j(error)f
+(status)i(is)e(returned)427 1174 y(\(JST)-8 b(A)g(T)30
+b(=)h Fo(\000)p FD(1\))f(and)g(the)h(PV)f(v)m(ector)i(is)d(set)i(to)g
+(zero)s(es.)311 1321 y(4.)46 b(The)29 b(algorithm)f(for)h(obtaining)f
+(the)h(mean)g(elemen)m(ts)h(of)f(the)g(planets)g(from)f(Mercury)h(to)h
+(Nep-)427 1434 y(tune)23 b(is)f(due)h(to)h(J.)15 b(L.)g(Simon,)24
+b(P)-8 b(.)15 b(Bretagnon,)26 b(J.)15 b(Chapron)m(t,)25
+b(M.)16 b(Chapron)m(t-T)-8 b(ouze,)25 b(G.)16 b(F)-8
+b(rancou)427 1547 y(and)30 b(J.)15 b(Lask)-5 b(ar)30
+b(\(Bureau)g(des)g(Longitudes,)g(P)m(aris,)g(F)-8 b(rance\).)42
+b(The)29 b(\(completely)i(di\013eren)m(t\))f(al-)427
+1660 y(gorithm)g(for)g(calculating)g(the)g(ecliptic)f(co)s(ordinates)h
+(of)h(Pluto)f(is)f(b)m(y)h(Meeus.)311 1807 y(5.)46 b(Comparisons)24
+b(of)i(the)f(presen)m(t)h(routine)e(with)h(the)g(JPL)g(DE200)i
+(ephemeris)d(giv)m(e)i(the)g(follo)m(wing)427 1920 y(RMS)k(errors)g(o)m
+(v)m(er)i(the)e(in)m(terv)-5 b(al)30 b(1960-2025:)1543
+2088 y Fq(p)-5 b(osition)35 b(\(km\))170 b(sp)-5 b(e)g(e)g(d)35
+b(\(metr)-5 b(e/se)g(c\))697 2314 y FD(Mercury)694 b(334)613
+b(0.437)697 2427 y(V)-8 b(en)m(us)748 b(1060)613 b(0.855)697
+2540 y(EMB)774 b(2010)613 b(0.815)697 2653 y(Mars)783
+b(7690)613 b(1.98)697 2766 y(Jupiter)651 b(71700)614
+b(7.70)697 2878 y(Saturn)623 b(199000)568 b(19.4)697
+2991 y(Uran)m(us)608 b(564000)568 b(16.4)697 3104 y(Neptune)556
+b(158000)568 b(14.4)697 3217 y(Pluto)718 b(36400)614
+b(0.137)427 3386 y(F)-8 b(rom)27 b(comparisons)e(with)g(DE102,)k(Simon)
+24 b Fq(et)29 b(al.)39 b FD(quote)27 b(the)f(follo)m(wing)f(longitude)g
+(accuracies)427 3498 y(o)m(v)m(er)32 b(the)f(in)m(terv)-5
+b(al)29 b(1800-2200:)697 3667 y(Mercury)702 b(4)1773
+3630 y Fk(0)l(0)697 3780 y FD(V)-8 b(en)m(us)801 b(5)1773
+3743 y Fk(0)l(0)697 3893 y FD(EMB)827 b(6)1773 3856 y
+Fk(0)l(0)697 4006 y FD(Mars)790 b(17)1772 3969 y Fk(0)m(0)697
+4118 y FD(Jupiter)704 b(71)1772 4082 y Fk(0)m(0)697 4231
+y FD(Saturn)721 b(81)1772 4194 y Fk(0)m(0)697 4344 y
+FD(Uran)m(us)706 b(86)1772 4307 y Fk(0)m(0)697 4457 y
+FD(Neptune)654 b(11)1772 4420 y Fk(0)m(0)427 4626 y FD(In)27
+b(the)g(case)i(of)e(Pluto,)h(Meeus)g(quotes)g(an)f(accuracy)h(of)g(0)
+2451 4589 y Fk(0)l(0)2455 4626 y Fl(:)p FD(6)g(in)e(longitude)g(and)h
+(0)3266 4589 y Fk(0)l(0)3270 4626 y Fl(:)p FD(2)h(in)e(latitude)427
+4738 y(for)k(the)h(p)s(erio)s(d)d(1885-2099.)427 4868
+y(F)-8 b(or)28 b(all)e(except)i(Pluto,)f(o)m(v)m(er)h(the)f(p)s(erio)s
+(d)e(1000-3000,)32 b(the)27 b(accuracy)h(is)e(b)s(etter)h(than)g(1.5)h
+(times)427 4981 y(that)g(o)m(v)m(er)f(1800-2200.)44 b(Outside)25
+b(the)i(in)m(terv)-5 b(al)26 b(1000-3000)k(the)d(accuracy)h(declines.)
+38 b(F)-8 b(or)27 b(Pluto)427 5094 y(the)42 b(accuracy)g(declines)e
+(rapidly)f(outside)i(the)g(p)s(erio)s(d)e(1885-2099.)78
+b(Outside)39 b(these)j(ranges)427 5207 y(\(1885-2099)f(for)36
+b(Pluto,)i(1000-3000)i(for)c(the)h(rest\))g(a)g(\\date)g(out)g(of)g
+(range")g(w)m(arning)e(status)427 5320 y(\()p Ft(JSTAT=+1)p
+FD(\))29 b(is)h(returned.)311 5467 y(6.)46 b(The)30 b(algorithms)e(for)
+i(\(i\))f(Mercury)h(through)f(Neptune)h(and)f(\(ii\))g(Pluto)g(are)h
+(completely)g(inde-)427 5580 y(p)s(enden)m(t.)38 b(In)25
+b(the)h(Mercury)f(through)g(Neptune)g(case,)j(the)d(presen)m(t)h
+(SLALIB)f(implemen)m(tation)427 5693 y(di\013ers)k(from)h(the)h
+(original)d(Simon)h Fq(et)k(al.)41 b FD(F)-8 b(ortran)31
+b(co)s(de)f(in)f(the)i(follo)m(wing)e(resp)s(ects:)p
+eop
+%%Page: 121 123
+121 122 bop 0 52 a Fw(SUN/67.70)3206 b FD(121)506 351
+y Fo(\017)46 b FD(The)37 b(date)i(is)d(supplied)f(as)j(a)g(Mo)s
+(di\014ed)e(Julian)f(Date)k(rather)f(a)g(Julian)d(Date)40
+b(\(MJD)e(=)597 464 y(\(JD)21 b Fo(\000)f FD(2400000)p
+Fl(:)p FD(5\).)506 635 y Fo(\017)46 b FD(The)33 b(result)g(is)f
+(returned)g(only)h(in)f(equatorial)h(Cartesian)g(form;)i(the)e
+(ecliptic)g(longitude,)597 748 y(latitude)d(and)f(radius)g(v)m(ector)j
+(are)f(not)f(returned.)506 919 y Fo(\017)46 b FD(The)30
+b(v)m(elo)s(cit)m(y)h(is)e(in)g(A)m(U)j(p)s(er)d(second,)i(not)f(A)m(U)
+h(p)s(er)f(da)m(y)-8 b(.)506 1091 y Fo(\017)46 b FD(Di\013eren)m(t)31
+b(error/w)m(arning)e(status)i(v)-5 b(alues)30 b(are)h(used.)506
+1262 y Fo(\017)46 b FD(Kepler's)30 b(Equation)f(is)h(not)g(solv)m(ed)h
+(inline.)506 1433 y Fo(\017)46 b FD(P)m(olynomials)29
+b(in)g(T)h(are)h(nested)f(to)h(minimize)d(rounding)g(errors.)506
+1604 y Fo(\017)46 b FD(Explicit)28 b(double-precision)g(constan)m(ts)j
+(are)g(used)f(to)h(a)m(v)m(oid)g(mixed-mo)s(de)e(expressions.)506
+1775 y Fo(\017)46 b FD(There)26 b(are)h(other,)h(cosmetic,)h(c)m
+(hanges)e(to)h(comply)e(with)f(Starlink/SLALIB)f(st)m(yle)j(guide-)597
+1888 y(lines.)427 2118 y(None)k(of)g(the)f(ab)s(o)m(v)m(e)i(c)m(hanges)
+f(a\013ects)h(the)f(result)e(signi\014can)m(tly)-8 b(.)311
+2347 y(7.)46 b(F)-8 b(or)42 b(NP)15 b(=)g(3)41 b(the)g(result)f(is)f
+(for)i(the)g(Earth-Mo)s(on)g(Barycen)m(tre.)73 b(T)-8
+b(o)41 b(obtain)g(the)g(helio)s(cen-)427 2460 y(tric)34
+b(p)s(osition)d(and)i(v)m(elo)s(cit)m(y)i(of)e(the)h(Earth,)h(either)e
+(use)g(the)h(SLALIB)g(routine)e(sla)p Ft(_)p FD(EVP)h(\(or)427
+2573 y(sla)p Ft(_)p FD(EPV\))e(or)h(call)f(sla)p Ft(_)p
+FD(DMOON)g(and)g(subtract)h(0.012150581)k(times)c(the)f(geo)s(cen)m
+(tric)i(Mo)s(on)427 2686 y(v)m(ector)41 b(from)e(the)h(EMB)g(v)m(ector)
+h(pro)s(duced)d(b)m(y)h(the)h(presen)m(t)g(routine.)67
+b(\(The)39 b(Mo)s(on)h(v)m(ector)427 2799 y(should)29
+b(b)s(e)i(precessed)g(to)h(J2000)g(\014rst,)f(but)g(this)f(can)h(b)s(e)
+g(omitted)g(for)g(mo)s(dern)f(ep)s(o)s(c)m(hs)g(with-)427
+2912 y(out)h(in)m(tro)s(ducing)d(signi\014can)m(t)h(inaccuracy)-8
+b(.\))227 3453 y FB(REFERENCES)44 b FD(:)481 3682 y(1.)i(Simon)29
+b Fq(et)k(al.,)d FD(Astron.)h(Astroph)m(ys.)f FB(282)p
+FD(,)i(663)f(\(1994\).)481 3854 y(2.)46 b(Meeus,)31 b(J.,)g
+Fq(Astr)-5 b(onomic)g(al)35 b(A)n(lgorithms,)c FD(Willmann-Bell)d
+(\(1991\).)p 0 4158 3780 8 v 0 4271 a Fx(SLA)p Fn(_)p
+Fx(PLANTE)219 b Fm([)20 b Fg(\013)q(;)g(\016)k Fm(])38
+b(of)g(Planet)g(from)e(Elemen)m(ts)219 b Fx(SLA)p Fn(_)p
+Fx(PLANTE)0 4621 y FB(A)m(CTION)44 b FD(:)57 b(T)-8 b(op)s(o)s(cen)m
+(tric)38 b(apparen)m(t)h([)15 b Fl(\013;)g(\016)20 b
+FD(])39 b(of)f(a)h(Solar-System)f(ob)5 b(ject)39 b(whose)f(helio)s(cen)
+m(tric)g(orbital)227 4734 y(elemen)m(ts)31 b(are)g(kno)m(wn.)0
+4922 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PLANTE)f(\(DATE,)h
+(ELONG,)h(PHI,)f(JFORM,)g(EPOCH,)g(ORBINC,)g(ANODE,)g(PERIH,)1239
+5035 y(AORQ,)g(E,)i(AORL,)e(DM,)h(RA,)g(DEC,)f(R,)i(JSTAT\))0
+5634 y FB(GIVEN)d FD(:)p eop
+%%Page: 122 124
+122 123 bop 0 52 a FD(122)277 339 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(TT)30 b(MJD)h(of)f(observ)-5 b(ation)30
+b(\(JD)p Fo(\000)p FD(2400000.5,)1825 452 y(Notes)h(1,5\))277
+565 y Fq(ELONG,PHI)216 b FB(D)565 b FD(observ)m(er's)31
+b(longitude)e(\(east)j(+v)m(e\))f(and)f(latitude)1825
+678 y(\(radians,)f(Note)j(2\))277 791 y Fq(JF)n(ORM)413
+b FB(I)605 b FD(c)m(hoice)31 b(of)g(elemen)m(t)g(set)g(\(1-3,)h(Notes)f
+(3-6\))277 904 y Fq(EPOCH)409 b FB(D)565 b FD(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)g(\()p Fl(t)2462 918 y Fu(0)2531 904
+y FD(or)g Fl(T)13 b FD(,)30 b(TT)g(MJD,)h(Note)g(5\))277
+1016 y Fq(ORBINC)368 b FB(D)565 b FD(inclination)28 b(\()p
+Fl(i)p FD(,)j(radians\))277 1129 y Fq(ANODE)399 b FB(D)565
+b FD(longitude)29 b(of)i(the)f(ascending)g(no)s(de)g(\(\012,)g
+(radians\))277 1242 y Fq(PERIH)443 b FB(D)565 b FD(longitude)29
+b(or)i(argumen)m(t)f(of)h(p)s(erihelion)c(\()p Fl($)33
+b FD(or)e Fl(!)s FD(,)1825 1355 y(radians\))277 1468
+y Fq(A)n(OR)n(Q)466 b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s
+(erihelion)d(distance)k(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277
+1581 y Fq(E)674 b FB(D)565 b FD(eccen)m(tricit)m(y)32
+b(\()p Fl(e)p FD(\))277 1694 y Fq(A)n(ORL)477 b FB(D)565
+b FD(mean)31 b(anomaly)f(or)g(longitude)f(\()p Fl(M)41
+b FD(or)30 b Fl(L)p FD(,)h(radians,)1825 1807 y(JF)m(ORM=1,2)g(only\))
+277 1920 y Fq(DM)585 b FB(D)565 b FD(daily)29 b(motion)h(\()p
+Fl(n)p FD(,)g(radians,)g(JF)m(ORM=1)h(only\))0 2252 y
+FB(RETURNED)46 b FD(:)277 2399 y Fq(RA,DEC)378 b FB(D)565
+b FD(top)s(o)s(cen)m(tric)31 b(apparen)m(t)f([)15 b Fl(\013;)g(\016)21
+b FD(])30 b(\(radians\))277 2511 y Fq(R)670 b FB(D)565
+b FD(distance)30 b(from)g(observ)m(er)h(\(A)m(U\))277
+2624 y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1898
+2737 y(0)30 b(=)g(OK)1825 2850 y Fo(\000)p FD(1)g(=)g(illegal)f(JF)m
+(ORM)1825 2963 y Fo(\000)p FD(2)h(=)g(illegal)f(E)1825
+3076 y Fo(\000)p FD(3)h(=)g(illegal)f(A)m(OR)m(Q)1825
+3189 y Fo(\000)p FD(4)h(=)g(illegal)f(DM)1825 3302 y
+Fo(\000)p FD(5)h(=)g(n)m(umerical)f(error)0 3635 y FB(NOTES)44
+b FD(:)311 3819 y(1.)i(D)m(A)-8 b(TE)34 b(is)d(the)i(instan)m(t)f(for)g
+(whic)m(h)f(the)h(prediction)f(is)g(required.)45 b(It)33
+b(is)e(in)g(the)i(TT)e(time)h(scale)427 3932 y(\(formerly)e(Ephemeris)e
+(Time,)i(ET\))g(and)g(is)f(a)i(Mo)s(di\014ed)e(Julian)f(Date)k(\(JD)p
+Fo(\000)p FD(2400000.5\).)311 4075 y(2.)46 b(The)34 b(longitude)g(and)g
+(latitude)g(allo)m(w)g(correction)h(for)f(geo)s(cen)m(tric)i(parallax.)
+53 b(This)33 b(is)h(usually)427 4188 y(a)f(small)d(e\013ect,)35
+b(but)c(can)i(b)s(ecome)f(imp)s(ortan)m(t)g(for)g(near-Earth)g
+(asteroids.)45 b(Geo)s(cen)m(tric)34 b(p)s(osi-)427 4301
+y(tions)27 b(can)h(b)s(e)e(generated)j(b)m(y)e(appropriate)f(use)h(of)h
+(the)f(routines)f(sla)p Ft(_)p FD(EVP)h(\(or)g(sla)p
+Ft(_)p FD(EPV\))g(and)427 4414 y(sla)p Ft(_)p FD(PLANEL.)311
+4557 y(3.)46 b(The)30 b(elemen)m(ts)h(are)g(with)e(resp)s(ect)h(to)h
+(the)g(J2000)h(ecliptic)d(and)g(equino)m(x.)311 4700
+y(4.)46 b(A)31 b(c)m(hoice)g(of)f(three)h(di\013eren)m(t)f(elemen)m
+(t-format)h(options)f(is)g(a)m(v)-5 b(ailable,)30 b(as)g(follo)m(ws.)
+427 4941 y(JF)m(ORM=1,)h(suitable)e(for)i(the)f(ma)5
+b(jor)30 b(planets:)602 5128 y(EPOCH)37 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)f Fl(t)1862 5142 y Fu(0)1932 5128
+y FD(\(TT)g(MJD\))602 5241 y(ORBINC)m(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 5354 y(ANODE)d(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+5467 y(PERIH)74 b(=)55 b(longitude)29 b(of)h(p)s(erihelion)d
+Fl($)34 b FD(\(radians\))602 5580 y(A)m(OR)m(Q)95 b(=)55
+b(mean)30 b(distance)g Fl(a)h FD(\(A)m(U\))602 5693 y(E)304
+b(=)55 b(eccen)m(tricit)m(y)32 b Fl(e)p eop
+%%Page: 123 125
+123 124 bop 0 52 a Fw(SUN/67.70)3206 b FD(123)602 351
+y(A)m(ORL)106 b(=)55 b(mean)30 b(longitude)f Fl(L)i FD(\(radians\))602
+464 y(DM)214 b(=)55 b(daily)29 b(motion)h Fl(n)g FD(\(radians\))427
+682 y(JF)m(ORM=2,)h(suitable)e(for)i(minor)d(planets:)602
+899 y(EPOCH)37 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)f
+Fl(t)1862 913 y Fu(0)1932 899 y FD(\(TT)g(MJD\))602 1012
+y(ORBINC)m(=)55 b(inclination)27 b Fl(i)k FD(\(radians\))602
+1125 y(ANODE)d(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f
+(\012)h(\(radians\))602 1238 y(PERIH)74 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 1351
+y(A)m(OR)m(Q)95 b(=)55 b(mean)30 b(distance)g Fl(a)h
+FD(\(A)m(U\))602 1463 y(E)304 b(=)55 b(eccen)m(tricit)m(y)32
+b Fl(e)602 1576 y FD(A)m(ORL)106 b(=)55 b(mean)30 b(anomaly)h
+Fl(M)40 b FD(\(radians\))427 1794 y(JF)m(ORM=3,)31 b(suitable)e(for)i
+(comets:)602 2011 y(EPOCH)37 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(p)s(erihelion)c Fl(T)43 b FD(\(TT)30 b(MJD\))602
+2124 y(ORBINC)m(=)55 b(inclination)27 b Fl(i)k FD(\(radians\))602
+2237 y(ANODE)d(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f
+(\012)h(\(radians\))602 2350 y(PERIH)74 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 2463
+y(A)m(OR)m(Q)95 b(=)55 b(p)s(erihelion)27 b(distance)j
+Fl(q)j FD(\(A)m(U\))602 2576 y(E)304 b(=)55 b(eccen)m(tricit)m(y)32
+b Fl(e)427 2793 y FD(Un)m(used)k(elemen)m(ts)h(\(DM)h(for)f(JF)m
+(ORM=2,)i(A)m(ORL)e(and)f(DM)h(for)g(JF)m(ORM=3\))g(are)g(not)g(ac-)427
+2906 y(cessed.)311 3065 y(5.)46 b(Eac)m(h)30 b(of)f(the)g(three)g
+(elemen)m(t)g(sets)g(de\014nes)f(an)h(unp)s(erturb)s(ed)c(helio)s(cen)m
+(tric)i(orbit.)40 b(F)-8 b(or)29 b(a)g(giv)m(en)427 3178
+y(ep)s(o)s(c)m(h)c(of)h(observ)-5 b(ation,)26 b(the)g(p)s(osition)d(of)
+i(the)h(b)s(o)s(dy)e(in)g(its)g(orbit)h(can)g(b)s(e)g(predicted)f(from)
+h(these)427 3291 y(elemen)m(ts,)38 b(whic)m(h)d(are)i(called)e
+Fq(osculating)j(elements,)g FD(using)d(standard)g(t)m(w)m(o-b)s(o)s(dy)
+h(analytical)427 3404 y(solutions.)h(Ho)m(w)m(ev)m(er,)27
+b(due)c(to)h(planetary)f(p)s(erturbations,)g(a)h(giv)m(en)g(set)g(of)f
+(osculating)g(elemen)m(ts)427 3517 y(remains)44 b(usable)g(for)h(only)g
+(as)g(long)g(as)h(the)f(unp)s(erturb)s(ed)d(orbit)i(that)i(it)f
+(describ)s(es)e(is)i(an)427 3629 y(adequate)27 b(appro)m(ximation)e(to)
+i(realit)m(y)-8 b(.)39 b(A)m(ttac)m(hed)28 b(to)f(suc)m(h)e(a)i(set)f
+(of)g(elemen)m(ts)g(is)f(a)i(date)f(called)427 3742 y(the)e
+Fq(osculating)j(ep)-5 b(o)g(ch,)26 b FD(at)f(whic)m(h)d(the)h(elemen)m
+(ts)h(are,)i(momen)m(tarily)-8 b(,)24 b(a)g(p)s(erfect)f(represen)m
+(tation)427 3855 y(of)31 b(the)f(instan)m(taneous)h(p)s(osition)d(and)i
+(v)m(elo)s(cit)m(y)h(of)f(the)h(b)s(o)s(dy)-8 b(.)427
+4030 y(Therefore,)33 b(for)g(an)m(y)g(giv)m(en)f(problem)f(there)i(are)
+g(up)e(to)j(three)e(di\013eren)m(t)g(ep)s(o)s(c)m(hs)g(in)g(pla)m(y)-8
+b(,)33 b(and)427 4143 y(it)d(is)g(vital)f(to)i(distinguish)c(clearly)j
+(b)s(et)m(w)m(een)h(them:)506 4302 y Fo(\017)46 b FD(The)25
+b(ep)s(o)s(c)m(h)g(of)g(observ)-5 b(ation:)38 b(the)26
+b(momen)m(t)g(in)e(time)g(for)h(whic)m(h)f(the)i(p)s(osition)d(of)j
+(the)f(b)s(o)s(dy)597 4415 y(is)30 b(to)h(b)s(e)f(predicted.)506
+4551 y Fo(\017)46 b FD(The)24 b(ep)s(o)s(c)m(h)g(de\014ning)f(the)h(p)s
+(osition)f(of)h(the)h(b)s(o)s(dy:)36 b(the)24 b(momen)m(t)h(in)f(time)g
+(at)h(whic)m(h,)f(in)f(the)597 4664 y(absence)i(of)e(purturbations,)g
+(the)h(sp)s(eci\014ed)e(p)s(osition|mean)g(longitude,)i(mean)g(anomaly)
+-8 b(,)597 4777 y(or)31 b(p)s(erihelion|is)26 b(reac)m(hed.)506
+4913 y Fo(\017)46 b FD(The)f(osculating)f(ep)s(o)s(c)m(h:)70
+b(the)45 b(momen)m(t)h(in)e(time)h(at)h(whic)m(h)d(the)j(giv)m(en)f
+(elemen)m(ts)g(are)597 5026 y(correct.)427 5185 y(F)-8
+b(or)24 b(the)f(ma)5 b(jor-planet)22 b(and)g(minor-planet)f(cases)j(it)
+e(is)g(usual)f(to)j(mak)m(e)g(the)f(ep)s(o)s(c)m(h)f(that)h(de\014nes)
+427 5297 y(the)i(p)s(osition)e(of)i(the)h(b)s(o)s(dy)d(the)i(same)g(as)
+g(the)h(ep)s(o)s(c)m(h)e(of)h(osculation.)39 b(Th)m(us,)25
+b(only)f(t)m(w)m(o)i(di\013eren)m(t)427 5410 y(ep)s(o)s(c)m(hs)38
+b(are)g(in)m(v)m(olv)m(ed:)55 b(the)37 b(ep)s(o)s(c)m(h)h(of)g(the)f
+(elemen)m(ts)h(and)f(the)h(ep)s(o)s(c)m(h)g(of)f(observ)-5
+b(ation.)63 b(F)-8 b(or)427 5523 y(comets,)26 b(the)d(ep)s(o)s(c)m(h)f
+(of)h(p)s(erihelion)d(\014xes)i(the)h(p)s(osition)e(in)h(the)h(orbit)e
+(and)i(in)e(general)i(a)g(di\013eren)m(t)427 5636 y(ep)s(o)s(c)m(h)30
+b(of)h(osculation)f(will)d(b)s(e)j(c)m(hosen.)41 b(Th)m(us,)30
+b(all)f(three)i(t)m(yp)s(es)f(of)h(ep)s(o)s(c)m(h)f(are)h(in)m(v)m(olv)
+m(ed.)p eop
+%%Page: 124 126
+124 125 bop 0 52 a FD(124)427 351 y(F)-8 b(or)31 b(the)g(presen)m(t)f
+(routine:)506 493 y Fo(\017)46 b FD(The)30 b(ep)s(o)s(c)m(h)g(of)h
+(observ)-5 b(ation)30 b(is)f(the)i(argumen)m(t)g(D)m(A)-8
+b(TE.)506 621 y Fo(\017)46 b FD(The)30 b(ep)s(o)s(c)m(h)g(de\014ning)f
+(the)h(p)s(osition)f(of)h(the)h(b)s(o)s(dy)e(is)g(the)i(argumen)m(t)f
+(EPOCH.)506 749 y Fo(\017)46 b FD(The)f(osculating)g(ep)s(o)s(c)m(h)g
+(is)f(not)i(used)e(and)h(is)f(assumed)h(to)h(b)s(e)f(close)g(enough)g
+(to)h(the)597 861 y(ep)s(o)s(c)m(h)34 b(of)g(observ)-5
+b(ation)34 b(to)h(deliv)m(er)d(adequate)j(accuracy)-8
+b(.)54 b(If)33 b(not,)j(a)e(preliminary)c(call)k(to)597
+974 y(sla)p Ft(_)p FD(PER)-8 b(TEL)27 b(ma)m(y)h(b)s(e)f(used)g(to)h
+(up)s(date)f(the)h(elemen)m(t-set)h(\(and)f(its)f(asso)s(ciated)h
+(osculat-)597 1087 y(ing)i(ep)s(o)s(c)m(h\))g(b)m(y)h(applying)d
+(planetary)i(p)s(erturbations.)311 1229 y(6.)46 b(Tw)m(o)25
+b(imp)s(ortan)m(t)e(sources)h(for)g(orbital)f(elemen)m(ts)h(are)h
+Fq(Horizons,)h FD(op)s(erated)e(b)m(y)g(the)h(Jet)f(Propul-)427
+1342 y(sion)i(Lab)s(oratory)-8 b(,)27 b(P)m(asadena,)i(and)c(the)i
+Fq(Minor)i(Planet)g(Center,)e FD(op)s(erated)g(b)m(y)f(the)g(Cen)m(ter)
+h(for)427 1455 y(Astroph)m(ysics,)j(Harv)-5 b(ard.)41
+b(F)-8 b(or)31 b(further)e(details,)g(see)i(Section)f(4.17.)p
+0 1576 3780 8 v 0 1689 a Fx(SLA)p Fn(_)p Fx(PLANTU)198
+b Fm([)20 b Fg(\013)q(;)g(\016)k Fm(])38 b(from)e(Univ)m(ersal)h
+(Elemen)m(ts)198 b Fx(SLA)p Fn(_)p Fx(PLANTU)0 2039 y
+FB(A)m(CTION)44 b FD(:)c(T)-8 b(op)s(o)s(cen)m(tric)30
+b(apparen)m(t)h([)15 b Fl(\013;)g(\016)20 b FD(])30 b(of)h(a)f
+(Solar-System)f(ob)5 b(ject)31 b(whose)f(helio)s(cen)m(tric)f(univ)m
+(ersal)227 2152 y(orbital)g(elemen)m(ts)i(are)g(kno)m(wn.)0
+2340 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PLANTU)f(\(DATE,)h
+(ELONG,)h(PHI,)f(U,)h(RA,)g(DEC,)g(R,)g(JSTAT\))0 2674
+y FB(GIVEN)e FD(:)277 2820 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(TT)30 b(MJD)h(of)f(observ)-5 b(ation)30 b(\(JD)p
+Fo(\000)p FD(2400000.5\))277 2933 y Fq(ELONG,PHI)216
+b FB(D)565 b FD(observ)m(er's)31 b(longitude)e(\(east)j(+v)m(e\))f(and)
+f(latitude)1825 3046 y(radians\))0 3372 y FB(GIVEN)k(and)h(RETURNED)46
+b FD(:)277 3519 y Fq(U)668 b FB(D\(13\))379 b FD(univ)m(ersal)29
+b(orbital)g(elemen)m(ts)537 3631 y(\(1\))1006 b(com)m(bined)30
+b(mass)g(\()p Fl(M)h FD(+)20 b Fl(m)p FD(\))537 3744
+y(\(2\))1006 b(total)31 b(energy)g(of)g(the)f(orbit)g(\()p
+Fl(\013)p FD(\))537 3857 y(\(3\))1006 b(reference)31
+b(\(osculating\))f(ep)s(o)s(c)m(h)h(\()p Fl(t)2869 3871
+y Fu(0)2908 3857 y FD(\))499 3970 y(\(4-6\))969 b(p)s(osition)29
+b(at)i(reference)g(ep)s(o)s(c)m(h)f(\()p FB(r)2836 3984
+y Fu(0)2876 3970 y FD(\))499 4083 y(\(7-9\))969 b(v)m(elo)s(cit)m(y)31
+b(at)g(reference)g(ep)s(o)s(c)m(h)f(\()p FB(v)2837 4097
+y Fu(0)2877 4083 y FD(\))514 4196 y(\(10\))984 b(helio)s(cen)m(tric)29
+b(distance)h(at)h(reference)g(ep)s(o)s(c)m(h)514 4309
+y(\(11\))984 b FB(r)1701 4323 y Fu(0)1741 4309 y Fl(:)p
+FB(v)1821 4323 y Fe(0)514 4422 y FD(\(12\))g(date)31
+b(\()p Fl(t)p FD(\))514 4535 y(\(13\))984 b(univ)m(ersal)29
+b(eccen)m(tric)i(anomaly)f(\()p Fl( )s FD(\))i(of)e(date,)i(appro)m(x)0
+4861 y FB(RETURNED)46 b FD(:)277 5007 y Fq(RA,DEC)378
+b FB(D)565 b FD(top)s(o)s(cen)m(tric)31 b(apparen)m(t)f([)15
+b Fl(\013;)g(\016)21 b FD(])30 b(\(radians\))277 5120
+y Fq(R)670 b FB(D)565 b FD(distance)30 b(from)g(observ)m(er)h(\(A)m
+(U\))277 5233 y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1898
+5346 y(0)30 b(=)g(OK)1825 5458 y Fo(\000)p FD(1)g(=)g(radius)f(v)m
+(ector)j(zero)1825 5571 y Fo(\000)p FD(2)e(=)g(failed)f(to)i(con)m(v)m
+(erge)p eop
+%%Page: 125 127
+125 126 bop 0 52 a Fw(SUN/67.70)3206 b FD(125)0 351 y
+FB(NOTES)44 b FD(:)311 533 y(1.)i(D)m(A)-8 b(TE)34 b(is)d(the)i(instan)
+m(t)f(for)g(whic)m(h)f(the)h(prediction)f(is)g(required.)45
+b(It)33 b(is)e(in)g(the)i(TT)e(time)h(scale)427 646 y(\(formerly)e
+(Ephemeris)e(Time,)i(ET\))g(and)g(is)f(a)i(Mo)s(di\014ed)e(Julian)f
+(Date)k(\(JD)p Fo(\000)p FD(2400000.5\).)311 786 y(2.)46
+b(The)34 b(longitude)g(and)g(latitude)g(allo)m(w)g(correction)h(for)f
+(geo)s(cen)m(tric)i(parallax.)53 b(This)33 b(is)h(usually)427
+899 y(a)f(small)d(e\013ect,)35 b(but)c(can)i(b)s(ecome)f(imp)s(ortan)m
+(t)g(for)g(near-Earth)g(asteroids.)45 b(Geo)s(cen)m(tric)34
+b(p)s(osi-)427 1012 y(tions)27 b(can)h(b)s(e)e(generated)j(b)m(y)e
+(appropriate)f(use)h(of)h(the)f(routines)f(sla)p Ft(_)p
+FD(EVP)h(\(or)g(sla)p Ft(_)p FD(EPV\))g(and)427 1125
+y(sla)p Ft(_)p FD(UE2PV.)311 1265 y(3.)46 b(The)40 b(\\univ)m(ersal")f
+(elemen)m(ts)h(are)g(those)h(whic)m(h)d(de\014ne)h(the)h(orbit)f(for)h
+(the)g(purp)s(oses)e(of)i(the)427 1378 y(metho)s(d)26
+b(of)g(univ)m(ersal)f(v)-5 b(ariables)25 b(\(see)i(reference)f(2\).)41
+b(They)25 b(consist)h(of)g(the)h(com)m(bined)e(mass)h(of)427
+1491 y(the)33 b(t)m(w)m(o)h(b)s(o)s(dies,)e(an)g(ep)s(o)s(c)m(h,)h(and)
+f(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m(y)h(v)m(ectors)h
+(\(arbitrary)e(reference)427 1604 y(frame\))j(at)g(that)g(ep)s(o)s(c)m
+(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)e(also)j(v)
+-5 b(arious)33 b(quan)m(tities)427 1717 y(that)i(can,)g(in)d(fact,)k(b)
+s(e)d(deriv)m(ed)f(from)i(the)f(other)h(information.)49
+b(This)32 b(approac)m(h)i(is)f(tak)m(en)i(to)427 1830
+y(a)m(v)m(oiding)d(unnecessary)f(computation)h(and)g(loss)f(of)h
+(accuracy)-8 b(.)48 b(The)31 b(supplemen)m(tary)g(quan)m(ti-)427
+1943 y(ties)22 b(are)h(\(i\))f Fl(\013)p FD(,)i(whic)m(h)d(is)g(prop)s
+(ortional)f(to)j(the)g(total)g(energy)f(of)h(the)f(orbit,)h(\(ii\))e
+(the)i(helio)s(cen)m(tric)427 2056 y(distance)35 b(at)g(ep)s(o)s(c)m
+(h,)h(\(iii\))d(the)i(out)m(w)m(ards)g(comp)s(onen)m(t)g(of)g(the)g(v)m
+(elo)s(cit)m(y)g(at)h(the)f(giv)m(en)f(ep)s(o)s(c)m(h,)427
+2168 y(\(iv\))29 b(an)f(estimate)h(of)g Fl( )s FD(,)h(the)e(\\univ)m
+(ersal)g(eccen)m(tric)h(anomaly")g(at)g(a)g(giv)m(en)g(date)g(and)f
+(\(v\))h(that)427 2281 y(date.)311 2422 y(4.)46 b(The)30
+b(univ)m(ersal)f(elemen)m(ts)h(are)h(with)e(resp)s(ect)i(to)g(the)f
+(J2000)i(ecliptic)d(and)h(equino)m(x.)0 2742 y FB(REFERENCES)44
+b FD(:)311 2924 y(1.)i(Sterne,)25 b(Theo)s(dore)f(E.,)h
+Fq(A)n(n)h(Intr)-5 b(o)g(duction)29 b(to)f(Celestial)f(Me)-5
+b(chanics,)25 b FD(In)m(terscience)g(Publishers,)427
+3037 y(1960.)43 b(Section)30 b(6.7,)i(p199.)311 3177
+y(2.)46 b(Ev)m(erhart,)31 b(E.)g(&)f(Pitkin,)e(E.T.,)j(Am.)f(J.)h(Ph)m
+(ys.)f(51,)h(712,)h(1983.)p 0 3292 3780 8 v 0 3405 a
+Fx(SLA)p Fn(_)p Fx(PM)972 b Fm(Prop)s(er)37 b(Motion)972
+b Fx(SLA)p Fn(_)p Fx(PM)0 3756 y FB(A)m(CTION)44 b FD(:)c(Apply)29
+b(corrections)i(for)f(prop)s(er)f(motion)h(to)h(a)g(star)f([)15
+b Fl(\013;)g(\016)21 b FD(].)0 3943 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_PM)g(\(R0,)h(D0,)g(PR,)g(PD,)g(PX,)g(RV,)g(EP0,)f
+(EP1,)h(R1,)g(D1\))0 4270 y FB(GIVEN)e FD(:)277 4416
+y Fq(R0,D0)481 b FB(D)565 b FD([)15 b Fl(\013;)g(\016)20
+b FD(])31 b(at)g(ep)s(o)s(c)m(h)f(EP0)h(\(radians\))277
+4529 y Fq(PR,PD)449 b FB(D)565 b FD(prop)s(er)36 b(motions:)55
+b(rate)38 b(of)g(c)m(hange)g(of)g([)15 b Fl(\013;)g(\016)20
+b FD(])38 b(\(radians)1658 4641 y(p)s(er)30 b(y)m(ear\))277
+4754 y Fq(PX)606 b FB(D)565 b FD(parallax)29 b(\(arcsec\))277
+4867 y Fq(R)-9 b(V)611 b FB(D)565 b FD(radial)29 b(v)m(elo)s(cit)m(y)i
+(\(km)f(s)2477 4834 y Fp(\000)p Fu(1)2571 4867 y FD(,)h(+v)m(e)g(if)e
+(receding\))277 4980 y Fq(EP0)566 b FB(D)f FD(start)31
+b(ep)s(o)s(c)m(h)f(in)f(y)m(ears)i(\()p Fq(e.g.)f FD(Julian)e(ep)s(o)s
+(c)m(h\))277 5093 y Fq(EP1)566 b FB(D)f FD(end)30 b(ep)s(o)s(c)m(h)g
+(in)f(y)m(ears)i(\(same)g(system)g(as)f(EP0\))0 5406
+y FB(RETURNED)46 b FD(:)277 5577 y Fq(R1,D1)481 b FB(D)565
+b FD([)15 b Fl(\013;)g(\016)20 b FD(])31 b(at)g(ep)s(o)s(c)m(h)f(EP1)h
+(\(radians\))p eop
+%%Page: 126 128
+126 127 bop 0 52 a FD(126)0 351 y FB(NOTES)44 b FD(:)311
+552 y(1.)i(The)c Fl(\013)h FD(prop)s(er)e(motions)h(are)61
+b(_)-44 b Fl(\013)43 b FD(rather)f(than)61 b(_)-44 b
+Fl(\013)16 b FD(cos)g Fl(\016)s FD(,)46 b(and)c(are)g(in)f(the)i(same)g
+(co)s(ordinate)427 665 y(system)31 b(as)f(R0,D0.)311
+818 y(2.)46 b(If)26 b(the)g(a)m(v)-5 b(ailable)25 b(prop)s(er)f
+(motions)i(are)g(pre-FK5)g(they)g(will)d(b)s(e)i(p)s(er)g(tropical)g(y)
+m(ear)i(rather)f(than)427 931 y(p)s(er)37 b(Julian)e(y)m(ear,)41
+b(and)c(so)h(the)g(ep)s(o)s(c)m(hs)g(m)m(ust)f(b)s(oth)g(b)s(e)g
+(Besselian)h(rather)f(than)h(Julian.)60 b(In)427 1044
+y(suc)m(h)33 b(cases,)h(a)f(scaling)f(factor)i(of)f(365.2422D0/365.25)q
+(D0)39 b(should)31 b(b)s(e)h(applied)f(to)i(the)g(radial)427
+1157 y(v)m(elo)s(cit)m(y)e(b)s(efore)f(use)g(also.)0
+1552 y FB(REFERENCES)44 b FD(:)311 1752 y(1.)i(1984)32
+b Fq(Astr)-5 b(onomic)g(al)36 b(A)n(lmanac)p FD(,)31
+b(pp)e(B39-B41.)311 1905 y(2.)46 b(Lederle)30 b(&)g(Sc)m(h)m(w)m(an,)h
+(1984.)h Fq(Astr.)42 b(Astr)-5 b(ophys.)33 b FB(134)p
+FD(,)e(1-6.)p 0 2051 3780 8 v 0 2164 a Fx(SLA)p Fn(_)p
+Fx(POLMO)728 b Fm(P)m(olar)36 b(Motion)729 b Fx(SLA)p
+Fn(_)p Fx(POLMO)0 2514 y FB(A)m(CTION)44 b FD(:)50 b(P)m(olar)35
+b(motion:)50 b(correct)36 b(site)f(longitude)f(and)h(latitude)f(for)h
+(p)s(olar)f(motion)h(and)f(calculate)227 2627 y(azim)m(uth)c
+(di\013erence)g(b)s(et)m(w)m(een)h(celestial)f(and)g(terrestrial)f(p)s
+(oles.)0 2815 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_POLMO)g
+(\(ELONGM,)f(PHIM,)i(XP,)f(YP,)h(ELONG,)f(PHI,)h(DAZ\))0
+3185 y FB(GIVEN)e FD(:)277 3331 y Fq(ELONGM)327 b FB(D)565
+b FD(mean)31 b(longitude)e(of)h(the)h(site)f(\(radians,)f(east)j(+v)m
+(e\))277 3444 y Fq(PHIM)489 b FB(D)565 b FD(mean)31 b(geo)s(detic)g
+(latitude)e(of)i(the)f(site)g(\(radians\))277 3556 y
+Fq(XP)606 b FB(D)565 b FD(p)s(olar)29 b(motion)h Fl(x)p
+FD(-co)s(ordinate)h(\(radians\))277 3669 y Fq(YP)606
+b FB(D)565 b FD(p)s(olar)29 b(motion)h Fl(y)s FD(-co)s(ordinate)h
+(\(radians\))0 4056 y FB(RETURNED)46 b FD(:)277 4202
+y Fq(ELONG)409 b FB(D)565 b FD(true)30 b(longitude)f(of)i(the)f(site)h
+(\(radians,)e(east)j(+v)m(e\))277 4315 y Fq(PHI)571 b
+FB(D)565 b FD(true)30 b(geo)s(detic)h(latitude)f(of)g(the)h(site)f
+(\(radians\))277 4428 y Fq(D)n(AZ)545 b FB(D)565 b FD(azim)m(uth)25
+b(correction)g(\(terrestrial)p Fo(\000)p FD(celestial,)g(radians\))0
+4815 y FB(NOTES)44 b FD(:)311 5016 y(1.)i(\\Mean")22
+b(longitude)d(and)h(latitude)f(are)i(the)g(\(\014xed\))f(v)-5
+b(alues)20 b(for)g(the)g(site's)g(lo)s(cation)g(with)f(resp)s(ect)427
+5128 y(to)26 b(the)f(IERS)f(terrestrial)g(reference)h(frame;)i(the)e
+(latitude)f(is)g(geo)s(detic.)39 b(T)-8 b(AKE)25 b(CARE)f(WITH)427
+5241 y(THE)29 b(LONGITUDE)h(SIGN)f(CONVENTION.)g(The)g(longitudes)f
+(used)h(b)m(y)g(the)h(presen)m(t)g(rou-)427 5354 y(tine)22
+b(are)h(east-p)s(ositiv)m(e,)i(in)c(accordance)j(with)d(geographical)i
+(con)m(v)m(en)m(tion)h(\(and)e(righ)m(t-handed\).)427
+5467 y(In)39 b(particular,)h(note)g(that)g(the)g(longitudes)e(returned)
+g(b)m(y)h(the)h(sla)p Ft(_)p FD(OBS)e(routine)h(are)g(w)m(est-)427
+5580 y(p)s(ositiv)m(e,)27 b(follo)m(wing)f(astronomical)h(usage,)i(and)
+e(m)m(ust)g(b)s(e)g(rev)m(ersed)g(in)f(sign)g(b)s(efore)h(use)g(in)f
+(the)427 5693 y(presen)m(t)31 b(routine.)p eop
+%%Page: 127 129
+127 128 bop 0 52 a Fw(SUN/67.70)3206 b FD(127)311 351
+y(2.)46 b(XP)e(and)f(YP)g(are)h(the)g(\(c)m(hanging\))g(co)s(ordinates)
+f(of)h(the)g(Celestial)e(Ephemeris)g(P)m(ole)i(with)427
+464 y(resp)s(ect)33 b(to)g(the)g(IERS)f(Reference)i(P)m(ole.)48
+b(XP)33 b(is)e(p)s(ositiv)m(e)h(along)h(the)g(meridian)d(at)k
+(longitude)427 577 y(0)472 544 y Fp(\016)512 577 y FD(,)i(and)e(YP)g
+(is)g(p)s(ositiv)m(e)f(along)i(the)g(meridian)d(at)j(longitude)e(270)
+2798 544 y Fp(\016)2873 577 y FD(\()p Fq(i.e.)i FD(90)3159
+544 y Fp(\016)3233 577 y FD(w)m(est\).)54 b(V)-8 b(alues)427
+690 y(for)43 b(XP)-8 b(,YP)44 b(can)g(b)s(e)e(obtained)h(from)g(IERS)f
+(circulars)g(and)g(equiv)-5 b(alen)m(t)43 b(publications;)k(the)427
+803 y(maxim)m(um)30 b(amplitude)e(observ)m(ed)i(so)h(far)f(is)f(ab)s
+(out)i(0)2298 766 y Fk(0)l(0)2302 803 y Fl(:)p FD(3.)311
+957 y(3.)46 b(\\T)-8 b(rue")41 b(longitude)e(and)g(latitude)g(are)i
+(the)f(\(mo)m(ving\))h(v)-5 b(alues)40 b(for)g(the)g(site's)g(lo)s
+(cation)g(with)427 1070 y(resp)s(ect)f(to)h(the)f(celestial)f
+(ephemeris)f(p)s(ole)h(and)g(the)h(meridian)e(whic)m(h)g(corresp)s
+(onds)h(to)h(the)427 1182 y(Green)m(wic)m(h)24 b(apparen)m(t)h
+(sidereal)d(time.)39 b(The)23 b(true)h(longitude)f(and)g(latitude)g
+(link)f(the)i(terrestrial)427 1295 y(co)s(ordinates)h(with)f(the)h
+(standard)f(celestial)h(mo)s(dels)e(\(for)i(precession,)h(n)m(utation,)
+g(sidereal)e(time)427 1408 y Fq(etc)p FD(\).)311 1562
+y(4.)46 b(The)30 b(azim)m(uths)g(pro)s(duced)f(b)m(y)h(sla)p
+Ft(_)p FD(A)m(OP)g(and)g(sla)p Ft(_)p FD(A)m(OPQK)g(are)g(with)g(resp)s
+(ect)g(to)h(due)f(north)427 1675 y(as)42 b(de\014ned)e(b)m(y)i(the)g
+(Celestial)e(Ephemeris)g(P)m(ole,)45 b(and)c(can)h(therefore)g(b)s(e)f
+(called)f(\\celestial)427 1788 y(azim)m(uths".)75 b(Ho)m(w)m(ev)m(er,)
+46 b(a)c(telescop)s(e)g(\014xed)f(to)i(the)f(Earth)f(measures)g(azim)m
+(uth)g(essen)m(tially)427 1901 y(with)31 b(resp)s(ect)g(to)i(due)e
+(north)g(as)h(de\014ned)e(b)m(y)i(the)g(IERS)f(Reference)h(P)m(ole,)h
+(and)e(can)h(therefore)427 2014 y(b)s(e)27 b(called)f(\\terrestrial)h
+(azim)m(uth".)40 b(Uncorrected,)28 b(this)e(w)m(ould)g(manifest)h
+(itself)f(as)h(a)h(c)m(hanging)427 2127 y(\\azim)m(uth)c(zero-p)s(oin)m
+(t)f(error".)38 b(The)23 b(v)-5 b(alue)23 b(D)m(AZ)g(is)g(the)g
+(correction)g(to)h(b)s(e)f(added)f(to)i(a)g(celestial)427
+2240 y(azim)m(uth)30 b(to)h(pro)s(duce)f(a)g(terrestrial)g(azim)m(uth.)
+311 2393 y(5.)46 b(The)28 b(presen)m(t)g(routine)f(is)g(rigorous.)39
+b(F)-8 b(or)29 b(most)g(practical)e(purp)s(oses,)g(the)i(follo)m(wing)d
+(simpli\014ed)427 2506 y(form)m(ulae)k(pro)m(vide)g(an)g(adequate)h
+(appro)m(ximation:)568 2689 y Ft(ELONG)98 b(=)i
+(ELONGM+XP*COS\(ELONGM\)-Y)o(P*SI)o(N\(E)o(LONG)o(M\))568
+2802 y(PHI)194 b(=)100 b(PHIM+\(XP*SIN\(ELONGM\)+YP)o(*COS)o(\(EL)o
+(ONGM)o(\)\)*)o(TAN\()o(PHIM)o(\))568 2915 y(DAZ)194
+b(=)100 b(-SQRT\(XP*XP+YP*YP\)*COS\()o(ELON)o(GM-)o(ATAN)o(2\(X)o(P,YP)
+o(\)\)/C)o(OS\()o(PHIM)o(\))427 3099 y FD(An)30 b(alternativ)m(e)h
+(form)m(ulation)e(for)h(D)m(AZ)h(is:)568 3265 y Ft(X)195
+b(=)99 b(COS\(ELONGM\)*COS\(PHIM\))568 3377 y(Y)195 b(=)99
+b(SIN\(ELONGM\)*COS\(PHIM\))568 3490 y(DAZ)g(=)g
+(ATAN2\(-X*YP-Y*XP,X*X+Y*Y\))0 3888 y FB(REFERENCE)44
+b FD(:)50 b(Seidelmann,)33 b(P)-8 b(.K.)36 b(\(ed\),)g(1992.)56
+b Fq(Explanatory)39 b(Supplement)f(to)g(the)f(Astr)-5
+b(onomic)g(al)227 4001 y(A)n(lmanac,)31 b FD(ISBN)f(0-935702-68-7,)36
+b(sections)31 b(3.27,)h(4.25,)g(4.52.)p 0 4149 3780 8
+v 0 4262 a Fx(SLA)p Fn(_)p Fx(PREBN)451 b Fm(Precession)38
+b(Matrix)f(\(FK4\))451 b Fx(SLA)p Fn(_)p Fx(PREBN)0 4612
+y FB(A)m(CTION)44 b FD(:)36 b(Generate)24 b(the)e(matrix)g(of)g
+(precession)f(b)s(et)m(w)m(een)i(t)m(w)m(o)g(ep)s(o)s(c)m(hs,)h(using)d
+(the)h(old,)h(pre)f(IA)m(U)g(1976,)227 4725 y(Bessel-New)m(com)m(b)32
+b(mo)s(del,)e(in)f(Ando)m(y)m(er's)i(form)m(ulation.)0
+4913 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PREBN)g(\(BEP0,)g(BEP1,)
+g(RMATP\))0 5285 y FB(GIVEN)f FD(:)277 5431 y Fq(BEP0)502
+b FB(D)565 b FD(b)s(eginning)28 b(Besselian)i(ep)s(o)s(c)m(h)277
+5544 y Fq(BEP1)502 b FB(D)565 b FD(ending)29 b(Besselian)h(ep)s(o)s(c)m
+(h)p eop
+%%Page: 128 130
+128 129 bop 0 52 a FD(128)0 351 y FB(RETURNED)46 b FD(:)277
+523 y Fq(RMA)-7 b(TP)400 b FB(D\(3,3\))350 b FD(precession)30
+b(matrix)0 814 y FB(NOTE)44 b FD(:)d(The)30 b(matrix)f(is)h(in)f(the)h
+(sense:)427 992 y FB(v)482 1006 y Fu(1)552 992 y FD(=)g
+FB(M)p Fo(\001)p FB(v)832 1006 y Fu(0)227 1170 y FD(where)i
+FB(v)547 1184 y Fu(1)619 1170 y FD(is)f(the)i(star)f(v)m(ector)i
+(relativ)m(e)f(to)g(the)f(mean)h(equator)g(and)e(equino)m(x)h(of)h(ep)s
+(o)s(c)m(h)f(BEP1,)h FB(M)227 1282 y FD(is)i(the)h(3)24
+b Fo(\002)f FD(3)36 b(matrix)f(RMA)-8 b(TP)36 b(and)f
+FB(v)1642 1296 y Fu(0)1718 1282 y FD(is)f(the)i(star)g(v)m(ector)h
+(relativ)m(e)f(to)g(the)g(mean)g(equator)g(and)227 1395
+y(equino)m(x)30 b(of)h(ep)s(o)s(c)m(h)f(BEP0.)0 1687
+y FB(REFERENCE)44 b FD(:)d(Smith)28 b Fq(et)33 b(al.)p
+FD(,)e(1989.)i Fq(Astr.J.)d FB(97)p FD(,)h(269.)p 0 1789
+3780 8 v 0 1902 a Fx(SLA)p Fn(_)p Fx(PREC)555 b Fm(Precession)38
+b(Matrix)f(\(FK5\))554 b Fx(SLA)p Fn(_)p Fx(PREC)0 2253
+y FB(A)m(CTION)44 b FD(:)c(F)-8 b(orm)31 b(the)g(matrix)f(of)g
+(precession)g(b)s(et)m(w)m(een)h(t)m(w)m(o)g(ep)s(o)s(c)m(hs)f(\(IA)m
+(U)i(1976,)g(FK5\).)0 2440 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_PREC)g(\(EP0,)g(EP1,)h(RMATP\))0 2750 y FB(GIVEN)e
+FD(:)277 2896 y Fq(EP0)566 b FB(D)f FD(b)s(eginning)28
+b(ep)s(o)s(c)m(h)277 3009 y Fq(EP1)566 b FB(D)f FD(ending)29
+b(ep)s(o)s(c)m(h)0 3292 y FB(RETURNED)46 b FD(:)277 3463
+y Fq(RMA)-7 b(TP)400 b FB(D\(3,3\))350 b FD(precession)30
+b(matrix)0 3755 y FB(NOTES)44 b FD(:)311 3933 y(1.)i(The)30
+b(ep)s(o)s(c)m(hs)g(are)h(TDB)g(Julian)d(ep)s(o)s(c)m(hs.)311
+4069 y(2.)46 b(The)30 b(matrix)g(is)f(in)g(the)i(sense:)597
+4205 y FB(v)652 4219 y Fu(1)722 4205 y FD(=)f FB(M)p
+Fo(\001)p FB(v)1002 4219 y Fu(0)427 4341 y FD(where)i
+FB(v)747 4355 y Fu(1)818 4341 y FD(is)g(the)g(star)g(v)m(ector)i
+(relativ)m(e)e(to)h(the)f(mean)g(equator)h(and)e(equino)m(x)h(of)g(ep)s
+(o)s(c)m(h)g(EP1,)427 4454 y FB(M)c FD(is)e(the)i(3)14
+b Fo(\002)g FD(3)27 b(matrix)g(RMA)-8 b(TP)28 b(and)e
+FB(v)1899 4468 y Fu(0)1966 4454 y FD(is)h(the)g(star)h(v)m(ector)g
+(relativ)m(e)g(to)g(the)f(mean)h(equator)427 4567 y(and)i(equino)m(x)g
+(of)g(ep)s(o)s(c)m(h)h(EP0.)311 4703 y(3.)46 b(Though)d(the)i(matrix)e
+(metho)s(d)h(itself)f(is)g(rigorous,)k(the)d(precession)f(angles)h(are)
+h(expressed)427 4816 y(through)34 b(canonical)h(p)s(olynomials)d(whic)m
+(h)h(are)j(v)-5 b(alid)33 b(only)h(for)g(a)i(limited)c(time)j(span.)53
+b(There)427 4928 y(are)45 b(also)f(kno)m(wn)g(errors)f(in)g(the)h(IA)m
+(U)h(precession)e(rate.)83 b(The)44 b(absolute)g(accuracy)h(of)f(the)
+427 5041 y(presen)m(t)28 b(form)m(ulation)f(is)g(b)s(etter)h(than)f(0)
+1835 5004 y Fk(0)l(0)1839 5041 y Fl(:)p FD(1)i(from)e(1960)17
+b(AD)29 b(to)f(2040)17 b(AD,)29 b(b)s(etter)f(than)f(1)3526
+5004 y Fk(0)m(0)3595 5041 y FD(from)427 5154 y(1640)17
+b(AD)39 b(to)g(2360)17 b(AD,)40 b(and)d(remains)h(b)s(elo)m(w)f(3)2155
+5117 y Fk(0)l(0)2234 5154 y FD(for)h(the)h(whole)f(of)g(the)h(p)s(erio)
+s(d)d(500)16 b(BC)39 b(to)427 5267 y(3000)17 b(AD.)34
+b(The)e(errors)h(exceed)h(10)1649 5230 y Fk(0)m(0)1723
+5267 y FD(outside)e(the)h(range)h(1200)17 b(BC)32 b(to)i(3900)17
+b(AD,)34 b(exceed)g(100)3738 5230 y Fk(0)m(0)427 5380
+y FD(outside)45 b(4200)17 b(BC)45 b(to)h(5600)16 b(AD)46
+b(and)f(exceed)h(1000)2305 5343 y Fk(0)m(0)2392 5380
+y FD(outside)e(6800)17 b(BC)45 b(to)h(8200)17 b(AD.)46
+b(The)427 5493 y(SLALIB)37 b(routine)f(sla)p Ft(_)p FD(PRECL)g
+(implemen)m(ts)f(a)j(more)f(elab)s(orate)h(mo)s(del)e(whic)m(h)g(is)g
+(suitable)427 5606 y(for)30 b(problems)f(spanning)f(sev)m(eral)j
+(thousand)f(y)m(ears.)p eop
+%%Page: 129 131
+129 130 bop 0 52 a Fw(SUN/67.70)3206 b FD(129)0 351 y
+FB(REFERENCES)44 b FD(:)311 554 y(1.)i(Liesk)m(e,)31
+b(J.H.,)g(1979.)h Fq(Astr.Astr)-5 b(ophys.)33 b FB(73)p
+FD(,)e(282;)h(equations)e(6)h(&)f(7,)h(p283.)311 708
+y(2.)46 b(Kaplan,)30 b(G.H.,)h(1981.)i Fq(USNO)e(cir)-5
+b(cular)34 b(no.)f(163)p FD(,)f(pA2.)p 0 856 3780 8 v
+0 969 a Fx(SLA)p Fn(_)p Fx(PRECES)765 b Fm(Precession)f
+Fx(SLA)p Fn(_)p Fx(PRECES)0 1319 y FB(A)m(CTION)44 b
+FD(:)39 b(Precession)26 b({)h(either)f(the)g(old)g(\\FK4")i
+(\(Bessel-New)m(com)m(b,)i(pre)c(IA)m(U)h(1976\))i(or)d(new)g(\\FK5")
+227 1432 y(\(F)-8 b(ric)m(k)m(e,)33 b(p)s(ost)d(IA)m(U)h(1976\))h(as)f
+(required.)0 1620 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_PRECES)f(\(SYSTEM,)h(EP0,)h(EP1,)f(RA,)h(DC\))0
+1993 y FB(GIVEN)e FD(:)277 2139 y Fq(SYSTEM)357 b FB(C)569
+b FD(precession)30 b(to)h(b)s(e)f(applied:)38 b(`FK4')31
+b(or)g(`FK5')277 2252 y Fq(EP0,EP1)368 b FB(D)565 b FD(starting)30
+b(and)g(ending)f(ep)s(o)s(c)m(h)277 2365 y Fq(RA,DC)440
+b FB(D)565 b FD([)15 b Fl(\013;)g(\016)20 b FD(],)31
+b(mean)g(equator)g(&)f(equino)m(x)g(of)g(ep)s(o)s(c)m(h)g(EP0)0
+2757 y FB(RETURNED)46 b FD(:)277 2928 y Fq(RA,DC)440
+b FB(D)565 b FD([)15 b Fl(\013;)g(\016)20 b FD(],)31
+b(mean)g(equator)g(&)f(equino)m(x)g(of)g(ep)s(o)s(c)m(h)g(EP1)0
+3329 y FB(NOTES)44 b FD(:)311 3532 y(1.)i(Lo)m(w)m(ercase)33
+b(c)m(haracters)e(in)e(SYSTEM)h(are)h(acceptable.)311
+3685 y(2.)46 b(The)36 b(ep)s(o)s(c)m(hs)g(are)g(Besselian)g(if)f
+(SYSTEM=`FK4')h(and)f(Julian)f(if)h(`FK5'.)59 b(F)-8
+b(or)37 b(example,)h(to)427 3798 y(precess)d(co)s(ordinates)g(in)e(the)
+i(old)f(system)h(from)g(equino)m(x)f(1900.0)j(to)f(1950.0)h(the)f(call)
+e(w)m(ould)427 3911 y(b)s(e:)597 4065 y Ft(CALL)47 b(sla_PRECES)e
+(\('FK4',)h(1900D0,)g(1950D0,)f(RA,)i(DC\))311 4219 y
+FD(3.)f(This)39 b(routine)h(will)e FB(NOT)i FD(correctly)i(con)m(v)m
+(ert)g(b)s(et)m(w)m(een)f(the)h(old)e(and)g(the)h(new)f(systems)h({)427
+4332 y(for)h(example)g(con)m(v)m(ersion)g(from)g(B1950)i(to)e(J2000.)78
+b(F)-8 b(or)42 b(these)h(purp)s(oses)d(see)j(sla)p Ft(_)p
+FD(FK425,)427 4445 y(sla)p Ft(_)p FD(FK524,)32 b(sla)p
+Ft(_)p FD(FK45Z)e(and)f(sla)p Ft(_)p FD(FK54Z.)311 4599
+y(4.)46 b(If)27 b(an)h(in)m(v)-5 b(alid)25 b(SYSTEM)h(is)h(supplied,)e
+(v)-5 b(alues)27 b(of)g Fo(\000)p FD(99D0,)p Fo(\000)p
+FD(99D0)k(are)d(returned)e(for)i(b)s(oth)e(RA)427 4711
+y(and)k(DC.)p 0 4842 V 0 4955 a Fx(SLA)p Fn(_)p Fx(PRECL)447
+b Fm(Precession)37 b(Matrix)h(\(latest\))444 b Fx(SLA)p
+Fn(_)p Fx(PRECL)0 5305 y FB(A)m(CTION)44 b FD(:)k(F)-8
+b(orm)35 b(the)f(matrix)f(of)i(precession)e(b)s(et)m(w)m(een)i(t)m(w)m
+(o)g(ep)s(o)s(c)m(hs,)g(using)e(the)h(mo)s(del)f(of)h(Simon)f
+Fq(et)227 5418 y(al)p FD(.)f(\(1994\),)h(whic)m(h)c(is)g(suitable)g
+(for)h(long)g(p)s(erio)s(ds)e(of)j(time.)0 5606 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_PRECL)g(\(EP0,)g(EP1,)h(RMATP\))p
+eop
+%%Page: 130 132
+130 131 bop 0 52 a FD(130)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(EP0)566 b FB(D)f FD(b)s(eginning)28 b(ep)s(o)s(c)m(h)277
+610 y Fq(EP1)566 b FB(D)f FD(ending)29 b(ep)s(o)s(c)m(h)0
+1014 y FB(RETURNED)46 b FD(:)277 1186 y Fq(RMA)-7 b(TP)400
+b FB(D\(3,3\))350 b FD(precession)30 b(matrix)0 1598
+y FB(NOTES)44 b FD(:)311 1806 y(1.)i(The)30 b(ep)s(o)s(c)m(hs)g(are)h
+(TDB)g(Julian)d(ep)s(o)s(c)m(hs.)311 1962 y(2.)46 b(The)30
+b(matrix)g(is)f(in)g(the)i(sense:)597 2119 y FB(v)652
+2133 y Fu(1)722 2119 y FD(=)f FB(M)p Fo(\001)p FB(v)1002
+2133 y Fu(0)427 2275 y FD(where)i FB(v)747 2289 y Fu(1)818
+2275 y FD(is)g(the)g(star)g(v)m(ector)i(relativ)m(e)e(to)h(the)f(mean)g
+(equator)h(and)e(equino)m(x)h(of)g(ep)s(o)s(c)m(h)g(EP1,)427
+2388 y FB(M)c FD(is)e(the)i(3)14 b Fo(\002)g FD(3)27
+b(matrix)g(RMA)-8 b(TP)28 b(and)e FB(v)1899 2402 y Fu(0)1966
+2388 y FD(is)h(the)g(star)h(v)m(ector)g(relativ)m(e)g(to)g(the)f(mean)h
+(equator)427 2501 y(and)i(equino)m(x)g(of)g(ep)s(o)s(c)m(h)h(EP0.)311
+2657 y(3.)46 b(The)f(absolute)f(accuracy)i(of)f(the)g(mo)s(del)f(is)g
+(limited)f(b)m(y)i(the)g(uncertain)m(t)m(y)g(in)e(the)i(general)427
+2770 y(precession,)37 b(ab)s(out)f(0)1196 2733 y Fk(0)l(0)1200
+2770 y Fl(:)p FD(3)h(p)s(er)e(1000)i(y)m(ears.)58 b(The)36
+b(remainder)e(of)i(the)g(form)m(ulation)f(pro)m(vides)g(a)427
+2883 y(precision)j(of)i(1)g(milliarcsecond)d(o)m(v)m(er)k(the)f(in)m
+(terv)-5 b(al)38 b(from)h(1000)17 b(AD)41 b(to)f(3000)17
+b(AD,)40 b(0)3480 2846 y Fk(0)m(0)3484 2883 y Fl(:)p
+FD(1)h(from)427 2996 y(1000)17 b(BC)31 b(to)g(5000)17
+b(AD)31 b(and)e(1)1477 2959 y Fk(0)m(0)1548 2996 y FD(from)h(4000)17
+b(BC)31 b(to)g(8000)17 b(AD.)0 3408 y FB(REFERENCE)44
+b FD(:)d(Simon,)29 b(J.L.)h Fq(et)j(al)p FD(.,)e(1994.)i
+Fq(Astr.Astr)-5 b(ophys.)32 b FB(282)p FD(,)g(663.)p
+0 3561 3780 8 v 0 3674 a Fx(SLA)p Fn(_)p Fx(PRENUT)279
+b Fm(Precession-Nutation)35 b(Matrix)278 b Fx(SLA)p Fn(_)p
+Fx(PRENUT)0 4024 y FB(A)m(CTION)44 b FD(:)c(F)-8 b(orm)31
+b(the)g(matrix)f(of)g(precession)g(and)f(n)m(utation)i(\(SF2001\).)0
+4212 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PRENUT)f(\(EPOCH,)h
+(DATE,)h(RMATPN\))0 4592 y FB(GIVEN)e FD(:)277 4738 y
+Fq(EPOCH)409 b FB(D)565 b FD(Julian)28 b(Ep)s(o)s(c)m(h)i(for)g(mean)g
+(co)s(ordinates)277 4851 y Fq(D)n(A)-7 b(TE)481 b FB(D)565
+b FD(Mo)s(di\014ed)29 b(Julian)g(Date)j(\(JD)p Fo(\000)p
+FD(2400000.5\))j(for)30 b(true)h(co-)1658 4964 y(ordinates)0
+5368 y FB(RETURNED)46 b FD(:)277 5539 y Fq(RMA)-7 b(TPN)332
+b FB(D\(3,3\))350 b FD(com)m(bined)30 b(precession-n)m(utation)f
+(matrix)p eop
+%%Page: 131 133
+131 132 bop 0 52 a Fw(SUN/67.70)3206 b FD(131)0 351 y
+FB(NOTES)44 b FD(:)311 576 y(1.)i(The)30 b(ep)s(o)s(c)m(h)g(and)g(date)
+h(are)g(TDB.)g(TT)e(\(or)i(ev)m(en)g(UTC\))f(will)e(do.)311
+741 y(2.)46 b(The)30 b(matrix)g(is)f(in)g(the)i(sense:)597
+906 y FB(v)652 920 y Ff(tr)r(ue)820 906 y FD(=)f FB(M)p
+Fo(\001)p FB(v)1100 920 y Ff(mean)427 1071 y FD(where)23
+b FB(v)738 1085 y Ff(tr)r(ue)898 1071 y FD(is)g(the)g(star)g(v)m(ector)
+i(relativ)m(e)e(to)h(the)g(true)f(equator)h(and)e(equino)m(x)h(of)g(ep)
+s(o)s(c)m(h)g(D)m(A)-8 b(TE,)427 1184 y FB(M)35 b FD(is)e(the)h(3)23
+b Fo(\002)g FD(3)34 b(matrix)g(RMA)-8 b(TPN)34 b(and)g
+FB(v)2033 1198 y Ff(mean)2246 1184 y FD(is)g(the)g(star)g(v)m(ector)i
+(relativ)m(e)e(to)h(the)f(mean)427 1297 y(equator)d(and)f(equino)m(x)g
+(of)g(ep)s(o)s(c)m(h)h(EPOCH.)p 0 1467 3780 8 v 0 1580
+a Fx(SLA)p Fn(_)p Fx(PV2EL)100 b Fm(Orbital)37 b(Elemen)m(ts)f(from)h
+(P)m(osition/V)-10 b(elo)s(cit)m(y)96 b Fx(SLA)p Fn(_)p
+Fx(PV2EL)0 1930 y FB(A)m(CTION)44 b FD(:)36 b(Helio)s(cen)m(tric)22
+b(osculating)g(elemen)m(ts)g(obtained)g(from)f(instan)m(taneous)h(p)s
+(osition)f(and)g(v)m(elo)s(cit)m(y)-8 b(.)0 2118 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_PV2EL)g(\(PV,)g(DATE,)h(PMASS,)f(JFORMR,)g
+(JFORM,)g(EPOCH,)g(ORBINC,)1192 2231 y(ANODE,)f(PERIH,)i(AORQ,)f(E,)h
+(AORL,)f(DM,)h(JSTAT\))0 2637 y FB(GIVEN)e FD(:)277 2783
+y Fq(PV)606 b FB(D\(6\))431 b FD(helio)s(cen)m(tric)29
+b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43 b Fl(x)r(;)32
+b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20 b FD(],)31
+b(equatorial,)f(J2000)1825 2896 y(\(A)m(U,)i(A)m(U/s;)f(Note)h(1\))277
+3009 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(date)29 b(\(TT)f(Mo)s
+(di\014ed)e(Julian)g(Date)k(=)e(JD)p Fo(\000)p FD(2400000.5\))277
+3122 y Fq(PMASS)422 b FB(D)565 b FD(mass)30 b(of)h(the)f(planet)g
+(\(Sun)f(=)h(1;)h(Note)h(2\))277 3235 y Fq(JF)n(ORMR)347
+b FB(I)605 b FD(requested)30 b(elemen)m(t)h(set)g(\(1-3;)h(Note)g(3\))0
+3682 y FB(RETURNED)46 b FD(:)277 3828 y Fq(JF)n(ORM)413
+b FB(I)605 b FD(elemen)m(t)31 b(set)g(actually)f(returned)f(\(1-3;)j
+(Note)g(4\))277 3941 y Fq(EPOCH)409 b FB(D)565 b FD(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)g(\()p Fl(t)2462 3955 y Fu(0)2531
+3941 y FD(or)g Fl(T)13 b FD(,)30 b(TT)g(MJD\))277 4054
+y Fq(ORBINC)368 b FB(D)565 b FD(inclination)28 b(\()p
+Fl(i)p FD(,)j(radians\))277 4167 y Fq(ANODE)399 b FB(D)565
+b FD(longitude)29 b(of)i(the)f(ascending)g(no)s(de)g(\(\012,)g
+(radians\))277 4280 y Fq(PERIH)443 b FB(D)565 b FD(longitude)29
+b(or)i(argumen)m(t)f(of)h(p)s(erihelion)c(\()p Fl($)33
+b FD(or)e Fl(!)s FD(,)1825 4393 y(radians\))277 4506
+y Fq(A)n(OR)n(Q)466 b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s
+(erihelion)d(distance)k(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277
+4619 y Fq(E)674 b FB(D)565 b FD(eccen)m(tricit)m(y)32
+b(\()p Fl(e)p FD(\))277 4732 y Fq(A)n(ORL)477 b FB(D)565
+b FD(mean)31 b(anomaly)f(or)g(longitude)f(\()p Fl(M)41
+b FD(or)30 b Fl(L)p FD(,)h(radians,)1825 4844 y(JF)m(ORM=1,2)g(only\))
+277 4957 y Fq(DM)585 b FB(D)565 b FD(daily)29 b(motion)h(\()p
+Fl(n)p FD(,)g(radians,)g(JF)m(ORM=1)h(only\))277 5070
+y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1898
+5183 y(0)30 b(=)g(OK)1825 5296 y Fo(\000)p FD(1)g(=)g(illegal)f(PMASS)
+1825 5409 y Fo(\000)p FD(2)h(=)g(illegal)f(JF)m(ORMR)1825
+5522 y Fo(\000)p FD(3)h(=)g(p)s(osition/v)m(elo)s(cit)m(y)g(out)g(of)h
+(allo)m(w)m(ed)f(range)p eop
+%%Page: 132 134
+132 133 bop 0 52 a FD(132)0 351 y FB(NOTES)44 b FD(:)311
+539 y(1.)i(The)22 b(PV)g(6-v)m(ector)i(is)d(with)f(resp)s(ect)i(to)h
+(the)f(mean)g(equator)g(and)g(equino)m(x)f(of)h(ep)s(o)s(c)m(h)g
+(J2000.)39 b(The)427 652 y(orbital)29 b(elemen)m(ts)i(pro)s(duced)e
+(are)i(with)e(resp)s(ect)h(to)h(the)g(J2000)h(ecliptic)d(and)h(mean)g
+(equino)m(x.)311 798 y(2.)46 b(The)e(mass,)j(PMASS,)c(is)g(imp)s(ortan)
+m(t)g(only)g(for)g(the)h(larger)g(planets.)80 b(F)-8
+b(or)44 b(most)g(purp)s(oses)427 911 y(\()p Fq(e.g.)30
+b FD(asteroids\))h(use)f(0D0.)42 b(V)-8 b(alues)30 b(less)g(than)g
+(zero)h(are)g(illegal.)311 1058 y(3.)46 b(Three)30 b(di\013eren)m(t)g
+(elemen)m(t-format)i(options)d(are)i(supp)s(orted,)e(as)h(follo)m(ws.)
+427 1300 y(JF)m(ORM=1,)h(suitable)e(for)i(the)f(ma)5
+b(jor)30 b(planets:)602 1492 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)f Fl(t)1910 1506 y Fu(0)1980 1492
+y FD(\(TT)g(MJD\))602 1605 y(ORBINC)45 b(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 1718 y(ANODE)76 b(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+1831 y(PERIH)122 b(=)55 b(longitude)29 b(of)h(p)s(erihelion)d
+Fl($)34 b FD(\(radians\))602 1944 y(A)m(OR)m(Q)143 b(=)55
+b(mean)30 b(distance)g Fl(a)h FD(\(A)m(U\))602 2057 y(E)352
+b(=)55 b(eccen)m(tricit)m(y)31 b Fl(e)g FD(\(0)26 b Fo(\024)f
+Fl(e)h(<)f FD(1\))602 2170 y(A)m(ORL)154 b(=)55 b(mean)30
+b(longitude)f Fl(L)i FD(\(radians\))602 2282 y(DM)262
+b(=)55 b(daily)29 b(motion)h Fl(n)g FD(\(radians\))427
+2474 y(JF)m(ORM=2,)h(suitable)e(for)i(minor)d(planets:)602
+2667 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)f
+Fl(t)1910 2681 y Fu(0)1980 2667 y FD(\(TT)g(MJD\))602
+2779 y(ORBINC)45 b(=)55 b(inclination)27 b Fl(i)k FD(\(radians\))602
+2892 y(ANODE)76 b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)
+f(\012)h(\(radians\))602 3005 y(PERIH)122 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 3118
+y(A)m(OR)m(Q)143 b(=)55 b(mean)30 b(distance)g Fl(a)h
+FD(\(A)m(U\))602 3231 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h(<)f FD(1\))602
+3344 y(A)m(ORL)154 b(=)55 b(mean)30 b(anomaly)h Fl(M)40
+b FD(\(radians\))427 3536 y(JF)m(ORM=3,)31 b(suitable)e(for)i(comets:)
+602 3728 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(p)s(erihelion)c
+Fl(T)43 b FD(\(TT)30 b(MJD\))602 3841 y(ORBINC)45 b(=)55
+b(inclination)27 b Fl(i)k FD(\(radians\))602 3954 y(ANODE)76
+b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f(\012)h
+(\(radians\))602 4067 y(PERIH)122 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 4180
+y(A)m(OR)m(Q)143 b(=)55 b(p)s(erihelion)27 b(distance)j
+Fl(q)j FD(\(A)m(U\))602 4293 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h Fo(\024)f FD(10\))311
+4485 y(4.)46 b(It)26 b(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)e(to)j
+(generate)h(elemen)m(ts)f(in)f(the)g(form)g(requested)h(through)f(JF)m
+(ORMR.)427 4598 y(The)45 b(caller)f(is)g(noti\014ed)g(of)h(the)g(form)f
+(of)h(elemen)m(ts)g(actually)g(returned)f(b)m(y)g(means)h(of)g(the)427
+4711 y(JF)m(ORM)31 b(argumen)m(t:)554 4903 y(JF)m(ORMR)119
+b(JF)m(ORM)234 b(meaning)705 5128 y(1)465 b(1)362 b(OK:)30
+b(elemen)m(ts)g(are)h(in)e(the)i(requested)f(format)705
+5241 y(1)465 b(2)362 b(nev)m(er)30 b(happ)s(ens)705 5354
+y(1)465 b(3)362 b(orbit)29 b(not)i(elliptical)705 5467
+y(2)465 b(1)362 b(nev)m(er)30 b(happ)s(ens)705 5580 y(2)465
+b(2)362 b(OK:)30 b(elemen)m(ts)g(are)h(in)e(the)i(requested)f(format)
+705 5693 y(2)465 b(3)362 b(orbit)29 b(not)i(elliptical)p
+eop
+%%Page: 133 135
+133 134 bop 0 52 a Fw(SUN/67.70)3206 b FD(133)705 351
+y(3)465 b(1)362 b(nev)m(er)30 b(happ)s(ens)705 464 y(3)465
+b(2)362 b(nev)m(er)30 b(happ)s(ens)705 577 y(3)465 b(3)362
+b(OK:)30 b(elemen)m(ts)g(are)h(in)e(the)i(requested)f(format)311
+840 y(5.)46 b(The)30 b(argumen)m(ts)h(returned)f(for)g(eac)m(h)i(v)-5
+b(alue)31 b(of)f(JF)m(ORM)i(\()p Fq(cf.)41 b FD(Note)32
+b(5:)42 b(JF)m(ORM)31 b(ma)m(y)g(not)g(b)s(e)427 953
+y(the)g(same)g(as)f(JF)m(ORMR\))h(are)g(as)g(follo)m(ws:)602
+1217 y(JF)m(ORM)282 b(1)273 b(2)g(3)602 1443 y(EPOCH)k
+Fl(t)1241 1457 y Fu(0)1526 1443 y Fl(t)1559 1457 y Fu(0)1844
+1443 y Fl(T)602 1556 y FD(ORBINC)237 b Fl(i)287 b(i)g(i)602
+1668 y FD(ANODE)268 b(\012)252 b(\012)g(\012)602 1781
+y(PERIH)314 b Fl($)243 b(!)261 b(!)602 1894 y FD(A)m(OR)m(Q)335
+b Fl(a)270 b(a)g(q)602 2007 y FD(E)544 b Fl(e)276 b(e)g(e)602
+2120 y FD(A)m(ORL)346 b Fl(L)256 b(M)230 b FD(-)602 2233
+y(DM)454 b Fl(n)263 b FD(-)288 b(-)427 2496 y(where:)602
+2717 y Fl(t)635 2731 y Fu(0)1016 2717 y FD(is)29 b(the)i(ep)s(o)s(c)m
+(h)f(of)g(the)h(elemen)m(ts)g(\(MJD,)g(TT\))602 2830
+y Fl(T)361 b FD(is)29 b(the)i(ep)s(o)s(c)m(h)f(of)g(p)s(erihelion)d
+(\(MJD,)32 b(TT\))602 2943 y Fl(i)383 b FD(is)29 b(the)i(inclination)c
+(\(radians\))602 3056 y(\012)348 b(is)29 b(the)i(longitude)e(of)h(the)h
+(ascending)e(no)s(de)h(\(radians\))602 3169 y Fl($)339
+b FD(is)29 b(the)i(longitude)e(of)h(p)s(erihelion)d(\(radians\))602
+3282 y Fl(!)357 b FD(is)29 b(the)i(argumen)m(t)f(of)h(p)s(erihelion)c
+(\(radians\))602 3394 y Fl(a)366 b FD(is)29 b(the)i(mean)f(distance)g
+(\(A)m(U\))602 3507 y Fl(q)373 b FD(is)29 b(the)i(p)s(erihelion)c
+(distance)j(\(A)m(U\))602 3620 y Fl(e)372 b FD(is)29
+b(the)i(eccen)m(tricit)m(y)602 3733 y Fl(L)352 b FD(is)29
+b(the)i(longitude)e(\(radians,)g(0)21 b Fo(\000)f FD(2)p
+Fl(\031)s FD(\))602 3846 y Fl(M)326 b FD(is)29 b(the)i(mean)f(anomaly)g
+(\(radians,)g(0)20 b Fo(\000)g FD(2)p Fl(\031)s FD(\))602
+3959 y Fl(n)359 b FD(is)29 b(the)i(daily)d(motion)i(\(radians\))602
+4072 y(-)384 b(means)30 b(no)g(v)-5 b(alue)30 b(is)f(set)311
+4293 y(6.)46 b(A)m(t)c(v)m(ery)g(small)e(inclinations,)h(the)h
+(longitude)e(of)h(the)g(ascending)g(no)s(de)g(ANODE)g(b)s(ecomes)427
+4405 y(indeterminate)36 b(and)g(under)f(some)i(circumstances)f(ma)m(y)h
+(b)s(e)f(set)h(arbitrarily)d(to)j(zero.)60 b(Simi-)427
+4518 y(larly)-8 b(,)38 b(if)d(the)i(orbit)f(is)f(close)i(to)h
+(circular,)e(the)h(true)g(anomaly)f(b)s(ecomes)h(indeterminate)e(and)
+427 4631 y(under)h(some)i(circumstances)g(ma)m(y)g(b)s(e)f(set)h
+(arbitrarily)d(to)j(zero.)63 b(In)37 b(suc)m(h)g(cases,)j(the)e(other)
+427 4744 y(elemen)m(ts)h(are)g(automatically)g(adjusted)f(to)i(comp)s
+(ensate,)h(and)d(so)h(the)g(elemen)m(ts)g(remain)f(a)427
+4857 y(v)-5 b(alid)29 b(description)f(of)j(the)f(orbit.)311
+5039 y(7.)46 b(The)30 b(osculating)g(ep)s(o)s(c)m(h)g(for)g(the)h
+(returned)e(elemen)m(ts)i(is)e(the)i(argumen)m(t)f(D)m(A)-8
+b(TE.)0 5580 y FB(REFERENCE)44 b FD(:)55 b(Sterne,)40
+b(Theo)s(dore)d(E.,)j Fq(A)n(n)e(Intr)-5 b(o)g(duction)42
+b(to)e(Celestial)g(Me)-5 b(chanics,)40 b FD(In)m(terscience)227
+5693 y(Publishers,)27 b(1960.)p eop
+%%Page: 134 136
+134 135 bop 0 52 a FD(134)p 0 267 3780 8 v 0 380 a Fx(SLA)p
+Fn(_)p Fx(PV2UE)91 b Fm(P)m(osition/V)-10 b(elo)s(cit)m(y)34
+b(to)k(Univ)m(ersal)e(Elemen)m(ts)90 b Fx(SLA)p Fn(_)p
+Fx(PV2UE)0 730 y FB(A)m(CTION)44 b FD(:)39 b(Construct)26
+b(a)g(univ)m(ersal)f(elemen)m(t)i(set)g(based)f(on)g(an)h(instan)m
+(taneous)f(p)s(osition)e(and)i(v)m(elo)s(cit)m(y)-8 b(.)0
+918 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_PV2UE)g(\(PV,)g(DATE,)h
+(PMASS,)f(U,)h(JSTAT\))0 1269 y FB(GIVEN)e FD(:)277 1416
+y Fq(PV)606 b FB(D\(6\))431 b FD(helio)s(cen)m(tric)29
+b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43 b Fl(x)r(;)32
+b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20 b FD(],)31
+b(equatorial,)f(J2000)1825 1528 y(\(A)m(U,)i(A)m(U/s;)f(Note)h(1\))277
+1641 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(date)29 b(\(TT)f(Mo)s
+(di\014ed)e(Julian)g(Date)k(=)e(JD)p Fo(\000)p FD(2400000.5\))277
+1754 y Fq(PMASS)422 b FB(D)565 b FD(mass)30 b(of)h(the)f(planet)g
+(\(Sun)f(=)h(1;)h(Note)h(2\))0 2111 y FB(RETURNED)46
+b FD(:)277 2257 y Fq(U)668 b FB(D\(13\))379 b FD(univ)m(ersal)29
+b(orbital)g(elemen)m(ts)i(\(Note)h(3\))537 2370 y(\(1\))1006
+b(com)m(bined)30 b(mass)g(\()p Fl(M)h FD(+)20 b Fl(m)p
+FD(\))537 2483 y(\(2\))1006 b(total)31 b(energy)g(of)g(the)f(orbit)g
+(\()p Fl(\013)p FD(\))537 2596 y(\(3\))1006 b(reference)31
+b(\(osculating\))f(ep)s(o)s(c)m(h)h(\()p Fl(t)2869 2610
+y Fu(0)2908 2596 y FD(\))499 2709 y(\(4-6\))969 b(p)s(osition)29
+b(at)i(reference)g(ep)s(o)s(c)m(h)f(\()p FB(r)2836 2723
+y Fu(0)2876 2709 y FD(\))499 2822 y(\(7-9\))969 b(v)m(elo)s(cit)m(y)31
+b(at)g(reference)g(ep)s(o)s(c)m(h)f(\()p FB(v)2837 2836
+y Fu(0)2877 2822 y FD(\))514 2934 y(\(10\))984 b(helio)s(cen)m(tric)29
+b(distance)h(at)h(reference)g(ep)s(o)s(c)m(h)514 3047
+y(\(11\))984 b FB(r)1701 3061 y Fu(0)1741 3047 y Fl(:)p
+FB(v)1821 3061 y Fu(0)514 3160 y FD(\(12\))g(date)31
+b(\()p Fl(t)p FD(\))514 3273 y(\(13\))984 b(univ)m(ersal)29
+b(eccen)m(tric)i(anomaly)f(\()p Fl( )s FD(\))i(of)e(date,)i(appro)m(x)
+277 3386 y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1866
+3499 y(0)30 b(=)h(OK)1798 3612 y Fo(\000)p FD(1)f(=)g(illegal)f(PMASS)
+1798 3725 y Fo(\000)p FD(2)h(=)g(to)s(o)h(close)g(to)g(Sun)1798
+3838 y Fo(\000)p FD(3)f(=)g(to)s(o)h(slo)m(w)0 4194 y
+FB(NOTES)44 b FD(:)311 4383 y(1.)i(The)30 b(PV)h(6-v)m(ector)i(can)e(b)
+s(e)e(with)h(resp)s(ect)g(to)h(an)m(y)g(c)m(hosen)g(inertial)e(frame,)i
+(and)f(the)g(resulting)427 4496 y(univ)m(ersal-elemen)m(t)h(set)h(will)
+d(b)s(e)h(with)h(resp)s(ect)g(to)h(the)g(same)g(frame.)44
+b(A)31 b(common)h(c)m(hoice)g(will)427 4609 y(b)s(e)e(mean)g(equator)h
+(and)f(ecliptic)f(of)i(ep)s(o)s(c)m(h)f(J2000.)311 4756
+y(2.)46 b(The)e(mass,)j(PMASS,)c(is)g(imp)s(ortan)m(t)g(only)g(for)g
+(the)h(larger)g(planets.)80 b(F)-8 b(or)44 b(most)g(purp)s(oses)427
+4869 y(\()p Fq(e.g.)30 b FD(asteroids\))h(use)f(0D0.)42
+b(V)-8 b(alues)30 b(less)g(than)g(zero)h(are)g(illegal.)311
+5016 y(3.)46 b(The)40 b(\\univ)m(ersal")f(elemen)m(ts)h(are)g(those)h
+(whic)m(h)d(de\014ne)h(the)h(orbit)f(for)h(the)g(purp)s(oses)e(of)i
+(the)427 5128 y(metho)s(d)32 b(of)g(univ)m(ersal)e(v)-5
+b(ariables)31 b(\(see)i(reference\).)47 b(They)32 b(consist)f(of)i(the)
+f(com)m(bined)f(mass)h(of)427 5241 y(the)h(t)m(w)m(o)h(b)s(o)s(dies,)e
+(an)g(ep)s(o)s(c)m(h,)h(and)f(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m
+(y)h(v)m(ectors)h(\(arbitrary)e(reference)427 5354 y(frame\))j(at)g
+(that)g(ep)s(o)s(c)m(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g
+(includes)e(also)j(v)-5 b(arious)33 b(quan)m(tities)427
+5467 y(that)i(can,)g(in)d(fact,)k(b)s(e)d(deriv)m(ed)f(from)i(the)f
+(other)h(information.)49 b(This)32 b(approac)m(h)i(is)f(tak)m(en)i(to)
+427 5580 y(a)m(v)m(oiding)d(unnecessary)f(computation)h(and)g(loss)f
+(of)h(accuracy)-8 b(.)48 b(The)31 b(supplemen)m(tary)g(quan)m(ti-)427
+5693 y(ties)22 b(are)h(\(i\))f Fl(\013)p FD(,)i(whic)m(h)d(is)g(prop)s
+(ortional)f(to)j(the)g(total)g(energy)f(of)h(the)f(orbit,)h(\(ii\))e
+(the)i(helio)s(cen)m(tric)p eop
+%%Page: 135 137
+135 136 bop 0 52 a Fw(SUN/67.70)3206 b FD(135)427 351
+y(distance)35 b(at)g(ep)s(o)s(c)m(h,)h(\(iii\))d(the)i(out)m(w)m(ards)g
+(comp)s(onen)m(t)g(of)g(the)g(v)m(elo)s(cit)m(y)g(at)h(the)f(giv)m(en)f
+(ep)s(o)s(c)m(h,)427 464 y(\(iv\))29 b(an)f(estimate)h(of)g
+Fl( )s FD(,)h(the)e(\\univ)m(ersal)g(eccen)m(tric)h(anomaly")g(at)g(a)g
+(giv)m(en)g(date)g(and)f(\(v\))h(that)427 577 y(date.)0
+978 y FB(REFERENCE)44 b FD(:)d(Ev)m(erhart,)31 b(E.)f(&)g(Pitkin,)f
+(E.T.,)h(Am.)h(J.)f(Ph)m(ys.)g(51,)i(712,)g(1983.)p 0
+1126 3780 8 v 0 1239 a Fx(SLA)p Fn(_)p Fx(PV)l(OBS)277
+b Fm(Observ)-7 b(atory)37 b(P)m(osition)f(&)j(V)-10 b(elo)s(cit)m(y)278
+b Fx(SLA)p Fn(_)p Fx(PV)l(OBS)0 1589 y FB(A)m(CTION)44
+b FD(:)c(P)m(osition)30 b(and)g(v)m(elo)s(cit)m(y)h(of)f(an)h
+(observing)e(station.)0 1777 y FB(CALL)45 b FD(:)77 b
+Ft(CALL)46 b(sla_PVOBS)g(\(P,)h(H,)g(STL,)f(PV\))0 2150
+y FB(GIVEN)f FD(:)277 2296 y Fq(P)674 b FB(D)565 b FD(latitude)30
+b(\(geo)s(detic,)h(radians\))277 2409 y Fq(H)668 b FB(D)565
+b FD(heigh)m(t)31 b(ab)s(o)m(v)m(e)i(reference)f(spheroid)d(\(geo)s
+(detic,)k(metres\))277 2635 y Fq(STL)563 b FB(D)i FD(lo)s(cal)30
+b(apparen)m(t)g(sidereal)f(time)h(\(radians\))0 3027
+y FB(RETURNED)46 b FD(:)277 3173 y Fq(PV)606 b FB(D\(6\))431
+b FD([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43 b Fl(x)r(;)32
+b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20 b FD(])54
+b(\(A)m(U,)i(A)m(U)g(s)2761 3140 y Fp(\000)p Fu(1)2855
+3173 y FD(,)k(true)55 b(equator)g(and)1658 3286 y(equino)m(x)30
+b(of)h(date\))0 3679 y FB(NOTE)44 b FD(:)d(IA)m(U)31
+b(1976)h(constan)m(ts)f(are)g(used.)p 0 3810 V 0 3922
+a Fx(SLA)p Fn(_)p Fx(PXY)756 b Fm(Apply)38 b(Linear)g(Mo)s(del)758
+b Fx(SLA)p Fn(_)p Fx(PXY)0 4273 y FB(A)m(CTION)44 b FD(:)64
+b(Giv)m(en)42 b(arra)m(ys)h(of)f Fq(exp)-5 b(e)g(cte)g(d)53
+b FD(and)42 b Fq(me)-5 b(asur)g(e)g(d)60 b FD([)15 b
+Fl(x;)g(y)j FD(])43 b(co)s(ordinates,)i(and)c(a)i(linear)e(mo)s(del)227
+4386 y(relating)36 b(them)h(\(as)g(pro)s(duced)f(b)m(y)g(sla)p
+Ft(_)p FD(FITXY\),)h(compute)g(the)g(arra)m(y)g(of)g
+Fq(pr)-5 b(e)g(dicte)g(d)49 b FD(co)s(ordinates)227 4499
+y(and)30 b(the)h(RMS)f(residuals.)0 4686 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_PXY)g(\(NP,XYE,XYM,COEFFS,XYP,XR)o(MS,Y)o
+(RMS)o(,RRM)o(S\))0 5059 y FB(GIVEN)f FD(:)277 5205 y
+Fq(NP)606 b FB(I)f FD(n)m(um)m(b)s(er)29 b(of)i(samples)277
+5318 y Fq(XYE)538 b FB(D\(2,NP\))249 b FD(exp)s(ected)31
+b([)15 b Fl(x;)g(y)k FD(])30 b(for)g(eac)m(h)i(sample)277
+5431 y Fq(XYM)518 b FB(D\(2,NP\))249 b FD(measured)30
+b([)15 b Fl(x;)g(y)k FD(])30 b(for)g(eac)m(h)i(sample)277
+5544 y Fq(COEFFS)370 b FB(D\(6\))431 b FD(co)s(e\016cien)m(ts)31
+b(of)g(mo)s(del)e(\(see)i(b)s(elo)m(w\))p eop
+%%Page: 136 138
+136 137 bop 0 52 a FD(136)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(XYP)538 b FB(D\(2,NP\))249 b FD(predicted)29
+b([)15 b Fl(x;)g(y)k FD(])31 b(for)f(eac)m(h)h(sample)277
+610 y Fq(XRMS)469 b FB(D)565 b FD(RMS)30 b(in)f(X)277
+723 y Fq(YRMS)469 b FB(D)565 b FD(RMS)30 b(in)f(Y)277
+836 y Fq(RRMS)471 b FB(D)565 b FD(total)31 b(RMS)f(\(v)m(ector)j(sum)c
+(of)i(XRMS)f(and)g(YRMS\))0 1214 y FB(NOTES)44 b FD(:)311
+1411 y(1.)i(The)33 b(mo)s(del)g(is)f(supplied)f(in)h(the)i(arra)m(y)g
+(COEFFS.)f(Naming)g(the)h(six)e(elemen)m(ts)i(of)g(COEFFS)427
+1524 y Fl(a;)15 b(b;)g(c;)g(d;)g(e)40 b FD(&)d Fl(f)10
+b FD(,)39 b(the)e(mo)s(del)f(transforms)h Fq(me)-5 b(asur)g(e)g(d)49
+b FD(co)s(ordinates)37 b([)p Fl(x)2945 1538 y Ff(m)3012
+1524 y Fl(;)15 b(y)3097 1538 y Ff(m)3178 1524 y FD(])38
+b(in)m(to)f Fq(pr)-5 b(e)g(dicte)g(d)427 1637 y FD(co)s(ordinates)30
+b([)p Fl(x)987 1651 y Ff(p)1027 1637 y Fl(;)15 b(y)1112
+1651 y Ff(p)1167 1637 y FD(])31 b(as)f(follo)m(ws:)597
+1788 y Fl(x)649 1802 y Ff(p)714 1788 y FD(=)25 b Fl(a)20
+b FD(+)g Fl(bx)1060 1802 y Ff(m)1147 1788 y FD(+)g Fl(cy)1322
+1802 y Ff(m)597 1901 y Fl(y)642 1915 y Ff(p)707 1901
+y FD(=)25 b Fl(d)20 b FD(+)g Fl(ex)1055 1915 y Ff(m)1142
+1901 y FD(+)g Fl(f)10 b(y)1333 1915 y Ff(m)311 2052 y
+FD(2.)46 b(The)30 b(residuals)e(are)j(\()p Fl(x)1228
+2066 y Ff(p)1288 2052 y Fo(\000)20 b Fl(x)1431 2066 y
+Ff(e)1468 2052 y FD(\))31 b(and)e(\()p Fl(y)1790 2066
+y Ff(p)1850 2052 y Fo(\000)20 b Fl(y)1986 2066 y Ff(e)2022
+2052 y FD(\).)311 2203 y(3.)46 b(If)38 b(NP)g(is)f(less)h(than)g(or)g
+(equal)g(to)h(zero,)i(no)d(co)s(ordinates)g(are)g(transformed,)i(and)d
+(the)i(RMS)427 2316 y(residuals)28 b(are)j(all)e(zero.)311
+2467 y(4.)46 b(See)31 b(also)f(sla)p Ft(_)p FD(FITXY,)g(sla)p
+Ft(_)p FD(INVF,)h(sla)p Ft(_)p FD(XY2XY,)g(sla)p Ft(_)p
+FD(DCMPF)p 0 2609 3780 8 v 0 2722 a Fx(SLA)p Fn(_)p Fx(RANDOM)489
+b Fm(Random)37 b(Num)m(b)s(er)489 b Fx(SLA)p Fn(_)p Fx(RANDOM)0
+3073 y FB(A)m(CTION)44 b FD(:)c(Generate)32 b(pseudo-random)d(real)h(n)
+m(um)m(b)s(er)f(in)h(the)g(range)h(0)26 b Fo(\024)e Fl(x)i(<)f
+FD(1.)0 3260 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_RANDOM)d
+(\(SEED\))0 3621 y FB(GIVEN)g FD(:)277 3792 y Fq(SEED)492
+b FB(R)567 b FD(an)30 b(arbitrary)g(real)g(n)m(um)m(b)s(er)0
+4179 y FB(RETURNED)46 b FD(:)277 4325 y Fq(SEED)492 b
+FB(R)567 b FD(a)31 b(new)f(arbitrary)f(v)-5 b(alue)277
+4438 y Fq(sla)p Ft(_)p Fq(RANDOM)159 b FB(R)567 b FD(Pseudo-random)30
+b(real)g(n)m(um)m(b)s(er)f(0)c Fo(\024)g Fl(x)h(<)f FD(1.)0
+4816 y FB(NOTE)44 b FD(:)d(The)30 b(implemen)m(tation)f(is)g(mac)m
+(hine-dep)s(enden)m(t.)p 0 4959 V 0 5072 a Fx(SLA)p Fn(_)p
+Fx(RANGE)407 b Fm(Put)38 b(Angle)g(in)m(to)f(Range)h
+Fh(\006)p Fg(\031)413 b Fx(SLA)p Fn(_)p Fx(RANGE)0 5422
+y FB(A)m(CTION)44 b FD(:)c(Normalize)31 b(an)f(angle)g(in)m(to)h(the)f
+(range)h Fo(\006)p Fl(\031)i FD(\(single)c(precision\).)0
+5610 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_RANGE)d(\(ANGLE\))p
+eop
+%%Page: 137 139
+137 138 bop 0 52 a Fw(SUN/67.70)3206 b FD(137)0 351 y
+FB(GIVEN)45 b FD(:)277 523 y Fq(ANGLE)411 b FB(R)567
+b FD(angle)31 b(in)e(radians)0 871 y FB(RETURNED)46 b
+FD(:)277 1042 y Fq(sla)p Ft(_)p Fq(RANGE)248 b FB(R)567
+b FD(ANGLE)31 b(expressed)f(in)f(the)h(range)h Fo(\006)p
+Fl(\031)s FD(.)p 0 1185 3780 8 v 0 1298 a Fx(SLA)p Fn(_)p
+Fx(RANORM)206 b Fm(Put)39 b(Angle)e(in)m(to)h(Range)g(0)7
+b Fh(\000)g Fm(2)p Fg(\031)211 b Fx(SLA)p Fn(_)p Fx(RANORM)0
+1648 y FB(A)m(CTION)44 b FD(:)c(Normalize)31 b(an)f(angle)g(in)m(to)h
+(the)f(range)h(0)5 b Fo(\000)g FD(2)p Fl(\031)34 b FD(\(single)29
+b(precision\).)0 1836 y FB(CALL)45 b FD(:)77 b Ft(R)47
+b(=)h(sla_RANORM)d(\(ANGLE\))0 2174 y FB(GIVEN)g FD(:)277
+2345 y Fq(ANGLE)411 b FB(R)567 b FD(angle)31 b(in)e(radians)0
+2693 y FB(RETURNED)46 b FD(:)277 2865 y Fq(sla)p Ft(_)p
+Fq(RANORM)162 b FB(R)567 b FD(ANGLE)31 b(expressed)f(in)f(the)h(range)h
+(0)5 b Fo(\000)g FD(2)p Fl(\031)p 0 3008 V 0 3120 a Fx(SLA)p
+Fn(_)p Fx(R)l(CC)528 b Fm(Barycen)m(tric)36 b(Co)s(ordinate)g(Time)526
+b Fx(SLA)p Fn(_)p Fx(R)l(CC)0 3471 y FB(CALL)45 b FD(:)77
+b Ft(D)47 b(=)h(sla_RCC)d(\(TDB,)i(UT1,)f(WL,)h(U,)h(V\))0
+3658 y FB(A)m(CTION)c FD(:)c(The)29 b(relativistic)f(clo)s(c)m(k)j
+(correction:)40 b(the)30 b(di\013erence)g(b)s(et)m(w)m(een)g
+Fq(pr)-5 b(op)g(er)34 b(time)j FD(at)31 b(a)f(p)s(oin)m(t)f(on)227
+3771 y(the)21 b(Earth)f(and)f Fq(c)-5 b(o)g(or)g(dinate)27
+b(time)g FD(in)19 b(the)i(solar)e(system)i(barycen)m(tric)f(space-time)
+h(frame)f(of)h(reference.)227 3884 y(The)40 b(prop)s(er)f(time)h(is)g
+(T)-8 b(errestrial)39 b(Time,)j(TT;)e(the)g(co)s(ordinate)h(time)f(is)f
+(an)h(implemen)m(tation)f(of)227 3997 y(Barycen)m(tric)31
+b(Dynamical)f(Time,)g(TDB.)0 4344 y FB(GIVEN)45 b FD(:)277
+4490 y Fq(TDB)538 b FB(D)565 b FD(TDB)31 b(\(MJD:)g(JD)p
+Fo(\000)p FD(2400000.5\))277 4603 y Fq(UT1)557 b FB(D)565
+b FD(univ)m(ersal)29 b(time)h(\(fraction)g(of)h(one)f(da)m(y\))277
+4716 y Fq(WL)588 b FB(D)565 b FD(clo)s(c)m(k)31 b(longitude)e
+(\(radians)g(w)m(est\))277 4829 y Fq(U)668 b FB(D)565
+b FD(clo)s(c)m(k)31 b(distance)f(from)g(Earth)g(spin)e(axis)i(\(km\))
+277 4942 y Fq(V)668 b FB(D)565 b FD(clo)s(c)m(k)23 b(distance)e(north)h
+(of)g(Earth)g(equatorial)g(plane)f(\(km\))0 5394 y FB(RETURNED)46
+b FD(:)277 5566 y Fq(sla)p Ft(_)p Fq(R)n(CC)388 b FB(D)565
+b FD(TDB)p Fo(\000)p FD(TT)30 b(\(sec;)i(Note)f(1\))p
+eop
+%%Page: 138 140
+138 139 bop 0 52 a FD(138)0 351 y FB(NOTES)44 b FD(:)311
+550 y(1.)i(TDB)37 b(is)e(co)s(ordinate)h(time)f(in)g(the)h(solar)g
+(system)g(barycen)m(tre)h(frame)f(of)g(reference,)i(in)d(units)427
+663 y(c)m(hosen)j(to)g(eliminate)e(the)h(scale)h(di\013erence)f(with)f
+(resp)s(ect)h(to)h(terrestrial)e(time.)61 b(TT)37 b(is)f(the)427
+776 y(prop)s(er)29 b(time)h(for)g(clo)s(c)m(ks)h(at)g(mean)g(sea)g(lev)
+m(el)f(on)g(the)h(Earth.)311 928 y(2.)46 b(The)f(n)m(um)m(b)s(er)f
+(returned)h(b)m(y)g(sla)p Ft(_)p FD(R)m(CC)f(comprises)h(a)h(main)e
+(\(ann)m(ual\))h(sin)m(usoidal)e(term)i(of)427 1041 y(amplitude)30
+b(appro)m(ximately)i(1.66ms,)i(plus)c(lunar)g(and)i(planetary)f(terms)h
+(up)f(to)i(ab)s(out)f(20)p Fl(\026)p FD(s,)427 1154 y(and)d(diurnal)e
+(terms)i(up)f(to)i(2)p Fl(\026)p FD(s.)41 b(The)29 b(v)-5
+b(ariation)28 b(arises)h(from)g(the)h(transv)m(erse)f(Doppler)g
+(e\013ect)427 1267 y(and)40 b(the)h(gra)m(vitational)f(red-shift)f(as)i
+(the)f(observ)m(er)h(v)-5 b(aries)40 b(in)f(sp)s(eed)h(and)f(mo)m(v)m
+(es)j(through)427 1380 y(di\013eren)m(t)30 b(gra)m(vitational)h(p)s
+(oten)m(tials.)311 1532 y(3.)46 b(The)29 b(argumen)m(t)g(TDB)h(is,)f
+(strictly)-8 b(,)29 b(the)g(barycen)m(tric)g(co)s(ordinate)g(time;)h
+(ho)m(w)m(ev)m(er,)h(the)e(terres-)427 1645 y(trial)g(time)i(\(TT\))f
+(can)h(in)e(practice)h(b)s(e)g(used)g(without)f(signi\014can)m(t)g
+(loss)h(of)h(accuracy)-8 b(.)311 1797 y(4.)46 b(The)27
+b(geo)s(cen)m(tric)i(mo)s(del)e(is)f(that)i(of)g(F)-8
+b(airhead)28 b(&)f(Bretagnon)i(\(1990\),)h(in)d(its)g(full)e(form.)39
+b(It)28 b(w)m(as)427 1910 y(supplied)34 b(b)m(y)j(F)-8
+b(airhead)37 b(\(priv)-5 b(ate)36 b(comm)m(unication\))h(as)g(a)h(F)-8
+b(ortran)37 b(subroutine.)59 b(A)37 b(n)m(um)m(b)s(er)427
+2022 y(of)32 b(co)s(ding)f(c)m(hanges)i(w)m(ere)g(made)f(to)h(this)e
+(subroutine)e(in)i(order)h(matc)m(h)g(the)h(calling)d(sequence)427
+2135 y(of)41 b(previous)e(v)m(ersions)h(of)h(the)g(presen)m(t)g
+(routine,)h(to)g(comply)e(with)f(Starlink)g(programming)427
+2248 y(standards)f(and)f(to)i(a)m(v)m(oid)g(compilation)e(problems)f
+(on)i(certain)g(mac)m(hines.)64 b(The)38 b(n)m(umerical)427
+2361 y(results)29 b(are)i(essen)m(tially)f(una\013ected)g(b)m(y)h(the)f
+(c)m(hanges.)311 2513 y(5.)46 b(The)27 b(top)s(o)s(cen)m(tric)h(mo)s
+(del)e(is)g(from)h(Mo)m(y)m(er)i(\(1981\))h(and)d(Murra)m(y)g
+(\(1983\).)43 b(It)27 b(is)f(an)i(appro)m(xima-)427 2626
+y(tion)i(to)h(the)g(expression)1860 2729 y FB(v)1915
+2743 y Ff(e)1972 2729 y Fo(\001)21 b FD(\()p FB(x)f Fo(\000)g
+FB(x)2274 2743 y Ff(e)2311 2729 y FD(\))p 1860 2769 487
+4 v 2064 2853 a Fl(c)2103 2826 y Fu(2)427 2988 y FD(where)31
+b FB(v)746 3002 y Ff(e)813 2988 y FD(is)f(the)h(barycen)m(tric)g(v)m
+(elo)s(cit)m(y)g(of)g(the)g(Earth,)f FB(x)h FD(and)f
+FB(x)2737 3002 y Ff(e)2805 2988 y FD(are)h(the)g(barycen)m(tric)g(p)s
+(osi-)427 3101 y(tions)j(of)h(the)f(observ)m(er)h(and)f(the)h(Earth)f
+(resp)s(ectiv)m(ely)-8 b(,)35 b(and)f(c)h(is)e(the)i(sp)s(eed)f(of)g
+(ligh)m(t.)53 b(It)34 b(can)427 3214 y(b)s(e)c(disabled,)e(if)i
+(necessary)-8 b(,)31 b(b)m(y)f(setting)h(the)f(argumen)m(ts)h(U)g(and)e
+(V)i(to)g(zero.)311 3366 y(6.)46 b(During)30 b(the)h(in)m(terv)-5
+b(al)30 b(1950-2050,)36 b(the)31 b(absolute)g(accuracy)h(is)e(b)s
+(etter)h(than)g Fo(\006)p FD(3)g(nanoseconds)427 3479
+y(relativ)m(e)37 b(to)h(direct)f(n)m(umerical)e(in)m(tegrations)i
+(using)f(the)h(JPL)g(DE200/LE200)j(solar)c(system)427
+3592 y(ephemeris.)311 3744 y(7.)46 b(The)35 b(IA)m(U)h(1976)h
+(de\014nition)c(of)j(TDB)g(w)m(as)f(that)h(it)f(m)m(ust)h(di\013er)e
+(from)h(TT)f(only)h(b)m(y)g(p)s(erio)s(dic)427 3857 y(terms.)51
+b(Though)33 b(practical,)h(this)f(is)g(an)h(imprecise)e(de\014nition)f
+(whic)m(h)i(ignores)g(the)h(existence)427 3970 y(of)40
+b(v)m(ery)h(long-p)s(erio)s(d)c(and)j(secular)f(e\013ects)i(in)e(the)h
+(dynamics)f(of)h(the)g(solar)g(system.)69 b(As)40 b(a)427
+4082 y(consequence,)e(di\013eren)m(t)d(implemen)m(tations)f(of)i(TDB)f
+(will,)g(in)f(general,)j(di\013er)d(in)g(zero-p)s(oin)m(t)427
+4195 y(and)i(will)e(drift)h(linearly)g(relativ)m(e)i(to)g(one)g(other.)
+60 b(In)36 b(1991)i(the)f(IA)m(U)g(in)m(tro)s(duced)f(new)g(time)427
+4308 y(scales)31 b(designed)f(to)i(o)m(v)m(ercome)h(these)f(ob)5
+b(jections:)42 b(geo)s(cen)m(tric)32 b(co)s(ordinate)f(time,)g(TCG,)g
+(and)427 4421 y(barycen)m(tric)26 b(co)s(ordinate)f(time,)i(TCB.)f(In)f
+(principle,)e(therefore,)k(TDB)g(is)d(obsolete.)40 b(Ho)m(w)m(ev)m(er,)
+427 4534 y(sla)p Ft(_)p FD(R)m(CC)30 b(can)g(b)s(e)g(used)g(to)h
+(implemen)m(t)e(the)h(p)s(erio)s(dic)e(part)i(of)h(TCB)p
+Fo(\000)p FD(TCG.)0 4925 y FB(REFERENCES)44 b FD(:)311
+5124 y(1.)i(F)-8 b(airhead,)16 b(L.,)30 b(&)g(Bretagnon,)17
+b(P)-8 b(.,)31 b Fq(Astr)-5 b(on.)16 b(Astr)-5 b(ophys.,)33
+b FB(229)p FD(,)e(240-247)j(\(1990\).)311 5276 y(2.)46
+b(Mo)m(y)m(er,)17 b(T.D.,)32 b Fq(Cel.)15 b(Me)-5 b(ch.,)30
+b FB(23)p FD(,)h(33)g(\(1981\).)311 5428 y(3.)46 b(Murra)m(y)-8
+b(,)16 b(C.A.,)31 b Fq(V)-7 b(e)i(ctorial)34 b(Astr)-5
+b(ometry,)32 b FD(Adam)e(Hilger)f(\(1983\).)311 5580
+y(4.)46 b(Seidelmann,)13 b(P)-8 b(.K.)26 b Fq(et)i(al,)e(Explanatory)31
+b(Supplement)e(to)g(the)f(Astr)-5 b(onomic)g(al)30 b(A)n(lmanac,)d
+FD(Chap-)427 5693 y(ter)k(2,)g(Univ)m(ersit)m(y)f(Science)g(Bo)s(oks)h
+(\(1992\).)p eop
+%%Page: 139 141
+139 140 bop 0 52 a Fw(SUN/67.70)3206 b FD(139)311 351
+y(5.)46 b(Simon,)14 b(J.L.,)23 b(Bretagnon,)16 b(P)-8
+b(.,)23 b(Chapron)m(t,)15 b(J.,)23 b(Chapron)m(t-T)-8
+b(ouze,)16 b(M.,)23 b(F)-8 b(rancou,)16 b(G.)21 b(&)f(Lask)-5
+b(ar,)15 b(J.,)427 464 y Fq(Astr)-5 b(on.Astr)g(ophys.,)34
+b FB(282)p FD(,)d(663-683)i(\(1994\).)p 0 597 3780 8
+v 0 710 a Fx(SLA)p Fn(_)p Fx(RDPLAN)329 b Fm(Apparen)m(t)38
+b([)20 b Fg(\013)q(;)g(\016)j Fm(])39 b(of)f(Planet)329
+b Fx(SLA)p Fn(_)p Fx(RDPLAN)0 1060 y FB(A)m(CTION)44
+b FD(:)c(Appro)m(ximate)31 b(top)s(o)s(cen)m(tric)f(apparen)m(t)h([)15
+b Fl(\013;)g(\016)20 b FD(])31 b(and)e(angular)h(size)g(of)h(a)f
+(planet.)0 1248 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_RDPLAN)f
+(\(DATE,)h(NP,)h(ELONG,)f(PHI,)h(RA,)g(DEC,)g(DIAM\))0
+1591 y FB(GIVEN)e FD(:)277 1737 y Fq(D)n(A)-7 b(TE)481
+b FB(D)565 b FD(MJD)31 b(of)f(observ)-5 b(ation)31 b(\(JD)p
+Fo(\000)p FD(2400000.5\))277 1850 y Fq(NP)606 b FB(I)f
+FD(planet:)1825 1963 y(1)15 b(=)g(Mercury)1825 2076 y(2)g(=)g(V)-8
+b(en)m(us)1825 2189 y(3)15 b(=)g(Mo)s(on)1825 2302 y(4)g(=)g(Mars)1825
+2415 y(5)g(=)g(Jupiter)1825 2528 y(6)g(=)g(Saturn)1825
+2641 y(7)g(=)g(Uran)m(us)1825 2754 y(8)g(=)g(Neptune)1825
+2867 y(9)g(=)g(Pluto)1728 2979 y(else)h(=)e(Sun)277 3092
+y Fq(ELONG,PHI)216 b FB(D)565 b FD(observ)m(er's)30 b(longitude)f
+(\(east)i(+v)m(e\))g(and)f(latitude)f(\(radi-)1658 3205
+y(ans\))0 3548 y FB(RETURNED)46 b FD(:)277 3694 y Fq(RA,DEC)378
+b FB(D)565 b FD(top)s(o)s(cen)m(tric)31 b(apparen)m(t)f([)15
+b Fl(\013;)g(\016)21 b FD(])30 b(\(radians\))277 3807
+y Fq(DIAM)482 b FB(D)565 b FD(angular)30 b(diameter)g(\(equatorial,)g
+(radians\))0 4149 y FB(NOTES)44 b FD(:)311 4335 y(1.)i(The)35
+b(date)h(is)f(in)f(a)i(dynamical)e(time)h(scale)h(\(TDB,)g(formerly)e
+(ET\))h(and)g(is)g(in)f(the)i(form)e(of)i(a)427 4448
+y(Mo)s(di\014ed)e(Julian)g(Date)j(\(JD)p Fo(\000)p FD(2400000.5\).)61
+b(F)-8 b(or)37 b(all)d(practical)i(purp)s(oses,)f(TT)g(can)h(b)s(e)f
+(used)427 4561 y(instead)30 b(of)g(TDB,)h(and)f(for)g(man)m(y)h
+(applications)d(UT)j(will)c(do)k(\(except)g(for)f(the)h(Mo)s(on\).)311
+4706 y(2.)46 b(The)32 b(longitude)f(and)h(latitude)f(allo)m(w)h
+(correction)g(for)g(geo)s(cen)m(tric)i(parallax.)45 b(This)30
+b(is)i(a)g(ma)5 b(jor)427 4819 y(e\013ect)31 b(for)d(the)h(Mo)s(on,)h
+(but)e(in)f(the)i(con)m(text)i(of)e(the)g(limited)e(accuracy)j(of)f
+(the)g(presen)m(t)f(routine)427 4932 y(its)35 b(e\013ect)h(on)f
+(planetary)f(p)s(ositions)f(is)h(small)f(\(negligible)g(for)h(the)h
+(outer)g(planets\).)54 b(Geo)s(cen-)427 5044 y(tric)32
+b(p)s(ositions)e(can)j(b)s(e)e(generated)i(b)m(y)f(appropriate)g(use)g
+(of)g(the)g(routines)f(sla)p Ft(_)p FD(DMOON)h(and)427
+5157 y(sla)p Ft(_)p FD(PLANET.)311 5302 y(3.)46 b(The)30
+b(direction)f(accuracy)j(\(arcsec,)g(1000-3000)19 b(AD\))31
+b(is)f(of)g(order:)793 5467 y(Sun)787 b(5)793 5580 y(Mercury)606
+b(2)793 5693 y(V)-8 b(en)m(us)659 b(10)p eop
+%%Page: 140 142
+140 141 bop 0 52 a FD(140)793 351 y(Mo)s(on)667 b(30)793
+464 y(Mars)694 b(50)793 577 y(Jupiter)608 b(90)793 690
+y(Saturn)625 b(90)793 803 y(Uran)m(us)610 b(90)793 916
+y(Neptune)558 b(10)793 1029 y(Pluto)721 b(1)91 b(\(1885-2099)20
+b(AD)31 b(only\))427 1193 y(The)40 b(angular)g(diameter)g(accuracy)h
+(is)f(ab)s(out)g(0.4\045)h(for)f(the)h(Mo)s(on,)i(and)d(0.01\045)i(or)e
+(b)s(etter)427 1306 y(for)g(the)g(Sun)f(and)h(planets.)69
+b(F)-8 b(or)41 b(more)f(information)e(on)i(accuracy)-8
+b(,)45 b(refer)39 b(to)i(the)g(routines)427 1419 y(sla)p
+Ft(_)p FD(PLANET)29 b(and)h(sla)p Ft(_)p FD(DMOON,)g(whic)m(h)g(the)g
+(presen)m(t)h(routine)e(uses.)p 0 1545 3780 8 v 0 1658
+a Fx(SLA)p Fn(_)p Fx(REF)l(CO)562 b Fm(Refraction)36
+b(Constan)m(ts)560 b Fx(SLA)p Fn(_)p Fx(REF)l(CO)0 2009
+y FB(A)m(CTION)44 b FD(:)36 b(Determine)21 b(the)g(constan)m(ts)g
+Fl(a)g FD(and)f Fl(b)h FD(in)f(the)h(atmospheric)f(refraction)h(mo)s
+(del)e(\001)p Fl(\020)32 b FD(=)25 b Fl(a)15 b FD(tan)g
+Fl(\020)8 b FD(+)227 2122 y Fl(b)15 b FD(tan)413 2089
+y Fu(3)467 2122 y Fl(\020)7 b FD(,)25 b(where)f Fl(\020)30
+b FD(is)23 b(the)i Fq(observe)-5 b(d)34 b FD(zenith)24
+b(distance)f(\()p Fq(i.e.)h FD(a\013ected)i(b)m(y)e(refraction\))g(and)
+f(\001)p Fl(\020)30 b FD(is)24 b(what)227 2235 y(to)31
+b(add)f(to)h Fl(\020)37 b FD(to)31 b(giv)m(e)g(the)g
+Fq(top)-5 b(o)g(c)g(entric)48 b FD(\()p Fq(i.e.)32 b(in)h(vacuo)p
+FD(\))e(zenith)e(distance.)0 2422 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_REFCO)g(\(HM,)g(TDK,)h(PMB,)g(RH,)f(WL,)h(PHI,)g
+(TLR,)g(EPS,)f(REFA,)h(REFB\))0 2763 y FB(GIVEN)e FD(:)277
+2909 y Fq(HM)586 b FB(D)565 b FD(heigh)m(t)30 b(of)h(the)g(observ)m(er)
+f(ab)s(o)m(v)m(e)i(sea)f(lev)m(el)f(\(metre\))277 3022
+y Fq(TDK)532 b FB(D)565 b FD(am)m(bien)m(t)31 b(temp)s(erature)f(at)h
+(the)g(observ)m(er)f(K\))277 3135 y Fq(PMB)528 b FB(D)565
+b FD(pressure)29 b(at)i(the)g(observ)m(er)f(\(m)m(b\))277
+3248 y Fq(RH)602 b FB(D)565 b FD(relativ)m(e)31 b(h)m(umidit)m(y)d(at)j
+(the)g(observ)m(er)f(\(range)h(0)16 b({)g(1\))277 3361
+y Fq(WL)588 b FB(D)565 b FD(e\013ectiv)m(e)32 b(w)m(a)m(v)m(elength)g
+(of)e(the)h(source)g(\()p Fl(\026)p FD(m\))277 3474 y
+Fq(PHI)571 b FB(D)565 b FD(latitude)30 b(of)g(the)h(observ)m(er)f
+(\(radian,)g(astronomical\))277 3587 y Fq(TLR)548 b FB(D)565
+b FD(temp)s(erature)32 b(lapse)f(rate)h(in)e(the)i(trop)s(osphere)f(\()
+h(K)f(p)s(er)1658 3700 y(metre\))277 3813 y Fq(EPS)561
+b FB(D)k FD(precision)27 b(required)f(to)j(terminate)f(iteration)g
+(\(radian\))0 4151 y FB(RETURNED)46 b FD(:)277 4297 y
+Fq(REF)-9 b(A)490 b FB(D)565 b FD(tan)16 b Fl(\020)36
+b FD(co)s(e\016cien)m(t)c(\(radians\))277 4410 y Fq(REFB)485
+b FB(D)565 b FD(tan)1789 4377 y Fu(3)1844 4410 y Fl(\020)37
+b FD(co)s(e\016cien)m(t)31 b(\(radians\))0 4748 y FB(NOTES)44
+b FD(:)311 4934 y(1.)i(Suggested)36 b(v)-5 b(alues)34
+b(for)g(the)h(TLR)g(and)f(EPS)g(argumen)m(ts)h(are)g(0.0065D0)j(and)d
+(1D)p Fo(\000)p FD(8)h(resp)s(ec-)427 5047 y(tiv)m(ely)-8
+b(.)41 b(The)30 b(signs)f(of)i(b)s(oth)e(are)i(immaterial.)311
+5191 y(2.)46 b(The)30 b(radio)g(refraction)g(is)f(c)m(hosen)i(b)m(y)f
+(sp)s(ecifying)f(WL)h Fl(>)25 b FD(100)32 b Fl(\026)p
+FD(m.)311 5335 y(3.)46 b(The)34 b(routine)f(is)g(a)i(slo)m(w)m(er)f
+(but)f(more)i(accurate)g(alternativ)m(e)g(to)g(the)f(sla)p
+Ft(_)p FD(REF)m(COQ)f(routine.)427 5448 y(The)21 b(constan)m(ts)i(it)e
+(pro)s(duces)g(giv)m(e)h(p)s(erfect)g(agreemen)m(t)h(with)d(sla)p
+Ft(_)p FD(REFR)m(O)h(at)i(zenith)e(distances)427 5561
+y(tan)559 5528 y Fp(\000)p Fu(1)668 5561 y FD(1)27 b(\(45)865
+5528 y Fp(\016)906 5561 y FD(\))g(and)f(tan)1273 5528
+y Fp(\000)p Fu(1)1382 5561 y FD(4)i(\()p Fo(\030)d FD(76)1676
+5528 y Fp(\016)1716 5561 y FD(\).)40 b(A)m(t)28 b(other)f(zenith)f
+(distances,)i(the)f(mo)s(del)e(ac)m(hiev)m(es:)40 b(0)3704
+5524 y Fk(0)m(0)3708 5561 y Fl(:)p FD(5)427 5673 y(accuracy)32
+b(for)e Fl(\020)i(<)25 b FD(80)1201 5640 y Fp(\016)1241
+5673 y FD(,)31 b(0)1337 5637 y Fk(0)l(0)1341 5673 y Fl(:)p
+FD(01)g(accuracy)h(for)e Fl(\020)i(<)25 b FD(60)2261
+5640 y Fp(\016)2301 5673 y FD(,)31 b(and)e(0)2573 5637
+y Fk(0)m(0)2577 5673 y Fl(:)p FD(001)k(accuracy)e(for)f
+Fl(\020)i(<)25 b FD(45)3543 5640 y Fp(\016)3583 5673
+y FD(.)p eop
+%%Page: 141 143
+141 142 bop 0 52 a Fw(SUN/67.70)3206 b FD(141)p 0 267
+3780 8 v 0 380 a Fx(SLA)p Fn(_)p Fx(REF)l(COQ)303 b Fm(Refraction)36
+b(Constan)m(ts)h(\(fast\))301 b Fx(SLA)p Fn(_)p Fx(REF)l(COQ)0
+730 y FB(A)m(CTION)44 b FD(:)36 b(Determine)21 b(the)g(constan)m(ts)g
+Fl(a)g FD(and)f Fl(b)h FD(in)f(the)h(atmospheric)f(refraction)h(mo)s
+(del)e(\001)p Fl(\020)32 b FD(=)25 b Fl(a)15 b FD(tan)g
+Fl(\020)8 b FD(+)227 843 y Fl(b)15 b FD(tan)413 810 y
+Fu(3)467 843 y Fl(\020)7 b FD(,)25 b(where)f Fl(\020)30
+b FD(is)23 b(the)i Fq(observe)-5 b(d)34 b FD(zenith)24
+b(distance)f(\()p Fq(i.e.)h FD(a\013ected)i(b)m(y)e(refraction\))g(and)
+f(\001)p Fl(\020)30 b FD(is)24 b(what)227 956 y(to)g(add)e(to)i
+Fl(\020)29 b FD(to)24 b(giv)m(e)g(the)f Fq(top)-5 b(o)g(c)g(entric)41
+b FD(\()p Fq(i.e.)25 b(in)h(vacuo)p FD(\))d(zenith)g(distance.)38
+b(\(This)21 b(is)h(a)i(fast)f(alternativ)m(e)227 1069
+y(to)31 b(the)g(sla)p Ft(_)p FD(REF)m(CO)f(routine)f({)i(see)g
+(notes.\))0 1257 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_REFCOQ)f(\(TDK,)i(PMB,)f(RH,)h(WL,)g(REFA,)g(REFB\))0
+1595 y FB(GIVEN)e FD(:)277 1741 y Fq(TDK)532 b FB(D)565
+b FD(am)m(bien)m(t)31 b(temp)s(erature)f(at)h(the)g(observ)m(er)f
+(\(K\))277 1854 y Fq(PMB)528 b FB(D)565 b FD(pressure)29
+b(at)i(the)g(observ)m(er)f(\(m)m(b\))277 1967 y Fq(RH)602
+b FB(D)565 b FD(relativ)m(e)31 b(h)m(umidit)m(y)d(at)j(the)g(observ)m
+(er)f(\(range)h(0)16 b({)g(1\))277 2080 y Fq(WL)588 b
+FB(D)565 b FD(e\013ectiv)m(e)32 b(w)m(a)m(v)m(elength)g(of)e(the)h
+(source)g(\()p Fl(\026)p FD(m\))0 2414 y FB(RETURNED)46
+b FD(:)277 2560 y Fq(REF)-9 b(A)490 b FB(D)565 b FD(tan)16
+b Fl(\020)36 b FD(co)s(e\016cien)m(t)c(\(radians\))277
+2673 y Fq(REFB)485 b FB(D)565 b FD(tan)1789 2640 y Fu(3)1844
+2673 y Fl(\020)37 b FD(co)s(e\016cien)m(t)31 b(\(radians\))0
+3007 y FB(NOTES)44 b FD(:)311 3192 y(1.)i(The)30 b(radio)g(refraction)g
+(is)f(c)m(hosen)i(b)m(y)f(sp)s(ecifying)f(WL)h Fl(>)25
+b FD(100)32 b Fl(\026)p FD(m.)311 3335 y(2.)46 b(The)31
+b(mo)s(del)f(is)g(an)h(appro)m(ximation,)g(for)g(mo)s(derate)h(zenith)e
+(distances,)i(to)g(the)f(predictions)e(of)427 3448 y(the)34
+b(sla)p Ft(_)p FD(REFR)m(O)f(routine.)50 b(The)34 b(appro)m(ximation)e
+(is)h(main)m(tained)g(across)h(a)g(range)g(of)g(condi-)427
+3561 y(tions,)c(and)g(applies)f(to)i(b)s(oth)e(optical/IR)h(and)g
+(radio.)311 3704 y(3.)46 b(The)35 b(algorithm)f(is)g(a)h(fast)g
+(alternativ)m(e)g(to)h(the)f(sla)p Ft(_)p FD(REF)m(CO)f(routine.)54
+b(The)34 b(latter)h(calls)f(the)427 3817 y(sla)p Ft(_)p
+FD(REFR)m(O)39 b(routine)f(itself:)57 b(this)38 b(in)m(v)m(olv)m(es)i
+(in)m(tegrations)f(through)f(a)i(mo)s(del)e(atmosphere,)427
+3930 y(and)d(is)g(costly)g(in)f(pro)s(cessor)h(time.)56
+b(Ho)m(w)m(ev)m(er,)39 b(the)d(mo)s(del)e(whic)m(h)g(is)h(pro)s(duced)e
+(is)i(precisely)427 4043 y(correct)44 b(for)e(t)m(w)m(o)i(zenith)e
+(distances)f(\(45)1889 4010 y Fp(\016)1972 4043 y FD(and)h
+Fo(\030)30 b FD(76)2352 4010 y Fp(\016)2392 4043 y FD(\))43
+b(and)f(at)h(other)g(zenith)e(distances)h(is)427 4156
+y(limited)23 b(in)h(accuracy)j(only)d(b)m(y)i(the)f(\001)p
+Fl(\020)32 b FD(=)25 b Fl(a)15 b FD(tan)g Fl(\020)i FD(+)10
+b Fl(b)15 b FD(tan)2446 4123 y Fu(3)2501 4156 y Fl(\020)32
+b FD(form)m(ulation)24 b(itself.)38 b(The)24 b(presen)m(t)427
+4269 y(routine)30 b(is)f(not)i(as)f(accurate,)i(though)f(it)e
+(satis\014es)h(most)h(practical)f(requiremen)m(ts.)311
+4412 y(4.)46 b(The)40 b(mo)s(del)f(omits)g(the)i(e\013ects)g(of)f
+(\(i\))g(heigh)m(t)g(ab)s(o)m(v)m(e)h(sea)g(lev)m(el)f(\(apart)g(from)g
+(the)g(reduced)427 4525 y(pressure)34 b(itself)7 b(\),)36
+b(\(ii\))e(latitude)g(\()p Fq(i.e.)h FD(the)g(\015attening)f(of)i(the)f
+(Earth\))g(and)f(\(iii\))g(v)-5 b(ariations)34 b(in)427
+4638 y(trop)s(ospheric)29 b(lapse)h(rate.)311 4781 y(5.)46
+b(The)30 b(mo)s(del)f(has)h(b)s(een)g(tested)h(using)e(the)i(follo)m
+(wing)e(range)h(of)h(conditions:)527 4924 y Fo(\001)45
+b FD(lapse)30 b(rates)h(0.0055,)i(0.0065,)g(0.0075)g(K)d(p)s(er)f
+(metre)527 5052 y Fo(\001)45 b FD(latitudes)30 b(0)1017
+5019 y Fp(\016)1056 5052 y FD(,)h(25)1202 5019 y Fp(\016)1242
+5052 y FD(,)g(50)1388 5019 y Fp(\016)1428 5052 y FD(,)g(75)1574
+5019 y Fp(\016)527 5181 y Fo(\001)45 b FD(heigh)m(ts)30
+b(0,)h(2500,)i(5000)f(metres)f(ab)s(o)m(v)m(e)g(sea)g(lev)m(el)527
+5309 y Fo(\001)45 b FD(pressures)29 b(mean)i(for)f(heigh)m(t)g
+Fo(\000)p FD(10\045)h(to)g(+5\045)f(in)f(steps)h(of)h(5\045)527
+5437 y Fo(\001)45 b FD(temp)s(eratures)30 b Fo(\000)p
+FD(10)1312 5404 y Fp(\016)1383 5437 y FD(to)h(+20)1655
+5404 y Fp(\016)1725 5437 y FD(with)e(resp)s(ect)i(to)g(280K)g(at)g(sea)
+g(lev)m(el)527 5565 y Fo(\001)45 b FD(relativ)m(e)31
+b(h)m(umidit)m(y)d(0,)j(0.5,)h(1)527 5693 y Fo(\001)45
+b FD(w)m(a)m(v)m(elength)32 b(0.4,)g(0.6,)f(.)16 b(.)f(.)46
+b(2)p Fl(\026)p FD(m,)30 b(+)g(radio)p eop
+%%Page: 142 144
+142 143 bop 0 52 a FD(142)527 351 y Fo(\001)45 b FD(zenith)30
+b(distances)g(15)1350 318 y Fp(\016)1390 351 y FD(,)h(45)1536
+318 y Fp(\016)1576 351 y FD(,)g(75)1722 318 y Fp(\016)427
+493 y FD(F)-8 b(or)31 b(the)g(ab)s(o)m(v)m(e)h(conditions,)d(the)h
+(comparison)g(with)f(sla)p Ft(_)p FD(REFR)m(O)h(w)m(as)g(as)h(follo)m
+(ws:)p 761 615 1124 4 v 759 728 4 113 v 1271 728 V 1323
+694 a Fq(worst)p 1584 728 V 101 w(RMS)p 1882 728 V 761
+731 1124 4 v 759 844 4 113 v 810 810 a FD(optical/IR)p
+1271 844 V 222 w(62)p 1584 844 V 254 w(8)p 1882 844 V
+759 957 V 1021 923 a(radio)p 1271 957 V 175 w(319)p 1584
+957 V 209 w(49)p 1882 957 V 761 960 1124 4 v 759 1073
+4 113 v 1271 1073 V 1378 1039 a(mas)p 1584 1073 V 142
+w(mas)p 1882 1073 V 761 1076 1124 4 v 427 1280 a(F)-8
+b(or)31 b(this)f(particular)e(set)j(of)g(conditions:)527
+1421 y Fo(\001)45 b FD(lapse)30 b(rate)h(6.5)h(K)e(km)1384
+1388 y Fp(\000)p Fu(1)527 1549 y Fo(\001)45 b FD(latitude)30
+b(50)1026 1516 y Fp(\016)527 1676 y Fo(\001)45 b FD(sea)31
+b(lev)m(el)527 1803 y Fo(\001)45 b FD(pressure)29 b(1005)17
+b(m)m(b)527 1930 y Fo(\001)45 b FD(temp)s(erature)30
+b(7)1160 1897 y Fp(\016)1200 1930 y FD(C)527 2058 y Fo(\001)45
+b FD(h)m(umidit)m(y)29 b(80\045)527 2185 y Fo(\001)45
+b FD(w)m(a)m(v)m(elength)32 b(5740)1285 2162 y(_)1264
+2185 y(A)427 2327 y(the)f(results)e(w)m(ere)i(as)f(follo)m(ws:)p
+761 2431 2106 4 v 759 2544 4 113 v 855 2510 a Fl(\020)p
+995 2544 V 151 w FD(sla)p Ft(_)p FD(REFR)m(O)p 1572 2544
+V 100 w(sla)p Ft(_)p FD(REF)m(COQ)p 2219 2544 V 98 w(Saastamoinen)p
+2864 2544 V 761 2547 2106 4 v 759 2660 4 113 v 856 2626
+a(10)p 995 2660 V 371 w(10.27)p 1572 2660 V 441 w(10.27)p
+2219 2660 V 441 w(10.27)p 2864 2660 V 759 2773 V 856
+2739 a(20)p 995 2773 V 371 w(21.19)p 1572 2773 V 441
+w(21.20)p 2219 2773 V 441 w(21.19)p 2864 2773 V 759 2886
+V 856 2852 a(30)p 995 2886 V 371 w(33.61)p 1572 2886
+V 441 w(33.61)p 2219 2886 V 441 w(33.60)p 2864 2886 V
+759 2999 V 856 2965 a(40)p 995 2999 V 371 w(48.82)p 1572
+2999 V 441 w(48.83)p 2219 2999 V 441 w(48.81)p 2864 2999
+V 759 3112 V 856 3078 a(45)p 995 3112 V 371 w(58.16)p
+1572 3112 V 441 w(58.18)p 2219 3112 V 441 w(58.16)p 2864
+3112 V 759 3225 V 856 3191 a(50)p 995 3225 V 371 w(69.28)p
+1572 3225 V 441 w(69.30)p 2219 3225 V 441 w(69.27)p 2864
+3225 V 759 3338 V 856 3304 a(55)p 995 3338 V 371 w(82.97)p
+1572 3338 V 441 w(82.99)p 2219 3338 V 441 w(82.95)p 2864
+3338 V 759 3450 V 856 3417 a(60)p 995 3450 V 325 w(100.51)p
+1572 3450 V 397 w(100.54)p 2219 3450 V 396 w(100.50)p
+2864 3450 V 759 3563 V 856 3529 a(65)p 995 3563 V 325
+w(124.23)p 1572 3563 V 397 w(124.26)p 2219 3563 V 396
+w(124.20)p 2864 3563 V 759 3676 V 856 3642 a(70)p 995
+3676 V 325 w(158.63)p 1572 3676 V 397 w(158.68)p 2219
+3676 V 396 w(158.61)p 2864 3676 V 759 3789 V 856 3755
+a(72)p 995 3789 V 325 w(177.32)p 1572 3789 V 397 w(177.37)p
+2219 3789 V 396 w(177.31)p 2864 3789 V 759 3902 V 856
+3868 a(74)p 995 3902 V 325 w(200.35)p 1572 3902 V 397
+w(200.38)p 2219 3902 V 396 w(200.32)p 2864 3902 V 759
+4015 V 856 3981 a(76)p 995 4015 V 325 w(229.45)p 1572
+4015 V 397 w(229.43)p 2219 4015 V 396 w(229.42)p 2864
+4015 V 759 4128 V 856 4094 a(78)p 995 4128 V 325 w(267.44)p
+1572 4128 V 397 w(267.29)p 2219 4128 V 396 w(267.41)p
+2864 4128 V 759 4241 V 856 4207 a(80)p 995 4241 V 325
+w(319.13)p 1572 4241 V 397 w(318.55)p 2219 4241 V 396
+w(319.10)p 2864 4241 V 761 4244 2106 4 v 759 4357 4 113
+v 810 4323 a(deg)p 995 4357 V 340 w(arcsec)p 1572 4357
+V 409 w(arcsec)p 2219 4357 V 409 w(arcsec)p 2864 4357
+V 761 4360 2106 4 v 427 4576 a(The)j(v)-5 b(alues)33
+b(for)h(Saastamoinen's)f(form)m(ula)g(\(whic)m(h)g(includes)e(terms)j
+(up)e(to)j(tan)3299 4543 y Fu(5)3338 4576 y FD(\))f(are)g(tak)m(en)427
+4689 y(from)c(Hohenk)m(erk)h(&)f(Sinclair)e(\(1985\).)427
+4816 y(The)36 b(results)f(from)h(the)g(m)m(uc)m(h)g(slo)m(w)m(er)h(but)
+e(more)h(accurate)i(sla)p Ft(_)p FD(REF)m(CO)e(routine)f(ha)m(v)m(e)i
+(not)427 4929 y(b)s(een)k(included)e(in)i(the)h(tabulation)f(as)h(they)
+g(are)g(iden)m(tical)f(to)h(those)g(in)f(the)h(sla)p
+Ft(_)p FD(REFR)m(O)427 5042 y(column)29 b(to)j(the)e(0)1053
+5005 y Fk(0)l(0)1057 5042 y Fl(:)p FD(01)i(resolution)d(used.)311
+5184 y(6.)46 b(Outlandish)25 b(input)h(parameters)i(are)h(silen)m(tly)d
+(limited)g(to)i(mathematically)g(safe)g(v)-5 b(alues.)40
+b(Zero)427 5297 y(pressure)29 b(is)h(p)s(ermissible,)c(and)k(causes)h
+(zero)s(es)g(to)g(b)s(e)f(returned.)311 5438 y(7.)46
+b(The)30 b(algorithm)g(dra)m(ws)f(on)i(sev)m(eral)f(sources,)h(as)g
+(follo)m(ws:)506 5580 y Fo(\017)46 b FD(The)27 b(form)m(ula)g(for)g
+(the)g(saturation)h(v)-5 b(ap)s(our)26 b(pressure)g(of)h(w)m(ater)i(as)
+e(a)h(function)e(of)i(temp)s(er-)597 5693 y(ature)j(and)f(temp)s
+(erature)g(is)f(tak)m(en)j(from)e(expressions)f(A4.5-A4.7)k(of)d(Gill)f
+(\(1982\).)p eop
+%%Page: 143 145
+143 144 bop 0 52 a Fw(SUN/67.70)3206 b FD(143)506 351
+y Fo(\017)46 b FD(The)25 b(form)m(ula)g(for)h(the)g(w)m(ater)g(v)-5
+b(ap)s(our)25 b(pressure,)h(giv)m(en)f(the)h(saturation)g(pressure)e
+(and)h(the)597 464 y(relativ)m(e)31 b(h)m(umidit)m(y)d(is)i(from)f
+(Crane)h(\(1976\),)j(expression)d(2.5.5.)506 593 y Fo(\017)46
+b FD(The)30 b(refractivit)m(y)f(of)h(air)f(is)g(a)h(function)f(of)h
+(temp)s(erature,)g(total)g(pressure,)f(w)m(ater-v)-5
+b(ap)s(our)597 706 y(pressure)29 b(and,)i(in)e(the)h(case)i(of)f
+(optical/IR)f(but)g(not)g(radio,)g(w)m(a)m(v)m(elength.)43
+b(The)30 b(form)m(ulae)597 819 y(for)37 b(the)f(t)m(w)m(o)i(cases)g
+(are)f(dev)m(elop)s(ed)f(from)g(Hohenk)m(erk)h(&)f(Sinclair)e(\(1985\))
+39 b(and)d(Rueger)597 932 y(\(2002\).)506 1061 y Fo(\017)46
+b FD(The)33 b(form)m(ula)f(for)h Fl(\014)38 b FD(\(=)30
+b Fl(H)1566 1075 y Fu(0)1605 1061 y Fl(=r)1691 1075 y
+Fu(0)1731 1061 y FD(\))j(is)f(an)h(adaption)g(of)g(expression)f(9)h
+(from)g(Stone)g(\(1996\).)597 1174 y(The)e(adaptations,)i(arriv)m(ed)d
+(at)j(empirically)-8 b(,)29 b(consist)i(of)h(\(i\))g(a)f(small)g
+(adjustmen)m(t)g(to)h(the)597 1287 y(co)s(e\016cien)m(t)g(and)d(\(ii\))
+h(a)h(h)m(umidit)m(y)d(term)i(for)g(the)h(radio)f(case)h(only)-8
+b(.)506 1415 y Fo(\017)46 b FD(The)32 b(form)m(ulae)f(for)h(the)g
+(refraction)f(constan)m(ts)i(as)g(a)f(function)e(of)i
+Fl(n)21 b Fo(\000)g FD(1)32 b(and)g Fl(\014)37 b FD(are)32
+b(from)597 1528 y(Green)f(\(1987\),)i(expression)c(4.31.)427
+1673 y(The)h(\014rst)g(three)g(items)g(are)h(as)g(used)e(in)g(the)i
+(sla)p Ft(_)p FD(REFR)m(O)f(routine.)0 2027 y FB(REFERENCES)44
+b FD(:)311 2213 y(1.)i(Crane,)h(R.K.,)h(Meeks,)g(M.L.)c(\(ed\),)k
+(\\Refraction)d(E\013ects)f(in)f(the)h(Neutral)f(A)m(tmosphere",)427
+2326 y Fq(Metho)-5 b(ds)34 b(of)f(Exp)-5 b(erimental)34
+b(Physics:)43 b(Astr)-5 b(ophysics)34 b(12B,)d FD(Academic)g(Press,)f
+(1976.)311 2471 y(2.)46 b(Gill,)29 b(Adrian)g(E.,)h Fq(A)n(tmospher)-5
+b(e-Oc)g(e)g(an)35 b(Dynamics,)c FD(Academic)f(Press,)g(1982.)311
+2616 y(3.)46 b(Green,)31 b(R.M.,)g Fq(Spheric)-5 b(al)35
+b(Astr)-5 b(onomy,)32 b FD(Cam)m(bridge)e(Univ)m(ersit)m(y)f(Press,)h
+(1987.)311 2761 y(4.)46 b(Hohenk)m(erk,)31 b(C.Y.,)g(&)f(Sinclair,)e
+(A.T.,)j(NA)m(O)g(T)-8 b(ec)m(hnical)30 b(Note)i(No.)f(63,)g(1985.)311
+2906 y(5.)46 b(Rueger,)36 b(J.M.,)f Fq(R)-5 b(efr)g(active)37
+b(Index)g(F)-7 b(ormulae)38 b(for)e(Ele)-5 b(ctr)g(onic)37
+b(Distanc)-5 b(e)37 b(Me)-5 b(asur)g(ement)37 b(with)427
+3018 y(R)-5 b(adio)27 b(and)f(Mil)5 b(limetr)-5 b(e)25
+b(Waves)p FD(,)f(in)d(Unisurv)f(Rep)s(ort)h(S-68,)k(Sc)m(ho)s(ol)c(of)i
+(Surv)m(eying)d(and)i(Spatial)427 3131 y(Information)30
+b(Systems,)g(Univ)m(ersit)m(y)f(of)i(New)g(South)e(W)-8
+b(ales,)32 b(Sydney)-8 b(,)29 b(Australia,)h(2002.)311
+3276 y(6.)46 b(Stone,)31 b(Ronald)e(C.,)i(P)-8 b(.A.S.P)g(.)31
+b FB(108)h FD(1051-1058,)i(1996.)p 0 3405 3780 8 v 0
+3518 a Fx(SLA)p Fn(_)p Fx(REFR)l(O)834 b Fm(Refraction)e
+Fx(SLA)p Fn(_)p Fx(REFR)l(O)0 3869 y FB(A)m(CTION)44
+b FD(:)c(A)m(tmospheric)31 b(refraction,)f(for)g(radio)g(or)g
+(optical/IR)g(w)m(a)m(v)m(elengths.)0 4056 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_REFRO)g(\(ZOBS,)g(HM,)h(TDK,)f(PMB,)h(RH,)
+g(WL,)g(PHI,)f(TLR,)h(EPS,)g(REF\))0 4401 y FB(GIVEN)e
+FD(:)277 4547 y Fq(ZOBS)495 b FB(D)565 b FD(observ)m(ed)31
+b(zenith)e(distance)h(of)h(the)g(source)f(\(radians\))277
+4660 y Fq(HM)586 b FB(D)565 b FD(heigh)m(t)30 b(of)h(the)g(observ)m(er)
+f(ab)s(o)m(v)m(e)i(sea)f(lev)m(el)f(\(metre\))277 4773
+y Fq(TDK)532 b FB(D)565 b FD(am)m(bien)m(t)31 b(temp)s(erature)f(at)h
+(the)g(observ)m(er)f(\(K\))277 4886 y Fq(PMB)528 b FB(D)565
+b FD(pressure)29 b(at)i(the)g(observ)m(er)f(\(m)m(b\))277
+4999 y Fq(RH)602 b FB(D)565 b FD(relativ)m(e)31 b(h)m(umidit)m(y)d(at)j
+(the)g(observ)m(er)f(\(range)h(0)16 b({)g(1\))277 5112
+y Fq(WL)588 b FB(D)565 b FD(e\013ectiv)m(e)32 b(w)m(a)m(v)m(elength)g
+(of)e(the)h(source)g(\()p Fl(\026)p FD(m\))277 5224 y
+Fq(PHI)571 b FB(D)565 b FD(latitude)30 b(of)g(the)h(observ)m(er)f
+(\(radian,)g(astronomical\))277 5337 y Fq(TLR)548 b FB(D)565
+b FD(temp)s(erature)36 b(lapse)g(rate)h(in)d(the)j(trop)s(osphere)e
+(\(K)h(p)s(er)1658 5450 y(metre\))277 5563 y Fq(EPS)561
+b FB(D)k FD(precision)27 b(required)f(to)j(terminate)f(iteration)g
+(\(radian\))p eop
+%%Page: 144 146
+144 145 bop 0 52 a FD(144)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(REF)549 b FB(D)565 b FD(refraction:)42 b Fq(in)34
+b(vacuo)j FD(ZD)31 b(min)m(us)e(observ)m(ed)j(ZD)f(\(radi-)1658
+610 y(ans\))0 963 y FB(NOTES)44 b FD(:)311 1151 y(1.)i(A)31
+b(suggested)g(v)-5 b(alue)30 b(for)g(the)h(TLR)f(argumen)m(t)h(is)e
+(0.0065D0)34 b(\(sign)c(immaterial\).)40 b(The)30 b(refrac-)427
+1264 y(tion)c(is)f(signi\014can)m(tly)g(a\013ected)j(b)m(y)e(TLR,)g
+(and)f(if)h(studies)f(of)h(the)h(lo)s(cal)e(atmosphere)i(ha)m(v)m(e)g
+(b)s(een)427 1377 y(carried)j(out)g(a)h(b)s(etter)g(TLR)e(v)-5
+b(alue)30 b(ma)m(y)h(b)s(e)f(a)m(v)-5 b(ailable.)311
+1523 y(2.)46 b(A)31 b(suggested)h(v)-5 b(alue)30 b(for)g(the)h(EPS)f
+(argumen)m(t)h(is)f(1D)p Fo(\000)p FD(8.)43 b(The)30
+b(result)f(is)h(usually)f(at)i(least)g(t)m(w)m(o)427
+1636 y(orders)f(of)h(magnitude)e(more)i(computationally)e(precise)h
+(than)g(the)g(supplied)d(EPS)j(v)-5 b(alue.)311 1782
+y(3.)46 b(The)36 b(routine)g(computes)g(the)h(refraction)f(for)h
+(zenith)e(distances)h(up)g(to)h(and)f(a)h(little)e(b)s(ey)m(ond)427
+1895 y(90)517 1862 y Fp(\016)598 1895 y FD(using)k(the)i(metho)s(d)g
+(of)f(Hohenk)m(erk)i(&)e(Sinclair)e(\(NA)m(O)j(T)-8 b(ec)m(hnical)41
+b(Notes)h(59)f(and)f(63,)427 2008 y(subsequen)m(tly)31
+b(adopted)h(in)f(the)h Fq(Explanatory)37 b(Supplement)e(to)g(the)f
+(Astr)-5 b(onomic)g(al)37 b(A)n(lmanac,)427 2120 y FD(1992)32
+b({)f(see)g(section)g(3.281\).)311 2266 y(4.)46 b(The)24
+b(co)s(de)h(is)f(based)g(on)g(the)h Ft(AREF)e FD(optical/IR)h
+(refraction)h(subroutine)d(\(HMNA)m(O,)k(Septem)m(b)s(er)427
+2379 y(1984,)33 b(R)m(GO:)d(Hohenk)m(erk)h(1985\),)i(with)c(extensions)
+h(to)h(supp)s(ort)d(the)j(radio)e(case.)42 b(The)30 b(mo)s(di-)427
+2492 y(\014cations)j(to)g(the)g(original)e(HMNA)m(O)i(optical/IR)g
+(refraction)f(co)s(de)h(whic)m(h)f(a\013ect)i(the)f(results)427
+2605 y(are:)506 2751 y Fo(\017)46 b FD(The)24 b(angle)g(argumen)m(ts)g
+(ha)m(v)m(e)h(b)s(een)f(c)m(hanged)g(to)h(radians,)f(an)m(y)h(v)-5
+b(alue)23 b(of)h(ZOBS)g(is)f(allo)m(w)m(ed)597 2864 y(\(see)32
+b(Note)f(6,)g(b)s(elo)m(w\))f(and)g(other)h(argumen)m(t)f(v)-5
+b(alues)30 b(ha)m(v)m(e)i(b)s(een)d(limited)f(to)k(safe)e(v)-5
+b(alues.)506 2994 y Fo(\017)46 b FD(Revised)30 b(v)-5
+b(alues)30 b(for)g(the)g(gas)h(constan)m(ts)h(are)f(used,)f(from)f
+(Murra)m(y)i(\(1983\).)506 3123 y Fo(\017)46 b FD(A)31
+b(b)s(etter)f(mo)s(del)f(for)i Fl(P)1434 3137 y Ff(s)1471
+3123 y FD(\()p Fl(T)13 b FD(\))30 b(has)h(b)s(een)e(adopted,)i(from)f
+(Gill)e(\(1982\).)506 3253 y Fo(\017)46 b FD(More)31
+b(accurate)h(expressions)d(for)h Fl(P)13 b(w)1945 3267
+y Ff(o)2014 3253 y FD(ha)m(v)m(e)32 b(b)s(een)d(adopted)i(\(again)g
+(from)e(Gill)g(1982\).)506 3382 y Fo(\017)46 b FD(The)25
+b(form)m(ula)g(for)h(the)g(w)m(ater)g(v)-5 b(ap)s(our)25
+b(pressure,)h(giv)m(en)f(the)h(saturation)g(pressure)e(and)h(the)597
+3495 y(relativ)m(e)31 b(h)m(umidit)m(y)-8 b(,)29 b(is)g(from)h(Crane)g
+(\(1976\),)j(expression)c(2.5.5.)506 3624 y Fo(\017)46
+b FD(Pro)m(vision)c(for)i(radio)e(w)m(a)m(v)m(elengths)j(has)e(b)s(een)
+g(added)f(using)g(expressions)g(devised)h(b)m(y)597 3737
+y(A.)16 b(T.)f(Sinclair,)20 b(R)m(GO)h(\(Sinclair)d(1989\).)39
+b(The)20 b(refractivit)m(y)g(mo)s(del)g(is)f(from)h(Rueger)h(\(2002\).)
+506 3867 y Fo(\017)46 b FD(The)30 b(optical)g(refractivit)m(y)g(for)g
+(dry)g(air)f(is)h(from)g(IA)m(G)h(\(1999\).)311 4013
+y(5.)46 b(The)34 b(radio)g(refraction)g(is)f(c)m(hosen)i(b)m(y)f(sp)s
+(ecifying)e(WL)j Fl(>)c FD(100)36 b Fl(\026)p FD(m.)52
+b(Because)36 b(the)e(algorithm)427 4126 y(tak)m(es)23
+b(no)f(accoun)m(t)h(of)f(the)g(ionosphere,)h(the)e(accuracy)i
+(deteriorates)g(at)f(lo)m(w)g(frequencies,)g(b)s(elo)m(w)427
+4239 y(ab)s(out)30 b(30)16 b(MHz.)311 4385 y(6.)46 b(Before)38
+b(use,)g(the)f(v)-5 b(alue)37 b(of)g(ZOBS)e(is)h(expressed)g(in)g(the)h
+(range)g Fo(\006)p Fl(\031)s FD(.)60 b(If)36 b(this)g(ranged)g(ZOBS)427
+4498 y(is)f(negativ)m(e,)k(the)d(result)f(REF)h(is)e(computed)i(from)f
+(its)h(absolute)f(v)-5 b(alue)36 b(b)s(efore)f(b)s(eing)f(made)427
+4611 y(negativ)m(e)g(to)g(matc)m(h.)50 b(In)32 b(addition,)g(if)g(it)h
+(has)f(an)h(absolute)g(v)-5 b(alue)33 b(greater)h(than)f(93)3413
+4578 y Fp(\016)3453 4611 y FD(,)h(a)f(\014xed)427 4723
+y(REF)e(v)-5 b(alue)30 b(equal)f(to)j(the)e(result)f(for)i(ZOBS)e(=)c
+(93)2238 4690 y Fp(\016)2309 4723 y FD(is)k(returned,)g(appropriately)g
+(signed.)311 4870 y(7.)46 b(As)33 b(in)e(the)i(original)e(Hohenk)m(erk)
+i(&)f(Sinclair)d(algorithm,)k(\014xed)f(v)-5 b(alues)32
+b(of)g(the)h(w)m(ater)h(v)-5 b(ap)s(our)427 4982 y(p)s(olytrop)s(e)27
+b(exp)s(onen)m(t,)i(the)g(heigh)m(t)f(of)h(the)f(trop)s(opause,)h(and)f
+(the)g(heigh)m(t)g(at)i(whic)m(h)d(refraction)427 5095
+y(is)j(negligible)e(are)i(used.)311 5241 y(8.)46 b(The)27
+b(radio)f(refraction)h(has)g(b)s(een)g(tested)g(against)h(w)m(ork)f
+(done)g(b)m(y)g(Iain)f(Coulson,)h(JA)m(CH,)h(\(pri-)427
+5354 y(v)-5 b(ate)32 b(comm)m(unication)e(1995\))j(for)e(the)f(James)h
+(Clerk)f(Maxw)m(ell)g(T)-8 b(elescop)s(e,)32 b(Mauna)e(Kea.)43
+b(F)-8 b(or)427 5467 y(t)m(ypical)27 b(conditions,)g(agreemen)m(t)i(at)
+g(the)e(0)1916 5430 y Fk(0)l(0)1920 5467 y Fl(:)p FD(1)i(lev)m(el)e(is)
+f(ac)m(hiev)m(ed)j(for)e(mo)s(derate)h(ZD,)f(w)m(orsening)427
+5580 y(to)h(p)s(erhaps)d(0)913 5543 y Fk(0)m(0)917 5580
+y Fl(:)p FD(5)17 b({)e(1)1104 5543 y Fk(0)l(0)1108 5580
+y Fl(:)p FD(0)28 b(at)g(ZD)f(80)1556 5547 y Fp(\016)1596
+5580 y FD(.)40 b(A)m(t)28 b(hot)f(and)g(h)m(umid)e(sea-lev)m(el)j
+(sites)e(the)i(accuracy)g(will)c(not)427 5693 y(b)s(e)30
+b(as)h(go)s(o)s(d.)p eop
+%%Page: 145 147
+145 146 bop 0 52 a Fw(SUN/67.70)3206 b FD(145)311 351
+y(9.)46 b(It)d(should)d(b)s(e)h(noted)h(that)h(the)f(relativ)m(e)h(h)m
+(umidit)m(y)d(RH)i(is)f(formally)g(de\014ned)f(in)h(terms)h(of)427
+464 y(\\mixing)36 b(ratio")h(rather)g(than)g(pressures)e(or)i
+(densities)e(as)j(is)e(often)h(stated.)61 b(It)37 b(is)f(the)i(mass)427
+577 y(of)45 b(w)m(ater)h(p)s(er)d(unit)h(mass)g(of)h(dry)f(air)g
+(divided)e(b)m(y)j(that)g(for)g(saturated)g(air)f(at)h(the)g(same)427
+690 y(temp)s(erature)c(and)e(pressure)h(\(see)h(Gill)d(1982\).)73
+b(The)40 b(familiar)f Fl(\027)47 b FD(=)42 b Fl(p)2995
+704 y Ff(w)3051 690 y Fl(=p)3142 704 y Ff(s)3220 690
+y FD(or)e Fl(\027)48 b FD(=)42 b Fl(\032)3594 704 y Ff(w)3650
+690 y Fl(=\032)3742 704 y Ff(s)427 803 y FD(expressions)27
+b(can)i(di\013er)e(from)h(the)h(formal)e(de\014nition)f(b)m(y)j(sev)m
+(eral)g(p)s(ercen)m(t,)g(signi\014can)m(t)e(in)g(the)427
+916 y(radio)j(case.)266 1054 y(10.)46 b(The)20 b(algorithm)g(is)g
+(designed)g(for)g(observ)m(ers)h(in)e(the)i(trop)s(osphere.)37
+b(The)20 b(supplied)d(temp)s(erature,)427 1167 y(pressure)25
+b(and)h(lapse)g(rate)h(are)f(assumed)g(to)h(b)s(e)f(for)g(a)h(p)s(oin)m
+(t)e(in)g(the)h(trop)s(osphere)g(and)g(are)g(used)427
+1280 y(to)34 b(de\014ne)e(a)h(mo)s(del)f(atmosphere)h(with)e(the)i
+(trop)s(opause)g(at)g(11km)h(altitude)e(and)g(a)h(constan)m(t)427
+1393 y(temp)s(erature)43 b(ab)s(o)m(v)m(e)i(that.)79
+b(Ho)m(w)m(ev)m(er,)49 b(in)42 b(practice,)47 b(the)c(refraction)g(v)-5
+b(alues)43 b(returned)f(for)427 1505 y(stratospheric)30
+b(observ)m(ers,)h(at)g(altitudes)e(up)h(to)h(25km,)g(are)g(quite)e
+(usable.)0 1811 y FB(REFERENCES)44 b FD(:)311 1990 y(1.)i(Coulsen,)29
+b(I.)i(1995,)h(priv)-5 b(ate)30 b(comm)m(unication.)311
+2128 y(2.)46 b(Crane,)23 b(R.K.,)h(Meeks,)g(M.L.)e(\(ed\),)i(1976,)h
+(\\Refraction)d(E\013ects)h(in)d(the)h(Neutral)g(A)m(tmosphere",)427
+2241 y Fq(Metho)-5 b(ds)34 b(of)f(Exp)-5 b(erimental)34
+b(Physics:)43 b(Astr)-5 b(ophysics)34 b(12B)p FD(,)e(Academic)e(Press.)
+311 2379 y(3.)46 b(Gill,)29 b(Adrian)g(E.)h(1982,)j Fq(A)n(tmospher)-5
+b(e-Oc)g(e)g(an)34 b(Dynamics)p FD(,)d(Academic)g(Press.)311
+2517 y(4.)46 b(Hohenk)m(erk,)31 b(C.Y.)g(1985,)h(priv)-5
+b(ate)30 b(comm)m(unication.)311 2655 y(5.)46 b(Hohenk)m(erk,)34
+b(C.Y.,)f(&)f(Sinclair,)e(A.T.)j(1985,)h Fq(NA)n(O)f(T)-7
+b(e)i(chnic)g(al)36 b(Note)j FD(No.)33 b(63,)h(Ro)m(y)m(al)f(Green-)427
+2768 y(wic)m(h)d(Observ)-5 b(atory)d(.)311 2906 y(6.)46
+b(In)m(ternational)34 b(Asso)s(ciation)g(of)h(Geo)s(desy)-8
+b(,)36 b(XXI)s(Ith)e(General)g(Assem)m(bly)-8 b(,)36
+b(Birmingham,)d(UK,)427 3019 y(1999,)g(Resolution)c(3.)311
+3157 y(7.)46 b(Murra)m(y)-8 b(,)31 b(C.A.)g(1983,)h Fq(V)-7
+b(e)i(ctorial)34 b(Astr)-5 b(ometry,)32 b FD(Adam)e(Hilger,)g(Bristol.)
+311 3295 y(8.)46 b(Seidelmann,)13 b(P)-8 b(.K.)31 b Fq(et)h(al.)e
+FD(1992,)i Fq(Explanatory)j(Supplement)e(to)g(the)g(Astr)-5
+b(onomic)g(al)35 b(A)n(lmanac)p FD(,)427 3408 y(Chapter)30
+b(3,)h(Univ)m(ersit)m(y)f(Science)g(Bo)s(oks.)311 3546
+y(9.)46 b(Rueger,)34 b(J.M.)f(2002,)h Fq(R)-5 b(efr)g(active)36
+b(Index)f(F)-7 b(ormulae)36 b(for)f(Ele)-5 b(ctr)g(onic)36
+b(Distanc)-5 b(e)34 b(Me)-5 b(asur)g(ement)427 3659 y(with)35
+b(R)-5 b(adio)36 b(and)e(Mil)5 b(limetr)-5 b(e)34 b(Waves)p
+FD(,)f(in)d(Unisurv)f(Rep)s(ort)j(S-68,)h(Sc)m(ho)s(ol)e(of)h(Surv)m
+(eying)e(and)427 3772 y(Spatial)f(Information)h(Systems,)g(Univ)m
+(ersit)m(y)g(of)g(New)h(South)e(W)-8 b(ales,)32 b(Sydney)-8
+b(,)29 b(Australia.)266 3910 y(10.)46 b(Sinclair,)28
+b(A.T.)j(1989,)h(priv)-5 b(ate)30 b(comm)m(unication.)p
+0 4018 3780 8 v 0 4131 a Fx(SLA)p Fn(_)p Fx(REFV)497
+b Fm(Apply)38 b(Refraction)e(to)i(V)-10 b(ector)497 b
+Fx(SLA)p Fn(_)p Fx(REFV)0 4481 y FB(A)m(CTION)44 b FD(:)39
+b(Adjust)26 b(an)h(unrefracted)g(Cartesian)f(v)m(ector)j(to)f(include)d
+(the)i(e\013ect)i(of)e(atmospheric)g(refrac-)227 4594
+y(tion,)j(using)f(the)i(simple)d(\001)p Fl(\020)k FD(=)25
+b Fl(a)15 b FD(tan)g Fl(\020)27 b FD(+)20 b Fl(b)15 b
+FD(tan)1913 4561 y Fu(3)1968 4594 y Fl(\020)37 b FD(mo)s(del.)0
+4782 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_REFV)g(\(VU,)h(REFA,)f
+(REFB,)g(VR\))0 5099 y FB(GIVEN)f FD(:)277 5245 y Fq(VU)600
+b FB(D)565 b FD(unrefracted)50 b(p)s(osition)e(of)i(the)h(source)f(\([)
+15 b Fl(Az)t(;)g(E)5 b(l)54 b FD(])c(3-)1658 5358 y(v)m(ector\))277
+5471 y Fq(REF)-9 b(A)490 b FB(D)565 b FD(tan)16 b Fl(\020)36
+b FD(co)s(e\016cien)m(t)c(\(radians\))277 5584 y Fq(REFB)485
+b FB(D)565 b FD(tan)1789 5551 y Fu(3)1844 5584 y Fl(\020)37
+b FD(co)s(e\016cien)m(t)31 b(\(radians\))p eop
+%%Page: 146 148
+146 147 bop 0 52 a FD(146)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(VR)602 b FB(D)565 b FD(refracted)25 b(p)s(osition)e(of)j(the)f
+(source)g(\([)15 b Fl(Az)t(;)g(E)5 b(l)28 b FD(])d(3-v)m(ector\))0
+983 y FB(NOTES)44 b FD(:)311 1179 y(1.)i(This)30 b(routine)g(applies)g
+(the)h(adjustmen)m(t)g(for)g(refraction)g(in)f(the)i(opp)s(osite)e
+(sense)h(to)h(the)g(usual)427 1291 y(one)24 b({)f(it)g(tak)m(es)h(an)f
+(unrefracted)f(\()p Fq(in)27 b(vacuo)6 b FD(\))23 b(p)s(osition)e(and)i
+(pro)s(duces)e(an)i(observ)m(ed)g(\(refracted\))427 1404
+y(p)s(osition,)28 b(whereas)g(the)h(\001)p Fl(\020)i
+FD(=)25 b Fl(a)15 b FD(tan)h Fl(\020)23 b FD(+)16 b Fl(b)f
+FD(tan)2083 1371 y Fu(3)2138 1404 y Fl(\020)35 b FD(mo)s(del)27
+b(strictly)h(applies)e(to)k(the)e(case)i(where)427 1517
+y(an)g(observ)m(ed)g(p)s(osition)e(is)h(to)i(ha)m(v)m(e)g(the)f
+(refraction)g(remo)m(v)m(ed.)41 b(The)30 b(unrefracted)f(to)i
+(refracted)427 1630 y(case)h(is)d(harder,)h(and)f(requires)g(an)i(in)m
+(v)m(erted)f(form)g(of)g(the)h(text-b)s(o)s(ok)g(refraction)f(mo)s
+(dels;)f(the)427 1743 y(algorithm)38 b(used)g(here)g(is)g(equiv)-5
+b(alen)m(t)38 b(to)i(one)e(iteration)h(of)g(the)f(Newton-Raphson)h
+(metho)s(d)427 1856 y(applied)28 b(to)k(the)e(ab)s(o)m(v)m(e)i(form)m
+(ula.)311 2006 y(2.)46 b(Though)31 b(optimized)f(for)h(sp)s(eed)f
+(rather)h(than)g(precision,)f(the)i(presen)m(t)f(routine)f(ac)m(hiev)m
+(es)j(con-)427 2119 y(sistency)41 b(with)e(the)i
+(refracted-to-unrefracted)h(\001)p Fl(\020)49 b FD(=)43
+b Fl(a)15 b FD(tan)g Fl(\020)34 b FD(+)27 b Fl(b)15 b
+FD(tan)2995 2086 y Fu(3)3050 2119 y Fl(\020)47 b FD(mo)s(del)40
+b(at)h(b)s(etter)427 2232 y(than)32 b(1)g(microarcsecond)f(within)e(30)
+1730 2199 y Fp(\016)1802 2232 y FD(of)j(the)g(zenith)f(and)g(remains)f
+(within)f(1)j(milliarcsecond)427 2345 y(to)j Fl(\020)j
+FD(=)31 b(70)812 2312 y Fp(\016)853 2345 y FD(.)52 b(The)33
+b(inheren)m(t)h(accuracy)h(of)f(the)g(mo)s(del)f(is,)i(of)f(course,)i
+(far)e(w)m(orse)g(than)g(this)f({)427 2458 y(see)e(the)g(do)s(cumen)m
+(tation)f(for)g(sla)p Ft(_)p FD(REF)m(CO)g(for)g(more)g(information.)
+311 2608 y(3.)46 b(A)m(t)34 b(lo)m(w)f(elev)-5 b(ations)33
+b(\(b)s(elo)m(w)g(ab)s(out)g(3)1752 2575 y Fp(\016)1791
+2608 y FD(\))h(the)f(refraction)g(correction)g(is)f(held)g(bac)m(k)i
+(to)g(prev)m(en)m(t)427 2721 y(arithmetic)k(problems)f(and)h(wildly)e
+(wrong)i(results.)64 b(F)-8 b(or)40 b(optical/IR)e(w)m(a)m(v)m
+(elengths,)k(o)m(v)m(er)e(a)427 2833 y(wide)e(range)g(of)h(observ)m(er)
+g(heigh)m(ts)f(and)g(corresp)s(onding)f(temp)s(eratures)h(and)g
+(pressures,)h(the)427 2946 y(follo)m(wing)21 b(lev)m(els)g(of)i
+(accuracy)g(\(w)m(orst)f(case\))i(are)e(ac)m(hiev)m(ed,)j(relativ)m(e)d
+(to)h(n)m(umerical)d(in)m(tegration)427 3059 y(through)30
+b(a)h(mo)s(del)e(atmosphere:)1519 3224 y Fl(\020)1559
+3239 y Ff(obs)1769 3224 y Fq(err)-5 b(or)1525 3450 y
+FD(80)1615 3417 y Fp(\016)1811 3450 y FD(0)1851 3413
+y Fk(0)l(0)1855 3450 y Fl(:)p FD(7)1525 3563 y(81)1615
+3530 y Fp(\016)1811 3563 y FD(1)1851 3526 y Fk(0)l(0)1855
+3563 y Fl(:)p FD(3)1525 3676 y(82)1615 3643 y Fp(\016)1811
+3676 y FD(2)1851 3639 y Fk(0)l(0)1855 3676 y Fl(:)p FD(5)1525
+3789 y(83)1615 3756 y Fp(\016)1828 3789 y FD(5)1868 3752
+y Fk(0)l(0)1525 3901 y FD(84)1615 3868 y Fp(\016)1805
+3901 y FD(10)1890 3865 y Fk(0)m(0)1525 4014 y FD(85)1615
+3981 y Fp(\016)1805 4014 y FD(20)1890 3978 y Fk(0)m(0)1525
+4127 y FD(86)1615 4094 y Fp(\016)1805 4127 y FD(55)1890
+4090 y Fk(0)m(0)1525 4240 y FD(87)1615 4207 y Fp(\016)1782
+4240 y FD(160)1912 4203 y Fk(0)n(0)1525 4353 y FD(88)1615
+4320 y Fp(\016)1782 4353 y FD(360)1912 4316 y Fk(0)n(0)1525
+4466 y FD(89)1615 4433 y Fp(\016)1782 4466 y FD(640)1912
+4429 y Fk(0)n(0)1525 4579 y FD(90)1615 4546 y Fp(\016)1760
+4579 y FD(1100)1935 4542 y Fk(0)m(0)1525 4692 y FD(91)1615
+4659 y Fp(\016)1760 4692 y FD(1700)1935 4655 y Fk(0)m(0)2076
+4692 y Fl(<)30 b FD(high-altitude)1525 4805 y(92)1615
+4772 y Fp(\016)1760 4805 y FD(2600)1935 4768 y Fk(0)m(0)2076
+4805 y Fl(<)g FD(sites)g(only)427 4970 y(The)c(results)g(for)g(radio)g
+(are)h(sligh)m(tly)d(w)m(orse)j(o)m(v)m(er)h(most)f(of)g(the)g(range,)h
+(b)s(ecoming)d(signi\014can)m(tly)427 5083 y(w)m(orse)31
+b(b)s(elo)m(w)f Fl(\020)h FD(=)25 b(88)1193 5050 y Fp(\016)1264
+5083 y FD(and)30 b(un)m(usable)e(b)s(ey)m(ond)i Fl(\020)i
+FD(=)25 b(90)2391 5050 y Fp(\016)2431 5083 y FD(.)311
+5233 y(4.)46 b(See)27 b(also)f(the)g(routine)f(sla)p
+Ft(_)p FD(REFZ,)g(whic)m(h)g(p)s(erforms)g(the)h(adjustmen)m(t)g(to)h
+(the)f(zenith)g(distance)427 5346 y(rather)40 b(than)f(in)f([)15
+b Fl(x;)g(y)s(;)g(z)21 b FD(].)68 b(The)39 b(presen)m(t)h(routine)f(is)
+f(faster)i(than)f(sla)p Ft(_)p FD(REFZ)g(and,)i(except)427
+5459 y(v)m(ery)28 b(lo)m(w)f(do)m(wn,)g(is)g(equally)f(accurate)i(for)f
+(all)f(practical)h(purp)s(oses.)38 b(Ho)m(w)m(ev)m(er,)30
+b(b)s(ey)m(ond)d(ab)s(out)427 5571 y Fl(\020)54 b FD(=)47
+b(84)729 5538 y Fp(\016)812 5571 y FD(sla)p Ft(_)p FD(REFZ)c(should)e
+(b)s(e)i(used,)j(and)d(for)g(the)h(utmost)g(accuracy)g(iterativ)m(e)g
+(use)f(of)427 5684 y(sla)p Ft(_)p FD(REFR)m(O)30 b(should)e(b)s(e)i
+(considered.)p eop
+%%Page: 147 149
+147 148 bop 0 52 a Fw(SUN/67.70)3206 b FD(147)p 0 267
+3780 8 v 0 380 a Fx(SLA)p Fn(_)p Fx(REFZ)602 b Fm(Apply)38
+b(Refraction)f(to)h(ZD)603 b Fx(SLA)p Fn(_)p Fx(REFZ)0
+730 y FB(A)m(CTION)44 b FD(:)f(Adjust)31 b(an)h(unrefracted)f(zenith)h
+(distance)f(to)i(include)c(the)j(e\013ect)i(of)e(atmospheric)f(refrac-)
+227 843 y(tion,)f(using)f(the)i(simple)d(\001)p Fl(\020)k
+FD(=)25 b Fl(a)15 b FD(tan)g Fl(\020)27 b FD(+)20 b Fl(b)15
+b FD(tan)1913 810 y Fu(3)1968 843 y Fl(\020)37 b FD(mo)s(del.)0
+1031 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_REFZ)g(\(ZU,)h(REFA,)f
+(REFB,)g(ZR\))0 1448 y FB(GIVEN)f FD(:)277 1594 y Fq(ZU)612
+b FB(D)565 b FD(unrefracted)29 b(zenith)f(distance)h(of)g(the)h(source)
+f(\(radians\))277 1820 y Fq(REF)-9 b(A)490 b FB(D)565
+b FD(tan)16 b Fl(\020)36 b FD(co)s(e\016cien)m(t)c(\(radians\))277
+1933 y Fq(REFB)485 b FB(D)565 b FD(tan)1789 1900 y Fu(3)1844
+1933 y Fl(\020)37 b FD(co)s(e\016cien)m(t)31 b(\(radians\))0
+2399 y FB(RETURNED)46 b FD(:)277 2571 y Fq(ZR)614 b FB(D)565
+b FD(refracted)31 b(zenith)f(distance)g(\(radians\))0
+3046 y FB(NOTES)44 b FD(:)311 3278 y(1.)i(This)30 b(routine)g(applies)g
+(the)h(adjustmen)m(t)g(for)g(refraction)g(in)f(the)i(opp)s(osite)e
+(sense)h(to)h(the)g(usual)427 3391 y(one)24 b({)f(it)g(tak)m(es)h(an)f
+(unrefracted)f(\()p Fq(in)27 b(vacuo)6 b FD(\))23 b(p)s(osition)e(and)i
+(pro)s(duces)e(an)i(observ)m(ed)g(\(refracted\))427 3504
+y(p)s(osition,)28 b(whereas)g(the)h(\001)p Fl(\020)i
+FD(=)25 b Fl(a)15 b FD(tan)h Fl(\020)23 b FD(+)16 b Fl(b)f
+FD(tan)2083 3471 y Fu(3)2138 3504 y Fl(\020)35 b FD(mo)s(del)27
+b(strictly)h(applies)e(to)k(the)e(case)i(where)427 3617
+y(an)g(observ)m(ed)g(p)s(osition)e(is)h(to)i(ha)m(v)m(e)g(the)f
+(refraction)g(remo)m(v)m(ed.)41 b(The)30 b(unrefracted)f(to)i
+(refracted)427 3730 y(case)h(is)d(harder,)h(and)f(requires)g(an)i(in)m
+(v)m(erted)f(form)g(of)g(the)h(text-b)s(o)s(ok)g(refraction)f(mo)s
+(dels;)f(the)427 3843 y(form)m(ula)21 b(used)f(here)h(is)f(based)g(on)h
+(the)h(Newton-Raphson)f(metho)s(d.)37 b(F)-8 b(or)21
+b(the)h(utmost)f(n)m(umerical)427 3956 y(consistency)35
+b(with)f(the)h(refracted)g(to)h(unrefracted)e(mo)s(del,)h(t)m(w)m(o)h
+(iterations)f(are)g(carried)f(out,)427 4069 y(ac)m(hieving)29
+b(agreemen)m(t)h(at)g(the)f(10)1615 4036 y Fp(\000)p
+Fu(11)1774 4069 y FD(arcsecond)g(lev)m(el)g(for)f Fl(\020)k
+FD(=)25 b(80)2788 4036 y Fp(\016)2828 4069 y FD(.)40
+b(The)29 b(inheren)m(t)e(accuracy)427 4182 y(of)d(the)g(mo)s(del)f(is,)
+h(of)g(course,)h(far)f(w)m(orse)g(than)f(this)g({)h(see)g(the)g(do)s
+(cumen)m(tation)g(for)f(sla)p Ft(_)p FD(REF)m(CO)427
+4295 y(for)30 b(more)h(information.)311 4463 y(2.)46
+b(A)m(t)28 b Fl(\020)k FD(=)25 b(83)813 4430 y Fp(\016)853
+4463 y FD(,)j(the)f(rapidly-w)m(orsening)d(\001)p Fl(\020)31
+b FD(=)25 b Fl(a)15 b FD(tan)h Fl(\020)k FD(+)13 b Fl(b)i
+FD(tan)2571 4430 y Fu(3)2626 4463 y Fl(\020)33 b FD(mo)s(del)26
+b(is)g(abandoned)g(and)h(an)427 4576 y(empirical)h(form)m(ula)i(tak)m
+(es)i(o)m(v)m(er:)1201 4902 y(\001)p Fl(\020)g FD(=)25
+b Fl(F)1531 4758 y Fi( )1607 4841 y FD(0)1652 4808 y
+Fp(\016)1658 4841 y Fl(:)r FD(55445)d Fo(\000)e FD(0)2068
+4808 y Fp(\016)2074 4841 y Fl(:)r FD(01133)p Fl(E)29
+b FD(+)19 b(0)2557 4808 y Fp(\016)2563 4841 y Fl(:)r
+FD(00202)p Fl(E)2887 4808 y Fu(2)p 1607 4881 1324 4 v
+1744 4965 a FD(1)i(+)f(0)p Fl(:)p FD(28385)p Fl(E)28
+b FD(+)20 b(0)p Fl(:)p FD(02390)p Fl(E)2749 4939 y Fu(2)2940
+4758 y Fi(!)427 5213 y FD(where)33 b Fl(E)j FD(=)30 b(90)987
+5180 y Fp(\016)1050 5213 y Fo(\000)22 b Fl(\020)1183
+5227 y Ff(tr)r(ue)1353 5213 y FD(and)33 b Fl(F)47 b FD(is)32
+b(a)i(factor)g(c)m(hosen)g(to)h(meet)f(the)g(\001)p Fl(\020)i
+FD(=)31 b Fl(a)15 b FD(tan)g Fl(\020)29 b FD(+)22 b Fl(b)15
+b FD(tan)3678 5180 y Fu(3)3733 5213 y Fl(\020)427 5326
+y FD(form)m(ula)30 b(at)h Fl(\020)h FD(=)25 b(83)1130
+5293 y Fp(\016)1170 5326 y FD(.)427 5467 y(F)-8 b(or)30
+b(optical/IR)e(w)m(a)m(v)m(elengths,)i(o)m(v)m(er)g(a)f(wide)e(range)i
+(of)g(observ)m(er)f(heigh)m(ts)h(and)e(corresp)s(onding)427
+5580 y(temp)s(eratures)c(and)f(pressures,)i(the)f(follo)m(wing)e(lev)m
+(els)i(of)g(accuracy)h(\(w)m(orst)g(case\))g(are)f(ac)m(hiev)m(ed,)427
+5693 y(relativ)m(e)31 b(to)g(n)m(umerical)e(in)m(tegration)h(through)g
+(a)h(mo)s(del)e(atmosphere:)p eop
+%%Page: 148 150
+148 149 bop 0 52 a FD(148)1528 339 y Fl(\020)1568 354
+y Ff(obs)1769 339 y Fq(err)-5 b(or)1534 565 y FD(80)1624
+532 y Fp(\016)1811 565 y FD(0)1851 528 y Fk(0)l(0)1855
+565 y Fl(:)p FD(7)1534 678 y(81)1624 645 y Fp(\016)1811
+678 y FD(1)1851 641 y Fk(0)l(0)1855 678 y Fl(:)p FD(3)1534
+791 y(82)1624 758 y Fp(\016)1811 791 y FD(2)1851 754
+y Fk(0)l(0)1855 791 y Fl(:)p FD(4)1534 904 y(83)1624
+871 y Fp(\016)1811 904 y FD(4)1851 867 y Fk(0)l(0)1855
+904 y Fl(:)p FD(7)1534 1016 y(84)1624 983 y Fp(\016)1811
+1016 y FD(6)1851 980 y Fk(0)l(0)1855 1016 y Fl(:)p FD(2)1534
+1129 y(85)1624 1096 y Fp(\016)1811 1129 y FD(6)1851 1092
+y Fk(0)l(0)1855 1129 y Fl(:)p FD(4)1534 1242 y(86)1624
+1209 y Fp(\016)1828 1242 y FD(8)1868 1205 y Fk(0)l(0)1534
+1355 y FD(87)1624 1322 y Fp(\016)1805 1355 y FD(10)1890
+1318 y Fk(0)m(0)1534 1468 y FD(88)1624 1435 y Fp(\016)1805
+1468 y FD(15)1890 1431 y Fk(0)m(0)1534 1581 y FD(89)1624
+1548 y Fp(\016)1805 1581 y FD(30)1890 1544 y Fk(0)m(0)1534
+1694 y FD(90)1624 1661 y Fp(\016)1805 1694 y FD(60)1890
+1657 y Fk(0)m(0)1534 1807 y FD(91)1624 1774 y Fp(\016)1782
+1807 y FD(150)1912 1770 y Fk(0)n(0)2067 1807 y Fl(<)30
+b FD(high-altitude)1534 1920 y(92)1624 1887 y Fp(\016)1782
+1920 y FD(400)1912 1883 y Fk(0)n(0)2067 1920 y Fl(<)g
+FD(sites)g(only)427 2104 y(F)-8 b(or)28 b(radio)e(w)m(a)m(v)m(elengths)
+i(the)f(errors)g(are)g(t)m(ypically)f(50\045)i(larger)e(than)h(the)g
+(optical)g(\014gures)f(and)427 2217 y(b)m(y)31 b Fl(\020)h
+FD(=)25 b(85)812 2184 y Fp(\016)882 2217 y FD(are)31
+b(t)m(wice)g(as)g(bad,)f(w)m(orsening)g(rapidly)e(b)s(elo)m(w)h(that.)
+42 b(T)-8 b(o)31 b(main)m(tain)e(1)3362 2180 y Fk(0)l(0)3433
+2217 y FD(accuracy)427 2329 y(do)m(wn)36 b(to)h Fl(\020)42
+b FD(=)35 b(85)1068 2296 y Fp(\016)1144 2329 y FD(at)i(the)g(Green)g
+(Bank)f(site,)i(Condon)d(\(2004\))k(has)d(suggested)h(amplifying)427
+2442 y(the)e(amoun)m(t)f(of)g(refraction)g(predicted)f(b)m(y)h(sla)p
+Ft(_)p FD(REFZ)f(b)s(elo)m(w)g(10)2761 2409 y Fp(\016)2767
+2442 y Fl(:)r FD(8)i(elev)-5 b(ation)34 b(b)m(y)g(the)g(factor)427
+2555 y(\(1)21 b(+)f(0)p Fl(:)p FD(00195)j Fo(\003)e FD(\(10)p
+Fl(:)p FD(8)h Fo(\000)e Fl(E)1378 2569 y Ff(topo)1512
+2555 y FD(\)\),)31 b(where)f Fl(E)1968 2569 y Ff(topo)2132
+2555 y FD(is)f(the)i(unrefracted)e(elev)-5 b(ation)31
+b(in)e(degrees.)427 2683 y(The)24 b(high-ZD)e(mo)s(del)h(is)g(scaled)g
+(to)i(matc)m(h)f(the)g(normal)f(mo)s(del)f(at)j(the)f(transition)e(p)s
+(oin)m(t;)j(there)427 2796 y(is)30 b(no)g(glitc)m(h.)311
+2939 y(3.)46 b(See)29 b(also)f(the)h(routine)f(sla)p
+Ft(_)p FD(REFV,)g(whic)m(h)f(p)s(erforms)g(the)i(adjustmen)m(t)f(in)f
+([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(],)29 b(and)f(with)427
+3051 y(the)j(emphasis)e(on)h(sp)s(eed)g(rather)g(than)g(n)m(umerical)f
+(accuracy)-8 b(.)0 3389 y FB(REFERENCE)44 b FD(:)j(Condon,)15
+b(J.J.,)34 b Fq(R)-5 b(efr)g(action)38 b(Corr)-5 b(e)g(ctions)37
+b(for)g(the)f(GBT,)d FD(PTCS/PN/35.2,)j(NRA)m(O)227 3502
+y(Green)31 b(Bank,)g(2004.)p 0 3624 3780 8 v 0 3737 a
+Fx(SLA)p Fn(_)p Fx(R)-15 b(VER)l(OT)326 b Fm(R)-13 b(V)39
+b(Corrn)e(to)h(Earth)f(Cen)m(tre)326 b Fx(SLA)p Fn(_)p
+Fx(R)-15 b(VER)l(OT)0 4087 y FB(A)m(CTION)44 b FD(:)c(V)-8
+b(elo)s(cit)m(y)31 b(comp)s(onen)m(t)g(in)e(a)i(giv)m(en)f(direction)f
+(due)h(to)h(Earth)f(rotation.)0 4275 y FB(CALL)45 b FD(:)77
+b Ft(R)47 b(=)h(sla_RVEROT)d(\(PHI,)h(RA,)h(DA,)g(ST\))0
+4610 y FB(GIVEN)e FD(:)277 4756 y Fq(PHI)571 b FB(R)c
+FD(geo)s(detic)31 b(latitude)f(of)g(observing)f(station)i(\(radians\))
+277 4869 y Fq(RA,D)n(A)439 b FB(R)567 b FD(apparen)m(t)31
+b([)15 b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))277
+4982 y Fq(ST)620 b FB(R)567 b FD(lo)s(cal)30 b(apparen)m(t)g(sidereal)f
+(time)h(\(radians\))0 5311 y FB(RETURNED)46 b FD(:)277
+5457 y Fq(sla)p Ft(_)p Fq(R)-9 b(VER)n(OT)196 b FB(R)567
+b FD(Comp)s(onen)m(t)99 b(of)g(Earth)g(rotation)h(in)d(direction)1658
+5570 y([RA,D)m(A])32 b(\(km)f(s)2260 5537 y Fp(\000)p
+Fu(1)2354 5570 y FD(\))p eop
+%%Page: 149 151
+149 150 bop 0 52 a Fw(SUN/67.70)3206 b FD(149)0 351 y
+FB(NOTES)44 b FD(:)311 536 y(1.)i(Sign)22 b(con)m(v)m(en)m(tion:)38
+b(the)24 b(result)e(is)g(p)s(ositiv)m(e)g(when)g(the)h(observ)-5
+b(atory)24 b(is)e(receding)h(from)f(the)h(giv)m(en)427
+649 y(p)s(oin)m(t)30 b(on)g(the)g(sky)-8 b(.)311 792
+y(2.)46 b(Accuracy:)60 b(the)40 b(simple)e(algorithm)h(used)f(assumes)i
+(a)g(spherical)e(Earth)h(and)g(an)h(observing)427 905
+y(station)j(at)g(sea)h(lev)m(el;)k(for)43 b(actual)g(observing)e
+(sites,)46 b(the)d(error)f(is)g(unlik)m(ely)e(to)j(b)s(e)f(greater)427
+1018 y(than)g(0.0005)i(km)e(s)1147 985 y Fp(\000)p Fu(1)1241
+1018 y FD(.)75 b(F)-8 b(or)43 b(applications)d(requiring)f(greater)k
+(accuracy)-8 b(,)47 b(use)41 b(the)h(routine)427 1131
+y(sla)p Ft(_)p FD(PV)m(OBS.)p 0 1245 3780 8 v 0 1358
+a Fx(SLA)p Fn(_)p Fx(R)-15 b(V)l(GALC)258 b Fm(R)-13
+b(V)39 b(Corrn)e(to)h(Galactic)f(Cen)m(tre)258 b Fx(SLA)p
+Fn(_)p Fx(R)-15 b(V)l(GALC)0 1708 y FB(A)m(CTION)44 b
+FD(:)c(V)-8 b(elo)s(cit)m(y)31 b(comp)s(onen)m(t)g(in)e(a)i(giv)m(en)f
+(direction)f(due)h(to)h(the)g(rotation)f(of)h(the)g(Galaxy)-8
+b(.)0 1896 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_RVGALC)d
+(\(R2000,)g(D2000\))0 2234 y FB(GIVEN)g FD(:)277 2405
+y Fq(R2000,D2000)205 b FB(R)567 b FD(J2000.0)33 b(mean)d([)15
+b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))0 2746 y
+FB(RETURNED)46 b FD(:)277 2892 y Fq(sla)p Ft(_)p Fq(R)-9
+b(V)n(GALC)199 b FB(R)567 b FD(Comp)s(onen)m(t)30 b(of)h(dynamical)f
+(LSR)g(motion)g(in)f(direction)1658 3005 y(R2000,D2000)35
+b(\(km)30 b(s)2439 2972 y Fp(\000)p Fu(1)2533 3005 y
+FD(\))0 3337 y FB(NOTES)44 b FD(:)311 3522 y(1.)i(Sign)26
+b(con)m(v)m(en)m(tion:)41 b(the)27 b(result)f(is)g(p)s(ositiv)m(e)h
+(when)f(the)h(LSR)g(is)f(receding)h(from)g(the)g(giv)m(en)g(p)s(oin)m
+(t)427 3635 y(on)k(the)f(sky)-8 b(.)311 3778 y(2.)46
+b(The)33 b(Lo)s(cal)g(Standard)g(of)g(Rest)h(used)f(here)g(is)f(a)i(p)s
+(oin)m(t)f(in)f(the)h(vicinit)m(y)f(of)i(the)f(Sun)f(whic)m(h)g(is)427
+3891 y(in)c(a)h(circular)f(orbit)g(around)f(the)j(Galactic)f(cen)m
+(tre.)42 b(Sometimes)28 b(called)g(the)i Fq(dynamic)-5
+b(al)40 b FD(LSR,)427 4004 y(it)31 b(is)g(not)h(to)g(b)s(e)f(confused)g
+(with)g(a)h Fq(kinematic)-5 b(al)42 b FD(LSR,)31 b(whic)m(h)f(is)h(the)
+h(mean)g(standard)f(of)g(rest)427 4117 y(of)g(star)f(catalogues)i(or)f
+(stellar)e(p)s(opulations.)311 4260 y(3.)46 b(The)34
+b(dynamical)f(LSR)g(v)m(elo)s(cit)m(y)i(due)f(to)h(Galactic)g(rotation)
+g(is)e(assumed)h(to)h(b)s(e)f(220)h(km)f(s)3685 4227
+y Fp(\000)p Fu(1)427 4373 y FD(to)m(w)m(ards)d Fl(l)795
+4340 y Ff(I)-7 b(I)885 4373 y FD(=)24 b(90)1070 4340
+y Fp(\016)1111 4373 y FD(,)30 b Fl(b)1205 4340 y Ff(I)-7
+b(I)1295 4373 y FD(=)25 b(0.)0 4713 y FB(REFERENCE)44
+b FD(:)d(Kerr)29 b(&)h(Lynden-Bell)f(\(1986\),)k(MNRAS,)e(221,)h
+(p1023.)p 0 4842 V 0 4955 a Fx(SLA)p Fn(_)p Fx(R)-15
+b(VLG)534 b Fm(R)-13 b(V)39 b(Corrn)e(to)h(Lo)s(cal)g(Group)534
+b Fx(SLA)p Fn(_)p Fx(R)-15 b(VLG)0 5305 y FB(A)m(CTION)44
+b FD(:)c(V)-8 b(elo)s(cit)m(y)30 b(comp)s(onen)m(t)g(in)f(a)h(giv)m(en)
+g(direction)e(due)h(to)i(the)e(com)m(bination)g(of)h(the)g(rotation)g
+(of)227 5418 y(the)h(Galaxy)f(and)g(the)g(motion)g(of)h(the)f(Galaxy)h
+(relativ)m(e)f(to)h(the)f(mean)h(motion)e(of)i(the)f(lo)s(cal)g(group.)
+0 5606 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_RVLG)d(\(R2000,)h
+(D2000\))p eop
+%%Page: 150 152
+150 151 bop 0 52 a FD(150)0 351 y FB(GIVEN)45 b FD(:)277
+523 y Fq(R2000,D2000)205 b FB(R)567 b FD(J2000.0)33 b(mean)d([)15
+b Fl(\013;)g(\016)20 b FD(])31 b(\(radians\))0 876 y
+FB(RETURNED)46 b FD(:)277 1022 y Fq(sla)p Ft(_)p Fq(R)-9
+b(VLG)330 b FB(R)567 b FD(Comp)s(onen)m(t)47 b(of)h FB(solar)g
+FD(\()p Fq(n.b.)p FD(\))92 b(motion)47 b(in)f(direction)1658
+1135 y(R2000,D2000)35 b(\(km)30 b(s)2439 1102 y Fp(\000)p
+Fu(1)2533 1135 y FD(\))0 1481 y FB(NOTE)44 b FD(:)d(Sign)28
+b(con)m(v)m(en)m(tion:)42 b(the)30 b(result)f(is)g(p)s(ositiv)m(e)g
+(when)g(the)i(Sun)d(is)h(receding)h(from)f(the)h(giv)m(en)g(p)s(oin)m
+(t)227 1594 y(on)h(the)f(sky)-8 b(.)0 1947 y FB(REFERENCE)44
+b FD(:)d Fq(IA)n(U)31 b(T)-7 b(r)i(ans.)32 b FD(1976.)g
+FB(16B)p FD(,)g(p201.)p 0 2076 3780 8 v 0 2189 a Fx(SLA)p
+Fn(_)p Fx(R)-15 b(VLSRD)278 b Fm(R)-13 b(V)38 b(Corrn)g(to)g(Dynamical)
+e(LSR)279 b Fx(SLA)p Fn(_)p Fx(R)-15 b(VLSRD)0 2539 y
+FB(A)m(CTION)44 b FD(:)i(V)-8 b(elo)s(cit)m(y)34 b(comp)s(onen)m(t)f
+(in)f(a)h(giv)m(en)g(direction)f(due)g(to)i(the)f(Sun's)f(motion)h
+(with)f(resp)s(ect)h(to)227 2652 y(the)e(\\dynamical")f(Lo)s(cal)g
+(Standard)f(of)i(Rest.)0 2840 y FB(CALL)45 b FD(:)77
+b Ft(R)47 b(=)h(sla_RVLSRD)d(\(R2000,)g(D2000\))0 3185
+y FB(GIVEN)g FD(:)277 3356 y Fq(R2000,D2000)205 b FB(R)567
+b FD(J2000.0)33 b(mean)d([)15 b Fl(\013;)g(\016)20 b
+FD(])31 b(\(radians\))0 3710 y FB(RETURNED)46 b FD(:)277
+3856 y Fq(sla)p Ft(_)p Fq(R)-9 b(VLSRD)214 b FB(R)567
+b FD(Comp)s(onen)m(t)43 b(of)h Fq(p)-5 b(e)g(culiar)55
+b FD(solar)44 b(motion)f(in)f(direction)1658 3969 y(R2000,D2000)35
+b(\(km)30 b(s)2439 3936 y Fp(\000)p Fu(1)2533 3969 y
+FD(\))0 4314 y FB(NOTES)44 b FD(:)311 4500 y(1.)i(Sign)28
+b(con)m(v)m(en)m(tion:)41 b(the)29 b(result)f(is)g(p)s(ositiv)m(e)g
+(when)g(the)h(Sun)e(is)h(receding)h(from)f(the)i(giv)m(en)e(p)s(oin)m
+(t)427 4613 y(on)j(the)f(sky)-8 b(.)311 4758 y(2.)46
+b(The)32 b(Lo)s(cal)f(Standard)g(of)h(Rest)g(used)f(here)h(is)f(the)h
+Fq(dynamic)-5 b(al)43 b FD(LSR,)31 b(a)i(p)s(oin)m(t)e(in)f(the)i
+(vicinit)m(y)427 4871 y(of)e(the)g(Sun)e(whic)m(h)g(is)h(in)f(a)i
+(circular)e(orbit)g(around)h(the)h(Galactic)g(cen)m(tre.)42
+b(The)29 b(Sun's)f(motion)427 4984 y(with)h(resp)s(ect)i(to)g(the)f
+(dynamical)f(LSR)h(is)f(called)h(the)g Fq(p)-5 b(e)g(culiar)42
+b FD(solar)30 b(motion.)311 5128 y(3.)46 b(There)35 b(is)f(another)i(t)
+m(yp)s(e)f(of)g(LSR,)g(called)f(a)i Fq(kinematic)-5 b(al)46
+b FD(LSR.)34 b(A)i(kinematical)e(LSR)g(is)g(the)427 5241
+y(mean)d(standard)g(of)g(rest)g(of)g(sp)s(eci\014ed)f(star)h
+(catalogues)h(or)f(stellar)g(p)s(opulations,)e(and)h(sev)m(eral)427
+5354 y(sligh)m(tly)h(di\013eren)m(t)h(kinematical)g(LSRs)f(are)i(in)f
+(use.)47 b(The)32 b(Sun's)f(motion)h(with)g(resp)s(ect)g(to)i(an)427
+5467 y(agreed)c(kinematical)f(LSR)f(is)g(kno)m(wn)h(as)h(the)f
+Fq(standar)-5 b(d)42 b FD(solar)29 b(motion.)40 b(The)29
+b(dynamical)e(LSR)427 5580 y(is)35 b(seldom)f(used)h(b)m(y)h(observ)-5
+b(ational)34 b(astronomers,)k(who)d(con)m(v)m(en)m(tionally)g(use)h(a)f
+(kinematical)427 5693 y(LSR)30 b(suc)m(h)g(as)g(the)h(one)g(implemen)m
+(ted)e(in)g(the)h(routine)g(sla)p Ft(_)p FD(R)-10 b(VLSRK.)p
+eop
+%%Page: 151 153
+151 152 bop 0 52 a Fw(SUN/67.70)3206 b FD(151)311 351
+y(4.)46 b(The)25 b(p)s(eculiar)f(solar)h(motion)g(is)g(from)g(Delha)m
+(y)m(e)i(\(1965\),)i(in)24 b Fq(Stars)29 b(and)g(Stel)5
+b(lar)30 b(Systems)p FD(,)d(v)m(ol)f(5,)427 464 y(p73:)57
+b(in)37 b(Galactic)j(Cartesian)e(co)s(ordinates)g(\(+9,+12,+7\))i(km)e
+(s)2792 431 y Fp(\000)p Fu(1)2886 464 y FD(.)65 b(This)37
+b(corresp)s(onds)g(to)427 577 y(ab)s(out)30 b(16.6)i(km)e(s)1069
+544 y Fp(\000)p Fu(1)1194 577 y FD(to)m(w)m(ards)h(Galactic)g(co)s
+(ordinates)f Fl(l)2404 544 y Ff(I)-7 b(I)2493 577 y FD(=)25
+b(53)2679 544 y Fp(\016)2720 577 y Fl(;)15 b(b)2799 544
+y Ff(I)-7 b(I)2888 577 y FD(=)25 b(+25)3145 544 y Fp(\016)3185
+577 y FD(.)p 0 679 3780 8 v 0 792 a Fx(SLA)p Fn(_)p Fx(R)-15
+b(VLSRK)241 b Fm(R)-13 b(V)39 b(Corrn)e(to)h(Kinematical)d(LSR)242
+b Fx(SLA)p Fn(_)p Fx(R)-15 b(VLSRK)0 1142 y FB(A)m(CTION)44
+b FD(:)39 b(V)-8 b(elo)s(cit)m(y)29 b(comp)s(onen)m(t)f(in)f(a)h(giv)m
+(en)g(direction)f(due)g(to)i(the)f(Sun's)e(motion)i(with)e(resp)s(ect)i
+(to)h(a)227 1255 y(kinematical)h(Lo)s(cal)g(Standard)f(of)i(Rest.)0
+1443 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_RVLSRK)d(\(R2000,)g
+(D2000\))0 1752 y FB(GIVEN)g FD(:)277 1923 y Fq(R2000,D2000)205
+b FB(R)567 b FD(J2000.0)33 b(mean)d([)15 b Fl(\013;)g(\016)20
+b FD(])31 b(\(radians\))0 2214 y FB(RETURNED)46 b FD(:)277
+2360 y Fq(sla)p Ft(_)p Fq(R)-9 b(VLSRK)213 b FB(R)567
+b FD(Comp)s(onen)m(t)38 b(of)h Fq(standar)-5 b(d)50 b
+FD(solar)38 b(motion)g(in)f(direction)1658 2473 y(R2000,D2000)e(\(km)30
+b(s)2439 2440 y Fp(\000)p Fu(1)2533 2473 y FD(\))0 2755
+y FB(NOTES)44 b FD(:)311 2933 y(1.)i(Sign)28 b(con)m(v)m(en)m(tion:)41
+b(the)29 b(result)f(is)g(p)s(ositiv)m(e)g(when)g(the)h(Sun)e(is)h
+(receding)h(from)f(the)i(giv)m(en)e(p)s(oin)m(t)427 3046
+y(on)j(the)f(sky)-8 b(.)311 3181 y(2.)46 b(The)29 b(Lo)s(cal)f
+(Standard)g(of)h(Rest)h(used)e(here)h(is)e(one)j(of)f(sev)m(eral)g
+Fq(kinematic)-5 b(al)40 b FD(LSRs)28 b(in)f(common)427
+3294 y(use.)49 b(A)33 b(kinematical)g(LSR)f(is)g(the)h(mean)h(standard)
+e(of)h(rest)h(of)f(sp)s(eci\014ed)e(star)j(catalogues)g(or)427
+3407 y(stellar)h(p)s(opulations.)52 b(The)35 b(Sun's)e(motion)i(with)f
+(resp)s(ect)h(to)h(a)f(kinematical)g(LSR)f(is)g(kno)m(wn)427
+3520 y(as)d(the)f Fq(standar)-5 b(d)43 b FD(solar)30
+b(motion.)311 3656 y(3.)46 b(There)33 b(is)g(another)g(sort)h(of)f
+(LSR,)g(seldom)g(used)f(b)m(y)h(observ)-5 b(ational)33
+b(astronomers,)i(called)d(the)427 3769 y Fq(dynamic)-5
+b(al)42 b FD(LSR.)29 b(This)f(is)g(a)i(p)s(oin)m(t)f(in)g(the)h
+(vicinit)m(y)e(of)h(the)h(Sun)f(whic)m(h)f(is)h(in)f(a)i(circular)e
+(orbit)427 3882 y(around)h(the)h(Galactic)h(cen)m(tre.)42
+b(The)30 b(Sun's)e(motion)i(with)f(resp)s(ect)h(to)g(the)h(dynamical)d
+(LSR)h(is)427 3995 y(called)j(the)h Fq(p)-5 b(e)g(culiar)44
+b FD(solar)32 b(motion.)47 b(T)-8 b(o)34 b(obtain)e(a)h(radial)e(v)m
+(elo)s(cit)m(y)i(correction)g(with)e(resp)s(ect)427 4108
+y(to)g(the)g(dynamical)e(LSR)g(use)h(the)h(routine)e(sla)p
+Ft(_)p FD(R)-10 b(VLSRD.)311 4244 y(4.)46 b(The)30 b(adopted)h
+(standard)e(solar)h(motion)g(is)g(20)h(km)f(s)2271 4211
+y Fp(\000)p Fu(1)2395 4244 y FD(to)m(w)m(ards)h Fl(\013)26
+b FD(=)f(18)3004 4211 y Fu(h)3048 4244 y Fl(;)15 b(\016)30
+b FD(=)25 b(+30)3415 4211 y Fp(\016)3485 4244 y FD(\(1900\).)0
+4534 y FB(REFERENCES)44 b FD(:)311 4712 y(1.)i(Delha)m(y)m(e)32
+b(\(1965\),)h(in)c Fq(Stars)34 b(and)f(Stel)5 b(lar)34
+b(Systems)p FD(,)e(v)m(ol)e(5,)h(p73.)311 4848 y(2.)46
+b Fq(Metho)-5 b(ds)34 b(of)f(Exp)-5 b(erimental)34 b(Physics)39
+b FD(\(ed)30 b(Meeks\),)i(v)m(ol)e(12,)i(part)e(C,)g(sec)h(6.1.5.2,)i
+(p281.)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(S2TP)545
+b Fm(Spherical)37 b(to)h(T)-10 b(angen)m(t)38 b(Plane)546
+b Fx(SLA)p Fn(_)p Fx(S2TP)0 5418 y FB(A)m(CTION)44 b
+FD(:)c(Pro)5 b(jection)31 b(of)f(spherical)f(co)s(ordinates)h(on)m(to)i
+(the)e(tangen)m(t)i(plane)d(\(single)h(precision\).)0
+5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_S2TP)g(\(RA,)h(DEC,)f
+(RAZ,)h(DECZ,)f(XI,)h(ETA,)g(J\))p eop
+%%Page: 152 154
+152 153 bop 0 52 a FD(152)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(RA,DEC)378 b FB(R)567 b FD(spherical)29 b(co)s(ordinates)h(of)
+g(star)h(\(radians\))277 610 y Fq(RAZ,DECZ)266 b FB(R)567
+b FD(spherical)29 b(co)s(ordinates)h(of)g(tangen)m(t)i(p)s(oin)m(t)e
+(\(radians\))0 865 y FB(RETURNED)46 b FD(:)277 1011 y
+Fq(XI,ET)-7 b(A)417 b FB(R)567 b FD(tangen)m(t)32 b(plane)d(co)s
+(ordinates)h(\(radians\))277 1124 y Fq(J)688 b FB(I)605
+b FD(status:)1825 1236 y(0)31 b(=)f(OK,)g(star)g(on)g(tangen)m(t)i
+(plane)1825 1349 y(1)f(=)f(error,)g(star)g(to)s(o)h(far)g(from)f(axis)
+1825 1462 y(2)h(=)f(error,)g(an)m(tistar)g(on)h(tangen)m(t)h(plane)1825
+1575 y(3)f(=)f(error,)g(an)m(tistar)g(to)s(o)i(far)e(from)g(axis)0
+1830 y FB(NOTES)44 b FD(:)311 2003 y(1.)i(The)24 b(pro)5
+b(jection)25 b(is)f(called)f(the)i Fq(gnomonic)31 b FD(pro)5
+b(jection;)27 b(the)d(Cartesian)h(co)s(ordinates)f([)15
+b Fl(\030)t(;)g(\021)k FD(])25 b(are)427 2116 y(called)30
+b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 2229 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 2361 y(2.)46 b(When)26 b(w)m(orking)g(in)e([)15
+b Fl(x;)g(y)s(;)g(z)21 b FD(])26 b(rather)g(than)g(spherical)e(co)s
+(ordinates,)j(the)f(equiv)-5 b(alen)m(t)26 b(Cartesian)427
+2474 y(routine)k(sla)p Ft(_)p FD(V2TP)f(is)h(a)m(v)-5
+b(ailable.)p 0 2555 3780 8 v 0 2668 a Fx(SLA)p Fn(_)p
+Fx(SEP)432 b Fm(Angle)38 b(Bet)m(w)m(een)f(2)i(P)m(oin)m(ts)e(on)h
+(Sphere)433 b Fx(SLA)p Fn(_)p Fx(SEP)0 3018 y FB(A)m(CTION)44
+b FD(:)c(Angle)31 b(b)s(et)m(w)m(een)g(t)m(w)m(o)g(p)s(oin)m(ts)f(on)g
+(a)h(sphere)e(\(single)h(precision\).)0 3206 y FB(CALL)45
+b FD(:)77 b Ft(R)47 b(=)h(sla_SEP)d(\(A1,)i(B1,)g(A2,)g(B2\))0
+3499 y FB(GIVEN)e FD(:)277 3645 y Fq(A1,B1)484 b FB(R)567
+b FD(spherical)29 b(co)s(ordinates)h(of)g(one)h(p)s(oin)m(t)e
+(\(radians\))277 3758 y Fq(A2,B2)484 b FB(R)567 b FD(spherical)26
+b(co)s(ordinates)i(of)h(the)f(other)g(p)s(oin)m(t)g(\(radians\))0
+4012 y FB(RETURNED)46 b FD(:)277 4184 y Fq(sla)p Ft(_)p
+Fq(SEP)407 b FB(R)567 b FD(angle)31 b(b)s(et)m(w)m(een)g([A1,B1])h(and)
+e([A2,B2])i(in)d(radians)0 4446 y FB(NOTES)44 b FD(:)311
+4620 y(1.)i(The)26 b(spherical)e(co)s(ordinates)h(are)h(righ)m(t)g
+(ascension)f(and)g(declination,)h(longitude)e(and)h(latitude,)427
+4733 y Fq(etc.)30 b FD(in)f(radians.)311 4865 y(2.)46
+b(The)30 b(result)f(is)h(alw)m(a)m(ys)h(p)s(ositiv)m(e.)p
+0 4955 V 0 5068 a Fx(SLA)p Fn(_)p Fx(SEPV)574 b Fm(Angle)38
+b(Bet)m(w)m(een)g(2)g(V)-10 b(ectors)575 b Fx(SLA)p Fn(_)p
+Fx(SEPV)0 5418 y FB(A)m(CTION)44 b FD(:)c(Angle)31 b(b)s(et)m(w)m(een)g
+(t)m(w)m(o)g(v)m(ectors)h(\(single)e(precision\).)0 5606
+y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_SEPV)d(\(V1,)i(V2\))p
+eop
+%%Page: 153 155
+153 154 bop 0 52 a Fw(SUN/67.70)3206 b FD(153)0 351 y
+FB(GIVEN)45 b FD(:)277 497 y Fq(V1)622 b FB(R\(3\))433
+b FD(\014rst)30 b(v)m(ector)277 610 y Fq(V2)622 b FB(R\(3\))433
+b FD(second)31 b(v)m(ector)0 967 y FB(RETURNED)46 b FD(:)277
+1138 y Fq(sla)p Ft(_)p Fq(SEPV)339 b FB(R)567 b FD(angle)31
+b(b)s(et)m(w)m(een)g(V1)f(and)g(V2)h(in)e(radians)0 1503
+y FB(NOTES)44 b FD(:)311 1692 y(1.)i(There)30 b(is)g(no)g(requiremen)m
+(t)f(for)i(either)e(v)m(ector)j(to)f(b)s(e)f(of)h(unit)e(length.)311
+1839 y(2.)46 b(If)30 b(either)g(v)m(ector)i(is)d(n)m(ull,)g(zero)i(is)f
+(returned.)311 1986 y(3.)46 b(The)30 b(result)f(is)h(alw)m(a)m(ys)h(p)s
+(ositiv)m(e.)p 0 2119 3780 8 v 0 2232 a Fx(SLA)p Fn(_)p
+Fx(SMA)-11 b(T)413 b Fm(Solv)m(e)38 b(Sim)m(ultaneous)d(Equations)414
+b Fx(SLA)p Fn(_)p Fx(SMA)-11 b(T)0 2583 y FB(A)m(CTION)44
+b FD(:)c(Matrix)31 b(in)m(v)m(ersion)e(and)h(solution)f(of)h(sim)m
+(ultaneous)f(equations)h(\(single)f(precision\).)0 2770
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_SMAT)g(\(N,)h(A,)g(Y,)g(D,)g
+(JF,)g(IW\))0 3122 y FB(GIVEN)e FD(:)277 3268 y Fq(N)668
+b FB(I)605 b FD(n)m(um)m(b)s(er)29 b(of)i(unkno)m(wns)277
+3381 y Fq(A)668 b FB(R\(N,N\))292 b FD(matrix)277 3494
+y Fq(Y)668 b FB(R\(N\))403 b FD(v)m(ector)0 3850 y FB(RETURNED)46
+b FD(:)277 3996 y Fq(A)668 b FB(R\(N,N\))292 b FD(matrix)30
+b(in)m(v)m(erse)277 4109 y Fq(Y)668 b FB(R\(N\))403 b
+FD(solution)277 4222 y Fq(D)667 b FB(R)567 b FD(determinan)m(t)277
+4335 y Fq(JF)629 b FB(I)605 b FD(singularit)m(y)28 b(\015ag:)41
+b(0=OK)277 4448 y Fq(IW)610 b FB(I\(N\))441 b FD(w)m(orkspace)0
+4804 y FB(NOTES)44 b FD(:)311 4993 y(1.)i(F)-8 b(or)31
+b(the)g(set)g(of)f Fl(n)g FD(sim)m(ultaneous)f(linear)g(equations)h(in)
+f Fl(n)h FD(unkno)m(wns:)597 5140 y FB(A)p Fo(\001)p
+FB(y)h FD(=)f FB(x)427 5287 y FD(where:)506 5433 y Fo(\017)46
+b FB(A)31 b FD(is)e(a)i(non-singular)d Fl(n)20 b Fo(\002)f
+Fl(n)30 b FD(matrix,)506 5563 y Fo(\017)46 b FB(y)31
+b FD(is)e(the)i(v)m(ector)h(of)e Fl(n)g FD(unkno)m(wns,)f(and)506
+5693 y Fo(\017)46 b FB(x)31 b FD(is)e(the)i(kno)m(wn)f(v)m(ector,)p
+eop
+%%Page: 154 156
+154 155 bop 0 52 a FD(154)427 351 y(sla)p Ft(_)p FD(SMA)-8
+b(T)30 b(computes:)506 487 y Fo(\017)46 b FD(the)31 b(in)m(v)m(erse)f
+(of)h(matrix)e FB(A)p FD(,)506 611 y Fo(\017)46 b FD(the)31
+b(determinan)m(t)f(of)g(matrix)g FB(A)p FD(,)h(and)506
+736 y Fo(\017)46 b FD(the)31 b(v)m(ector)h(of)e Fl(n)g
+FD(unkno)m(wns)f FB(y)p FD(.)427 871 y(Argumen)m(t)h(N)f(is)g(the)h
+(order)f Fl(n)p FD(,)g(A)h(\(giv)m(en\))g(is)e(the)i(matrix)f
+FB(A)p FD(,)g(Y)h(\(giv)m(en\))g(is)f(the)g(v)m(ector)i
+FB(x)f FD(and)427 984 y(Y)g(\(returned\))g(is)f(the)i(v)m(ector)g
+FB(y)p FD(.)41 b(The)30 b(argumen)m(t)g(A)g(\(returned\))g(is)f(the)h
+(in)m(v)m(erse)g(matrix)g FB(A)3660 951 y Fp(\000)p Fu(1)3754
+984 y FD(,)427 1097 y(and)g(D)h(is)e Fq(det)9 b FD(\()p
+FB(A)p FD(\).)311 1233 y(2.)46 b(JF)40 b(is)e(the)i(singularit)m(y)d
+(\015ag.)68 b(If)39 b(the)g(matrix)g(is)f(non-singular,)i(JF=0)f(is)g
+(returned.)66 b(If)39 b(the)427 1346 y(matrix)32 b(is)f(singular,)h
+(JF=)p Fo(\000)p FD(1)g(and)g(D=0.0)h(are)g(returned.)46
+b(In)31 b(the)i(latter)g(case,)h(the)f(con)m(ten)m(ts)427
+1459 y(of)e(arra)m(y)g(A)f(on)g(return)g(are)g(unde\014ned.)311
+1594 y(3.)46 b(The)38 b(algorithm)g(is)f(Gaussian)h(elimination)e(with)
+h(partial)h(piv)m(oting.)64 b(This)37 b(metho)s(d)h(is)f(v)m(ery)427
+1707 y(fast;)49 b(some)43 b(m)m(uc)m(h)f(slo)m(w)m(er)h(algorithms)e
+(can)i(giv)m(e)f(b)s(etter)h(accuracy)-8 b(,)47 b(but)42
+b(only)f(b)m(y)h(a)h(small)427 1820 y(factor.)311 1956
+y(4.)j(This)29 b(routine)g(replaces)h(the)h(obsolete)g(sla)p
+Ft(_)p FD(SMA)-8 b(TRX.)p 0 2057 3780 8 v 0 2170 a Fx(SLA)p
+Fn(_)p Fx(SUBET)691 b Fm(Remo)m(v)m(e)36 b(E-terms)690
+b Fx(SLA)p Fn(_)p Fx(SUBET)0 2521 y FB(A)m(CTION)44 b
+FD(:)36 b(Remo)m(v)m(e)25 b(the)d(E-terms)g(\(elliptic)f(comp)s(onen)m
+(t)h(of)h(ann)m(ual)e(ab)s(erration\))h(from)f(a)i(pre)f(IA)m(U)h(1976)
+227 2634 y(catalogue)32 b([)15 b Fl(\013;)g(\016)21 b
+FD(])30 b(to)h(giv)m(e)g(a)g(mean)f(place.)0 2821 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_SUBET)g(\(RC,)g(DC,)h(EQ,)g(RM,)g(DM\))0
+3129 y FB(GIVEN)e FD(:)277 3275 y Fq(R)n(C,DC)445 b FB(D)565
+b FD([)15 b Fl(\013;)g(\016)20 b FD(])31 b(with)e(E-terms)i(included)c
+(\(radians\))277 3388 y Fq(EQ)604 b FB(D)565 b FD(Besselian)30
+b(ep)s(o)s(c)m(h)g(of)g(mean)h(equator)g(and)f(equino)m(x)0
+3669 y FB(RETURNED)46 b FD(:)277 3841 y Fq(RM,DM)409
+b FB(D)565 b FD([)15 b Fl(\013;)g(\016)20 b FD(])31 b(without)e
+(E-terms)i(\(radians\))0 4130 y FB(NOTE)44 b FD(:)39
+b(Most)28 b(star)g(p)s(ositions)d(from)i(pre-1984)h(optical)f
+(catalogues)i(\(or)e(obtained)g(b)m(y)g(astrometry)h(with)227
+4243 y(resp)s(ect)k(to)g(suc)m(h)f(stars\))g(ha)m(v)m(e)i(the)e
+(E-terms)h(built-in.)40 b(This)30 b(routine)g(con)m(v)m(erts)j(suc)m(h)
+e(a)g(p)s(osition)f(to)227 4356 y(a)h(formal)f(mean)g(place)g(\(allo)m
+(wing,)g(for)g(example,)h(comparison)e(with)g(a)i(pulsar)d(timing)h(p)s
+(osition\).)0 4645 y FB(REFERENCE)44 b FD(:)56 b Fq(Explanatory)42
+b(Supplement)f(to)f(the)g(Astr)-5 b(onomic)g(al)43 b(Ephemeris)p
+FD(,)e(section)d(2D,)h(page)227 4758 y(48.)p 0 4842 V
+0 4955 a Fx(SLA)p Fn(_)p Fx(SUPGAL)365 b Fm(Sup)s(ergalactic)36
+b(to)i(Galactic)365 b Fx(SLA)p Fn(_)p Fx(SUPGAL)0 5305
+y FB(A)m(CTION)44 b FD(:)39 b(T)-8 b(ransformation)26
+b(from)h(de)g(V)-8 b(aucouleurs)27 b(sup)s(ergalactic)f(co)s(ordinates)
+h(to)h(IA)m(U)g(1958)h(galac-)227 5418 y(tic)i(co)s(ordinates.)0
+5606 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_SUPGAL)f(\(DSL,)i(DSB,)f
+(DL,)h(DB\))p eop
+%%Page: 155 157
+155 156 bop 0 52 a Fw(SUN/67.70)3206 b FD(155)0 351 y
+FB(GIVEN)45 b FD(:)277 523 y Fq(DSL,DSB)347 b FB(D)565
+b FD(sup)s(ergalactic)30 b(longitude)f(and)h(latitude)f(\(radians\))0
+997 y FB(RETURNED)46 b FD(:)277 1169 y Fq(DL,DB)449 b
+FB(D)565 b FD(galactic)29 b(longitude)e(and)h(latitude)f([)15
+b Fl(l)2966 1136 y Ff(I)-7 b(I)3030 1169 y Fl(;)15 b(b)3109
+1136 y Ff(I)-7 b(I)3189 1169 y FD(])28 b(\(radians\))0
+1643 y FB(REFERENCES)44 b FD(:)311 1875 y(1.)i(de)41
+b(V)-8 b(aucouleurs,)42 b(de)f(V)-8 b(aucouleurs,)43
+b(&)d(Corwin,)h Fq(Se)-5 b(c)g(ond)43 b(R)-5 b(efer)g(enc)g(e)43
+b(Catalo)-5 b(gue)44 b(of)e(Bright)427 1988 y(Galaxies)p
+FD(,)32 b(U.T)-8 b(exas,)32 b(p8.)311 2157 y(2.)46 b(Systems)31
+b(&)h(Applied)d(Sciences)i(Corp.,)g(do)s(cumen)m(tation)h(for)f(the)h
+(mac)m(hine-readable)f(v)m(ersion)427 2270 y(of)g(the)f(ab)s(o)m(v)m(e)
+i(catalogue,)g(Con)m(tract)g(NAS)e(5-26490.)227 2502
+y(\(These)k(t)m(w)m(o)h(references)g(giv)m(e)f(di\013eren)m(t)f(v)-5
+b(alues)33 b(for)h(the)g(galactic)h(longitude)d(of)i(the)g(sup)s
+(ergalactic)227 2615 y(origin.)39 b(Both)31 b(are)g(wrong;)f(the)h
+(correct)h(v)-5 b(alue)29 b(is)h Fl(l)2012 2582 y Ff(I)-7
+b(I)2101 2615 y FD(=)25 b(137)p Fl(:)p FD(37.\))p 0 2798
+3780 8 v 0 2911 a Fx(SLA)p Fn(_)p Fx(SVD)518 b Fm(Singular)37
+b(V)-10 b(alue)38 b(Decomp)s(osition)517 b Fx(SLA)p Fn(_)p
+Fx(SVD)0 3261 y FB(A)m(CTION)44 b FD(:)60 b(Singular)37
+b(v)-5 b(alue)40 b(decomp)s(osition.)69 b(This)38 b(routine)h
+(expresses)h(a)g(giv)m(en)g(matrix)g FB(A)g FD(as)g(the)227
+3374 y(pro)s(duct)29 b(of)i(three)g(matrices)f FB(U)p
+FD(,)h FB(W)p FD(,)g FB(V)1648 3341 y Ff(T)1703 3374
+y FD(:)667 3599 y FB(A)f FD(=)g FB(U)h Fo(\001)f FB(W)h
+Fo(\001)f FB(V)1316 3566 y Ff(T)227 3824 y FD(where:)667
+4049 y FB(A)224 b FD(is)29 b(an)m(y)i Fl(m)f FD(\(ro)m(ws\))h
+Fo(\002)p Fl(n)f FD(\(columns\))f(matrix,)h(where)g Fl(m)25
+b Fo(\025)g Fl(n)667 4162 y FB(U)223 b FD(is)29 b(an)h
+Fl(m)20 b Fo(\002)g Fl(n)30 b FD(column-orthogonal)g(matrix)667
+4275 y FB(W)195 b FD(is)29 b(an)h Fl(n)20 b Fo(\002)g
+Fl(n)30 b FD(diagonal)g(matrix)f(with)g Fl(w)2369 4289
+y Ff(ii)2447 4275 y Fo(\025)c FD(0)667 4388 y FB(V)746
+4355 y Ff(T)970 4388 y FD(is)k(the)i(transp)s(ose)f(of)g(an)g
+Fl(n)20 b Fo(\002)g Fl(n)30 b FD(orthogonal)h(matrix)0
+4613 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_SVD)g(\(M,)h(N,)g(MP,)g
+(NP,)g(A,)g(W,)g(V,)h(WORK,)e(JSTAT\))0 5030 y FB(GIVEN)f
+FD(:)277 5176 y Fq(M,N)558 b FB(I)605 b Fl(m)p FD(,)32
+b Fl(n)p FD(,)h(the)f(n)m(um)m(b)s(ers)e(of)i(ro)m(ws)g(and)g(columns)e
+(in)h(matrix)1658 5289 y FB(A)277 5402 y Fq(MP,NP)434
+b FB(I)605 b FD(ph)m(ysical)29 b(dimensions)e(of)j(arra)m(y)g(con)m
+(taining)g(matrix)f FB(A)277 5515 y Fq(A)668 b FB(D\(MP)-9
+b(,NP\))140 b FD(arra)m(y)31 b(con)m(taining)f Fl(m)20
+b Fo(\002)g Fl(n)30 b FD(matrix)f FB(A)p eop
+%%Page: 156 158
+156 157 bop 0 52 a FD(156)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(A)668 b FB(D\(MP)-9 b(,NP\))140 b FD(arra)m(y)32
+b(con)m(taining)f Fl(m)21 b Fo(\002)g Fl(n)31 b FD(column-orthogonal)g
+(matrix)1658 610 y FB(U)277 723 y Fq(W)645 b FB(D\(N\))401
+b Fl(n)15 b Fo(\002)g Fl(n)28 b FD(diagonal)f(matrix)h
+FB(W)g FD(\(diagonal)f(elemen)m(ts)i(only\))277 949 y
+Fq(V)668 b FB(D\(NP)-9 b(,NP\))157 b FD(arra)m(y)35 b(con)m(taining)e
+Fl(n)22 b Fo(\002)g Fl(n)34 b FD(orthogonal)g(matrix)f
+FB(V)h FD(\()p Fq(n.b.)1658 1062 y FD(not)d FB(V)1899
+1029 y Ff(T)1954 1062 y FD(\))277 1175 y Fq(WORK)439
+b FB(D\(N\))401 b FD(w)m(orkspace)277 1288 y Fq(JST)-7
+b(A)g(T)453 b FB(I)605 b FD(0)24 b(=)g(OK,)f Fo(\000)p
+FD(1)h(=)g(arra)m(y)g(A)g(wrong)f(shap)s(e,)i Fl(>)p
+FD(0)f(=)g(index)e(of)1658 1401 y(W)29 b(for)e(whic)m(h)g(con)m(v)m
+(ergence)j(failed)d(\(see)i(note)f(3,)i(b)s(elo)m(w\))0
+1937 y FB(NOTES)44 b FD(:)311 2152 y(1.)i(M)27 b(and)g(N)g(are)g(the)g
+Fq(lo)-5 b(gic)g(al)38 b FD(dimensions)24 b(of)j(the)g(matrices)g(and)f
+(v)m(ectors)j(concerned,)f(whic)m(h)d(can)427 2265 y(b)s(e)30
+b(lo)s(cated)h(in)e(arra)m(ys)h(of)h(larger)f Fq(physic)-5
+b(al)42 b FD(dimensions,)28 b(giv)m(en)i(b)m(y)g(MP)h(and)f(NP)-8
+b(.)311 2425 y(2.)46 b(V)31 b(con)m(tains)f(matrix)g(V,)h(not)f(the)h
+(transp)s(ose)f(of)g(matrix)g(V.)311 2585 y(3.)46 b(If)36
+b(the)h(status)g(JST)-8 b(A)g(T)37 b(is)e(greater)j(than)f(zero,)i
+(this)c(need)i(not)g(necessarily)e(b)s(e)h(treated)i(as)f(a)427
+2698 y(failure.)h(It)28 b(means)g(that,)h(due)e(to)h(c)m(hance)h(prop)s
+(erties)d(of)i(the)f(matrix)g(A,)h(the)g(QR)f(transforma-)427
+2811 y(tion)i(phase)g(of)h(the)f(routine)g(did)e(not)j(fully)d(con)m(v)
+m(erge)32 b(in)c(a)h(prede\014ned)f(n)m(um)m(b)s(er)g(of)i(iterations,)
+427 2924 y(something)39 b(that)g(v)m(ery)h(seldom)e(o)s(ccurs.)66
+b(When)39 b(this)e(condition)h(do)s(es)h(arise,)h(it)f(is)f(p)s
+(ossible)427 3037 y(that)29 b(the)f(elemen)m(ts)g(of)g(the)g(diagonal)f
+(matrix)h(W)g(ha)m(v)m(e)h(not)f(b)s(een)f(correctly)i(found.)38
+b(Ho)m(w)m(ev)m(er,)427 3150 y(in)e(practice)h(the)f(results)g(are)h
+(lik)m(ely)e(to)i(b)s(e)f(trust)m(w)m(orth)m(y)-8 b(.)61
+b(Applications)35 b(should)f(rep)s(ort)i(the)427 3263
+y(condition)29 b(as)i(a)g(w)m(arning,)e(but)h(then)g(pro)s(ceed)g
+(normally)-8 b(.)0 3695 y FB(REFERENCES)44 b FD(:)54
+b(The)37 b(algorithm)f(is)g(an)h(adaptation)g(of)g(the)h(routine)e(SVD)
+h(in)f(the)h Fq(EISP)-7 b(A)n(CK)51 b FD(li-)227 3807
+y(brary)26 b(\(Garb)s(o)m(w)g Fq(et)j(al.)d FD(1977,)k
+Fq(EISP)-7 b(A)n(CK)27 b(Guide)i(Extension)p FD(,)f(Springer)c(V)-8
+b(erlag\),)28 b(whic)m(h)d(is)g(a)i(F)m(OR-)227 3920
+y(TRAN)j(66)g(implemen)m(tation)e(of)h(the)h(Algol)f(routine)f(SVD)i
+(of)f(Wilkinson)e(&)i(Reinsc)m(h)g(1971)i(\()p Fq(Hand-)227
+4033 y(b)-5 b(o)g(ok)29 b(for)e(A)n(utomatic)h(Computation)p
+FD(,)g(v)m(ol)d(2,)h(ed)e(Bauer)h Fq(et)i(al.)p FD(,)g(Springer)22
+b(V)-8 b(erlag\).)40 b(These)24 b(references)227 4146
+y(giv)m(e)37 b(full)e(details)g(of)i(the)g(algorithm)f(used)g(here.)59
+b(A)37 b(go)s(o)s(d)f(accoun)m(t)i(of)f(the)g(use)f(of)h(SVD)g(in)e
+(least)227 4259 y(squares)d(problems)f(is)h(giv)m(en)g(in)f
+Fq(Numeric)-5 b(al)36 b(R)-5 b(e)g(cip)g(es)41 b FD(\(Press)32
+b Fq(et)j(al.)e FD(1987,)i(Cam)m(bridge)c(Univ)m(ersit)m(y)227
+4372 y(Press\),)g(whic)m(h)e(includes)f(another)i(v)-5
+b(arian)m(t)31 b(of)f(the)h(EISP)-8 b(A)m(CK)30 b(co)s(de.)p
+0 4538 3780 8 v 0 4651 a Fx(SLA)p Fn(_)p Fx(SVDCO)l(V)240
+b Fm(Co)m(v)-7 b(ariance)37 b(Matrix)g(from)f(SVD)243
+b Fx(SLA)p Fn(_)p Fx(SVDCO)l(V)0 5001 y FB(A)m(CTION)44
+b FD(:)c(F)-8 b(rom)29 b(the)g FB(W)g FD(and)f FB(V)g
+FD(matrices)h(from)f(the)h(SVD)g(factorization)h(of)f(a)g(matrix)f
+(\(as)h(obtained)227 5114 y(from)h(the)h(sla)p Ft(_)p
+FD(SVD)e(routine\),)h(obtain)g(the)h(co)m(v)-5 b(ariance)31
+b(matrix.)0 5301 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_SVDCOV)f(\(N,)i(NP,)g(NC,)g(W,)g(V,)g(WORK,)g(CVM\))0
+5693 y FB(GIVEN)e FD(:)p eop
+%%Page: 157 159
+157 158 bop 0 52 a Fw(SUN/67.70)3206 b FD(157)277 339
+y Fq(N)668 b FB(I)605 b Fl(n)p FD(,)28 b(the)h(n)m(um)m(b)s(er)d(of)i
+(ro)m(ws)g(and)g(columns)e(in)h(matrices)h FB(W)1658
+452 y FD(and)i FB(V)277 565 y Fq(NP)606 b FB(I)f FD(\014rst)27
+b(dimension)f(of)i(arra)m(y)h(con)m(taining)e Fl(n)15
+b Fo(\002)g Fl(n)28 b FD(matrix)f FB(V)277 791 y Fq(NC)603
+b FB(I)i FD(\014rst)30 b(dimension)e(of)i(arra)m(y)h(CVM)277
+904 y Fq(W)645 b FB(D\(N\))401 b Fl(n)15 b Fo(\002)g
+Fl(n)28 b FD(diagonal)f(matrix)h FB(W)g FD(\(diagonal)f(elemen)m(ts)i
+(only\))277 1129 y Fq(V)668 b FB(D\(NP)-9 b(,NP\))157
+b FD(arra)m(y)31 b(con)m(taining)f Fl(n)20 b Fo(\002)g
+Fl(n)30 b FD(orthogonal)g(matrix)g FB(V)0 1528 y(RETURNED)46
+b FD(:)277 1675 y Fq(WORK)439 b FB(D\(N\))401 b FD(w)m(orkspace)277
+1787 y Fq(CVM)521 b FB(D\(NC,NC\))138 b FD(arra)m(y)31
+b(to)g(receiv)m(e)g(co)m(v)-5 b(ariance)32 b(matrix)0
+2187 y FB(REFERENCE)44 b FD(:)d Fq(Numeric)-5 b(al)33
+b(R)-5 b(e)g(cip)g(es)p FD(,)32 b(section)e(14.3.)p 0
+2338 3780 8 v 0 2451 a Fx(SLA)p Fn(_)p Fx(SVDSOL)357
+b Fm(Solution)37 b(V)-10 b(ector)38 b(from)e(SVD)360
+b Fx(SLA)p Fn(_)p Fx(SVDSOL)0 2802 y FB(A)m(CTION)44
+b FD(:)60 b(F)-8 b(rom)41 b(a)g(giv)m(en)f(v)m(ector)i(and)d(the)i(SVD)
+f(of)g(a)h(matrix)f(\(as)g(obtained)g(from)g(the)g(sla)p
+Ft(_)p FD(SVD)227 2914 y(routine\),)30 b(obtain)g(the)h(solution)e(v)m
+(ector.)42 b(This)29 b(routine)g(solv)m(es)h(the)h(equation:)667
+3139 y FB(A)f Fo(\001)h FB(x)f FD(=)g FB(b)227 3364 y
+FD(where:)667 3589 y FB(A)224 b FD(is)29 b(a)i(giv)m(en)f
+Fl(m)g FD(\(ro)m(ws\))h Fo(\002)p Fl(n)f FD(\(columns\))g(matrix,)g
+(where)g Fl(m)25 b Fo(\025)g Fl(n)667 3702 y FB(x)248
+b FD(is)29 b(the)i Fl(n)p FD(-v)m(ector)h(w)m(e)e(wish)f(to)i(\014nd,)e
+(and)667 3815 y FB(b)245 b FD(is)29 b(a)i(giv)m(en)f
+Fl(m)p FD(-v)m(ector)227 4040 y(b)m(y)h(means)f(of)g(the)h
+Fq(Singular)i(V)-7 b(alue)33 b(De)-5 b(c)g(omp)g(osition)40
+b FD(metho)s(d)29 b(\(SVD\).)0 4228 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_SVDSOL)f(\(M,)i(N,)g(MP,)g(NP,)g(B,)g(U,)h(W,)f(V,)g
+(WORK,)f(X\))0 4605 y FB(GIVEN)f FD(:)277 4751 y Fq(M,N)558
+b FB(I)605 b Fl(m)p FD(,)32 b Fl(n)p FD(,)h(the)f(n)m(um)m(b)s(ers)e
+(of)i(ro)m(ws)g(and)g(columns)e(in)h(matrix)1658 4864
+y FB(A)277 4977 y Fq(MP,NP)434 b FB(I)605 b FD(ph)m(ysical)29
+b(dimensions)e(of)j(arra)m(y)g(con)m(taining)g(matrix)f
+FB(A)277 5090 y Fq(B)672 b FB(D\(M\))384 b FD(kno)m(wn)30
+b(v)m(ector)i FB(b)277 5203 y Fq(U)668 b FB(D\(MP)-9
+b(,NP\))140 b FD(arra)m(y)31 b(con)m(taining)f Fl(m)20
+b Fo(\002)g Fl(n)30 b FD(matrix)f FB(U)277 5315 y Fq(W)645
+b FB(D\(N\))401 b Fl(n)15 b Fo(\002)g Fl(n)28 b FD(diagonal)f(matrix)h
+FB(W)g FD(\(diagonal)f(elemen)m(ts)i(only\))277 5541
+y Fq(V)668 b FB(D\(NP)-9 b(,NP\))157 b FD(arra)m(y)31
+b(con)m(taining)f Fl(n)20 b Fo(\002)g Fl(n)30 b FD(orthogonal)g(matrix)
+g FB(V)p eop
+%%Page: 158 160
+158 159 bop 0 52 a FD(158)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(WORK)439 b FB(D\(N\))401 b FD(w)m(orkspace)277
+610 y Fq(X)668 b FB(D\(N\))401 b FD(unkno)m(wn)29 b(v)m(ector)j
+FB(x)0 984 y(NOTES)44 b FD(:)311 1179 y(1.)i(In)28 b(the)h(Singular)d
+(V)-8 b(alue)29 b(Decomp)s(osition)g(metho)s(d)f(\(SVD\),)h(the)g
+(matrix)f FB(A)h FD(is)f(\014rst)g(factorized)427 1292
+y(\(for)j(example)f(b)m(y)g(the)h(routine)e(sla)p Ft(_)p
+FD(SVD\))h(in)m(to)g(the)h(follo)m(wing)e(comp)s(onen)m(ts:)867
+1465 y FB(A)h FD(=)g FB(U)h Fo(\001)f FB(W)h Fo(\001)f
+FB(V)1516 1432 y Ff(T)427 1638 y FD(where:)867 1810 y
+FB(A)224 b FD(is)29 b(an)m(y)i Fl(m)f FD(\(ro)m(ws\))h
+Fo(\002)p Fl(n)f FD(\(columns\))f(matrix,)h(where)g Fl(m)25
+b(>)g(n)867 1923 y FB(U)223 b FD(is)29 b(an)h Fl(m)20
+b Fo(\002)g Fl(n)30 b FD(column-orthogonal)g(matrix)867
+2036 y FB(W)195 b FD(is)29 b(an)h Fl(n)20 b Fo(\002)g
+Fl(n)30 b FD(diagonal)g(matrix)f(with)g Fl(w)2569 2050
+y Ff(ii)2647 2036 y Fo(\025)c FD(0)867 2149 y FB(V)946
+2116 y Ff(T)1170 2149 y FD(is)k(the)i(transp)s(ose)f(of)g(an)g
+Fl(n)20 b Fo(\002)g Fl(n)30 b FD(orthogonal)h(matrix)427
+2322 y(Note)f(that)g Fl(m)f FD(and)f Fl(n)g FD(are)h(the)h
+Fq(lo)-5 b(gic)g(al)39 b FD(dimensions)26 b(of)k(the)f(matrices)f(and)h
+(v)m(ectors)h(concerned,)427 2435 y(whic)m(h)22 b(can)i(b)s(e)e(lo)s
+(cated)i(in)e(arra)m(ys)h(of)h(larger)e Fq(physic)-5
+b(al)35 b FD(dimensions)20 b(MP)k(and)e(NP)-8 b(.)24
+b(The)f(solution)427 2548 y(is)30 b(then)g(found)f(from)h(the)g
+(expression:)867 2720 y FB(x)g FD(=)g FB(V)h Fo(\001)f
+FD([)p Fl(diag)s FD(\(1)p Fl(=)p FB(W)1648 2734 y Ff(j)1687
+2720 y FD(\)])21 b Fo(\001)g FD(\()p FB(U)1929 2688 y
+Ff(T)1985 2720 y Fo(\001)p FB(b)p FD(\))311 2893 y(2.)46
+b(If)37 b(matrix)f FB(A)h FD(is)f(square,)j(and)d(if)g(the)h(diagonal)f
+(matrix)h FB(W)g FD(is)f(not)h(altered,)i(the)e(metho)s(d)f(is)427
+3006 y(equiv)-5 b(alen)m(t)30 b(to)h(con)m(v)m(en)m(tional)g(solution)e
+(of)i(sim)m(ultaneous)e(equations.)311 3156 y(3.)46 b(If)30
+b Fl(m)25 b(>)g(n)p FD(,)30 b(the)h(result)e(is)h(a)g(least-squares)h
+(\014t.)311 3306 y(4.)46 b(If)32 b(the)g(solution)f(is)g(p)s(o)s(orly)f
+(determined,)h(this)g(sho)m(ws)h(up)f(in)g(the)h(SVD)g(factorization)h
+(as)f(v)m(ery)427 3419 y(small)23 b(or)h(zero)h FB(W)1058
+3433 y Ff(j)1119 3419 y FD(v)-5 b(alues.)38 b(Where)24
+b(a)h FB(W)1885 3433 y Ff(j)1946 3419 y FD(v)-5 b(alue)23
+b(is)g(small)g(but)h(non-zero)g(it)g(can)g(b)s(e)g(set)h(to)g(zero)427
+3532 y(to)32 b(a)m(v)m(oid)g(ill)d(e\013ects.)44 b(The)30
+b(presen)m(t)i(routine)e(detects)i(suc)m(h)f(zero)h FB(W)2835
+3546 y Ff(j)2902 3532 y FD(v)-5 b(alues)31 b(and)f(pro)s(duces)g(a)427
+3645 y(sensible)h(solution,)g(with)g(highly)g(correlated)h(terms)h(k)m
+(ept)g(under)e(con)m(trol)h(rather)h(than)f(b)s(eing)427
+3758 y(allo)m(w)m(ed)f(to)g(elop)s(e)e(to)j(in\014nit)m(y)-8
+b(,)28 b(and)i(with)f(meaningful)f(v)-5 b(alues)30 b(for)g(the)h(other)
+f(terms.)0 4140 y FB(REFERENCE)44 b FD(:)d Fq(Numeric)-5
+b(al)33 b(R)-5 b(e)g(cip)g(es)p FD(,)32 b(section)e(2.9.)p
+0 4280 3780 8 v 0 4393 a Fx(SLA)p Fn(_)p Fx(TP2S)545
+b Fm(T)-10 b(angen)m(t)37 b(Plane)h(to)g(Spherical)546
+b Fx(SLA)p Fn(_)p Fx(TP2S)0 4744 y FB(A)m(CTION)44 b
+FD(:)c(T)-8 b(ransform)30 b(tangen)m(t)i(plane)d(co)s(ordinates)h(in)m
+(to)h(spherical)d(co)s(ordinates)i(\(single)g(precision\))0
+4931 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_TP2S)g(\(XI,)h(ETA,)f
+(RAZ,)h(DECZ,)f(RA,)h(DEC\))0 5293 y FB(GIVEN)e FD(:)277
+5439 y Fq(XI,ET)-7 b(A)417 b FB(R)567 b FD(tangen)m(t)32
+b(plane)d(rectangular)i(co)s(ordinates)f(\(radians\))277
+5552 y Fq(RAZ,DECZ)266 b FB(R)567 b FD(spherical)29 b(co)s(ordinates)h
+(of)g(tangen)m(t)i(p)s(oin)m(t)e(\(radians\))p eop
+%%Page: 159 161
+159 160 bop 0 52 a Fw(SUN/67.70)3206 b FD(159)0 351 y
+FB(RETURNED)46 b FD(:)277 523 y Fq(RA,DEC)378 b FB(R)567
+b FD(spherical)29 b(co)s(ordinates)h(\(radians\))0 848
+y FB(NOTES)44 b FD(:)311 1030 y(1.)i(The)24 b(pro)5 b(jection)25
+b(is)f(called)f(the)i Fq(gnomonic)31 b FD(pro)5 b(jection;)27
+b(the)d(Cartesian)h(co)s(ordinates)f([)15 b Fl(\030)t(;)g(\021)k
+FD(])25 b(are)427 1143 y(called)30 b Fq(standar)-5 b(d)37
+b(c)-5 b(o)g(or)g(dinates.)45 b FD(The)30 b(latter)i(are)f(in)f(units)f
+(of)i(the)h(distance)e(from)h(the)g(tangen)m(t)427 1256
+y(plane)f(to)h(the)f(pro)5 b(jection)30 b(p)s(oin)m(t,)g
+Fq(i.e.)g FD(radians)f(near)h(the)h(origin.)311 1397
+y(2.)46 b(When)26 b(w)m(orking)g(in)e([)15 b Fl(x;)g(y)s(;)g(z)21
+b FD(])26 b(rather)g(than)g(spherical)e(co)s(ordinates,)j(the)f(equiv)
+-5 b(alen)m(t)26 b(Cartesian)427 1510 y(routine)k(sla)p
+Ft(_)p FD(TP2V)f(is)h(a)m(v)-5 b(ailable.)p 0 1617 3780
+8 v 0 1730 a Fx(SLA)p Fn(_)p Fx(TP2V)304 b Fm(T)-10 b(angen)m(t)37
+b(Plane)h(to)g(Direction)f(Cosines)305 b Fx(SLA)p Fn(_)p
+Fx(TP2V)0 2081 y FB(A)m(CTION)44 b FD(:)63 b(Giv)m(en)42
+b(the)g(tangen)m(t-plane)h(co)s(ordinates)e(of)h(a)g(star)g(and)f(the)h
+(direction)f(cosines)g(of)h(the)227 2194 y(tangen)m(t)32
+b(p)s(oin)m(t,)e(determine)f(the)i(direction)e(cosines)h(of)g(the)h
+(star)g(\(single)e(precision\).)0 2381 y FB(CALL)45 b
+FD(:)77 b Ft(CALL)46 b(sla_TP2V)g(\(XI,)h(ETA,)f(V0,)h(V\))0
+2710 y FB(GIVEN)e FD(:)277 2856 y Fq(XI,ET)-7 b(A)417
+b FB(R)567 b FD(tangen)m(t)32 b(plane)d(co)s(ordinates)h(of)h(star)g
+(\(radians\))277 2969 y Fq(V0)622 b FB(R\(3\))433 b FD(direction)29
+b(cosines)h(of)h(tangen)m(t)h(p)s(oin)m(t)0 3285 y FB(RETURNED)46
+b FD(:)277 3457 y Fq(V)668 b FB(R\(3\))433 b FD(direction)29
+b(cosines)h(of)h(star)0 3782 y FB(NOTES)44 b FD(:)311
+3964 y(1.)i(If)30 b(v)m(ector)i(V0)f(is)f(not)g(of)h(unit)e(length,)h
+(the)g(returned)f(v)m(ector)j(V)f(will)d(b)s(e)h(wrong.)311
+4105 y(2.)46 b(If)35 b(v)m(ector)i(V0)f(p)s(oin)m(ts)e(at)i(a)f(p)s
+(ole,)h(the)g(returned)e(v)m(ector)j(V)e(will)e(b)s(e)h(based)h(on)g
+(the)h(arbitrary)427 4218 y(assumption)29 b(that)i Fl(\013)26
+b FD(=)f(0)31 b(at)g(the)f(tangen)m(t)i(p)s(oin)m(t.)311
+4358 y(3.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+4471 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 4584 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 4725 y(4.)46 b(This)29 b(routine)g(is)h(the)g(Cartesian)g
+(equiv)-5 b(alen)m(t)30 b(of)g(the)h(routine)e(sla)p
+Ft(_)p FD(TP2S.)p 0 4842 V 0 4955 a Fx(SLA)p Fn(_)p Fx(TPS2C)368
+b Fm(Plate)37 b(cen)m(tre)h(from)f Fg(\030)6 b(;)20 b(\021)42
+b Fm(and)d Fg(\013)q(;)20 b(\016)373 b Fx(SLA)p Fn(_)p
+Fx(TPS2C)0 5305 y FB(A)m(CTION)44 b FD(:)39 b(F)-8 b(rom)27
+b(the)h(tangen)m(t)g(plane)e(co)s(ordinates)h(of)g(a)g(star)h(of)f(kno)
+m(wn)f([)15 b Fl(\013;)g(\016)21 b FD(],)28 b(determine)e(the)h([)15
+b Fl(\013;)g(\016)20 b FD(])227 5418 y(of)31 b(the)f(tangen)m(t)i(p)s
+(oin)m(t)e(\(single)f(precision\))0 5606 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_TPS2C)g(\(XI,)g(ETA,)h(RA,)g(DEC,)f(RAZ1,)
+h(DECZ1,)f(RAZ2,)g(DECZ2,)g(N\))p eop
+%%Page: 160 162
+160 161 bop 0 52 a FD(160)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(XI,ET)-7 b(A)417 b FB(R)567 b FD(tangen)m(t)32
+b(plane)d(rectangular)i(co)s(ordinates)f(\(radians\))277
+610 y Fq(RA,DEC)378 b FB(R)567 b FD(spherical)29 b(co)s(ordinates)h
+(\(radians\))0 903 y FB(RETURNED)46 b FD(:)277 1049 y
+Fq(RAZ1,DECZ1)174 b FB(R)567 b FD(spherical)29 b(co)s(ordinates)h(of)g
+(tangen)m(t)i(p)s(oin)m(t,)e(solution)f(1)277 1162 y
+Fq(RAZ2,DECZ2)174 b FB(R)567 b FD(spherical)29 b(co)s(ordinates)h(of)g
+(tangen)m(t)i(p)s(oin)m(t,)e(solution)f(2)277 1275 y
+Fq(N)668 b FB(I)605 b FD(n)m(um)m(b)s(er)29 b(of)i(solutions:)1779
+1387 y(0)g(=)f(no)g(solutions)f(returned)g(\(note)j(2\))1779
+1500 y(1)f(=)f(only)g(the)g(\014rst)g(solution)f(is)g(useful)g(\(note)i
+(3\))1779 1613 y(2)g(=)f(there)h(are)f(t)m(w)m(o)i(useful)d(solutions)g
+(\(note)i(3\))0 1906 y FB(NOTES)44 b FD(:)311 2085 y(1.)i(The)30
+b(RAZ1)h(and)e(RAZ2)i(v)-5 b(alues)29 b(returned)h(are)g(in)f(the)i
+(range)g(0)5 b Fo(\000)g FD(2)p Fl(\031)s FD(.)311 2222
+y(2.)46 b(Cases)39 b(where)f(there)h(is)f(no)g(solution)f(can)i(only)f
+(arise)g(near)g(the)h(p)s(oles.)64 b(F)-8 b(or)40 b(example,)g(it)e(is)
+427 2335 y(clearly)27 b(imp)s(ossible)d(for)j(a)h(star)f(at)h(the)g(p)s
+(ole)e(itself)g(to)j(ha)m(v)m(e)f(a)g(non-zero)g Fl(\030)j
+FD(v)-5 b(alue,)28 b(and)e(hence)i(it)427 2448 y(is)k(meaningless)g(to)
+h(ask)g(where)f(the)h(tangen)m(t)i(p)s(oin)m(t)c(w)m(ould)h(ha)m(v)m(e)
+i(to)f(b)s(e)g(to)g(bring)e(ab)s(out)i(this)427 2561
+y(com)m(bination)d(of)g Fl(\030)35 b FD(and)30 b Fl(\016)s
+FD(.)311 2698 y(3.)46 b(Also)33 b(near)f(the)h(p)s(oles,)f(cases)i(can)
+f(arise)f(where)g(there)h(are)g(t)m(w)m(o)g(useful)e(solutions.)46
+b(The)32 b(argu-)427 2811 y(men)m(t)j(N)g(indicates)e(whether)h(the)h
+(second)g(of)g(the)f(t)m(w)m(o)i(solutions)d(returned)h(is)f(useful.)52
+b(N)15 b(=)g(1)427 2924 y(indicates)41 b(only)h(one)g(useful)e
+(solution,)k(the)e(usual)f(case;)49 b(under)41 b(these)h
+(circumstances,)j(the)427 3037 y(second)35 b(solution)e(corresp)s(onds)
+g(to)j(the)f(\\o)m(v)m(er-the-p)s(ole")i(case,)g(and)d(this)f(is)h
+(re\015ected)h(in)e(the)427 3150 y(v)-5 b(alues)30 b(of)h(RAZ2)f(and)g
+(DECZ2)g(whic)m(h)f(are)i(returned.)311 3287 y(4.)46
+b(The)35 b(DECZ1)g(and)f(DECZ2)h(v)-5 b(alues)34 b(returned)g(are)h(in)
+f(the)h(range)g Fo(\006)p Fl(\031)s FD(,)h(but)f(in)e(the)i(ordinary)-8
+b(,)427 3400 y(non-p)s(ole-crossing,)29 b(case,)j(the)f(range)f(is)g
+Fo(\006)p Fl(\031)s(=)p FD(2.)311 3537 y(5.)46 b(RA,)31
+b(DEC,)f(RAZ1,)h(DECZ1,)g(RAZ2,)f(DECZ2)h(are)f(all)g(in)f(radians.)311
+3675 y(6.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+3788 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 3901 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 4038 y(7.)46 b(When)26 b(w)m(orking)g(in)e([)15
+b Fl(x;)g(y)s(;)g(z)21 b FD(])26 b(rather)g(than)g(spherical)e(co)s
+(ordinates,)j(the)f(equiv)-5 b(alen)m(t)26 b(Cartesian)427
+4151 y(routine)k(sla)p Ft(_)p FD(TPV2C)f(is)g(a)m(v)-5
+b(ailable.)p 0 4248 3780 8 v 0 4361 a Fx(SLA)p Fn(_)p
+Fx(TPV2C)287 b Fm(Plate)37 b(cen)m(tre)h(from)e Fg(\030)6
+b(;)20 b(\021)43 b Fm(and)38 b Fg(x;)20 b(y)t(;)g(z)294
+b Fx(SLA)p Fn(_)p Fx(TPV2C)0 4712 y FB(A)m(CTION)44 b
+FD(:)38 b(F)-8 b(rom)26 b(the)f(tangen)m(t)i(plane)d(co)s(ordinates)h
+(of)g(a)h(star)f(of)h(kno)m(wn)e(direction)g(cosines,)i(determine)227
+4824 y(the)31 b(direction)e(cosines)h(of)g(the)h(tangen)m(t)h(p)s(oin)m
+(t)d(\(single)h(precision\))0 5012 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_TPV2C)g(\(XI,)g(ETA,)h(V,)g(V01,)g(V02,)f(N\))0
+5327 y FB(GIVEN)f FD(:)277 5473 y Fq(XI,ET)-7 b(A)417
+b FB(R)567 b FD(tangen)m(t)32 b(plane)d(co)s(ordinates)h(of)h(star)g
+(\(radians\))277 5586 y Fq(V)668 b FB(R\(3\))433 b FD(direction)29
+b(cosines)h(of)h(star)p eop
+%%Page: 161 163
+161 162 bop 0 52 a Fw(SUN/67.70)3206 b FD(161)0 351 y
+FB(RETURNED)46 b FD(:)277 497 y Fq(V01)576 b FB(R\(3\))433
+b FD(direction)29 b(cosines)h(of)h(tangen)m(t)h(p)s(oin)m(t,)d
+(solution)g(1)277 610 y Fq(V01)576 b FB(R\(3\))433 b
+FD(direction)29 b(cosines)h(of)h(tangen)m(t)h(p)s(oin)m(t,)d(solution)g
+(2)277 723 y Fq(N)668 b FB(I)605 b FD(n)m(um)m(b)s(er)29
+b(of)i(solutions:)1779 836 y(0)g(=)f(no)g(solutions)f(returned)g
+(\(note)j(2\))1779 949 y(1)f(=)f(only)g(the)g(\014rst)g(solution)f(is)g
+(useful)g(\(note)i(3\))1779 1062 y(2)g(=)f(there)h(are)f(t)m(w)m(o)i
+(useful)d(solutions)g(\(note)i(3\))0 1363 y FB(NOTES)44
+b FD(:)311 1543 y(1.)i(The)30 b(v)m(ector)i(V)f(m)m(ust)f(b)s(e)g(of)g
+(unit)f(length)h(or)g(the)h(result)e(will)f(b)s(e)h(wrong.)311
+1681 y(2.)46 b(Cases)39 b(where)f(there)h(is)f(no)g(solution)f(can)i
+(only)f(arise)g(near)g(the)h(p)s(oles.)64 b(F)-8 b(or)40
+b(example,)g(it)e(is)427 1794 y(clearly)30 b(imp)s(ossible)d(for)j(a)h
+(star)f(at)h(the)g(p)s(ole)e(itself)h(to)h(ha)m(v)m(e)g(a)g(non-zero)g
+(XI)f(v)-5 b(alue.)311 1933 y(3.)46 b(Also)33 b(near)f(the)h(p)s(oles,)
+f(cases)i(can)f(arise)f(where)g(there)h(are)g(t)m(w)m(o)g(useful)e
+(solutions.)46 b(The)32 b(argu-)427 2046 y(men)m(t)j(N)g(indicates)e
+(whether)h(the)h(second)g(of)g(the)f(t)m(w)m(o)i(solutions)d(returned)h
+(is)f(useful.)52 b(N)15 b(=)g(1)427 2159 y(indicates)41
+b(only)h(one)g(useful)e(solution,)k(the)e(usual)f(case;)49
+b(under)41 b(these)h(circumstances,)j(the)427 2272 y(second)27
+b(solution)f(can)h(b)s(e)g(regarded)f(as)i(v)-5 b(alid)25
+b(if)h(the)h(v)m(ector)i(V02)f(is)e(in)m(terpreted)g(as)h(the)g(\\o)m
+(v)m(er-)427 2385 y(the-p)s(ole")k(case.)311 2523 y(4.)46
+b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i Fq(gnomonic)31
+b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s(ordinates)f([)15
+b Fl(\030)t(;)g(\021)k FD(])25 b(are)427 2636 y(called)30
+b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 2749 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 2888 y(5.)46 b(This)29 b(routine)g(is)h(the)g(Cartesian)g
+(equiv)-5 b(alen)m(t)30 b(of)g(the)h(routine)e(sla)p
+Ft(_)p FD(TPS2C.)p 0 2998 3780 8 v 0 3111 a Fx(SLA)p
+Fn(_)p Fx(UE2EL)224 b Fm(Univ)m(ersal)37 b(to)h(Con)m(v)m(en)m(tional)d
+(Elemen)m(ts)222 b Fx(SLA)p Fn(_)p Fx(UE2EL)0 3461 y
+FB(A)m(CTION)44 b FD(:)c(T)-8 b(ransform)30 b(univ)m(ersal)e(elemen)m
+(ts)j(in)m(to)g(con)m(v)m(en)m(tional)g(helio)s(cen)m(tric)e
+(osculating)h(elemen)m(ts.)0 3649 y FB(CALL)45 b FD(:)77
+b Ft(CALL)46 b(sla_UE2EL)g(\(U,)h(JFORMR,)1192 3762 y(JFORM,)e(EPOCH,)i
+(ORBINC,)e(ANODE,)h(PERIH,)1192 3874 y(AORQ,)g(E,)h(AORL,)f(DM,)h
+(JSTAT\))0 4194 y FB(GIVEN)e FD(:)277 4340 y Fq(U)668
+b FB(D\(13\))379 b FD(univ)m(ersal)29 b(orbital)g(elemen)m(ts)i(\(up)s
+(dated;)e(Note)j(1\))537 4453 y(\(1\))1006 b(com)m(bined)30
+b(mass)g(\()p Fl(M)h FD(+)20 b Fl(m)p FD(\))537 4566
+y(\(2\))1006 b(total)31 b(energy)g(of)g(the)f(orbit)g(\()p
+Fl(\013)p FD(\))537 4679 y(\(3\))1006 b(reference)31
+b(\(osculating\))f(ep)s(o)s(c)m(h)h(\()p Fl(t)2869 4693
+y Fu(0)2908 4679 y FD(\))499 4792 y(\(4-6\))969 b(p)s(osition)29
+b(at)i(reference)g(ep)s(o)s(c)m(h)f(\()p FB(r)2836 4806
+y Fu(0)2876 4792 y FD(\))499 4905 y(\(7-9\))969 b(v)m(elo)s(cit)m(y)31
+b(at)g(reference)g(ep)s(o)s(c)m(h)f(\()p FB(v)2837 4919
+y Fu(0)2877 4905 y FD(\))514 5018 y(\(10\))984 b(helio)s(cen)m(tric)29
+b(distance)h(at)h(reference)g(ep)s(o)s(c)m(h)514 5130
+y(\(11\))984 b FB(r)1701 5144 y Fu(0)1741 5130 y Fl(:)p
+FB(v)1821 5144 y Fu(0)514 5243 y FD(\(12\))g(date)31
+b(\()p Fl(t)p FD(\))514 5356 y(\(13\))984 b(univ)m(ersal)29
+b(eccen)m(tric)i(anomaly)f(\()p Fl( )s FD(\))i(of)e(date,)i(appro)m(x)
+277 5582 y Fq(JF)n(ORMR)347 b FB(I)605 b FD(requested)30
+b(elemen)m(t)h(set)g(\(1-3;)h(Note)g(3\))p eop
+%%Page: 162 164
+162 163 bop 0 52 a FD(162)0 351 y FB(RETURNED)46 b FD(:)277
+497 y Fq(JF)n(ORM)413 b FB(I)605 b FD(elemen)m(t)31 b(set)g(actually)f
+(returned)f(\(1-3;)j(Note)g(4\))277 610 y Fq(EPOCH)409
+b FB(D)565 b FD(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)g(\()p
+Fl(t)2462 624 y Fu(0)2531 610 y FD(or)g Fl(T)13 b FD(,)30
+b(TT)g(MJD\))277 723 y Fq(ORBINC)368 b FB(D)565 b FD(inclination)28
+b(\()p Fl(i)p FD(,)j(radians\))277 836 y Fq(ANODE)399
+b FB(D)565 b FD(longitude)29 b(of)i(the)f(ascending)g(no)s(de)g
+(\(\012,)g(radians\))277 949 y Fq(PERIH)443 b FB(D)565
+b FD(longitude)29 b(or)i(argumen)m(t)f(of)h(p)s(erihelion)c(\()p
+Fl($)33 b FD(or)e Fl(!)s FD(,)1825 1062 y(radians\))277
+1175 y Fq(A)n(OR)n(Q)466 b FB(D)565 b FD(mean)30 b(distance)f(or)g(p)s
+(erihelion)d(distance)k(\()p Fl(a)f FD(or)h Fl(q)s FD(,)g(A)m(U\))277
+1288 y Fq(E)674 b FB(D)565 b FD(eccen)m(tricit)m(y)32
+b(\()p Fl(e)p FD(\))277 1401 y Fq(A)n(ORL)477 b FB(D)565
+b FD(mean)31 b(anomaly)f(or)g(longitude)f(\()p Fl(M)41
+b FD(or)30 b Fl(L)p FD(,)h(radians,)1825 1514 y(JF)m(ORM=1,2)g(only\))
+277 1626 y Fq(DM)585 b FB(D)565 b FD(daily)29 b(motion)h(\()p
+Fl(n)p FD(,)g(radians,)g(JF)m(ORM=1)h(only\))277 1739
+y Fq(JST)-7 b(A)g(T)453 b FB(I)605 b FD(status:)1898
+1852 y(0)30 b(=)g(OK)1825 1965 y Fo(\000)p FD(1)g(=)g(illegal)f(PMASS)
+1825 2078 y Fo(\000)p FD(2)h(=)g(illegal)f(JF)m(ORMR)1825
+2191 y Fo(\000)p FD(3)h(=)g(p)s(osition/v)m(elo)s(cit)m(y)g(out)g(of)h
+(allo)m(w)m(ed)f(range)0 2570 y FB(NOTES)44 b FD(:)311
+2768 y(1.)i(The)40 b(\\univ)m(ersal")f(elemen)m(ts)h(are)g(those)h
+(whic)m(h)d(de\014ne)h(the)h(orbit)f(for)h(the)g(purp)s(oses)e(of)i
+(the)427 2881 y(metho)s(d)26 b(of)g(univ)m(ersal)f(v)-5
+b(ariables)25 b(\(see)i(reference)f(2\).)41 b(They)25
+b(consist)h(of)g(the)h(com)m(bined)e(mass)h(of)427 2994
+y(the)33 b(t)m(w)m(o)h(b)s(o)s(dies,)e(an)g(ep)s(o)s(c)m(h,)h(and)f
+(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m(y)h(v)m(ectors)h
+(\(arbitrary)e(reference)427 3107 y(frame\))j(at)g(that)g(ep)s(o)s(c)m
+(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)e(also)j(v)
+-5 b(arious)33 b(quan)m(tities)427 3220 y(that)i(can,)g(in)d(fact,)k(b)
+s(e)d(deriv)m(ed)f(from)i(the)f(other)h(information.)49
+b(This)32 b(approac)m(h)i(is)f(tak)m(en)i(to)427 3333
+y(a)m(v)m(oiding)d(unnecessary)f(computation)h(and)g(loss)f(of)h
+(accuracy)-8 b(.)48 b(The)31 b(supplemen)m(tary)g(quan)m(ti-)427
+3446 y(ties)22 b(are)h(\(i\))f Fl(\013)p FD(,)i(whic)m(h)d(is)g(prop)s
+(ortional)f(to)j(the)g(total)g(energy)f(of)h(the)f(orbit,)h(\(ii\))e
+(the)i(helio)s(cen)m(tric)427 3558 y(distance)35 b(at)g(ep)s(o)s(c)m
+(h,)h(\(iii\))d(the)i(out)m(w)m(ards)g(comp)s(onen)m(t)g(of)g(the)g(v)m
+(elo)s(cit)m(y)g(at)h(the)f(giv)m(en)f(ep)s(o)s(c)m(h,)427
+3671 y(\(iv\))29 b(an)f(estimate)h(of)g Fl( )s FD(,)h(the)e(\\univ)m
+(ersal)g(eccen)m(tric)h(anomaly")g(at)g(a)g(giv)m(en)g(date)g(and)f
+(\(v\))h(that)427 3784 y(date.)311 3971 y(2.)46 b(The)34
+b(univ)m(ersal)f(elemen)m(ts)h(are)h(with)e(resp)s(ect)i(to)g(the)f
+(mean)h(equator)g(and)e(equino)m(x)h(of)h(ep)s(o)s(c)m(h)427
+4084 y(J2000.)40 b(The)23 b(orbital)f(elemen)m(ts)h(pro)s(duced)f(are)h
+(with)f(resp)s(ect)h(to)h(the)f(J2000)i(ecliptic)d(and)g(mean)427
+4197 y(equino)m(x.)311 4384 y(3.)46 b(Three)30 b(di\013eren)m(t)g
+(elemen)m(t-format)i(options)d(are)i(supp)s(orted,)e(as)h(follo)m(ws.)
+427 4665 y(JF)m(ORM=1,)h(suitable)e(for)i(the)f(ma)5
+b(jor)30 b(planets:)602 4903 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30
+b(of)h(elemen)m(ts)f Fl(t)1910 4917 y Fu(0)1980 4903
+y FD(\(TT)g(MJD\))602 5016 y(ORBINC)45 b(=)55 b(inclination)27
+b Fl(i)k FD(\(radians\))602 5128 y(ANODE)76 b(=)55 b(longitude)29
+b(of)h(the)h(ascending)f(no)s(de)f(\012)h(\(radians\))602
+5241 y(PERIH)122 b(=)55 b(longitude)29 b(of)h(p)s(erihelion)d
+Fl($)34 b FD(\(radians\))602 5354 y(A)m(OR)m(Q)143 b(=)55
+b(mean)30 b(distance)g Fl(a)h FD(\(A)m(U\))602 5467 y(E)352
+b(=)55 b(eccen)m(tricit)m(y)31 b Fl(e)g FD(\(0)26 b Fo(\024)f
+Fl(e)h(<)f FD(1\))602 5580 y(A)m(ORL)154 b(=)55 b(mean)30
+b(longitude)f Fl(L)i FD(\(radians\))602 5693 y(DM)262
+b(=)55 b(daily)29 b(motion)h Fl(n)g FD(\(radians\))p
+eop
+%%Page: 163 165
+163 164 bop 0 52 a Fw(SUN/67.70)3206 b FD(163)427 351
+y(JF)m(ORM=2,)31 b(suitable)e(for)i(minor)d(planets:)602
+582 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(elemen)m(ts)f
+Fl(t)1910 596 y Fu(0)1980 582 y FD(\(TT)g(MJD\))602 695
+y(ORBINC)45 b(=)55 b(inclination)27 b Fl(i)k FD(\(radians\))602
+808 y(ANODE)76 b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f
+(\012)h(\(radians\))602 921 y(PERIH)122 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 1034
+y(A)m(OR)m(Q)143 b(=)55 b(mean)30 b(distance)g Fl(a)h
+FD(\(A)m(U\))602 1147 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h(<)f FD(1\))602
+1260 y(A)m(ORL)154 b(=)55 b(mean)30 b(anomaly)h Fl(M)40
+b FD(\(radians\))427 1490 y(JF)m(ORM=3,)31 b(suitable)e(for)i(comets:)
+602 1721 y(EPOCH)85 b(=)55 b(ep)s(o)s(c)m(h)30 b(of)h(p)s(erihelion)c
+Fl(T)43 b FD(\(TT)30 b(MJD\))602 1834 y(ORBINC)45 b(=)55
+b(inclination)27 b Fl(i)k FD(\(radians\))602 1947 y(ANODE)76
+b(=)55 b(longitude)29 b(of)h(the)h(ascending)f(no)s(de)f(\012)h
+(\(radians\))602 2060 y(PERIH)122 b(=)55 b(argumen)m(t)31
+b(of)f(p)s(erihelion)d Fl(!)33 b FD(\(radians\))602 2173
+y(A)m(OR)m(Q)143 b(=)55 b(p)s(erihelion)27 b(distance)j
+Fl(q)j FD(\(A)m(U\))602 2286 y(E)352 b(=)55 b(eccen)m(tricit)m(y)31
+b Fl(e)g FD(\(0)26 b Fo(\024)f Fl(e)h Fo(\024)f FD(10\))311
+2517 y(4.)46 b(It)26 b(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)e(to)j
+(generate)h(elemen)m(ts)f(in)f(the)g(form)g(requested)h(through)f(JF)m
+(ORMR.)427 2629 y(The)45 b(caller)f(is)g(noti\014ed)g(of)h(the)g(form)f
+(of)h(elemen)m(ts)g(actually)g(returned)f(b)m(y)g(means)h(of)g(the)427
+2742 y(JF)m(ORM)31 b(argumen)m(t:)554 2973 y(JF)m(ORMR)119
+b(JF)m(ORM)234 b(meaning)705 3199 y(1)465 b(1)362 b(OK:)30
+b(elemen)m(ts)g(are)h(in)e(the)i(requested)f(format)705
+3312 y(1)465 b(2)362 b(nev)m(er)30 b(happ)s(ens)705 3425
+y(1)465 b(3)362 b(orbit)29 b(not)i(elliptical)705 3538
+y(2)465 b(1)362 b(nev)m(er)30 b(happ)s(ens)705 3651 y(2)465
+b(2)362 b(OK:)30 b(elemen)m(ts)g(are)h(in)e(the)i(requested)f(format)
+705 3764 y(2)465 b(3)362 b(orbit)29 b(not)i(elliptical)705
+3876 y(3)465 b(1)362 b(nev)m(er)30 b(happ)s(ens)705 3989
+y(3)465 b(2)362 b(nev)m(er)30 b(happ)s(ens)705 4102 y(3)465
+b(3)362 b(OK:)30 b(elemen)m(ts)g(are)h(in)e(the)i(requested)f(format)
+311 4333 y(5.)46 b(The)30 b(argumen)m(ts)h(returned)f(for)g(eac)m(h)i
+(v)-5 b(alue)31 b(of)f(JF)m(ORM)i(\()p Fq(cf.)41 b FD(Note)32
+b(5:)42 b(JF)m(ORM)31 b(ma)m(y)g(not)g(b)s(e)427 4446
+y(the)g(same)g(as)f(JF)m(ORMR\))h(are)g(as)g(follo)m(ws:)602
+4677 y(JF)m(ORM)282 b(1)273 b(2)g(3)602 4903 y(EPOCH)k
+Fl(t)1241 4917 y Fu(0)1526 4903 y Fl(t)1559 4917 y Fu(0)1844
+4903 y Fl(T)602 5016 y FD(ORBINC)237 b Fl(i)287 b(i)g(i)602
+5128 y FD(ANODE)268 b(\012)252 b(\012)g(\012)602 5241
+y(PERIH)314 b Fl($)243 b(!)261 b(!)602 5354 y FD(A)m(OR)m(Q)335
+b Fl(a)270 b(a)g(q)602 5467 y FD(E)544 b Fl(e)276 b(e)g(e)602
+5580 y FD(A)m(ORL)346 b Fl(L)256 b(M)230 b FD(-)602 5693
+y(DM)454 b Fl(n)263 b FD(-)288 b(-)p eop
+%%Page: 164 166
+164 165 bop 0 52 a FD(164)427 351 y(where:)602 584 y
+Fl(t)635 598 y Fu(0)1016 584 y FD(is)29 b(the)i(ep)s(o)s(c)m(h)f(of)g
+(the)h(elemen)m(ts)g(\(MJD,)g(TT\))602 696 y Fl(T)361
+b FD(is)29 b(the)i(ep)s(o)s(c)m(h)f(of)g(p)s(erihelion)d(\(MJD,)32
+b(TT\))602 809 y Fl(i)383 b FD(is)29 b(the)i(inclination)c(\(radians\))
+602 922 y(\012)348 b(is)29 b(the)i(longitude)e(of)h(the)h(ascending)e
+(no)s(de)h(\(radians\))602 1035 y Fl($)339 b FD(is)29
+b(the)i(longitude)e(of)h(p)s(erihelion)d(\(radians\))602
+1148 y Fl(!)357 b FD(is)29 b(the)i(argumen)m(t)f(of)h(p)s(erihelion)c
+(\(radians\))602 1261 y Fl(a)366 b FD(is)29 b(the)i(mean)f(distance)g
+(\(A)m(U\))602 1374 y Fl(q)373 b FD(is)29 b(the)i(p)s(erihelion)c
+(distance)j(\(A)m(U\))602 1487 y Fl(e)372 b FD(is)29
+b(the)i(eccen)m(tricit)m(y)602 1600 y Fl(L)352 b FD(is)29
+b(the)i(longitude)e(\(radians,)g(0)21 b Fo(\000)f FD(2)p
+Fl(\031)s FD(\))602 1713 y Fl(M)326 b FD(is)29 b(the)i(mean)f(anomaly)g
+(\(radians,)g(0)20 b Fo(\000)g FD(2)p Fl(\031)s FD(\))602
+1826 y Fl(n)359 b FD(is)29 b(the)i(daily)d(motion)i(\(radians\))602
+1938 y(-)384 b(means)30 b(no)g(v)-5 b(alue)30 b(is)f(set)311
+2171 y(6.)46 b(A)m(t)c(v)m(ery)g(small)e(inclinations,)h(the)h
+(longitude)e(of)h(the)g(ascending)g(no)s(de)g(ANODE)g(b)s(ecomes)427
+2284 y(indeterminate)36 b(and)g(under)f(some)i(circumstances)f(ma)m(y)h
+(b)s(e)f(set)h(arbitrarily)d(to)j(zero.)60 b(Simi-)427
+2397 y(larly)-8 b(,)38 b(if)d(the)i(orbit)f(is)f(close)i(to)h
+(circular,)e(the)h(true)g(anomaly)f(b)s(ecomes)h(indeterminate)e(and)
+427 2509 y(under)h(some)i(circumstances)g(ma)m(y)g(b)s(e)f(set)h
+(arbitrarily)d(to)j(zero.)63 b(In)37 b(suc)m(h)g(cases,)j(the)e(other)
+427 2622 y(elemen)m(ts)h(are)g(automatically)g(adjusted)f(to)i(comp)s
+(ensate,)h(and)d(so)h(the)g(elemen)m(ts)g(remain)f(a)427
+2735 y(v)-5 b(alid)29 b(description)f(of)j(the)f(orbit.)0
+3178 y FB(REFERENCES)44 b FD(:)311 3397 y(1.)i(Sterne,)25
+b(Theo)s(dore)f(E.,)h Fq(A)n(n)h(Intr)-5 b(o)g(duction)29
+b(to)f(Celestial)f(Me)-5 b(chanics,)25 b FD(In)m(terscience)g
+(Publishers,)427 3510 y(1960.)43 b(Section)30 b(6.7,)i(p199.)311
+3673 y(2.)46 b(Ev)m(erhart,)31 b(E.)g(&)f(Pitkin,)e(E.T.,)j(Am.)f(J.)h
+(Ph)m(ys.)f(51,)h(712,)h(1983.)p 0 3837 3780 8 v 0 3950
+a Fx(SLA)p Fn(_)p Fx(UE2PV)267 b Fm(P)m(os/V)-10 b(el)37
+b(from)f(Univ)m(ersal)h(Elemen)m(ts)265 b Fx(SLA)p Fn(_)p
+Fx(UE2PV)0 4301 y FB(A)m(CTION)44 b FD(:)59 b(Helio)s(cen)m(tric)40
+b(p)s(osition)e(and)h(v)m(elo)s(cit)m(y)h(of)g(a)g(planet,)i(asteroid)e
+(or)g(comet,)j(starting)d(from)227 4414 y(orbital)29
+b(elemen)m(ts)i(in)e(the)i(\\univ)m(ersal)e(v)-5 b(ariables")29
+b(form.)0 4601 y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_UE2PV)g
+(\(DATE,)g(U,)h(PV,)g(JSTAT\))0 4999 y FB(GIVEN)e FD(:)277
+5145 y Fq(D)n(A)-7 b(TE)481 b FB(D)565 b FD(date)34 b(\(TT)e(Mo)s
+(di\014ed)g(Julian)e(Date)35 b(=)d(JD)p Fo(\000)p FD(2400000.5\))0
+5693 y FB(GIVEN)i(and)h(RETURNED)46 b FD(:)p eop
+%%Page: 165 167
+165 166 bop 0 52 a Fw(SUN/67.70)3206 b FD(165)277 339
+y Fq(U)668 b FB(D\(13\))379 b FD(univ)m(ersal)29 b(orbital)g(elemen)m
+(ts)i(\(up)s(dated;)e(Note)j(1\))537 452 y(\(1\))1006
+b(com)m(bined)30 b(mass)g(\()p Fl(M)h FD(+)20 b Fl(m)p
+FD(\))537 565 y(\(2\))1006 b(total)31 b(energy)g(of)g(the)f(orbit)g(\()
+p Fl(\013)p FD(\))537 678 y(\(3\))1006 b(reference)31
+b(\(osculating\))f(ep)s(o)s(c)m(h)h(\()p Fl(t)2869 692
+y Fu(0)2908 678 y FD(\))499 791 y(\(4-6\))969 b(p)s(osition)29
+b(at)i(reference)g(ep)s(o)s(c)m(h)f(\()p FB(r)2836 805
+y Fu(0)2876 791 y FD(\))499 904 y(\(7-9\))969 b(v)m(elo)s(cit)m(y)31
+b(at)g(reference)g(ep)s(o)s(c)m(h)f(\()p FB(v)2837 918
+y Fu(0)2877 904 y FD(\))514 1016 y(\(10\))984 b(helio)s(cen)m(tric)29
+b(distance)h(at)h(reference)g(ep)s(o)s(c)m(h)514 1129
+y(\(11\))984 b FB(r)1701 1143 y Fu(0)1741 1129 y Fl(:)p
+FB(v)1821 1143 y Fu(0)514 1242 y FD(\(12\))g(date)31
+b(\()p Fl(t)p FD(\))514 1355 y(\(13\))984 b(univ)m(ersal)29
+b(eccen)m(tric)i(anomaly)f(\()p Fl( )s FD(\))i(of)e(date,)i(appro)m(x)0
+1631 y FB(RETURNED)46 b FD(:)277 1777 y Fq(PV)606 b FB(D\(6\))431
+b FD(helio)s(cen)m(tric)29 b([)15 b Fl(x;)g(y)s(;)g(z)t(;)33
+b FD(_)-43 b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(],)31 b(equatorial,)f(J2000)1825 1890
+y(\(A)m(U,)i(A)m(U/s;)f(Note)h(1\))277 2003 y Fq(JST)-7
+b(A)g(T)453 b FB(I)605 b FD(status:)1866 2116 y(0)30
+b(=)h(OK)1798 2229 y Fo(\000)p FD(1)f(=)g(radius)f(v)m(ector)i(zero)
+1798 2342 y Fo(\000)p FD(2)f(=)g(failed)f(to)i(con)m(v)m(erge)0
+2618 y FB(NOTES)44 b FD(:)311 2795 y(1.)i(The)40 b(\\univ)m(ersal")f
+(elemen)m(ts)h(are)g(those)h(whic)m(h)d(de\014ne)h(the)h(orbit)f(for)h
+(the)g(purp)s(oses)e(of)i(the)427 2908 y(metho)s(d)32
+b(of)g(univ)m(ersal)e(v)-5 b(ariables)31 b(\(see)i(reference\).)47
+b(They)32 b(consist)f(of)i(the)f(com)m(bined)f(mass)h(of)427
+3021 y(the)h(t)m(w)m(o)h(b)s(o)s(dies,)e(an)g(ep)s(o)s(c)m(h,)h(and)f
+(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m(y)h(v)m(ectors)h
+(\(arbitrary)e(reference)427 3134 y(frame\))j(at)g(that)g(ep)s(o)s(c)m
+(h.)53 b(The)34 b(parameter)h(set)g(used)f(here)g(includes)e(also)j(v)
+-5 b(arious)33 b(quan)m(tities)427 3247 y(that)i(can,)g(in)d(fact,)k(b)
+s(e)d(deriv)m(ed)f(from)i(the)f(other)h(information.)49
+b(This)32 b(approac)m(h)i(is)f(tak)m(en)i(to)427 3359
+y(a)m(v)m(oiding)d(unnecessary)f(computation)h(and)g(loss)f(of)h
+(accuracy)-8 b(.)48 b(The)31 b(supplemen)m(tary)g(quan)m(ti-)427
+3472 y(ties)22 b(are)h(\(i\))f Fl(\013)p FD(,)i(whic)m(h)d(is)g(prop)s
+(ortional)f(to)j(the)g(total)g(energy)f(of)h(the)f(orbit,)h(\(ii\))e
+(the)i(helio)s(cen)m(tric)427 3585 y(distance)35 b(at)g(ep)s(o)s(c)m
+(h,)h(\(iii\))d(the)i(out)m(w)m(ards)g(comp)s(onen)m(t)g(of)g(the)g(v)m
+(elo)s(cit)m(y)g(at)h(the)f(giv)m(en)f(ep)s(o)s(c)m(h,)427
+3698 y(\(iv\))29 b(an)f(estimate)h(of)g Fl( )s FD(,)h(the)e(\\univ)m
+(ersal)g(eccen)m(tric)h(anomaly")g(at)g(a)g(giv)m(en)g(date)g(and)f
+(\(v\))h(that)427 3811 y(date.)311 3974 y(2.)46 b(The)34
+b(companion)g(routine)f(is)h(sla)p Ft(_)p FD(EL2UE.)g(This)e(tak)m(es)k
+(the)f(con)m(v)m(en)m(tional)g(orbital)e(elemen)m(ts)427
+4087 y(and)27 b(transforms)g(them)h(in)m(to)f(the)h(set)h(of)e(n)m(um)m
+(b)s(ers)g(needed)g(b)m(y)h(the)f(presen)m(t)h(routine.)39
+b(A)28 b(single)427 4200 y(prediction)39 b(requires)f(one)j(one)f(call)
+f(to)i(sla)p Ft(_)p FD(EL2UE)f(follo)m(w)m(ed)f(b)m(y)h(one)h(call)e
+(to)i(the)f(presen)m(t)427 4313 y(routine;)48 b(for)43
+b(con)m(v)m(enience,)k(the)c(t)m(w)m(o)h(calls)e(are)h(pac)m(k)-5
+b(aged)45 b(as)e(the)f(routine)g(sla)p Ft(_)p FD(PLANEL.)427
+4425 y(Multiple)25 b(predictions)g(ma)m(y)i(b)s(e)g(made)f(b)m(y)h
+(again)g(calling)e(sla)p Ft(_)p FD(EL2UE)i(once,)h(but)e(then)h
+(calling)427 4538 y(the)c(presen)m(t)f(routine)f(m)m(ultiple)f(times,)k
+(whic)m(h)d(is)g(faster)i(than)f(m)m(ultiple)e(calls)h(to)i(sla)p
+Ft(_)p FD(PLANEL.)427 4690 y(It)g(is)f(not)h(obligatory)g(to)g(use)g
+(sla)p Ft(_)p FD(EL2UE)f(to)h(obtain)g(the)g(parameters.)38
+b(Ho)m(w)m(ev)m(er,)27 b(it)22 b(should)f(b)s(e)427 4803
+y(noted)k(that)f(b)s(ecause)g(sla)p Ft(_)p FD(EL2UE)g(p)s(erforms)e
+(its)i(o)m(wn)g(v)-5 b(alidation,)24 b(no)g(c)m(hec)m(ks)h(on)f(the)h
+(con)m(ten)m(ts)427 4916 y(of)31 b(the)f(arra)m(y)h(U)g(are)g(made)f(b)
+m(y)g(the)h(presen)m(t)f(routine.)311 5079 y(3.)46 b(D)m(A)-8
+b(TE)34 b(is)d(the)i(instan)m(t)f(for)g(whic)m(h)f(the)h(prediction)f
+(is)g(required.)45 b(It)33 b(is)e(in)g(the)i(TT)e(time)h(scale)427
+5192 y(\(formerly)e(Ephemeris)e(Time,)i(ET\))g(and)g(is)f(a)i(Mo)s
+(di\014ed)e(Julian)f(Date)k(\(JD)p Fo(\000)p FD(2400000.5\).)311
+5354 y(4.)46 b(The)32 b(univ)m(ersal)e(elemen)m(ts)i(supplied)c(in)j
+(the)h(arra)m(y)g(U)g(are)g(in)f(canonical)g(units)f(\(solar)i(masses,)
+427 5467 y(A)m(U)f(and)f(canonical)g(da)m(ys\).)41 b(The)30
+b(p)s(osition)e(and)i(v)m(elo)s(cit)m(y)h(are)g(not)f(sensitiv)m(e)g
+(to)h(the)f(c)m(hoice)h(of)427 5580 y(reference)36 b(frame.)56
+b(The)35 b(sla)p Ft(_)p FD(EL2UE)g(routine)g(in)f(fact)j(pro)s(duces)d
+(co)s(ordinates)h(with)f(resp)s(ect)427 5693 y(to)d(the)g(J2000)h
+(equator)f(and)f(equino)m(x.)p eop
+%%Page: 166 168
+166 167 bop 0 52 a FD(166)311 351 y(5.)46 b(The)36 b(algorithm)f(w)m
+(as)h(originally)e(adapted)i(from)g(the)g(EPHSLA)f(program)h(of)g(D.)16
+b(H.)g(P)-8 b(.)16 b(Jones)427 464 y(\(priv)-5 b(ate)36
+b(comm)m(unication,)h(1996\).)59 b(The)35 b(metho)s(d)h(is)f(based)g
+(on)h(Stump\013)7 b('s)35 b(Univ)m(ersal)f(V)-8 b(ari-)427
+577 y(ables.)0 973 y FB(REFERENCE)44 b FD(:)d(Ev)m(erhart,)31
+b(E.)f(&)g(Pitkin,)f(E.T.,)h(Am.)h(J.)f(Ph)m(ys.)g(51,)i(712,)g(1983.)p
+0 1120 3780 8 v 0 1233 a Fx(SLA)p Fn(_)p Fx(UNPCD)404
+b Fm(Remo)m(v)m(e)36 b(Radial)i(Distortion)401 b Fx(SLA)p
+Fn(_)p Fx(UNPCD)0 1583 y FB(A)m(CTION)44 b FD(:)c(Remo)m(v)m(e)30
+b(pincushion/barrel)25 b(distortion)j(from)g(a)i(distorted)e([)15
+b Fl(x;)g(y)j FD(])30 b(to)f(giv)m(e)h(tangen)m(t-plane)227
+1696 y([)15 b Fl(x;)g(y)k FD(].)0 1884 y FB(CALL)45 b
+FD(:)77 b Ft(CALL)46 b(sla_UNPCD)g(\(DISCO,X,Y\))0 2254
+y FB(GIVEN)f FD(:)277 2400 y Fq(DISCO)446 b FB(D)565
+b FD(pincushion/barrel)26 b(distortion)j(co)s(e\016cien)m(t)277
+2513 y Fq(X,Y)572 b FB(D)565 b FD(distorted)30 b([)15
+b Fl(x;)g(y)k FD(])0 2901 y FB(RETURNED)46 b FD(:)277
+3072 y Fq(X,Y)572 b FB(D)565 b FD(tangen)m(t-plane)31
+b([)15 b Fl(x;)g(y)k FD(])0 3469 y FB(NOTES)44 b FD(:)311
+3670 y(1.)i(The)32 b(distortion)e(is)h(of)h(the)g(form)g
+Fl(\032)c FD(=)f Fl(r)s FD(\(1)22 b(+)f Fl(cr)2099 3637
+y Fu(2)2138 3670 y FD(\),)33 b(where)e Fl(r)k FD(is)c(the)h(radial)e
+(distance)i(from)f(the)427 3783 y(tangen)m(t)g(p)s(oin)m(t,)d
+Fl(c)h FD(is)f(the)h(DISCO)f(argumen)m(t,)i(and)f Fl(\032)g
+FD(is)f(the)h(radial)e(distance)i(in)e(the)i(presence)427
+3896 y(of)i(the)f(distortion.)311 4049 y(2.)46 b(F)-8
+b(or)31 b Fq(pincushion)39 b FD(distortion,)29 b(C)h(is)f(+v)m(e;)i
+(for)g Fq(b)-5 b(arr)g(el)41 b FD(distortion,)29 b(C)h(is)g
+Fo(\000)p FD(v)m(e.)311 4202 y(3.)46 b(F)-8 b(or)37 b(X,Y)g(in)e(units)
+f(of)j(one)f(pro)5 b(jection)36 b(radius)e(\(in)h(the)i(case)g(of)f(a)h
+(photographic)e(plate,)j(the)427 4315 y(fo)s(cal)30 b(length\),)h(the)f
+(follo)m(wing)f(DISCO)h(v)-5 b(alues)29 b(apply:)p 912
+4447 1243 4 v 910 4560 4 113 v 962 4526 a(Geometry)p
+1684 4560 V 423 w(DISCO)p 2153 4560 V 912 4563 1243 4
+v 912 4580 V 910 4693 4 113 v 962 4659 a(astrograph)p
+1684 4693 V 475 w(0.0)p 2153 4693 V 912 4696 1243 4 v
+910 4809 4 113 v 962 4775 a(Sc)m(hmidt)p 1684 4809 V
+470 w Fo(\000)p FD(0.3333)p 2153 4809 V 912 4812 1243
+4 v 910 4925 4 113 v 962 4892 a(AA)-8 b(T)31 b(PF)f(doublet)p
+1684 4925 V 99 w(+147.069)p 2153 4925 V 912 4929 1243
+4 v 910 5042 4 113 v 962 5008 a(AA)-8 b(T)31 b(PF)f(triplet)p
+1684 5042 V 149 w(+178.585)p 2153 5042 V 912 5045 1243
+4 v 910 5158 4 113 v 962 5124 a(AA)-8 b(T)31 b(f/8)p
+1684 5158 V 476 w(+21.20)p 2153 5158 V 912 5161 1243
+4 v 910 5274 4 113 v 962 5240 a(JKT)e(f/8)p 1684 5274
+V 511 w(+14.6)p 2153 5274 V 912 5277 1243 4 v 311 5467
+a(4.)46 b(The)40 b(presen)m(t)h(routine)e(is)h(a)h(rigorous)e(in)m(v)m
+(erse)i(of)f(the)h(companion)f(routine)f(sla)p Ft(_)p
+FD(PCD.)h(The)427 5580 y(expression)c(for)h Fl(\032)g
+FD(in)f(Note)j(1)f(is)e(rewritten)g(in)g(the)h(form)g
+Fl(x)2574 5547 y Fu(3)2638 5580 y FD(+)25 b Fl(ax)g FD(+)f
+Fl(b)37 b FD(=)f(0)i(and)e(solv)m(ed)i(b)m(y)427 5693
+y(standard)30 b(tec)m(hniques.)p eop
+%%Page: 167 169
+167 168 bop 0 52 a Fw(SUN/67.70)3206 b FD(167)311 351
+y(5.)46 b(Cases)29 b(where)e(the)i(cubic)e(has)h(m)m(ultiple)d(real)j
+(ro)s(ots)g(can)h(sometimes)f(o)s(ccur,)h(corresp)s(onding)d(to)427
+464 y(extreme)31 b(instances)f(of)g(barrel)e(distortion)h(where)g(up)g
+(to)i(three)f(di\013eren)m(t)f(undistorted)g([)15 b Fl(x;)g(y)j
+FD(]s)427 577 y(all)25 b(pro)s(duce)f(the)i(same)g(distorted)f([)15
+b Fl(x;)g(y)k FD(].)39 b(Ho)m(w)m(ev)m(er,)29 b(only)c(one)h(solution)e
+(is)h(returned,)g(the)h(one)427 690 y(that)31 b(pro)s(duces)e(the)i
+(smallest)e(c)m(hange)j(in)d([)15 b Fl(x;)g(y)k FD(].)p
+0 839 3780 8 v 0 952 a Fx(SLA)p Fn(_)p Fx(V2TP)304 b
+Fm(Direction)37 b(Cosines)h(to)g(T)-10 b(angen)m(t)37
+b(Plane)305 b Fx(SLA)p Fn(_)p Fx(V2TP)0 1302 y FB(A)m(CTION)44
+b FD(:)39 b(Giv)m(en)27 b(the)g(direction)f(cosines)h(of)g(a)h(star)f
+(and)g(of)g(the)h(tangen)m(t)g(p)s(oin)m(t,)f(determine)g(the)g(star's)
+227 1415 y(tangen)m(t-plane)32 b(co)s(ordinates)e(\(single)f
+(precision\).)0 1603 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_V2TP)g(\(V,)h(V0,)g(XI,)g(ETA,)f(J\))0 1970 y FB(GIVEN)f
+FD(:)277 2116 y Fq(V)668 b FB(R\(3\))433 b FD(direction)29
+b(cosines)h(of)h(star)277 2229 y Fq(V0)622 b FB(R\(3\))433
+b FD(direction)29 b(cosines)h(of)h(tangen)m(t)h(p)s(oin)m(t)0
+2611 y FB(RETURNED)46 b FD(:)277 2757 y Fq(XI,ET)-7 b(A)417
+b FB(R)567 b FD(tangen)m(t)32 b(plane)d(co)s(ordinates)h(\(radians\))
+277 2870 y Fq(J)688 b FB(I)605 b FD(status:)1825 2983
+y(0)31 b(=)f(OK,)g(star)g(on)g(tangen)m(t)i(plane)1825
+3096 y(1)f(=)f(error,)g(star)g(to)s(o)h(far)g(from)f(axis)1825
+3209 y(2)h(=)f(error,)g(an)m(tistar)g(on)h(tangen)m(t)h(plane)1825
+3322 y(3)f(=)f(error,)g(an)m(tistar)g(to)s(o)i(far)e(from)g(axis)0
+3704 y FB(NOTES)44 b FD(:)311 3903 y(1.)i(If)32 b(v)m(ector)h(V0)f(is)f
+(not)h(of)g(unit)e(length,)i(or)f(if)g(v)m(ector)i(V)f(is)f(of)h(zero)g
+(length,)g(the)g(results)e(will)f(b)s(e)427 4016 y(wrong.)311
+4168 y(2.)46 b(If)35 b(V0)i(p)s(oin)m(ts)d(at)i(a)g(p)s(ole,)h(the)e
+(returned)g Fl(\030)t(;)15 b(\021)39 b FD(will)33 b(b)s(e)i(based)g(on)
+h(the)g(arbitrary)e(assumption)427 4281 y(that)d Fl(\013)26
+b FD(=)f(0)31 b(at)g(the)f(tangen)m(t)i(p)s(oin)m(t.)311
+4433 y(3.)46 b(The)24 b(pro)5 b(jection)25 b(is)f(called)f(the)i
+Fq(gnomonic)31 b FD(pro)5 b(jection;)27 b(the)d(Cartesian)h(co)s
+(ordinates)f([)15 b Fl(\030)t(;)g(\021)k FD(])25 b(are)427
+4546 y(called)30 b Fq(standar)-5 b(d)37 b(c)-5 b(o)g(or)g(dinates.)45
+b FD(The)30 b(latter)i(are)f(in)f(units)f(of)i(the)h(distance)e(from)h
+(the)g(tangen)m(t)427 4659 y(plane)f(to)h(the)f(pro)5
+b(jection)30 b(p)s(oin)m(t,)g Fq(i.e.)g FD(radians)f(near)h(the)h
+(origin.)311 4811 y(4.)46 b(This)29 b(routine)g(is)h(the)g(Cartesian)g
+(equiv)-5 b(alen)m(t)30 b(of)g(the)h(routine)e(sla)p
+Ft(_)p FD(S2TP)-8 b(.)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p
+Fx(VD)l(V)884 b Fm(Scalar)37 b(Pro)s(duct)884 b Fx(SLA)p
+Fn(_)p Fx(VD)l(V)0 5418 y FB(A)m(CTION)44 b FD(:)c(Scalar)30
+b(pro)s(duct)g(of)g(t)m(w)m(o)i(3-v)m(ectors)g(\(single)e(precision\).)
+0 5606 y FB(CALL)45 b FD(:)77 b Ft(R)47 b(=)h(sla_VDV)d(\(VA,)i(VB\))p
+eop
+%%Page: 168 170
+168 169 bop 0 52 a FD(168)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(V)-9 b(A)609 b FB(R\(3\))433 b FD(\014rst)30
+b(v)m(ector)277 610 y Fq(VB)604 b FB(R\(3\))433 b FD(second)31
+b(v)m(ector)0 880 y FB(RETURNED)46 b FD(:)277 1052 y
+Fq(sla)p Ft(_)p Fq(VD)n(V)379 b FB(R)567 b FD(scalar)30
+b(pro)s(duct)g(V)-10 b(A.VB)p 0 1164 3780 8 v 0 1277
+a Fx(SLA)p Fn(_)p Fx(VN)919 b Fm(Normalize)35 b(V)-10
+b(ector)919 b Fx(SLA)p Fn(_)p Fx(VN)0 1628 y FB(A)m(CTION)44
+b FD(:)c(Normalize)31 b(a)f(3-v)m(ector,)j(also)e(giving)e(the)h(mo)s
+(dulus)e(\(single)h(precision\).)0 1815 y FB(CALL)45
+b FD(:)77 b Ft(CALL)46 b(sla_VN)g(\(V,)h(UV,)g(VM\))0
+2117 y FB(GIVEN)e FD(:)277 2289 y Fq(V)668 b FB(R\(3\))433
+b FD(v)m(ector)0 2567 y FB(RETURNED)46 b FD(:)277 2713
+y Fq(UV)600 b FB(R\(3\))433 b FD(unit)29 b(v)m(ector)j(in)d(direction)g
+(of)i(V)277 2826 y Fq(VM)586 b FB(R)567 b FD(mo)s(dulus)28
+b(of)i(V)0 3096 y FB(NOTE)44 b FD(:)d(If)30 b(the)g(mo)s(dulus)e(of)j
+(V)f(is)f(zero,)j(UV)f(is)e(set)i(to)g(zero)g(as)g(w)m(ell.)p
+0 3193 V 0 3306 a Fx(SLA)p Fn(_)p Fx(VXV)871 b Fm(V)-10
+b(ector)38 b(Pro)s(duct)872 b Fx(SLA)p Fn(_)p Fx(VXV)0
+3656 y FB(A)m(CTION)44 b FD(:)c(V)-8 b(ector)33 b(pro)s(duct)c(of)h(t)m
+(w)m(o)i(3-v)m(ectors)h(\(single)c(precision\).)0 3844
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_VXV)g(\(VA,)h(VB,)g(VC\))0
+4146 y FB(GIVEN)e FD(:)277 4292 y Fq(V)-9 b(A)609 b FB(R\(3\))433
+b FD(\014rst)30 b(v)m(ector)277 4405 y Fq(VB)604 b FB(R\(3\))433
+b FD(second)31 b(v)m(ector)0 4674 y FB(RETURNED)46 b
+FD(:)277 4846 y Fq(V)n(C)605 b FB(R\(3\))433 b FD(v)m(ector)32
+b(pro)s(duct)d(V)-10 b(A)p Fo(\002)p FD(VB)p 0 4959 V
+0 5072 a Fx(SLA)p Fn(_)p Fx(W)-15 b(AIT)901 b Fm(Time)37
+b(Dela)m(y)903 b Fx(SLA)p Fn(_)p Fx(W)-15 b(AIT)0 5422
+y FB(A)m(CTION)44 b FD(:)c(W)-8 b(ait)32 b(for)e(a)h(sp)s(eci\014ed)d
+(in)m(terv)-5 b(al.)0 5610 y FB(CALL)45 b FD(:)77 b Ft(CALL)46
+b(sla_WAIT)g(\(DELAY\))p eop
+%%Page: 169 171
+169 170 bop 0 52 a Fw(SUN/67.70)3206 b FD(169)0 351 y
+FB(GIVEN)45 b FD(:)277 523 y Fq(DELA)-7 b(Y)419 b FB(R)567
+b FD(dela)m(y)31 b(in)e(seconds)0 907 y FB(NOTES)44 b
+FD(:)311 1104 y(1.)i(The)30 b(implemen)m(tation)f(is)h(mac)m(hine-sp)s
+(eci\014c.)311 1254 y(2.)46 b(The)d(dela)m(y)h(actually)f(requested)h
+(is)e(restricted)i(to)g(the)g(range)g(100ns-200s)h(in)e(the)g(presen)m
+(t)427 1367 y(implemen)m(tation.)311 1518 y(3.)j(There)20
+b(is)g(no)g(guaran)m(tee)i(of)f(accuracy)-8 b(,)24 b(though)d(on)f
+(almost)h(all)e(t)m(yp)s(es)i(of)f(computer)h(the)g(program)427
+1631 y(will)28 b(certainly)i(not)g(resume)g(execution)h
+Fq(b)-5 b(efor)g(e)37 b FD(the)31 b(stated)g(in)m(terv)-5
+b(al)30 b(has)g(elapsed.)p 0 1772 3780 8 v 0 1885 a Fx(SLA)p
+Fn(_)p Fx(XY2XY)262 b Fm(Apply)38 b(Linear)g(Mo)s(del)h(to)f(an)g([)20
+b Fg(x;)g(y)j Fm(])264 b Fx(SLA)p Fn(_)p Fx(XY2XY)0 2235
+y FB(A)m(CTION)44 b FD(:)50 b(T)-8 b(ransform)35 b(one)g([)15
+b Fl(x;)g(y)k FD(])35 b(in)m(to)h(another)f(using)f(a)i(linear)d(mo)s
+(del)i(of)g(the)g(t)m(yp)s(e)h(pro)s(duced)e(b)m(y)227
+2348 y(the)d(sla)p Ft(_)p FD(FITXY)f(routine.)0 2536
+y FB(CALL)45 b FD(:)77 b Ft(CALL)46 b(sla_XY2XY)g(\(X1,)g(Y1,)h
+(COEFFS,)f(X2,)h(Y2\))0 2899 y FB(GIVEN)e FD(:)277 3045
+y Fq(X1,Y1)480 b FB(D)565 b FD([)15 b Fl(x;)g(y)k FD(])30
+b(b)s(efore)g(transformation)277 3158 y Fq(COEFFS)370
+b FB(D\(6\))431 b FD(transformation)30 b(co)s(e\016cien)m(ts)h(\(see)g
+(note\))0 3534 y FB(RETURNED)46 b FD(:)277 3705 y Fq(X2,Y2)480
+b FB(D)565 b FD([)15 b Fl(x;)g(y)k FD(])30 b(after)h(transformation)0
+4090 y FB(NOTES)44 b FD(:)311 4286 y(1.)i(The)30 b(mo)s(del)f(relates)h
+(t)m(w)m(o)h(sets)g(of)f([)15 b Fl(x;)g(y)k FD(])30 b(co)s(ordinates)f
+(as)i(follo)m(ws.)39 b(Naming)30 b(the)g(six)f(elemen)m(ts)427
+4399 y(of)i(COEFFS)f Fl(a;)15 b(b;)g(c;)g(d;)g(e)33 b
+FD(&)d Fl(f)10 b FD(,)29 b(the)i(presen)m(t)f(routine)g(p)s(erforms)f
+(the)h(transformation:)597 4550 y Fl(x)649 4564 y Fu(2)714
+4550 y FD(=)25 b Fl(a)20 b FD(+)g Fl(bx)1060 4564 y Fu(1)1120
+4550 y FD(+)g Fl(cy)1295 4564 y Fu(1)597 4663 y Fl(y)642
+4677 y Fu(2)707 4663 y FD(=)k Fl(d)d FD(+)f Fl(ex)1055
+4677 y Fu(1)1115 4663 y FD(+)g Fl(f)10 b(y)1306 4677
+y Fu(1)311 4813 y FD(2.)46 b(See)31 b(also)f(sla)p Ft(_)p
+FD(FITXY,)g(sla)p Ft(_)p FD(PXY,)g(sla)p Ft(_)p FD(INVF,)h(sla)p
+Ft(_)p FD(DCMPF.)p 0 4955 V 0 5068 a Fx(SLA)p Fn(_)p
+Fx(ZD)800 b Fg(h;)20 b(\016)43 b Fm(to)38 b(Zenith)g(Distance)800
+b Fx(SLA)p Fn(_)p Fx(ZD)0 5418 y FB(A)m(CTION)44 b FD(:)c(Hour)31
+b(angle)f(and)g(declination)e(to)j(zenith)f(distance)g(\(double)f
+(precision\).)0 5606 y FB(CALL)45 b FD(:)77 b Ft(D)47
+b(=)h(sla_ZD)e(\(HA,)g(DEC,)h(PHI\))p eop
+%%Page: 170 172
+170 171 bop 0 52 a FD(170)0 351 y FB(GIVEN)45 b FD(:)277
+497 y Fq(HA)600 b FB(D)565 b FD(hour)30 b(angle)g(in)f(radians)277
+610 y Fq(DEC)540 b FB(D)565 b FD(declination)29 b(in)g(radians)277
+723 y Fq(PHI)571 b FB(D)565 b FD(latitude)30 b(in)f(radians)0
+1077 y FB(RETURNED)46 b FD(:)277 1248 y Fq(sla)p Ft(_)p
+Fq(ZD)457 b FB(D)565 b FD(zenith)30 b(distance)g(\(radians,)f(0)5
+b Fo(\000)g Fl(\031)s FD(\))0 1610 y FB(NOTES)44 b FD(:)311
+1798 y(1.)i(The)32 b(latitude)f(m)m(ust)i(b)s(e)e(geo)s(detic.)48
+b(In)31 b(critical)h(applications,)f(corrections)i(for)f(p)s(olar)f
+(motion)427 1911 y(should)e(b)s(e)g(applied)g(\(see)i(sla)p
+Ft(_)p FD(POLMO\).)311 2057 y(2.)46 b(In)36 b(some)h(applications)e(it)
+i(will)d(b)s(e)i(imp)s(ortan)m(t)g(to)h(sp)s(ecify)f(the)h(correct)h(t)
+m(yp)s(e)f(of)g(hour)e(angle)427 2170 y(and)e(declination)f(in)h(order)
+g(to)h(pro)s(duce)f(the)h(required)e(t)m(yp)s(e)h(of)h(zenith)f
+(distance.)51 b(In)33 b(partic-)427 2283 y(ular,)h(it)g(ma)m(y)h(b)s(e)
+e(imp)s(ortan)m(t)g(to)i(distinguish)30 b(b)s(et)m(w)m(een)35
+b(the)f(zenith)g(distance)g(as)g(a\013ected)i(b)m(y)427
+2396 y(refraction,)28 b(whic)m(h)e(w)m(ould)f(require)h(the)h
+Fq(observe)-5 b(d)38 b FD([)15 b Fl(h;)g(\016)20 b FD(],)28
+b(and)e(the)i(zenith)e(distance)h Fq(in)i(vacuo)p FD(,)427
+2509 y(whic)m(h)e(w)m(ould)g(require)g(the)i Fq(top)-5
+b(o)g(c)g(entric)36 b FD([)15 b Fl(h;)g(\016)20 b FD(].)40
+b(If)28 b(the)h(e\013ects)g(of)g(diurnal)c(ab)s(erration)i(can)i(b)s(e)
+427 2622 y(neglected,)j(the)e Fq(app)-5 b(ar)g(ent)42
+b FD([)15 b Fl(h;)g(\016)20 b FD(])31 b(ma)m(y)g(b)s(e)e(used)h
+(instead)g(of)g(the)h Fq(top)-5 b(o)g(c)g(entric)38 b
+FD([)15 b Fl(h;)g(\016)20 b FD(].)311 2768 y(3.)46 b(No)31
+b(range)g(c)m(hec)m(king)g(of)g(argumen)m(ts)f(is)g(done.)311
+2914 y(4.)46 b(In)33 b(applications)e(whic)m(h)h(in)m(v)m(olv)m(e)i
+(man)m(y)f(zenith)g(distance)g(calculations,)g(rather)g(than)g(calling)
+427 3027 y(the)44 b(presen)m(t)f(routine)f(it)g(will)f(b)s(e)h(more)h
+(e\016cien)m(t)h(to)g(use)e(inline)e(co)s(de,)47 b(ha)m(ving)c
+(previously)427 3140 y(computed)26 b(\014xed)f(terms)g(suc)m(h)g(as)h
+(sine)f(and)g(cosine)g(of)h(latitude,)f(and)g(p)s(erhaps)f(sine)h(and)g
+(cosine)427 3253 y(of)31 b(declination.)p eop
+%%Page: 171 173
+171 172 bop 0 52 a Fw(SUN/67.70)3206 b FD(171)0 351 y
+Fx(4)135 b(EXPLANA)-11 b(TION)43 b(AND)i(EXAMPLES)0 606
+y FD(T)-8 b(o)38 b(guide)f(the)h(writer)f(of)h(p)s(ositional-astronom)m
+(y)e(applications)g(soft)m(w)m(are,)42 b(this)36 b(\014nal)h(c)m
+(hapter)h(puts)f(the)0 719 y(SLALIB)22 b(routines)g(in)m(to)g(the)h
+(con)m(text)i(of)d(astronomical)h(phenomena)f(and)g(tec)m(hniques,)i
+(and)e(presen)m(ts)h(a)g(few)0 832 y(\\co)s(okb)s(o)s(ok")28
+b(examples)f(of)h(the)g(SLALIB)e(calls)h(in)f(action.)40
+b(The)27 b(astronomical)g(con)m(ten)m(t)i(of)f(the)f(c)m(hapter)h(is)0
+945 y(not,)g(of)f(course,)h(in)m(tended)e(to)i(b)s(e)e(a)h(substitute)f
+(for)h(sp)s(ecialist)e(text-b)s(o)s(oks)i(on)g(p)s(ositional)e
+(astronom)m(y)-8 b(,)29 b(but)0 1058 y(ma)m(y)37 b(help)e(bridge)g(the)
+i(gap)g(b)s(et)m(w)m(een)g(suc)m(h)f(b)s(o)s(oks)g(and)f(the)i(SLALIB)f
+(routines.)58 b(F)-8 b(or)37 b(further)e(reading,)0 1171
+y(the)c(follo)m(wing)d(co)m(v)m(er)33 b(a)d(wide)f(range)i(of)g
+(material)e(and)h(st)m(yles:)136 1412 y Fo(\017)46 b
+Fq(Explanatory)32 b(Supplement)d(to)h(the)f(Astr)-5 b(onomic)g(al)31
+b(A)n(lmanac)p FD(,)d(ed.)e(P)-8 b(.)16 b(Kenneth)25
+b(Seidelmann)f(\(1992\),)227 1525 y(Univ)m(ersit)m(y)30
+b(Science)g(Bo)s(oks.)136 1715 y Fo(\017)46 b Fq(V)-7
+b(e)i(ctorial)34 b(Astr)-5 b(ometry)p FD(,)32 b(C.)16
+b(A.)f(Murra)m(y)30 b(\(1983\),)j(Adam)e(Hilger.)136
+1906 y Fo(\017)46 b Fq(Spheric)-5 b(al)35 b(Astr)-5 b(onomy)p
+FD(,)32 b(Robin)d(M.)16 b(Green)31 b(\(1985\),)i(Cam)m(bridge)c(Univ)m
+(ersit)m(y)h(Press.)136 2096 y Fo(\017)46 b Fq(Sp)-5
+b(ac)g(e)g(cr)g(aft)36 b(A)n(ttitude)c(Determination)i(and)f(Contr)-5
+b(ol)p FD(,)33 b(ed.)d(James)h(R.)15 b(W)-8 b(ertz)32
+b(\(1986\),)h(Reidel.)136 2287 y Fo(\017)46 b Fq(Pr)-5
+b(actic)g(al)41 b(Astr)-5 b(onomy)41 b(with)f(your)g(Calculator)p
+FD(,)i(P)m(eter)c(Du\013ett-Smith)g(\(1981\),)k(Cam)m(bridge)36
+b(Uni-)227 2400 y(v)m(ersit)m(y)31 b(Press.)0 2641 y(Also)f(of)h
+(considerable)d(v)-5 b(alue,)31 b(though)f(out)g(of)h(date)g(in)e
+(places,)h(are:)136 2882 y Fo(\017)46 b Fq(Explanatory)31
+b(Supplement)f(to)f(the)f(Astr)-5 b(onomic)g(al)31 b(Ephemeris)f(and)f
+(the)g(A)n(meric)-5 b(an)28 b(Ephemeris)h(and)227 2995
+y(Nautic)-5 b(al)34 b(A)n(lmanac)p FD(,)d(R)m(GO/USNO)g(\(1974\),)i
+(HMSO.)136 3185 y Fo(\017)46 b Fq(T)-7 b(extb)i(o)g(ok)34
+b(on)f(Spheric)-5 b(al)35 b(Astr)-5 b(onomy)p FD(,)33
+b(W.)15 b(M.)h(Smart)30 b(\(1977\),)j(Cam)m(bridge)d(Univ)m(ersit)m(y)f
+(Press.)0 3426 y(Only)i(brief)h(details)g(of)h(individual)28
+b(SLALIB)33 b(routines)f(are)h(giv)m(en)g(here,)h(and)e(readers)h(will)
+d(\014nd)i(it)g(useful)0 3539 y(to)i(refer)g(to)g(the)g(subprogram)e
+(sp)s(eci\014cations)h(elsewhere)g(in)f(this)h(do)s(cumen)m(t.)50
+b(The)33 b(source)h(co)s(de)g(for)f(the)0 3652 y(SLALIB)22
+b(routines)g(\(a)m(v)-5 b(ailable)23 b(in)e(b)s(oth)h(F)-8
+b(ortran)24 b(and)e(C\))h(is)f(also)h(in)m(tended)e(to)j(b)s(e)e(used)g
+(as)h(do)s(cumen)m(tation.)0 3950 y Fv(4.1)112 b(Spherical)37
+b(T)-9 b(rigonometry)0 4174 y FD(Celestial)41 b(phenomena)h(o)s(ccur)g
+(at)h(suc)m(h)f(v)-5 b(ast)43 b(distances)f(from)g(the)g(observ)m(er)h
+(that)g(for)f(most)h(practical)0 4287 y(purp)s(oses)35
+b(there)i(is)f(no)h(need)f(to)i(w)m(ork)f(in)e(3D;)j(only)e(the)h
+(direction)e(of)i(a)g(source)g(matters,)j(not)d(ho)m(w)g(far)0
+4400 y(a)m(w)m(a)m(y)27 b(it)d(is.)38 b(Things)23 b(can)i(therefore)h
+(b)s(e)e(view)m(ed)g(as)i(if)d(they)i(w)m(ere)h(happ)s(ening)c(on)j
+(the)g(inside)e(of)i(sphere)f(with)0 4513 y(the)32 b(observ)m(er)g(at)h
+(the)f(cen)m(tre)g({)h(the)f Fq(c)-5 b(elestial)34 b(spher)-5
+b(e)p FD(.)47 b(Problems)30 b(in)m(v)m(olving)h(p)s(ositions)e(and)j
+(orien)m(tations)0 4626 y(in)g(the)i(sky)f(can)h(then)f(b)s(e)g(solv)m
+(ed)g(b)m(y)h(using)e(the)i(form)m(ulae)f(of)g Fq(spheric)-5
+b(al)38 b(trigonometry)p FD(,)e(whic)m(h)d(apply)f(to)0
+4738 y Fq(spheric)-5 b(al)35 b(triangles)p FD(,)c(the)g(sides)e(of)h
+(whic)m(h)f(are)i Fq(gr)-5 b(e)g(at)34 b(cir)-5 b(cles)p
+FD(.)0 4903 y(P)m(ositions)29 b(on)h(the)g(celestial)g(sphere)f(ma)m(y)
+i(b)s(e)e(sp)s(eci\014ed)f(b)m(y)i(using)f(a)h(spherical)e(p)s(olar)h
+(co)s(ordinate)h(system,)0 5016 y(de\014ned)k(in)g(terms)i(of)g(some)f
+(fundamen)m(tal)g(plane)f(and)h(a)h(line)e(in)g(that)i(plane)f(c)m
+(hosen)h(to)g(represen)m(t)g(zero)0 5128 y(longitude.)54
+b(Mathematicians)35 b(usually)e(w)m(ork)i(with)f(the)h(co-latitude,)i
+(with)d(zero)i(at)g(the)f(principal)d(p)s(ole,)0 5241
+y(whereas)g(most)g(astronomical)g(co)s(ordinate)f(systems)h(use)g
+(latitude,)f(rec)m(k)m(oned)i(plus)d(and)i(min)m(us)e(from)h(the)0
+5354 y(equator.)81 b(Astronomical)43 b(co)s(ordinate)g(systems)h(ma)m
+(y)g(b)s(e)f(either)g(righ)m(t-handed)f(\()p Fq(e.g.)i
+FD(righ)m(t)f(ascension)0 5467 y(and)29 b(declination)f([)15
+b Fl(\013;)g(\016)20 b FD(],)30 b(Galactic)g(longitude)f(and)f
+(latitude)h([)15 b Fl(l)2257 5434 y Ff(I)-7 b(I)2321
+5467 y Fl(;)15 b(b)2400 5434 y Ff(I)-7 b(I)2480 5467
+y FD(]\))30 b(or)f(left-handed)g(\()p Fq(e.g.)g FD(hour)f(angle)0
+5580 y(and)44 b(declination)g([)15 b Fl(h;)g(\016)20
+b FD(]\).)85 b(In)44 b(some)i(cases)g(di\013eren)m(t)e(con)m(v)m(en)m
+(tions)i(ha)m(v)m(e)h(b)s(een)d(used)g(in)g(the)h(past,)k(a)0
+5693 y(fruitful)30 b(source)j(of)g(mistak)m(es.)49 b(Azim)m(uth)33
+b(and)f(geographical)h(longitude)f(are)i(examples;)g(azim)m(uth)e(is)g
+(no)m(w)p eop
+%%Page: 172 174
+172 173 bop 0 52 a FD(172)0 351 y(generally)36 b(rec)m(k)m(oned)j
+(north)d(through)h(east)h(\(making)f(a)h(left-handed)e(system\);)41
+b(geographical)d(longitude)0 464 y(is)g(no)m(w)i(usually)d(tak)m(en)j
+(to)g(increase)g(east)m(w)m(ards)g(\(a)g(righ)m(t-handed)e(system\))i
+(but)f(astronomers)g(used)g(to)0 577 y(emplo)m(y)f(a)i(w)m(est-p)s
+(ositiv)m(e)e(con)m(v)m(en)m(tion.)67 b(In)38 b(rep)s(orts)g(and)g
+(program)h(commen)m(ts)g(it)g(is)e(wise)h(to)i(sp)s(ell)c(out)0
+690 y(what)30 b(con)m(v)m(en)m(tion)i(is)d(b)s(eing)g(used,)h(if)f
+(there)i(is)e(an)m(y)i(p)s(ossibilit)m(y)c(of)j(confusion.)0
+843 y(When)e(applying)e(spherical)h(trigonometry)h(form)m(ulae,)h
+(atten)m(tion)g(m)m(ust)f(b)s(e)g(paid)f(to)i(rounding)d(errors)h
+(\(for)0 956 y(example)43 b(it)f(is)g(a)i(bad)e(idea)h(to)h(\014nd)d(a)
+j(small)d(angle)i(through)g(its)f(cosine\))h(and)g(to)h(the)f(p)s
+(ossibilit)m(y)c(of)0 1069 y(problems)30 b(close)i(to)g(p)s(oles.)43
+b(Also,)32 b(if)e(a)i(form)m(ulation)e(relies)g(on)i(insp)s(ection)d
+(to)j(establish)e(the)i(quadran)m(t)f(of)0 1181 y(the)g(result,)e(it)h
+(is)f(an)i(indication)d(that)j(a)g(v)m(ector-related)h(metho)s(d)e
+(migh)m(t)g(b)s(e)g(preferable.)0 1334 y(As)c(w)m(ell)f(as)i(pro)m
+(viding)d(man)m(y)i(routines)f(whic)m(h)g(w)m(ork)i(in)e(terms)h(of)g
+(sp)s(eci\014c)f(spherical)f(co)s(ordinates)i(suc)m(h)g(as)0
+1447 y([)15 b Fl(\013;)g(\016)20 b FD(],)37 b(SLALIB)d(pro)m(vides)g(t)
+m(w)m(o)i(routines)e(whic)m(h)g(op)s(erate)h(directly)f(on)h(generic)f
+(spherical)f(co)s(ordinates:)0 1560 y(sla)p Ft(_)p FD(SEP)k(computes)i
+(the)g(separation)f(b)s(et)m(w)m(een)h(t)m(w)m(o)h(p)s(oin)m(ts)e
+(\(the)h(distance)f(along)h(a)g(great)h(circle\))e(and)0
+1673 y(sla)p Ft(_)p FD(BEAR)j(computes)h(the)g(b)s(earing)f(\(or)h
+Fq(p)-5 b(osition)45 b(angle)p FD(\))e(of)f(one)g(p)s(oin)m(t)e(seen)i
+(from)g(the)g(other.)75 b(The)0 1786 y(routines)21 b(sla)p
+Ft(_)p FD(DSEP)h(and)f(sla)p Ft(_)p FD(DBEAR)i(are)g(double)e
+(precision)f(equiv)-5 b(alen)m(ts.)38 b(As)22 b(a)h(simple)d
+(demonstration)0 1899 y(of)29 b(SLALIB,)g(w)m(e)g(will)d(use)j(these)g
+(facilities)e(to)j(estimate)g(the)f(distance)f(from)h(London)f(to)h
+(Sydney)f(and)g(the)0 2012 y(initial)g(compass)i(heading:)573
+2234 y Ft(IMPLICIT)45 b(NONE)286 2460 y(*)96 b(Degrees)45
+b(to)j(radians)573 2573 y(REAL)e(D2R)573 2686 y(PARAMETER)f
+(\(D2R=0.01745329252\))286 2912 y(*)96 b(Longitudes)45
+b(and)h(latitudes)g(\(radians\))f(for)i(London)f(and)h(Sydney)573
+3025 y(REAL)f(AL,BL,AS,BS)573 3137 y(PARAMETER)f
+(\(AL=-0.2*D2R,BL=51.5*D2R)o(,AS=)o(151.)o(2*D)o(2R,B)o(S=-3)o(3.9)o
+(*D2R)o(\))286 3363 y(*)96 b(Earth)46 b(radius)g(in)h(km)g(\(spherical)
+e(approximation\))573 3476 y(REAL)h(RKM)573 3589 y(PARAMETER)f
+(\(RKM=6375.0\))573 3815 y(REAL)h(sla_SEP,sla_BEAR)286
+4154 y(*)96 b(Distance)45 b(and)i(initial)f(heading)g(\(N=0,)g(E=90\))
+573 4267 y(WRITE)g(\(*,'\(1X,I5,'')e(km,'',I4,'')h(deg''\)'\))525
+4379 y(:)191 b(NINT\(sla_SEP\(AL,BL,AS,B)o(S\)*R)o(KM\))o(,NIN)o(T\(sl)
+o(a_B)o(EAR\()o(AL,B)o(L,A)o(S,BS)o(\)/D2)o(R\))573 4605
+y(END)0 4828 y FD(\(The)30 b(result)g(is)f(17011)j(km,)f(61)1094
+4795 y Fp(\016)1134 4828 y FD(.\))0 4980 y(The)23 b(routines)f(sla)p
+Ft(_)p FD(SEPV,)g(sla)p Ft(_)p FD(DSEPV,)h(sla)p Ft(_)p
+FD(P)-8 b(A)e(V,)23 b(sla)p Ft(_)p FD(DP)-8 b(A)e(V)24
+b(are)f(equiv)-5 b(alen)m(ts)23 b(of)g(sla)p Ft(_)p FD(SEP)-8
+b(,)23 b(sla)p Ft(_)p FD(DSEP)-8 b(,)0 5093 y(sla)p Ft(_)p
+FD(BEAR)30 b(and)g(sla)p Ft(_)p FD(DBEAR)g(but)g(starting)g(from)g(v)m
+(ectors)i(instead)d(of)i(spherical)d(co)s(ordinates.)0
+5369 y FB(4.1.1)105 b(F)-9 b(ormatting)34 b(angles)0
+5580 y FD(SLALIB)28 b(has)g(routines)g(for)g(deco)s(ding)g(decimal)f(n)
+m(um)m(b)s(ers)g(from)h(c)m(haracter)j(form)d(and)g(for)g(con)m(v)m
+(erting)h(an-)0 5693 y(gles)e(to)h(and)e(from)g(sexagesimal)h(form)g
+(\(hours,)g(min)m(utes,)g(seconds)g(or)g(degrees,)h(arcmin)m(utes,)f
+(arcseconds\).)p eop
+%%Page: 173 175
+173 174 bop 0 52 a Fw(SUN/67.70)3206 b FD(173)0 351 y(These)33
+b(apparen)m(tly)g(straigh)m(tforw)m(ard)h(op)s(erations)e(con)m(tain)i
+(hidden)d(traps)j(whic)m(h)e(the)i(SLALIB)f(routines)0
+464 y(a)m(v)m(oid.)0 626 y(There)d(are)h(\014v)m(e)f(routines)f(for)h
+(deco)s(ding)g(n)m(um)m(b)s(ers)f(from)g(a)i(c)m(haracter)h(string,)e
+(suc)m(h)g(as)g(migh)m(t)g(b)s(e)g(en)m(tered)0 739 y(using)38
+b(a)i(k)m(eyb)s(oard.)67 b(They)39 b(all)f(w)m(ork)i(in)e(the)h(same)h
+(st)m(yle,)i(and)d(successiv)m(e)g(calls)g(can)h(w)m(ork)f(their)f(w)m
+(a)m(y)0 852 y(along)c(a)h(single)e(string)g(deco)s(ding)h(a)g
+(sequence)h(of)g(n)m(um)m(b)s(ers)e(of)h(assorted)h(t)m(yp)s(es.)52
+b(Num)m(b)s(er)34 b(\014elds)e(can)j(b)s(e)0 965 y(separated)c(b)m(y)f
+(spaces)h(or)f(commas,)i(and)d(can)i(b)s(e)f(defaulted)f(to)i(previous)
+e(v)-5 b(alues)30 b(or)g(to)h(preset)g(defaults.)0 1126
+y(Three)23 b(of)g(the)h(routines)e(deco)s(de)h(single)f(n)m(um)m(b)s
+(ers:)36 b(sla)p Ft(_)p FD(INTIN)22 b(\(in)m(teger\),)k(sla)p
+Ft(_)p FD(FLOTIN)c(\(single)g(precision)0 1239 y(\015oating)35
+b(p)s(oin)m(t\))g(and)g(sla)p Ft(_)p FD(DFL)-8 b(TIN)35
+b(\(double)f(precision\).)54 b(A)36 b(min)m(us)d(sign)i(can)g(b)s(e)g
+(detected)h(ev)m(en)g(when)0 1352 y(the)26 b(n)m(um)m(b)s(er)f(is)h
+(zero;)i(this)d(a)m(v)m(oids)i(the)f(frequen)m(tly-encoun)m(tered)h
+(\\min)m(us)d(zero")k(bug,)f(where)e(declinations)0 1465
+y Fq(etc.)j FD(in)f(the)h(range)h(0)719 1432 y Fp(\016)787
+1465 y FD(to)f Fo(\000)p FD(1)1011 1432 y Fp(\016)1079
+1465 y FD(m)m(ysteriously)f(migrate)h(to)h(the)g(range)f(0)2491
+1432 y Fp(\016)2559 1465 y FD(to)h(+1)2784 1432 y Fp(\016)2824
+1465 y FD(.)40 b(Here)28 b(is)f(an)i(example)e(\(in)0
+1578 y(F)-8 b(ortran\))30 b(where)f(w)m(e)h(wish)d(to)j(read)g(t)m(w)m
+(o)g(n)m(um)m(b)s(ers,)f(an)g(in)m(teger)h Ft(IX)e FD(and)h(a)h(real,)f
+Ft(Y)p FD(,)g(with)f Ft(IX)h FD(defaulting)f(to)0 1691
+y(zero)j(and)f Ft(Y)g FD(defaulting)f(to)i Ft(IX)p FD(:)573
+1949 y Ft(DOUBLE)46 b(PRECISION)f(Y)573 2062 y(CHARACTER*80)f(A)573
+2175 y(INTEGER)i(IX,I,J)286 2401 y(*)96 b(Input)46 b(the)h(string)f(to)
+h(be)g(decoded)573 2514 y(READ)f(\(*,'\(A\)'\))g(A)286
+2740 y(*)96 b(Preset)46 b(IX)h(to)g(its)g(default)f(value)573
+2853 y(IX)h(=)g(0)286 3079 y(*)96 b(Point)46 b(to)h(the)g(start)f(of)i
+(the)e(string)573 3191 y(I)h(=)h(1)286 3417 y(*)96 b(Decode)46
+b(an)h(integer)573 3530 y(CALL)f(sla_INTIN\(A,I,IX,J\))573
+3643 y(IF)h(\(J.GT.1\))e(GO)j(TO)f(...)g(\(bad)f(IX\))286
+3869 y(*)96 b(Preset)46 b(Y)h(to)g(its)g(default)f(value)573
+3982 y(Y)h(=)h(DBLE\(IX\))286 4208 y(*)96 b(Decode)46
+b(a)h(double)f(precision)f(number)573 4321 y(CALL)h
+(sla_DFLTIN\(A,I,Y,J\))573 4434 y(IF)h(\(J.GT.1\))e(GO)j(TO)f(...)g
+(\(bad)f(Y\))0 4692 y FD(Tw)m(o)34 b(additional)d(routines)i(deco)s(de)
+h(a)g(3-\014eld)f(sexagesimal)h(n)m(um)m(b)s(er:)46 b(sla)p
+Ft(_)p FD(AFIN)33 b(\(degrees,)j(arcmin)m(utes,)0 4805
+y(arcseconds)e(to)g(single)d(precision)h(radians\))g(and)h(sla)p
+Ft(_)p FD(D)m(AFIN)g(\(the)h(same)g(but)e(double)g(precision\).)48
+b(They)0 4918 y(also)41 b(w)m(ork)g(using)e(other)i(units)e(suc)m(h)h
+(as)h(hours)f Fq(etc)p FD(.)h(if)e(y)m(ou)i(m)m(ultiply)d(the)j(result)
+f(b)m(y)h(the)f(appropriate)0 5031 y(factor.)i(An)30
+b(example)g(F)-8 b(ortran)31 b(program)f(whic)m(h)f(uses)h(sla)p
+Ft(_)p FD(D)m(AFIN)h(w)m(as)g(giv)m(en)f(earlier,)g(in)f(section)h
+(1.2.)0 5193 y(SLALIB)39 b(pro)m(vides)g(four)f(routines)h(for)g
+(expressing)f(an)i(angle)f(in)g(radians)f(in)g(a)i(preferred)e(range.)
+69 b(The)0 5305 y(function)30 b(sla)p Ft(_)p FD(RANGE)h(expresses)g(an)
+g(angle)h(in)e(the)h(range)h Fo(\006)p Fl(\031)s FD(;)f(sla)p
+Ft(_)p FD(RANORM)g(expresses)g(an)g(angle)h(in)0 5418
+y(the)26 b(range)g(0)11 b Fo(\000)g FD(2)p Fl(\031)s
+FD(.)40 b(The)26 b(functions)e(sla)p Ft(_)p FD(DRANGE)i(and)f(sla)p
+Ft(_)p FD(DRANRM)h(are)g(double)f(precision)f(v)m(ersions.)0
+5580 y(Sev)m(eral)41 b(routines)g(\(sla)p Ft(_)p FD(CTF2D,)h(sla)p
+Ft(_)p FD(CR2AF)f Fq(etc.)p FD(\))73 b(are)42 b(pro)m(vided)e(to)j(con)
+m(v)m(ert)g(angles)e(to)h(and)f(from)0 5693 y(sexagesimal)33
+b(form)g(\(hours,)h(min)m(ute,)f(seconds)h(or)f(degrees,)i(arcmin)m
+(utes)e(and)g(arcseconds\).)50 b(They)33 b(a)m(v)m(oid)p
+eop
+%%Page: 174 176
+174 175 bop 0 52 a FD(174)0 351 y(the)37 b(common)f(\\con)m(v)m(erting)
+i(from)e(in)m(teger)h(to)g(real)g(at)g(the)g(wrong)f(time")g(bug,)i
+(whic)m(h)d(pro)s(duces)h(angles)0 464 y(lik)m(e)30 b(24)257
+431 y Fu(h)316 464 y FD(59)406 431 y Fu(m)485 464 y FD(59)575
+431 y Fu(s)580 464 y Fl(:)p FD(999.)43 b(Here)31 b(is)e(a)i(program)f
+(whic)m(h)f(displa)m(ys)g(an)h(hour)f(angle)i(stored)f(in)f(radians:)
+573 749 y Ft(DOUBLE)46 b(PRECISION)f(HA)573 862 y(CHARACTER)g(SIGN)573
+975 y(INTEGER)h(IHMSF\(4\))573 1088 y(:)573 1201 y(CALL)g
+(sla_DR2TF\(3,HA,SIGN,IHMSF\))573 1314 y(WRITE)g
+(\(*,'\(1X,A,3I3.2,''.'',I3.)o(3\)')o(\))c(SIGN,IHMSF)0
+1748 y Fv(4.2)112 b(V)-9 b(ectors)37 b(and)h(Matrices)0
+1980 y FD(As)33 b(an)h(alternativ)m(e)g(to)g(emplo)m(ying)e(a)i
+(spherical)e(p)s(olar)g(co)s(ordinate)h(system,)i(the)e(direction)g(of)
+g(an)h(ob)5 b(ject)0 2093 y(can)36 b(b)s(e)f(de\014ned)g(in)f(terms)i
+(of)g(the)g(sum)f(of)h(an)m(y)g(three)g(v)m(ectors)i(as)e(long)f(as)h
+(they)g(are)h(di\013eren)m(t)e(and)g(not)0 2206 y(coplanar.)73
+b(In)41 b(practice,)k(three)c(v)m(ectors)i(at)f(righ)m(t)f(angles)g
+(are)h(usually)d(c)m(hosen,)45 b(forming)40 b(a)i(system)f(of)0
+2319 y Fq(Cartesian)k(c)-5 b(o)g(or)g(dinates)p FD(.)81
+b(The)42 b Fq(x)p FD(-)h(and)f Fq(y)p FD(-axes)i(lie)e(in)f(the)i
+(fundamen)m(tal)e(plane)h(\()p Fq(e.g.)h FD(the)f(equator)i(in)0
+2432 y(the)f(case)g(of)g([)15 b Fl(\013;)g(\016)20 b
+FD(]\),)46 b(with)41 b(the)i Fq(x)p FD(-axis)f(p)s(oin)m(ting)f(to)i
+(zero)g(longitude.)75 b(The)42 b Fq(z)p FD(-axis)g(is)g(normal)f(to)i
+(the)0 2545 y(fundamen)m(tal)28 b(plane)g(and)g(p)s(oin)m(ts)f(to)m(w)m
+(ards)j(p)s(ositiv)m(e)e(latitudes.)39 b(The)28 b Fq(y)p
+FD(-axis)h(can)g(lie)e(in)h(either)g(of)h(the)g(t)m(w)m(o)0
+2658 y(p)s(ossible)c(directions,)i(dep)s(ending)d(on)k(whether)e(the)i
+(co)s(ordinate)f(system)h(is)e(righ)m(t-handed)g(or)h(left-handed.)0
+2771 y(The)i(three)g(axes)h(are)g(sometimes)f(called)f(a)i
+Fq(triad)p FD(.)42 b(F)-8 b(or)30 b(most)f(applications)f(in)m(v)m
+(olving)f(arbitrarily)g(distan)m(t)0 2884 y(ob)5 b(jects)38
+b(suc)m(h)e(as)h(stars,)i(the)e(v)m(ector)i(whic)m(h)c(de\014nes)h(the)
+h(direction)f(concerned)h(is)f(constrained)g(to)h(ha)m(v)m(e)0
+2996 y(unit)d(length.)55 b(The)35 b Fq(x)p FD(-,)i Fq(y-)e
+FD(and)g Fq(z-)p FD(comp)s(onen)m(ts)g(can)g(b)s(e)g(regarded)g(as)h
+(the)f(scalar)h(\(dot\))g(pro)s(duct)e(of)i(this)0 3109
+y(v)m(ector)41 b(on)m(to)f(the)f(three)g(axes)h(of)f(the)g(triad)f(in)g
+(turn.)65 b(Because)41 b(the)e(v)m(ector)h(is)e(a)i(unit)d(v)m(ector,)
+43 b(eac)m(h)d(of)0 3222 y(the)c(three)g(dot-pro)s(ducts)f(is)g(simply)
+e(the)j(cosine)g(of)g(the)g(angle)g(b)s(et)m(w)m(een)g(the)g(unit)e(v)m
+(ector)k(and)d(the)h(axis)0 3335 y(concerned,)31 b(and)f(the)g
+Fq(x)p FD(-,)h Fq(y-)f FD(and)g Fq(z-)p FD(comp)s(onen)m(ts)g(are)h
+(sometimes)f(called)g Fq(dir)-5 b(e)g(ction)34 b(c)-5
+b(osines)p FD(.)0 3506 y(F)d(or)35 b(some)f(applications,)f(including)d
+(those)k(in)m(v)m(olving)f(ob)5 b(jects)34 b(within)d(the)j(Solar)f
+(System,)i(unit)d(v)m(ectors)0 3618 y(are)g(inappropriate,)d(and)i(it)g
+(is)f(necessary)i(to)g(use)f(v)m(ectors)i(scaled)e(in)f(length-units)g
+(suc)m(h)h(as)g(A)m(U,)i(km)e Fq(etc.)0 3731 y FD(In)25
+b(these)h(cases)h(the)f(origin)f(of)h(the)g(co)s(ordinate)f(system)h
+(ma)m(y)h(not)f(b)s(e)f(the)h(observ)m(er,)h(but)e(instead)h(migh)m(t)f
+(b)s(e)0 3844 y(the)f(Sun,)g(the)g(Solar-System)f(barycen)m(tre,)j(the)
+e(cen)m(tre)h(of)f(the)h(Earth)e Fq(etc.)38 b FD(But)24
+b(whatev)m(er)h(the)f(application,)0 3957 y(the)31 b(\014nal)e
+(direction)g(in)g(whic)m(h)g(the)h(observ)m(er)h(sees)g(the)f(ob)5
+b(ject)32 b(can)e(b)s(e)g(expressed)g(as)g(direction)f(cosines.)0
+4128 y(But)40 b(where)g(has)g(this)f(got)j(us?)69 b(Instead)40
+b(of)g(t)m(w)m(o)i(n)m(um)m(b)s(ers)d({)h(a)h(longitude)e(and)g(a)i
+(latitude)e({)i(w)m(e)f(no)m(w)0 4240 y(ha)m(v)m(e)30
+b(three)f(n)m(um)m(b)s(ers)f(to)i(lo)s(ok)e(after)i({)f(the)g
+Fq(x)p FD(-,)h Fq(y-)f FD(and)f Fq(z-)p FD(comp)s(onen)m(ts)h({)g
+(whose)g(quadratic)g(sum)f(w)m(e)h(ha)m(v)m(e)0 4353
+y(someho)m(w)36 b(to)h(con)m(triv)m(e)f(to)h(b)s(e)e(unit)m(y)-8
+b(.)56 b(And,)36 b(in)f(addition)e(to)k(this)e(apparen)m(t)g
+(redundancy)-8 b(,)36 b(most)g(p)s(eople)0 4466 y(\014nd)25
+b(it)h(harder)g(to)h(visualize)e(problems)g(in)h(terms)g(of)h([)15
+b Fl(x;)g(y)s(;)g(z)20 b FD(])27 b(than)g(in)e([)15 b
+Fl(\022)s(;)g(\036)27 b FD(].)39 b(Despite)27 b(these)g(ob)5
+b(jections,)0 4579 y(the)38 b(v)m(ector)i(approac)m(h)e(turns)f(out)h
+(to)h(ha)m(v)m(e)g(signi\014can)m(t)e(adv)-5 b(an)m(tages)40
+b(o)m(v)m(er)f(the)f(spherical)e(trigonometry)0 4692
+y(approac)m(h:)136 4949 y Fo(\017)46 b FD(V)-8 b(ector)33
+b(form)m(ulae)d(tend)g(to)i(b)s(e)e(m)m(uc)m(h)h(more)f(succinct;)h
+(one)g(v)m(ector)h(op)s(eration)f(is)e(the)i(equiv)-5
+b(alen)m(t)30 b(of)227 5061 y(strings)f(of)i(sines)e(and)h(cosines.)136
+5264 y Fo(\017)46 b FD(The)30 b(form)m(ulae)g(are)h(as)g(a)f(rule)f
+(rigorous,)h(ev)m(en)h(at)g(the)g(p)s(oles.)136 5467
+y Fo(\017)46 b FD(Accuracy)37 b(is)f(main)m(tained)f(all)g(o)m(v)m(er)i
+(the)g(celestial)e(sphere.)58 b(When)36 b(one)g(Cartesian)g(comp)s
+(onen)m(t)g(is)227 5580 y(nearly)30 b(unit)m(y)g(and)g(therefore)h
+(insensitiv)m(e)d(to)k(direction,)d(the)i(others)g(b)s(ecome)g(small)e
+(and)h(therefore)227 5693 y(more)h(precise.)p eop
+%%Page: 175 177
+175 176 bop 0 52 a Fw(SUN/67.70)3206 b FD(175)136 351
+y Fo(\017)46 b FD(F)-8 b(orm)m(ulations)24 b(usually)e(deliv)m(er)h
+(the)h(quadran)m(t)g(of)g(the)h(result)e(without)g(the)h(need)g(for)g
+(an)m(y)h(insp)s(ection)227 464 y(\(except)32 b(within)c(the)i(library)
+e(function)h(A)-8 b(T)g(AN2\).)0 731 y(A)35 b(n)m(um)m(b)s(er)f(of)i
+(imp)s(ortan)m(t)e(transformations)h(in)f(p)s(ositional)f(astronom)m(y)
+j(turn)e(out)h(to)h(b)s(e)f(nothing)f(more)0 844 y(than)h(c)m(hanges)i
+(of)f(co)s(ordinate)f(system,)i(something)e(whic)m(h)g(is)f(esp)s
+(ecially)g(con)m(v)m(enien)m(t)j(if)d(the)i(v)m(ector)h(ap-)0
+957 y(proac)m(h)30 b(is)f(used.)40 b(A)30 b(direction)f(with)g(resp)s
+(ect)h(to)h(one)f(triad)f(can)h(b)s(e)g(expressed)f(relativ)m(e)h(to)h
+(another)f(triad)0 1069 y(simply)j(b)m(y)i(m)m(ultiplying)d(the)j([)15
+b Fl(x;)g(y)s(;)g(z)21 b FD(])35 b(column)f(v)m(ector)j(b)m(y)f(the)f
+(appropriate)f(3)24 b Fo(\002)g FD(3)35 b(orthogonal)h(matrix)0
+1182 y(\(a)f(tensor)f(of)h(Rank)f(2,)i(or)e Fq(dyadic)p
+FD(\).)54 b(The)33 b(three)i(ro)m(ws)f(of)g(this)g Fq(r)-5
+b(otation)38 b(matrix)47 b FD(are)34 b(the)h(v)m(ectors)g(in)e(the)0
+1295 y(old)d(co)s(ordinate)i(system)f(of)h(the)f(three)h(new)e(axes,)j
+(and)d(the)i(transformation)f(amoun)m(ts)g(to)h(obtaining)e(the)0
+1408 y(dot-pro)s(duct)d(of)g(the)g(direction-v)m(ector)h(with)e(eac)m
+(h)i(of)g(the)f(three)h(new)e(axes.)41 b(Precession,)27
+b(n)m(utation,)h([)15 b Fl(h;)g(\016)20 b FD(])0 1521
+y(to)k([)15 b Fl(Az)t(;)g(E)5 b(l)27 b FD(],)e([)15 b
+Fl(\013;)g(\016)20 b FD(])k(to)g([)15 b Fl(l)919 1488
+y Ff(I)-7 b(I)983 1521 y Fl(;)15 b(b)1062 1488 y Ff(I)-7
+b(I)1142 1521 y FD(])23 b(and)g(so)h(on)f(are)h(t)m(ypical)f(examples)g
+(of)g(the)h(tec)m(hnique.)38 b(A)24 b(useful)d(prop)s(ert)m(y)0
+1634 y(of)31 b(the)f(rotation)h(matrices)f(is)g(that)h(they)f(can)h(b)s
+(e)f(in)m(v)m(erted)g(simply)e(b)m(y)i(taking)g(the)h(transp)s(ose.)0
+1808 y(The)i(elemen)m(ts)h(of)g(these)g(v)m(ectors)h(and)e(matrices)h
+(are)g(assorted)g(com)m(binations)f(of)g(the)h(sines)f(and)g(cosines)0
+1921 y(of)d(the)h(v)-5 b(arious)29 b(angles)h(in)m(v)m(olv)m(ed)g
+(\(hour)g(angle,)g(declination)f(and)h(so)g(on,)h(dep)s(ending)c(on)k
+(whic)m(h)e(transfor-)0 2034 y(mation)g(is)g(b)s(eing)e(applied\).)39
+b(If)29 b(y)m(ou)h(write)e(out)i(the)f(matrix)g(m)m(ultiplications)d
+(in)i(full)g(y)m(ou)h(get)i(expressions)0 2147 y(whic)m(h)c(are)h
+(essen)m(tially)f(the)h(same)g(as)g(the)h(equiv)-5 b(alen)m(t)27
+b(spherical)f(trigonometry)i(form)m(ulae.)40 b(Indeed,)27
+b(man)m(y)0 2260 y(of)38 b(the)h(standard)e(form)m(ulae)g(of)i
+(spherical)d(trigonometry)i(are)h(most)f(easily)f(deriv)m(ed)g(b)m(y)h
+(expressing)f(the)0 2373 y(problem)29 b(initially)e(in)i(terms)h(of)h
+(v)m(ectors.)0 2702 y FB(4.2.1)105 b(Using)36 b(v)m(ectors)0
+2941 y FD(SLALIB)k(pro)m(vides)f(con)m(v)m(ersions)i(b)s(et)m(w)m(een)g
+(spherical)d(and)i(v)m(ector)i(form)e(\(sla)p Ft(_)p
+FD(CS2C,)f(sla)p Ft(_)p FD(CC2S)g Fq(etc.)p FD(\),)0
+3053 y(plus)28 b(an)i(assortmen)m(t)i(of)e(standard)f(v)m(ector)j(and)e
+(matrix)f(op)s(erations)h(\(sla)p Ft(_)p FD(VD)m(V,)h(sla)p
+Ft(_)p FD(MXV)f Fq(etc.)p FD(\).)41 b(There)0 3166 y(are)j(also)g
+(routines)e(\(sla)p Ft(_)p FD(EULER)h Fq(etc.)p FD(\))81
+b(for)44 b(creating)g(a)g(rotation)g(matrix)f(from)g(three)h
+Fq(Euler)h(angles)0 3279 y FD(\(successiv)m(e)29 b(rotations)f(ab)s
+(out)g(sp)s(eci\014ed)e(Cartesian)i(axes\).)41 b(Instead)28
+b(of)g(Euler)f(angles,)h(a)h(rotation)f(matrix)0 3392
+y(can)j(b)s(e)f(expressed)g(as)h(an)g Fq(axial)i(ve)-5
+b(ctor)42 b FD(\(the)31 b(p)s(ole)f(of)g(the)h(rotation,)h(and)e(the)g
+(amoun)m(t)i(of)e(rotation\),)i(and)0 3505 y(routines)d(are)i(pro)m
+(vided)e(for)h(this)f(\(sla)p Ft(_)p FD(A)-10 b(V2M,)32
+b(sla)p Ft(_)p FD(M2A)-10 b(V)30 b Fq(etc.)p FD(\).)0
+3679 y(Here)f(is)f(an)g(example)g(where)g(spherical)f(co)s(ordinates)h
+Ft(P1)g FD(and)g Ft(Q1)g FD(undergo)g(a)h(co)s(ordinate)f
+(transformation)0 3792 y(and)20 b(b)s(ecome)i Ft(P2)e
+FD(and)g Ft(Q2)p FD(;)k(the)d(transformation)g(consists)f(of)h(a)h
+(rotation)f(of)g(the)g(co)s(ordinate)g(system)g(through)0
+3905 y(angles)30 b Ft(A)p FD(,)h Ft(B)f FD(and)f Ft(C)h
+FD(ab)s(out)g(the)h Fq(z)p FD(,)g(new)f Fq(y)38 b FD(and)30
+b(new)g Fq(z)41 b FD(axes)31 b(resp)s(ectiv)m(ely:)573
+4203 y Ft(REAL)46 b(A,B,C,R\(3,3\),P1,Q1,V1\(3\),V)o(2\(3)o(\),P2)o
+(,Q2)620 4315 y(:)286 4428 y(*)96 b(Create)46 b(rotation)f(matrix)573
+4541 y(CALL)h(sla_EULER\('ZYZ',A,B,C,R\))286 4767 y(*)96
+b(Transform)45 b(position)g(\(P1,Q1\))h(from)h(spherical)e(to)i
+(Cartesian)573 4880 y(CALL)f(sla_CS2C\(P1,Q1,V1\))286
+5106 y(*)96 b(Apply)46 b(the)h(rotation)573 5219 y(CALL)f
+(sla_MXV\(R,V1,V2\))286 5445 y(*)96 b(Back)46 b(to)h(spherical)573
+5557 y(CALL)f(sla_CC2S\(V2,P2,Q2\))p eop
+%%Page: 176 178
+176 177 bop 0 52 a FD(176)0 351 y(Small)26 b(adjustmen)m(ts)i(to)g(the)
+g(direction)f(of)h(a)g(p)s(osition)e(v)m(ector)k(are)e(often)g(most)h
+(con)m(v)m(enien)m(tly)f(describ)s(ed)e(in)0 464 y(terms)c(of)h([)15
+b(\001)p Fl(x;)g FD(\001)p Fl(y)s(;)g FD(\001)p Fl(z)k
+FD(].)39 b(Adding)20 b(the)j(correction)f(v)m(ector)i(needs)e(careful)g
+(handling)e(if)h(the)h(p)s(osition)f(v)m(ector)0 577
+y(is)j(to)h(remain)f(of)h(length)f(unit)m(y)-8 b(,)26
+b(an)f(advisable)e(precaution)h(whic)m(h)g(ensures)g(that)h(the)g([)15
+b Fl(x;)g(y)s(;)g(z)20 b FD(])25 b(comp)s(onen)m(ts)0
+690 y(are)f(alw)m(a)m(ys)h(a)m(v)-5 b(ailable)23 b(to)i(mean)f(the)g
+(cosines)g(of)g(the)g(angles)g(b)s(et)m(w)m(een)g(the)h(v)m(ector)g
+(and)e(the)i(axis)e(concerned.)0 803 y(Tw)m(o)33 b(t)m(yp)s(es)g(of)h
+(shifts)d(are)j(commonly)e(used,)i(the)f(\014rst)f(where)h(a)g(small)f
+(v)m(ector)j(of)e(arbitrary)f(direction)f(is)0 916 y(added)24
+b(to)h(the)f(unit)f(v)m(ector,)k(and)d(the)g(second)h(where)e(there)i
+(is)e(a)i(displacemen)m(t)e(in)g(the)h(latitude)g(co)s(ordinate)0
+1029 y(\(declination,)29 b(elev)-5 b(ation)31 b Fq(etc.)p
+FD(\))40 b(alone.)0 1187 y(F)-8 b(or)27 b(a)g(shift)d(pro)s(duced)h(b)m
+(y)h(adding)f(a)i(small)d([)15 b Fl(x;)g(y)s(;)g(z)21
+b FD(])26 b(v)m(ector)i FB(d)e FD(to)h(a)g(unit)d(v)m(ector)k
+FB(v)2922 1201 y Fu(1)2962 1187 y FD(,)f(the)g(resulting)d(v)m(ector)0
+1300 y FB(v)55 1314 y Fu(2)122 1300 y FD(has)k(direction)e
+Fl(<)f FB(v)809 1314 y Fu(1)864 1300 y FD(+)15 b FB(d)25
+b Fl(>)i FD(but)g(is)g(no)g(longer)h(of)g(unit)e(length.)39
+b(A)28 b(b)s(etter)g(appro)m(ximation)e(is)h(a)m(v)-5
+b(ailable)0 1413 y(if)27 b(the)h(result)f(is)g(m)m(ultiplied)e(b)m(y)i
+(a)i(scaling)e(factor)i(of)f(\(1)16 b Fo(\000)g FB(d)f
+Fo(\001)h FB(v)2209 1427 y Fu(1)2249 1413 y FD(\),)29
+b(where)e(the)h(dot)h(means)e(scalar)h(pro)s(duct.)0
+1526 y(In)i(F)-8 b(ortran:)573 1770 y Ft(F)47 b(=)h
+(\(1D0-\(DX*V1X+DY*V1Y+DZ*)o(V1Z\))o(\))573 1883 y(V2X)f(=)g
+(F*\(V1X+DX\))573 1996 y(V2Y)g(=)g(F*\(V1Y+DY\))573 2108
+y(V2Z)g(=)g(F*\(V1Z+DZ\))0 2353 y FD(The)30 b(correction)h(for)f
+(diurnal)d(ab)s(erration)j(\(discussed)e(later\))j(is)f(an)g(example)g
+(of)g(this)g(form)g(of)g(shift.)0 2511 y(As)39 b(an)f(example)g(of)h
+(the)g(second)f(kind)f(of)i(displacemen)m(t)e(w)m(e)i(will)d(apply)i(a)
+h(small)e(c)m(hange)i(in)f(elev)-5 b(ation)0 2624 y Fl(\016)s(E)37
+b FD(to)32 b(an)e([)15 b Fl(Az)t(;)g(E)5 b(l)35 b FD(])c(direction)e(v)
+m(ector.)44 b(The)30 b(direction)g(of)h(the)g(result)f(can)h(b)s(e)f
+(obtained)g(b)m(y)h(making)f(the)0 2737 y(allo)m(w)m(able)j(appro)m
+(ximation)f(tan)15 b Fl(\016)s(E)32 b Fo(\031)25 b Fl(\016)s(E)39
+b FD(and)32 b(adding)g(a)i(adjustmen)m(t)f(v)m(ector)i(of)e(length)f
+Fl(\016)s(E)40 b FD(normal)32 b(to)0 2850 y(the)i(direction)f(v)m
+(ector)j(in)c(the)j(v)m(ertical)f(plane)f(con)m(taining)g(the)i
+(direction)d(v)m(ector.)54 b(The)33 b Fl(z)t FD(-comp)s(onen)m(t)i(of)0
+2962 y(the)k(adjustmen)m(t)g(v)m(ector)h(is)e Fl(\016)s(E)21
+b FD(cos)16 b Fl(E)5 b FD(,)41 b(and)d(the)h(horizon)m(tal)g(comp)s
+(onen)m(t)g(is)f Fl(\016)s(E)21 b FD(sin)14 b Fl(E)44
+b FD(whic)m(h)37 b(has)i(then)0 3075 y(to)34 b(b)s(e)f(resolv)m(ed)g
+(in)m(to)h Fl(x)f FD(and)g Fl(y)j FD(in)c(prop)s(ortion)f(to)k(their)d
+(curren)m(t)h(sizes.)50 b(T)-8 b(o)34 b(appro)m(ximate)f(a)h(unit)e(v)m
+(ector)0 3188 y(more)f(closely)-8 b(,)32 b(a)g(correction)f(factor)i
+(of)e(cos)16 b Fl(\016)s(E)37 b FD(can)32 b(then)f(b)s(e)f(applied,)g
+(whic)m(h)g(is)g(nearly)h(\(1)21 b Fo(\000)g Fl(\016)s(E)3473
+3155 y Fu(2)3513 3188 y Fl(=)p FD(2\))33 b(for)0 3301
+y(small)g Fl(\016)s(E)5 b FD(.)54 b(Expressed)33 b(in)g(F)-8
+b(ortran,)36 b(for)e(initial)e(v)m(ector)k Ft(V1X,V1Y,V1Z)p
+FD(,)31 b(c)m(hange)36 b(in)d(elev)-5 b(ation)34 b Ft(DEL)g
+FD(\(+v)m(e)0 3414 y Fo(\021)c FD(up)m(w)m(ards\),)g(and)g(result)f(v)m
+(ector)j Ft(V2X,V2Y,V2Z)p FD(:)573 3658 y Ft(COSDEL)46
+b(=)h(1D0-DEL*DEL/2D0)573 3771 y(R1)g(=)g(SQRT\(V1X*V1X+V1Y*V1Y\))573
+3884 y(F)g(=)h(COSDEL*\(R1-DEL*V1Z\)/R1)573 3997 y(V2X)f(=)g(F*V1X)573
+4110 y(V2Y)g(=)g(F*V1Y)573 4223 y(V2Z)g(=)g(COSDEL*\(V1Z+DEL*R1\))0
+4467 y FD(An)38 b(example)h(of)f(this)g(t)m(yp)s(e)h(of)f(shift)g(is)f
+(the)i(correction)g(for)g(atmospheric)f(refraction)g(\(see)i(later\).)
+65 b(De-)0 4580 y(p)s(ending)27 b(on)i(the)h(relationship)d(b)s(et)m(w)
+m(een)j Fl(\016)s(E)36 b FD(and)28 b Fl(E)5 b FD(,)31
+b(sp)s(ecial)d(handling)e(at)31 b(the)e(p)s(ole)g(\(the)h(zenith)f(for)
+g(our)0 4693 y(example\))h(ma)m(y)h(b)s(e)f(required.)0
+4851 y(SLALIB)20 b(includes)f(routines)g(for)i(the)g(case)h(where)e(b)s
+(oth)g(a)h(p)s(osition)e(and)h(a)i(v)m(elo)s(cit)m(y)f(are)g(in)m(v)m
+(olv)m(ed.)37 b(The)21 b(rou-)0 4964 y(tines)27 b(sla)p
+Ft(_)p FD(CS2C6)g(and)g(sla)p Ft(_)p FD(CC62S)g(con)m(v)m(ert)i(from)e
+([)p Fl(\022)s(;)15 b(\036;)2052 4940 y FD(_)2034 4964
+y Fl(\022)s(;)2143 4940 y FD(_)2120 4964 y Fl(\036)q
+FD(])28 b(to)g([)15 b Fl(x;)g(y)s(;)g(z)t(;)33 b FD(_)-43
+b Fl(x)r(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(])28 b(and)f(bac)m(k;)j(sla)p Ft(_)p FD(DS2C6)0
+5077 y(and)g(sla)p Ft(_)p FD(DC62S)g(are)h(double)e(precision)f(equiv)
+-5 b(alen)m(ts.)0 5363 y Fv(4.3)112 b(Celestial)36 b(Co)s(ordinate)h
+(Systems)0 5580 y FD(SLALIB)22 b(has)f(routines)g(to)i(p)s(erform)e
+(transformations)g(of)h(celestial)g(p)s(ositions)e(b)s(et)m(w)m(een)j
+(di\013eren)m(t)e(spherical)0 5693 y(co)s(ordinate)30
+b(systems,)h(including)c(those)k(sho)m(wn)e(in)g(the)i(follo)m(wing)e
+(table:)p eop
+%%Page: 177 179
+177 178 bop 0 52 a Fw(SUN/67.70)3206 b FD(177)p 2 263
+3775 4 v 0 376 4 113 v 52 342 a Fq(system)p 619 376 V
+399 w(symb)-5 b(ols)p 1109 376 V 150 w(longitude)p 1572
+376 V 131 w(latitude)p 2022 376 V 185 w(x-y)32 b(plane)p
+2595 376 V 304 w(long.)h(zer)-5 b(o)p 3371 376 V 248
+w(RH/LH)p 3776 376 V 2 379 3775 4 v 2 396 V 0 509 4 113
+v 52 475 a FD(horizon)p 619 509 V 497 w({)p 1109 509
+V 293 w(azim)m(uth)p 1572 509 V 121 w(elev)g(ation)p
+2022 509 V 138 w(horizon)m(tal)p 2595 509 V 367 w(north)p
+3371 509 V 452 w(L)p 3776 509 V 2 512 3775 4 v 0 625
+4 113 v 52 591 a(equatorial)p 619 625 V 345 w Fl(\013;)15
+b(\016)p 1109 625 V 317 w FD(R.A.)p 1572 625 V 277 w(Dec.)p
+2022 625 V 275 w(equator)p 2595 625 V 372 w(equino)m(x)p
+3371 625 V 403 w(R)p 3776 625 V 2 629 3775 4 v 0 741
+4 113 v 52 708 a(lo)s(cal)30 b(equ.)p 619 741 V 366 w
+Fl(h;)15 b(\016)p 1109 741 V 319 w FD(H.A.)p 1572 741
+V 277 w(Dec.)p 2022 741 V 275 w(equator)p 2595 741 V
+350 w(meridian)p 3371 741 V 385 w(L)p 3776 741 V 2 745
+3775 4 v 0 858 4 113 v 52 824 a(ecliptic)p 619 858 V
+454 w Fl(\025;)g(\014)p 1109 858 V 231 w FD(ecl.)31 b(long.)p
+1572 858 V 133 w(ecl.)g(lat.)p 2022 858 V 224 w(ecliptic)p
+2595 858 V 379 w(equino)m(x)p 3371 858 V 403 w(R)p 3776
+858 V 2 861 3775 4 v 0 974 4 113 v 52 940 a(galactic)p
+619 974 V 393 w Fl(l)776 907 y Ff(I)-7 b(I)840 940 y
+Fl(;)15 b(b)919 907 y Ff(I)-7 b(I)p 1109 974 V 1160 940
+a FD(gal.)31 b(long.)p 1572 974 V 123 w(gal.)g(lat.)p
+2022 974 V 124 w(gal.)g(equator)p 2595 974 V 232 w(gal.)g(cen)m(tre)p
+3371 974 V 352 w(R)p 3776 974 V 2 977 3775 4 v 0 1090
+4 113 v 52 1056 a(sup)s(ergalactic)p 619 1090 V 99 w(SGL,SGB)p
+1109 1090 V 110 w(SG)f(long.)p 1572 1090 V 143 w(SG)g(lat.)p
+2022 1090 V 144 w(SG)g(equator)p 2595 1090 V 110 w(no)s(de)g(w.)g(gal.)
+h(equ.)p 3371 1090 V 218 w(R)p 3776 1090 V 2 1093 3775
+4 v 0 1443 a(T)-8 b(ransformations)23 b(b)s(et)m(w)m(een)h([)15
+b Fl(h;)g(\016)20 b FD(])k(and)f([)15 b Fl(Az)t(;)g(E)5
+b(l)27 b FD(])d(can)f(b)s(e)g(p)s(erformed)g(b)m(y)g(calling)f(sla)p
+Ft(_)p FD(E2H)h(and)g(sla)p Ft(_)p FD(H2E,)0 1556 y(or,)36
+b(in)e(double)g(precision,)g(sla)p Ft(_)p FD(DE2H)h(and)g(sla)p
+Ft(_)p FD(DH2E.)g(There)f(is)g(also)h(a)h(routine)e(for)g(obtaining)g
+(zenith)0 1669 y(distance)28 b(alone)h(for)f(a)h(giv)m(en)f([)15
+b Fl(h;)g(\016)20 b FD(],)30 b(sla)p Ft(_)p FD(ZD,)e(and)g(one)g(for)h
+(determining)d(the)j(parallactic)e(angle,)j(sla)p Ft(_)p
+FD(P)-8 b(A.)0 1782 y(Three)31 b(routines)f(are)h(included)e(whic)m(h)h
+(relate)h(to)h(altazim)m(uth)f(telescop)s(e)h(moun)m(tings.)42
+b(F)-8 b(or)32 b(a)g(giv)m(en)f([)15 b Fl(h;)g(\016)20
+b FD(])0 1895 y(and)37 b(latitude,)i(sla)p Ft(_)p FD(AL)-8
+b(T)g(AZ)38 b(returns)f(the)h(azim)m(uth,)h(elev)-5 b(ation)38
+b(and)g(parallactic)f(angle,)j(plus)c(v)m(elo)s(cities)0
+2007 y(and)i(accelerations)i(for)f(sidereal)e(trac)m(king.)67
+b(The)39 b(routines)f(sla)p Ft(_)p FD(PD)m(A2H)i(and)e(sla)p
+Ft(_)p FD(PDQ2H)h(predict)f(at)0 2120 y(what)30 b(hour)g(angle)g(a)h
+(giv)m(en)f(azim)m(uth)g(or)h(parallactic)e(angle)i(will)c(b)s(e)j
+(reac)m(hed.)0 2324 y(The)37 b(routines)g(sla)p Ft(_)p
+FD(EQECL)f(and)h(sla)p Ft(_)p FD(ECLEQ)e(transform)i(b)s(et)m(w)m(een)i
+(ecliptic)d(co)s(ordinates)i(and)f([)15 b Fl(\013;)g(\016)20
+b FD(];)0 2437 y(there)30 b(is)g(also)g(a)h(routine)e(for)h(generating)
+h(the)f(equatorial)g(to)h(ecliptic)e(rotation)i(matrix)f(for)g(a)g(giv)
+m(en)h(date:)0 2550 y(sla)p Ft(_)p FD(ECMA)-8 b(T.)0
+2754 y(F)g(or)26 b(con)m(v)m(ersion)f(b)s(et)m(w)m(een)h(Galactic)g(co)
+s(ordinates)e(and)h([)15 b Fl(\013;)g(\016)20 b FD(])25
+b(there)g(are)h(t)m(w)m(o)g(sets)g(of)f(routines,)g(dep)s(ending)0
+2867 y(on)f(whether)g(the)h([)15 b Fl(\013;)g(\016)20
+b FD(])k(is)g(old-st)m(yle,)i(B1950,)i(or)c(new-st)m(yle,)i(J2000;)i
+(sla)p Ft(_)p FD(EG50)d(and)e(sla)p Ft(_)p FD(GE50)i(are)g([)15
+b Fl(\013;)g(\016)20 b FD(])0 2980 y(to)28 b([)15 b Fl(l)177
+2947 y Ff(I)-7 b(I)241 2980 y Fl(;)15 b(b)320 2947 y
+Ff(I)-7 b(I)400 2980 y FD(])27 b(and)f Fq(vic)-5 b(e)30
+b(versa)k FD(for)27 b(the)h(B1950)h(case,)g(while)c(sla)p
+Ft(_)p FD(EQGAL)h(and)h(sla)p Ft(_)p FD(GALEQ)f(are)i(the)f(J2000)0
+3093 y(equiv)-5 b(alen)m(ts.)0 3297 y(Finally)d(,)31
+b(the)i(routines)e(sla)p Ft(_)p FD(GALSUP)h(and)f(sla)p
+Ft(_)p FD(SUPGAL)h(transform)f([)15 b Fl(l)2633 3264
+y Ff(I)-7 b(I)2698 3297 y Fl(;)15 b(b)2777 3264 y Ff(I)-7
+b(I)2856 3297 y FD(])33 b(to)g(de)f(V)-8 b(aucouleurs)32
+b(su-)0 3409 y(p)s(ergalactic)e(longitude)f(and)h(latitude)g(and)f
+Fq(vic)-5 b(e)32 b(versa.)0 3613 y FD(It)23 b(should)e(b)s(e)h
+(appreciated)g(that)i(the)f(table,)h(ab)s(o)m(v)m(e,)i(constitutes)d(a)
+g(gross)g(o)m(v)m(ersimpli\014cation.)36 b(Apparen)m(tly)0
+3726 y(simple)20 b(concepts)k(suc)m(h)e(as)g(equator,)j(equino)m(x)d
+Fq(etc.)g FD(are)h(apt)g(to)g(b)s(e)f(v)m(ery)g(hard)g(to)h(pin)d(do)m
+(wn)i(precisely)f(\(p)s(olar)0 3839 y(motion,)38 b(orbital)d(p)s
+(erturbations)f(.)15 b(.)g(.)h(\))58 b(and)35 b(some)i(ha)m(v)m(e)g
+(sev)m(eral)g(in)m(terpretations,)g(all)e(subtly)g(di\013eren)m(t.)0
+3952 y(The)45 b(v)-5 b(arious)44 b(frames)i(mo)m(v)m(e)h(in)d
+(complicated)h(w)m(a)m(ys)h(with)f(resp)s(ect)g(to)h(one)g(another)g
+(or)f(to)i(the)e(stars)0 4065 y(\(themselv)m(es)36 b(in)e(motion\).)55
+b(And)34 b(in)g(some)i(instances)f(the)g(co)s(ordinate)g(system)h(is)e
+(sligh)m(tly)f(distorted,)j(so)0 4178 y(that)31 b(the)g(ordinary)d
+(rules)h(of)i(spherical)d(trigonometry)j(no)f(longer)g(strictly)f
+(apply)-8 b(.)0 4382 y(These)25 b Fq(c)-5 b(ave)g(ats)34
+b FD(apply)23 b(particularly)g(to)j(the)f(b)s(ewildering)c(v)-5
+b(ariet)m(y)26 b(of)f(di\013eren)m(t)f([)15 b Fl(\013;)g(\016)21
+b FD(])k(systems)g(that)g(are)h(in)0 4495 y(use.)40 b(Figure)29
+b(1)h(sho)m(ws)g(ho)m(w)f(some)h(of)g(these)g(systems)g(are)g(related,)
+g(to)g(one)g(another)g(and)f(to)h(the)g(direction)0 4608
+y(in)25 b(whic)m(h)g(a)h(celestial)g(source)g(actually)g(app)s(ears)g
+(in)e(the)j(sky)-8 b(.)39 b(A)m(t)27 b(the)g(top)f(of)h(the)f(diagram)g
+(are)g(the)g(v)-5 b(arious)0 4720 y(sorts)23 b(of)h Fq(me)-5
+b(an)27 b(plac)-5 b(e)31 b FD(found)22 b(in)g(star)i(catalogues)h(and)d
+(pap)s(ers;)2180 4687 y Fu(2)2244 4720 y FD(at)j(the)e(b)s(ottom)h(is)e
+(the)i Fq(observe)-5 b(d)33 b FD([)15 b Fl(Az)t(;)g(E)5
+b(l)27 b FD(],)0 4833 y(where)k(a)h(p)s(erfect)g(theo)s(dolite)f(w)m
+(ould)f(b)s(e)h(p)s(oin)m(ted)g(to)h(see)g(the)g(source;)h(and)e(in)f
+(the)i(b)s(o)s(dy)e(of)i(the)g(diagram)0 4946 y(are)26
+b(the)g(in)m(termediate)g(pro)s(cessing)e(steps)i(and)f(co)s(ordinate)g
+(systems.)40 b(T)-8 b(o)26 b(help)e(understand)g(this)h(diagram,)0
+5059 y(and)j(the)g(SLALIB)f(routines)g(that)i(can)g(b)s(e)e(used)g(to)i
+(carry)f(out)h(the)f(v)-5 b(arious)27 b(calculations,)h(w)m(e)h(will)c
+(lo)s(ok)j(at)0 5172 y(the)j(co)s(ordinate)f(systems)g(in)m(v)m(olv)m
+(ed,)g(and)g(the)h(astronomical)f(phenomena)g(that)h(a\013ect)h(them.)p
+0 5334 1512 4 v 104 5387 a Fs(2)138 5419 y Fr(One)c(frame)h(not)g
+(included)f(in)g(Figure)i(1)f(is)g(that)f(of)i(the)e(Hipparcos)h
+(catalogue.)45 b(This)29 b(is)h(curren)n(tly)d(the)i(b)r(est)f(a)n(v)l
+(ailable)0 5510 y(implemen)n(tation)f(in)i(the)f(optical)h(of)g(the)g
+Fd(International)i(Celestial)f(R)l(efer)l(enc)l(e)i(System)j
+Fr(\(ICRS\),)28 b(whic)n(h)h(is)g(based)f(on)h(extra-)0
+5602 y(galactic)34 b(radio)f(sources)g(observ)n(ed)f(b)n(y)f(VLBI.)h
+(The)g(distinction)h(b)r(et)n(w)n(een)f(FK5)g(J2000)i(and)e(Hipparcos)g
+(co)r(ordinates)i(only)0 5693 y(b)r(ecomes)26 b(imp)r(ortan)n(t)e(when)
+i(accuracies)h(of)g(50)f(mas)f(or)h(b)r(etter)g(are)g(required.)34
+b(More)27 b(details)f(are)g(giv)n(en)g(in)g(Section)f(4.14.)p
+eop
+%%Page: 178 180
+178 179 bop 0 52 a FD(178)p 227 263 3326 4 v 225 376
+4 113 v 3551 376 V 225 489 V 3551 489 V 225 785 4 297
+v 367 492 830 4 v 367 782 4 290 v 420 607 a(mean)31 b([)15
+b Fl(\013;)g(\016)20 b FD(],)31 b(FK4,)528 720 y(an)m(y)f(equino)m(x)p
+1193 782 V 367 785 830 4 v 1475 492 V 1475 782 4 290
+v 1529 607 a(mean)g([)15 b Fl(\013;)g(\016)20 b FD(],)31
+b(FK4,)1518 720 y(no)f Fl(\026)p FD(,)g(an)m(y)h(equino)m(x)p
+2301 782 V 1475 785 830 4 v 2584 492 V 2584 782 4 290
+v 2637 607 a(mean)f([)15 b Fl(\013;)g(\016)21 b FD(],)30
+b(FK5,)2744 720 y(an)m(y)h(equino)m(x)p 3409 782 V 2584
+785 830 4 v 3551 785 4 297 v 225 898 4 113 v 780 898
+V 1888 898 V 2996 898 V 3551 898 V 225 1011 V 521 977
+a(space)g(motion)p 1888 1011 V 1696 w(space)g(motion)p
+3551 1011 V 225 1124 V 586 1090 a({)g(E-terms)717 b({)31
+b(E-terms)p 2996 1124 V 3551 1124 V 225 1237 V 448 1203
+a(precess)f(to)i(B1950)443 b(precess)31 b(to)g(B1950)453
+b(precess)30 b(to)h(J2000)p 3551 1237 V 225 1350 V 573
+1316 a(+)f(E-terms)693 b(+)30 b(E-terms)p 2996 1350 V
+3551 1350 V 225 1463 V 417 1429 a(FK4)h(to)g(FK5,)g(no)f
+Fl(\026)379 b FD(FK4)31 b(to)g(FK5,)g(no)f Fl(\026)p
+2996 1463 V 3551 1463 V 225 1576 V 621 1542 a FD(parallax)p
+1888 1576 V 1895 w(parallax)p 3551 1576 V 225 1688 V
+780 1688 V 1888 1688 V 2996 1688 V 3551 1688 V 781 1692
+2217 4 v 225 1801 4 113 v 1888 1801 V 3551 1801 V 225
+1980 4 179 v 1043 1805 1693 4 v 1043 1976 4 172 v 1117
+1914 a(FK5,)h(J2000,)h(curren)m(t)e(ep)s(o)s(c)m(h,)g(geo)s(cen)m(tric)
+p 2733 1976 V 1043 1979 1693 4 v 3551 1980 4 179 v 225
+2092 4 113 v 1888 2092 V 3551 2092 V 225 2205 V 1596
+2172 a(ligh)m(t)f(de\015ection)p 3551 2205 V 225 2318
+V 1536 2284 a(ann)m(ual)g(ab)s(erration)p 3551 2318 V
+225 2431 V 1507 2397 a(precession-n)m(utation)p 3551
+2431 V 225 2544 V 1888 2544 V 3551 2544 V 225 2691 4
+148 v 1548 2547 685 4 v 1548 2688 4 141 v 1576 2641 a(Apparen)m(t)h([)
+15 b Fl(\013;)g(\016)20 b FD(])p 2229 2688 V 1548 2691
+685 4 v 3551 2691 4 148 v 225 2804 4 113 v 1888 2804
+V 3551 2804 V 225 2917 V 1601 2883 a(Earth)30 b(rotation)p
+3551 2917 V 225 3030 V 1888 3030 V 3551 3030 V 225 3178
+4 148 v 1551 3034 679 4 v 1551 3174 4 141 v 1579 3127
+a(Apparen)m(t)g([)15 b Fl(h;)g(\016)20 b FD(])p 2226
+3174 V 1551 3177 679 4 v 3551 3178 4 148 v 225 3290 4
+113 v 1888 3290 V 3551 3290 V 225 3403 V 1527 3370 a(diurnal)27
+b(ab)s(erration)p 3551 3403 V 225 3516 V 1888 3516 V
+3551 3516 V 225 3664 4 148 v 1503 3520 775 4 v 1503 3660
+4 141 v 1531 3613 a(T)-8 b(op)s(o)s(cen)m(tric)30 b([)15
+b Fl(h;)g(\016)20 b FD(])p 2274 3660 V 1503 3663 775
+4 v 3551 3664 4 148 v 225 3777 4 113 v 1888 3777 V 3551
+3777 V 225 3890 V 1534 3856 a([)15 b Fl(h;)g(\016)20
+b FD(])31 b(to)g([)15 b Fl(Az)t(;)g(E)5 b(l)34 b FD(])p
+3551 3890 V 225 4002 V 1888 4002 V 3551 4002 V 225 4150
+4 148 v 1435 4006 909 4 v 1435 4146 4 141 v 1464 4099
+a(T)-8 b(op)s(o)s(cen)m(tric)30 b([)15 b Fl(Az)t(;)g(E)5
+b(l)34 b FD(])p 2341 4146 V 1435 4149 909 4 v 3551 4150
+4 148 v 225 4263 4 113 v 1888 4263 V 3551 4263 V 225
+4376 V 1699 4342 a(refraction)p 3551 4376 V 225 4489
+V 1888 4489 V 3551 4489 V 225 4636 4 148 v 1486 4492
+809 4 v 1486 4633 4 141 v 1514 4585 a(Observ)m(ed)c([)15
+b Fl(Az)t(;)g(E)5 b(l)33 b FD(])p 2291 4633 V 1486 4636
+809 4 v 3551 4636 4 148 v 225 4749 4 113 v 3551 4749
+V 225 4862 V 3551 4862 V 227 4865 3326 4 v 687 5100 a(Figure)d(1:)41
+b FB(Relationship)36 b(Bet)m(w)m(een)e(Celestial)g(Co)s(ordinates)0
+5212 y FD(Star)22 b(p)s(ositions)f(are)i(published)c(or)j(catalogued)i
+(using)d(one)i(of)f(the)h(mean)g([)15 b Fl(\013;)g(\016)20
+b FD(])j(systems)f(sho)m(wn)g(at)h(the)g(top.)0 5325
+y(The)33 b(\\FK4")i(systems)f(w)m(ere)h(used)e(b)s(efore)g(ab)s(out)h
+(1980)h(and)e(are)i(usually)c(equino)m(x)j(B1950.)53
+b(The)33 b(\\FK5")0 5438 y(system,)47 b(equino)m(x)c(J2000,)48
+b(is)42 b(no)m(w)i(preferred,)h(or)f(rather)f(its)f(mo)s(dern)g(equiv)
+-5 b(alen)m(t,)47 b(the)c(In)m(ternational)0 5551 y(Celestial)31
+b(Reference)h(F)-8 b(rame)33 b(\(in)d(the)i(optical,)g(the)g(Hipparcos)
+f(catalogue\).)47 b(The)31 b(\014gure)g(relates)h(a)g(star's)0
+5664 y(mean)39 b([)15 b Fl(\013;)g(\016)20 b FD(])39
+b(to)h(the)f(actual)g(line-of-sigh)m(t)f(to)i(the)f(star.)66
+b(Note)41 b(that)e(for)g(the)g(con)m(v)m(en)m(tional)h(c)m(hoices)f(of)
+0 5777 y(equino)m(x,)30 b(namely)g(B1950)i(or)f(J2000,)h(all)d(of)i
+(the)f(precession)g(and)f(E-terms)i(corrections)f(are)h(sup)s
+(er\015uous.)p eop
+%%Page: 179 181
+179 180 bop 0 52 a Fw(SUN/67.70)3206 b FD(179)0 351 y
+Fv(4.4)112 b(Precession)37 b(and)h(Nutation)0 571 y Fq(R)n(ight)46
+b(asc)-5 b(ension)47 b(and)g(de)-5 b(clination)p FD(,)50
+b(\([)15 b Fl(\013;)g(\016)21 b FD(]\),)49 b(are)c(the)g(names)f(of)h
+(the)g(longitude)e(and)h(latitude)g(in)f(a)0 684 y(spherical)35
+b(p)s(olar)g(co)s(ordinate)i(system)g(based)g(on)f(the)h(Earth's)g
+(axis)f(of)h(rotation.)60 b(The)37 b(zero)g(p)s(oin)m(t)f(of)h
+Fl(\013)0 796 y FD(is)f(the)i(p)s(oin)m(t)e(of)i(in)m(tersection)f(of)g
+(the)h Fq(c)-5 b(elestial)40 b(e)-5 b(quator)48 b FD(and)37
+b(the)g Fq(e)-5 b(cliptic)43 b FD(\(the)38 b(apparen)m(t)g(path)f(of)g
+(the)0 909 y(Sun)29 b(through)h(the)h(y)m(ear\))g(where)f(the)h(Sun)e
+(mo)m(v)m(es)j(in)m(to)f(the)f(northern)g(hemisphere.)39
+b(This)29 b(p)s(oin)m(t)h(is)f(called)0 1022 y(the)k
+Fq(\014rst)j(p)-5 b(oint)37 b(of)e(A)n(ries)p FD(,)f(the)f
+Fq(vernal)j(e)-5 b(quinox)45 b FD(\(with)32 b(ap)s(ologies)g(to)i
+(southern-hemisphere)d(readers\))i(or)0 1135 y(simply)28
+b(the)i Fq(e)-5 b(quinox)p FD(.)767 1102 y Fu(3)0 1296
+y FD(This)28 b(simple)f(picture)i(is)f(unfortunately)g(complicated)i(b)
+m(y)f(the)h(di\016cult)m(y)e(of)h(de\014ning)f(a)i(suitable)e(equator)0
+1409 y(and)43 b(equino)m(x.)78 b(One)43 b(problem)e(is)h(that)i(the)f
+(Sun's)f(apparen)m(t)h(diurnal)d(and)j(ann)m(ual)f(motions)h(are)g(not)
+0 1522 y(completely)30 b(regular,)g(due)f(to)i(the)f(ellipticit)m(y)e
+(of)j(the)f(Earth's)g(orbit)f(and)h(its)f(con)m(tin)m(uous)h
+(disturbance)f(b)m(y)0 1635 y(the)e(Mo)s(on)f(and)g(planets.)39
+b(This)24 b(is)i(dealt)g(with)f(b)m(y)i(separating)f(the)g(motion)g(in)
+m(to)h(\(i\))f(a)h(smo)s(oth)f(and)g(steady)0 1747 y
+Fq(me)-5 b(an)31 b(Sun)j FD(and)26 b(\(ii\))g(a)i(set)g(of)f(p)s(erio)s
+(dic)d(corrections)k(and)e(p)s(erturbations;)h(only)f(the)h(former)g
+(is)f(in)m(v)m(olv)m(ed)h(in)0 1860 y(establishing)c(reference)j
+(systems)g(and)f(time)h(scales.)39 b(A)26 b(second,)h(far)e(larger)h
+(problem,)f(is)g(that)h(the)g(celestial)0 1973 y(equator)i(and)e(the)h
+(ecliptic)f(are)h(b)s(oth)g(mo)m(ving)f(with)g(resp)s(ect)h(to)h(the)f
+(stars.)40 b(These)26 b(motions)h(arise)f(b)s(ecause)0
+2086 y(of)31 b(the)f(gra)m(vitational)h(in)m(teractions)f(b)s(et)m(w)m
+(een)h(the)f(Earth)h(and)e(the)i(other)g(solar-system)f(b)s(o)s(dies.)0
+2247 y(By)25 b(far)f(the)h(largest)g(e\013ect)h(is)d(the)i(so-called)f
+(\\precession)g(of)h(the)g(equino)m(xes",)h(where)e(the)h(Earth's)f
+(rotation)0 2360 y(axis)32 b(sw)m(eeps)h(out)g(a)h(cone)f(cen)m(tred)h
+(on)e(the)h(ecliptic)f(p)s(ole,)h(completing)f(one)h(rev)m(olution)f
+(in)f(ab)s(out)i(26,000)0 2473 y(y)m(ears.)57 b(The)35
+b(cause)i(of)e(the)h(motion)g(is)e(the)i(torque)g(exerted)g(on)g(the)g
+(distorted)f(and)g(spinning)d(Earth)k(b)m(y)0 2586 y(the)e(Sun)e(and)h
+(the)h(Mo)s(on.)51 b(Consider)32 b(the)i(e\013ect)h(of)f(the)g(Sun)e
+(alone,)j(at)g(or)e(near)h(the)g(northern)f(summer)0
+2699 y(solstice.)46 b(The)31 b(Sun)g(`sees')i(the)f(top)g(\(north)g(p)s
+(ole\))f(of)i(the)f(Earth)g(tilted)f(to)m(w)m(ards)i(it)e(\(b)m(y)i(ab)
+s(out)e(23)3516 2666 y Fp(\016)3522 2699 y Fl(:)r FD(5,)j(the)0
+2811 y Fq(obliquity)i(of)f(the)h(e)-5 b(cliptic)5 b FD(\),)35
+b(and)e(sees)h(the)f(nearer)h(part)f(of)h(the)f(Earth's)g(equatorial)g
+(bulge)g(b)s(elo)m(w)f(cen)m(tre)0 2924 y(and)e(the)h(further)e(part)h
+(ab)s(o)m(v)m(e)i(cen)m(tre.)42 b(Although)30 b(the)h(Earth)f(is)g(in)f
+(free)h(fall,)g(the)h(gra)m(vitational)f(force)i(on)0
+3037 y(the)f(nearer)h(part)f(of)g(the)g(equatorial)g(bulge)g(is)f
+(greater)i(than)f(that)h(on)f(the)g(further)f(part,)i(and)f(so)g(there)
+g(is)0 3150 y(a)h(net)g(torque)g(acting)g(as)g(if)f(to)h(eliminate)e
+(the)i(tilt.)44 b(Six)31 b(mon)m(ths)g(later)h(the)g(same)g(thing)f(is)
+g(happ)s(ening)e(in)0 3263 y(rev)m(erse,)g(except)f(that)g(the)f
+(torque)h(is)e(still)f(trying)i(to)h(eliminate)e(the)h(tilt.)39
+b(In)27 b(b)s(et)m(w)m(een)h(\(at)g(the)f(equino)m(xes\))0
+3376 y(the)i(torque)f(shrinks)e(to)j(zero.)41 b(A)29
+b(torque)f(acting)h(on)f(a)h(spinning)c(b)s(o)s(dy)i(is)h
+(gyroscopically)f(translated)h(in)m(to)0 3489 y(a)39
+b(precessional)e(motion)g(of)i(the)f(spin)e(axis)i(at)h(righ)m
+(t-angles)f(to)h(the)f(torque,)i(and)e(this)f(happ)s(ens)f(to)j(the)0
+3602 y(Earth.)51 b(The)33 b(motion)h(v)-5 b(aries)33
+b(during)f(the)i(y)m(ear,)i(going)d(through)h(t)m(w)m(o)h(maxima,)f
+(but)f(alw)m(a)m(ys)i(acts)g(in)d(the)0 3715 y(same)37
+b(direction.)60 b(The)36 b(Mo)s(on)i(pro)s(duces)d(the)j(same)f
+(e\013ect,)k(adding)35 b(a)j(con)m(tribution)d(to)j(the)f(precession)0
+3828 y(whic)m(h)22 b(p)s(eaks)h(t)m(wice)h(p)s(er)f(mon)m(th.)38
+b(The)23 b(Mo)s(on's)h(pro)m(ximit)m(y)e(to)i(the)g(Earth)f(more)h
+(than)f(comp)s(ensates)h(for)f(its)0 3941 y(smaller)k(mass)h(and)f(gra)
+m(vitational)h(attraction,)i(so)f(that)f(it)g(in)f(fact)i(con)m
+(tributes)f(most)g(of)g(the)h(precessional)0 4053 y(e\013ect.)0
+4214 y(The)24 b(complex)f(in)m(teractions)h(b)s(et)m(w)m(een)h(the)f
+(three)g(b)s(o)s(dies)e(pro)s(duce)h(a)h(precessional)f(motion)h(that)h
+(is)e(w)m(obbly)0 4327 y(rather)32 b(than)h(completely)f(smo)s(oth.)47
+b(Ho)m(w)m(ev)m(er,)36 b(the)d(main)e(26,000-y)m(ear)37
+b(comp)s(onen)m(t)c(is)e(on)i(suc)m(h)f(a)h(grand)0 4440
+y(scale)40 b(that)g(it)f(dw)m(arfs)g(the)h(remaining)e(terms,)k(the)e
+(biggest)f(of)h(whic)m(h)e(has)i(an)f(amplitude)f(of)i(only)e(11)3738
+4403 y Fk(0)m(0)0 4553 y FD(and)27 b(a)i(p)s(erio)s(d)d(of)i(ab)s(out)g
+(18.6)i(y)m(ears.)40 b(This)26 b(di\013erence)i(of)g(scale)h(mak)m(es)g
+(it)e(con)m(v)m(enien)m(t)j(to)e(treat)i(these)e(t)m(w)m(o)0
+4666 y(comp)s(onen)m(ts)d(of)g(the)g(motion)g(separately)-8
+b(.)39 b(The)25 b(main)e(26,000-y)m(ear)29 b(e\013ect)d(is)e(called)g
+Fq(luni-solar)29 b(pr)-5 b(e)g(c)g(ession)p FD(;)0 4779
+y(the)31 b(smaller,)e(faster,)i(p)s(erio)s(dic)c(terms)k(are)g(called)e
+(the)i Fq(nutation)p FD(.)0 4939 y(Note)22 b(that)f(precession)e(and)h
+(n)m(utation)g(are)g(simply)e(di\013eren)m(t)i(frequency)g(comp)s(onen)
+m(ts)g(of)h(the)f(same)h(ph)m(ysical)0 5052 y(e\013ect.)40
+b(It)25 b(is)e(a)i(common)g(misconception)e(that)i(precession)f(is)f
+(caused)i(b)m(y)f(the)h(Sun)e(and)h(n)m(utation)g(is)f(caused)0
+5165 y(b)m(y)33 b(the)g(Mo)s(on.)50 b(In)32 b(fact)j(the)e(Mo)s(on)g
+(is)g(resp)s(onsible)d(for)j(t)m(w)m(o-thirds)g(of)g(the)h(precession,)
+f(and,)g(while)f(it)g(is)p 0 5242 1512 4 v 104 5296 a
+Fs(3)138 5328 y Fr(With)20 b(the)g(in)n(tro)r(duction)g(of)i(the)d(In)n
+(ternational)i(Celestial)i(Reference)d(System)f(\(ICRS\),)h(the)g
+(connection)g(b)r(et)n(w)n(een)h(\(i\))f(star)0 5419
+y(co)r(ordinates)33 b(and)e(\(ii\))g(the)g(Earth's)h(orien)n(tation)g
+(and)f(orbit)h(has)f(b)r(een)g(brok)n(en.)51 b(Ho)n(w)n(ev)n(er,)33
+b(the)e(orien)n(tation)h(of)g(the)f(In)n(ter-)0 5510
+y(national)38 b(Celestial)i(Reference)e(F)-6 b(rame)36
+b(\(ICRF\))h(axes)h(w)n(as,)k(for)c(con)n(v)n(enience,)i(c)n(hosen)e
+(to)f(matc)n(h)f(J2000)k(FK5,)h(and)c(for)0 5602 y(most)29
+b(practical)h(purp)r(oses)g(ICRF)f(co)r(ordinates)i(\(for)f(example)e
+(en)n(tries)i(in)f(the)g(Hipparcos)h(catalogue\))g(can)g(b)r(e)f
+(regarded)h(as)0 5693 y(synon)n(ymous)24 b(with)i(J2000)h(FK5.)35
+b(See)26 b(Section)g(4.14)h(for)f(further)g(details.)p
+eop
+%%Page: 180 182
+180 181 bop 0 52 a FD(180)0 351 y(true)27 b(that)g(m)m(uc)m(h)g(of)g
+(the)g(complex)g(detail)f(of)h(the)g(n)m(utation)f(is)g(a)h
+(re\015ection)g(of)g(the)g(in)m(tricacies)f(of)h(the)g(lunar)0
+464 y(orbit,)j(there)g(are)h(nonetheless)f(imp)s(ortan)m(t)f(solar)h
+(terms)h(in)e(the)h(n)m(utation.)0 650 y(In)37 b(addition)e(to)j(and)f
+(quite)g(separate)h(from)f(the)g(precession-n)m(utation)g(e\013ect,)k
+(the)c(orbit)f(of)i(the)f(Earth-)0 763 y(Mo)s(on)g(system)g(is)f(not)h
+(\014xed)f(in)g(orien)m(tation,)i(a)g(result)d(of)i(the)g(attractions)h
+(of)f(the)g(planets.)60 b(This)35 b(slo)m(w)0 876 y(\(ab)s(out)h(0)341
+839 y Fk(0)l(0)345 876 y Fl(:)p FD(5)g(p)s(er)e(y)m(ear\))j(secular)e
+(rotation)h(of)f(the)h(ecliptic)e(ab)s(out)h(a)h(slo)m(wly-mo)m(ving)e
+(diameter)i(is)e(called,)0 989 y(confusingly)-8 b(,)42
+b Fq(planetary)i(pr)-5 b(e)g(c)g(ession)49 b FD(and,)43
+b(along)e(with)e(the)i(luni-solar)d(precession)i(is)f(included)f(in)h
+(the)0 1102 y Fq(gener)-5 b(al)38 b(pr)-5 b(e)g(c)g(ession)p
+FD(.)56 b(The)35 b(equator)g(and)g(ecliptic)e(as)j(a\013ected)g(b)m(y)f
+(general)g(precession)f(are)h(what)g(de\014ne)0 1215
+y(the)c(v)-5 b(arious)29 b(\\mean")i([)15 b Fl(\013;)g(\016)21
+b FD(])30 b(reference)h(frames.)0 1401 y(The)37 b(mo)s(dels)g(for)g
+(precession)g(and)h(n)m(utation)f(come)i(from)e(a)i(com)m(bination)e
+(of)h(observ)-5 b(ation)37 b(and)h(theory)-8 b(,)0 1514
+y(and)35 b(are)h(sub)5 b(ject)36 b(to)g(con)m(tin)m(uous)f(re\014nemen)
+m(t.)57 b(Nutation)36 b(mo)s(dels)e(in)g(particular)g(ha)m(v)m(e)j
+(reac)m(hed)g(a)f(high)0 1626 y(degree)h(of)f(sophistication,)h(taking)
+f(in)m(to)g(accoun)m(t)i(suc)m(h)d(things)h(as)g(the)g(non-rigidit)m(y)
+e(of)j(the)f(Earth)g(and)0 1739 y(the)e(e\013ects)i(of)f(the)f
+(planets;)i(SLALIB's)e(n)m(utation)g(mo)s(del)f(\(SF2001\))j(in)m(v)m
+(olv)m(es)f(194)g(terms)f(in)f(eac)m(h)j(of)e Fl( )0
+1852 y FD(\(longitude\))c(and)f Fl(\017)i FD(\(obliquit)m(y\),)e(some)i
+(as)f(small)f(as)i(a)g(few)f(microarcseconds.)0 2220
+y FB(4.4.1)105 b(SLALIB)35 b(supp)s(ort)g(for)h(precession)g(and)e(n)m
+(utation)0 2476 y FD(SLALIB)c(o\013ers)h(a)f(c)m(hoice)h(of)g(three)g
+(precession)e(mo)s(dels:)136 2771 y Fo(\017)46 b FD(The)29
+b(old)f(Bessel-New)m(com)m(b,)k(pre)d(IA)m(U)h(1976,)h(\\FK4")g(mo)s
+(del,)d(used)h(for)g(B1950)i(star)f(p)s(ositions)d(and)227
+2884 y(other)k(pre-1984.0)i(purp)s(oses)28 b(\(sla)p
+Ft(_)p FD(PREBN\).)136 3118 y Fo(\017)46 b FD(The)35
+b(new)g(F)-8 b(ric)m(k)m(e,)39 b(IA)m(U)d(1976,)i(\\FK5")f(mo)s(del,)f
+(used)f(for)g(J2000)i(star)f(p)s(ositions)d(and)i(other)h(p)s(ost-)227
+3231 y(1984.0)d(purp)s(oses)c(\(sla)p Ft(_)p FD(PREC\).)136
+3465 y Fo(\017)46 b FD(A)31 b(mo)s(del)e(published)e(b)m(y)j(Simon)f
+Fq(et)j(al.)f FD(whic)m(h)e(is)h(more)g(accurate)i(than)e(the)h(IA)m(U)
+g(1976)h(mo)s(del)d(and)227 3578 y(whic)m(h)g(is)h(suitable)f(for)h
+(long)g(p)s(erio)s(ds)e(of)i(time)g(\(sla)p Ft(_)p FD(PRECL\).)0
+3874 y(In)37 b(eac)m(h)h(case,)j(the)d(named)f(SLALIB)g(routine)f
+(generates)j(the)f(\(3)25 b Fo(\002)g FD(3\))38 b Fq(pr)-5
+b(e)g(c)g(ession)42 b(matrix)49 b FD(for)38 b(a)f(giv)m(en)0
+3986 y(start)32 b(and)f(\014nish)d(time.)43 b(F)-8 b(or)33
+b(example,)e(here)g(is)f(the)i(F)-8 b(ortran)32 b(co)s(de)f(for)g
+(generating)h(the)f(rotation)h(matrix)0 4099 y(whic)m(h)d(describ)s(es)
+g(the)h(precession)g(b)s(et)m(w)m(een)h(the)f(ep)s(o)s(c)m(hs)g(J2000)i
+(and)e(J1985.372)j(\(IA)m(U)f(1976)g(mo)s(del\):)573
+4431 y Ft(DOUBLE)46 b(PRECISION)f(PMAT\(3,3\))620 4544
+y(:)573 4657 y(CALL)h(sla_PREC\(2000D0,1985.372D0)o(,PM)o(AT\))0
+4989 y FD(It)30 b(is)g(instructiv)m(e)f(to)i(examine)f(the)h(resulting)
+d(matrix:)573 5321 y Ft(+0.9999936402)92 b(+0.0032709208)g
+(+0.0014214694)573 5434 y(-0.0032709208)g(+0.9999946505)g
+(-0.0000023247)573 5547 y(-0.0014214694)g(-0.0000023248)g
+(+0.9999989897)p eop
+%%Page: 181 183
+181 182 bop 0 52 a Fw(SUN/67.70)3206 b FD(181)0 351 y(Note)27
+b(that)f(the)g(diagonal)f(elemen)m(ts)h(are)g(close)g(to)h(unit)m(y)-8
+b(,)26 b(and)f(the)h(other)g(elemen)m(ts)g(are)g(small.)38
+b(This)24 b(sho)m(ws)0 464 y(that)36 b(o)m(v)m(er)g(an)f(in)m(terv)-5
+b(al)34 b(as)h(short)g(as)h(15)f(y)m(ears)h(the)f(precession)g(isn't)f
+(going)h(to)h(mo)m(v)m(e)g(a)g(p)s(osition)d(v)m(ector)0
+577 y(v)m(ery)e(far)f(\(in)f(this)h(case)h(ab)s(out)f(0)1155
+544 y Fp(\016)1161 577 y Fl(:)r FD(2\).)0 738 y(F)-8
+b(or)42 b(con)m(v)m(enience,)j(a)c(direct)g([)15 b Fl(\013;)g(\016)20
+b FD(])41 b(to)h([)15 b Fl(\013;)g(\016)20 b FD(])42
+b(precession)e(routine)g(is)g(also)h(pro)m(vided)f(\(sla)p
+Ft(_)p FD(PRECES\),)0 851 y(suitable)29 b(for)h(either)g(the)g(old)g
+(or)g(the)h(new)f(system)g(\(but)g(not)h(a)g(mixture)e(of)h(the)h(t)m
+(w)m(o\).)0 1013 y(SLALIB)37 b(pro)m(vides)f(t)m(w)m(o)j(n)m(utation)e
+(mo)s(dels,)h(the)g(old)e(IA)m(U)i(1980)i(mo)s(del,)e(implemen)m(ted)e
+(in)g(the)h(routine)0 1126 y(slaNutc80,)25 b(and)c(a)h(m)m(uc)m(h)g
+(more)g(accurate)i(new)m(er)d(theory)-8 b(,)25 b(SF2001,)g(implemen)m
+(ted)c(in)f(the)i(routine)f(slaNutc.)0 1239 y(Both)h(return)d(the)i
+(comp)s(onen)m(ts)g(of)h(n)m(utation)e(in)g(longitude)f(and)i(latitude)
+f(\(and)g(also)h(pro)m(vide)f(the)h(obliquit)m(y\))0
+1351 y(from)h(whic)m(h)e(a)j(n)m(utation)f(matrix)f(can)i(b)s(e)e
+(generated)i(b)m(y)f(calling)f(slaDeuler)g(\(and)h(from)g(whic)m(h)e
+(the)j Fq(e)-5 b(quation)0 1464 y(of)32 b(the)g(e)-5
+b(quinoxes)p FD(,)31 b(describ)s(ed)c(later,)j(can)g(b)s(e)f(found\).)
+39 b(Alternativ)m(ely)-8 b(,)30 b(the)g(SF2001)h(n)m(utation)e(matrix)g
+(can)0 1577 y(b)s(e)e(generated)j(in)c(a)j(single)e(call)g(b)m(y)h
+(using)f(slaNut.)39 b(The)28 b(SF2001)h(n)m(utation)f(theory)h
+(includes)c(comp)s(onen)m(ts)0 1690 y(that)d(correct)h(for)f(errors)f
+(in)f(the)i(IA)m(U)h(1976)g(precession)e(and)g(also)h(for)f(the)h
+Fo(\030)j FD(23)15 b(mas)23 b(displacemen)m(t)e(b)s(et)m(w)m(een)0
+1803 y(the)35 b(mean)h(J2000)g(and)f(ICRS)f(co)s(ordinate)h(systems,)i
+(ac)m(hieving)e(a)h(\014nal)e(accuracy)i(w)m(ell)e(under)g(1)16
+b(mas)35 b(in)0 1916 y(the)c(presen)m(t)f(era.)0 2077
+y(A)k(rotation)g(matrix)f(for)h(applying)d(the)j(en)m(tire)g
+(precession-n)m(utation)f(transformation)g(in)f(one)i(go)h(can)f(b)s(e)
+0 2190 y(generated)d(b)m(y)g(calling)e(sla)p Ft(_)p FD(PRENUT.)0
+2481 y Fv(4.5)112 b(Mean)39 b(Places)0 2702 y FD(F)-8
+b(rom)35 b(a)g(classical)f(standp)s(oin)m(t,)g(the)h(main)e(e\013ect)j
+(of)f(the)g(precession-n)m(utation)f(is)f(an)i(increase)f(of)h(ab)s
+(out)0 2814 y(50)85 2778 y Fk(0)m(0)126 2814 y FD(/y)m(ear)d(in)e(the)h
+(ecliptic)e(longitudes)h(of)h(the)g(stars.)42 b(It)31
+b(is)e(therefore)j(essen)m(tial,)f(when)e(rep)s(orting)h(the)h(p)s(o-)0
+2927 y(sition)26 b(of)h(an)h(astronomical)f(target,)i(to)f(qualify)e
+(the)h(co)s(ordinates)g(with)f(a)i(date,)h(or)e Fq(ep)-5
+b(o)g(ch)p FD(.)41 b(Sp)s(ecifying)25 b(the)0 3040 y(ep)s(o)s(c)m(h)g
+(ties)h(do)m(wn)f(the)g(equator)i(and)d(equino)m(x)h(whic)m(h)g
+(de\014ne)f(the)i([)15 b Fl(\013;)g(\016)20 b FD(])26
+b(co)s(ordinate)g(system)f(that)h(is)f(b)s(eing)0 3153
+y(used.)241 3120 y Fu(4)319 3153 y FD(F)-8 b(or)25 b(simplicit)m(y)-8
+b(,)24 b(only)g(the)h(smo)s(oth)f(and)g(steady)h(\\precession")g(part)f
+(of)h(the)g(complete)g(precession-)0 3266 y(n)m(utation)h(e\013ect)h
+(is)e(included,)f(thereb)m(y)i(de\014ning)e(what)i(is)f(called)g(the)h
+Fq(me)-5 b(an)34 b FD(equator)26 b(and)f(equino)m(x)h(for)f(the)0
+3379 y(ep)s(o)s(c)m(h)32 b(concerned.)48 b(W)-8 b(e)34
+b(sa)m(y)f(a)g(star)g(has)f(a)h(mean)g(place)f(of)h(\(for)g(example\))f
+(12)2797 3346 y Fu(h)2857 3379 y FD(07)2947 3346 y Fu(m)3026
+3379 y FD(58)3116 3346 y Fu(s)3121 3379 y Fl(:)p FD(09)i
+Fo(\000)p FD(19)3431 3346 y Fp(\016)3486 3379 y FD(44)3576
+3342 y Fk(0)3619 3379 y FD(37)3704 3342 y Fk(0)m(0)3708
+3379 y Fl(:)p FD(1)0 3492 y(\\with)25 b(resp)s(ect)i(to)g(the)f(mean)h
+(equator)g(and)f(equino)m(x)f(of)i(ep)s(o)s(c)m(h)f(J2000".)41
+b(The)26 b(short)g(w)m(a)m(y)h(of)g(sa)m(ying)f(this)f(is)0
+3605 y(\\[)15 b Fl(\013;)g(\016)21 b FD(])29 b(equino)m(x)g(J2000")j
+(\()p FB(not)d FD(\\[)15 b Fl(\013;)g(\016)21 b FD(])30
+b(ep)s(o)s(c)m(h)f(J2000",)j(whic)m(h)c(means)h(something)g(di\013eren)
+m(t)g(to)h(do)g(with)0 3718 y(prop)s(er)f(motion\).)0
+4009 y Fv(4.6)112 b(Ep)s(o)s(c)m(h)0 4229 y FD(The)29
+b(w)m(ord)f(\\ep)s(o)s(c)m(h")i(just)f(means)g(a)g(signi\014can)m(t)f
+(momen)m(t)i(in)e(time,)h(and)g(can)g(b)s(e)g(supplied)c(in)j(a)i(v)-5
+b(ariet)m(y)29 b(of)0 4342 y(forms,)h(using)f(di\013eren)m(t)h
+(calendar)g(systems)g(and)g(time)g(scales.)0 4503 y(F)-8
+b(or)22 b(the)f(purp)s(ose)e(of)i(sp)s(ecifying)e(the)i(ep)s(o)s(c)m
+(hs)f(asso)s(ciated)h(with)f(the)h(mean)g(place)g(of)g(a)g(star,)i(t)m
+(w)m(o)f(con)m(v)m(en)m(tions)0 4616 y(exist.)37 b(Both)22
+b(sorts)e(of)h(ep)s(o)s(c)m(h)g(sup)s(er\014cially)c(resem)m(ble)j(y)m
+(ears)i(AD)f(but)f(are)h(not)g(tied)g(to)g(the)g(civil)e(\(Gregorian\))
+0 4729 y(calendar;)43 b(to)c(distinguish)d(them)i(from)h(ordinary)e
+(calendar-y)m(ears)i(there)h(is)d(often)j(a)f(\\.0")h(su\016x)e(\(as)i
+(in)0 4842 y(\\1950.0"\),)34 b(although)c(an)m(y)h(other)f(fractional)g
+(part)h(is)e(p)s(erfectly)g(legal)i(\()p Fq(e.g.)f FD(1987.5\).)0
+5003 y(The)39 b(older)g(system,)j Fq(Besselian)g(ep)-5
+b(o)g(ch)p FD(,)43 b(is)c(de\014ned)f(in)g(suc)m(h)i(a)g(w)m(a)m(y)g
+(that)g(its)f(units)f(are)i(tropical)f(y)m(ears)0 5116
+y(of)g(ab)s(out)g(365.2422)j(da)m(ys)d(and)f(its)g(time)h(scale)g(is)f
+(the)h(obsolete)g Fq(Ephemeris)i(Time)p FD(.)67 b(The)38
+b(start)h(of)g(the)0 5229 y(Besselian)28 b(y)m(ear)h(is)f(the)h(momen)m
+(t)g(when)f(the)h(ecliptic)e(longitude)g(of)i(the)g(mean)g(Sun)e(is)h
+(280)3183 5196 y Fp(\016)3223 5229 y FD(;)i(this)d(happ)s(ens)0
+5342 y(near)j(the)h(start)g(of)f(the)h(calendar)f(y)m(ear)h(\(whic)m(h)
+e(is)h(wh)m(y)g(280)2112 5309 y Fp(\016)2183 5342 y FD(w)m(as)h(c)m
+(hosen\).)p 0 5425 1512 4 v 104 5479 a Fs(4)138 5510
+y Fr(An)d(equino)n(x)g(is,)j(ho)n(w)n(ev)n(er,)f(not)f(required)f(for)i
+(co)r(ordinates)g(in)f(the)f(In)n(ternational)h(Celestial)j(Reference)d
+(System.)43 b(Suc)n(h)0 5602 y(co)r(ordinates)31 b(m)n(ust)e(b)r(e)h
+(lab)r(elled)h(simply)e(\\ICRS",)h(or)g(the)g(sp)r(eci\014c)g
+(catalogue)i(can)e(b)r(e)g(men)n(tioned,)g(suc)n(h)f(as)i
+(\\Hipparcos";)0 5693 y(constructions)26 b(suc)n(h)g(as)g(\\Hipparcos,)
+h(J2000")h(are)e(redundan)n(t)e(and)h(misleading.)p eop
+%%Page: 182 184
+182 183 bop 0 52 a FD(182)0 351 y(The)38 b(new)h(system,)j
+Fq(Julian)e(ep)-5 b(o)g(ch)p FD(,)43 b(w)m(as)d(adopted)f(as)g(part)g
+(of)g(the)g(IA)m(U)h(1976)h(revisions)c(\(ab)s(out)i(whic)m(h)0
+464 y(more)34 b(will)d(b)s(e)j(said)f(in)f(due)i(course\))g(and)f(came)
+i(formally)e(in)m(to)h(use)f(at)i(the)f(b)s(eginning)d(of)k(1984.)53
+b(It)34 b(uses)0 577 y(the)f(Julian)e(y)m(ear)j(of)g(exactly)g(365.25)h
+(da)m(ys;)g(Julian)c(ep)s(o)s(c)m(h)i(2000)i(is)d(de\014ned)g(to)i(b)s
+(e)f(2000)i(Jan)m(uary)d(1.5)j(in)0 690 y(the)c(TT)e(time)h(scale.)0
+851 y(F)-8 b(or)36 b(sp)s(ecifying)d(mean)j(places,)g(v)-5
+b(arious)34 b(standard)h(ep)s(o)s(c)m(hs)g(are)g(in)f(use,)j(the)e
+(most)h(common)f(ones)h(b)s(eing)0 964 y(Besselian)41
+b(ep)s(o)s(c)m(h)h(1950.0)i(and)e(Julian)d(ep)s(o)s(c)m(h)j(2000.0.)78
+b(T)-8 b(o)42 b(distinguish)d(the)j(t)m(w)m(o)h(systems,)i(Besselian)0
+1077 y(ep)s(o)s(c)m(hs)24 b(are)h(no)m(w)g(pre\014xed)f(\\B")i(and)e
+(Julian)e(ep)s(o)s(c)m(hs)j(are)g(pre\014xed)e(\\J".)j(Ep)s(o)s(c)m(hs)
+e(without)g(an)g(initial)e(letter)0 1190 y(can)32 b(b)s(e)e(assumed)h
+(to)h(b)s(e)f(Besselian)g(if)f(b)s(efore)h(1984.0,)k(otherwise)30
+b(Julian.)42 b(These)31 b(details)f(are)i(supp)s(orted)0
+1303 y(b)m(y)39 b(the)h(SLALIB)f(routines)f(sla)p Ft(_)p
+FD(DBJIN)i(\(deco)s(des)f(n)m(um)m(b)s(ers)f(from)h(a)h(c)m(haracter)h
+(string,)g(accepting)g(an)0 1416 y(optional)33 b(leading)g(B)i(or)f
+(J\),)h(sla)p Ft(_)p FD(KBJ)e(\(decides)h(whether)g(B)g(or)h(J)f(dep)s
+(ending)d(on)k(pre\014x)e(or)h(range\))h(and)0 1529 y(sla)p
+Ft(_)p FD(EPCO)29 b(\(con)m(v)m(erts)j(one)f(ep)s(o)s(c)m(h)f(to)h
+(matc)m(h)g(another\).)0 1690 y(SLALIB)23 b(has)f(four)h(routines)f
+(for)g(con)m(v)m(erting)i(Besselian)f(and)f(Julian)f(ep)s(o)s(c)m(hs)h
+(in)m(to)h(other)h(forms.)37 b(The)23 b(func-)0 1803
+y(tions)30 b(sla)p Ft(_)p FD(EPB2D)h(and)f(sla)p Ft(_)p
+FD(EPJ2D)g(con)m(v)m(ert)i(Besselian)e(and)h(Julian)d(ep)s(o)s(c)m(hs)i
+(in)m(to)h(MJD;)g(the)g(functions)0 1916 y(sla)p Ft(_)p
+FD(EPB)f(and)f(sla)p Ft(_)p FD(EPJ)h(do)g(the)g(rev)m(erse.)42
+b(F)-8 b(or)31 b(example,)f(to)h(express)f(B1950)j(as)d(a)h(Julian)d
+(ep)s(o)s(c)m(h:)573 2172 y Ft(DOUBLE)46 b(PRECISION)f
+(sla_EPJ,sla_EPB2D)620 2285 y(:)573 2398 y(WRITE)h
+(\(*,'\(1X,''J'',F10.5\)'\))c(sla_EPJ\(sla_EPB2D\(1950D0)o(\)\))0
+2655 y FD(\(The)30 b(answ)m(er)g(is)g(J1949.99979.\))0
+2946 y Fv(4.7)112 b(Prop)s(er)37 b(Motion)0 3166 y FD(Stars)29
+b(in)f(catalogues)i(usually)d(ha)m(v)m(e,)k(in)d(addition)f(to)j(the)f
+([)15 b Fl(\013;)g(\016)21 b FD(])29 b(co)s(ordinates,)g(a)h
+Fq(pr)-5 b(op)g(er)34 b(motion)c FD([)p Fl(\026)3546
+3180 y Ff(\013)3596 3166 y Fl(;)15 b(\026)3691 3181 y
+Ff(\016)3729 3166 y FD(].)0 3279 y(This)37 b(is)h(an)h(in)m(trinsic)e
+(motion)i(of)g(the)g(star)h(across)f(the)h(bac)m(kground.)66
+b(V)-8 b(ery)40 b(few)f(stars)g(ha)m(v)m(e)h(a)g(prop)s(er)0
+3392 y(motion)d(whic)m(h)g(exceeds)h(1)956 3355 y Fk(0)l(0)997
+3392 y FD(/y)m(ear,)j(and)c(most)g(are)h(far)g(b)s(elo)m(w)f(this)f
+(lev)m(el.)62 b(A)38 b(star)f(observ)m(ed)h(as)g(part)f(of)0
+3504 y(normal)29 b(astronom)m(y)j(researc)m(h)f(will,)d(as)i(a)h(rule,)
+e(ha)m(v)m(e)j(a)f(prop)s(er)d(motion)j(whic)m(h)e(is)g(unkno)m(wn.)0
+3666 y(Mean)23 b([)15 b Fl(\013;)g(\016)20 b FD(])j(and)f(rate)h(of)g
+(c)m(hange)h(are)f(not)f(su\016cien)m(t)g(to)i(pin)c(do)m(wn)i(a)h
+(star;)j(the)d(ep)s(o)s(c)m(h)f(at)h(whic)m(h)e(the)i([)15
+b Fl(\013;)g(\016)20 b FD(])0 3779 y(w)m(as)27 b(or)h(will)c(b)s(e)j
+(correct)h(is)e(also)h(needed.)39 b(Note)29 b(the)e(distinction)e(b)s
+(et)m(w)m(een)j(the)f(ep)s(o)s(c)m(h)g(whic)m(h)f(sp)s(eci\014es)f(the)
+0 3892 y(co)s(ordinate)36 b(system)g(and)f(the)i(ep)s(o)s(c)m(h)e(at)i
+(whic)m(h)e(the)h(star)g(passed)g(through)f(the)h(giv)m(en)g([)15
+b Fl(\013;)g(\016)20 b FD(].)58 b(The)36 b(full)0 4004
+y(sp)s(eci\014cation)28 b(for)h(a)h(star)g(is)e([)15
+b Fl(\013;)g(\016)20 b FD(],)30 b(prop)s(er)e(motions,)i(equino)m(x)e
+(and)h(ep)s(o)s(c)m(h)g(\(plus)f(something)h(to)h(iden)m(tify)0
+4117 y(whic)m(h)24 b(set)h(of)g(mo)s(dels)f(for)h(the)g(precession)f
+Fq(etc.)h FD(is)f(b)s(eing)f(used)i({)g(see)h(the)f(next)g(section\).)
+39 b(F)-8 b(or)26 b(con)m(v)m(enience,)0 4230 y(co)s(ordinates)j(giv)m
+(en)g(in)e(star)i(catalogues)i(are)e(almost)g(alw)m(a)m(ys)h(adjusted)e
+(to)i(mak)m(e)g(the)f(equino)m(x)f(and)h(ep)s(o)s(c)m(h)0
+4343 y(the)i(same)f({)h(for)f(example)g(B1950)j(in)c(the)h(case)i(of)e
+(the)h(SA)m(O)f(catalogue.)0 4504 y(SLALIB)36 b(pro)m(vides)f(one)h
+(routine)g(to)g(handle)f(prop)s(er)g(motion)h(on)g(its)g(o)m(wn,)i(sla)
+p Ft(_)p FD(PM.)d(Prop)s(er)h(motion)f(is)0 4617 y(also)29
+b(allo)m(w)m(ed)h(for)f(in)f(v)-5 b(arious)28 b(other)i(routines)e(as)i
+(appropriate,)f(for)g(example)g(sla)p Ft(_)p FD(MAP)g(and)g(sla)p
+Ft(_)p FD(FK425.)0 4730 y(Note)37 b(that)f(in)e(all)g(SLALIB)h
+(routines)f(whic)m(h)g(in)m(v)m(olv)m(e)i(prop)s(er)e(motion)h(the)h
+(units)d(are)j(radians)e(p)s(er)h(y)m(ear)0 4843 y(and)c(the)i
+Fl(\013)f FD(comp)s(onen)m(t)g(is)f(in)g(the)h(form)51
+b(_)-44 b Fl(\013)32 b FD(\()p Fq(i.e.)g FD(big)f(n)m(um)m(b)s(ers)g
+(near)h(the)g(p)s(oles\).)45 b(Some)32 b(star)g(catalogues)0
+4956 y(ha)m(v)m(e)e(prop)s(er)e(motion)h(p)s(er)f(cen)m(tury)-8
+b(,)31 b(and)d(in)g(some)i(catalogues)g(the)g Fl(\013)f
+FD(comp)s(onen)m(t)h(is)e(in)g(the)h(form)48 b(_)-44
+b Fl(\013)16 b FD(cos)g Fl(\016)0 5069 y FD(\()p Fq(i.e.)30
+b FD(angle)g(on)h(the)f(sky\).)0 5360 y Fv(4.8)112 b(P)m(arallax)37
+b(and)h(Radial)f(V)-9 b(elo)s(cit)m(y)0 5580 y FD(F)h(or)32
+b(the)f(utmost)g(accuracy)h(and)e(the)h(nearest)g(stars,)h(allo)m(w)m
+(ance)f(can)g(b)s(e)g(made)f(for)h Fq(annual)j(p)-5 b(ar)g(al)5
+b(lax)45 b FD(and)0 5693 y(for)30 b(the)h(e\013ects)g(of)g(p)s(ersp)s
+(ectiv)m(e)f(on)g(the)g(prop)s(er)f(motion.)p eop
+%%Page: 183 185
+183 184 bop 0 52 a Fw(SUN/67.70)3206 b FD(183)0 351 y(P)m(arallax)33
+b(is)g(appreciable)f(only)g(for)h(nearb)m(y)h(stars;)h(ev)m(en)f(the)f
+(nearest,)i(Pro)m(xima)e(Cen)m(tauri,)h(is)e(displaced)0
+464 y(from)e(its)g(a)m(v)m(erage)j(p)s(osition)28 b(b)m(y)i(less)g
+(than)g(an)g(arcsecond)h(as)g(the)g(Earth)f(rev)m(olv)m(es)h(in)e(its)h
+(orbit.)0 633 y(F)-8 b(or)26 b(stars)g(with)f(a)h(kno)m(wn)f(parallax,)
+h(kno)m(wledge)g(of)g(the)f(radial)g(v)m(elo)s(cit)m(y)h(allo)m(ws)f
+(the)h(prop)s(er)e(motion)i(to)g(b)s(e)0 746 y(expressed)j(as)h(an)f
+(actual)h(space)h(motion)e(in)f(3)i(dimensions.)38 b(The)29
+b(prop)s(er)f(motion)i(is,)f(in)f(fact,)j(a)f(snapshot)0
+859 y(of)36 b(the)h(transv)m(erse)f(comp)s(onen)m(t)h(of)f(the)g(space)
+h(motion,)g(and)f(in)f(the)h(case)h(of)g(nearb)m(y)f(stars)g(will)d(c)m
+(hange)0 972 y(with)c(time)h(due)g(to)h(p)s(ersp)s(ectiv)m(e.)0
+1141 y(SLALIB)i(do)s(es)g(not)h(pro)m(vide)f(facilities)f(for)h
+(handling)f(parallax)g(and)h(radial-v)m(elo)s(cit)m(y)g(on)h(their)e(o)
+m(wn,)j(but)0 1254 y(their)22 b(con)m(tribution)f(is)g(allo)m(w)m(ed)i
+(for)f(in)f(suc)m(h)h(routines)g(as)h(sla)p Ft(_)p FD(PM,)f(sla)p
+Ft(_)p FD(MAP)g(and)g(sla)p Ft(_)p FD(FK425.)39 b(Catalogue)0
+1367 y(mean)31 b(places)h(do)f(not)h(include)d(the)i(e\013ects)i(of)f
+(parallax)e(and)h(are)g(therefore)h Fq(b)-5 b(aryc)g(entric)p
+FD(;)34 b(when)c(p)s(oin)m(ting)0 1480 y(telescop)s(es)39
+b Fq(etc.)f FD(it)g(is)f(usually)f(most)j(e\016cien)m(t)g(to)g(apply)e
+(the)h(slo)m(wly-c)m(hanging)g(parallax)f(correction)i(to)0
+1593 y(the)32 b(mean)h(place)f(of)g(the)h(target)g(early)f(on)g(and)g
+(to)h(w)m(ork)f(with)f(the)i Fq(ge)-5 b(o)g(c)g(entric)38
+b FD(mean)32 b(place.)47 b(This)30 b(latter)0 1705 y(approac)m(h)h(is)e
+(implied)e(in)i(Figure)h(1.)0 2020 y Fv(4.9)112 b(Ab)s(erration)0
+2250 y FD(The)32 b(\014nite)g(sp)s(eed)g(of)h(ligh)m(t)f(com)m(bined)f
+(with)h(the)h(motion)f(of)h(the)g(observ)m(er)g(around)f(the)h(Sun)e
+(during)f(the)0 2363 y(y)m(ear)g(causes)g(apparen)m(t)g(displacemen)m
+(ts)e(of)i(the)f(p)s(ositions)f(of)h(the)h(stars.)41
+b(The)29 b(e\013ect)i(is)d(called)h(the)g Fq(annual)0
+2476 y(ab)-5 b(err)g(ation)40 b FD(\(or)e(\\stellar")f(ab)s
+(erration\).)61 b(Its)38 b(maxim)m(um)e(size,)j(ab)s(out)f(20)2628
+2439 y Fk(0)l(0)2632 2476 y Fl(:)p FD(5,)i(o)s(ccurs)e(for)f(stars)g
+(90)3517 2443 y Fp(\016)3595 2476 y FD(from)0 2589 y(the)g(p)s(oin)m(t)
+f(to)m(w)m(ards)i(whic)m(h)d(the)i(Earth)g(is)f(headed)h(as)g(it)f
+(orbits)g(the)h(Sun;)i(a)e(star)g(exactly)h(in)e(line)f(with)0
+2702 y(the)42 b(Earth's)f(motion)h(is)e(not)i(displaced.)73
+b(T)-8 b(o)42 b(receiv)m(e)g(the)g(ligh)m(t)f(of)h(a)g(star,)i(the)e
+(telescop)s(e)g(has)g(to)g(b)s(e)0 2815 y(o\013set)g(sligh)m(tly)d(in)h
+(the)h(direction)f(of)h(the)h(Earth's)e(motion.)73 b(A)41
+b(familiar)e(analogy)i(is)f(the)i(need)f(to)g(tilt)0
+2928 y(y)m(our)30 b(um)m(brella)e(forw)m(ard)h(when)g(on)h(the)g(mo)m
+(v)m(e,)i(to)f(a)m(v)m(oid)f(getting)h(w)m(et.)41 b(This)28
+b(classical)i(mo)s(del)e(is,)i(in)e(fact,)0 3041 y(misleading)f(in)h
+(the)h(con)m(text)i(of)f(ligh)m(t)e(as)i(opp)s(osed)e(to)i(rain,)f(but)
+f(happ)s(ens)g(to)i(giv)m(e)f(the)h(same)f(answ)m(er)h(as)f(a)0
+3154 y(relativistic)g(treatmen)m(t)j(to)f(\014rst)e(order)h(\(b)s
+(etter)h(than)f(1)h(milliarcsecond\).)0 3323 y(Before)e(the)f(IA)m(U)h
+(1976)g(resolutions,)e(di\013eren)m(t)h(v)-5 b(alues)27
+b(for)h(the)g(appro)m(ximately)f(20)2916 3286 y Fk(0)m(0)2920
+3323 y Fl(:)p FD(5)j Fq(ab)-5 b(err)g(ation)33 b(c)-5
+b(onstant)0 3436 y FD(w)m(ere)33 b(emplo)m(y)m(ed)h(at)f(di\013eren)m
+(t)g(times,)g(and)f(this)g(can)h(complicate)h(comparisons)e(b)s(et)m(w)
+m(een)h(di\013eren)m(t)g(cata-)0 3548 y(logues.)53 b(Another)34
+b(complication)g(comes)h(from)f(the)h(so-called)f Fq(E-terms)j(of)f(ab)
+-5 b(err)g(ation)p FD(,)39 b(that)c(small)e(part)0 3661
+y(of)k(the)g(ann)m(ual)f(ab)s(erration)g(correction)h(that)g(is)f(a)h
+(function)f(of)h(the)g(eccen)m(tricit)m(y)h(of)f(the)f(Earth's)h
+(orbit.)0 3774 y(The)29 b(E-terms,)i(maxim)m(um)e(amplitude)f(ab)s(out)
+h(0)1709 3737 y Fk(0)l(0)1713 3774 y Fl(:)p FD(3,)i(happ)s(en)e(to)h(b)
+s(e)g(appro)m(ximately)f(constan)m(t)i(for)f(a)g(giv)m(en)0
+3887 y(star,)36 b(and)e(so)h(they)f(used)g(to)h(b)s(e)f(incorp)s
+(orated)f(in)h(the)g(catalogue)i([)15 b Fl(\013;)g(\016)21
+b FD(])34 b(to)i(reduce)e(the)h(lab)s(our)d(of)j(con-)0
+4000 y(v)m(erting)h(to)g(and)f(from)g(apparen)m(t)h(place.)57
+b(The)35 b(E-terms)h(can)g(b)s(e)f(remo)m(v)m(ed)i(from)e(a)h
+(catalogue)h([)15 b Fl(\013;)g(\016)21 b FD(])36 b(b)m(y)0
+4113 y(calling)28 b(sla)p Ft(_)p FD(SUBET)g(or)i(applied)d(\(for)j
+(example)f(to)h(allo)m(w)f(a)h(pulsar)e(timing-p)s(osition)e(to)31
+b(b)s(e)d(plotted)i(on)f(a)0 4226 y(B1950)e(\014nding)c(c)m(hart\))k(b)
+m(y)e(calling)e(sla)p Ft(_)p FD(ADDET;)j(the)f(E-terms)g(v)m(ector)i
+(itself)d(can)i(b)s(e)e(obtained)h(b)m(y)g(calling)0
+4339 y(sla)p Ft(_)p FD(ETRMS.)g(Star)i(p)s(ositions)d(p)s(ost)i(IA)m(U)
+h(1976)h(are)f(free)g(of)f(these)h(distortions,)f(and)g(to)h(apply)e
+(corrections)0 4452 y(for)32 b(ann)m(ual)g(ab)s(erration)g(in)m(v)m
+(olv)m(es)h(the)g(actual)g(barycen)m(tric)f(v)m(elo)s(cit)m(y)i(of)e
+(the)h(Earth)g(rather)f(than)h(the)g(use)0 4565 y(of)e(canonical)f
+(circular-orbit)e(mo)s(dels.)0 4734 y(The)40 b(ann)m(ual)f(ab)s
+(erration)h(is)f(the)i(ab)s(erration)e(correction)i(for)f(an)g
+(imaginary)f(observ)m(er)i(at)g(the)g(Earth's)0 4847
+y(cen)m(tre.)h(The)30 b(motion)g(of)h(a)g(real)f(observ)m(er)g(around)g
+(the)g(Earth's)h(rotation)g(axis)e(in)h(the)g(course)h(of)f(the)h(da)m
+(y)0 4959 y(mak)m(es)e(a)g(small)e(extra)i(con)m(tribution)e(to)i(the)g
+(total)g(ab)s(erration)f(e\013ect)i(called)d(the)i Fq(diurnal)j(ab)-5
+b(err)g(ation)p FD(.)42 b(Its)0 5072 y(maxim)m(um)29
+b(amplitude)g(is)g(ab)s(out)h(0)1245 5036 y Fk(0)l(0)1249
+5072 y Fl(:)p FD(3.)0 5241 y(No)k(SLALIB)e(routine)h(is)f(pro)m(vided)g
+(for)h(calculating)f(the)i(ab)s(erration)e(on)h(its)g(o)m(wn,)h(though)
+f(the)g(required)0 5354 y(v)m(elo)s(cit)m(y)42 b(v)m(ectors)h(can)f(b)s
+(e)g(generated)g(using)e(sla)p Ft(_)p FD(EVP)h(\(or)h(sla)p
+Ft(_)p FD(EPV\))g(and)f(sla)p Ft(_)p FD(GEOC.)g(Ann)m(ual)f(and)0
+5467 y(diurnal)32 b(ab)s(erration)j(are)h(allo)m(w)m(ed)f(for)g(where)g
+(required,)g(for)g(example)h(in)e(sla)p Ft(_)p FD(MAP)h
+Fq(etc)p FD(.)g(and)g(sla)p Ft(_)p FD(A)m(OP)0 5580 y
+Fq(etc)p FD(.)62 b(Note)39 b(that)f(this)e(sort)i(of)f(ab)s(erration)g
+(is)g(di\013eren)m(t)f(from)h(the)h Fq(planetary)j(ab)-5
+b(err)g(ation)p FD(,)43 b(whic)m(h)36 b(is)g(the)0 5693
+y(apparen)m(t)43 b(displacemen)m(t)f(of)h(a)g(solar-system)g(b)s(o)s
+(dy)-8 b(,)45 b(with)d(resp)s(ect)h(to)g(the)g(ephemeris)f(p)s
+(osition,)i(as)f(a)p eop
+%%Page: 184 186
+184 185 bop 0 52 a FD(184)0 351 y(consequence)41 b(of)g(the)g(motion)f
+(of)g Fq(b)-5 b(oth)49 b FD(the)41 b(Earth)f(and)g(the)h(source.)71
+b(The)40 b(planetary)g(ab)s(erration)f(can)0 464 y(b)s(e)31
+b(computed)g(either)g(b)m(y)g(correcting)h(the)f(p)s(osition)f(of)i
+(the)f(solar-system)h(b)s(o)s(dy)d(for)j(ligh)m(t-time,)f(follo)m(w)m
+(ed)0 577 y(b)m(y)36 b(the)h(ordinary)e(stellar)g(ab)s(erration)h
+(correction,)i(or)f(more)f(directly)f(b)m(y)i(expressing)e(the)i(p)s
+(osition)d(and)0 690 y(v)m(elo)s(cit)m(y)d(of)f(the)h(source)f(in)g
+(the)g(observ)m(er's)h(frame)f(and)g(correcting)h(for)f(ligh)m(t-time)f
+(alone.)0 965 y Fv(4.10)112 b(Di\013eren)m(t)37 b(Sorts)g(of)h(Mean)g
+(Place)0 1175 y FD(A)f(confusing)f(asp)s(ect)h(of)g(the)g(mean)g
+(places)g(used)f(in)g(the)h(pre-ICRS)f(era)h(is)f(that)i(they)f(are)g
+(sensitiv)m(e)g(to)0 1288 y(the)43 b(precise)g(w)m(a)m(y)h(they)f(w)m
+(ere)g(determined.)78 b(A)43 b(mean)g(place)g(is)f(not)h(directly)f
+(observ)-5 b(able,)46 b(ev)m(en)e(with)0 1401 y(fundamen)m(tal)25
+b(instrumen)m(ts)g(suc)m(h)h(as)g(transit)g(circles,)h(and)e(to)i(pro)s
+(duce)e(one)i(will)d(in)m(v)m(olv)m(e)i(relying)f(on)h(some)0
+1514 y(existing)36 b(star)h(catalogue,)k(for)c(example)f(the)i
+(fundamen)m(tal)d(catalogues)k(FK4)e(and)g(FK5,)i(and)e(applying)0
+1626 y(giv)m(en)h(mathematical)g(mo)s(dels)e(of)i(precession,)h(n)m
+(utation,)h(ab)s(erration)d(and)g(so)h(on.)63 b(Note)39
+b(in)d(particular)0 1739 y(that)29 b(no)g(star)g(catalogue,)i(ev)m(en)e
+(a)g(fundamen)m(tal)f(catalogue)j(suc)m(h)d(as)h(FK4)g(or)g(FK5,)h
+(de\014nes)d(a)j(co)s(ordinate)0 1852 y(system,)43 b(strictly)c(sp)s
+(eaking;)k(it)d(is)f(merely)g(a)h(list)f(of)h(star)g(p)s(ositions)e
+(and)h(prop)s(er)f(motions.)69 b(Ho)m(w)m(ev)m(er,)0
+1965 y(once)42 b(the)g(stars)g(from)g(a)g(giv)m(en)f(catalogue)j(are)e
+(used)f(as)h(p)s(osition)e(calibrators,)k Fq(e.g.)d FD(for)h
+(transit-circle)0 2078 y(observ)-5 b(ations)44 b(or)h(for)g(plate)g
+(reductions,)i(then)e(a)g(broader)f(sense)h(of)g(there)g(b)s(eing)f(a)h
+(co)s(ordinate)g(grid)0 2191 y(naturally)28 b(arises,)i(and)f(suc)m(h)g
+(phrases)g(as)h(\\in)f(the)h(system)g(of)g(the)f(FK4")i(can)f
+(legitimately)f(b)s(e)g(emplo)m(y)m(ed.)0 2304 y(Ho)m(w)m(ev)m(er,)43
+b(there)d(is)e(no)h(formal)f(link)f(b)s(et)m(w)m(een)i(the)g(t)m(w)m(o)
+i(concepts)f({)f(no)g(\\standard)f(least)i(squares)e(\014t")0
+2417 y(b)s(et)m(w)m(een)e(realit)m(y)g(and)f(the)h(inevitably)d(\015a)m
+(w)m(ed)j(catalogues.)58 b(All)35 b(suc)m(h)g(catalogues)i(su\013er)e
+(at)i(some)f(lev)m(el)0 2530 y(from)i(systematic,)k(zonal)c
+(distortions)f(of)i(b)s(oth)f(the)h(star)g(p)s(ositions)e(and)h(of)g
+(the)h(prop)s(er)f(motions,)i(and)0 2643 y(include)28
+b(measuremen)m(t)j(errors)f(p)s(eculiar)e(to)j(individual)26
+b(stars.)0 2793 y(Man)m(y)21 b(of)g(these)f(complications)g(are)g(of)h
+(little)e(signi\014cance)h(except)h(to)g(sp)s(ecialists.)35
+b(Ho)m(w)m(ev)m(er,)25 b(observ)-5 b(ational)0 2906 y(astronomers)37
+b(cannot)g(escap)s(e)f(exp)s(osure)g(to)h(at)g(least)g(the)f(t)m(w)m(o)
+i(main)d(v)-5 b(arieties)36 b(of)h(mean)f(place,)i(lo)s(osely)0
+3019 y(called)33 b(FK4)h(and)f(FK5,)i(and)e(should)e(b)s(e)i(a)m(w)m
+(are)i(of)f(certain)f(pitfalls.)48 b(F)-8 b(or)34 b(most)g(practical)g
+(purp)s(oses)d(the)0 3132 y(more)38 b(recen)m(t)h(system,)h(FK5,)h(is)c
+(free)h(of)g(surprises)d(and)j(tolerates)h(naiv)m(e)f(use)f(w)m(ell.)63
+b(FK4,)40 b(in)d(con)m(trast,)0 3245 y(con)m(tains)31
+b(t)m(w)m(o)g(imp)s(ortan)m(t)f(traps:)136 3440 y Fo(\017)46
+b FD(The)40 b(FK4)h(system)g(rotates)h(at)g(ab)s(out)e(0)1698
+3403 y Fk(0)l(0)1702 3440 y Fl(:)p FD(5)h(p)s(er)f(cen)m(tury)h
+(relativ)m(e)g(to)g(distan)m(t)f(galaxies.)72 b(This)38
+b(is)227 3553 y(manifested)26 b(as)h(a)h(systematic)f(distortion)f(in)f
+(the)i(prop)s(er)f(motions)g(of)h(all)f(FK4-deriv)m(ed)h(catalogues,)
+227 3666 y(whic)m(h)43 b(will)e(in)i(turn)g(p)s(ollute)f(an)m(y)i
+(astrometry)h(done)e(using)g(those)h(catalogues.)83 b(F)-8
+b(or)45 b(example,)227 3779 y(FK4-based)35 b(astrometry)h(of)e(a)h(QSO)
+f(using)f(plates)h(tak)m(en)i(decades)f(apart)g(will)d(rev)m(eal)j(a)g
+(non-zero)227 3892 y Fq(\014ctitious)f(pr)-5 b(op)g(er)36
+b(motion)p FD(,)d(and)e(an)m(y)h(FK4)f(star)h(whic)m(h)e(happ)s(ens)g
+(to)i(ha)m(v)m(e)g(zero)g(prop)s(er)e(motion)h(is,)227
+4005 y(in)e(fact,)j(slo)m(wly)d(mo)m(ving)h(against)h(the)f(distan)m(t)
+g(bac)m(kground.)41 b(The)30 b(FK4)h(frame)f(rotates)i(b)s(ecause)e(it)
+227 4118 y(w)m(as)e(established)d(b)s(efore)i(the)g(nature)g(of)g(the)h
+(Milky)e(W)-8 b(a)m(y)g(,)30 b(and)c(hence)i(the)f(existence)h(of)f
+(systematic)227 4231 y(motions)j(of)h(nearb)m(y)f(stars,)h(had)e(b)s
+(een)h(recognized.)136 4406 y Fo(\017)46 b FD(Star)27
+b(p)s(ositions)f(in)g(the)h(FK4)h(system)g(are)f(part-corrected)i(for)e
+(ann)m(ual)f(ab)s(erration)h(\(see)h(ab)s(o)m(v)m(e\))h(and)227
+4519 y(em)m(b)s(o)s(dy)h(the)g(so-called)g(E-terms)h(of)f(ab)s
+(erration.)0 4714 y(The)i(c)m(hange)j(from)d(the)h(old)f(FK4-based)i
+(system)f(to)h(FK5)f(o)s(ccurred)f(at)i(the)f(b)s(eginning)e(of)i(1984)
+h(as)g(part)0 4827 y(of)f(a)h(pac)m(k)-5 b(age)35 b(of)f(resolutions)d
+(made)i(b)m(y)h(the)f(IA)m(U)h(in)e(1976,)k(along)d(with)f(the)h
+(adoption)g(of)g(J2000)i(as)e(the)0 4940 y(reference)i(ep)s(o)s(c)m(h.)
+52 b(Star)34 b(p)s(ositions)f(in)g(the)h(new)m(er,)i(FK5,)g(system)e
+(are)h(free)f(from)g(the)h(E-terms,)h(and)d(the)0 5053
+y(system)27 b(is)f(a)h(m)m(uc)m(h)g(b)s(etter)f(appro)m(ximation)g(to)h
+(an)g(inertial)e(frame)h({)i(ab)s(out)e(\014v)m(e)h(times)f(b)s(etter)h
+(\(and)g(ICRS)0 5166 y(is)i(h)m(undreds)g(of)h(times)g(b)s(etter)h
+(still\).)0 5317 y(It)e(ma)m(y)h(o)s(ccasionally)e(b)s(e)h(con)m(v)m
+(enien)m(t)h(to)g(sp)s(ecify)e(the)i(FK4)f(\014ctitious)f(prop)s(er)g
+(motion)h(directly)-8 b(.)39 b(In)29 b(FK4,)0 5429 y(the)i(cen)m
+(tennial)e(prop)s(er)g(motion)h(of)h(\(for)f(example\))h(a)g(QSO)e(is:)
+0 5580 y Fl(\026)55 5594 y Ff(\013)130 5580 y FD(=)24
+b Fo(\000)p FD(0)341 5547 y Fu(s)346 5580 y Fl(:)p FD(015869+\(\(0)827
+5547 y Fu(s)832 5580 y Fl(:)p FD(029032)52 b(sin)14 b
+Fl(\013)p FD(+0)1480 5547 y Fu(s)1485 5580 y Fl(:)p FD(000340)48
+b(cos)16 b Fl(\013)p FD(\))f(sin)g Fl(\016)s Fo(\000)p
+FD(0)2360 5547 y Fu(s)2365 5580 y Fl(:)p FD(000105)49
+b(cos)16 b Fl(\013)p Fo(\000)p FD(0)3020 5547 y Fu(s)3025
+5580 y Fl(:)p FD(000083)48 b(sin)14 b Fl(\013)p FD(\))h(sec)i
+Fl(\016)0 5693 y(\026)55 5708 y Ff(\016)133 5693 y FD(=)25
+b(+0)340 5656 y Fk(0)l(0)344 5693 y Fl(:)p FD(43549)48
+b(cos)16 b Fl(\013)p Fo(\000)p FD(0)948 5656 y Fk(0)l(0)952
+5693 y Fl(:)p FD(00510)48 b(sin)14 b Fl(\013)21 b FD(+)f(\(0)1622
+5656 y Fk(0)l(0)1626 5693 y Fl(:)p FD(00158)48 b(sin)14
+b Fl(\013)p Fo(\000)p FD(0)2220 5656 y Fk(0)m(0)2224
+5693 y Fl(:)p FD(00125)49 b(cos)16 b Fl(\013)p FD(\))f(sin)f
+Fl(\016)s Fo(\000)p FD(0)3049 5656 y Fk(0)m(0)3053 5693
+y Fl(:)p FD(00066)49 b(cos)16 b Fl(\016)p eop
+%%Page: 185 187
+185 186 bop 0 52 a Fw(SUN/67.70)3206 b FD(185)0 351 y
+Fv(4.11)112 b(Mean)39 b(Place)d(T)-9 b(ransformations)0
+573 y FD(Figure)28 b(1)h(is)f(based)h(up)s(on)e(three)i(v)-5
+b(arieties)28 b(of)h(mean)g([)15 b Fl(\013;)g(\016)20
+b FD(])29 b(all)f(of)h(whic)m(h)e(are)j(of)f(practical)f
+(signi\014cance)g(to)0 686 y(observing)h(astronomers)i(in)e(the)i
+(presen)m(t)f(era:)136 925 y Fo(\017)46 b FD(Old)37 b(st)m(yle)i
+(\(FK4\))h(with)d(kno)m(wn)h(prop)s(er)f(motion)h(in)f(the)i(FK4)g
+(system,)i(and)c(with)h(parallax)f(and)227 1038 y(radial)29
+b(v)m(elo)s(cit)m(y)i(either)f(kno)m(wn)g(or)g(assumed)g(zero.)136
+1226 y Fo(\017)46 b FD(Old)34 b(st)m(yle)i(\(FK4\))h(with)e(zero)h
+(prop)s(er)e(motion)i(in)e(FK5,)k(and)d(with)f(parallax)h(and)g(radial)
+f(v)m(elo)s(cit)m(y)227 1339 y(assumed)c(zero.)136 1528
+y Fo(\017)46 b FD(New)29 b(st)m(yle)g(\(FK5)h(or,)f(lo)s(osely)-8
+b(,)29 b(ICRS\))e(with)h(prop)s(er)f(motion,)i(parallax)f(and)g(radial)
+f(v)m(elo)s(cit)m(y)i(either)227 1640 y(kno)m(wn)h(or)h(assumed)e
+(zero.)0 1879 y(The)35 b(\014gure)f(outlines)g(the)i(steps)f(required)e
+(to)j(con)m(v)m(ert)h(p)s(ositions)c(in)h(an)m(y)i(of)f(these)h
+(systems)f(to)h(a)g(J2000)0 1992 y([)15 b Fl(\013;)g(\016)20
+b FD(])34 b(for)g(the)g(curren)m(t)f(ep)s(o)s(c)m(h,)i(as)f(migh)m(t)f
+(b)s(e)g(required)f(in)g(a)j(telescop)s(e-con)m(trol)g(program)e(for)h
+(example.)0 2105 y(Most)26 b(of)f(the)h(steps)f(can)g(b)s(e)g(carried)f
+(out)h(b)m(y)g(calling)f(a)h(single)f(SLALIB)h(routine;)h(there)f(are)h
+(other)f(SLALIB)0 2218 y(routines)h(whic)m(h)h(o\013er)h(set-piece)g
+(end-to-end)g(transformation)f(routines)f(for)i(common)g(cases.)40
+b(Note,)30 b(ho)m(w-)0 2331 y(ev)m(er,)38 b(that)d(SLALIB)g(do)s(es)g
+(not)h(set)f(out)h(to)g(pro)m(vide)e(the)i(capabilit)m(y)e(for)h
+(arbitrary)f(transformations)g(of)0 2443 y(star-catalogue)c(data)f(b)s
+(et)m(w)m(een)g(all)e(p)s(ossible)f(systems)i(of)g(mean)h([)15
+b Fl(\013;)g(\016)20 b FD(].)40 b(Only)27 b(in)g(the)h(\(common\))h
+(cases)g(of)0 2556 y(FK4,)36 b(equino)m(x)e(and)f(ep)s(o)s(c)m(h)h
+(B1950,)k(to)d(FK5,)h(equino)m(x)e(and)f(ep)s(o)s(c)m(h)h(J2000,)j(and)
+d Fq(vic)-5 b(e)36 b(versa)41 b FD(are)35 b(prop)s(er)0
+2669 y(motion,)29 b(parallax)e(and)h(radial)f(v)m(elo)s(cit)m(y)h
+(transformed)g(along)g(with)f(the)i(star)g(p)s(osition)d(itself,)i(the)
+g(fo)s(cus)g(of)0 2782 y(SLALIB)i(supp)s(ort.)0 2945
+y(As)25 b(an)g(example)f(of)h(using)f(SLALIB)g(to)i(transform)e(mean)h
+(places,)h(here)f(is)f(F)-8 b(ortran)25 b(co)s(de)g(that)h(implemen)m
+(ts)0 3058 y(the)35 b(top-left)g(path)f(of)h(Figure)f(1.)53
+b(An)34 b(FK4)h([)15 b Fl(\013;)g(\016)21 b FD(])34 b(of)h(arbitrary)f
+(equino)m(x)g(and)f(ep)s(o)s(c)m(h)i(and)f(with)f(kno)m(wn)0
+3171 y(prop)s(er)40 b(motion)h(and)g(parallax)g(is)f(transformed)h(in)m
+(to)h(an)f(FK5)h(J2000)h([)15 b Fl(\013;)g(\016)20 b
+FD(])42 b(for)f(the)h(curren)m(t)f(ep)s(o)s(c)m(h.)0
+3284 y(As)c(a)g(test)g(star)g(w)m(e)g(will)d(use)i Fl(\013)g
+FD(=16)1331 3251 y Fu(h)1390 3284 y FD(09)1480 3251 y
+Fu(m)1559 3284 y FD(55)1649 3251 y Fu(s)1654 3284 y Fl(:)p
+FD(13,)k Fl(\016)g FD(=)p Fo(\000)p FD(75)2146 3251 y
+Fp(\016)2201 3284 y FD(59)2291 3247 y Fk(0)2333 3284
+y FD(27)2418 3247 y Fk(0)m(0)2422 3284 y Fl(:)p FD(2,)g(equino)m(x)c
+(1900,)41 b(ep)s(o)s(c)m(h)36 b(1963.087,)0 3397 y Fl(\026)55
+3411 y Ff(\013)133 3397 y FD(=)p Fo(\000)p FD(0)320 3364
+y Fu(s)325 3397 y Fl(:)p FD(0312)p Fl(=y)s FD(,)f Fl(\026)738
+3412 y Ff(\016)805 3397 y FD(=+0)987 3360 y Fk(0)-5 b(0)991
+3397 y Fl(:)p FD(103)p Fl(=y)s FD(,)35 b(parallax)c(=)h(0)1800
+3360 y Fk(0)l(0)1804 3397 y Fl(:)p FD(062,)k(radial)30
+b(v)m(elo)s(cit)m(y)k(=)e Fo(\000)p FD(34)p Fl(:)p FD(22)i(km/s.)47
+b(The)32 b(date)h(of)0 3510 y(observ)-5 b(ation)30 b(is)f(1994.35.)573
+3774 y Ft(IMPLICIT)45 b(NONE)573 3886 y(DOUBLE)h(PRECISION)f(AS2R,S2R)
+573 3999 y(PARAMETER)g(\(AS2R=4.8481368110953599)o(D-6,)o(S2R=)o(7.2)o
+(7220)o(5216)o(643)o(0399)o(D-5\))573 4112 y(INTEGER)h(J,I)573
+4225 y(DOUBLE)g(PRECISION)f(R0,D0,EQ0,EP0,PR,PD,PX,RV)o(,EP)o(1,R1)o
+(,D1,)o(R2,)o(D2,R)o(3,D3)o(,)525 4338 y(:)811 b
+(R4,D4,R5,D5,R6,D6,EP1D,EP)o(1B,)o(W\(3\))o(,EB\()o(3\),)o(PXR,)o
+(V\(3\))573 4451 y(DOUBLE)46 b(PRECISION)f(sla_EPB,sla_EPJ2D)286
+4677 y(*)96 b(RA,)46 b(Dec)h(etc)g(of)g(example)f(star)573
+4790 y(CALL)g(sla_DTF2R\(16,09,55.13D0,R0)o(,J\))573
+4903 y(CALL)g(sla_DAF2R\(75,59,27.2D0,D0,)o(J\))573 5016
+y(D0=-D0)573 5128 y(EQ0=1900D0)573 5241 y(EP0=1963.087D0)573
+5354 y(PR=-0.0312D0*S2R)573 5467 y(PD=+0.103D0*AS2R)573
+5580 y(PX=0.062D0)573 5693 y(RV=-34.22D0)p eop
+%%Page: 186 188
+186 187 bop 0 52 a FD(186)573 351 y Ft(EP1=1994.35D0)286
+577 y(*)96 b(Epoch)46 b(of)h(observation)e(as)i(MJD)g(and)g(Besselian)e
+(epoch)573 690 y(EP1D=sla_EPJ2D\(EP1\))573 803 y(EP1B=sla_EPB\(EP1D\))
+286 1029 y(*)96 b(Space)46 b(motion)g(to)h(the)g(current)f(epoch)573
+1142 y(CALL)g(sla_PM\(R0,D0,PR,PD,PX,RV,E)o(P0,)o(EP1B)o(,R1,)o(D1\))
+286 1367 y(*)96 b(Remove)46 b(E-terms)f(of)j(aberration)d(for)i(the)f
+(original)g(equinox)573 1480 y(CALL)g(sla_SUBET\(R1,D1,EQ0,R2,D2\))286
+1706 y(*)96 b(Precess)45 b(to)j(B1950)573 1819 y(R3=R2)573
+1932 y(D3=D2)573 2045 y(CALL)e(sla_PRECES\('FK4',EQ0,1950D)o(0,R)o
+(3,D3)o(\))286 2271 y(*)96 b(Add)46 b(E-terms)g(for)h(the)g(standard)f
+(equinox)f(B1950)573 2384 y(CALL)h(sla_ADDET\(R3,D3,1950D0,R4,)o(D4\))
+286 2609 y(*)96 b(Transform)45 b(to)i(J2000,)f(no)h(proper)f(motion)573
+2722 y(CALL)g(sla_FK45Z\(R4,D4,EP1B,R5,D5)o(\))286 2948
+y(*)96 b(Parallax)573 3061 y(CALL)46 b(sla_EVP\(sla_EPJ2D\(EP1\),200)o
+(0D0)o(,W,E)o(B,W,)o(W\))573 3174 y(PXR=PX*AS2R)573 3287
+y(CALL)g(sla_DCS2C\(R5,D5,V\))573 3400 y(DO)h(I=1,3)716
+3513 y(V\(I\)=V\(I\)-PXR*EB\(I\))573 3626 y(END)g(DO)573
+3739 y(CALL)f(sla_DCC2S\(V,R6,D6\))620 3851 y(:)0 4073
+y FD(It)30 b(is)g(in)m(teresting)g(to)h(lo)s(ok)f(at)h(ho)m(w)f(the)h
+([)15 b Fl(\013;)g(\016)20 b FD(])31 b(c)m(hanges)g(during)d(the)j
+(course)f(of)h(the)f(calculation:)702 4274 y Ft(16)47
+b(09)g(55.130)f(-75)h(59)h(27.20)113 b Fq(original)34
+b(e)-5 b(quinox)33 b(and)g(ep)-5 b(o)g(ch)702 4387 y
+Ft(16)47 b(09)g(54.155)f(-75)h(59)h(23.98)113 b Fq(with)34
+b(sp)-5 b(ac)g(e)34 b(motion)702 4500 y Ft(16)47 b(09)g(54.229)f(-75)h
+(59)h(24.18)113 b Fq(with)34 b(old)f(E-terms)g(r)-5 b(emove)g(d)702
+4613 y Ft(16)47 b(16)g(28.213)f(-76)h(06)h(54.57)113
+b Fq(pr)-5 b(e)g(c)g(esse)g(d)35 b(to)e(1950.0)702 4726
+y Ft(16)47 b(16)g(28.138)f(-76)h(06)h(54.37)113 b Fq(with)34
+b(new)e(E-terms)702 4839 y Ft(16)47 b(23)g(07.901)f(-76)h(13)h(58.87)
+113 b Fq(J2000,)34 b(curr)-5 b(ent)33 b(ep)-5 b(o)g(ch)702
+4951 y Ft(16)47 b(23)g(07.907)f(-76)h(13)h(58.92)113
+b Fq(including)33 b(p)-5 b(ar)g(al)5 b(lax)0 5153 y FD(Other)30
+b(remarks)g(ab)s(out)g(the)h(ab)s(o)m(v)m(e)g(\(un)m(usually)d
+(complicated\))i(example:)136 5354 y Fo(\017)46 b FD(If)29
+b(the)g(original)e(equino)m(x)h(and)g(ep)s(o)s(c)m(h)h(w)m(ere)g
+(B1950,)i(as)f(is)d(quite)i(lik)m(ely)-8 b(,)28 b(then)h(it)f(w)m(ould)
+f(b)s(e)i(unneces-)227 5467 y(sary)c(to)i(treat)f(space)g(motions)f
+(and)g(E-terms)g(explicitly)-8 b(.)37 b(T)-8 b(ransformation)25
+b(to)h(FK5)g(J2000)h(could)d(b)s(e)227 5580 y(accomplished)30
+b(simply)e(b)m(y)i(calling)f(sla)p Ft(_)p FD(FK425,)j(after)f(whic)m(h)
+e(a)i(call)f(to)h(sla)p Ft(_)p FD(PM)f(and)g(the)h(parallax)227
+5693 y(co)s(de)g(w)m(ould)e(complete)i(the)f(w)m(ork.)p
+eop
+%%Page: 187 189
+187 188 bop 0 52 a Fw(SUN/67.70)3206 b FD(187)136 351
+y Fo(\017)46 b FD(The)32 b(rigorous)g(treatmen)m(t)i(of)e(the)h
+(E-terms)f(has)g(only)g(a)h(small)e(e\013ect)j(on)e(the)g(result.)46
+b(Suc)m(h)32 b(re\014ne-)227 464 y(men)m(ts)f(are,)h(nev)m(ertheless,)f
+(w)m(orth)m(while)f(in)g(order)g(to)i(facilitate)f(comparisons)f(and)g
+(to)i(increase)e(the)227 577 y(c)m(hances)i(that)f(star)f(p)s(ositions)
+e(from)i(di\013eren)m(t)g(suppliers)d(are)k(compatible.)136
+764 y Fo(\017)46 b FD(The)40 b(FK4)h(to)g(FK5)f(transformations,)j(sla)
+p Ft(_)p FD(FK425)e(and)e(sla)p Ft(_)p FD(FK45Z,)h(are)h(not)g(as)f(is)
+f(sometimes)227 877 y(assumed)24 b(simply)e(50)k(y)m(ears)f(of)g
+(precession,)g(though)f(this)g(indeed)f(accoun)m(ts)j(for)e(most)h(of)g
+(the)g(c)m(hange.)227 990 y(The)30 b(transformations)f(also)h(include)e
+(adjustmen)m(ts)i(to)h(the)f(equino)m(x,)g(a)g(revised)f(precession)g
+(mo)s(del,)227 1102 y(elimination)22 b(of)i(the)h(E-terms,)h(a)f(c)m
+(hange)g(to)g(the)g(prop)s(er-motion)e(time)h(unit)f(and)g(so)i(on.)38
+b(The)24 b(reason)227 1215 y(there)34 b(are)f(t)m(w)m(o)i(routines)d
+(rather)h(than)g(just)f(one)i(is)e(that)i(the)f(FK4)g(frame)h(rotates)g
+(relativ)m(e)f(to)h(the)227 1328 y(bac)m(kground,)c(whereas)f(the)h
+(FK5)g(frame)f(is)f(a)i(m)m(uc)m(h)g(b)s(etter)f(appro)m(ximation)f(to)
+j(an)e(inertial)e(frame,)227 1441 y(and)39 b(zero)i(prop)s(er)d(motion)
+h(in)f(FK4)i(do)s(es)f(not,)k(therefore,)f(mean)e(zero)g(prop)s(er)e
+(motion)i(in)e(FK5.)227 1554 y(SLALIB)i(also)g(pro)m(vides)f(t)m(w)m(o)
+i(routines,)g(sla)p Ft(_)p FD(FK524)g(and)e(sla)p Ft(_)p
+FD(FK54Z,)h(to)h(p)s(erform)d(the)j(in)m(v)m(erse)227
+1667 y(transformations.)136 1854 y Fo(\017)46 b FD(Some)21
+b(star)h(catalogues)g(\(FK4)g(itself)e(is)g(one\))i(w)m(ere)g
+(constructed)f(using)f(sligh)m(tly)f(di\013eren)m(t)i(pro)s(cedures)227
+1967 y(for)34 b(the)h(p)s(olar)e(regions)h(compared)h(with)e
+(elsewhere.)52 b(SLALIB)34 b(ignores)g(this)f(inhomogeneit)m(y)h(and)
+227 2079 y(alw)m(a)m(ys)22 b(applies)e(the)h(standard)g
+(transformations,)h(irresp)s(ectiv)m(e)f(of)g(lo)s(cation)g(on)g(the)h
+(celestial)f(sphere.)0 2371 y Fv(4.12)112 b(Mean)39 b(Place)d(to)h
+(Apparen)m(t)h(Place)0 2592 y FD(The)24 b Fq(ge)-5 b(o)g(c)g(entric)28
+b(app)-5 b(ar)g(ent)31 b(plac)-5 b(e)32 b FD(of)25 b(a)g(source,)h(or)f
+Fq(app)-5 b(ar)g(ent)30 b(plac)-5 b(e)33 b FD(for)24
+b(short,)i(is)d(the)i([)15 b Fl(\013;)g(\016)20 b FD(])25
+b(if)f(view)m(ed)g(from)0 2705 y(the)32 b(cen)m(tre)i(of)e(the)h
+(Earth,)g(with)e(resp)s(ect)h(to)h(the)f(true)g(equator)h(and)f(equino)
+m(x)g(of)g(date.)47 b(T)-8 b(ransformation)0 2817 y(of)32
+b(an)g(FK5)h(mean)f([)15 b Fl(\013;)g(\016)20 b FD(],)33
+b(equino)m(x)e(J2000,)j(curren)m(t)e(ep)s(o)s(c)m(h,)h(to)g(apparen)m
+(t)f(place)g(in)m(v)m(olv)m(es)g(the)g(follo)m(wing)0
+2930 y(e\013ects:)136 3189 y Fo(\017)46 b FD(Ligh)m(t)30
+b(de\015ection)h({)f(the)h(gra)m(vitational)f(lens)g(e\013ect)i(of)e
+(the)h(sun.)136 3375 y Fo(\017)46 b FD(Ann)m(ual)29 b(ab)s(erration.)
+136 3562 y Fo(\017)46 b FD(Precession-n)m(utation.)0
+3820 y(The)30 b Fq(light)k(de\015e)-5 b(ction)39 b FD(is)31
+b(seldom)f(signi\014can)m(t.)41 b(Its)31 b(v)-5 b(alue)31
+b(at)g(the)h(lim)m(b)d(of)i(the)g(Sun)f(is)g(ab)s(out)g(1)3351
+3784 y Fk(0)m(0)3355 3820 y Fl(:)p FD(74;)j(it)e(falls)0
+3933 y(o\013)g(rapidly)d(with)h(distance)h(from)g(the)g(Sun)f(and)h
+(has)g(shrunk)e(to)j(ab)s(out)f(0)2605 3896 y Fk(0)m(0)2609
+3933 y Fl(:)p FD(02)i(at)f(an)g(elongation)f(of)h(20)3627
+3900 y Fp(\016)3667 3933 y FD(.)0 4095 y(As)g(already)f(describ)s(ed,)f
+(the)h Fq(annual)k(ab)-5 b(err)g(ation)40 b FD(is)30
+b(a)h(function)e(of)i(the)g(Earth's)f(v)m(elo)s(cit)m(y)h(relativ)m(e)g
+(to)g(the)0 4208 y(solar)37 b(system)h(barycen)m(tre)g(\(a)m(v)-5
+b(ailable)38 b(through)f(the)g(SLALIB)h(routines)e(sla)p
+Ft(_)p FD(EVP)h(and)g(sla)p Ft(_)p FD(EPV\))g(and)0 4321
+y(pro)s(duces)29 b(shifts)g(of)i(up)e(to)i(ab)s(out)f(20)1314
+4284 y Fk(0)m(0)1318 4321 y Fl(:)p FD(5.)0 4483 y(The)39
+b Fq(pr)-5 b(e)g(c)g(ession-nutation)p FD(,)44 b(from)39
+b(J2000)h(to)g(the)f(curren)m(t)g(ep)s(o)s(c)m(h,)i(is)e(expressed)f(b)
+m(y)h(a)h(rotation)f(matrix)0 4595 y(whic)m(h)29 b(is)h(a)m(v)-5
+b(ailable)29 b(through)h(the)h(SLALIB)e(routine)h(sla)p
+Ft(_)p FD(PRENUT.)0 4757 y(The)i(whole)f(mean-to-apparen)m(t)j
+(transformation)d(can)i(b)s(e)e(done)h(using)f(the)h(SLALIB)g(routine)f
+(sla)p Ft(_)p FD(MAP)-8 b(.)0 4870 y(As)28 b(a)h(demonstration,)f(here)
+g(is)f(a)i(program)f(whic)m(h)f(lists)f(the)j Fq(North)i(Polar)h
+(Distanc)-5 b(e)36 b FD(\(90)3156 4837 y Fp(\016)3212
+4870 y Fo(\000)16 b Fl(\016)s FD(\))29 b(of)f(P)m(olaris)0
+4983 y(for)i(the)h(decade)g(of)f(closest)h(approac)m(h)g(to)g(the)f(P)m
+(ole:)573 5241 y Ft(IMPLICIT)45 b(NONE)573 5354 y(DOUBLE)h(PRECISION)f
+(PI,PIBY2,D2R,S2R,AS2R)573 5467 y(PARAMETER)g
+(\(PI=3.141592653589793238)o(4626)o(43D0)o(\))573 5580
+y(PARAMETER)g(\(D2R=PI/180D0,)525 5693 y(:)525 b(PIBY2=PI/2D0,)p
+eop
+%%Page: 188 190
+188 189 bop 0 52 a FD(188)525 351 y Ft(:)525 b(S2R=PI/\(12D0*3600D0\),)
+525 464 y(:)g(AS2R=PI/\(180D0*3600D0\)\))573 577 y(DOUBLE)46
+b(PRECISION)f(RM,DM,PR,PD,DATE,RA,DA)573 690 y(INTEGER)h
+(J,IDS,IDE,ID,IYMDF\(4\),I)573 916 y(CALL)g
+(sla_DTF2R\(02,31,49.8131D0,)o(RM,)o(J\))573 1029 y(CALL)g
+(sla_DAF2R\(89,15,50.661D0,D)o(M,J)o(\))573 1142 y
+(PR=+21.7272D0*S2R/100D0)573 1255 y(PD=-1.571D0*AS2R/100D0)573
+1367 y(WRITE)g(\(*,'\(1X,'//)525 1480 y(:)572 b('''Polaris)45
+b(north)i(polar)f(distance)g(\(deg\))g(2096-2105''/\)'\))573
+1593 y(WRITE)g(\(*,'\(4X,''Date'',7X''NPD')o('/\))o('\))573
+1706 y(CALL)g(sla_CLDJ\(2096,1,1,DATE,J\))573 1819 y(IDS=NINT\(DATE\))
+573 1932 y(CALL)g(sla_CLDJ\(2105,12,31,DATE,J)o(\))573
+2045 y(IDE=NINT\(DATE\))573 2158 y(DO)h(ID=IDS,IDE,10)716
+2271 y(DATE=DBLE\(ID\))716 2384 y(CALL)g(sla_DJCAL\(0,DATE,IYMDF,)o
+(J\))716 2497 y(CALL)g(sla_MAP\(RM,DM,PR,PD,0D0)o(,0D)o(0,20)o(00D0)o
+(,DA)o(TE,R)o(A,DA)o(\))716 2609 y(WRITE)f
+(\(*,'\(1X,I4,2I3.2,F9.5\)'\))41 b(\(IYMDF\(I\),I=1,3\),\(PIBY2-DA)o
+(\)/D2)o(R)573 2722 y(END)47 b(DO)573 2948 y(END)0 3200
+y FD(F)-8 b(or)32 b(cases)g(where)f(the)g(transformation)g(has)g(to)h
+(b)s(e)e(rep)s(eated)h(for)g(di\013eren)m(t)g(times)g(or)g(for)g(more)g
+(than)g(one)0 3313 y(star,)39 b(the)f(straigh)m(tforw)m(ard)e(sla)p
+Ft(_)p FD(MAP)h(approac)m(h)h(is)e(apt)h(to)h(b)s(e)e(w)m(asteful)h(as)
+g(b)s(oth)g(the)g(Earth)g(v)m(elo)s(cit)m(y)0 3426 y(and)25
+b(the)h(precession-n)m(utation)e(matrix)h(can)h(b)s(e)f(re-calculated)h
+(relativ)m(ely)f(infrequen)m(tly)e(without)h(ill)g(e\013ect.)0
+3539 y(A)29 b(more)f(e\016cien)m(t)h(metho)s(d)f(is)g(to)h(p)s(erform)e
+(the)i(target-indep)s(enden)m(t)f(calculations)g(only)g(when)f
+(necessary)-8 b(,)0 3652 y(b)m(y)35 b(calling)f(sla)p
+Ft(_)p FD(MAPP)-8 b(A,)35 b(and)g(then)g(to)h(use)f(either)g(sla)p
+Ft(_)p FD(MAPQKZ,)f(when)g(only)g(the)i([)15 b Fl(\013;)g(\016)20
+b FD(])35 b(is)g(kno)m(wn,)0 3765 y(or)41 b(sla)p Ft(_)p
+FD(MAPQK,)f(when)g(full)f(catalogue)j(p)s(ositions,)g(including)c(prop)
+s(er)h(motion,)44 b(parallax)c(and)g(radial)0 3878 y(v)m(elo)s(cit)m(y)
+-8 b(,)32 b(are)f(a)m(v)-5 b(ailable.)40 b(Ho)m(w)31
+b(frequen)m(tly)f(to)h(call)f(sla)p Ft(_)p FD(MAPP)-8
+b(A)31 b(dep)s(ends)e(on)h(the)h(accuracy)g(ob)5 b(jectiv)m(es;)0
+3991 y(once)31 b(p)s(er)e(nigh)m(t)h(will)e(deliv)m(er)h(sub-arcsecond)
+h(accuracy)i(for)e(example.)0 4151 y(The)40 b(routines)f(sla)p
+Ft(_)p FD(AMP)h(and)g(sla)p Ft(_)p FD(AMPQK)f(allo)m(w)h(the)g(rev)m
+(erse)h(transformation,)h(from)e(apparen)m(t)h(to)0 4264
+y(mean)30 b(place.)0 4554 y Fv(4.13)112 b(Apparen)m(t)38
+b(Place)e(to)h(Observ)m(ed)i(Place)0 4772 y FD(The)24
+b Fq(observe)-5 b(d)28 b(plac)-5 b(e)33 b FD(of)24 b(a)h(source)g(is)f
+(its)g(p)s(osition)e(as)j(seen)g(b)m(y)f(a)h(p)s(erfect)f(theo)s
+(dolite)g(at)i(the)e(lo)s(cation)h(of)f(the)0 4885 y(observ)m(er.)41
+b(T)-8 b(ransformation)29 b(of)i(an)f(apparen)m(t)h([)15
+b Fl(\013;)g(\016)20 b FD(])31 b(to)g(observ)m(ed)f(place)h(in)m(v)m
+(olv)m(es)f(the)g(follo)m(wing)f(e\013ects:)136 5138
+y Fo(\017)46 b FD([)15 b Fl(\013;)g(\016)21 b FD(])30
+b(to)h([)15 b Fl(h;)g(\016)20 b FD(].)136 5323 y Fo(\017)46
+b FD(Diurnal)29 b(ab)s(erration.)136 5508 y Fo(\017)46
+b FD([)15 b Fl(h;)g(\016)20 b FD(])31 b(to)g([)15 b Fl(Az)t(;)g(E)5
+b(l)34 b FD(].)136 5693 y Fo(\017)46 b FD(Refraction.)p
+eop
+%%Page: 189 191
+189 190 bop 0 52 a Fw(SUN/67.70)3206 b FD(189)0 351 y(The)29
+b(transformation)f(from)h(apparen)m(t)g([)15 b Fl(\013;)g(\016)20
+b FD(])29 b(to)h(apparen)m(t)f([)15 b Fl(h;)g(\016)21
+b FD(])29 b(is)f(made)h(b)m(y)g(allo)m(wing)f(for)h Fq(Earth)j(r)-5
+b(ota-)0 464 y(tion)38 b FD(through)30 b(the)g Fq(sider)-5
+b(e)g(al)35 b(time)p FD(,)30 b Fl(\022)s FD(:)1696 579
+y Fl(h)25 b FD(=)g Fl(\022)e Fo(\000)c Fl(\013)0 747
+y FD(F)-8 b(or)33 b(this)e(equation)h(to)h(w)m(ork,)g
+Fl(\013)f FD(m)m(ust)g(b)s(e)g(the)g(apparen)m(t)h(righ)m(t)e
+(ascension)h(for)g(the)g(time)g(of)g(observ)-5 b(ation,)0
+860 y(and)30 b Fl(\022)i FD(m)m(ust)f(b)s(e)e(the)i Fq(lo)-5
+b(c)g(al)34 b(app)-5 b(ar)g(ent)36 b(sider)-5 b(e)g(al)34
+b(time)p FD(.)41 b(The)30 b(latter)h(is)e(obtained)h(as)g(follo)m(ws:)
+111 1100 y(1.)46 b(from)30 b(civil)f(time)h(obtain)g(the)g(co)s
+(ordinated)g(univ)m(ersal)e(time,)j(UTC)f(\(more)g(later)h(on)f
+(this\);)111 1290 y(2.)46 b(add)30 b(the)h(UT1)p Fo(\000)p
+FD(UTC)e(\(t)m(ypically)h(a)h(few)f(ten)m(ths)h(of)f(a)h(second\))g(to)
+g(giv)m(e)g(the)f(UT;)111 1480 y(3.)46 b(from)30 b(the)h(UT)f(compute)h
+(the)f(Green)m(wic)m(h)g(mean)h(sidereal)e(time)h(\(using)f(sla)p
+Ft(_)p FD(GMST\);)111 1670 y(4.)46 b(add)30 b(the)h(observ)m(er's)f
+(\(east\))i(longitude,)e(giving)f(the)h(lo)s(cal)g(mean)g(sidereal)g
+(time;)111 1859 y(5.)46 b(add)30 b(the)h(equation)f(of)g(the)h(equino)m
+(xes)f(\(using)f(sla)p Ft(_)p FD(EQEQX\).)0 2099 y(The)39
+b Fq(e)-5 b(quation)41 b(of)g(the)g(e)-5 b(quinoxes)47
+b FD(\(=)39 b(\001)p Fl( )19 b FD(cos)d Fl(\017)38 b
+FD(plus)g(small)f(terms\))i(is)f(the)i(e\013ect)g(of)g(n)m(utation)e
+(on)h(the)0 2212 y(sidereal)32 b(time.)48 b(Its)33 b(v)-5
+b(alue)33 b(is)f(t)m(ypically)g(a)i(second)f(or)g(less.)48
+b(It)33 b(is)f(in)m(teresting)h(to)h(note)g(that)f(if)f(the)i(ob)5
+b(ject)0 2325 y(of)33 b(the)f(exercise)h(is)e(to)i(transform)f(a)h
+(mean)f(place)h(all)e(the)h(w)m(a)m(y)i(in)m(to)e(an)g(observ)m(ed)h
+(place)f(\(v)m(ery)h(often)g(the)0 2438 y(case\),)e(then)d(the)i
+(equation)e(of)h(the)g(equino)m(xes)g(and)f(the)h(longitude)f(comp)s
+(onen)m(t)h(of)g(n)m(utation)g(can)g(b)s(oth)f(b)s(e)0
+2551 y(omitted,)c(remo)m(ving)f(a)f(great)i(deal)e(of)h(computation.)38
+b(Ho)m(w)m(ev)m(er,)26 b(SLALIB)c(follo)m(ws)f(the)i(normal)e(con)m(v)m
+(en)m(tion)0 2664 y(and)30 b(w)m(orks)g Fq(via)38 b FD(the)30
+b(apparen)m(t)h(place.)0 2828 y(Note)k(that)g(for)f(v)m(ery)g(precise)f
+(w)m(ork)h(the)h(observ)m(er's)f(longitude)f(should)f(b)s(e)h
+(corrected)i(for)f Fq(p)-5 b(olar)38 b(motion)p FD(.)0
+2941 y(This)d(can)j(b)s(e)f(done)g(with)f(sla)p Ft(_)p
+FD(POLMO.)g(The)h(corrections)g(are)h(alw)m(a)m(ys)g(less)e(than)h(ab)s
+(out)g(0)3335 2904 y Fk(0)l(0)3339 2941 y Fl(:)p FD(3,)j(and)d(are)0
+3054 y(futile)29 b(unless)g(the)h(p)s(osition)f(of)h(the)h(observ)m
+(er's)f(telescop)s(e)h(is)f(kno)m(wn)g(to)h(b)s(etter)f(than)g(a)h(few)
+f(metres.)0 3217 y(T)-8 b(ables)33 b(of)h(observ)m(ed)g(and)f
+(predicted)g(UT1)p Fo(\000)p FD(UTC)g(corrections)h(and)f(p)s(olar)g
+(motion)h(data)g(are)g(published)0 3330 y(ev)m(ery)d(few)f(w)m(eeks)h
+(b)m(y)g(the)f(In)m(ternational)g(Earth)g(Rotation)h(Service.)0
+3494 y(The)37 b(transformation)h(from)f(apparen)m(t)h([)15
+b Fl(h;)g(\016)20 b FD(])38 b(to)h Fq(top)-5 b(o)g(c)g(entric)45
+b FD([)15 b Fl(h;)g(\016)21 b FD(])38 b(consists)f(of)h(allo)m(wing)f
+(for)g Fq(diurnal)0 3607 y(ab)-5 b(err)g(ation)p FD(.)72
+b(This)39 b(e\013ect,)44 b(maxim)m(um)39 b(amplitude)f(0)1902
+3570 y Fk(0)l(0)1906 3607 y Fl(:)p FD(2,)44 b(w)m(as)c(describ)s(ed)e
+(earlier.)69 b(There)40 b(is)f(no)h(sp)s(eci\014c)0 3720
+y(SLALIB)24 b(routine)f(for)h(computing)g(the)g(diurnal)d(ab)s
+(erration,)k(though)f(the)h(routines)e(sla)p Ft(_)p FD(A)m(OP)h
+Fq(etc.)g FD(include)0 3833 y(it,)30 b(and)g(the)g(required)f(v)m(elo)s
+(cit)m(y)i(v)m(ector)h(can)f(b)s(e)e(determined)g(b)m(y)i(calling)d
+(sla)p Ft(_)p FD(GEOC.)0 3997 y(The)38 b(next)g(stage)i(is)e(the)g(ma)5
+b(jor)39 b(co)s(ordinate)f(rotation)h(from)f(lo)s(cal)g(equatorial)g
+(co)s(ordinates)g([)15 b Fl(h;)g(\016)20 b FD(])38 b(in)m(to)0
+4109 y(horizon)25 b(co)s(ordinates.)39 b(The)25 b(SLALIB)g(routines)g
+(sla)p Ft(_)p FD(E2H)g Fq(etc.)g FD(can)h(b)s(e)f(used)g(for)h(this.)38
+b(F)-8 b(or)26 b(high-precision)0 4222 y(applications)j(the)h(mean)h
+(geo)s(detic)g(latitude)e(should)f(b)s(e)i(corrected)i(for)e(p)s(olar)f
+(motion.)0 4516 y FB(4.13.1)106 b(Refraction)0 4739 y
+FD(The)35 b(\014nal)g(correction)h(is)f(for)h(atmospheric)f
+(refraction.)57 b(This)34 b(e\013ect,)39 b(whic)m(h)c(dep)s(ends)f(on)i
+(lo)s(cal)f(meteo-)0 4852 y(rological)h(conditions)f(and)g(the)i
+(e\013ectiv)m(e)h(colour)e(of)g(the)h(source/detector)h(com)m
+(bination,)f(increases)f(the)0 4965 y(observ)m(ed)e(elev)-5
+b(ation)35 b(of)f(the)h(source)f(b)m(y)h(a)f(signi\014can)m(t)g
+(e\013ect)h(ev)m(en)g(at)h(mo)s(derate)e(zenith)g(distances,)h(and)0
+5078 y(near)26 b(the)h(horizon)f(b)m(y)g(o)m(v)m(er)i(0)1029
+5045 y Fp(\016)1035 5078 y Fl(:)r FD(5.)40 b(The)26 b(amoun)m(t)h(of)g
+(refraction)f(can)h(b)m(y)f(computed)h(b)m(y)f(calling)f(the)i(SLALIB)0
+5190 y(routine)f(sla)p Ft(_)p FD(REFR)m(O;)g(ho)m(w)m(ev)m(er,)j(this)d
+(requires)f(as)i(input)e(the)i(observ)m(ed)g(zenith)f(distance,)h(whic)
+m(h)f(is)g(what)0 5303 y(w)m(e)e(are)g(trying)e(to)i(predict.)38
+b(F)-8 b(or)24 b(high)e(precision)g(it)g(is)h(therefore)h(necessary)g
+(to)g(iterate,)i(using)21 b(the)j(top)s(o)s(cen-)0 5416
+y(tric)30 b(zenith)g(distance)g(as)g(the)h(initial)c(estimate)32
+b(of)e(the)h(observ)m(ed)f(zenith)g(distance.)0 5580
+y(The)e(full)e(sla)p Ft(_)p FD(REFR)m(O)i(refraction)g(calculation)f
+(is)g(onerous,)i(and)f(for)g(zenith)g(distances)f(of)i(less)e(than,)i
+(sa)m(y)-8 b(,)0 5693 y(75)90 5660 y Fp(\016)161 5693
+y FD(the)30 b(follo)m(wing)f(mo)s(del)g(can)i(b)s(e)f(used)f(instead:)p
+eop
+%%Page: 190 192
+190 191 bop 0 52 a FD(190)1180 507 y Fl(\020)1220 521
+y Ff(v)r(ac)1354 507 y Fo(\031)25 b Fl(\020)1490 522
+y Ff(obs)1611 507 y FD(+)20 b Fl(A)15 b FD(tan)h Fl(\020)1972
+522 y Ff(obs)2093 507 y FD(+)k Fl(B)g FD(tan)2404 469
+y Fu(3)2458 507 y Fl(\020)2498 522 y Ff(obs)0 663 y FD(where)29
+b Fl(\020)302 677 y Ff(v)r(ac)440 663 y FD(is)f(the)i(top)s(o)s(cen)m
+(tric)g(zenith)e(distance)h(\(i.e.)h Fq(in)i(vacuo)p
+FD(\),)e Fl(\020)2434 678 y Ff(obs)2564 663 y FD(is)f(the)h(observ)m
+(ed)f(zenith)g(distance)0 776 y(\(i.e.)h(a\013ected)i(b)m(y)d
+(refraction\),)i(and)e Fl(A)h FD(and)f Fl(B)35 b FD(are)30
+b(constan)m(ts,)h(ab)s(out)f(60)2592 739 y Fk(0)m(0)2663
+776 y FD(and)f Fo(\000)p FD(0)2950 739 y Fk(0)l(0)2954
+776 y Fl(:)p FD(06)i(resp)s(ectiv)m(ely)e(for)h(a)0 888
+y(sea-lev)m(el)f(site.)39 b(The)28 b(t)m(w)m(o)h(constan)m(ts)g(can)f
+(b)s(e)g(calculated)g(for)f(a)i(giv)m(en)f(set)g(of)g(conditions)f(b)m
+(y)h(calling)e(either)0 1001 y(sla)p Ft(_)p FD(REF)m(CO)k(or)g(sla)p
+Ft(_)p FD(REF)m(COQ.)0 1148 y(sla)p Ft(_)p FD(REF)m(CO)24
+b(w)m(orks)g(b)m(y)g(calling)f(sla)p Ft(_)p FD(REFR)m(O)h(for)g(t)m(w)m
+(o)h(zenith)f(distances)g(and)g(\014tting)f Fl(A)i FD(and)e
+Fl(B)29 b FD(to)c(matc)m(h.)0 1261 y(The)i(calculation)g(is)f(onerous,)
+i(but)f(deliv)m(ers)f(accurate)j(results)d(whatev)m(er)j(the)e
+(conditions.)39 b(sla)p Ft(_)p FD(REF)m(COQ)0 1374 y(uses)46
+b(a)h(direct)e(form)m(ulation)g(of)i Fl(A)f FD(and)g
+Fl(B)51 b FD(and)46 b(is)f(m)m(uc)m(h)h(faster;)55 b(it)46
+b(is)g(sligh)m(tly)e(less)i(accurate)i(than)0 1487 y(sla)p
+Ft(_)p FD(REF)m(CO)30 b(but)f(more)i(than)f(adequate)h(for)f(most)h
+(practical)f(purp)s(oses.)0 1633 y(Lik)m(e)36 b(the)g(full)d
+(refraction)j(mo)s(del,)g(the)g(t)m(w)m(o-term)i(form)m(ulation)d(w)m
+(orks)h(in)e(the)i(wrong)g(direction)e(for)i(our)0 1746
+y(purp)s(oses,)f(predicting)e(the)i Fq(in)i(vacuo)k FD(\(top)s(o)s(cen)
+m(tric\))36 b(zenith)e(distance)h(giv)m(en)g(the)g(refracted)h
+(\(observ)m(ed\))0 1859 y(zenith)h(distance,)j(rather)e(than)g
+Fq(vic)-5 b(e)39 b(versa)p FD(.)64 b(The)38 b(ob)m(vious)f(approac)m(h)
+i(of)f(in)m(terc)m(hanging)g Fl(\020)3308 1873 y Ff(v)r(ac)3454
+1859 y FD(and)g Fl(\020)3679 1874 y Ff(obs)0 1972 y FD(and)i(rev)m
+(ersing)h(the)g(signs,)i(though)e(appro)m(ximately)f(correct,)45
+b(giv)m(es)c(a)m(v)m(oidable)g(errors)g(whic)m(h)f(are)h(just)0
+2085 y(signi\014can)m(t)33 b(in)h(some)g(applications;)h(for)f(example)
+h(ab)s(out)f(0)2123 2048 y Fk(0)l(0)2127 2085 y Fl(:)p
+FD(2)h(at)g(70)2437 2052 y Fp(\016)2512 2085 y FD(zenith)f(distance.)52
+b(A)35 b(m)m(uc)m(h)f(b)s(etter)0 2198 y(result)29 b(can)i(easily)e(b)s
+(e)h(obtained,)g(b)m(y)g(using)f(one)i(Newton-Raphson)f(iteration)g(as)
+h(follo)m(ws:)1014 2437 y Fl(\020)1054 2452 y Ff(obs)1180
+2437 y Fo(\031)25 b Fl(\020)1316 2451 y Ff(v)r(ac)1445
+2437 y Fo(\000)1694 2376 y Fl(A)15 b FD(tan)h Fl(\020)1964
+2390 y Ff(v)r(ac)2093 2376 y FD(+)k Fl(B)g FD(tan)2404
+2343 y Fu(3)2458 2376 y Fl(\020)2498 2390 y Ff(v)r(ac)p
+1545 2416 1211 4 v 1545 2500 a FD(1)h(+)f(\()p Fl(A)h
+FD(+)f(3)p Fl(B)g FD(tan)2182 2470 y Fu(2)2237 2500 y
+Fl(\020)2277 2514 y Ff(v)r(ac)2385 2500 y FD(\))15 b(sec)2553
+2474 y Fu(2)2607 2500 y Fl(\020)2647 2514 y Ff(v)r(ac)0
+2670 y FD(The)27 b(e\013ect)i(of)f(refraction)f(can)h(b)s(e)f(applied)e
+(to)k(an)e(unrefracted)g(zenith)g(distance)g(b)m(y)h(calling)e(sla)p
+Ft(_)p FD(REFZ)g(or)0 2783 y(to)i(an)g(unrefracted)f([)15
+b Fl(x;)g(y)s(;)g(z)20 b FD(])28 b(b)m(y)f(calling)f(sla)p
+Ft(_)p FD(REFV.)h(Ov)m(er)h(most)g(of)g(the)f(sky)g(these)h(t)m(w)m(o)h
+(routines)e(deliv)m(er)0 2896 y(almost)j(iden)m(tical)e(results,)h(but)
+g(b)s(ey)m(ond)g Fl(\020)i FD(=)25 b(83)1710 2863 y Fp(\016)1780
+2896 y FD(sla)p Ft(_)p FD(REFV)k(b)s(ecomes)h(unacceptably)g
+(inaccurate)f(while)0 3009 y(sla)p Ft(_)p FD(REFZ)g(remains)h(usable.)
+40 b(\(Ho)m(w)m(ev)m(er)33 b(sla)p Ft(_)p FD(REFV)d(is)g(signi\014can)m
+(tly)f(faster,)i(whic)m(h)e(ma)m(y)i(b)s(e)f(imp)s(ortan)m(t)0
+3122 y(in)f(some)h(applications.\))39 b(SLALIB)30 b(also)g(pro)m(vides)
+f(a)i(routine)e(for)g(computing)h(the)g(airmass,)f(the)i(function)0
+3235 y(sla)p Ft(_)p FD(AIRMAS.)0 3381 y(The)h(refraction)h(\\constan)m
+(ts")i(returned)d(b)m(y)h(sla)p Ft(_)p FD(REF)m(CO)f(and)h(sla)p
+Ft(_)p FD(REF)m(COQ)e(are)j(sligh)m(tly)d(a\013ected)k(b)m(y)0
+3494 y(colour,)30 b(esp)s(ecially)e(at)j(the)g(blue)d(end)i(of)g(the)g
+(sp)s(ectrum.)40 b(Where)30 b(v)-5 b(alues)30 b(for)g(more)g(than)g
+(one)g(w)m(a)m(v)m(elength)0 3607 y(are)f(needed,)g(rather)g(than)f
+(calling)g(sla)p Ft(_)p FD(REF)m(CO)g(sev)m(eral)h(times)f(it)h(is)e
+(more)i(e\016cien)m(t)h(to)f(call)f(sla)p Ft(_)p FD(REF)m(CO)0
+3720 y(just)j(once,)h(for)f(a)h(selected)g(\\base")g(w)m(a)m(v)m
+(elength,)h(and)e(then)g(to)h(call)f(sla)p Ft(_)p FD(A)-8
+b(TMDSP)31 b(once)h(for)f(eac)m(h)h(w)m(a)m(v)m(e-)0
+3833 y(length)e(of)g(in)m(terest.)0 3980 y(All)h(the)h(SLALIB)f
+(refraction)h(routines)f(w)m(ork)h(for)g(radio)f(w)m(a)m(v)m(elengths)j
+(as)e(w)m(ell)f(as)h(the)g(optical/IR)g(band.)0 4093
+y(The)k(radio)f(refraction)h(is)f(v)m(ery)i(dep)s(enden)m(t)e(on)h(h)m
+(umidit)m(y)-8 b(,)36 b(and)g(an)g(accurate)h(v)-5 b(alue)36
+b(m)m(ust)g(b)s(e)f(supplied.)0 4205 y(There)k(is)g(no)h(w)m(a)m(v)m
+(elength)h(dep)s(endence,)h(ho)m(w)m(ev)m(er.)71 b(The)39
+b(c)m(hoice)i(of)f(optical/IR)g(or)g(radio)f(is)g(made)h(b)m(y)0
+4318 y(sp)s(ecifying)28 b(a)j(w)m(a)m(v)m(elength)h(greater)f(than)f
+(100)p Fl(\026)p FD(m)i(for)e(the)g(radio)g(case.)0 4584
+y FB(4.13.2)106 b(E\016ciency)36 b(considerations)0 4790
+y FD(The)j(complete)h(apparen)m(t)f(place)h(to)g(observ)m(ed)g(place)f
+(transformation)g(can)h(b)s(e)e(carried)h(out)h(b)m(y)f(calling)0
+4903 y(sla)p Ft(_)p FD(A)m(OP)-8 b(.)21 b(F)-8 b(or)22
+b(impro)m(v)m(ed)e(e\016ciency)h(in)e(cases)j(of)f(more)g(than)g(one)g
+(star)g(or)g(a)h(sequence)f(of)g(times,)i(the)e(target-)0
+5016 y(indep)s(enden)m(t)28 b(calculations)i(can)h(b)s(e)f(done)g(once)
+i(b)m(y)e(calling)f(sla)p Ft(_)p FD(A)m(OPP)-8 b(A,)31
+b(the)g(time)f(can)h(b)s(e)f(up)s(dated)g(b)m(y)0 5128
+y(calling)j(sla)p Ft(_)p FD(A)m(OPP)-8 b(A)g(T,)35 b(and)g(sla)p
+Ft(_)p FD(A)m(OPQK)e(can)i(then)g(b)s(e)f(used)g(to)h(p)s(erform)f(the)
+h(apparen)m(t-to-observ)m(ed)0 5241 y(transformation.)74
+b(The)42 b(rev)m(erse)g(transformation)g(is)e(a)m(v)-5
+b(ailable)42 b(through)f(sla)p Ft(_)p FD(O)m(AP)g(and)g(sla)p
+Ft(_)p FD(O)m(APQK.)0 5354 y(\()p Fq(n.b.)24 b FD(These)g(routines)f
+(use)h(accurate)h(but)f(computationally-exp)s(ensiv)m(e)e(refraction)i
+(algorithms)f(for)h(zenith)0 5467 y(distances)32 b(b)s(ey)m(ond)g(ab)s
+(out)g(76)1062 5434 y Fp(\016)1103 5467 y FD(.)47 b(F)-8
+b(or)33 b(man)m(y)g(purp)s(oses,)e(in-line)f(co)s(de)j(tailored)f(to)h
+(the)g(accuracy)g(require-)0 5580 y(men)m(ts)28 b(of)h(the)f
+(application)f(will)e(b)s(e)j(preferable,)f(for)h(example)g(ignoring)f
+(p)s(olar)f(motion,)j(omitting)e(diurnal)0 5693 y(ab)s(erration)i(and)h
+(using)f(sla)p Ft(_)p FD(REFZ)g(to)i(apply)e(the)i(refraction.\))p
+eop
+%%Page: 191 193
+191 192 bop 0 52 a Fw(SUN/67.70)3206 b FD(191)0 351 y
+Fv(4.14)112 b(The)38 b(Hipparcos)f(Catalogue)h(and)g(the)f(ICRS)0
+570 y FD(With)26 b(e\013ect)h(from)f(the)g(b)s(eginning)e(of)i(1998,)j
+(the)d(IA)m(U)h(adopted)f(a)h(new)e(reference)i(system)f(to)h(replace)f
+(FK5)0 683 y(J2000.)75 b(The)40 b(new)h(system,)j(called)d(the)g(In)m
+(ternational)g(Celestial)f(Reference)i(System)f(\(ICRS\),)g(di\013ers)0
+796 y(profoundly)33 b(from)i(all)f(predecessors)i(in)e(that)i(the)g
+(link)d(with)h(solar-system)i(dynamics)e(w)m(as)i(brok)m(en;)i(the)0
+909 y(ICRS)28 b(axes)h(are)g(de\014ned)f(in)f(terms)i(of)g(the)g(co)s
+(ordinates)f(of)h(a)g(set)g(of)g(extragalactic)i(sources,)e(not)g(in)f
+(terms)0 1022 y(of)41 b(the)g(mean)f(equator)i(and)e(equino)m(x)g(at)h
+(a)h(giv)m(en)e(reference)h(ep)s(o)s(c)m(h.)72 b(Although)40
+b(the)g(ICRS)g(and)g(FK5)0 1135 y(co)s(ordinates)i(of)h(an)m(y)g(giv)m
+(en)g(ob)5 b(ject)44 b(are)f(almost)g(the)f(same,)47
+b(the)c(orien)m(tation)f(of)h(the)g(new)f(frame)h(w)m(as)0
+1247 y(essen)m(tially)d(arbitrary)-8 b(,)43 b(and)e(the)g(close)h(matc)
+m(h)g(to)g(FK5)f(J2000)i(w)m(as)e(con)m(triv)m(ed)h(purely)d(for)i
+(reasons)g(of)0 1360 y(con)m(tin)m(uit)m(y)30 b(and)g(con)m(v)m
+(enience.)0 1520 y(A)d(distinction)e(is)h(made)h(b)s(et)m(w)m(een)g
+(the)g(reference)h Fq(system)35 b FD(\(the)27 b(ICRS\))f(and)h
+Fq(fr)-5 b(ame)35 b FD(\(ICRF\).)27 b(The)g(ICRS)e(is)0
+1633 y(the)32 b(set)h(of)g(prescriptions)c(and)j(con)m(v)m(en)m(tions)h
+(together)h(with)d(the)h(mo)s(delling)e(required)g(to)j(de\014ne,)f(at)
+h(an)m(y)0 1746 y(time,)e(a)f(triad)g(of)h(axes.)42 b(The)30
+b(ICRF)g(is)f(a)i(practical)g(realization,)f(and)g(curren)m(tly)f
+(consists)h(of)h(a)g(catalogue)0 1859 y(of)g(equatorial)f(co)s
+(ordinates)g(for)g(608)h(extragalactic)i(radio)c(sources)i(observ)m(ed)
+f(b)m(y)g(VLBI.)0 2019 y(The)37 b(b)s(est)g(optical)g(realization)g(of)
+g(the)h(ICRF)f(curren)m(tly)f(a)m(v)-5 b(ailable)37 b(is)f(the)i
+(Hipparcos)f(catalogue.)63 b(The)0 2132 y(extragalactic)43
+b(sources)e(w)m(ere)g(not)h(directly)d(observ)-5 b(able)41
+b(b)m(y)g(the)g(Hipparcos)f(satellite)h(and)f(so)h(the)h(link)0
+2245 y(from)37 b(Hipparcos)f(to)i(ICRF)e(w)m(as)i(established)d
+(through)i(a)g(v)-5 b(ariet)m(y)38 b(of)f(indirect)e(tec)m(hniques:)54
+b(VLBI)37 b(and)0 2358 y(con)m(v)m(en)m(tional)c(in)m(terferometry)g
+(of)f(radio)g(stars,)h(photographic)f(astrometry)h(and)f(so)h(on.)46
+b(The)32 b(Hipparcos)0 2471 y(frame)e(is)g(aligned)f(to)i(the)g(ICRF)f
+(to)h(within)d(ab)s(out)i(0.5)h(mas)f(and)g(0.5)i(mas/y)m(ear)f(\(at)h
+(ep)s(o)s(c)m(h)e(1991.25\).)0 2631 y(The)k(Hipparcos)f(catalogue)j
+(includes)c(all)h(of)h(the)h(FK5)g(stars,)g(whic)m(h)e(has)h(enabled)f
+(the)i(orien)m(tation)f(and)0 2744 y(spin)22 b(of)h(the)h(latter)g(to)g
+(b)s(e)f(studied.)37 b(A)m(t)25 b(ep)s(o)s(c)m(h)e(J2000,)k(the)c
+(misalignmen)m(t)f(of)i(the)g(FK5)g(frame)f(with)f(resp)s(ect)0
+2857 y(to)34 b(Hipparcos)f(\(and)g(hence)h(ICRS\))f(are)h(ab)s(out)f
+(32)h(mas)g(and)f(1)h(mas/y)m(ear)h(resp)s(ectiv)m(ely)-8
+b(.)50 b(Consequen)m(tly)-8 b(,)0 2969 y(for)35 b(man)m(y)g(practical)f
+(purp)s(oses,)g(including)e(p)s(oin)m(ting)h(telescop)s(es,)j(the)g(IA)
+m(U)f(1976-1982)k(con)m(v)m(en)m(tions)d(on)0 3082 y(reference)30
+b(frames)f(and)f(Earth)h(orien)m(tation)g(remain)g(adequate)h(and)e
+(there)i(is)e(no)h(need)g(to)h(c)m(hange)g(to)g(Hip-)0
+3195 y(parcos)h(co)s(ordinates,)g(new)f(precession-n)m(utation)h(mo)s
+(dels)e(and)h(so)h(on.)43 b(Ho)m(w)m(ev)m(er,)33 b(for)d(the)i(most)f
+(exacting)0 3308 y(astrometric)f(applications,)e(SLALIB)g(pro)m(vides)g
+(some)i(supp)s(ort)d(for)i(Hipparcos)g(co)s(ordinates)g(in)f(the)h
+(form)0 3421 y(of)35 b(four)g(new)f(routines:)49 b(sla)p
+Ft(_)p FD(FK52H)36 b(and)e(sla)p Ft(_)p FD(H2FK5,)j(whic)m(h)d
+(transform)g(FK5)h(p)s(ositions)e(and)i(prop)s(er)0 3534
+y(motions)40 b(to)g(the)h(Hipparcos)e(frame)h(and)f Fq(vic)-5
+b(e)42 b(versa,)g FD(and)e(sla)p Ft(_)p FD(FK5HZ)f(and)h(sla)p
+Ft(_)p FD(HFK5Z,)g(where)f(the)0 3647 y(transformations)30
+b(are)g(for)g(stars)h(whose)f(Hipparcos)g(prop)s(er)f(motion)h(is)f
+(zero.)0 3807 y(F)-8 b(urther)44 b(information)e(on)i(the)g(ICRS)f(can)
+h(b)s(e)g(found)f(in)f(the)j(pap)s(er)e(b)m(y)g(M.)16
+b(F)-8 b(eissel)44 b(and)f(F.)16 b(Mignard,)0 3920 y(Astron.)f(Astroph)
+m(ys.)41 b(331,)32 b(L33-L36)g(\(1988\).)0 4209 y Fv(4.15)112
+b(Time)36 b(Scales)0 4428 y FD(SLALIB)28 b(pro)m(vides)f(for)g
+(transformation)h(b)s(et)m(w)m(een)g(sev)m(eral)h(time)e(scales,)i(and)
+f(in)m(v)m(olv)m(es)g(use)g(of)g(one)g(or)g(t)m(w)m(o)0
+4541 y(others.)41 b(The)30 b(full)e(list)h(is)g(as)i(follo)m(ws:)136
+4769 y Fo(\017)46 b FD(T)-8 b(AI:)31 b(In)m(ternational)f(A)m(tomic)h
+(Time)136 4953 y Fo(\017)46 b FD(UTC:)30 b(Co)s(ordinated)f(Univ)m
+(ersal)h(Time)136 5138 y Fo(\017)46 b FD(TT:)30 b(T)-8
+b(errestrial)29 b(Time)136 5323 y Fo(\017)46 b FD(TDB:)31
+b(Barycen)m(tric)g(Dynamical)f(Time.)136 5508 y Fo(\017)46
+b FD(UT:)31 b(Univ)m(ersal)e(Time)136 5693 y Fo(\017)46
+b FD(GMST:)31 b(Green)m(wic)m(h)f(mean)g(sidereal)f(time)p
+eop
+%%Page: 192 194
+192 193 bop 0 52 a FD(192)136 351 y Fo(\017)46 b FD(GAST)30
+b(\(or)h(GST\):)f(Green)m(wic)m(h)h(apparen)m(t)f(sidereal)f(time.)136
+547 y Fo(\017)46 b FD(LAST:)30 b(lo)s(cal)g(apparen)m(t)g(sidereal)f
+(time)0 795 y(Strictly)e(sp)s(eaking,)i(UT)f(and)g(the)h(sidereal)e
+(times)i(are)g(not)g Fq(times)36 b FD(in)28 b(the)g(ph)m(ysics)g
+(sense,)h(but)f Fq(angles)37 b FD(that)0 908 y(describ)s(e)29
+b(Earth)h(rotation.)0 1075 y(Three)g(obsolete)h(time)f(scales)g(should)
+f(b)s(e)h(men)m(tioned)g(here)g(to)h(a)m(v)m(oid)g(confusion.)136
+1323 y Fo(\017)46 b FD(GMT:)31 b(Green)m(wic)m(h)f(Mean)h(Time)f({)h
+(can)f(mean)h(either)f(UTC)f(or)i(UT.)136 1519 y Fo(\017)46
+b FD(ET:)30 b(Ephemeris)f(Time)g({)i(more)f(or)h(less)f(the)g(same)h
+(as)f(either)g(TT)g(or)g(TDB.)136 1715 y Fo(\017)46 b
+FD(TDT:)31 b(T)-8 b(errestrial)29 b(Dynamical)h(Time)f({)i(former)f
+(name)g(of)h(TT.)0 1963 y(time)f(scales)h(that)g(ha)m(v)m(e)g(no)f
+(SLALIB)g(supp)s(ort)f(at)i(presen)m(t:)136 2211 y Fo(\017)46
+b FD(An)m(y)31 b(form)f(of)g(lo)s(cal)g(civil)e(time)i(\(BST,)h(PDT)f
+Fq(etc.)p FD(\))136 2407 y Fo(\017)46 b FD(TCG:)30 b(geo)s(cen)m(tric)i
+(co)s(ordinate)e(time.)136 2603 y Fo(\017)46 b FD(TCB:)31
+b(barycen)m(tric)f(co)s(ordinate)g(time.)0 2906 y FB(4.15.1)106
+b(A)m(tomic)34 b(Time:)46 b(T)-9 b(AI)0 3134 y Fq(International)47
+b(A)n(tomic)d(Time,)j FD(T)-8 b(AI,)43 b(is)g(a)h(\\lab)s(oratory")f
+(time)g(scale)h(with)e(no)h(link)f(to)i(astronomical)0
+3247 y(observ)-5 b(ations)24 b(except)i(in)d(an)h(historical)f(sense.)
+39 b(Its)24 b(unit)f(is)h(the)h(SI)f(second,)i(whic)m(h)d(is)g
+(de\014ned)h(in)f(terms)h(of)h(a)0 3360 y(sp)s(eci\014c)e(n)m(um)m(b)s
+(er)g(of)i(w)m(a)m(v)m(elengths)g(of)g(the)f(radiation)f(pro)s(duced)g
+(b)m(y)h(a)h(certain)f(electronic)g(transition)f(in)g(the)0
+3473 y(caesium)30 b(133)i(atom.)42 b(It)30 b(is)g(realized)g(through)f
+(a)i(c)m(hanging)g(p)s(opulation)d(of)i(high-precision)e(atomic)j(clo)s
+(c)m(ks)0 3586 y(held)k(at)j(standards)d(institutes)g(in)h(v)-5
+b(arious)35 b(coun)m(tries.)60 b(There)36 b(is)f(an)i(elab)s(orate)g
+(pro)s(cess)f(of)h(con)m(tin)m(uous)0 3699 y(in)m(tercomparison,)29
+b(leading)h(to)h(a)f(w)m(eigh)m(ted)h(a)m(v)m(erage)i(of)e(all)e(the)i
+(clo)s(c)m(ks)f(in)m(v)m(olv)m(ed.)0 3865 y(Though)21
+b(T)-8 b(AI)22 b(shares)g(the)g(same)g(second)g(as)g(the)h(more)f
+(familiar)e(UTC,)h(the)h(t)m(w)m(o)i(time)d(scales)i(are)f(noticeably)0
+3978 y(separated)33 b(in)e(ep)s(o)s(c)m(h)h(b)s(ecause)g(of)h(the)g
+(build-up)28 b(of)33 b(leap)f(seconds)g(\(see)h(the)g(next)g
+(section\).)47 b(A)m(t)33 b(the)g(time)0 4091 y(of)e(writing,)d(UTC)i
+(lags)g(o)m(v)m(er)i(half)d(a)i(min)m(ute)f(b)s(ehind)d(T)-8
+b(AI.)0 4258 y(F)g(or)34 b(an)m(y)f(giv)m(en)g(date,)h(the)g
+(di\013erence)e(T)-8 b(AI)p Fo(\000)p FD(UTC)32 b(can)h(b)s(e)g
+(obtained)f(b)m(y)h(calling)e(the)i(SLALIB)g(function)0
+4371 y(sla)p Ft(_)p FD(D)m(A)-8 b(T.)25 b(Note,)i(ho)m(w)m(ev)m(er,)g
+(that)d(an)g(up-to-date)i(cop)m(y)e(of)h(the)f(function)f(m)m(ust)h(b)s
+(e)f(used)h(if)f(the)h(most)g(recen)m(t)0 4484 y(leap)45
+b(seconds)g(are)h(required.)83 b(F)-8 b(or)46 b(applications)e(where)h
+(this)f(is)g(critical,)k(mec)m(hanisms)d(indep)s(enden)m(t)0
+4597 y(of)40 b(SLALIB)f(and)g(under)f(lo)s(cal)i(con)m(trol)g(m)m(ust)f
+(b)s(e)g(set)i(up;)i(in)c(suc)m(h)g(cases)i(sla)p Ft(_)p
+FD(D)m(A)-8 b(T)40 b(can)g(b)s(e)f(useful)f(as)0 4710
+y(an)44 b(indep)s(enden)m(t)f(c)m(hec)m(k,)50 b(for)44
+b(test)i(dates)f(within)d(the)j(range)f(of)h(the)g(a)m(v)-5
+b(ailable)44 b(v)m(ersion.)83 b(Up-to-date)0 4823 y(information)29
+b(on)h(T)-8 b(AI)p Fo(\000)p FD(UTC)30 b(is)f(a)m(v)-5
+b(ailable)30 b(from)g Ft(ftp://maia.usno.navy.mi)o(l/s)o(er7/)o(tai-)o
+(utc)o(.dat)o FD(.)0 5127 y FB(4.15.2)106 b(Univ)m(ersal)35
+b(Time:)46 b(UT,)35 b(UTC)0 5354 y Fq(Universal)42 b(Time,)h
+FD(UT,)d(or)g(more)g(sp)s(eci\014cally)e(UT1,)44 b(is)39
+b(in)g(e\013ect)j(mean)e(solar)g(time)g(and)f(is)g(really)h(an)0
+5467 y(expression)c(of)i(Earth)f(rotation)h(rather)f(than)g(a)h
+(measure)f(of)h(time.)62 b(Originally)34 b(de\014ned)i(in)g(terms)h(of)
+h(a)0 5580 y(p)s(oin)m(t)e(in)f(the)i(sky)f(called)g(\\the)h
+(\014ctitious)e(mean)i(Sun",)g(UT)g(is)e(no)m(w)i(de\014ned)e(through)h
+(its)g(relationship)0 5693 y(with)28 b(Earth)g(rotation)h(angle)g
+(\(formerly)f(sidereal)f(time\).)41 b(Because)30 b(the)f(Earth's)g
+(rotation)g(rate)g(is)f(sligh)m(tly)p eop
+%%Page: 193 195
+193 194 bop 0 52 a Fw(SUN/67.70)3206 b FD(193)0 351 y(irregular)32
+b(and)h(gradually)g(decreasing,)1394 318 y Fu(5)1468
+351 y FD(the)h(UT)g(second)g(is)f(not)i(precisely)d(matc)m(hed)j(to)g
+(the)f(SI)f(second.)0 464 y(This)c(mak)m(es)i(UT)f(itself)f(unsuitable)
+f(for)i(use)g(as)h(a)g(time)f(scale.)0 625 y(That)37
+b(role)f(is)g(instead)g(tak)m(en)h(b)m(y)g Fq(Co)-5 b(or)g(dinate)g(d)
+42 b(Universal)d(Time,)f FD(UTC,)e(whic)m(h)g(is)f(clo)s(c)m(k-based)i
+(and)f(is)0 738 y(the)i(foundation)e(of)h(civil)f(timek)m(eeping.)62
+b(Most)38 b(time)f(zones)h(di\013er)e(from)h(UTC)g(b)m(y)h(an)f(in)m
+(teger)h(n)m(um)m(b)s(er)0 851 y(of)d(hours,)f(though)g(a)h(few)f(\()p
+Fq(e.g.)g FD(parts)g(of)h(Canada)f(and)g(Australia\))g(di\013er)f(b)m
+(y)h Fl(n)23 b FD(+)f(0)p Fl(:)p FD(5)36 b(hours.)52
+b(Since)33 b(its)0 963 y(in)m(tro)s(duction,)28 b(UTC)h(has)h(b)s(een)f
+(k)m(ept)h(roughly)e(in)h(step)g(with)g(UT)g(b)m(y)h(a)g(v)-5
+b(ariet)m(y)30 b(of)f(adjustmen)m(ts)h(that)g(are)0 1076
+y(agreed)24 b(in)d(adv)-5 b(ance)24 b(and)e(then)h(carried)f(out)h(in)f
+(a)h(co)s(ordinated)g(manner)f(b)m(y)h(the)g(timek)m(eeping)g(comm)m
+(unities)0 1189 y(of)h(di\013eren)m(t)f(coun)m(tries|hence)h(the)f
+(name.)39 b(Though)23 b(rate)h(c)m(hanges)h(w)m(ere)f(used)f(in)f(the)i
+(past,)i(no)m(w)m(ada)m(ys)f(all)0 1302 y(suc)m(h)j(adjustmen)m(ts)h
+(are)g(made)f(b)m(y)h(o)s(ccasionally)f(inserting)e(a)j(whole)f
+(second.)40 b(This)27 b(pro)s(cedure)h(is)f(called)h(a)0
+1415 y Fq(le)-5 b(ap)32 b(se)-5 b(c)g(ond)p FD(.)42 b(Because)30
+b(the)g(da)m(y)f(length)f(is)g(no)m(w)h(sligh)m(tly)e(longer)i(than)f
+(86400)j(SI)d(seconds,)i(a)f(leap)f(second)0 1528 y(amoun)m(ts)j(to)g
+(stopping)e(the)i(UTC)e(clo)s(c)m(k)i(for)f(a)h(second)f(to)i(let)e
+(the)g(Earth)h(catc)m(h)g(up.)0 1689 y(Y)-8 b(ou)46 b(need)f(UT1)h(in)e
+(order)h(to)h(p)s(oin)m(t)f(a)h(telescop)s(e)g(or)f(an)m(tenna)h(at)h
+(a)f(clestial)e(target.)88 b(T)-8 b(o)46 b(obtain)f(it)0
+1801 y(starting)25 b(from)g(UTC,)g(y)m(ou)h(ha)m(v)m(e)g(to)g(lo)s(ok)f
+(up)f(the)i(v)-5 b(alue)25 b(of)g(UT1)p Fo(\000)p FD(UTC)g(for)g(the)g
+(date)h(concerned)g(in)e(tables)0 1914 y(published)h(b)m(y)k(the)h(In)m
+(ternational)e(Earth)h(Rotation)h(and)f(reference)g(frames)g(Service;)g
+(this)f(quan)m(tit)m(y)-8 b(,)31 b(k)m(ept)0 2027 y(in)22
+b(the)h(range)h Fo(\006)p FD(0)605 1994 y Fu(s)610 2027
+y Fl(:)p FD(9)f(b)m(y)g(means)g(of)h(leap)e(seconds,)j(is)d(then)h
+(added)g(to)h(the)f(UTC.)g(The)f(quan)m(tit)m(y)i(UT1)p
+Fo(\000)p FD(UTC,)0 2140 y(whic)m(h)32 b(t)m(ypically)g(c)m(hanges)i(b)
+m(y)g(of)f(order)g(1)g(ms)g(p)s(er)g(da)m(y)-8 b(,)35
+b(can)e(b)s(e)g(obtained)f(only)h(b)m(y)g(observ)-5 b(ation)33
+b(\(VLBI)0 2253 y(using)27 b(extragalactic)j(radio)e(sources\),)i
+(though)e(seasonal)g(trends)g(are)h(w)m(ell)f(kno)m(wn)g(and)f(the)i
+(IERS)f(listings)0 2366 y(are)j(able)f(to)h(predict)e(some)i(w)m(a)m(y)
+g(in)m(to)g(the)f(future)g(with)f(adequate)i(accuracy)h(for)e(p)s(oin)m
+(ting)e(telescop)s(es.)0 2527 y(UTC)d(leap)g(seconds)g(are)h(in)m(tro)s
+(duced)e(as)h(necessary)-8 b(,)28 b(usually)23 b(at)j(the)g(end)f(of)g
+(Decem)m(b)s(er)i(or)e(June.)38 b(Because)0 2640 y(on)29
+b(the)h(a)m(v)m(erage)h(the)f(solar)f(da)m(y)g(is)g(sligh)m(tly)e
+(longer)i(than)g(the)g(nominal)f(86,400)k(SI)c(seconds,)i(leap)f
+(seconds)0 2752 y(are)g(alw)m(a)m(ys)f(p)s(ositiv)m(e;)g(ho)m(w)m(ev)m
+(er,)j(pro)m(vision)26 b(exists)i(for)g(negativ)m(e)h(leap)f(seconds)g
+(if)f(needed.)39 b(The)28 b(form)g(of)g(a)0 2865 y(leap)i(second)g(can)
+h(b)s(e)f(seen)g(from)g(the)h(follo)m(wing)e(description)f(of)i(the)h
+(end)f(of)g(June)g(1994:)1180 3131 y(UTC)166 b(UT1)p
+Fo(\000)p FD(UTC)256 b(UT1)353 3357 y(1994)101 b(June)e(30)i(23)31
+b(59)g(58)186 b Fo(\000)p FD(0)p Fl(:)p FD(218)i(23)31
+b(59)g(57.782)1113 3470 y(23)g(59)g(59)186 b Fo(\000)p
+FD(0)p Fl(:)p FD(218)i(23)31 b(59)g(58.782)1113 3583
+y(23)g(59)g(60)186 b Fo(\000)p FD(0)p Fl(:)p FD(218)i(23)31
+b(59)g(59.782)634 3695 y(July)162 b(1)100 b(00)31 b(00)g(00)186
+b(+0)p Fl(:)p FD(782)i(00)31 b(00)g(00.782)1113 3808
+y(00)g(00)g(01)186 b(+0)p Fl(:)p FD(782)i(00)31 b(00)g(01.782)0
+3966 y(Note)h(that)f(UTC)f(has)h(to)g(b)s(e)f(expressed)g(as)h(hours,)f
+(min)m(utes)g(and)g(seconds)g(\(or)h(at)h(least)f(in)e(seconds)i(for)f
+(a)0 4079 y(giv)m(en)k(date\))h(if)d(leap)i(seconds)f(are)h(to)h(b)s(e)
+e(tak)m(en)i(in)m(to)f(accoun)m(t)h(in)d(the)i(correct)h(manner.)50
+b(It)34 b(is)f(improp)s(er)0 4192 y(to)40 b(express)e(a)i(UTC)e(as)h(a)
+h(Julian)c(Date,)43 b(for)c(example,)i(b)s(ecause)e(there)h(will)c(b)s
+(e)i(an)h(am)m(biguit)m(y)g(during)0 4305 y(a)c(leap)f(second)h(\(in)e
+(the)i(ab)s(o)m(v)m(e)h(example,)g(1994)g(June)e(30)h(23)2183
+4272 y Fu(h)2243 4305 y FD(59)2333 4272 y Fu(m)2412 4305
+y FD(60)2502 4272 y Fu(s)2507 4305 y Fl(:)p FD(0)g(and)f(1994)j(July)c
+(1)i(00)3385 4272 y Fu(h)3444 4305 y FD(00)3534 4272
+y Fu(m)3613 4305 y FD(00)3703 4272 y Fu(s)3708 4305 y
+Fl(:)p FD(0)0 4418 y(w)m(ould)d Fq(b)-5 b(oth)41 b FD(come)34
+b(out)g(as)f(MJD)g(49534.00000\).)54 b(Although)33 b(in)e(the)j(v)-5
+b(ast)33 b(ma)5 b(jorit)m(y)34 b(of)f(cases)h(this)e(w)m(on't)0
+4531 y(matter,)45 b(there)d(are)f(p)s(oten)m(tial)g(problems)f(in)g
+(on-line)g(data)i(acquisition)d(systems)j(and)e(in)g(applications)0
+4644 y(in)m(v)m(olving)33 b(taking)h(the)g(di\013erence)g(b)s(et)m(w)m
+(een)h(t)m(w)m(o)h(times.)52 b(Note)35 b(that)g(although)f(the)g
+(functions)f(sla)p Ft(_)p FD(D)m(A)-8 b(T)0 4757 y(and)33
+b(sla)p Ft(_)p FD(DTT)f(exp)s(ect)h(UTC)g(in)f(the)h(form)g(of)g(an)g
+(MJD,)h(the)f(meaning)g(here)f(is)h(really)f(a)h(whole-n)m(um)m(b)s(er)
+0 4870 y Fq(date)46 b FD(rather)39 b(than)f(a)h(time.)66
+b(Though)37 b(the)i(functions)e(will)f(accept)41 b(a)e(fractional)f
+(part)g(and)g(will)e(almost)0 4983 y(alw)m(a)m(ys)i(function)d
+(correctly)-8 b(,)40 b(on)d(a)g(da)m(y)h(whic)m(h)e(ends)g(with)f(a)j
+(leap)e(second)i(incorrect)e(results)g(w)m(ould)g(b)s(e)p
+0 5060 1512 4 v 104 5113 a Fs(5)138 5145 y Fr(The)f(Earth)f(is)h(slo)n
+(wing)h(do)n(wn)e(b)r(ecause)h(of)g(tidal)f(e\013ects.)61
+b(The)34 b(SI)g(second)g(re\015ects)g(the)g(length-of-da)n(y)g(in)g
+(the)g(mid-)0 5236 y(19th)28 b(cen)n(tury)-6 b(,)27 b(when)g(the)g
+(astronomical)i(observ)l(ations)f(that)f(established)h(mo)r(dern)f
+(timek)n(eeping)f(w)n(ere)j(b)r(eing)e(made.)40 b(Since)0
+5328 y(then,)e(the)e(a)n(v)n(erage)g(length-of-da)n(y)g(has)g
+(increased)h(b)n(y)e(roughly)g(2)i(ms.)64 b(Sup)r(erimp)r(osed)35
+b(in)h(this)g(gradual)h(slo)n(wdo)n(wn)g(are)0 5419 y(v)l(ariations)30
+b(\(seasonal)g(and)f(decadal\))g(that)g(are)g(geoph)n(ysical)h(in)f
+(origin,)i(notably)d(due)h(to)g(large)h(scale)g(mo)n(v)n(emen)n(ts)c
+(of)k(w)n(ater)0 5510 y(and)21 b(atmosphere.)33 b(Because)23
+b(of)f(conserv)l(ation)g(of)h(angular)f(momen)n(tum,)e(as)i(the)f
+(Earth's)i(rotation-rate)f(decreases,)i(the)e(Mo)r(on)0
+5602 y(mo)n(v)n(es)k(farther)i(a)n(w)n(a)n(y)-6 b(.)39
+b(In)26 b(50)i(billion)g(y)n(ears)g(the)f(distance)g(of)h(the)f(Mo)r
+(on)h(will)h(b)r(e)e(at)g(a)g(maxim)n(um,)e(44\045)j(greater)g(than)f
+(no)n(w,)0 5693 y(at)f(whic)n(h)g(stage)g(da)n(y)f(and)h(mon)n(th)e
+(will)j(b)r(oth)e(equal)h(47)g(presen)n(t)f(da)n(ys.)p
+eop
+%%Page: 194 196
+194 195 bop 0 52 a FD(194)0 351 y(obtained)25 b(during)e(the)j(leap)f
+(second)h(itself)f(b)s(ecause)g(b)m(y)h(then)f(the)h(MJD)g(w)m(ould)e
+(ha)m(v)m(e)j(mo)m(v)m(ed)g(in)m(to)e(the)h(next)0 464
+y(da)m(y)-8 b(.)0 748 y FB(4.15.3)106 b(Sidereal)35 b(Time:)45
+b(GMST,)35 b(LAST)g Fq(etc.)0 965 y FD(Sidereal)j(time)h(is)f(lik)m(e)g
+(the)i(time)f(of)g(da)m(y)h(but)e(relativ)m(e)i(to)g(the)f(stars)h
+(rather)f(than)g(to)h(the)f(Sun.)66 b(After)0 1078 y(one)38
+b(sidereal)e(da)m(y)h(the)h(stars)f(come)i(bac)m(k)f(to)g(the)f(same)h
+(place)f(in)f(the)i(sky)-8 b(,)39 b(apart)f(from)f(sub-arcsecond)0
+1191 y(precession)29 b(e\013ects.)41 b(Because)31 b(the)f(Earth)f
+(rotates)i(faster)f(relativ)m(e)f(to)i(the)e(stars)h(than)f(to)h(the)g
+(Sun)e(b)m(y)h(one)0 1304 y(da)m(y)i(p)s(er)e(y)m(ear,)j(the)e
+(sidereal)f(second)i(is)e(shorter)h(than)g(the)h(solar)f(second;)g(the)
+h(ratio)f(is)g(ab)s(out)g(0.9973.)0 1463 y(The)41 b Fq(Gr)-5
+b(e)g(enwich)45 b(me)-5 b(an)44 b(sider)-5 b(e)g(al)45
+b(time,)g FD(GMST,)d(is)f(link)m(ed)f(to)i(UT1)g(b)m(y)g(a)g(n)m
+(umerical)f(form)m(ula)g(whic)m(h)0 1576 y(is)31 b(implemen)m(ted)f(in)
+h(the)h(SLALIB)f(functions)f(sla)p Ft(_)p FD(GMST)h(and)g(sla)p
+Ft(_)p FD(GMST)-8 b(A.)32 b(There)f(are,)i(of)f(course,)h(no)0
+1689 y(leap)25 b(seconds)g(in)f(GMST,)h(but)g(the)g(sidereal)f(second)h
+(\(measured)h(in)d(SI)i(seconds\))h(c)m(hanges)g(in)e(length)g(along)0
+1802 y(with)32 b(the)h(UT1)g(second,)g(and)g(also)g(v)-5
+b(aries)32 b(o)m(v)m(er)i(long)e(p)s(erio)s(ds)f(of)i(time)g(b)s
+(ecause)f(of)h(slo)m(w)g(c)m(hanges)h(in)d(the)0 1914
+y(Earth's)25 b(orbit.)37 b(This)23 b(mak)m(es)j(sidereal)d(time)i
+(unsuitable)d(for)i(ev)m(erything)h(except)h(predicting)c(the)j
+(apparen)m(t)0 2027 y(directions)k(of)h(celestial)g(sources,)h(in)e
+(other)i(w)m(ords)f(as)g(an)g(angle)h(rather)f(than)g(a)h(time.)0
+2186 y(The)j Fq(lo)-5 b(c)g(al)39 b(app)-5 b(ar)g(ent)40
+b(sider)-5 b(e)g(al)38 b(time,)f FD(LAST,)d(is)g(the)h(apparen)m(t)g
+(righ)m(t)g(ascension)f(of)h(the)g(lo)s(cal)g(meridian,)0
+2299 y(from)g(whic)m(h)g(the)h(hour)f(angle)h(of)g(an)m(y)g(star)g(can)
+g(b)s(e)f(determined)g(kno)m(wing)g(its)g(righ)m(t)h(ascension.)56
+b(LAST)0 2412 y(can)37 b(b)s(e)e(obtained)h(from)f(the)i(GMST)f(b)m(y)g
+(adding)f(the)h(east)h(longitude)e(\(corrected)j(for)e(p)s(olar)f
+(motion)h(in)0 2525 y(precise)22 b(w)m(ork\))i(and)e(the)i
+Fq(e)-5 b(quation)26 b(of)h(the)f(e)-5 b(quinoxes)p FD(.)38
+b(The)23 b(latter,)i(already)e(describ)s(ed,)f(is)h(an)g(asp)s(ect)g
+(of)g(the)0 2638 y(n)m(utation)28 b(e\013ect)h(and)e(can)h(b)s(e)f
+(predicted)g(b)m(y)h(calling)e(the)i(SLALIB)f(function)g(sla)p
+Ft(_)p FD(EQEQX)f(or,)j(neglecting)0 2751 y(certain)h(v)m(ery)h(small)e
+(terms,)h(b)m(y)h(calling)e(sla)p Ft(_)p FD(NUTC)g(and)h(using)f(the)h
+(expression)f(\001)p Fl( )19 b FD(cos)c Fl(\017)p FD(.)0
+2909 y(GAST,)30 b(or)h(plain)d(GST,)i(is)f(GMST)h(plus)f(the)h
+(equation)h(of)f(the)h(equino)m(xes.)0 3193 y FB(4.15.4)106
+b(Dynamical)34 b(Time:)46 b(TT,)34 b(TDB)0 3411 y FD(Dynamical)20
+b(time)h(\(formerly)f(Ephemeris)f(Time,)j(ET\))f(is)f(the)h(indep)s
+(enden)m(t)e(v)-5 b(ariable)19 b(in)h(the)h(theories)g(whic)m(h)0
+3523 y(describ)s(e)35 b(the)h(motions)g(of)g(b)s(o)s(dies)e(in)h(the)h
+(solar)g(system.)58 b(When)36 b(using)e(published)f(form)m(ulae)j(or)g
+(tables)0 3636 y(that)e(mo)s(del)f(the)h(p)s(osition)d(of)j(the)g
+(Earth)g(in)e(its)h(orbit,)h(for)f(example,)i(or)f(lo)s(ok)f(up)f(the)i
+(Mo)s(on's)g(p)s(osition)0 3749 y(in)29 b(a)j(precomputed)e(ephemeris,)
+g(the)g(date)i(and)e(time)h(m)m(ust)f(b)s(e)g(in)g(terms)h(of)f(one)i
+(of)f(the)f(dynamical)g(time)0 3862 y(scales.)39 b(It)24
+b(is)f(a)h(common)g(but)g(understandable)d(mistak)m(e)k(to)g(use)e(UTC)
+h(directly)-8 b(,)24 b(in)f(whic)m(h)g(case)i(the)f(results)0
+3975 y(will)k(b)s(e)h(o)m(v)m(er)j(a)f(min)m(ute)e(out)i(\(at)h(the)e
+(time)g(of)h(writing\).)0 4134 y(It)42 b(is)e(not)i(hard)e(to)i(see)g
+(wh)m(y)f(suc)m(h)g(time)g(scales)h(are)g(necessary)-8
+b(.)74 b(UTC)41 b(w)m(ould)f(clearly)h(b)s(e)g(unsuitable)0
+4247 y(as)34 b(the)h(argumen)m(t)g(of)f(an)g(ephemeris)f(b)s(ecause)h
+(of)g(leap)g(seconds.)52 b(A)35 b(solar-system)f(ephemeris)f(based)h
+(on)0 4360 y(UT1)26 b(or)h(sidereal)d(time)i(w)m(ould)f(someho)m(w)i
+(ha)m(v)m(e)h(to)e(include)e(the)j(unpredictable)d(v)-5
+b(ariations)25 b(of)h(the)h(Earth's)0 4472 y(rotation.)61
+b(T)-8 b(AI)37 b(w)m(ould)f(w)m(ork,)j(but)d(in)g(principle)d(the)38
+b(ephemeris)d(and)i(the)g(ensem)m(ble)f(of)i(atomic)f(clo)s(c)m(ks)0
+4585 y(w)m(ould)e(ev)m(en)m(tually)h(drift)f(apart.)59
+b(In)35 b(e\013ect,)40 b(the)c(ephemeris)f Fq(is)43 b
+FD(a)37 b(clo)s(c)m(k,)h(with)d(the)i(b)s(o)s(dies)d(of)i(the)h(solar)0
+4698 y(system)31 b(the)f(hands)f(from)h(whic)m(h)f(the)i(ephemeris)e
+(time)h(is)f(read.)0 4857 y(Only)23 b(t)m(w)m(o)j(of)e(the)h(dynamical)
+e(time)h(scales)g(are)h(of)g(an)m(y)g(great)g(imp)s(ortance)f(to)h
+(observ)-5 b(ational)24 b(astronomers,)0 4970 y(TT)30
+b(and)f(TDB.)0 5128 y Fq(T)-7 b(err)i(estrial)37 b(Time,)c
+FD(TT,)f(is)g(the)h(theoretical)g(time)g(scale)g(of)g(apparen)m(t)g
+(geo)s(cen)m(tric)h(ephemerides)d(of)i(solar)0 5241 y(system)h(b)s(o)s
+(dies.)47 b(It)34 b(applies)d(to)j(clo)s(c)m(ks)g(at)g(sea-lev)m(el,)h
+(and)e(for)g(practical)g(purp)s(oses)e(it)i(is)g(tied)g(to)h(A)m(tomic)
+0 5354 y(Time)28 b(T)-8 b(AI)30 b(through)e(the)i(form)m(ula)e(TT)h(=)f
+(T)-8 b(AI)30 b(+)f(32)1894 5321 y Fu(s)1899 5354 y Fl(:)p
+FD(184.)42 b(In)29 b(practice,)h(therefore,)g(the)f(units)f(of)i(TT)e
+(are)0 5467 y(ordinary)d(SI)h(seconds,)h(and)f(the)h(o\013set)g(of)g
+(32)1576 5434 y Fu(s)1581 5467 y Fl(:)p FD(184)i(with)c(resp)s(ect)i
+(to)g(T)-8 b(AI)26 b(is)g(\014xed.)39 b(The)26 b(SLALIB)g(function)0
+5580 y(sla)p Ft(_)p FD(DTT)i(returns)f(TT)p Fo(\000)p
+FD(UTC)g(for)i(a)g(giv)m(en)g(UTC)f(\()p Fq(n.b.)h FD(sla)p
+Ft(_)p FD(DTT)e(calls)h(sla)p Ft(_)p FD(DTT,)g(and)h(the)f(latter)i(m)m
+(ust)0 5693 y(b)s(e)g(an)g(up-to-date)h(v)m(ersion)f(if)g(recen)m(t)h
+(leap)f(seconds)g(are)h(to)g(b)s(e)f(tak)m(en)h(in)m(to)g(accoun)m
+(t\).)p eop
+%%Page: 195 197
+195 196 bop 0 52 a Fw(SUN/67.70)3206 b FD(195)0 351 y
+Fq(Baryc)-5 b(entric)36 b(Dynamic)-5 b(al)37 b(Time,)d
+FD(TDB,)g(is)e(a)i Fq(c)-5 b(o)g(or)g(dinate)38 b(time,)c
+FD(suitable)e(for)h(lab)s(elling)d(ev)m(en)m(ts)k(that)g(are)0
+464 y(most)40 b(simply)d(describ)s(ed)g(in)h(a)i(con)m(text)h(where)e
+(the)h(b)s(o)s(dies)d(of)i(the)h(solar)f(system)g(are)h(absen)m(t.)69
+b(Appli-)0 577 y(cations)43 b(include)d(the)j(emission)e(of)i(pulsar)e
+(radiation)h(and)g(the)h(motions)f(of)h(the)g(solar-system)f(b)s(o)s
+(dies)0 690 y(themselv)m(es.)h(When)31 b(the)g(readings)g(of)g(the)g
+(observ)m(er's)h(TT)e(clo)s(c)m(k)i(are)f(lab)s(elled)e(using)g(suc)m
+(h)i(a)h(co)s(ordinate)0 803 y(time,)27 b(di\013erences)g(are)g(seen)g
+(b)s(ecause)f(the)h(clo)s(c)m(k)h(is)d(a\013ected)k(b)m(y)d(its)h(sp)s
+(eed)e(in)h(the)h(barycen)m(tric)g(co)s(ordinate)0 916
+y(system)37 b(and)g(the)g(gra)m(vitational)g(p)s(oten)m(tial)g(in)e
+(whic)m(h)h(it)h(is)f(immersed.)59 b(Equiv)-5 b(alen)m(tly)d(,)38
+b(observ)-5 b(ations)36 b(of)0 1029 y(pulsars)21 b(expressed)h(in)g(TT)
+g(w)m(ould)g(displa)m(y)f(similar)f(v)-5 b(ariations)22
+b(\(quite)h(apart)g(from)f(the)i(familiar)c(ligh)m(t-time)0
+1142 y(e\013ects\).)0 1356 y(TDB)38 b(is)f(de\014ned)g(in)g(suc)m(h)g
+(a)h(w)m(a)m(y)h(that)g(it)e(k)m(eeps)i(close)f(to)h(TT)e(on)h(the)g(a)
+m(v)m(erage,)k(with)37 b(the)h(relativistic)0 1469 y(e\013ects)27
+b(emerging)f(as)h(quasi-p)s(erio)s(dic)22 b(di\013erences)k(of)g(maxim)
+m(um)f(amplitude)f(rather)i(less)f(than)h(2)15 b(ms.)39
+b(This)0 1582 y(is)30 b(negligible)g(for)h(man)m(y)g(purp)s(oses,)f(so)
+i(that)g(TT)f(can)h(act)g(as)g(a)g(p)s(erfectly)e(adequate)j(surrogate)
+f(for)f(TDB)0 1695 y(in)k(most)h(cases,)j(but)c(unless)f(tak)m(en)j(in)
+m(to)f(accoun)m(t)i(w)m(ould)c(sw)m(amp)i(long-term)g(analysis)e(of)j
+(pulse)d(arriv)-5 b(al)0 1808 y(times)30 b(from)g(the)g(millisecond)e
+(pulsars.)0 2023 y(Most)j(of)f(the)g(v)-5 b(ariation)29
+b(b)s(et)m(w)m(een)h(TDB)g(and)f(TT)g(comes)i(from)e(the)h(ellipticit)m
+(y)d(of)j(the)g(Earth's)g(orbit;)f(the)0 2136 y(TT)g(clo)s(c)m(k's)i
+(sp)s(eed)e(and)h(gra)m(vitational)g(p)s(oten)m(tial)f(v)-5
+b(ary)30 b(sligh)m(tly)f(during)f(the)i(course)g(of)g(the)h(y)m(ear,)g
+(and)e(as)0 2248 y(a)k(consequence)f(its)g(rate)h(as)f(seen)h(from)e
+(an)h(outside)g(observ)m(er)g(v)-5 b(aries)32 b(due)f(to)i(transv)m
+(erse)g(Doppler)e(e\013ect)0 2361 y(and)i(gra)m(vitational)g(redshift.)
+47 b(The)33 b(main)f(comp)s(onen)m(t)i(is)e(a)i(sin)m(usoidal)c(v)-5
+b(ariation)33 b(of)g(amplitude)e(0)3542 2328 y Fu(s)3547
+2361 y Fl(:)p FD(0017;)0 2474 y(higher)j(harmonics,)h(and)g(terms)g
+(caused)h(b)m(y)f(Mo)s(on)g(and)g(planets,)h(lie)e(t)m(w)m(o)j(orders)d
+(of)i(magnitude)e(b)s(elo)m(w)0 2587 y(this)29 b(dominan)m(t)h(ann)m
+(ual)f(term.)41 b(Diurnal)28 b(\(top)s(o)s(cen)m(tric\))k(terms,)e(a)h
+(function)e(of)i(UT,)f(are)h(2)15 b Fl(\026)p FD(s)30
+b(or)h(less.)0 2802 y(The)f(IA)m(U)h(1976)h(resolution)d(de\014ned)g
+(TDB)i(b)m(y)f(stipulating)e(that)j(TDB)p Fo(\000)p FD(TT)f(consists)g
+(of)h(p)s(erio)s(dic)d(terms)0 2915 y(only)-8 b(.)37
+b(This)20 b(pro)m(vided)g(a)i(go)s(o)s(d)f(qualitativ)m(e)h
+(description,)f(but)g(turned)f(out)i(to)g(con)m(tain)g(hidden)d
+(assumptions)0 3028 y(ab)s(out)45 b(the)g(form)f(of)h(the)g
+(solar-system)g(ephemeris)f(and)g(hence)h(lac)m(k)m(ed)h(dynamical)d
+(rigour.)83 b(A)45 b(later)0 3141 y(resolution,)28 b(in)g(1991,)j(in)m
+(tro)s(duced)c(new)i(co)s(ordinate)g(time)f(scales,)i(TCG)e(and)h(TCB,)
+g(and)f(iden)m(ti\014ed)f(TDB)0 3254 y(as)37 b(a)f(linear)f
+(transformation)g(of)i(one)f(of)h(them)f(\(TCB\))h(with)e(a)h(rate)h(c)
+m(hosen)g(not)g(to)g(drift)d(from)i(TT)g(on)0 3366 y(the)43
+b(a)m(v)m(erage.)82 b(Unfortunately)42 b(ev)m(en)i(this)e(impro)m(v)m
+(ed)h(de\014nition)e(has)h(pro)m(v)m(ed)i(to)g(con)m(tin)f(am)m
+(biguities.)0 3479 y(The)35 b(SLALIB)g(sla)p Ft(_)p FD(R)m(CC)f
+(function)g(implemen)m(ts)g(TDB)i(in)e(the)h(w)m(a)m(y)h(that)g(is)f
+(most)h(consisten)m(t)f(with)f(the)0 3592 y(1976)g(de\014nition)d(and)h
+(with)g(existing)f(practice.)48 b(It)33 b(pro)m(vides)f(a)h(mo)s(del)f
+(of)h(TDB)p Fo(\000)p FD(TT)f(accurate)i(to)g(a)f(few)0
+3705 y(nanoseconds.)0 3920 y(Unlik)m(e)g(TDB,)h(the)h(IA)m(U)f(1991)i
+(co)s(ordinate)e(time)f(scales)h(TCG)g(and)f(TCB)h(\(not)g(supp)s
+(orted)e(b)m(y)i(SLALIB)0 4033 y(functions)25 b(at)j(presen)m(t\))g(do)
+e(not)i(ha)m(v)m(e)g(their)e(rates)h(adjusted)g(to)g(trac)m(k)h(TT)f
+(and)f(consequen)m(tly)h(gain)f(on)h(TT)0 4146 y(and)j(TDB,)h(b)m(y)f
+(ab)s(out)g(0)863 4113 y Fu(s)868 4146 y Fl(:)p FD(02/y)m(ear)j(and)d
+(0)1449 4113 y Fu(s)1454 4146 y Fl(:)p FD(5/y)m(ear)j(resp)s(ectiv)m
+(ely)-8 b(.)0 4360 y(As)30 b(already)h(p)s(oin)m(ted)e(out,)i(the)g
+(distinction)d(b)s(et)m(w)m(een)j(TT)f(and)f(TDB)i(is)f(of)h(no)f
+(practical)g(imp)s(ortance)g(for)0 4473 y(most)j(purp)s(oses.)44
+b(F)-8 b(or)33 b(example)f(when)f(calling)f(sla)p Ft(_)p
+FD(PRENUT)h(to)i(generate)h(a)f(precession-n)m(utation)e(ma-)0
+4586 y(trix,)d(or)h(when)e(calling)g(sla)p Ft(_)p FD(EVP)h(or)g(sla)p
+Ft(_)p FD(EPV)g(to)h(predict)f(the)g(Earth's)h(p)s(osition)d(and)i(v)m
+(elo)s(cit)m(y)-8 b(,)30 b(the)f(time)0 4699 y(argumen)m(t)h(is)f
+(strictly)g(TDB,)h(but)f(TT)g(is)g(en)m(tirely)f(adequate)j(and)e(will)
+e(require)i(m)m(uc)m(h)g(less)g(computation.)0 4914 y(The)i(time)g
+(scale)h(used)f(b)m(y)g(the)h(JPL)e(solar-system)i(ephemerides)e(is)g
+(called)h Fl(T)2747 4929 y Ff(eph)2892 4914 y FD(and)g(is)f(n)m
+(umerically)f(the)0 5027 y(same)i(as)f(TDB.)0 5241 y(Predictions)20
+b(of)i(top)s(o)s(cen)m(tric)f(solar-system)h(phenomena)f(suc)m(h)g(as)h
+(o)s(ccultations)f(and)g(eclipses)g(require)f(solar)0
+5354 y(time)35 b(UT)g(as)g(w)m(ell)f(as)i(dynamical)d(time.)55
+b(TT/TDB/ET)35 b(is)f(all)h(that)g(is)f(required)g(in)g(order)g(to)i
+(compute)0 5467 y(the)28 b(geo)s(cen)m(tric)h(circumstances,)f(but)g
+(if)e(horizon)h(co)s(ordinates)h(or)g(geo)s(cen)m(tric)h(parallax)e
+(are)h(to)g(b)s(e)g(tac)m(kled)0 5580 y(UT)34 b(is)f(also)g(needed.)51
+b(A)34 b(rough)g(estimate)g(of)g(\001T)d(=)g(ET)22 b
+Fo(\000)g FD(UT)34 b(is)f(a)m(v)-5 b(ailable)33 b(via)g(the)h(function)
+f(sla)p Ft(_)p FD(DT.)0 5693 y(F)-8 b(or)31 b(a)g(giv)m(en)f(ep)s(o)s
+(c)m(h)g(\()p Fq(e.g.)g FD(1650\))j(this)c(returns)g(an)i(appro)m
+(ximation)e(to)i(\001T)f(in)f(seconds.)p eop
+%%Page: 196 198
+196 197 bop 0 52 a FD(196)0 351 y Fv(4.16)112 b(Calendars)0
+565 y FD(The)30 b(ordinary)f Fq(Gr)-5 b(e)g(gorian)35
+b(Calendar)f(Date)p FD(,)d(together)h(with)d(a)i(time)g(of)f(da)m(y)-8
+b(,)32 b(can)f(b)s(e)f(used)f(to)i(express)g(an)0 678
+y(ep)s(o)s(c)m(h)38 b(in)e(an)m(y)j(desired)d(time)i(scale.)63
+b(F)-8 b(or)39 b(man)m(y)f(purp)s(oses,)g(ho)m(w)m(ev)m(er,)k(a)c(con)m
+(tin)m(uous)g(coun)m(t)g(of)g(da)m(ys)g(is)0 791 y(more)32
+b(con)m(v)m(enien)m(t,)h(and)e(for)g(this)g(purp)s(ose)f(the)h(system)h
+(of)g Fq(Julian)i(Day)f(Numb)-5 b(er)42 b FD(can)32 b(b)s(e)f(used.)43
+b(JD)32 b(zero)0 904 y(is)f(lo)s(cated)h(ab)s(out)f(7000)i(y)m(ears)g
+(ago,)g(w)m(ell)e(b)s(efore)g(the)h(historical)e(era,)i(and)f(is)g
+(formally)f(de\014ned)g(in)h(terms)0 1017 y(of)k(Green)m(wic)m(h)h(no)s
+(on;)h(for)e(example)g(Julian)e(Da)m(y)j(Num)m(b)s(er)f(2449444)j(b)s
+(egan)d(at)h(no)s(on)f(on)g(1994)i(April)c(1.)0 1130
+y Fq(Julian)d(Date)k FD(is)26 b(the)h(same)g(system)g(but)g(with)f(a)h
+(fractional)f(part)h(app)s(ended;)g(Julian)e(Date)j(2449443.5)j(w)m(as)
+0 1242 y(the)i(midnigh)m(t)d(on)i(whic)m(h)f(1994)j(April)d(1)h
+(commenced.)48 b(Because)33 b(of)g(the)f(un)m(wieldy)e(size)i(of)h
+(Julian)d(Dates)0 1355 y(and)36 b(the)g(a)m(wkw)m(ardness)h(of)f(the)h
+(half-da)m(y)f(o\013set,)j(it)d(is)g(accepted)h(practice)g(to)g(remo)m
+(v)m(e)h(the)f(leading)e(`24')0 1468 y(and)27 b(the)h(trailing)e(`.5',)
+j(pro)s(ducing)c(what)j(is)f(called)f(the)i Fq(Mo)-5
+b(di\014e)g(d)32 b(Julian)e(Date)p FD(:)39 b(MJD)28 b(=)g(JD)p
+Fo(\000)p FD(2400000)p Fl(:)p FD(5.)0 1581 y(SLALIB)38
+b(routines)f(use)h(MJD,)h(as)g(opp)s(osed)f(to)h(JD,)g(throughout,)h
+(largely)e(to)h(a)m(v)m(oid)g(loss)e(of)i(precision.)0
+1694 y(1994)32 b(April)c(1)j(commenced)g(at)g(MJD)g(49443.0.)0
+1849 y(Despite)26 b(JD)g(\(and)f(hence)h(MJD\))h(b)s(eing)d(de\014ned)h
+(in)f(terms)i(of)g(\(in)e(e\013ect\))k(UT,)e(the)g(system)g(can)g(b)s
+(e)f(used)g(in)0 1962 y(conjunction)30 b(with)g(other)i(time)f(scales)g
+(suc)m(h)g(as)h(T)-8 b(AI,)31 b(TT)g(and)g(TDB)g(\(and)g(ev)m(en)h
+(sidereal)e(time)h(through)0 2075 y(the)g(concept)g(of)f
+Fq(Gr)-5 b(e)g(enwich)35 b(Sider)-5 b(e)g(al)34 b(Date)p
+FD(\).)41 b(Ho)m(w)m(ev)m(er,)33 b(it)d(is)f(improp)s(er)f(to)j
+(express)f(a)h(UTC)f(as)g(a)h(JD)f(or)0 2188 y(MJD)h(b)s(ecause)f(of)h
+(leap)f(seconds.)0 2343 y(SLALIB)43 b(has)f(six)g(routines)g(for)h(con)
+m(v)m(erting)h(to)g(and)e(from)h(dates)h(in)d(the)j(Gregorian)f
+(calendar.)78 b(The)0 2456 y(routines)43 b(sla)p Ft(_)p
+FD(CLDJ)g(and)g(sla)p Ft(_)p FD(CALDJ)h(b)s(oth)f(con)m(v)m(ert)j(a)e
+(calendar)g(date)h(in)m(to)f(an)g(MJD,)h(the)f(former)0
+2569 y(in)m(terpreting)38 b(y)m(ears)j(b)s(et)m(w)m(een)g(0)f(and)f(99)
+i(as)f(1st)g(cen)m(tury)g(and)g(the)g(latter)g(as)g(late)g(20th)h(or)f
+(early)f(21st)0 2682 y(cen)m(tury)-8 b(.)76 b(The)42
+b(routines)f(sla)p Ft(_)p FD(DJCL)g(and)g(sla)p Ft(_)p
+FD(DJCAL)g(b)s(oth)h(con)m(v)m(ert)h(an)f(MJD)h(in)m(to)f(calendar)f(y)
+m(ear,)0 2795 y(mon)m(th,)24 b(da)m(y)e(and)g(fraction)g(of)g(a)h(da)m
+(y;)i(the)d(latter)h(p)s(erforms)d(rounding)g(to)j(a)g(sp)s(eci\014ed)d
+(precision,)i(imp)s(ortan)m(t)0 2907 y(to)35 b(a)m(v)m(oid)f(dates)g
+(lik)m(e)g(`)p Ft(2005)47 b(04)g(01.***)p FD(')32 b(app)s(earing)h(in)f
+(messages.)53 b(Some)34 b(of)g(SLALIB's)f(lo)m(w-precision)0
+3020 y(ephemeris)g(routines)h(\(sla)p Ft(_)p FD(EAR)-8
+b(TH,)34 b(sla)p Ft(_)p FD(MOON)g(and)g(sla)p Ft(_)p
+FD(ECOR\))f(w)m(ork)i(in)e(terms)i(of)g(y)m(ear)g(plus)e(da)m(y-)0
+3133 y(in-y)m(ear)38 b(\(where)f(da)m(y)h(1)g(=)f(Jan)m(uary)g(1st,)k
+(at)d(least)g(for)f(the)h(mo)s(dern)e(era\).)63 b(This)36
+b(form)h(of)h(date)g(can)g(b)s(e)0 3246 y(generated)25
+b(b)m(y)f(calling)e(sla)p Ft(_)p FD(CAL)-8 b(YD)24 b(\(whic)m(h)e
+(defaults)h(y)m(ears)i(0-99)g(in)m(to)f(1950-2049\))k(or)c(sla)p
+Ft(_)p FD(CL)-8 b(YD)23 b(\(whic)m(h)0 3359 y(co)m(v)m(ers)32
+b(the)f(full)d(range)i(from)g(prehistoric)f(times\).)0
+3641 y Fv(4.17)112 b(Geo)s(cen)m(tric)36 b(Co)s(ordinates)0
+3855 y FD(The)27 b(lo)s(cation)g(of)h(the)g(observ)m(er)g(on)g(the)g
+(Earth)f(is)g(signi\014can)m(t)f(in)h(a)h(n)m(um)m(b)s(er)e(of)i(w)m(a)
+m(ys.)41 b(The)27 b(most)h(ob)m(vious,)0 3968 y(of)f(course,)g(is)f
+(the)g(e\013ect)i(of)f(longitude)e(and)h(latitude)f(on)h(the)h(observ)m
+(ed)f([)15 b Fl(Az)t(;)g(E)5 b(l)30 b FD(])d(of)f(a)h(star.)40
+b(Less)26 b(ob)m(vious)0 4081 y(is)k(the)h(need)g(to)h(allo)m(w)e(for)h
+(geo)s(cen)m(tric)h(parallax)e(when)g(\014nding)f(the)i(Mo)s(on)g(with)
+f(a)h(telescop)s(e)h(\(and)e(when)0 4193 y(doing)c(high-precision)e(w)m
+(ork)j(in)m(v)m(olving)f(the)h(Sun)e(or)i(planets\),)h(and)e(the)h
+(need)g(to)h(correct)g(observ)m(ed)f(radial)0 4306 y(v)m(elo)s(cities)j
+(and)g(apparen)m(t)g(pulsar)f(p)s(erio)s(ds)f(for)i(the)g(e\013ects)i
+(of)f(the)f(Earth's)g(rotation.)0 4461 y(The)38 b(SLALIB)g(routine)g
+(sla)p Ft(_)p FD(OBS)f(supplies)f(details)h(of)i(groundbased)e(observ)
+-5 b(atories)39 b(from)f(an)h(in)m(ternal)0 4574 y(list.)g(This)27
+b(is)g(useful)g(when)h(writing)f(applications)g(that)i(apply)e(to)j
+(more)f(than)f(one)h(observ)-5 b(atory;)30 b(the)f(user)0
+4687 y(can)h(en)m(ter)g(a)g(brief)e(name,)i(or)f(bro)m(wse)h(through)e
+(a)i(list,)f(and)g(b)s(e)f(spared)h(the)h(trouble)e(of)i(t)m(yping)f
+(in)f(the)i(full)0 4800 y(latitude,)c(longitude)e Fq(etc)p
+FD(.)39 b(The)26 b(follo)m(wing)e(F)-8 b(ortran)27 b(co)s(de)f(returns)
+e(the)i(full)e(name,)j(longitude)d(and)h(latitude)0 4913
+y(of)31 b(a)f(sp)s(eci\014ed)f(observ)-5 b(atory:)573
+5145 y Ft(CHARACTER)45 b(IDENT*10,NAME*40)573 5258 y(DOUBLE)h
+(PRECISION)f(W,P,H)620 5370 y(:)573 5483 y(CALL)h
+(sla_OBS\(0,IDENT,NAME,W,P,H)o(\))573 5596 y(IF)h(\(NAME.EQ.'?'\))d
+(...)620 b(\(not)46 b(recognized\))p eop
+%%Page: 197 199
+197 198 bop 0 52 a Fw(SUN/67.70)3206 b FD(197)0 351 y(\(Bew)m(are)24
+b(of)e(the)g(longitude)f(sign)g(con)m(v)m(en)m(tion,)k(whic)m(h)c(is)g
+(w)m(est)h(+v)m(e)h(for)f(historical)e(reasons.\))38
+b(The)22 b(follo)m(wing)0 464 y(lists)29 b(all)g(the)i(supp)s(orted)d
+(observ)-5 b(atories:)620 732 y Ft(:)573 845 y(INTEGER)46
+b(N)620 958 y(:)573 1071 y(N=1)573 1184 y(NAME=')g(')573
+1297 y(DO)h(WHILE)f(\(NAME.NE.'?'\))716 1410 y(CALL)h
+(sla_OBS\(N,IDENT,NAME,W,)o(P,H)o(\))716 1523 y(IF)g(\(NAME.NE.'?'\))d
+(THEN)859 1636 y(WRITE)i(\(*,'\(1X,I3,4X,A,4X,A\)'\))c(N,IDENT,NAME)859
+1749 y(N=N+1)716 1861 y(END)47 b(IF)573 1974 y(END)g(DO)0
+2243 y FD(The)c(routine)f(sla)p Ft(_)p FD(GEOC)h(con)m(v)m(erts)i(a)f
+Fq(ge)-5 b(o)g(detic)45 b(latitude)51 b FD(\(one)45 b(referred)d(to)i
+(the)g(lo)s(cal)f(horizon\))g(to)h(a)0 2356 y(geo)s(cen)m(tric)39
+b(p)s(osition,)e(taking)h(in)m(to)g(accoun)m(t)h(the)e(Earth's)h
+(oblateness)f(and)g(also)h(the)g(heigh)m(t)f(ab)s(o)m(v)m(e)i(sea)0
+2468 y(lev)m(el)c(of)h(the)g(observ)m(er.)56 b(The)35
+b(results)g(are)h(expressed)f(in)f(v)m(ector)j(form,)g(namely)e(as)h
+(the)f(distance)h(of)f(the)0 2581 y(observ)m(er)43 b(from)f(the)h(spin)
+e(axis)h(and)g(equator)h(resp)s(ectiv)m(ely)-8 b(.)78
+b(The)42 b Fq(ge)-5 b(o)g(c)g(entric)45 b(latitude)51
+b FD(can)43 b(b)s(e)f(found)0 2694 y(b)s(e)37 b(ev)-5
+b(aluating)38 b(A)-8 b(T)g(AN2)39 b(of)f(the)h(t)m(w)m(o)g(n)m(um)m(b)s
+(ers.)62 b(A)38 b(full)e(3-D)j(v)m(ector)h(description)c(of)i(the)g(p)s
+(osition)e(and)0 2807 y(v)m(elo)s(cit)m(y)i(of)f(the)h(observ)m(er)g
+(is)e(a)m(v)-5 b(ailable)37 b(through)f(the)i(routine)e(sla)p
+Ft(_)p FD(PV)m(OBS.)h(F)-8 b(or)38 b(a)g(sp)s(eci\014ed)e(geo)s(detic)0
+2920 y(latitude,)24 b(heigh)m(t)g(ab)s(o)m(v)m(e)h(sea)f(lev)m(el,)i
+(and)d(lo)s(cal)g(sidereal)f(time,)j(sla)p Ft(_)p FD(PV)m(OBS)e
+(generates)j(a)e(6-elemen)m(t)h(v)m(ector)0 3033 y(con)m(taining)32
+b(the)h(p)s(osition)e(and)h(v)m(elo)s(cit)m(y)h(with)e(resp)s(ect)i(to)
+g(the)g(true)f(equator)i(and)e(equino)m(x)g(of)g(date)i(\()p
+Fq(i.e.)0 3146 y FD(compatible)k(with)f(apparen)m(t)h([)15
+b Fl(\013;)g(\016)20 b FD(]\).)66 b(F)-8 b(or)39 b(some)f(applications)
+f(it)h(will)e(b)s(e)h(necessary)i(to)g(con)m(v)m(ert)h(to)f(a)0
+3259 y(mean)31 b([)15 b Fl(\013;)g(\016)20 b FD(])30
+b(frame)h(\(notably)f(FK5,)h(J2000\))i(b)m(y)d(m)m(ultiplying)d(elemen)
+m(ts)k(1-3)g(and)f(4-6)i(resp)s(ectiv)m(ely)e(with)0
+3372 y(the)i(appropriate)e(precession)h(matrix.)44 b(\(In)31
+b(theory)h(an)f(additional)f(correction)i(to)g(the)g(v)m(elo)s(cit)m(y)
+g(v)m(ector)h(is)0 3485 y(needed)d(to)h(allo)m(w)f(for)g(di\013eren)m
+(tial)f(precession,)h(but)f(this)h(correction)g(is)g(alw)m(a)m(ys)h
+(negligible.\))0 3649 y(See)g(also)f(the)h(discussion)c(of)k(the)f
+(routine)g(sla)p Ft(_)p FD(R)-10 b(VER)m(OT,)29 b(later.)0
+3949 y Fv(4.18)112 b(Ephemerides)0 4173 y FD(SLALIB)34
+b(includes)f(routines)h(for)g(generating)i(p)s(ositions)d(and)h(v)m
+(elo)s(cities)g(of)h(Solar-System)g(b)s(o)s(dies.)52
+b(The)0 4286 y(accuracy)43 b(ob)5 b(jectiv)m(es)43 b(are)f(mo)s(dest,)j
+(and)c(the)h(SLALIB)g(facilities)e(do)h(not)i(attempt)g(to)f(comp)s
+(ete)h(with)0 4399 y(precomputed)28 b(ephemerides)f(suc)m(h)h(as)g
+(those)h(pro)m(vided)e(b)m(y)h(JPL,)g(or)h(with)e(mo)s(dels)g(con)m
+(taining)h(thousands)0 4512 y(of)23 b(terms.)38 b(It)23
+b(is)f(also)h(w)m(orth)f(noting)h(that)g(SLALIB's)f(v)m(ery)i(accurate)
+g(star)f(co)s(ordinate)f(con)m(v)m(ersion)i(routines)0
+4625 y(are)37 b(not)g(strictly)f(applicable)f(to)i(solar-system)g
+(cases,)j(though)c(they)h(are)g(adequate)h(for)f(most)g(practical)0
+4738 y(purp)s(oses.)0 4903 y(Earth/Sun)j(ephemerides)f(can)i(b)s(e)f
+(generated)i(using)e(the)h(routines)f(sla)p Ft(_)p FD(EVP)g(and)g(sla)p
+Ft(_)p FD(EPV,)g(eac)m(h)i(of)0 5016 y(whic)m(h)g(predict)g(Earth)h(p)s
+(osition)e(and)i(v)m(elo)s(cit)m(y)g(with)f(resp)s(ect)h(to)h(b)s(oth)e
+(the)i(solar-system)f(barycen)m(tre)0 5128 y(and)33 b(the)g(Sun.)48
+b(The)32 b(t)m(w)m(o)j(routines)d(o\013er)i(di\013eren)m(t)e
+(trade-o\013s)i(b)s(et)m(w)m(een)g(accuracy)h(and)d(execution)i(time.)0
+5241 y(F)-8 b(or)38 b(most)f(purp)s(oses,)g(sla)p Ft(_)p
+FD(EVP)f(is)g(adequate:)55 b(maxim)m(um)36 b(v)m(elo)s(cit)m(y)h(error)
+g(is)f(0.42)i(metres)f(p)s(er)f(second;)0 5354 y(maxim)m(um)25
+b(helio)s(cen)m(tric)g(p)s(osition)f(error)h(is)g(1600)j(km)e(\(equiv)
+-5 b(alen)m(t)25 b(to)i(ab)s(out)f(2)2771 5317 y Fk(0)l(0)2837
+5354 y FD(at)h(1)f(A)m(U\),)i(with)c(barycen-)0 5467
+y(tric)39 b(p)s(osition)f(errors)i(ab)s(out)f(4)i(times)e(w)m(orse.)70
+b(The)39 b(larger)g(and)h(slo)m(w)m(er)g(sla)p Ft(_)p
+FD(EPV)f(deliv)m(ers)f(3)p Fl(\033)44 b FD(results)0
+5580 y(of)36 b(0.005)i(metres)f(p)s(er)d(second)j(in)d(v)m(elo)s(cit)m
+(y)j(and)e(15)i(km)f(in)e(p)s(osition,)i(and)g(is)f(particularly)e
+(useful)h(when)0 5693 y(predicting)22 b(apparen)m(t)i(directions)f(of)h
+(near-Earth)g(ob)5 b(jects.)39 b(\(The)24 b(Sun's)f(p)s(osition)f(as)i
+(seen)g(from)g(the)g(Earth)p eop
+%%Page: 198 200
+198 199 bop 0 52 a FD(198)0 351 y(can,)39 b(of)e(course,)i(b)s(e)d
+(obtained)g(simply)f(b)m(y)i(rev)m(ersing)f(the)h(signs)f(of)h(the)g
+(Cartesian)f(comp)s(onen)m(ts)h(of)g(the)0 464 y(Earth)15
+b(:)g(Sun)29 b(v)m(ector.\))0 630 y(Geo)s(cen)m(tric)34
+b(Mo)s(on)f(ephemerides)f(are)h(a)m(v)-5 b(ailable)33
+b(from)f(sla)p Ft(_)p FD(DMOON,)h(whic)m(h)f(predicts)g(the)h(Mo)s
+(on's)h(p)s(o-)0 743 y(sition)27 b(and)h(v)m(elo)s(cit)m(y)i(with)d
+(resp)s(ect)i(to)g(the)g(Earth's)f(cen)m(tre.)42 b(Direction)28
+b(accuracy)i(is)e(usually)e(b)s(etter)j(than)0 856 y(10)i(km)f(\(5)350
+819 y Fk(0)m(0)391 856 y FD(\))h(and)f(distance)g(accuracy)h(a)g
+(little)e(w)m(orse.)0 1023 y(Lo)m(w)m(er-precision)23
+b(but)h(faster)g(predictions)e(for)i(the)g(Sun)f(and)g(Mo)s(on)i(can)f
+(b)s(e)f(made)h(b)m(y)g(calling)f(sla)p Ft(_)p FD(EAR)-8
+b(TH)0 1135 y(and)28 b(sla)p Ft(_)p FD(MOON.)f(Both)i(are)f(single)f
+(precision)g(and)g(accept)j(dates)e(in)f(the)i(form)e(of)i(y)m(ear,)g
+(da)m(y-in-y)m(ear)g(and)0 1248 y(fraction)40 b(of)f(da)m(y)i
+(\(starting)e(from)h(a)g(calendar)f(date)i(y)m(ou)f(need)f(to)i(call)e
+(sla)p Ft(_)p FD(CL)-8 b(YD)39 b(or)h(sla)p Ft(_)p FD(CAL)-8
+b(YD)40 b(to)0 1361 y(get)34 b(the)g(required)d(y)m(ear)j(and)f(da)m
+(y\).)49 b(The)33 b(sla)p Ft(_)p FD(EAR)-8 b(TH)33 b(routine)f(returns)
+g(the)h(helio)s(cen)m(tric)f(p)s(osition)f(and)0 1474
+y(v)m(elo)s(cit)m(y)e(of)g(the)g(Earth's)g(cen)m(tre)h(for)e(the)h
+(mean)g(equator)g(and)f(equino)m(x)h(of)g(date.)40 b(The)29
+b(accuracy)h(is)d(b)s(etter)0 1587 y(than)37 b(20,000)j(km)c(in)g(p)s
+(osition)g(and)g(10)i(metres)g(p)s(er)e(second)h(in)f(sp)s(eed.)60
+b(The)37 b(p)s(osition)e(and)i(v)m(elo)s(cit)m(y)g(of)0
+1700 y(the)d(Mo)s(on)h(with)d(resp)s(ect)j(to)f(the)h(Earth's)f(cen)m
+(tre)h(for)f(the)g(mean)g(equator)h(and)f(ecliptic)f(of)h(date)h(can)f
+(b)s(e)0 1813 y(obtained)41 b(b)m(y)h(calling)e(sla)p
+Ft(_)p FD(MOON.)h(The)g(p)s(ositional)e(accuracy)k(is)e(b)s(etter)g
+(than)h(30)3043 1776 y Fk(0)l(0)3125 1813 y FD(in)f(direction)f(and)0
+1926 y(1000)32 b(km)e(in)f(distance.)0 2092 y(Appro)m(ximate)35
+b(ephemerides)f(for)h(all)f(the)i(ma)5 b(jor)35 b(planets)f(can)i(b)s
+(e)e(generated)j(b)m(y)e(calling)f(sla)p Ft(_)p FD(PLANET)0
+2205 y(or)k(sla)p Ft(_)p FD(RDPLAN.)f(These)g(routines)g(o\013er)h
+(arcmin)m(ute)f(accuracy)i(\(m)m(uc)m(h)f(b)s(etter)f(for)h(the)f
+(inner)f(planets)0 2318 y(and)f(for)h(Pluto\))g(o)m(v)m(er)h(a)f(span)f
+(of)h(sev)m(eral)h(millennia)32 b(\(but)k(only)f Fo(\006)p
+FD(100)i(y)m(ears)f(for)g(Pluto\).)57 b(The)35 b(routine)0
+2431 y(sla)p Ft(_)p FD(PLANET)20 b(pro)s(duces)h(helio)s(cen)m(tric)f
+(p)s(osition)g(and)h(v)m(elo)s(cit)m(y)h(in)e(the)i(form)f(of)g
+(equatorial)h([)15 b Fl(x;)g(y)s(;)g(z)t(;)32 b FD(_)-42
+b Fl(x)q(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(])0 2544 y(for)26 b(the)h(mean)g(equator)g(and)f(equino)m(x)g(of)h
+(J2000.)41 b(The)26 b(v)m(ectors)i(pro)s(duced)d(b)m(y)i(sla)p
+Ft(_)p FD(PLANET)e(can)i(b)s(e)f(used)0 2657 y(in)35
+b(a)i(v)-5 b(ariet)m(y)36 b(of)h(w)m(a)m(ys)g(according)f(to)h(the)g
+(requiremen)m(ts)e(of)i(the)f(application)f(concerned.)59
+b(The)35 b(routine)0 2770 y(sla)p Ft(_)p FD(RDPLAN)30
+b(uses)f(sla)p Ft(_)p FD(PLANET)g(and)g(sla)p Ft(_)p
+FD(DMOON)g(to)i(deal)e(with)g(the)h(common)g(case)h(of)f(predicting)0
+2883 y(a)h(planet's)f(apparen)m(t)g([)15 b Fl(\013;)g(\016)21
+b FD(])30 b(and)g(angular)f(size)i(as)f(seen)h(b)m(y)f(a)h(terrestrial)
+e(observ)m(er.)0 3049 y(Note)f(that)f(in)e(predicting)g(the)i(p)s
+(osition)d(in)i(the)g(sky)h(of)f(a)h(solar-system)g(b)s(o)s(dy)e(it)h
+(is)f(necessary)i(to)h(allo)m(w)e(for)0 3162 y(geo)s(cen)m(tric)35
+b(parallax.)50 b(This)32 b(correction)i(is)f Fq(essential)44
+b FD(in)32 b(the)i(case)h(of)f(the)g(Mo)s(on,)h(where)e(the)h(observ)m
+(er's)0 3275 y(p)s(osition)41 b(on)i(the)g(Earth)g(can)g(a\013ect)h
+(the)f(Mo)s(on's)h([)15 b Fl(\013;)g(\016)20 b FD(])43
+b(b)m(y)g(up)f(to)h(1)2593 3242 y Fp(\016)2633 3275 y
+FD(.)78 b(The)43 b(calculation)f(can)h(most)0 3388 y(con)m(v)m(enien)m
+(tly)28 b(b)s(e)e(done)h(b)m(y)g(calling)f(sla)p Ft(_)p
+FD(PV)m(OBS)h(and)f(subtracting)h(the)g(resulting)e(6-v)m(ector)30
+b(from)d(the)g(one)0 3500 y(pro)s(duced)i(b)m(y)h(sla)p
+Ft(_)p FD(DMOON,)g(as)h(is)e(demonstrated)i(b)m(y)f(the)h(follo)m(wing)
+d(example:)286 3774 y Ft(*)96 b(Demonstrate)44 b(the)j(size)g(of)g(the)
+g(geocentric)e(parallax)g(correction)286 3886 y(*)96
+b(in)47 b(the)g(case)f(of)h(the)g(Moon.)94 b(The)47 b(test)g(example)f
+(is)h(for)g(the)g(AAT,)286 3999 y(*)96 b(before)46 b(midnight,)f(in)i
+(summer,)f(near)h(first)f(quarter.)573 4225 y(IMPLICIT)f(NONE)573
+4338 y(CHARACTER)g(NAME*40,SH,SD)573 4451 y(INTEGER)h
+(J,I,IHMSF\(4\),IDMSF\(4\))573 4564 y(DOUBLE)g(PRECISION)f
+(SLONGW,SLAT,H,DJUTC,FDUTC)o(,DJ)o(UT1,)o(DJTT)o(,ST)o(L,)525
+4677 y(:)811 b(RMATN\(3,3\),PMM\(6\),PMT\(6\),)o(RM,)o(DM,P)o(VO\(6)o
+(\),T)o(L)573 4790 y(DOUBLE)46 b(PRECISION)f(sla_DTT,sla_GMST,sla_EQEQ)
+o(X,s)o(la_D)o(RANR)o(M)286 5016 y(*)96 b(Get)46 b(AAT)h(longitude)f
+(and)h(latitude)e(in)i(radians)f(and)h(height)f(in)h(metres)573
+5128 y(CALL)f(sla_OBS\(0,'AAT',NAME,SLONG)o(W,S)o(LAT,)o(H\))286
+5354 y(*)96 b(UTC)46 b(\(1992)h(January)f(13,)h(11)g(13)g(59\))g(to)g
+(MJD)573 5467 y(CALL)f(sla_CLDJ\(1992,1,13,DJUTC,J)o(\))573
+5580 y(CALL)g(sla_DTF2D\(11,13,59.0D0,FDU)o(TC,)o(J\))573
+5693 y(DJUTC=DJUTC+FDUTC)p eop
+%%Page: 199 201
+199 200 bop 0 52 a Fw(SUN/67.70)3206 b FD(199)286 464
+y Ft(*)96 b(UT1)46 b(\(UT1-UTC)g(value)g(of)i(-0.152)e(sec)h(is)g(from)
+f(IERS)h(Bulletin)f(B\))573 577 y(DJUT1=DJUTC+\(-0.152D0\)/)o(8640)o
+(0D0)286 803 y(*)96 b(TT)573 916 y(DJTT=DJUTC+sla_DTT\(DJUT)o(C\)/8)o
+(6400)o(D0)286 1142 y(*)g(Local)46 b(apparent)f(sidereal)h(time)573
+1255 y(STL=sla_GMST\(DJUT1\)-SLO)o(NGW+)o(sla_)o(EQE)o(QX\(D)o(JTT\))
+286 1480 y(*)96 b(Geocentric)45 b(position/velocity)e(of)k(Moon)f
+(\(mean)h(of)g(date\))573 1593 y(CALL)f(sla_DMOON\(DJTT,PMM\))286
+1819 y(*)96 b(Nutation)45 b(to)i(true)g(equinox)f(of)h(date)573
+1932 y(CALL)f(sla_NUT\(DJTT,RMATN\))573 2045 y(CALL)g
+(sla_DMXV\(RMATN,PMM,PMT\))573 2158 y(CALL)g
+(sla_DMXV\(RMATN,PMM\(4\),PMT\()o(4\)\))286 2384 y(*)96
+b(Report)46 b(geocentric)f(HA,Dec)573 2497 y(CALL)h
+(sla_DCC2S\(PMT,RM,DM\))573 2609 y(CALL)g(sla_DR2TF\(2,sla_DRANRM\(STL)
+o(-RM)o(\),SH)o(,IHM)o(SF\))573 2722 y(CALL)g
+(sla_DR2AF\(1,DM,SD,IDMSF\))573 2835 y(WRITE)g(\(*,'\(1X,'')f
+(geocentric:'',2X,A,I2.2,2)o(I3.)o(2,'')o(.'',)o(I2.)o(2,'/)o(/)525
+2948 y(:)1432 b('1X,A,I2.2,2I3.2,''.'',)o(I1\))o('\))525
+3061 y(:)2291 b(SH,IHMSF,SD,IDMSF)286 3287 y(*)96 b(Geocentric)45
+b(position)g(of)i(observer)f(\(true)g(equator)g(and)h(equinox)f(of)h
+(date\))573 3400 y(CALL)f(sla_PVOBS\(SLAT,H,STL,PVO\))286
+3626 y(*)96 b(Place)46 b(origin)g(at)h(observer)573 3739
+y(DO)g(I=1,6)716 3851 y(PMT\(I\)=PMT\(I\)-PVO\(I\))573
+3964 y(END)g(DO)286 4190 y(*)96 b(Allow)46 b(for)h(planetary)e
+(aberration)573 4303 y(TL=499.004782D0*SQRT\(PM)o(T\(1\))o(**2+)o(PMT)o
+(\(2\)*)o(*2+P)o(MT\()o(3\)**)o(2\))573 4416 y(DO)i(I=1,3)716
+4529 y(PMT\(I\)=PMT\(I\)-TL*PMT\(I+3)o(\))573 4642 y(END)g(DO)286
+4868 y(*)96 b(Report)46 b(topocentric)e(HA,Dec)573 4981
+y(CALL)i(sla_DCC2S\(PMT,RM,DM\))573 5093 y(CALL)g
+(sla_DR2TF\(2,sla_DRANRM\(STL)o(-RM)o(\),SH)o(,IHM)o(SF\))573
+5206 y(CALL)g(sla_DR2AF\(1,DM,SD,IDMSF\))573 5319 y(WRITE)g
+(\(*,'\(1X,''topocentric:'',)o(2X,)o(A,I2)o(.2,2)o(I3.)o(2,'')o(.'',)o
+(I2.)o(2,'/)o(/)525 5432 y(:)1432 b('1X,A,I2.2,2I3.2,''.'',)o(I1\))o
+('\))525 5545 y(:)2291 b(SH,IHMSF,SD,IDMSF)573 5658 y(END)p
+eop
+%%Page: 200 202
+200 201 bop 0 52 a FD(200)0 351 y(The)30 b(output)g(pro)s(duced)f(is)g
+(as)i(follo)m(ws:)334 610 y Ft(geocentric:)93 b(+03)46
+b(06)i(55.55)e(+15)h(03)g(38.8)286 723 y(topocentric:)93
+b(+03)46 b(09)i(23.76)e(+15)h(40)g(51.4)0 982 y FD(\(An)26
+b(easier)g(but)g(less)g(instructiv)m(e)f(metho)s(d)g(of)i(estimating)f
+(the)g(top)s(o)s(cen)m(tric)h(apparen)m(t)f(place)g(of)h(the)f(Mo)s(on)
+0 1095 y(is)j(to)j(call)d(the)i(routine)e(sla)p Ft(_)p
+FD(RDPLAN.\))0 1257 y(As)24 b(an)h(example)f(of)g(using)f(sla)p
+Ft(_)p FD(PLANET,)h(the)g(follo)m(wing)f(program)h(estimates)h(the)g
+(geo)s(cen)m(tric)h(separation)0 1369 y(b)s(et)m(w)m(een)39
+b(V)-8 b(en)m(us)39 b(and)g(Jupiter)e(during)f(a)j(close)g(conjunction)
+f(in)f(2)16 b(BC,)39 b(whic)m(h)f(is)f(a)i(star-of-Bethlehem)0
+1482 y(candidate:)286 1741 y Ft(*)96 b(Compute)45 b(time)i(and)g
+(minimum)f(geocentric)f(apparent)g(separation)286 1854
+y(*)96 b(between)45 b(Venus)i(and)g(Jupiter)e(during)i(the)f(close)h
+(conjunction)e(of)i(2)g(BC.)573 2080 y(IMPLICIT)e(NONE)573
+2306 y(DOUBLE)h(PRECISION)f(SEPMIN,DJD0,FD,DJD,DJDM,P)o(V\(6)o(\),RM)o
+(ATP\()o(3,3)o(\),)525 2419 y(:)811 b(PVM\(6\),PVE\(6\),TL,RV,DV,RJ)o
+(,DJ)o(,SEP)573 2532 y(INTEGER)46 b(IHOUR,IMIN,J,I,IHMIN,IM)o(MIN)573
+2644 y(DOUBLE)g(PRECISION)f(sla_EPJ,sla_DSEP)286 2983
+y(*)96 b(Search)46 b(for)h(closest)e(approach)h(on)h(the)g(given)f(day)
+573 3096 y(DJD0=1720859.5D0)573 3209 y(SEPMIN=1D10)573
+3322 y(DO)h(IHOUR=20,22)716 3435 y(DO)g(IMIN=0,59)859
+3548 y(CALL)g(sla_DTF2D\(IHOUR,IMIN,0D)o(0,FD)o(,J\))286
+3774 y(*)382 b(Julian)46 b(date)h(and)g(MJD)859 3886
+y(DJD=DJD0+FD)859 3999 y(DJDM=DJD-2400000.5D0)286 4225
+y(*)382 b(Earth)46 b(to)h(Moon)g(\(mean)f(of)i(date\))859
+4338 y(CALL)f(sla_DMOON\(DJDM,PV\))286 4564 y(*)382 b(Precess)46
+b(Moon)g(position)g(to)h(J2000)859 4677 y(CALL)g
+(sla_PRECL\(sla_EPJ\(DJDM\))o(,200)o(0D0,)o(RMA)o(TP\))859
+4790 y(CALL)g(sla_DMXV\(RMATP,PV,PVM\))286 5016 y(*)382
+b(Sun)47 b(to)g(Earth-Moon)e(Barycentre)g(\(mean)h(J2000\))859
+5128 y(CALL)h(sla_PLANET\(DJDM,3,PVE,J)o(\))286 5354
+y(*)382 b(Correct)46 b(from)g(EMB)h(to)g(Earth)859 5467
+y(DO)g(I=1,3)1002 5580 y(PVE\(I\)=PVE\(I\)-0.012150581)o(D0*P)o(VM\(I)o
+(\))859 5693 y(END)g(DO)p eop
+%%Page: 201 203
+201 202 bop 0 52 a Fw(SUN/67.70)3206 b FD(201)286 464
+y Ft(*)382 b(Sun)47 b(to)g(Venus)859 577 y(CALL)g
+(sla_PLANET\(DJDM,2,PV,J\))286 803 y(*)382 b(Earth)46
+b(to)h(Venus)859 916 y(DO)g(I=1,6)1002 1029 y(PV\(I\)=PV\(I\)-PVE\(I\))
+859 1142 y(END)g(DO)286 1367 y(*)382 b(Light)46 b(time)h(to)g(Venus)f
+(\(sec\))859 1480 y(TL=499.004782D0*SQRT\(\(PV\()o(1\)-)o(PVE\()o
+(1\)\)*)o(*2+)525 1593 y(:)1288 b(\(PV\(2\)-PVE\(2\)\)**2+)525
+1706 y(:)g(\(PV\(3\)-PVE\(3\)\)**2\))286 1932 y(*)382
+b(Extrapolate)45 b(backwards)g(in)i(time)g(by)g(that)g(much)859
+2045 y(DO)g(I=1,3)1002 2158 y(PV\(I\)=PV\(I\)-TL*PV\(I+3\))859
+2271 y(END)g(DO)286 2497 y(*)382 b(To)47 b(RA,Dec)859
+2609 y(CALL)g(sla_DCC2S\(PV,RV,DV\))286 2835 y(*)382
+b(Same)47 b(for)f(Jupiter)859 2948 y(CALL)h(sla_PLANET\(DJDM,5,PV,J\))
+859 3061 y(DO)g(I=1,6)1002 3174 y(PV\(I\)=PV\(I\)-PVE\(I\))859
+3287 y(END)g(DO)859 3400 y(TL=499.004782D0*SQRT\(\(PV\()o(1\)-)o(PVE\()
+o(1\)\)*)o(*2+)525 3513 y(:)1288 b(\(PV\(2\)-PVE\(2\)\)**2+)525
+3626 y(:)g(\(PV\(3\)-PVE\(3\)\)**2\))859 3739 y(DO)47
+b(I=1,3)1002 3851 y(PV\(I\)=PV\(I\)-TL*PV\(I+3\))859
+3964 y(END)g(DO)859 4077 y(CALL)g(sla_DCC2S\(PV,RJ,DJ\))286
+4303 y(*)382 b(Separation)45 b(\(arcsec\))859 4416 y
+(SEP=sla_DSEP\(RV,DV,RJ,DJ\))286 4642 y(*)382 b(Keep)47
+b(if)g(smallest)e(so)i(far)859 4755 y(IF)g(\(SEP.LT.SEPMIN\))d(THEN)
+1002 4868 y(IHMIN=IHOUR)1002 4981 y(IMMIN=IMIN)1002 5093
+y(SEPMIN=SEP)859 5206 y(END)j(IF)716 5319 y(END)g(DO)573
+5432 y(END)g(DO)286 5658 y(*)96 b(Report)p eop
+%%Page: 202 204
+202 203 bop 0 52 a FD(202)573 351 y Ft(WRITE)46 b
+(\(*,'\(1X,I2.2,'':'',I2.2,F)o(6.1)o(\)'\))41 b(IHMIN,IMMIN,)525
+464 y(:)1813 b(206264.8062D0*SEPMIN)573 690 y(END)0 947
+y FD(The)29 b(output)g(pro)s(duced)f(\(the)h(Ephemeris)f(Time)g(on)i
+(the)f(da)m(y)h(in)e(question,)h(and)g(the)g(closest)h(approac)m(h)g
+(in)0 1060 y(arcseconds\))h(is)f(as)g(follo)m(ws:)286
+1316 y Ft(21:16)94 b(33.3)0 1573 y FD(F)-8 b(or)40 b(comparison,)h
+(accurate)g(JPL)e(predictions)e(giv)m(e)j(a)g(separation)f(8)2511
+1536 y Fk(0)l(0)2591 1573 y FD(less)f(than)h(the)h(ab)s(o)m(v)m(e)g
+(estimate,)0 1686 y(o)s(ccurring)29 b(30)492 1653 y Fu(m)586
+1686 y FD(earlier)g(\(see)j Fq(Sky)g(and)i(T)-7 b(elesc)i(op)g(e,)32
+b FD(April)c(1987,)k(p)15 b(357\).)0 1847 y(The)30 b(follo)m(wing)f
+(program)h(demonstrates)h(sla)p Ft(_)p FD(RDPLAN.)286
+2080 y Ft(*)96 b(For)46 b(a)i(given)e(date,)h(time)f(and)h
+(geographical)e(location,)g(output)286 2193 y(*)96 b(a)47
+b(table)f(of)i(planetary)d(positions)g(and)i(diameters.)573
+2419 y(IMPLICIT)e(NONE)573 2532 y(CHARACTER)g(PNAMES\(0:9\)*7,B*80,S)
+573 2644 y(INTEGER)h(I,NP,IY,J,IM,ID,IHMSF\(4)o(\),I)o(DMSF)o(\(4\))573
+2757 y(DOUBLE)g(PRECISION)f(D15B2P,R2AS,FD,DJM,ELONG,)o(PHI)o(,RA,)o
+(DEC,)o(DIA)o(M)573 2870 y(PARAMETER)g(\(D15B2P=2.38732414637843)o
+(0036)o(5D0,)525 2983 y(:)525 b(R2AS=206264.80625D0\))573
+3096 y(DATA)46 b(PNAMES)g(/)i('Sun','Mercury','Venus',)o('Moo)o(n',)o
+('Mar)o(s',')o(Jup)o(iter)o(',)525 3209 y(:)668 b
+('Saturn','Uranus','Neptu)o(ne',)41 b('Pluto')46 b(/)286
+3548 y(*)96 b(Loop)46 b(until)h('end')f(typed)573 3661
+y(B=')h(')573 3774 y(DO)g(WHILE)f(\(B.NE.'END'.AND.B.NE.'end)o('\))286
+3999 y(*)239 b(Get)47 b(date,)f(time)h(and)g(observer's)e(location)716
+4112 y(PRINT)h(*,'Date?)g(\(Y,M,D,)g(Gregorian\)')716
+4225 y(READ)h(\(*,'\(A\)'\))e(B)716 4338 y(IF)i
+(\(B.NE.'END'.AND.B.NE.'end)o('\))41 b(THEN)859 4451
+y(I=1)859 4564 y(CALL)47 b(sla_INTIN\(B,I,IY,J\))859
+4677 y(CALL)g(sla_INTIN\(B,I,IM,J\))859 4790 y(CALL)g
+(sla_INTIN\(B,I,ID,J\))859 4903 y(PRINT)f(*,'Time?)g(\(H,M,S,)g
+(dynamical\)')859 5016 y(READ)h(\(*,'\(A\)'\))e(B)859
+5128 y(I=1)859 5241 y(CALL)i(sla_DAFIN\(B,I,FD,J\))859
+5354 y(FD=FD*D15B2P)859 5467 y(CALL)g(sla_CLDJ\(IY,IM,ID,DJM,J)o(\))859
+5580 y(DJM=DJM+FD)859 5693 y(PRINT)f(*,'Longitude?)f(\(D,M,S,)g(east)i
+(+ve\)')p eop
+%%Page: 203 205
+203 204 bop 0 52 a Fw(SUN/67.70)3206 b FD(203)859 351
+y Ft(READ)47 b(\(*,'\(A\)'\))e(B)859 464 y(I=1)859 577
+y(CALL)i(sla_DAFIN\(B,I,ELONG,J\))859 690 y(PRINT)f(*,'Latitude?)f
+(\(D,M,S,)h(geodetic\)')859 803 y(READ)h(\(*,'\(A\)'\))e(B)859
+916 y(I=1)859 1029 y(CALL)i(sla_DAFIN\(B,I,PHI,J\))286
+1255 y(*)382 b(Loop)47 b(planet)f(by)h(planet)859 1367
+y(DO)g(NP=0,9)286 1593 y(*)525 b(Get)47 b(RA,Dec)f(and)h(diameter)1002
+1706 y(CALL)g(sla_RDPLAN\(DJM,NP,ELONG,)o(PHI,)o(RA,)o(DEC,)o(DIAM)o
+(\))286 1932 y(*)525 b(One)47 b(line)g(of)g(report)1002
+2045 y(CALL)g(sla_DR2TF\(2,RA,S,IHMSF\))1002 2158 y(CALL)g
+(sla_DR2AF\(1,DEC,S,IDMSF\))1002 2271 y(WRITE)g(\(*,)525
+2384 y(:)g('\(1X,A,2X,3I3.2,''.'',I2.2)o(,2X,)o(A,I)o(2.2,)o(2I3.)o
+(2,')o('.'')o(,I1,)o(F8.)o(1\)'\))525 2497 y(:)1241 b
+(PNAMES\(NP\),IHMSF,S,IDMS)o(F,R2)o(AS*)o(DIAM)286 2722
+y(*)525 b(Next)47 b(planet)859 2835 y(END)g(DO)859 2948
+y(PRINT)f(*,')h(')716 3061 y(END)g(IF)286 3287 y(*)239
+b(Next)46 b(case)573 3400 y(END)h(DO)573 3626 y(END)0
+3860 y FD(En)m(tering)30 b(the)g(follo)m(wing)f(data)i(\(for)g(1927)h
+(June)d(29)i(at)h(5)2003 3827 y Fu(h)2062 3860 y FD(25)2152
+3827 y Fu(m)2246 3860 y FD(ET)e(and)f(the)i(p)s(osition)d(of)j
+(Preston,)f(UK\):)286 4095 y Ft(1927)47 b(6)g(29)286
+4208 y(5)h(25)286 4321 y(-2)g(42)286 4434 y(53)g(46)0
+4668 y FD(pro)s(duces)29 b(the)i(follo)m(wing)d(rep)s(ort:)286
+4903 y Ft(Sun)334 b(06)47 b(28)g(14.03)94 b(+23)47 b(17)g(17.3)95
+b(1887.8)286 5016 y(Mercury)142 b(08)47 b(08)g(58.60)94
+b(+19)47 b(20)g(57.1)238 b(9.3)286 5128 y(Venus)g(09)47
+b(38)g(53.61)94 b(+15)47 b(35)g(32.8)190 b(22.8)286 5241
+y(Moon)286 b(06)47 b(28)g(15.95)94 b(+23)47 b(17)g(21.3)95
+b(1902.3)286 5354 y(Mars)286 b(09)47 b(06)g(49.33)94
+b(+17)47 b(52)g(26.6)238 b(4.0)286 5467 y(Jupiter)142
+b(00)47 b(11)g(12.08)94 b(-00)47 b(10)g(57.5)190 b(41.1)286
+5580 y(Saturn)g(16)47 b(01)g(43.35)94 b(-18)47 b(36)g(55.9)190
+b(18.2)286 5693 y(Uranus)g(00)47 b(13)g(33.54)94 b(+00)47
+b(39)g(36.1)238 b(3.5)p eop
+%%Page: 204 206
+204 205 bop 0 52 a FD(204)286 351 y Ft(Neptune)142 b(09)47
+b(49)g(35.76)94 b(+13)47 b(38)g(40.8)238 b(2.2)286 464
+y(Pluto)g(07)47 b(05)g(29.51)94 b(+21)47 b(25)g(04.2)238
+b(0.1)0 692 y FD(Insp)s(ection)29 b(of)h(the)h(Sun)e(and)h(Mo)s(on)g
+(data)h(rev)m(eals)g(that)g(a)g(total)g(solar)f(eclipse)f(is)h(in)f
+(progress.)0 851 y(SLALIB)23 b(also)h(pro)m(vides)e(for)i(the)g(case)g
+(where)g(orbital)e(elemen)m(ts)i(\(with)f(resp)s(ect)g(to)i(the)f
+(J2000)h(equino)m(x)e(and)0 964 y(ecliptic\))31 b(are)h(a)m(v)-5
+b(ailable.)45 b(This)30 b(allo)m(ws)h(predictions)f(to)i(b)s(e)g(made)g
+(for)f(minor-planets)f(and)h(\(if)h(y)m(ou)g(ignore)0
+1077 y(non-gra)m(vitational)i(e\013ects\))h(comets.)51
+b(F)-8 b(urthermore,)35 b(if)d(ma)5 b(jor-planet)34 b(elemen)m(ts)g
+(for)f(an)h(ep)s(o)s(c)m(h)f(close)h(to)0 1190 y(the)g(date)h(in)e
+(question)g(are)i(a)m(v)-5 b(ailable,)35 b(more)f(accurate)h
+(predictions)e(can)h(b)s(e)g(made)g(than)g(are)g(o\013ered)h(b)m(y)0
+1303 y(sla)p Ft(_)p FD(RDPLAN)30 b(and)g(sla)p Ft(_)p
+FD(PLANET.)0 1463 y(The)37 b(SLALIB)f(planetary-prediction)f(routines)h
+(that)i(w)m(ork)f(with)f(orbital)g(elemen)m(ts)h(are)h(sla)p
+Ft(_)p FD(PLANTE)0 1576 y(\(the)h(orbital-elemen)m(ts)g(equiv)-5
+b(alen)m(t)38 b(of)h(sla)p Ft(_)p FD(RDPLAN\),)g(whic)m(h)f(predicts)f
+(the)i(top)s(o)s(cen)m(tric)g([)15 b Fl(\013;)g(\016)21
+b FD(],)41 b(and)0 1689 y(sla)p Ft(_)p FD(PLANEL)e(\(the)i
+(orbital-elemen)m(ts)f(equiv)-5 b(alen)m(t)40 b(of)g(sla)p
+Ft(_)p FD(PLANET\),)g(whic)m(h)f(predicts)g(the)i(helio)s(cen-)0
+1802 y(tric)f([)15 b Fl(x;)g(y)s(;)g(z)t(;)32 b FD(_)-42
+b Fl(x)q(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(])40 b(with)f(resp)s(ect)h(to)h(the)f(J2000)h(equino)m(x)f(and)f
+(equator.)70 b(In)39 b(addition,)i(the)f(routine)0 1914
+y(sla)p Ft(_)p FD(PV2EL)35 b(do)s(es)h(the)g(in)m(v)m(erse)g(of)g(sla)p
+Ft(_)p FD(PLANEL,)f(transforming)g([)15 b Fl(x;)g(y)s(;)g(z)t(;)32
+b FD(_)-42 b Fl(x)q(;)32 b FD(_)-42 b Fl(y)t(;)31 b FD(_)-41
+b Fl(z)19 b FD(])37 b(in)m(to)f Fq(osculating)i(ele-)0
+2027 y(ments.)0 2187 y FD(Osculating)f(elemen)m(ts)h(describ)s(e)e(the)
+i(unp)s(erturb)s(ed)d(2-b)s(o)s(dy)i(orbit.)62 b(Dep)s(ending)37
+b(on)g(accuracy)i(require-)0 2300 y(men)m(ts,)30 b(this)e(unp)s(erturb)
+s(ed)e(orbit)i(is)g(an)h(adequate)i(appro)m(ximation)d(to)i(the)f
+(actual)h(orbit)e(for)h(a)h(few)f(w)m(eeks)0 2413 y(either)36
+b(side)g(of)g(the)h(sp)s(eci\014ed)e(ep)s(o)s(c)m(h,)j(outside)e(whic)m
+(h)f(p)s(erturbations)f(due)i(to)i(the)e(other)h(b)s(o)s(dies)e(of)h
+(the)0 2526 y(Solar)29 b(System)g(lead)g(to)h(increasing)e(errors.)40
+b(Giv)m(en)30 b(a)g(minor)e(planet's)h(osculating)g(elemen)m(ts)g(for)h
+(a)g(partic-)0 2639 y(ular)d(date,)i(predictions)d(for)i(a)h(date)f
+(only)g(100)h(da)m(ys)f(earlier)f(or)h(later)g(are)h(lik)m(ely)d(to)j
+(b)s(e)f(in)e(error)i(b)m(y)g(sev)m(eral)0 2752 y(arcseconds.)54
+b(These)34 b(errors)g(can)h(b)s(e)f(reduced)g(if)g(new)g(elemen)m(ts)h
+(are)g(generated)h(whic)m(h)d(tak)m(e)j(accoun)m(t)g(of)0
+2865 y(the)e(p)s(erturbations)d(of)j(the)g(ma)5 b(jor)33
+b(planets,)h(and)f(this)g(is)f(what)i(the)g(routine)e(sla)p
+Ft(_)p FD(PER)-8 b(TEL)32 b(do)s(es.)51 b(Once)0 2978
+y(sla)p Ft(_)p FD(PER)-8 b(TEL)39 b(has)h(b)s(een)g(called,)j(to)e(pro)
+m(vide)e(osculating)h(elemen)m(ts)h(close)g(to)g(the)g(required)d
+(date,)44 b(the)0 3090 y(elemen)m(ts)d(can)f(b)s(e)g(passed)f(to)i(sla)
+p Ft(_)p FD(PLANEL)e(or)i(sla)p Ft(_)p FD(PLANTE)e(in)g(the)h(normal)f
+(w)m(a)m(y)-8 b(.)72 b(Predictions)38 b(of)0 3203 y(arcsecond)31
+b(accuracy)g(o)m(v)m(er)h(a)f(span)e(of)i(a)g(decade)g(or)f(more)h(are)
+f(a)m(v)-5 b(ailable)30 b(using)f(this)g(tec)m(hnique.)0
+3363 y(Three)21 b(di\013eren)m(t)g(com)m(binations)f(of)i(orbital)e
+(elemen)m(ts)i(are)g(pro)m(vided)e(for,)j(matc)m(hing)f(the)f(usual)f
+(con)m(v)m(en)m(tions)0 3476 y(for)43 b(ma)5 b(jor)43
+b(planets,)j(minor)c(planets)g(and)h(comets)h(resp)s(ectiv)m(ely)-8
+b(.)79 b(The)42 b(c)m(hoice)i(is)f(made)g(through)f(the)0
+3589 y(argumen)m(t)31 b Ft(JFORM)p FD(:)p 303 3704 1302
+4 v 301 3817 4 113 v 353 3783 a Ft(JFORM=1)p 735 3817
+V 98 w(JFORM=2)p 1169 3817 V 97 w(JFORM=3)p 1603 3817
+V 303 3821 1302 4 v 303 3837 V 301 3950 4 113 v 484 3916
+a Fl(t)517 3930 y Fu(0)p 735 3950 V 917 3916 a Fl(t)950
+3930 y Fu(0)p 1169 3950 V 1354 3916 a Fl(T)p 1603 3950
+V 303 3953 1302 4 v 301 4066 4 113 v 504 4033 a(i)p 735
+4066 V 403 w(i)p 1169 4066 V 403 w(i)p 1603 4066 V 303
+4070 1302 4 v 301 4183 4 113 v 487 4149 a FD(\012)p 735
+4183 V 368 w(\012)p 1169 4183 V 367 w(\012)p 1603 4183
+V 303 4186 1302 4 v 301 4299 4 113 v 481 4265 a Fl($)p
+735 4299 V 368 w(!)p 1169 4299 V 376 w(!)p 1603 4299
+V 303 4302 1302 4 v 301 4415 4 113 v 496 4381 a(a)p 735
+4415 V 386 w(a)p 1169 4415 V 387 w(q)p 1603 4415 V 303
+4418 1302 4 v 301 4531 4 113 v 499 4497 a(e)p 735 4531
+V 391 w(e)p 1169 4531 V 392 w(e)p 1603 4531 V 303 4535
+1302 4 v 301 4648 4 113 v 489 4614 a(L)p 735 4648 V 354
+w(M)p 1169 4648 V 1603 4648 V 303 4651 1302 4 v 301 4764
+4 113 v 493 4730 a(n)p 735 4764 V 1169 4764 V 1603 4764
+V 303 4767 1302 4 v 0 4917 a FD(The)f(sym)m(b)s(ols)f(ha)m(v)m(e)i(the)
+g(follo)m(wing)e(meanings:)366 5128 y Fl(t)399 5142 y
+Fu(0)588 5128 y FD(ep)s(o)s(c)m(h)h(of)h(osculation)366
+5241 y Fl(T)169 b FD(ep)s(o)s(c)m(h)30 b(of)h(p)s(erihelion)c(passage)
+366 5354 y Fl(i)191 b FD(inclination)28 b(of)i(the)h(orbit)366
+5467 y(\012)156 b(longitude)29 b(of)i(the)f(ascending)g(no)s(de)366
+5580 y Fl($)147 b FD(longitude)29 b(of)i(p)s(erihelion)c(\()p
+Fl($)h FD(=)d(\012)20 b(+)g Fl(!)s FD(\))366 5693 y Fl(!)165
+b FD(argumen)m(t)31 b(of)g(p)s(erihelion)p eop
+%%Page: 205 207
+205 206 bop 0 52 a Fw(SUN/67.70)3206 b FD(205)366 351
+y Fl(a)174 b FD(semi-ma)5 b(jor)30 b(axis)g(of)h(the)f(orbital)f
+(ellipse)366 464 y Fl(q)181 b FD(p)s(erihelion)27 b(distance)366
+577 y Fl(e)180 b FD(orbital)30 b(eccen)m(tricit)m(y)366
+690 y Fl(L)160 b FD(mean)31 b(longitude)e(\()p Fl(L)c
+FD(=)g Fl($)e FD(+)d Fl(M)10 b FD(\))366 803 y Fl(M)134
+b FD(mean)31 b(anomaly)366 916 y Fl(n)167 b FD(mean)31
+b(motion)0 1283 y(The)g(mean)g(motion,)h Fl(n)p FD(,)f(tells)g(sla)p
+Ft(_)p FD(PLANEL)f(the)i(mass)f(of)h(the)f(planet.)43
+b(If)31 b(it)g(is)g(not)g(a)m(v)-5 b(ailable,)32 b(it)e(should)0
+1396 y(b)s(e)d(calculated)h(from)g Fl(n)816 1363 y Fu(2)855
+1396 y Fl(a)903 1363 y Fu(3)967 1396 y FD(=)d Fl(k)1113
+1363 y Fu(2)1153 1396 y FD(\(1)16 b(+)f Fl(m)p FD(\),)29
+b(where)f Fl(k)g FD(=)d(0)p Fl(:)p FD(01720209895)34
+b(and)27 b(m)h(is)f(the)h(mass)g(of)g(the)g(planet)0
+1509 y(\()p Fl(M)123 1523 y Fp(\014)208 1509 y FD(=)d(1\);)31
+b Fl(a)g FD(is)e(in)g(A)m(U.)0 1670 y(Note)h(that)g(for)f(an)m(y)h(giv)
+m(en)f(problem)e(there)j(are)f(up)f(to)i(three)f(di\013eren)m(t)g(ep)s
+(o)s(c)m(hs)g(in)e(pla)m(y)-8 b(,)30 b(and)f(it)f(is)g(vital)h(to)0
+1783 y(distinguish)e(clearly)i(b)s(et)m(w)m(een)i(them:)136
+2013 y Fo(\017)46 b FD(The)29 b(ep)s(o)s(c)m(h)f(of)h(observ)-5
+b(ation:)40 b(the)29 b(momen)m(t)g(in)f(time)g(for)h(whic)m(h)e(the)i
+(p)s(osition)e(of)i(the)g(b)s(o)s(dy)f(is)g(to)h(b)s(e)227
+2126 y(predicted.)136 2312 y Fo(\017)46 b FD(The)27 b(ep)s(o)s(c)m(h)g
+(de\014ning)e(the)i(p)s(osition)e(of)j(the)f(b)s(o)s(dy:)38
+b(the)27 b(momen)m(t)h(in)d(time)i(at)h(whic)m(h,)f(in)f(the)h(absence)
+227 2424 y(of)g(purturbations,)e(the)i(sp)s(eci\014ed)e(p)s
+(osition|mean)g(longitude,)h(mean)g(anomaly)-8 b(,)28
+b(or)f(p)s(erihelion|is)227 2537 y(reac)m(hed.)136 2723
+y Fo(\017)46 b FD(The)25 b(ep)s(o)s(c)m(h)h(of)g(osculation:)37
+b(the)26 b(momen)m(t)h(in)d(time)h(at)i(whic)m(h)d(the)i(giv)m(en)g
+(elemen)m(ts)g(precisely)e(sp)s(ecify)227 2836 y(the)31
+b(b)s(o)s(dy's)e(p)s(osition)f(and)i(v)m(elo)s(cit)m(y)-8
+b(.)0 3066 y(F)g(or)42 b(the)g(ma)5 b(jor-planet)41 b(and)f
+(minor-planet)g(cases)i(it)f(is)f(usual)g(to)i(mak)m(e)g(the)g(ep)s(o)s
+(c)m(h)f(that)h(de\014nes)e(the)0 3179 y(p)s(osition)29
+b(of)i(the)g(b)s(o)s(dy)e(the)i(same)g(as)g(the)g(ep)s(o)s(c)m(h)g(of)g
+(osculation.)41 b(Th)m(us,)31 b(for)f(planets)g(\(ma)5
+b(jor)31 b(and)g(minor\))0 3292 y(only)e(t)m(w)m(o)h(di\013eren)m(t)f
+(ep)s(o)s(c)m(hs)g(are)h(in)m(v)m(olv)m(ed:)40 b(the)30
+b(ep)s(o)s(c)m(h)f(of)h(the)f(elemen)m(ts)h(and)f(the)h(ep)s(o)s(c)m(h)
+f(of)g(observ)-5 b(ation.)0 3405 y(F)d(or)40 b(comets,)k(the)c(ep)s(o)s
+(c)m(h)f(of)h(p)s(erihelion)c(\014xes)k(the)g(p)s(osition)e(in)g(the)i
+(orbit)f(and)g(in)f(general)i(a)g(di\013eren)m(t)0 3518
+y(ep)s(o)s(c)m(h)29 b(of)g(osculation)g(will)e(b)s(e)h(c)m(hosen.)41
+b(Th)m(us,)29 b(for)g(comets)h(all)e(three)i(t)m(yp)s(es)f(of)g(ep)s(o)
+s(c)m(h)g(are)h(in)m(v)m(olv)m(ed.)40 b(Ho)m(w)0 3631
+y(man)m(y)27 b(of)g(the)g(three)g(elemen)m(ts)g(are)h(presen)m(t)f(in)e
+(a)i(giv)m(en)g(SLALIB)g(argumen)m(t)g(list)f(dep)s(ends)f(on)h(the)h
+(routine)0 3744 y(concerned.)0 3904 y(Tw)m(o)48 b(imp)s(ortan)m(t)e
+(sources)i(for)f(orbital)f(elemen)m(ts)i(are)f(the)h
+Fq(Horizons)56 b FD(service,)c(op)s(erated)47 b(b)m(y)g(the)h(Jet)0
+4017 y(Propulsion)37 b(Lab)s(oratory)-8 b(,)43 b(P)m(asadena,)h(and)39
+b(the)h(Minor)g(Planet)f(Cen)m(ter,)k(op)s(erated)d(b)m(y)g(the)g(Cen)m
+(ter)h(for)0 4130 y(Astroph)m(ysics,)32 b(Harv)-5 b(ard.)45
+b(The)32 b(JPL)f(elemen)m(ts)i(\(helio)s(cen)m(tric,)f(J2000)h
+(ecliptic)e(and)g(equino)m(x\))h(and)g(MPC)0 4243 y(elemen)m(ts)24
+b(corresp)s(ond)e(to)i(SLALIB)f(argumen)m(ts)g(as)h(sho)m(wn)f(in)f
+(the)h(follo)m(wing)f(table,)j(where)e(\\\(rad\)")i(means)0
+4356 y(con)m(v)m(ersion)31 b(from)f(degrees)h(to)g(radians,)e(and)h
+(\\\(MJD\)")i(means)e(\\subtract)h Ft(2400000.5D0)p FD(":)p
+0 4517 3745 4 v -2 4616 4 100 v 232 4586 a Fc(SLALIB)p
+795 4616 V 812 4616 V 1068 w(JPL)p 2543 4616 V 2560 4616
+V 1303 w(MPC)p 3743 4616 V -2 4716 V 226 4686 a Fb(argumen)n(t)p
+795 4716 V 812 4716 V 317 w(ma)5 b(jor)26 b(planet)p
+1429 4716 V 124 w(minor)h(planet)p 1994 4716 V 216 w(comet)p
+2543 4716 V 2560 4716 V 245 w(minor)g(planet)p 3151 4716
+V 251 w(comet)p 3743 4716 V 0 4719 3745 4 v 0 4736 V
+-2 4835 4 100 v 289 4806 a Fa(JFORM)p 795 4835 V 812
+4835 V 591 w(1)p 1429 4835 V 547 w(2)p 1994 4835 V 513
+w(3)p 2543 4835 V 2560 4835 V 543 w(2)p 3151 4835 V 548
+w(3)p 3743 4835 V -2 4935 V 289 4905 a(EPOCH)p 795 4935
+V 812 4935 V 388 w(JDCT)f Fb(\(MJD\))p 1429 4935 V 144
+w Fa(JDCT)g Fb(\(MJD\))p 1994 4935 V 152 w Fa(Tp)h Fb(\(MJD\))p
+2543 4935 V 2560 4935 V 161 w Fa(Epoch)e Fb(\(MJD\))p
+3151 4935 V 188 w Fa(T)i Fb(\(MJD\))p 3743 4935 V -2
+5035 V 268 5005 a Fa(ORBINC)p 795 5035 V 812 5035 V 440
+w(IN)g Fb(\(rad\))p 1429 5035 V 291 w Fa(IN)g Fb(\(rad\))p
+1994 5035 V 257 w Fa(IN)g Fb(\(rad\))p 2543 5035 V 2560
+5035 V 217 w Fa(Incl.)35 b Fb(\(rad\))p 3151 5035 V 152
+w Fa(Incl.)g Fb(\(rad\))p 3743 5035 V -2 5134 V 289 5104
+a Fa(ANODE)p 795 5134 V 812 5134 V 463 w(OM)27 b Fb(\(rad\))p
+1429 5134 V 291 w Fa(OM)g Fb(\(rad\))p 1994 5134 V 257
+w Fa(OM)g Fb(\(rad\))p 2543 5134 V 2560 5134 V 244 w
+Fa(Node)f Fb(\(rad\))p 3151 5134 V 178 w Fa(Node.)35
+b Fb(\(rad\))p 3743 5134 V -2 5234 V 289 5204 a Fa(PERIH)p
+795 5234 V 812 5234 V 419 w(OM+W)26 b Fb(\(rad\))p 1429
+5234 V 270 w Fa(W)h Fb(\(rad\))p 1994 5234 V 301 w Fa(W)g
+Fb(\(rad\))p 2543 5234 V 2560 5234 V 217 w Fa(Perih.)35
+b Fb(\(rad\))p 3151 5234 V 108 w Fa(Perih.)g Fb(\(rad\))p
+3743 5234 V -2 5334 V 311 5304 a Fa(AORQ)p 795 5334 V
+812 5334 V 613 w(A)p 1429 5334 V 547 w(A)p 1994 5334
+V 492 w(QR)p 2543 5334 V 2560 5334 V 520 w(a)p 3151 5334
+V 548 w(q)p 3743 5334 V -2 5433 V 376 5403 a(E)p 795
+5433 V 812 5433 V 658 w(EC)p 1429 5433 V 504 w(EC)p 1994
+5433 V 469 w(EC)p 2543 5433 V 2560 5433 V 520 w(e)p 3151
+5433 V 548 w(e)p 3743 5433 V -2 5533 V 311 5503 a(AORL)p
+795 5533 V 812 5533 V 376 w(MA+OM+W)25 b Fb(\(rad\))p
+1429 5533 V 182 w Fa(MA)i Fb(\(rad\))p 1994 5533 V 2543
+5533 V 2560 5533 V 866 w Fa(M)g Fb(\(rad\))p 3151 5533
+V 3743 5533 V -2 5632 V 355 5603 a Fa(DM)p 795 5632 V
+812 5632 V 551 w(N)g Fb(\(rad\))p 1429 5632 V 1994 5632
+V 2543 5632 V 2560 5632 V 3151 5632 V 3743 5632 V 0 5636
+3745 4 v -2 5735 4 100 v 50 5705 a(ep)r(o)r(c)n(h)g(of)h(osculation)p
+795 5735 V 812 5735 V 149 w Fa(JDCT)e Fb(\(MJD\))p 1429
+5735 V 144 w Fa(JDCT)g Fb(\(MJD\))p 1994 5735 V 109 w
+Fa(JDCT)g Fb(\(MJD\))p 2543 5735 V 2560 5735 V 117 w
+Fa(Epoch)f Fb(\(MJD\))p 3151 5735 V 101 w Fa(Epoch)g
+Fb(\(MJD\))p 3743 5735 V 0 5739 3745 4 v eop
+%%Page: 206 208
+206 207 bop 0 52 a FD(206)0 520 y(Con)m(v)m(en)m(tional)38
+b(elemen)m(ts)g(are)g(not)g(the)g(only)e(w)m(a)m(y)j(of)f(sp)s
+(ecifying)d(an)j(orbit.)61 b(The)38 b([)15 b Fl(x;)g(y)s(;)g(z)t(;)32
+b FD(_)-42 b Fl(x)q(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(])38 b(state)0 633 y(v)m(ector)g(is)d(an)h(equally)g(v)
+-5 b(alid)34 b(sp)s(eci\014cation,)j(and)f(the)g(so-called)g
+Fq(metho)-5 b(d)40 b(of)f(universal)f(variables)45 b
+FD(allo)m(ws)0 746 y(orbital)d(calculations)f(to)j(b)s(e)e(made)h
+(directly)-8 b(,)45 b(b)m(ypassing)d(angular)g(quan)m(tities)g(and)g(a)
+m(v)m(oiding)h(Kepler's)0 859 y(Equation.)51 b(The)33
+b(univ)m(ersal-v)-5 b(ariables)31 b(approac)m(h)j(has)g(v)-5
+b(arious)33 b(adv)-5 b(an)m(tages,)37 b(including)30
+b(b)s(etter)k(handling)0 972 y(of)h(near-parab)s(olic)e(cases)i(and)f
+(greater)i(e\016ciency)-8 b(.)54 b(SLALIB)34 b(uses)g(univ)m(ersal)e(v)
+-5 b(ariables)34 b(for)g(its)g(in)m(ternal)0 1085 y(calculations)29
+b(and)h(also)h(o\013ers)f(a)h(n)m(um)m(b)s(er)e(of)i(routines)e(whic)m
+(h)g(applications)f(can)j(call.)0 1254 y(The)k(univ)m(ersal)f(elemen)m
+(ts)h(are)h(the)g([)15 b Fl(x;)g(y)s(;)g(z)t(;)32 b FD(_)-42
+b Fl(x)q(;)32 b FD(_)-42 b Fl(y)t(;)31 b FD(_)-41 b Fl(z)20
+b FD(])35 b(and)g(its)g(ep)s(o)s(c)m(h,)i(plus)c(the)j(mass)f(of)h(the)
+f(b)s(o)s(dy)-8 b(.)55 b(The)0 1367 y(SLALIB)38 b(routines)g(supplemen)
+m(t)f(these)i(elemen)m(ts)g(with)f(certain)g(redundan)m(t)g(v)-5
+b(alues)38 b(in)f(order)h(to)i(a)m(v)m(oid)0 1480 y(unnecessary)30
+b(recomputation)g(when)f(the)i(elemen)m(ts)g(are)g(next)f(used.)0
+1649 y(The)40 b(routines)f(sla)p Ft(_)p FD(EL2UE)h(and)f(sla)p
+Ft(_)p FD(UE2EL)h(transform)g(con)m(v)m(en)m(tional)h(elemen)m(ts)f(in)
+m(to)h(the)f(univ)m(ersal)0 1762 y(form)h(and)g Fq(vic)-5
+b(e)43 b(versa.)74 b FD(The)41 b(routine)g(sla)p Ft(_)p
+FD(PV2UE)g(tak)m(es)i(an)f([)15 b Fl(x;)g(y)s(;)g(z)t(;)32
+b FD(_)-42 b Fl(x)r(;)31 b FD(_)-41 b Fl(y)s(;)31 b FD(_)-41
+b Fl(z)20 b FD(])41 b(and)g(forms)g(the)h(set)g(of)0
+1875 y(univ)m(ersal)24 b(elemen)m(ts;)k(sla)p Ft(_)p
+FD(UE2PV)d(tak)m(es)i(a)f(set)g(of)g(univ)m(ersal)e(elemen)m(ts)i(and)f
+(predicts)g(the)h([)15 b Fl(x;)g(y)s(;)g(z)t(;)32 b FD(_)-42
+b Fl(x)q(;)32 b FD(_)-42 b Fl(y)s(;)31 b FD(_)-41 b Fl(z)20
+b FD(])0 1988 y(for)37 b(a)h(sp)s(eci\014ed)d(ep)s(o)s(c)m(h.)62
+b(The)36 b(routine)h(sla)p Ft(_)p FD(PER)-8 b(TUE)36
+b(pro)m(vides)g(up)s(dated)g(univ)m(ersal)g(elemen)m(ts,)k(taking)0
+2101 y(in)m(to)23 b(accoun)m(t)i(p)s(erturbations)c(from)i(the)h(ma)5
+b(jor)23 b(planets.)38 b(Starting)23 b(with)f(univ)m(ersal)f(elemen)m
+(ts,)26 b(the)d(routine)0 2214 y(sla)p Ft(_)p FD(PLANTU)29
+b(\(the)i(univ)m(ersal)e(elemen)m(ts)i(equiv)-5 b(alen)m(t)30
+b(of)g(sla)p Ft(_)p FD(PLANTE\))g(predicts)f(top)s(o)s(cen)m(tric)h([)
+15 b Fl(\013;)g(\016)21 b FD(].)0 2528 y Fv(4.19)112
+b(Radial)37 b(V)-9 b(elo)s(cit)m(y)34 b(and)39 b(Ligh)m(t-Time)c
+(Corrections)0 2759 y FD(When)25 b(publishing)20 b(high-resolution)j
+(sp)s(ectral)h(observ)-5 b(ations)25 b(it)f(is)g(necessary)i(to)f
+(refer)g(them)g(to)h(a)f(sp)s(eci\014ed)0 2872 y(standard)38
+b(of)h(rest.)67 b(This)37 b(in)m(v)m(olv)m(es)i(kno)m(wing)f(the)h
+(comp)s(onen)m(t)g(in)e(the)i(direction)f(of)h(the)g(source)g(of)g(the)
+0 2985 y(v)m(elo)s(cit)m(y)44 b(of)g(the)f(observ)m(er.)81
+b(SLALIB)43 b(pro)m(vides)f(a)i(n)m(um)m(b)s(er)f(of)g(routines)g(for)g
+(this)f(purp)s(ose,)k(allo)m(wing)0 3098 y(observ)-5
+b(ations)40 b(to)g(b)s(e)g(referred)f(to)i(the)f(Earth's)g(cen)m(tre,)k
+(the)c(Sun,)i(a)e(Lo)s(cal)g(Standard)f(of)h(Rest)h(\(either)0
+3211 y(dynamical)29 b(or)h(kinematical\),)f(the)i(cen)m(tre)g(of)f(the)
+g(Galaxy)-8 b(,)32 b(and)d(the)h(mean)h(motion)e(of)i(the)f(Lo)s(cal)g
+(Group.)0 3380 y(The)j(routine)f(sla)p Ft(_)p FD(R)-10
+b(VER)m(OT)32 b(corrects)i(for)f(the)g(diurnal)d(rotation)j(of)h(the)f
+(observ)m(er)g(around)f(the)i(Earth's)0 3493 y(axis.)40
+b(This)29 b(is)g(alw)m(a)m(ys)i(less)f(than)g(0.5)h(km/s.)0
+3662 y(No)k(sp)s(eci\014c)e(routine)g(is)g(pro)m(vided)g(to)i(correct)g
+(a)g(radial)d(v)m(elo)s(cit)m(y)j(from)f(geo)s(cen)m(tric)h(to)g(helio)
+s(cen)m(tric,)f(but)0 3775 y(this)29 b(can)i(easily)e(b)s(e)h(done)g(b)
+m(y)h(calling)d(sla)p Ft(_)p FD(EVP)i(as)h(follo)m(ws)e(\(arra)m(y)i
+(declarations)f Fq(etc)p FD(.)h(omitted\):)620 4057 y
+Ft(:)286 4169 y(*)96 b(Star)46 b(vector,)g(J2000)573
+4282 y(CALL)g(sla_DCS2C\(RM,DM,V\))286 4508 y(*)96 b(Earth/Sun)45
+b(velocity)g(and)i(position,)f(J2000)573 4621 y(CALL)g
+(sla_EVP\(TDB,2000D0,DVB,DPB)o(,DV)o(H,DP)o(H\))286 4847
+y(*)96 b(Radial)46 b(velocity)f(correction)g(due)i(to)g(Earth)g(orbit)f
+(\(km/s\))573 4960 y(VCORB)g(=)i(-sla_DVDV\(V,DVH\)*149.59)o(787)o(0D6)
+620 5073 y(:)0 5354 y FD(The)29 b(maxim)m(um)g(v)-5 b(alue)29
+b(of)h(this)e(correction)i(is)f(the)h(Earth's)f(orbital)g(sp)s(eed)g
+(of)g(ab)s(out)h(30)g(km/s.)41 b(A)30 b(related)0 5467
+y(routine,)23 b(sla)p Ft(_)p FD(ECOR,)e(computes)i(the)f(ligh)m(t-time)
+g(correction)h(with)e(resp)s(ect)h(to)i(the)e(Sun.)37
+b(It)22 b(w)m(ould)f(b)s(e)h(used)0 5580 y(when)31 b(reducing)f(observ)
+-5 b(ations)32 b(of)g(a)g(rapid)e(v)-5 b(ariable-star)32
+b(for)f(instance.)45 b(F)-8 b(or)33 b(pulsar)d(w)m(ork)i(the)g(sla)p
+Ft(_)p FD(EVP)0 5693 y(routine)38 b(is)f(not)i(su\016cien)m(tly)e
+(accurate)j(for)e(phase)g(predictions,)h(b)s(eing)e(limited)g(to)i(ab)s
+(out)f(25)h(ms.)65 b(The)p eop
+%%Page: 207 209
+207 208 bop 0 52 a Fw(SUN/67.70)3206 b FD(207)0 351 y(alternativ)m(e)26
+b(sla)p Ft(_)p FD(EPV)f(routine)f(will)f(deliv)m(er)h(pulse)g(arriv)-5
+b(al)24 b(times)h(accurate)i(to)f(50)h Fl(\026)p FD(s,)f(but)f(is)f
+(signi\014can)m(tly)0 464 y(slo)m(w)m(er.)0 640 y(T)-8
+b(o)31 b(remo)m(v)m(e)i(the)e(in)m(trinsic)d Fo(\030)e
+FD(20)32 b(km/s)f(motion)f(of)i(the)f(Sun)e(relativ)m(e)i(to)h(other)f
+(stars)g(in)e(the)j(solar)e(neigh-)0 752 y(b)s(ourho)s(o)s(d,)g(a)i(v)m
+(elo)s(cit)m(y)g(correction)g(to)g(a)g Fq(lo)-5 b(c)g(al)36
+b(standar)-5 b(d)37 b(of)d(r)-5 b(est)41 b FD(\(LSR\))31
+b(is)g(required.)43 b(There)31 b(are)h(opp)s(or-)0 865
+y(tunities)25 b(for)h(mistak)m(es)h(here.)40 b(There)26
+b(are)h(t)m(w)m(o)h(sorts)f(of)f(LSR,)h Fq(dynamic)-5
+b(al)38 b FD(and)26 b Fq(kinematic)-5 b(al)p FD(,)29
+b(and)d(m)m(ultiple)0 978 y(de\014nitions)e(exist)j(for)g(the)g
+(latter.)40 b(The)26 b(dynamical)g(LSR)g(is)g(a)h(p)s(oin)m(t)f(near)h
+(the)g(Sun)e(whic)m(h)h(is)g(in)g(a)h(circular)0 1091
+y(orbit)38 b(around)f(the)i(Galactic)g(cen)m(tre;)44
+b(the)39 b(Sun)e(has)h(a)h(\\p)s(eculiar")e(motion)h(relativ)m(e)h(to)g
+(the)g(dynamical)0 1204 y(LSR.)i(A)g(kinematical)f(LSR)g(is)g(the)i
+(mean)f(standard)f(of)h(rest)h(of)f(sp)s(eci\014ed)e(star)j(catalogues)
+g(or)f(stellar)0 1317 y(p)s(opulations,)c(and)g(its)f(precise)h
+(de\014nition)e(dep)s(ends)h(on)h(whic)m(h)f(catalogues)j(or)e(p)s
+(opulations)e(w)m(ere)j(used)0 1430 y(and)g(ho)m(w)g(the)h(analysis)d
+(w)m(as)j(carried)f(out.)64 b(The)38 b(Sun's)f(motion)h(with)f(resp)s
+(ect)h(to)h(a)g(kinematical)e(LSR)0 1543 y(is)h(called)g(the)h
+(\\standard")g(solar)f(motion.)66 b(Radial)37 b(v)m(elo)s(cit)m(y)i
+(corrections)g(to)h(the)f(dynamical)e(LSR)h(are)0 1656
+y(pro)s(duced)d(b)m(y)h(the)h(routine)e(sla)p Ft(_)p
+FD(R)-10 b(VLSRD)36 b(and)f(to)j(the)e(adopted)h(kinematical)e(LSR)h(b)
+m(y)g(sla)p Ft(_)p FD(R)-10 b(VLSRK.)0 1769 y(See)32
+b(the)f(individual)c(sp)s(eci\014cations)j(for)h(these)h(routines)f
+(for)g(the)g(precise)g(de\014nition)e(of)j(the)g(LSR)e(in)g(eac)m(h)0
+1882 y(case.)0 2057 y(F)-8 b(or)28 b(extragalactic)g(sources,)g(the)f
+(cen)m(tre)h(of)f(the)g(Galaxy)g(can)g(b)s(e)f(used)g(as)h(a)g
+(standard)f(of)h(rest.)40 b(The)26 b(radial)0 2170 y(v)m(elo)s(cit)m(y)
+35 b(correction)g(from)g(the)f(dynamical)g(LSR)g(to)h(the)g(Galactic)g
+(cen)m(tre)h(can)f(b)s(e)f(obtained)g(b)m(y)h(calling)0
+2283 y(sla)p Ft(_)p FD(R)-10 b(V)m(GALC.)30 b(Its)h(maxim)m(um)e(v)-5
+b(alue)30 b(is)f(220)j(km/s.)0 2458 y(F)-8 b(or)42 b(v)m(ery)f(distan)m
+(t)g(sources)g(it)g(is)f(appropriate)g(to)i(w)m(ork)g(relativ)m(e)f(to)
+h(the)f(mean)g(motion)g(of)g(the)h(Lo)s(cal)0 2571 y(Group.)d(The)29
+b(routine)e(for)i(computing)e(the)i(radial)e(v)m(elo)s(cit)m(y)j
+(correction)f(in)e(this)g(case)j(is)e(sla)p Ft(_)p FD(R)-10
+b(VLG.)28 b(Note)0 2684 y(that)g(in)e(this)h(case)h(the)g(correction)g
+(is)f(with)f(resp)s(ect)i(to)g(the)g(dynamical)e(LSR,)h(not)g(the)h
+(Galactic)h(cen)m(tre)f(as)0 2797 y(migh)m(t)33 b(b)s(e)f(exp)s(ected.)
+49 b(This)32 b(conforms)h(to)g(the)h(IA)m(U)f(de\014nition,)f(and)g
+(confers)h(imm)m(unit)m(y)f(from)g(revisions)0 2910 y(of)f(the)f
+(Galactic)h(rotation)g(sp)s(eed.)0 3245 y Fv(4.20)112
+b(F)-9 b(o)s(cal-Plane)37 b(Astrometry)0 3485 y FD(The)k(relationship)f
+(b)s(et)m(w)m(een)i(the)g(p)s(osition)e(of)i(a)g(star)g(image)g(in)f
+(the)h(fo)s(cal)g(plane)e(of)i(a)h(telescop)s(e)f(and)0
+3598 y(the)35 b(star's)g(celestial)g(co)s(ordinates)g(is)f(usually)e
+(describ)s(ed)h(in)h(terms)h(of)g(the)g Fq(tangent)j(plane)43
+b FD(or)35 b Fq(gnomonic)0 3711 y FD(pro)5 b(jection.)38
+b(This)23 b(is)g(the)h(pro)5 b(jection)24 b(pro)s(duced)e(b)m(y)j(a)f
+(pin-hole)e(camera)j(and)f(is)f(a)i(go)s(o)s(d)f(appro)m(ximation)f(to)
+0 3824 y(the)k(pro)5 b(jection)27 b(geometry)i(of)f(a)f(traditional)f
+(large)h Fq(f)19 b FD(-ratio)28 b(astrographic)f(refractor.)40
+b(SLALIB)27 b(includes)e(a)0 3937 y(group)31 b(of)h(routines)f(whic)m
+(h)f(transform)i(star)g(p)s(ositions)d(b)s(et)m(w)m(een)k(their)e
+(observ)m(ed)h(places)f(on)h(the)g(celestial)0 4050 y(sphere)e(and)g
+(their)g([)15 b Fl(x;)g(y)k FD(])31 b(co)s(ordinates)f(in)g(the)h
+(tangen)m(t)h(plane.)41 b(The)30 b(spherical)f(co)s(ordinate)i(system)g
+(do)s(es)0 4163 y(not)c(ha)m(v)m(e)h(to)f(b)s(e)f([)15
+b Fl(\013;)g(\016)21 b FD(])26 b(but)g(usually)f(is.)38
+b(The)26 b(so-called)h Fq(standar)-5 b(d)32 b(c)-5 b(o)g(or)g(dinates)
+37 b FD(of)27 b(a)g(star)g(are)g(the)g(tangen)m(t)0 4276
+y(plane)h([)15 b Fl(x;)g(y)k FD(],)30 b(in)e(radians,)g(with)g(resp)s
+(ect)h(to)g(an)g(origin)f(at)i(the)f(tangen)m(t)i(p)s(oin)m(t,)d(with)g
+(the)i Fl(y)s FD(-axis)e(p)s(oin)m(ting)0 4389 y(north)36
+b(and)h(the)g Fl(x)p FD(-axis)g(p)s(oin)m(ting)e(east)j(\(in)e(the)h
+(direction)f(of)h(increasing)f Fl(\013)p FD(\).)61 b(The)37
+b(factor)h(relating)e(the)0 4501 y(standard)k(co)s(ordinates)g(to)i
+(the)f(actual)g([)15 b Fl(x;)g(y)k FD(])40 b(co)s(ordinates)h(in,)h(sa)
+m(y)-8 b(,)45 b(millimetres)38 b(is)h(simply)g(the)i(fo)s(cal)0
+4614 y(length)30 b(of)g(the)h(telescop)s(e.)0 4790 y(Giv)m(en)e(the)g
+([)15 b Fl(\013;)g(\016)20 b FD(])30 b(of)f(the)g Fq(plate)k(c)-5
+b(entr)g(e)36 b FD(\(the)30 b(tangen)m(t)g(p)s(oin)m(t\))f(and)f(the)h
+([)15 b Fl(\013;)g(\016)21 b FD(])29 b(of)g(a)h(star)f(within)d(the)k
+(\014eld,)0 4903 y(the)23 b(standard)f(co)s(ordinates)h(can)g(b)s(e)f
+(determined)g(b)m(y)h(calling)e(sla)p Ft(_)p FD(S2TP)h(\(single)g
+(precision\))f(or)i(sla)p Ft(_)p FD(DS2TP)0 5016 y(\(double)31
+b(precision\).)46 b(The)32 b(rev)m(erse)h(transformation,)g(where)f
+(the)g([)15 b Fl(x;)g(y)k FD(])33 b(is)e(kno)m(wn)h(and)g(w)m(e)h(wish)
+e(to)i(\014nd)0 5128 y(the)38 b([)15 b Fl(\013;)g(\016)21
+b FD(],)40 b(is)d(carried)h(out)g(b)m(y)g(calling)f(sla)p
+Ft(_)p FD(TP2S)f(or)j(sla)p Ft(_)p FD(DTP2S.)e(Occasionally)g(w)m(e)i
+(kno)m(w)f(the)g(b)s(oth)0 5241 y(the)33 b([)15 b Fl(x;)g(y)j
+FD(])33 b(and)f(the)h([)15 b Fl(\013;)g(\016)20 b FD(])33
+b(of)g(a)f(star)h(and)f(need)g(to)i(deduce)e(the)h([)15
+b Fl(\013;)g(\016)20 b FD(])33 b(of)f(the)h(tangen)m(t)h(p)s(oin)m(t;)f
+(this)e(can)0 5354 y(b)s(e)g(done)h(b)m(y)g(calling)e(sla)p
+Ft(_)p FD(TPS2C)h(or)h(sla)p Ft(_)p FD(DTPS2C.)f(\(All)g(of)h(these)g
+(transformations)f(apply)g(not)h(just)g(to)0 5467 y([)15
+b Fl(\013;)g(\016)20 b FD(])38 b(but)e(to)i(other)g(spherical)d(co)s
+(ordinate)i(systems,)i(of)f(course.\))62 b(Equiv)-5 b(alen)m(t)36
+b(\(and)h(faster\))h(routines)0 5580 y(are)h(pro)m(vided)e(whic)m(h)h
+(w)m(ork)h(directly)e(in)h([)15 b Fl(x;)g(y)s(;)g(z)20
+b FD(])39 b(instead)f(of)h(spherical)e(co)s(ordinates:)57
+b(sla)p Ft(_)p FD(V2TP)38 b(and)0 5693 y(sla)p Ft(_)p
+FD(D)m(V2TP)-8 b(,)31 b(sla)p Ft(_)p FD(TP2V)f(and)g(sla)p
+Ft(_)p FD(DTP2V,)g(sla)p Ft(_)p FD(TPV2C)g(and)g(sla)p
+Ft(_)p FD(DTPV2C.)p eop
+%%Page: 208 210
+208 209 bop 0 52 a FD(208)0 351 y(Ev)m(en)42 b(at)h(the)f(b)s(est)f(of)
+h(times,)j(the)d(tangen)m(t)h(plane)e(pro)5 b(jection)42
+b(is)f(merely)g(an)h(appro)m(ximation.)74 b(Some)0 464
+y(telescop)s(es)40 b(and)e(cameras)i(exhibit)d(considerable)h
+(pincushion)e(or)j(barrel)f(distortion)g(and)g(some)i(ha)m(v)m(e)g(a)0
+577 y(curv)m(ed)h(fo)s(cal)g(surface.)72 b(F)-8 b(or)42
+b(example,)i(neither)c(Sc)m(hmidt)f(cameras)j(nor)f(\(esp)s(ecially\))f
+(large)h(re\015ecting)0 690 y(telescop)s(es)32 b(with)f(wide-\014eld)f
+(corrector)j(lenses)e(are)i(adequately)f(mo)s(delled)e(b)m(y)i(tangen)m
+(t-plane)g(geometry)-8 b(.)0 803 y(In)38 b(suc)m(h)h(cases,)k(ho)m(w)m
+(ev)m(er,)g(it)c(is)f(still)f(p)s(ossible)g(to)j(do)f(most)g(of)h(the)f
+(w)m(ork)g(using)f(the)i(\(mathematically)0 916 y(con)m(v)m(enien)m
+(t\))f(tangen)m(t-plane)g(pro)5 b(jection)37 b(b)m(y)g(inserting)f(an)i
+(extra)g(step)g(whic)m(h)e(applies)g(or)h(remo)m(v)m(es)i(the)0
+1029 y(distortion)32 b(p)s(eculiar)f(to)k(the)e(system)h(concerned.)50
+b(A)34 b(simple)e Fl(r)2245 1043 y Fu(1)2314 1029 y FD(=)f
+Fl(r)2457 1043 y Fu(0)2496 1029 y FD(\(1)23 b(+)f Fl(K)7
+b(r)2820 996 y Fu(2)2817 1052 y(0)2859 1029 y FD(\))34
+b(la)m(w)f(w)m(orks)h(w)m(ell)e(in)g(the)0 1142 y(ma)5
+b(jorit)m(y)34 b(of)g(cases;)j Fl(r)782 1156 y Fu(0)856
+1142 y FD(is)c(the)h(radial)e(distance)i(in)e(the)j(tangen)m(t)g
+(plane,)f Fl(r)2647 1156 y Fu(1)2721 1142 y FD(is)f(the)h(radial)e
+(distance)i(after)0 1255 y(adding)23 b(the)i(distortion,)g(and)e
+Fl(K)32 b FD(is)23 b(a)i(constan)m(t)h(whic)m(h)e(dep)s(ends)e(on)j
+(the)g(telescop)s(e)g(\()p Fl(\022)i FD(is)c(una\013ected\).)40
+b(The)0 1367 y(routine)33 b(sla)p Ft(_)p FD(PCD)h(applies)e(the)j
+(distortion)e(to)i(an)f([)15 b Fl(x;)g(y)k FD(])34 b(and)g(sla)p
+Ft(_)p FD(UNPCD)g(remo)m(v)m(es)h(it.)52 b(F)-8 b(or)36
+b([)15 b Fl(x;)g(y)j FD(])35 b(in)0 1480 y(radians,)25
+b Fl(K)32 b FD(v)-5 b(alues)25 b(range)h(from)f Fo(\000)p
+FD(1)p Fl(=)p FD(3)h(for)g(the)f(tin)m(y)g(amoun)m(t)h(of)g(barrel)e
+(distortion)g(in)g(Sc)m(hmidt)g(geometry)0 1593 y(to)29
+b(sev)m(eral)f(h)m(undred)e(for)i(the)g(serious)f(pincushion)d
+(distortion)j(pro)s(duced)f(b)m(y)i(wide-\014eld)e(correctors)j(in)d
+(big)0 1706 y(re\015ecting)k(telescop)s(es)h(\(the)g(AA)-8
+b(T)31 b(prime)d(fo)s(cus)i(triplet)f(corrector)j(is)d(ab)s(out)h
+Fl(K)i FD(=)25 b(+178)p Fl(:)p FD(6\).)0 1869 y(SLALIB)e(includes)f(a)i
+(group)g(of)g(routines)f(whic)m(h)g(can)h(b)s(e)f(put)h(together)h(to)g
+(build)c(a)j(simple)e(plate-reduction)0 1982 y(program.)48
+b(The)32 b(heart)h(of)g(the)g(group)f(is)f(sla)p Ft(_)p
+FD(FITXY,)i(whic)m(h)e(\014ts)i(a)g(linear)e(mo)s(del)h(to)h(relate)g
+(t)m(w)m(o)h(sets)f(of)0 2095 y([)15 b Fl(x;)g(y)k FD(])37
+b(co)s(ordinates,)h(in)d(the)i(case)h(of)f(a)g(plate)f(reduction)g(the)
+h(measured)f(p)s(ositions)f(of)i(the)f(images)h(of)g(a)0
+2208 y(set)32 b(of)f(reference)g(stars)g(and)f(the)i(standard)e(co)s
+(ordinates)g(deriv)m(ed)g(from)h(their)f(catalogue)j(p)s(ositions.)40
+b(The)0 2321 y(mo)s(del)29 b(is)h(of)g(the)h(form:)1494
+2434 y Fl(x)1546 2448 y Ff(p)1611 2434 y FD(=)25 b Fl(a)20
+b FD(+)g Fl(bx)1957 2448 y Ff(m)2044 2434 y FD(+)g Fl(cy)2219
+2448 y Ff(m)1489 2602 y Fl(y)1534 2616 y Ff(p)1599 2602
+y FD(=)25 b Fl(d)20 b FD(+)g Fl(ex)1947 2616 y Ff(m)2034
+2602 y FD(+)g Fl(f)10 b(y)2225 2616 y Ff(m)0 2819 y FD(where)26
+b(the)g Fq(p)33 b FD(subscript)24 b(indicates)h(\\predicted")h(co)s
+(ordinates)g(\(the)h(mo)s(del's)e(appro)m(ximation)g(to)i(the)g(ideal)0
+2932 y(\\exp)s(ected")32 b(co)s(ordinates\))e(and)g(the)h
+Fq(m)38 b FD(subscript)28 b(indicates)h(\\measured)i(co)s(ordinates".)
+41 b(The)30 b(six)g(co)s(e\016-)0 3045 y(cien)m(ts)f
+Fq(a{f)48 b FD(can)29 b(optionally)e(b)s(e)h(constrained)g(to)h
+(represen)m(t)g(a)g(\\solid)e(b)s(o)s(dy)g(rotation")j(free)f(of)f(an)m
+(y)h(squash)0 3158 y(or)42 b(shear)g(distortions.)74
+b(Without)42 b(this)f(constrain)m(t)h(the)g(mo)s(del)f(can,)46
+b(to)c(some)h(exten)m(t,)k(accommo)s(date)0 3271 y(e\013ects)28
+b(lik)m(e)e(refraction,)i(allo)m(wing)d(mean)i(places)g(to)h(b)s(e)e
+(used)g(directly)f(and)i(a)m(v)m(oiding)f(the)h(extra)h(complica-)0
+3383 y(tions)g(of)g(a)g(full)e(mean-apparen)m(t-observ)m(ed)k
+(transformation)d(for)h(eac)m(h)h(star.)41 b(Ha)m(ving)28
+b(obtained)g(the)g(linear)0 3496 y(mo)s(del,)c(sla)p
+Ft(_)p FD(PXY)g(can)g(b)s(e)g(used)f(to)i(pro)s(cess)e(the)i(set)f(of)h
+(measured)e(and)h(exp)s(ected)g(co)s(ordinates,)h(giving)e(the)0
+3609 y(predicted)29 b(co)s(ordinates)i(and)f(determining)e(the)j(RMS)g
+(residuals)d(in)h Fq(x)42 b FD(and)30 b Fq(y)p FD(.)41
+b(The)30 b(routine)g(sla)p Ft(_)p FD(XY2XY)0 3722 y(transforms)i(one)h
+([)15 b Fl(x;)g(y)k FD(])33 b(in)m(to)g(another)g(using)f(the)h(linear)
+e(mo)s(del.)47 b(A)33 b(mo)s(del)f(can)h(b)s(e)f(in)m(v)m(erted)h(b)m
+(y)g(calling)0 3835 y(sla)p Ft(_)p FD(INVF,)27 b(and)f(decomp)s(osed)h
+(in)m(to)g(zero)g(p)s(oin)m(ts,)g(scales,)h Fl(x=y)i
+FD(nonp)s(erp)s(endicularit)m(y)22 b(and)27 b(orien)m(tation)g(b)m(y)0
+3948 y(calling)i(sla)p Ft(_)p FD(DCMPF.)0 4242 y Fv(4.21)112
+b(Numerical)35 b(Metho)s(ds)0 4464 y FD(SLALIB)27 b(con)m(tains)i(a)f
+(small)f(n)m(um)m(b)s(er)f(of)j(simple,)d(general-purp)s(ose)h(n)m
+(umerical-metho)s(ds)f(routines.)39 b(They)0 4577 y(ha)m(v)m(e)30
+b(no)f(sp)s(eci\014c)e(connection)i(with)e(p)s(ositional)g(astronom)m
+(y)i(but)f(ha)m(v)m(e)i(pro)m(v)m(ed)f(useful)e(in)h(applications)f(to)
+0 4690 y(do)j(with)f(sim)m(ulation)g(and)h(\014tting.)0
+4853 y(A)m(t)g(the)g(heart)f(of)g(man)m(y)h(sim)m(ulation)d(programs)i
+(is)f(the)h(generation)h(of)f(pseudo-random)f(n)m(um)m(b)s(ers,)h(ev)m
+(enly)0 4966 y(distributed)39 b(in)i(a)i(giv)m(en)f(range:)64
+b(sla)p Ft(_)p FD(RANDOM)43 b(do)s(es)e(this.)76 b(Pseudo-random)41
+b(normal)g(deviates,)k(or)0 5078 y(\\Gaussian)26 b(residuals",)g(are)h
+(often)g(required)d(to)k(sim)m(ulate)d(noise)h(and)g(can)h(b)s(e)f
+(generated)i(b)m(y)e(means)h(of)f(the)0 5191 y(function)35
+b(sla)p Ft(_)p FD(GRESID.)h(Neither)h(routine)f(will)e(pass)i(sup)s
+(er-sophisticated)e(statistical)j(tests,)i(but)d(they)0
+5304 y(w)m(ork)i(adequately)g(for)g(most)g(practical)g(purp)s(oses)e
+(and)i(a)m(v)m(oid)g(the)g(need)g(to)h(call)e(non-standard)g(library)0
+5417 y(routines)29 b(p)s(eculiar)f(to)k(one)e(sort)h(of)f(computer.)0
+5580 y(Applications)39 b(whic)m(h)g(p)s(erform)h(a)h(least-squares)g
+(\014t)g(using)f(a)h(traditional)e(normal-equations)h(metho)s(ds)0
+5693 y(can)c(accomplish)e(the)i(required)d(matrix-in)m(v)m(ersion)h(b)m
+(y)h(calling)f(either)h(sla)p Ft(_)p FD(SMA)-8 b(T)35
+b(\(single)f(precision\))g(or)p eop
+%%Page: 209 211
+209 210 bop 0 52 a Fw(SUN/67.70)3206 b FD(209)0 351 y(sla)p
+Ft(_)p FD(DMA)-8 b(T)27 b(\(double\).)38 b(A)27 b(generally)f(b)s
+(etter)g(w)m(a)m(y)h(to)h(p)s(erform)d(suc)m(h)h(\014ts)g(is)f(to)i
+(use)g(singular)d(v)-5 b(alue)26 b(decom-)0 464 y(p)s(osition.)38
+b(SLALIB)29 b(pro)m(vides)f(a)i(routine)e(to)i(do)f(the)g(decomp)s
+(osition)f(itself,)h(sla)p Ft(_)p FD(SVD,)f(and)h(t)m(w)m(o)i(routines)
+0 577 y(to)g(use)f(the)h(results:)40 b(sla)p Ft(_)p FD(SVDSOL)28
+b(generates)k(the)f(solution,)e(and)h(sla)p Ft(_)p FD(SVDCO)m(V)g(pro)s
+(duces)f(the)i(co)m(v)-5 b(ari-)0 690 y(ance)29 b(matrix.)39
+b(A)28 b(simple)e(demonstration)h(of)h(the)g(use)f(of)h(the)h(SLALIB)e
+(SVD)h(routines)e(is)h(giv)m(en)h(b)s(elo)m(w.)39 b(It)0
+803 y(generates)29 b(500)g(sim)m(ulated)e(data)h(p)s(oin)m(ts)f(and)g
+(\014ts)g(them)h(to)g(a)h(mo)s(del)d(whic)m(h)h(has)g(4)h(unkno)m(wn)e
+(co)s(e\016cien)m(ts.)0 916 y(\(The)h(arra)m(ys)h(in)e(the)h(example)g
+(are)g(sized)g(to)h(accept)h(up)d(to)i(1000)h(p)s(oin)m(ts)d(and)g(20)j
+(unkno)m(wns.\))38 b(The)27 b(mo)s(del)0 1029 y(is:)1225
+1155 y Fl(y)h FD(=)d Fl(C)1459 1169 y Fu(1)1518 1155
+y FD(+)20 b Fl(C)1674 1169 y Fu(2)1714 1155 y Fl(x)g
+FD(+)g Fl(C)1942 1169 y Fu(3)1981 1155 y Fl(sinx)g FD(+)g
+Fl(C)2338 1169 y Fu(4)2377 1155 y Fl(cosx)0 1338 y FD(The)31
+b(test)i(v)-5 b(alues)31 b(for)h(the)g(four)f(co)s(e\016cien)m(ts)i
+(are)f Fl(C)1809 1352 y Fu(1)1861 1338 y FD(=)13 b(+50)p
+Fl(:)p FD(0,)33 b Fl(C)2299 1352 y Fu(2)2351 1338 y FD(=)13
+b Fo(\000)p FD(2)p Fl(:)p FD(0,)33 b Fl(C)2744 1352 y
+Fu(3)2796 1338 y FD(=)13 b Fo(\000)p FD(10)p Fl(:)p FD(0)32
+b(and)g Fl(C)3387 1352 y Fu(4)3439 1338 y FD(=)13 b(+25)p
+Fl(:)p FD(0.)0 1451 y(Gaussian)30 b(noise,)g Fl(\033)e
+FD(=)d(5)p Fl(:)p FD(0,)32 b(is)d(added)h(to)h(eac)m(h)g(\\observ)-5
+b(ation".)573 1741 y Ft(IMPLICIT)45 b(NONE)286 1967 y(*)96
+b(Sizes)46 b(of)h(arrays,)f(physical)f(and)i(logical)573
+2080 y(INTEGER)f(MP,NP,NC,M,N)573 2193 y(PARAMETER)f
+(\(MP=1000,NP=10,NC=20,M=5)o(00,N)o(=4\))286 2419 y(*)96
+b(The)46 b(unknowns)g(we)h(are)g(going)f(to)i(solve)e(for)573
+2532 y(DOUBLE)g(PRECISION)f(C1,C2,C3,C4)573 2644 y(PARAMETER)g
+(\(C1=50D0,C2=-2D0,C3=-10D)o(0,C4)o(=25D)o(0\))286 2870
+y(*)96 b(Arrays)573 2983 y(DOUBLE)46 b(PRECISION)f
+(A\(MP,NP\),W\(NP\),V\(NP,NP\),)525 3096 y(:)811 b
+(WORK\(NP\),B\(MP\),X\(NP\),CVM\()o(NC,)o(NC\))573 3322
+y(DOUBLE)46 b(PRECISION)f(VAL,BF1,BF2,BF3,BF4,SD2,D)o(,VA)o(R)573
+3435 y(REAL)h(sla_GRESID)573 3548 y(INTEGER)g(I,J)286
+3774 y(*)96 b(Fill)46 b(the)h(design)f(matrix)573 3886
+y(DO)h(I=1,M)286 4112 y(*)239 b(Dummy)46 b(independent)f(variable)716
+4225 y(VAL=DBLE\(I\)/10D0)286 4451 y(*)239 b(The)47 b(basis)f
+(functions)716 4564 y(BF1=1D0)716 4677 y(BF2=VAL)716
+4790 y(BF3=SIN\(VAL\))716 4903 y(BF4=COS\(VAL\))286 5128
+y(*)239 b(The)47 b(observed)e(value,)h(including)g(deliberate)f
+(Gaussian)g(noise)716 5241 y(B\(I\)=C1*BF1+C2*BF2+C3*BF)o(3+C4)o(*BF)o
+(4+DB)o(LE\(s)o(la_)o(GRES)o(ID\(5)o(.0\))o(\))286 5467
+y(*)239 b(Fill)46 b(one)h(row)g(of)g(the)g(design)f(matrix)716
+5580 y(A\(I,1\)=BF1)716 5693 y(A\(I,2\)=BF2)p eop
+%%Page: 210 212
+210 211 bop 0 52 a FD(210)716 351 y Ft(A\(I,3\)=BF3)716
+464 y(A\(I,4\)=BF4)573 577 y(END)47 b(DO)286 803 y(*)96
+b(Factorize)45 b(the)i(design)f(matrix,)g(solve)g(and)h(generate)e
+(covariance)g(matrix)573 916 y(CALL)h(sla_SVD\(M,N,MP,NP,A,W,V,WO)o
+(RK,)o(J\))573 1029 y(CALL)g(sla_SVDSOL\(M,N,MP,NP,B,A,W)o(,V,)o(WORK)o
+(,X\))573 1142 y(CALL)g(sla_SVDCOV\(N,NP,NC,W,V,WOR)o(K,C)o(VM\))286
+1367 y(*)96 b(Compute)45 b(the)i(variance)573 1480 y(SD2=0D0)573
+1593 y(DO)g(I=1,M)716 1706 y(VAL=DBLE\(I\)/10D0)716 1819
+y(BF1=1D0)716 1932 y(BF2=VAL)716 2045 y(BF3=SIN\(VAL\))716
+2158 y(BF4=COS\(VAL\))716 2271 y(D=B\(I\)-\(X\(1\)*BF1+X\(2\)*BF)o
+(2+X\()o(3\)*)o(BF3+)o(X\(4\))o(*BF)o(4\))716 2384 y(SD2=SD2+D*D)573
+2497 y(END)g(DO)573 2609 y(VAR=SD2/DBLE\(M\))286 2835
+y(*)96 b(Report)46 b(the)h(RMS)f(and)h(the)g(solution)573
+2948 y(WRITE)f(\(*,'\(1X,''RMS)e(='',F5.2/\)'\))h(SQRT\(VAR\))573
+3061 y(DO)i(I=1,N)716 3174 y(WRITE)f(\(*,'\(1X,''C'',I1,'')d
+(='',F7.3,'')i(+/-'',F6.3\)'\))525 3287 y(:)1957 b
+(I,X\(I\),SQRT\(VAR*CVM\(I,I)o(\)\))573 3400 y(END)47
+b(DO)573 3513 y(END)0 3788 y FD(The)30 b(program)g(pro)s(duces)f
+(output)h(lik)m(e)g(the)g(follo)m(wing:)573 4063 y Ft(RMS)47
+b(=)g(4.88)573 4289 y(C1)g(=)g(50.192)f(+/-)h(0.439)573
+4402 y(C2)g(=)g(-2.002)f(+/-)h(0.015)573 4515 y(C3)g(=)g(-9.771)f(+/-)h
+(0.310)573 4628 y(C4)g(=)g(25.275)f(+/-)h(0.310)0 4903
+y FD(In)42 b(this)g(ab)s(o)m(v)m(e)i(example,)i(essen)m(tially)c(iden)m
+(tical)f(results)h(w)m(ould)g(b)s(e)g(obtained)g(if)g(the)h(more)g
+(common-)0 5016 y(place)31 b(normal-equations)f(metho)s(d)h(had)f(b)s
+(een)g(used,)h(and)f(the)i(large)f(1000)22 b Fo(\002)f
+FD(20)32 b(arra)m(y)f(w)m(ould)f(ha)m(v)m(e)i(b)s(een)0
+5128 y(a)m(v)m(oided.)50 b(Ho)m(w)m(ev)m(er,)36 b(the)d(SVD)h(metho)s
+(d)e(comes)i(in)m(to)f(its)g(o)m(wn)g(when)f(the)i(opp)s(ortunit)m(y)d
+(is)i(tak)m(en)h(to)g(edit)0 5241 y(the)29 b(W-matrix)g(\(the)g
+(so-called)f(\\singular)f(v)-5 b(alues"\))29 b(in)e(order)h(to)i(con)m
+(trol)f(p)s(ossible)d(ill-conditioning.)36 b(The)0 5354
+y(pro)s(cedure)e(in)m(v)m(olv)m(es)i(replacing)e(with)g(zero)s(es)i(an)
+m(y)g(W-elemen)m(ts)g(smaller)e(than)h(a)h(nominated)e(v)-5
+b(alue,)37 b(for)0 5467 y(example)32 b(0.001)j(times)d(the)g(largest)h
+(W-elemen)m(t.)48 b(Small)31 b(W-elemen)m(ts)i(indicate)f
+(ill-conditioning,)d(whic)m(h)0 5580 y(in)f(the)h(case)h(of)f(the)h
+(normal-equations)e(metho)s(d)g(w)m(ould)g(pro)s(duce)g(spurious)f
+(large)i(co)s(e\016cien)m(t)h(v)-5 b(alues)28 b(and)0
+5693 y(p)s(ossible)23 b(arithmetic)i(o)m(v)m(er\015o)m(ws.)41
+b(Using)24 b(SVD,)i(the)g(e\013ect)h(on)f(the)g(solution)e(of)i
+(setting)g(suspiciously)c(small)p eop
+%%Page: 211 213
+211 212 bop 0 52 a Fw(SUN/67.70)3206 b FD(211)0 351 y(W-elemen)m(ts)31
+b(to)g(zero)g(is)e(to)i(restrain)e(the)h(o\013ending)f(co)s(e\016cien)m
+(ts)i(from)f(mo)m(ving)f(v)m(ery)i(far.)40 b(The)30 b(fact)h(that)0
+464 y(action)i(w)m(as)g(tak)m(en)h(can)f(b)s(e)f(rep)s(orted)g(to)i
+(sho)m(w)f(the)f(program)h(user)f(that)h(something)g(is)e(amiss.)47
+b(F)-8 b(urther-)0 577 y(more,)32 b(if)e(elemen)m(t)i(W\(J\))g(w)m(as)f
+(set)h(to)g(zero,)h(the)e(ro)m(w)g(n)m(um)m(b)s(ers)f(of)i(the)f(t)m(w)
+m(o)i(biggest)e(elemen)m(ts)h(in)e(the)h(Jth)0 690 y(column)e(of)i(the)
+f(V-matrix)g(iden)m(tify)f(the)i(pair)e(of)i(solution)d(co)s(e\016cien)
+m(ts)k(that)f(are)f(dep)s(enden)m(t.)0 853 y(A)f(more)g(detailed)f
+(description)f(of)i(SVD)g(and)f(its)g(use)h(in)e(least-squares)i
+(problems)f(w)m(ould)f(b)s(e)h(out)h(of)h(place)0 966
+y(here,)40 b(and)d(the)g(reader)h(is)e(urged)h(to)i(refer)e(to)i(the)e
+(relev)-5 b(an)m(t)38 b(sections)g(of)g(the)f(b)s(o)s(ok)g
+Fq(Numeric)-5 b(al)40 b(R)-5 b(e)g(cip)g(es)0 1079 y
+FD(\(Press)30 b Fq(et)j(al.)p FD(,)e(Cam)m(bridge)e(Univ)m(ersit)m(y)h
+(Press,)g(1987\).)0 1241 y(The)21 b(routines)g(sla)p
+Ft(_)p FD(COMBN)h(and)f(sla)p Ft(_)p FD(PERMUT)g(are)h(useful)f(for)g
+(problems)f(whic)m(h)h(in)m(v)m(olv)m(e)h(com)m(binations)0
+1354 y(\(di\013eren)m(t)35 b(subsets\))f(and)g(p)s(erm)m(utations)g
+(\(di\013eren)m(t)h(orders\).)53 b(Both)36 b(return)d(the)i(next)g(in)f
+(a)h(sequence)g(of)0 1467 y(results,)29 b(cycling)h(through)g(all)f
+(the)h(p)s(ossible)e(results)i(as)g(the)h(routine)e(is)h(called)f(rep)s
+(eatedly)-8 b(.)p eop
+%%Page: 212 214
+212 213 bop 0 52 a FD(212)0 351 y Fx(5)135 b(SUMMAR)-11
+b(Y)43 b(OF)h(CALLS)0 604 y FD(The)20 b(basic)g(trigonometrical)g(and)h
+(n)m(umerical)e(facilities)g(are)i(supplied)c(in)j(b)s(oth)g(single)f
+(and)h(double)f(precision)0 717 y(v)m(ersions.)46 b(Most)34
+b(of)e(the)h(more)f(esoteric)i(p)s(osition)c(and)i(time)g(routines)f
+(use)i(double)e(precision)f(argumen)m(ts)0 829 y(only)-8
+b(,)45 b(ev)m(en)f(in)d(cases)i(where)f(single)f(precision)g(w)m(ould)g
+(normally)g(b)s(e)h(adequate)i(in)d(practice.)77 b(Certain)0
+942 y(routines)32 b(with)h(mo)s(dest)g(accuracy)i(ob)5
+b(jectiv)m(es)34 b(are)g(supplied)c(in)i(single)g(precision)g(v)m
+(ersions)h(only)-8 b(.)49 b(In)33 b(the)0 1055 y(calling)38
+b(sequences)h(whic)m(h)f(follo)m(w,)i(no)f(attempt)h(has)f(b)s(een)g
+(made)g(to)g(distinguish)d(b)s(et)m(w)m(een)j(single)f(and)0
+1168 y(double)30 b(precision)f(argumen)m(t)j(names,)g(and)e(frequen)m
+(tly)h(the)g(same)h(name)g(is)e(used)g(on)i(di\013eren)m(t)e(o)s
+(ccasions)0 1281 y(to)39 b(mean)f(di\013eren)m(t)g(things.)63
+b(Ho)m(w)m(ev)m(er,)42 b(none)c(of)g(the)h(routines)e(uses)h(a)g
+(mixture)f(of)h(single)f(and)h(double)0 1394 y(precision)29
+b(argumen)m(ts;)h(eac)m(h)i(routine)d(is)h(either)g(wholly)e(single)h
+(precision)g(or)h(wholly)e(double)h(precision.)0 1556
+y(In)h(the)i(classi\014ed)d(list,)i(b)s(elo)m(w,)f Fq(subr)-5
+b(outine)39 b FD(subprograms)30 b(are)h(those)h(whose)f(names)g(and)f
+(argumen)m(t)i(lists)0 1669 y(are)39 b(preceded)g(b)m(y)f(`CALL',)h
+(whereas)g Fq(function)46 b FD(subprograms)37 b(are)j(those)f(b)s
+(eginning)d(`R=')j(\(when)f(the)0 1782 y(result)29 b(is)h(REAL\))g(or)h
+(`D=')f(\(when)g(the)h(result)e(is)g(DOUBLE)i(PRECISION\).)0
+1944 y(The)e(list)f(is,)i(of)f(course,)i(merely)e(for)g(quic)m(k)g
+(reference;)i(inexp)s(erienced)c(users)i FB(m)m(ust)g
+FD(refer)g(to)i(the)e(detailed)0 2057 y(sp)s(eci\014cations)34
+b(giv)m(en)h(later.)55 b(In)34 b(particular,)h FB(don't)40
+b(guess)c FD(whether)e(argumen)m(ts)i(are)f(single)f(or)h(double)0
+2170 y(precision;)29 b(the)i(result)e(could)h(b)s(e)g(a)h(program)f
+(that)h(happ)s(ens)e(to)i(w)m(orks)g(on)f(one)h(sort)f(of)h(mac)m(hine)
+f(but)g(not)0 2283 y(on)g(another.)0 2544 y Fv(String)36
+b(Deco)s(ding)236 2780 y FD(CALL)30 b(sla)p Ft(_)p FD(INTIN)f
+(\(STRING,)i(NSTR)-8 b(T,)30 b(IRESL)-8 b(T,)29 b(JFLA)m(G\))472
+2893 y(Con)m(v)m(ert)j(free-format)f(string)e(in)m(to)i(in)m(teger)236
+3068 y(CALL)f(sla)p Ft(_)p FD(FLOTIN)f(\(STRING,)h(NSTR)-8
+b(T,)30 b(RESL)-8 b(T,)30 b(JFLA)m(G\))236 3181 y(CALL)g(sla)p
+Ft(_)p FD(DFL)-8 b(TIN)30 b(\(STRING,)h(NSTR)-8 b(T,)30
+b(DRESL)-8 b(T,)30 b(JFLA)m(G\))472 3294 y(Con)m(v)m(ert)i(free-format)
+f(string)e(in)m(to)i(\015oating-p)s(oin)m(t)e(n)m(um)m(b)s(er)236
+3469 y(CALL)h(sla)p Ft(_)p FD(AFIN)g(\(STRING,)g(NSTR)-8
+b(T,)30 b(RESL)-8 b(T,)30 b(JFLA)m(G\))236 3582 y(CALL)g(sla)p
+Ft(_)p FD(D)m(AFIN)h(\(STRING,)f(NSTR)-8 b(T,)30 b(DRESL)-8
+b(T,)30 b(JFLA)m(G\))472 3694 y(Con)m(v)m(ert)i(free-format)f(string)e
+(from)h(deg,arcmin,arcsec)h(to)g(radians)0 4029 y Fv(Sexagesimal)37
+b(Con)m(v)m(ersions)236 4265 y FD(CALL)30 b(sla)p Ft(_)p
+FD(CTF2D)g(\(IHOUR,)h(IMIN,)g(SEC,)e(D)m(A)-8 b(YS,)32
+b(J\))236 4378 y(CALL)e(sla)p Ft(_)p FD(DTF2D)h(\(IHOUR,)g(IMIN,)f
+(SEC,)g(D)m(A)-8 b(YS,)32 b(J\))472 4491 y(Hours,)f(min)m(utes,)e
+(seconds)i(to)g(da)m(ys)236 4666 y(CALL)f(sla)p Ft(_)p
+FD(CD2TF)g(\(NDP)-8 b(,)32 b(D)m(A)-8 b(YS,)32 b(SIGN,)e(IHMSF\))236
+4779 y(CALL)g(sla)p Ft(_)p FD(DD2TF)h(\(NDP)-8 b(,)32
+b(D)m(A)-8 b(YS,)32 b(SIGN,)e(IHMSF\))472 4892 y(Da)m(ys)i(to)f(hours,)
+f(min)m(utes,)f(seconds)236 5067 y(CALL)h(sla)p Ft(_)p
+FD(CTF2R)g(\(IHOUR,)g(IMIN,)h(SEC,)f(RAD,)h(J\))236 5180
+y(CALL)f(sla)p Ft(_)p FD(DTF2R)g(\(IHOUR,)h(IMIN,)g(SEC,)e(RAD,)j(J\))
+472 5292 y(Hours,)f(min)m(utes,)e(seconds)i(to)g(radians)236
+5467 y(CALL)f(sla)p Ft(_)p FD(CR2TF)g(\(NDP)-8 b(,)31
+b(ANGLE,)g(SIGN,)g(IHMSF\))236 5580 y(CALL)f(sla)p Ft(_)p
+FD(DR2TF)g(\(NDP)-8 b(,)32 b(ANGLE,)f(SIGN,)g(IHMSF\))472
+5693 y(Radians)f(to)h(hours,)e(min)m(utes,)h(seconds)p
+eop
+%%Page: 213 215
+213 214 bop 0 52 a Fw(SUN/67.70)3206 b FD(213)236 351
+y(CALL)30 b(sla)p Ft(_)p FD(CAF2R)g(\(IDEG,)i(IAMIN,)e(ASEC,)g(RAD,)h
+(J\))236 464 y(CALL)f(sla)p Ft(_)p FD(D)m(AF2R)h(\(IDEG,)h(IAMIN,)f
+(ASEC,)e(RAD,)j(J\))472 577 y(Degrees,)h(arcmin)m(utes,)d(arcseconds)g
+(to)i(radians)236 747 y(CALL)e(sla)p Ft(_)p FD(CR2AF)g(\(NDP)-8
+b(,)32 b(ANGLE,)f(SIGN,)f(IDMSF\))236 860 y(CALL)g(sla)p
+Ft(_)p FD(DR2AF)h(\(NDP)-8 b(,)32 b(ANGLE,)f(SIGN,)f(IDMSF\))472
+973 y(Radians)g(to)h(degrees,)g(arcmin)m(utes,)f(arcseconds)0
+1284 y Fv(Angles,)37 b(V)-9 b(ectors)36 b(and)j(Rotation)d(Matrices)236
+1505 y FD(R)30 b(=)g(sla)p Ft(_)p FD(RANGE)h(\(ANGLE\))236
+1618 y(D)g(=)f(sla)p Ft(_)p FD(DRANGE)h(\(ANGLE\))472
+1731 y(Normalize)g(angle)f(in)m(to)g(range)h Fo(\006)p
+Fl(\031)236 1901 y FD(R)f(=)g(sla)p Ft(_)p FD(RANORM)g(\(ANGLE\))236
+2014 y(D)h(=)f(sla)p Ft(_)p FD(DRANRM)h(\(ANGLE\))472
+2127 y(Normalize)g(angle)f(in)m(to)g(range)h(0)5 b Fo(\000)g
+FD(2)p Fl(\031)236 2297 y FD(CALL)30 b(sla)p Ft(_)p FD(CS2C)f(\(A,)i
+(B,)g(V\))236 2410 y(CALL)f(sla)p Ft(_)p FD(DCS2C)f(\(A,)i(B,)g(V\))472
+2523 y(Spherical)e(co)s(ordinates)h(to)h([)15 b Fl(x;)g(y)s(;)g(z)20
+b FD(])236 2694 y(CALL)30 b(sla)p Ft(_)p FD(CC2S)f(\(V,)i(A,)g(B\))236
+2807 y(CALL)f(sla)p Ft(_)p FD(DCC2S)f(\(V,)i(A,)g(B\))472
+2919 y([)15 b Fl(x;)g(y)s(;)g(z)21 b FD(])30 b(to)i(spherical)c(co)s
+(ordinates)236 3090 y(R)i(=)g(sla)p Ft(_)p FD(VD)m(V)h(\(V)-10
+b(A,)32 b(VB\))236 3203 y(D)f(=)f(sla)p Ft(_)p FD(D)m(VD)m(V)i(\(V)-10
+b(A,)31 b(VB\))472 3316 y(Scalar)f(pro)s(duct)g(of)g(t)m(w)m(o)i(3-v)m
+(ectors)236 3486 y(CALL)e(sla)p Ft(_)p FD(VXV)g(\(V)-10
+b(A,)31 b(VB,)g(V)m(C\))236 3599 y(CALL)f(sla)p Ft(_)p
+FD(D)m(VXV)h(\(V)-10 b(A,)31 b(VB,)g(V)m(C\))472 3712
+y(V)-8 b(ector)33 b(pro)s(duct)c(of)h(t)m(w)m(o)i(3-v)m(ectors)236
+3882 y(CALL)e(sla)p Ft(_)p FD(VN)g(\(V,)h(UV,)g(VM\))236
+3995 y(CALL)f(sla)p Ft(_)p FD(D)m(VN)h(\(V,)g(UV,)g(VM\))472
+4108 y(Normalize)g(a)f(3-v)m(ector)j(also)d(giving)g(the)g(mo)s(dulus)
+236 4279 y(R)g(=)g(sla)p Ft(_)p FD(SEP)f(\(A1,)j(B1,)f(A2,)g(B2\))236
+4391 y(D)g(=)f(sla)p Ft(_)p FD(DSEP)f(\(A1,)j(B1,)f(A2,)g(B2\))472
+4504 y(Angle)g(b)s(et)m(w)m(een)g(t)m(w)m(o)g(p)s(oin)m(ts)f(on)g(a)h
+(sphere)236 4675 y(R)f(=)g(sla)p Ft(_)p FD(SEPV)f(\(V1,)j(V2\))236
+4788 y(D)f(=)f(sla)p Ft(_)p FD(DSEPV)f(\(V1,)j(V2\))472
+4901 y(Angle)f(b)s(et)m(w)m(een)g(t)m(w)m(o)g([)15 b
+Fl(x;)g(y)s(;)g(z)21 b FD(])30 b(v)m(ectors)236 5071
+y(R)g(=)g(sla)p Ft(_)p FD(BEAR)g(\(A1,)i(B1,)f(A2,)h(B2\))236
+5184 y(D)f(=)f(sla)p Ft(_)p FD(DBEAR)g(\(A1,)i(B1,)f(A2,)h(B2\))472
+5297 y(Direction)e(of)h(one)g(p)s(oin)m(t)e(on)h(a)h(sphere)f(seen)g
+(from)g(another)236 5467 y(R)g(=)g(sla)p Ft(_)p FD(P)-8
+b(A)e(V)31 b(\(V1,)g(V2\))236 5580 y(D)g(=)f(sla)p Ft(_)p
+FD(DP)-8 b(A)e(V)31 b(\(V1,)g(V2\))472 5693 y(P)m(osition-angle)g(of)f
+(one)h([)15 b Fl(x;)g(y)s(;)g(z)20 b FD(])31 b(with)e(resp)s(ect)h(to)h
+(another)p eop
+%%Page: 214 216
+214 215 bop 0 52 a FD(214)236 351 y(CALL)30 b(sla)p Ft(_)p
+FD(EULER)f(\(ORDER,)i(PHI,)f(THET)-8 b(A,)31 b(PSI,)f(RMA)-8
+b(T\))236 464 y(CALL)30 b(sla)p Ft(_)p FD(DEULER)g(\(ORDER,)g(PHI,)h
+(THET)-8 b(A,)30 b(PSI,)g(RMA)-8 b(T\))472 577 y(F)g(orm)31
+b(rotation)g(matrix)f(from)g(three)g(Euler)f(angles)236
+756 y(CALL)h(sla)p Ft(_)p FD(A)-10 b(V2M)31 b(\(AXVEC,)g(RMA)-8
+b(T\))236 869 y(CALL)30 b(sla)p Ft(_)p FD(D)m(A)-10 b(V2M)32
+b(\(AXVEC,)f(RMA)-8 b(T\))472 982 y(F)g(orm)31 b(rotation)g(matrix)f
+(from)g(axial)f(v)m(ector)236 1161 y(CALL)h(sla)p Ft(_)p
+FD(M2A)-10 b(V)31 b(\(RMA)-8 b(T,)31 b(AXVEC\))236 1274
+y(CALL)f(sla)p Ft(_)p FD(DM2A)-10 b(V)31 b(\(RMA)-8 b(T,)32
+b(AXVEC\))472 1387 y(Determine)f(axial)f(v)m(ector)i(from)d(rotation)i
+(matrix)236 1567 y(CALL)f(sla)p Ft(_)p FD(MXV)g(\(RM,)h(V)-10
+b(A,)31 b(VB\))236 1679 y(CALL)f(sla)p Ft(_)p FD(DMXV)h(\(DM,)g(V)-10
+b(A,)31 b(VB\))472 1792 y(Rotate)i(v)m(ector)f(forw)m(ards)236
+1972 y(CALL)e(sla)p Ft(_)p FD(IMXV)g(\(RM,)h(V)-10 b(A,)31
+b(VB\))236 2085 y(CALL)f(sla)p Ft(_)p FD(DIMXV)h(\(DM,)g(V)-10
+b(A,)31 b(VB\))472 2197 y(Rotate)i(v)m(ector)f(bac)m(kw)m(ards)236
+2377 y(CALL)e(sla)p Ft(_)p FD(MXM)g(\(A,)i(B,)e(C\))236
+2490 y(CALL)g(sla)p Ft(_)p FD(DMXM)h(\(A,)g(B,)g(C\))472
+2603 y(Pro)s(duct)f(of)h(t)m(w)m(o)g(3x3)g(matrices)236
+2782 y(CALL)f(sla)p Ft(_)p FD(CS2C6)f(\(A,)i(B,)g(R,)g(AD,)g(BD,)g(RD,)
+g(V\))236 2895 y(CALL)f(sla)p Ft(_)p FD(DS2C6)g(\(A,)h(B,)g(R,)g(AD,)g
+(BD,)g(RD,)g(V\))472 3008 y(Con)m(v)m(ersion)24 b(of)g(p)s(osition)e
+(and)h(v)m(elo)s(cit)m(y)h(in)f(spherical)e(co)s(ordinates)j(to)g
+(Cartesian)g(co)s(ordinates)236 3187 y(CALL)30 b(sla)p
+Ft(_)p FD(CC62S)f(\(V,)i(A,)g(B,)g(R,)g(AD,)g(BD,)g(RD\))236
+3300 y(CALL)f(sla)p Ft(_)p FD(DC62S)g(\(V,)h(A,)g(B,)g(R,)f(AD,)i(BD,)f
+(RD\))472 3413 y(Con)m(v)m(ersion)24 b(of)g(p)s(osition)e(and)h(v)m
+(elo)s(cit)m(y)h(in)f(Cartesian)g(co)s(ordinates)g(to)i(spherical)d(co)
+s(ordinates)0 3762 y Fv(Calendars)236 4006 y FD(CALL)30
+b(sla)p Ft(_)p FD(CLDJ)f(\(IY,)i(IM,)g(ID,)g(DJM,)g(J\))472
+4119 y(Gregorian)g(Calendar)e(to)i(Mo)s(di\014ed)e(Julian)f(Date)236
+4298 y(CALL)i(sla)p Ft(_)p FD(CALDJ)f(\(IY,)i(IM,)g(ID,)g(DJM,)g(J\))
+472 4411 y(Gregorian)g(Calendar)e(to)i(Mo)s(di\014ed)e(Julian)f(Date,)k
+(p)s(ermitting)c(cen)m(tury)j(default)236 4591 y(CALL)f(sla)p
+Ft(_)p FD(DJCAL)f(\(NDP)-8 b(,)32 b(DJM,)f(IYMDF,)h(J\))472
+4704 y(Mo)s(di\014ed)39 b(Julian)e(Date)k(to)g(Gregorian)f(Calendar,)h
+(in)d(a)i(form)f(con)m(v)m(enien)m(t)i(for)f(formatted)472
+4816 y(output)236 4996 y(CALL)30 b(sla)p Ft(_)p FD(DJCL)f(\(DJM,)j(IY,)
+e(IM,)h(ID,)g(FD,)g(J\))472 5109 y(Mo)s(di\014ed)e(Julian)f(Date)k(to)f
+(Gregorian)g(Y)-8 b(ear,)31 b(Mon)m(th,)g(Da)m(y)-8 b(,)33
+b(F)-8 b(raction)236 5288 y(CALL)30 b(sla)p Ft(_)p FD(CAL)-8
+b(YD)30 b(\(IY,)h(IM,)g(ID,)g(NY,)g(ND,)g(J\))472 5401
+y(Calendar)f(to)h(y)m(ear)g(and)f(da)m(y)g(in)f(y)m(ear,)j(p)s
+(ermitting)c(cen)m(tury)j(default)236 5580 y(CALL)f(sla)p
+Ft(_)p FD(CL)-8 b(YD)30 b(\(IY,)h(IM,)g(ID,)g(NY,)g(ND,)g(J\))472
+5693 y(Calendar)f(to)h(y)m(ear)g(and)f(da)m(y)g(in)f(y)m(ear)p
+eop
+%%Page: 215 217
+215 216 bop 0 52 a Fw(SUN/67.70)3206 b FD(215)236 351
+y(D)31 b(=)f(sla)p Ft(_)p FD(EPB)g(\(D)m(A)-8 b(TE\))472
+464 y(Mo)s(di\014ed)29 b(Julian)f(Date)k(to)f(Besselian)f(Ep)s(o)s(c)m
+(h)236 644 y(D)h(=)f(sla)p Ft(_)p FD(EPB2D)h(\(EPB\))472
+757 y(Besselian)f(Ep)s(o)s(c)m(h)g(to)h(Mo)s(di\014ed)e(Julian)f(Date)
+236 937 y(D)j(=)f(sla)p Ft(_)p FD(EPJ)f(\(D)m(A)-8 b(TE\))472
+1050 y(Mo)s(di\014ed)29 b(Julian)f(Date)k(to)f(Julian)d(Ep)s(o)s(c)m(h)
+236 1230 y(D)j(=)f(sla)p Ft(_)p FD(EPJ2D)g(\(EPJ\))472
+1343 y(Julian)e(Ep)s(o)s(c)m(h)i(to)h(Mo)s(di\014ed)e(Julian)f(Date)0
+1695 y Fv(Time)36 b(Scales)236 1940 y FD(D)31 b(=)f(sla)p
+Ft(_)p FD(GMST)f(\(UT1\))472 2053 y(Con)m(v)m(ersion)h(from)g(Univ)m
+(ersal)g(Time)f(to)i(sidereal)e(time)236 2233 y(D)i(=)f(sla)p
+Ft(_)p FD(GMST)-8 b(A)30 b(\(D)m(A)-8 b(TE,)32 b(UT1\))472
+2346 y(Con)m(v)m(ersion)e(from)g(Univ)m(ersal)g(Time)f(to)i(sidereal)e
+(time,)h(rounding)e(errors)i(minimized)236 2526 y(D)h(=)f(sla)p
+Ft(_)p FD(EQEQX)f(\(D)m(A)-8 b(TE\))472 2639 y(Equation)30
+b(of)h(the)f(equino)m(xes)236 2819 y(D)h(=)f(sla)p Ft(_)p
+FD(D)m(A)-8 b(T)31 b(\(DJU\))472 2932 y(O\013set)g(of)g(A)m(tomic)g
+(Time)e(from)h(Co)s(ordinated)f(Univ)m(ersal)g(Time:)40
+b(T)-8 b(AI)p Fo(\000)p FD(UTC)236 3112 y(D)31 b(=)f(sla)p
+Ft(_)p FD(DT)g(\(EPOCH\))472 3225 y(Appro)m(ximate)h(o\013set)g(b)s(et)
+m(w)m(een)g(dynamical)e(time)h(and)g(univ)m(ersal)e(time)236
+3405 y(D)j(=)f(sla)p Ft(_)p FD(DTT)f(\(DJU\))472 3518
+y(O\013set)i(of)g(T)-8 b(errestrial)29 b(Time)g(from)h(Co)s(ordinated)f
+(Univ)m(ersal)g(Time:)40 b(TT)p Fo(\000)p FD(UTC)236
+3698 y(D)31 b(=)f(sla)p Ft(_)p FD(R)m(CC)f(\(TDB,)j(UT1,)f(WL,)f(U,)h
+(V\))472 3811 y(Relativistic)e(clo)s(c)m(k)i(correction:)41
+b(TDB)p Fo(\000)p FD(TT)0 4163 y Fv(Precession)c(and)h(Nutation)236
+4408 y FD(CALL)30 b(sla)p Ft(_)p FD(NUT)g(\(D)m(A)-8
+b(TE,)32 b(RMA)-8 b(TN\))472 4521 y(Nutation)31 b(matrix)236
+4701 y(CALL)f(sla)p Ft(_)p FD(NUTC)f(\(D)m(A)-8 b(TE,)32
+b(DPSI,)e(DEPS,)h(EPS0\))472 4814 y(Longitude)f(and)g(obliquit)m(y)e
+(comp)s(onen)m(ts)j(of)f(n)m(utation,)h(and)e(mean)i(obliquit)m(y)236
+4994 y(CALL)f(sla)p Ft(_)p FD(NUTC80)g(\(D)m(A)-8 b(TE,)32
+b(DPSI,)e(DEPS,)h(EPS0\))472 5107 y(Longitude)f(and)g(obliquit)m(y)e
+(comp)s(onen)m(ts)j(of)f(n)m(utation,)h(and)e(mean)i(obliquit)m(y)-8
+b(,)29 b(IA)m(U)i(1980)236 5287 y(CALL)f(sla)p Ft(_)p
+FD(PREC)f(\(EP0,)i(EP1,)g(RMA)-8 b(TP\))472 5400 y(Precession)30
+b(matrix)g(\(IA)m(U\))236 5580 y(CALL)g(sla)p Ft(_)p
+FD(PRECL)f(\(EP0,)i(EP1,)g(RMA)-8 b(TP\))472 5693 y(Precession)30
+b(matrix)g(\(suitable)f(for)h(long)g(p)s(erio)s(ds\))p
+eop
+%%Page: 216 218
+216 217 bop 0 52 a FD(216)236 351 y(CALL)30 b(sla)p Ft(_)p
+FD(PRENUT)f(\(EPOCH,)h(D)m(A)-8 b(TE,)32 b(RMA)-8 b(TPN\))472
+464 y(Com)m(bined)29 b(precession-n)m(utation)h(matrix)236
+636 y(CALL)g(sla)p Ft(_)p FD(PREBN)g(\(BEP0,)h(BEP1,)g(RMA)-8
+b(TP\))472 749 y(Precession)30 b(matrix,)g(old)g(system)236
+921 y(CALL)g(sla)p Ft(_)p FD(PRECES)e(\(SYSTEM,)i(EP0,)h(EP1,)g(RA,)f
+(DC\))472 1034 y(Precession,)h(in)e(either)h(the)g(old)g(or)g(the)h
+(new)e(system)0 1352 y Fv(Prop)s(er)37 b(Motion)236 1578
+y FD(CALL)30 b(sla)p Ft(_)p FD(PM)g(\(R0,)h(D0,)h(PR,)e(PD,)h(PX,)f(R)
+-10 b(V,)31 b(EP0,)g(EP1,)f(R1,)h(D1\))472 1691 y(Adjust)f(for)g(prop)s
+(er)f(motion)0 2009 y Fv(FK4/FK5/Hipparcos)38 b(Con)m(v)m(ersions)236
+2235 y FD(CALL)30 b(sla)p Ft(_)p FD(FK425)h(\(R1950,)i(D1950,)f
+(DR1950,)h(DD1950,)g(P1950,)g(V1950,)1000 2348 y(R2000,)g(D2000,)f
+(DR2000,)h(DD2000,)g(P2000,)g(V2000\))472 2442 y(Con)m(v)m(ert)f
+(B1950.0)h(FK4)e(star)f(data)h(to)g(J2000.0)i(FK5)236
+2614 y(CALL)d(sla)p Ft(_)p FD(FK45Z)g(\(R1950,)j(D1950,)g(EPOCH,)c
+(R2000,)k(D2000\))472 2727 y(Con)m(v)m(ert)j(B1950.0)j(FK4)c(p)s
+(osition)f(to)h(J2000.0)j(FK5)e(assuming)d(zero)j(FK5)g(prop)s(er)e
+(motion)472 2840 y(and)c(no)g(parallax)236 3011 y(CALL)g(sla)p
+Ft(_)p FD(FK524)h(\(R2000,)i(D2000,)f(DR2000,)h(DD2000,)g(P2000,)g
+(V2000,)1000 3124 y(R1950,)g(D1950,)f(DR1950,)h(DD1950,)g(P1950,)g
+(V1950\))472 3218 y(Con)m(v)m(ert)f(J2000.0)g(FK5)f(star)g(data)g(to)g
+(B1950.0)i(FK4)236 3390 y(CALL)d(sla)p Ft(_)p FD(FK54Z)g(\(R2000,)j
+(D2000,)g(BEPOCH,)d(R1950,)i(D1950,)h(DR1950,)g(DD1950\))472
+3503 y(Con)m(v)m(ert)j(J2000.0)i(FK5)e(p)s(osition)d(to)j(B1950.0)i
+(FK4)e(assuming)d(zero)j(FK5)g(prop)s(er)e(motion)472
+3616 y(and)c(no)g(parallax)236 3788 y(CALL)g(sla)p Ft(_)p
+FD(FK52H)h(\(R5,)g(D5,)g(DR5,)h(DD5,)g(RH,)e(DH,)i(DRH,)f(DDH\))472
+3901 y(Con)m(v)m(ert)h(J2000.0)g(FK5)f(star)g(data)g(to)g(Hipparcos)236
+4073 y(CALL)f(sla)p Ft(_)p FD(FK5HZ)g(\(R5,)h(D5,)h(EPOCH,)d(RH,)i(DH)g
+(\))472 4185 y(Con)m(v)m(ert)c(J2000.0)i(FK5)d(p)s(osition)e(to)j
+(Hipparcos)e(assuming)g(zero)i(Hipparcos)e(prop)s(er)g(motion)236
+4357 y(CALL)30 b(sla)p Ft(_)p FD(H2FK5)h(\(RH,)g(DH,)g(DRH,)g(DDH,)h
+(R5,)f(D5,)g(DR5,)g(DD5\))472 4470 y(Con)m(v)m(ert)h(Hipparcos)d(star)i
+(data)g(to)g(J2000.0)h(FK5)236 4642 y(CALL)e(sla)p Ft(_)p
+FD(HFK5Z)g(\(RH,)h(DH,)g(EPOCH,)f(R5,)h(D5,)g(DR5,)h(DD5\))472
+4755 y(Con)m(v)m(ert)27 b(Hipparcos)f(p)s(osition)e(to)j(J2000.0)h(FK5)
+e(assuming)f(zero)i(Hipparcos)e(prop)s(er)g(motion)236
+4927 y(CALL)30 b(sla)p Ft(_)p FD(DBJIN)g(\(STRING,)g(NSTR)-8
+b(T,)30 b(DRESL)-8 b(T,)31 b(J1,)f(J2\))472 5040 y(Lik)m(e)h(sla)p
+Ft(_)p FD(DFL)-8 b(TIN)30 b(but)g(with)f(extensions)h(to)h(accept)h
+(leading)d(`B')i(and)f(`J')236 5211 y(CALL)g(sla)p Ft(_)p
+FD(KBJ)f(\(JB,)i(E,)g(K,)f(J\))472 5324 y(Select)h(ep)s(o)s(c)m(h)f
+(pre\014x)f(`B')j(or)e(`J')236 5496 y(D)h(=)f(sla)p Ft(_)p
+FD(EPCO)f(\(K0,)i(K,)f(E\))472 5609 y(Con)m(v)m(ert)i(an)e(ep)s(o)s(c)m
+(h)g(in)m(to)g(the)h(appropriate)e(form)h({)h(`B')g(or)g(`J')p
+eop
+%%Page: 217 219
+217 218 bop 0 52 a Fw(SUN/67.70)3206 b FD(217)0 351 y
+Fv(Elliptic)33 b(Ab)s(erration)236 574 y FD(CALL)d(sla)p
+Ft(_)p FD(ETRMS)f(\(EP)-8 b(,)31 b(EV\))472 687 y(E-terms)236
+858 y(CALL)f(sla)p Ft(_)p FD(SUBET)f(\(R)m(C,)i(DC,)g(EQ,)f(RM,)h(DM\))
+472 971 y(Remo)m(v)m(e)i(the)d(E-terms)236 1142 y(CALL)g(sla)p
+Ft(_)p FD(ADDET)g(\(RM,)h(DM,)h(EQ,)e(R)m(C,)g(DC\))472
+1255 y(Add)g(the)h(E-terms)0 1568 y Fv(Geographical)37
+b(and)h(Geo)s(cen)m(tric)f(Co)s(ordinates)236 1791 y
+FD(CALL)30 b(sla)p Ft(_)p FD(OBS)f(\(NUMBER,)j(ID,)f(NAME,)g(WLONG,)g
+(PHI,)f(HEIGHT\))472 1904 y(In)m(terrogate)j(list)c(of)h(observ)-5
+b(atory)31 b(parameters)236 2075 y(CALL)f(sla)p Ft(_)p
+FD(GEOC)f(\(P)-8 b(,)31 b(H,)g(R,)g(Z\))472 2188 y(Con)m(v)m(ert)h(geo)
+s(detic)f(p)s(osition)d(to)j(geo)s(cen)m(tric)236 2359
+y(CALL)f(sla)p Ft(_)p FD(POLMO)f(\(ELONGM,)i(PHIM,)g(XP)-8
+b(,)31 b(YP)-8 b(,)31 b(ELONG,)f(PHI,)h(D)m(AZ\))472
+2472 y(P)m(olar)g(motion)236 2643 y(CALL)f(sla)p Ft(_)p
+FD(PV)m(OBS)g(\(P)-8 b(,)31 b(H,)g(STL,)e(PV\))472 2755
+y(P)m(osition)h(and)g(v)m(elo)s(cit)m(y)h(of)f(observ)-5
+b(atory)0 3069 y Fv(Apparen)m(t)38 b(and)g(Observ)m(ed)g(Place)236
+3292 y FD(CALL)30 b(sla)p Ft(_)p FD(MAP)g(\(RM,)h(DM,)g(PR,)g(PD,)g
+(PX,)f(R)-10 b(V,)31 b(EQ,)f(D)m(A)-8 b(TE,)32 b(RA,)e(D)m(A\))472
+3405 y(Mean)h(place)g(to)g(geo)s(cen)m(tric)g(apparen)m(t)g(place)236
+3576 y(CALL)f(sla)p Ft(_)p FD(MAPP)-8 b(A)30 b(\(EQ,)h(D)m(A)-8
+b(TE,)32 b(AMPRMS\))472 3689 y(Precompute)f(mean)f(to)i(apparen)m(t)e
+(parameters)236 3860 y(CALL)g(sla)p Ft(_)p FD(MAPQK)f(\(RM,)j(DM,)f
+(PR,)f(PD,)h(PX,)g(R)-10 b(V,)30 b(AMPRMS,)h(RA,)g(D)m(A\))472
+3972 y(Mean)g(to)h(apparen)m(t)e(using)f(precomputed)h(parameters)236
+4143 y(CALL)g(sla)p Ft(_)p FD(MAPQKZ)f(\(RM,)i(DM,)g(AMPRMS,)g(RA,)g(D)
+m(A\))472 4256 y(Mean)h(to)g(apparen)m(t)g(using)d(precomputed)i
+(parameters,)h(for)f(zero)h(prop)s(er)d(motion,)j(parallax)472
+4369 y(and)e(radial)f(v)m(elo)s(cit)m(y)236 4540 y(CALL)h(sla)p
+Ft(_)p FD(AMP)g(\(RA,)h(D)m(A,)h(D)m(A)-8 b(TE,)31 b(EQ,)f(RM,)h(DM\))
+472 4653 y(Geo)s(cen)m(tric)h(apparen)m(t)e(place)h(to)g(mean)f(place)
+236 4824 y(CALL)g(sla)p Ft(_)p FD(AMPQK)f(\(RA,)i(D)m(A,)h(AMPRMS,)f
+(RM,)g(DM\))472 4937 y(Apparen)m(t)g(to)g(mean)f(using)f(precomputed)h
+(parameters)236 5108 y(CALL)g(sla)p Ft(_)p FD(A)m(OP)g(\(RAP)-8
+b(,)31 b(D)m(AP)-8 b(,)32 b(UTC,)e(DUT,)h(ELONGM,)g(PHIM,)g(HM,)g(XP)-8
+b(,)31 b(YP)-8 b(,)932 5221 y(TDK,)31 b(PMB,)g(RH,)f(WL,)h(TLR,)f(A)m
+(OB,)h(ZOB,)g(HOB,)f(DOB,)i(R)m(OB\))472 5315 y(Apparen)m(t)f(place)f
+(to)h(observ)m(ed)g(place)236 5486 y(CALL)f(sla)p Ft(_)p
+FD(A)m(OPP)-8 b(A)30 b(\(UTC,)h(DUT,)g(ELONGM,)f(PHIM,)h(HM,)g(XP)-8
+b(,)31 b(YP)-8 b(,)1054 5599 y(TDK,)31 b(PMB,)g(RH,)g(WL,)g(TLR,)f(A)m
+(OPRMS\))472 5693 y(Precompute)h(apparen)m(t)g(to)g(observ)m(ed)f
+(parameters)p eop
+%%Page: 218 220
+218 219 bop 0 52 a FD(218)236 351 y(CALL)30 b(sla)p Ft(_)p
+FD(A)m(OPP)-8 b(A)g(T)30 b(\(UTC,)h(A)m(OPRMS\))472 464
+y(Up)s(date)g(sidereal)e(time)h(in)f(apparen)m(t)h(to)i(observ)m(ed)e
+(parameters)236 639 y(CALL)g(sla)p Ft(_)p FD(A)m(OPQK)f(\(RAP)-8
+b(,)32 b(D)m(AP)-8 b(,)31 b(A)m(OPRMS,)g(A)m(OB,)g(ZOB,)g(HOB,)f(DOB,)i
+(R)m(OB\))472 752 y(Apparen)m(t)f(to)g(observ)m(ed)f(using)f
+(precomputed)h(parameters)236 926 y(CALL)g(sla)p Ft(_)p
+FD(O)m(AP)g(\(TYPE,)g(OB1,)h(OB2,)h(UTC,)e(DUT,)g(ELONGM,)h(PHIM,)g
+(HM,)g(XP)-8 b(,)31 b(YP)-8 b(,)932 1039 y(TDK,)31 b(PMB,)g(RH,)f(WL,)h
+(TLR,)f(RAP)-8 b(,)31 b(D)m(AP\))472 1133 y(Observ)m(ed)f(to)h(apparen)
+m(t)236 1308 y(CALL)f(sla)p Ft(_)p FD(O)m(APQK)f(\(TYPE,)i(OB1,)g(OB2,)
+g(A)m(OPRMS,)f(RA,)h(D)m(A\))472 1421 y(Observ)m(ed)f(to)h(apparen)m(t)
+g(using)e(precomputed)g(parameters)0 1755 y Fv(Azim)m(uth)35
+b(and)k(Elev)-6 b(ation)236 1990 y FD(CALL)30 b(sla)p
+Ft(_)p FD(AL)-8 b(T)g(AZ)30 b(\(HA,)h(DEC,)g(PHI,)1033
+2103 y(AZ,)f(AZD,)h(AZDD,)g(EL,)g(ELD,)f(ELDD,)h(P)-8
+b(A,)31 b(P)-8 b(AD,)32 b(P)-8 b(ADD\))472 2197 y(P)m(ositions,)30
+b(v)m(elo)s(cities)g Fq(etc.)g FD(for)g(an)h(altazim)m(uth)f(moun)m(t)
+236 2372 y(CALL)g(sla)p Ft(_)p FD(E2H)g(\(HA,)h(DEC,)g(PHI,)f(AZ,)h
+(EL\))236 2485 y(CALL)f(sla)p Ft(_)p FD(DE2H)h(\(HA,)g(DEC,)f(PHI,)h
+(AZ,)f(EL\))472 2598 y([)15 b Fl(h;)g(\016)21 b FD(])30
+b(to)h([)15 b Fl(Az)t(;)g(E)5 b(l)34 b FD(])236 2772
+y(CALL)c(sla)p Ft(_)p FD(H2E)g(\(AZ,)h(EL,)f(PHI,)g(HA,)h(DEC\))236
+2885 y(CALL)f(sla)p Ft(_)p FD(DH2E)h(\(AZ,)f(EL,)g(PHI,)h(HA,)g(DEC\))
+472 2998 y([)15 b Fl(Az)t(;)g(E)5 b(l)34 b FD(])d(to)g([)15
+b Fl(h;)g(\016)20 b FD(])236 3173 y(CALL)30 b(sla)p Ft(_)p
+FD(PD)m(A2H)h(\(P)-8 b(,)31 b(D,)g(A,)g(H1,)g(J1,)g(H2,)g(J2\))472
+3286 y(Hour)f(Angle)h(corresp)s(onding)d(to)j(a)g(giv)m(en)f(azim)m
+(uth)236 3460 y(CALL)g(sla)p Ft(_)p FD(PDQ2H)g(\(P)-8
+b(,)31 b(D,)g(Q,)g(H1,)g(J1,)g(H2,)g(J2\))472 3573 y(Hour)f(Angle)h
+(corresp)s(onding)d(to)j(a)g(giv)m(en)f(parallactic)g(angle)236
+3748 y(D)h(=)f(sla)p Ft(_)p FD(P)-8 b(A)30 b(\(HA,)h(DEC,)g(PHI\))472
+3861 y([)15 b Fl(h;)g(\016)21 b FD(])30 b(to)h(parallactic)f(angle)236
+4035 y(D)h(=)f(sla)p Ft(_)p FD(ZD)g(\(HA,)h(DEC,)f(PHI\))472
+4148 y([)15 b Fl(h;)g(\016)21 b FD(])30 b(to)h(zenith)f(distance)0
+4482 y Fv(Refraction)36 b(and)j(Air)d(Mass)236 4718 y
+FD(CALL)30 b(sla)p Ft(_)p FD(REFR)m(O)g(\(ZOBS,)g(HM,)h(TDK,)f(PMB,)h
+(RH,)g(WL,)g(PHI,)f(TLR,)g(EPS,)g(REF\))472 4830 y(Change)h(in)e
+(zenith)h(distance)g(due)f(to)i(refraction)236 5005 y(CALL)f(sla)p
+Ft(_)p FD(REF)m(CO)g(\(HM,)h(TDK,)f(PMB,)i(RH,)e(WL,)h(PHI,)f(TLR,)g
+(EPS,)g(REF)-10 b(A,)31 b(REFB\))472 5118 y(Constan)m(ts)g(for)f
+(simple)f(refraction)h(mo)s(del)f(\(accurate\))236 5293
+y(CALL)h(sla)p Ft(_)p FD(REF)m(COQ)f(\(TDK,)i(PMB,)g(RH,)g(WL,)g(REF)
+-10 b(A,)30 b(REFB\))472 5405 y(Constan)m(ts)h(for)f(simple)f
+(refraction)h(mo)s(del)f(\(fast\))236 5580 y(CALL)g(sla)p
+Ft(_)p FD(A)-8 b(TMDSP)30 b(\()g(TDK,)f(PMB,)i(RH,)f(WL1,)g(REF)-10
+b(A1,)31 b(REFB1,)g(WL2,)g(REF)-10 b(A2,)31 b(REFB2)f(\))472
+5693 y(Adjust)g(refraction)g(constan)m(ts)i(for)e(colour)p
+eop
+%%Page: 219 221
+219 220 bop 0 52 a Fw(SUN/67.70)3206 b FD(219)236 351
+y(CALL)30 b(sla)p Ft(_)p FD(REFZ)f(\(ZU,)i(REF)-10 b(A,)31
+b(REFB,)g(ZR\))472 464 y(Unrefracted)g(to)g(refracted)g(ZD,)f(simple)f
+(mo)s(del)236 673 y(CALL)h(sla)p Ft(_)p FD(REFV)g(\(VU,)h(REF)-10
+b(A,)31 b(REFB,)g(VR\))472 786 y(Unrefracted)g(to)g(refracted)g([)15
+b Fl(Az)t(;)g(E)5 b(l)34 b FD(])c(v)m(ector,)i(simple)d(mo)s(del)236
+994 y(D)i(=)f(sla)p Ft(_)p FD(AIRMAS)g(\(ZD\))472 1107
+y(Air)g(mass)0 1545 y Fv(Ecliptic)k(Co)s(ordinates)236
+1838 y FD(CALL)c(sla)p Ft(_)p FD(ECMA)-8 b(T)30 b(\(D)m(A)-8
+b(TE,)32 b(RMA)-8 b(T\))472 1951 y(Equatorial)30 b(to)h(ecliptic)e
+(rotation)i(matrix)236 2159 y(CALL)f(sla)p Ft(_)p FD(EQECL)f(\(DR,)i
+(DD,)g(D)m(A)-8 b(TE,)32 b(DL,)f(DB\))472 2272 y(J2000.0)i(`FK5')e(to)g
+(ecliptic)f(co)s(ordinates)236 2481 y(CALL)g(sla)p Ft(_)p
+FD(ECLEQ)f(\(DL,)i(DB,)g(D)m(A)-8 b(TE,)32 b(DR,)f(DD\))472
+2594 y(Ecliptic)e(co)s(ordinates)h(to)h(J2000.0)i(`FK5')0
+3031 y Fv(Galactic)j(Co)s(ordinates)236 3325 y FD(CALL)30
+b(sla)p Ft(_)p FD(EG50)h(\(DR,)g(DD,)g(DL,)g(DB\))472
+3437 y(B1950.0)j(`FK4')d(to)g(galactic)236 3646 y(CALL)f(sla)p
+Ft(_)p FD(GE50)h(\(DL,)g(DB,)g(DR,)g(DD\))472 3759 y(Galactic)h(to)f
+(B1950.0)i(`FK4')236 3968 y(CALL)d(sla)p Ft(_)p FD(EQGAL)g(\(DR,)h(DD,)
+g(DL,)g(DB\))472 4081 y(J2000.0)i(`FK5')e(to)g(galactic)236
+4289 y(CALL)f(sla)p Ft(_)p FD(GALEQ)g(\(DL,)h(DB,)g(DR,)g(DD\))472
+4402 y(Galactic)h(to)f(J2000.0)h(`FK5')0 4840 y Fv(Sup)s(ergalactic)37
+b(Co)s(ordinates)236 5133 y FD(CALL)30 b(sla)p Ft(_)p
+FD(GALSUP)f(\(DL,)j(DB,)f(DSL,)f(DSB\))472 5246 y(Galactic)i(to)f(sup)s
+(ergalactic)236 5454 y(CALL)f(sla)p Ft(_)p FD(SUPGAL)f(\(DSL,)i(DSB,)g
+(DL,)g(DB\))472 5567 y(Sup)s(ergalactic)f(to)h(galactic)p
+eop
+%%Page: 220 222
+220 221 bop 0 52 a FD(220)0 351 y Fv(Ephemerides)236
+566 y FD(CALL)30 b(sla)p Ft(_)p FD(DMOON)g(\(D)m(A)-8
+b(TE,)32 b(PV\))472 678 y(Appro)m(ximate)f(geo)s(cen)m(tric)g(p)s
+(osition)e(and)g(v)m(elo)s(cit)m(y)i(of)g(the)f(Mo)s(on)236
+847 y(CALL)g(sla)p Ft(_)p FD(EAR)-8 b(TH)30 b(\(IY,)h(ID,)g(FD,)g(PV\))
+472 960 y(Appro)m(ximate)g(helio)s(cen)m(tric)e(p)s(osition)f(and)i(v)m
+(elo)s(cit)m(y)h(of)f(the)h(Earth)236 1129 y(CALL)f(sla)p
+Ft(_)p FD(EPV)g(\(D)m(A)-8 b(TE,)31 b(DPH,)h(D)m(VH,)f(DPB,)h(D)m(VB)f
+(\))472 1241 y(Helio)s(cen)m(tric)f(and)g(barycen)m(tric)g(p)s(osition)
+f(and)g(v)m(elo)s(cit)m(y)i(of)g(the)f(Earth)236 1410
+y(CALL)g(sla)p Ft(_)p FD(EVP)g(\(D)m(A)-8 b(TE,)31 b(DEQX,)g(D)m(VB,)h
+(DPB,)g(D)m(VH,)f(DPH\))472 1523 y(Barycen)m(tric)h(and)d(helio)s(cen)m
+(tric)g(v)m(elo)s(cit)m(y)i(and)f(p)s(osition)f(of)h(the)h(Earth)236
+1691 y(CALL)f(sla)p Ft(_)p FD(MOON)g(\(IY,)g(ID,)h(FD,)h(PV\))472
+1804 y(Appro)m(ximate)f(geo)s(cen)m(tric)g(p)s(osition)e(and)g(v)m(elo)
+s(cit)m(y)i(of)g(the)f(Mo)s(on)236 1973 y(CALL)g(sla)p
+Ft(_)p FD(PLANET)f(\(D)m(A)-8 b(TE,)32 b(NP)-8 b(,)31
+b(PV,)g(JST)-8 b(A)g(T\))472 2086 y(Appro)m(ximate)31
+b(helio)s(cen)m(tric)e(p)s(osition)f(and)i(v)m(elo)s(cit)m(y)h(of)f(a)h
+(planet)236 2254 y(CALL)f(sla)p Ft(_)p FD(RDPLAN)g(\(D)m(A)-8
+b(TE,)32 b(NP)-8 b(,)31 b(ELONG,)f(PHI,)h(RA,)g(DEC,)f(DIAM\))472
+2367 y(Appro)m(ximate)h(top)s(o)s(cen)m(tric)f(apparen)m(t)h(place)f
+(of)h(a)f(planet)236 2536 y(CALL)g(sla)p Ft(_)p FD(PLANEL)f(\(D)m(A)-8
+b(TE,)32 b(JF)m(ORM,)f(EPOCH,)f(ORBINC,)g(ANODE,)h(PERIH,)1107
+2649 y(A)m(OR)m(Q,)h(E,)e(A)m(ORL,)h(DM,)g(PV,)g(JST)-8
+b(A)g(T\))472 2743 y(Helio)s(cen)m(tric)21 b(p)s(osition)f(and)h(v)m
+(elo)s(cit)m(y)h(of)g(a)g(planet,)h(asteroid)e(or)g(comet,)k(starting)d
+(from)f(orbital)472 2856 y(elemen)m(ts)236 3024 y(CALL)30
+b(sla)p Ft(_)p FD(PLANTE)f(\(D)m(A)-8 b(TE,)32 b(ELONG,)f(PHI,)f(JF)m
+(ORM,)h(EPOCH,)f(ORBINC,)g(ANODE,)1116 3137 y(PERIH,)h(A)m(OR)m(Q,)g
+(E,)f(A)m(ORL,)h(DM,)g(RA,)g(DEC,)f(R,)h(JST)-8 b(A)g(T\))472
+3232 y(T)g(op)s(o)s(cen)m(tric)31 b(apparen)m(t)h(place)f(of)g(a)g
+(Solar-System)g(ob)5 b(ject)32 b(whose)f(helio)s(cen)m(tric)e(orbital)h
+(ele-)472 3344 y(men)m(ts)h(are)g(kno)m(wn)236 3513 y(CALL)f(sla)p
+Ft(_)p FD(PLANTU)f(\(D)m(A)-8 b(TE,)32 b(ELONG,)f(PHI,)f(U,)h(RA,)g
+(DEC,)f(R,)h(JST)-8 b(A)g(T\))472 3626 y(T)g(op)s(o)s(cen)m(tric)40
+b(apparen)m(t)g(place)f(of)h(a)f(Solar-System)g(ob)5
+b(ject)41 b(whose)e(helio)s(cen)m(tric)f(univ)m(ersal)472
+3739 y(orbital)30 b(elemen)m(ts)g(are)h(kno)m(wn)236
+3907 y(CALL)f(sla)p Ft(_)p FD(PV2EL)g(\(PV,)h(D)m(A)-8
+b(TE,)31 b(PMASS,)f(JF)m(ORMR,)h(JF)m(ORM,)g(EPOCH,)f(ORBINC,)1028
+4020 y(ANODE,)h(PERIH,)f(A)m(OR)m(Q,)h(E,)g(A)m(ORL,)f(DM,)i(JST)-8
+b(A)g(T\))472 4114 y(Orbital)29 b(elemen)m(ts)i(of)f(a)h(planet)f(from)
+g(instan)m(taneous)g(p)s(osition)e(and)i(v)m(elo)s(cit)m(y)236
+4283 y(CALL)g(sla)p Ft(_)p FD(PER)-8 b(TEL)29 b(\(JF)m(ORM,)i(D)m(A)-8
+b(TE0,)32 b(D)m(A)-8 b(TE1,)1101 4396 y(EPOCH0,)31 b(ORBI0,)g(ANODE0,)g
+(PERIH0,)g(A)m(OR)m(Q0,)g(E0,)g(AM0,)1101 4509 y(EPOCH1,)g(ORBI1,)g
+(ANODE1,)g(PERIH1,)g(A)m(OR)m(Q1,)g(E1,)g(AM1,)1101 4622
+y(JST)-8 b(A)g(T\))472 4716 y(Up)s(date)31 b(elemen)m(ts)f(b)m(y)h
+(applying)d(p)s(erturbations)236 4884 y(CALL)i(sla)p
+Ft(_)p FD(EL2UE)g(\(D)m(A)-8 b(TE,)32 b(JF)m(ORM,)f(EPOCH,)f(ORBINC,)g
+(ANODE,)1028 4997 y(PERIH,)g(A)m(OR)m(Q,)h(E,)g(A)m(ORL,)f(DM,)1028
+5110 y(U,)h(JST)-8 b(A)g(T\))472 5204 y(T)g(ransform)30
+b(con)m(v)m(en)m(tional)h(elemen)m(ts)g(to)g(univ)m(ersal)e(elemen)m
+(ts)236 5373 y(CALL)h(sla)p Ft(_)p FD(UE2EL)g(\(U,)h(JF)m(ORMR,)1028
+5486 y(JF)m(ORM,)g(EPOCH,)f(ORBINC,)g(ANODE,)h(PERIH,)1028
+5599 y(A)m(OR)m(Q,)g(E,)g(A)m(ORL,)f(DM,)i(JST)-8 b(A)g(T\))472
+5693 y(T)g(ransform)30 b(univ)m(ersal)e(elemen)m(ts)j(to)g(con)m(v)m
+(en)m(tional)h(elemen)m(ts)p eop
+%%Page: 221 223
+221 222 bop 0 52 a Fw(SUN/67.70)3206 b FD(221)236 351
+y(CALL)30 b(sla)p Ft(_)p FD(PV2UE)g(\(PV,)h(D)m(A)-8
+b(TE,)32 b(PMASS,)e(U,)g(JST)-8 b(A)g(T\))472 464 y(P)m(ac)m(k)j(age)34
+b(a)c(p)s(osition)f(and)h(v)m(elo)s(cit)m(y)h(for)f(use)g(as)g(univ)m
+(ersal)f(elemen)m(ts)236 640 y(CALL)h(sla)p Ft(_)p FD(UE2PV)g(\(D)m(A)
+-8 b(TE,)32 b(U,)f(PV,)f(JST)-8 b(A)g(T\))472 753 y(Extract)32
+b(the)e(p)s(osition)f(and)h(v)m(elo)s(cit)m(y)g(from)g(univ)m(ersal)f
+(elemen)m(ts)236 928 y(CALL)h(sla)p Ft(_)p FD(PER)-8
+b(TUE)29 b(\(D)m(A)-8 b(TE,)32 b(U,)f(JST)-8 b(A)g(T\))472
+1041 y(Up)s(date)31 b(univ)m(ersal)d(elemen)m(ts)j(b)m(y)f(applying)e
+(p)s(erturbations)236 1217 y(R)i(=)g(sla)p Ft(_)p FD(R)-10
+b(VER)m(OT)30 b(\(PHI,)g(RA,)h(D)m(A,)h(ST\))472 1329
+y(V)-8 b(elo)s(cit)m(y)31 b(comp)s(onen)m(t)g(due)f(to)h(rotation)g(of)
+f(the)h(Earth)236 1505 y(CALL)f(sla)p Ft(_)p FD(ECOR)f(\(RM,)i(DM,)g
+(IY,)g(ID,)g(FD,)g(R)-10 b(V,)31 b(TL\))472 1618 y(Comp)s(onen)m(ts)f
+(of)h(v)m(elo)s(cit)m(y)g(and)e(ligh)m(t)h(time)g(due)g(to)h(Earth)f
+(orbital)f(motion)236 1793 y(R)h(=)g(sla)p Ft(_)p FD(R)-10
+b(VLSRD)30 b(\(R2000,)i(D2000\))472 1906 y(V)-8 b(elo)s(cit)m(y)31
+b(comp)s(onen)m(t)g(due)f(to)h(solar)f(motion)g(wrt)g(dynamical)f(LSR)
+236 2082 y(R)h(=)g(sla)p Ft(_)p FD(R)-10 b(VLSRK)29 b(\(R2000,)k
+(D2000\))472 2195 y(V)-8 b(elo)s(cit)m(y)31 b(comp)s(onen)m(t)g(due)f
+(to)h(solar)f(motion)g(wrt)g(kinematical)f(LSR)236 2370
+y(R)h(=)g(sla)p Ft(_)p FD(R)-10 b(V)m(GALC)31 b(\(R2000,)h(D2000\))472
+2483 y(V)-8 b(elo)s(cit)m(y)31 b(comp)s(onen)m(t)g(due)f(to)h(rotation)
+g(of)f(the)h(Galaxy)236 2659 y(R)f(=)g(sla)p Ft(_)p FD(R)-10
+b(VLG)30 b(\(R2000,)j(D2000\))472 2772 y(V)-8 b(elo)s(cit)m(y)37
+b(comp)s(onen)m(t)g(due)e(to)i(rotation)f(and)g(translation)f(of)h(the)
+h(Galaxy)-8 b(,)38 b(relativ)m(e)e(to)h(the)472 2884
+y(mean)31 b(motion)f(of)g(the)h(lo)s(cal)f(group)0 3223
+y Fv(Astrometry)236 3461 y FD(CALL)g(sla)p Ft(_)p FD(S2TP)f(\(RA,)i
+(DEC,)g(RAZ,)f(DECZ,)g(XI,)g(ET)-8 b(A,)31 b(J\))236
+3573 y(CALL)f(sla)p Ft(_)p FD(DS2TP)g(\(RA,)h(DEC,)f(RAZ,)g(DECZ,)g
+(XI,)h(ET)-8 b(A,)31 b(J\))472 3686 y(T)-8 b(ransform)30
+b(spherical)e(co)s(ordinates)i(in)m(to)h(tangen)m(t)h(plane)236
+3862 y(CALL)e(sla)p Ft(_)p FD(V2TP)g(\(V,)h(V0,)g(XI,)g(ET)-8
+b(A,)30 b(J\))236 3975 y(CALL)g(sla)p Ft(_)p FD(D)m(V2TP)h(\(V,)g(V0,)g
+(XI,)g(ET)-8 b(A,)30 b(J\))472 4088 y(T)-8 b(ransform)30
+b([)15 b Fl(x;)g(y)s(;)g(z)20 b FD(])31 b(in)m(to)f(tangen)m(t)i(plane)
+d(co)s(ordinates)236 4263 y(CALL)h(sla)p Ft(_)p FD(DTP2S)g(\(XI,)g(ET)
+-8 b(A,)31 b(RAZ,)f(DECZ,)g(RA,)h(DEC\))236 4376 y(CALL)f(sla)p
+Ft(_)p FD(TP2S)f(\(XI,)i(ET)-8 b(A,)31 b(RAZ,)f(DECZ,)g(RA,)h(DEC\))472
+4489 y(T)-8 b(ransform)30 b(tangen)m(t)i(plane)d(co)s(ordinates)h(in)m
+(to)h(spherical)d(co)s(ordinates)236 4665 y(CALL)i(sla)p
+Ft(_)p FD(DTP2V)g(\(XI,)h(ET)-8 b(A,)31 b(V0,)g(V\))236
+4777 y(CALL)f(sla)p Ft(_)p FD(TP2V)g(\(XI,)h(ET)-8 b(A,)30
+b(V0,)i(V\))472 4890 y(T)-8 b(ransform)30 b(tangen)m(t)i(plane)d(co)s
+(ordinates)h(in)m(to)h([)15 b Fl(x;)g(y)s(;)g(z)20 b
+FD(])236 5066 y(CALL)30 b(sla)p Ft(_)p FD(DTPS2C)f(\(XI,)i(ET)-8
+b(A,)31 b(RA,)f(DEC,)h(RAZ1,)g(DECZ1,)f(RAZ2,)h(DECZ2,)f(N\))236
+5179 y(CALL)g(sla)p Ft(_)p FD(TPS2C)f(\(XI,)i(ET)-8 b(A,)30
+b(RA,)h(DEC,)g(RAZ1,)f(DECZ1,)h(RAZ2,)f(DECZ2,)h(N\))472
+5292 y(Get)h(plate)e(cen)m(tre)i(from)d(star)i([)15 b
+Fl(\013;)g(\016)20 b FD(])31 b(and)f(tangen)m(t)h(plane)f(co)s
+(ordinates)236 5467 y(CALL)g(sla)p Ft(_)p FD(DTPV2C)g(\(XI,)h(ET)-8
+b(A,)30 b(V,)h(V01,)h(V02,)f(N\))236 5580 y(CALL)f(sla)p
+Ft(_)p FD(TPV2C)f(\(XI,)i(ET)-8 b(A,)31 b(V,)g(V01,)g(V02,)h(N\))472
+5693 y(Get)g(plate)e(cen)m(tre)i(from)d(star)i([)15 b
+Fl(x;)g(y)s(;)g(z)20 b FD(])31 b(and)f(tangen)m(t)i(plane)d(co)s
+(ordinates)p eop
+%%Page: 222 224
+222 223 bop 0 52 a FD(222)236 351 y(CALL)30 b(sla)p Ft(_)p
+FD(PCD)g(\(DISCO,)g(X,)g(Y\))472 464 y(Apply)f(pincushion/barrel)e
+(distortion)236 637 y(CALL)j(sla)p Ft(_)p FD(UNPCD)g(\(DISCO,)g(X,)h
+(Y\))472 750 y(Remo)m(v)m(e)i(pincushion/barrel)26 b(distortion)236
+923 y(CALL)k(sla)p Ft(_)p FD(FITXY)g(\(ITYPE,)g(NP)-8
+b(,)31 b(XYE,)g(XYM,)g(COEFFS,)f(J\))472 1036 y(Fit)h(a)f(linear)f(mo)s
+(del)g(to)j(relate)e(t)m(w)m(o)i(sets)f(of)f([)15 b Fl(x;)g(y)k
+FD(])31 b(co)s(ordinates)236 1208 y(CALL)f(sla)p Ft(_)p
+FD(PXY)g(\(NP)-8 b(,)31 b(XYE,)g(XYM,)g(COEFFS,)f(XYP)-8
+b(,)31 b(XRMS,)g(YRMS,)f(RRMS\))472 1321 y(Compute)g(predicted)g(co)s
+(ordinates)g(and)f(residuals)236 1494 y(CALL)h(sla)p
+Ft(_)p FD(INVF)g(\(FWDS,)i(BKWDS,)f(J\))472 1607 y(In)m(v)m(ert)g(a)g
+(linear)e(mo)s(del)236 1780 y(CALL)h(sla)p Ft(_)p FD(XY2XY)h(\(X1,)g
+(Y1,)h(COEFFS,)d(X2,)j(Y2\))472 1893 y(T)-8 b(ransform)30
+b(one)h([)15 b Fl(x;)g(y)j FD(])236 2066 y(CALL)30 b(sla)p
+Ft(_)p FD(DCMPF)g(\(COEFFS,)h(XZ,)f(YZ,)g(XS,)g(YS,)h(PERP)-8
+b(,)30 b(ORIENT\))472 2179 y(Decomp)s(ose)i(a)f(linear)d(\014t)j(in)m
+(to)f(scales)h Fq(etc.)0 2503 y Fv(Numerical)k(Metho)s(ds)236
+2732 y FD(CALL)30 b(sla)p Ft(_)p FD(COMBN)g(\(NSEL,)g(NCAND,)h(LIST,)f
+(J\))472 2845 y(Next)i(com)m(bination)d(\(subset)h(from)g(a)h(sp)s
+(eci\014ed)e(n)m(um)m(b)s(er)g(of)h(items\))236 3018
+y(CALL)g(sla)p Ft(_)p FD(PERMUT)f(\(N,)j(IST)-8 b(A)g(TE,)30
+b(IORDER,)g(J\))472 3131 y(Next)i(p)s(erm)m(utation)d(of)i(a)f(sp)s
+(eci\014ed)f(n)m(um)m(b)s(er)g(of)i(items)236 3303 y(CALL)f(sla)p
+Ft(_)p FD(SMA)-8 b(T)30 b(\(N,)h(A,)g(Y,)f(D,)h(JF,)g(IW\))236
+3416 y(CALL)f(sla)p Ft(_)p FD(DMA)-8 b(T)31 b(\(N,)g(A,)f(Y,)h(D,)g
+(JF,)g(IW\))472 3529 y(Matrix)g(in)m(v)m(ersion)e(and)h(solution)f(of)h
+(sim)m(ultaneous)f(equations)236 3702 y(CALL)h(sla)p
+Ft(_)p FD(SVD)g(\(M,)h(N,)g(MP)-8 b(,)31 b(NP)-8 b(,)31
+b(A,)g(W,)g(V,)f(W)m(ORK,)h(JST)-8 b(A)g(T\))472 3815
+y(Singular)28 b(v)-5 b(alue)30 b(decomp)s(osition)f(of)i(a)f(matrix)236
+3988 y(CALL)g(sla)p Ft(_)p FD(SVDSOL)f(\(M,)i(N,)g(MP)-8
+b(,)31 b(NP)-8 b(,)31 b(B,)g(U,)g(W,)g(V,)f(W)m(ORK,)h(X\))472
+4101 y(Solution)e(from)h(giv)m(en)g(v)m(ector)i(plus)d(SVD)236
+4274 y(CALL)h(sla)p Ft(_)p FD(SVDCO)m(V)g(\(N,)h(NP)-8
+b(,)31 b(NC,)f(W,)h(V,)g(W)m(ORK,)g(CVM\))472 4386 y(Co)m(v)-5
+b(ariance)31 b(matrix)f(from)g(SVD)236 4559 y(R)g(=)g(sla)p
+Ft(_)p FD(RANDOM)h(\(SEED\))472 4672 y(Generate)h(pseudo-random)d(real)
+h(n)m(um)m(b)s(er)f(in)g(the)i(range)g(0)25 b Fo(\024)g
+Fl(x)h(<)f FD(1)236 4845 y(R)30 b(=)g(sla)p Ft(_)p FD(GRESID)g(\(S\))
+472 4958 y(Generate)i(pseudo-random)d(normal)h(deviate)g(\()p
+Fo(\021)h FD(`Gaussian)e(residual'\))0 5282 y Fv(Real-time)236
+5511 y FD(CALL)h(sla)p Ft(_)p FD(W)-10 b(AIT)30 b(\(DELA)-8
+b(Y\))472 5624 y(In)m(terv)j(al)31 b(w)m(ait)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/sun67.tex b/sun67.tex
new file mode 100644
index 0000000000000000000000000000000000000000..23a1f5494fde07aca298976d14265c3b1c3f85a4
--- /dev/null
+++ b/sun67.tex
@@ -0,0 +1,13143 @@
+\documentclass[11pt,twoside]{article}
+\setcounter{tocdepth}{2}
+\pagestyle{myheadings}
+
+% -----------------------------------------------------------------------------
+% ? Document identification
+\newcommand{\stardoccategory}  {Starlink User Note}
+\newcommand{\stardocinitials}  {SUN}
+\newcommand{\stardocsource}    {sun67.70}
+\newcommand{\stardocnumber}    {67.70}
+\newcommand{\stardocauthors}   {P.\,T.\,Wallace}
+\newcommand{\stardocdate}      {19 December 2005}
+\newcommand{\stardoctitle}     {SLALIB --- Positional Astronomy Library}
+\newcommand{\stardocversion}   {2.5-3}
+\newcommand{\stardocmanual}    {Programmer's Manual}
+% ? End of document identification
+
+%%% Also see \nroutines definition later %%%
+
+% -----------------------------------------------------------------------------
+
+\newcommand{\stardocname}{\stardocinitials /\stardocnumber}
+\markright{\stardocname}
+
+%----------------------------------------------------
+% Comment out unwanted definitions to suit stationery
+
+\setlength{\textwidth}{160mm}       %
+\setlength{\textheight}{230mm}      % European A4
+\setlength{\topmargin}{-5mm}        %
+
+%\setlength{\textwidth}{167mm}       %
+%\setlength{\textheight}{220mm}      % US Letter
+%\setlength{\topmargin}{-10mm}       %
+
+%
+%----------------------------------------------------
+
+\setlength{\textwidth}{160mm}
+\setlength{\textheight}{230mm}
+\setlength{\topmargin}{-2mm}
+\setlength{\oddsidemargin}{0mm}
+\setlength{\evensidemargin}{0mm}
+\setlength{\parindent}{0mm}
+\setlength{\parskip}{\medskipamount}
+\setlength{\unitlength}{1mm}
+
+% -----------------------------------------------------------------------------
+%  Hypertext definitions.
+%  ======================
+%  These are used by the LaTeX2HTML translator in conjunction with star2html.
+
+%  Comment.sty: version 2.0, 19 June 1992
+%  Selectively in/exclude pieces of text.
+%
+%  Author
+%    Victor Eijkhout                                      <eijkhout@cs.utk.edu>
+%    Department of Computer Science
+%    University Tennessee at Knoxville
+%    104 Ayres Hall
+%    Knoxville, TN 37996
+%    USA
+
+%  Do not remove the %\begin{rawtex} and %\end{rawtex} lines (used by
+%  star2html to signify raw TeX that latex2html cannot process).
+%\begin{rawtex}
+\makeatletter
+\def\makeinnocent#1{\catcode`#1=12 }
+\def\csarg#1#2{\expandafter#1\csname#2\endcsname}
+
+\def\ThrowAwayComment#1{\begingroup
+    \def\CurrentComment{#1}%
+    \let\do\makeinnocent \dospecials
+    \makeinnocent\^^L% and whatever other special cases
+    \endlinechar`\^^M \catcode`\^^M=12 \xComment}
+{\catcode`\^^M=12 \endlinechar=-1 %
+ \gdef\xComment#1^^M{\def\test{#1}
+      \csarg\ifx{PlainEnd\CurrentComment Test}\test
+          \let\html@next\endgroup
+      \else \csarg\ifx{LaLaEnd\CurrentComment Test}\test
+            \edef\html@next{\endgroup\noexpand\end{\CurrentComment}}
+      \else \let\html@next\xComment
+      \fi \fi \html@next}
+}
+\makeatother
+
+\def\includecomment
+ #1{\expandafter\def\csname#1\endcsname{}%
+    \expandafter\def\csname end#1\endcsname{}}
+\def\excludecomment
+ #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}%
+    {\escapechar=-1\relax
+     \csarg\xdef{PlainEnd#1Test}{\string\\end#1}%
+     \csarg\xdef{LaLaEnd#1Test}{\string\\end\string\{#1\string\}}%
+    }}
+
+%  Define environments that ignore their contents.
+\excludecomment{comment}
+\excludecomment{rawhtml}
+\excludecomment{htmlonly}
+%\end{rawtex}
+
+%  Hypertext commands etc. This is a condensed version of the html.sty
+%  file supplied with LaTeX2HTML by: Nikos Drakos <nikos@cbl.leeds.ac.uk> &
+%  Jelle van Zeijl <jvzeijl@isou17.estec.esa.nl>. The LaTeX2HTML documentation
+%  should be consulted about all commands (and the environments defined above)
+%  except \xref and \xlabel which are Starlink specific.
+
+\newcommand{\htmladdnormallinkfoot}[2]{#1\footnote{#2}}
+\newcommand{\htmladdnormallink}[2]{#1}
+\newcommand{\htmladdimg}[1]{}
+\newenvironment{latexonly}{}{}
+\newcommand{\hyperref}[4]{#2\ref{#4}#3}
+\newcommand{\htmlref}[2]{#1}
+\newcommand{\htmlimage}[1]{}
+\newcommand{\htmladdtonavigation}[1]{}
+
+%  Starlink cross-references and labels.
+\newcommand{\xref}[3]{#1}
+\newcommand{\xlabel}[1]{}
+
+%  LaTeX2HTML symbol.
+\newcommand{\latextohtml}{{\bf LaTeX}{2}{\tt{HTML}}}
+
+%  Define command to re-centre underscore for Latex and leave as normal
+%  for HTML (severe problems with \_ in tabbing environments and \_\_
+%  generally otherwise).
+\newcommand{\latex}[1]{#1}
+\newcommand{\setunderscore}{\renewcommand{\_}{{\tt\symbol{95}}}}
+\latex{\setunderscore}
+
+%  Redefine the \tableofcontents command. This procrastination is necessary
+%  to stop the automatic creation of a second table of contents page
+%  by latex2html.
+\newcommand{\latexonlytoc}[0]{\tableofcontents}
+
+% -----------------------------------------------------------------------------
+%  Debugging.
+%  =========
+%  Remove % on the following to debug links in the HTML version using Latex.
+
+% \newcommand{\hotlink}[2]{\fbox{\begin{tabular}[t]{@{}c@{}}#1\\\hline{\footnotesize #2}\end{tabular}}}
+% \renewcommand{\htmladdnormallinkfoot}[2]{\hotlink{#1}{#2}}
+% \renewcommand{\htmladdnormallink}[2]{\hotlink{#1}{#2}}
+% \renewcommand{\hyperref}[4]{\hotlink{#1}{\S\ref{#4}}}
+% \renewcommand{\htmlref}[2]{\hotlink{#1}{\S\ref{#2}}}
+% \renewcommand{\xref}[3]{\hotlink{#1}{#2 -- #3}}
+% -----------------------------------------------------------------------------
+% ? Document specific \newcommand or \newenvironment commands.
+%------------------------------------------------------------------------------
+
+\newcommand{\nroutines} {188}
+\newcommand{\radec}     {$[\,\alpha,\delta\,]$}
+\newcommand{\hadec}     {$[\,h,\delta\,]$}
+\newcommand{\xieta}     {$[\,\xi,\eta\,]$}
+\newcommand{\azel}      {$[\,Az,El~]$}
+\newcommand{\ecl}       {$[\,\lambda,\beta~]$}
+\newcommand{\gal}       {$[\,l^{I\!I},b^{I\!I}\,]$}
+\newcommand{\xy}        {$[\,x,y\,]$}
+\newcommand{\xyz}       {$[\,x,y,z\,]$}
+\newcommand{\xyzd}      {$[\,\dot{x},\dot{y},\dot{z}\,]$}
+\newcommand{\xyzxyzd}   {$[\,x,y,z,\dot{x},\dot{y},\dot{z}\,]$}
+\newcommand{\degree}[2] {$#1^{\circ}
+                        \hspace{-0.37em}.\hspace{0.02em}#2$}
+
+\newcommand{\arcsec}[2] {\arcseci{#1}$\hspace{-0.4em}.#2$}
+\begin{htmlonly}
+   \newcommand{\arcsec}[2] {
+      {$#1\hspace{-0.05em}^{'\hspace{-0.1em}'}\hspace{-0.4em}.#2$}
+   }
+\end{htmlonly}
+
+\newcommand{\arcseci}[1] {$#1\hspace{-0.05em}$\raisebox{-0.5ex}
+                         {$^{'\hspace{-0.1em}'}$}}
+\begin{htmlonly}
+   \renewcommand{\arcseci}[1] {$#1\hspace{-0.05em}^{'\hspace{-0.1em}'}$}
+\end{htmlonly}
+
+\newcommand{\dms}[4]    {$#1^{\circ}\,#2\raisebox{-0.5ex}
+                        {$^{'}$}\,$\arcsec{#3}{#4}}
+\begin{htmlonly}
+   \renewcommand{\dms}[4]{$#1^{\circ}\,#2^{'}\,#3^{''}.#4$}
+\end{htmlonly}
+
+\newcommand{\tseci}[1]   {$#1$\mbox{$^{\rm s}$}}
+\newcommand{\tsec}[2]    {\tseci{#1}$\hspace{-0.3em}.#2$}
+\begin{htmlonly}
+   \renewcommand{\tsec}[2] {$#1^{\rm s}\hspace{-0.3em}.#2$}
+\end{htmlonly}
+
+\newcommand{\hms}[4]    {$#1^{\rm h}\,#2^{\rm m}\,$\tsec{#3}{#4}}
+\begin{htmlonly}
+   \renewcommand{\hms}[4] {$#1^{h}\,#2^{m}\,#3^{s}.#4$}
+\end{htmlonly}
+
+\newcommand{\callhead}[1]{\goodbreak\vspace{\bigskipamount}{\large\bf{#1}}}
+\newenvironment{callset}{\begin{list}{}{\setlength{\leftmargin}{2cm}
+                             \setlength{\parsep}{\smallskipamount}}}{\end{list}}
+\newcommand{\subp}[1]{\item\hspace{-1cm}#1\\}
+\newcommand{\subq}[2]{\item\hspace{-1cm}#1\\\hspace*{-1cm}#2\\}
+\newcommand{\name}[1]{\mbox{#1}}
+\newcommand{\fortvar}[1]{\mbox{\em #1}}
+
+\newcommand{\routine}[3]
+{\hbadness=10000
+  \vbox
+  {
+    \rule{\textwidth}{0.3mm}\\
+    {\Large {\bf #1} \hfill #2 \hfill {\bf #1}}\\
+    \setlength{\oldspacing}{\topsep}
+    \setlength{\topsep}{0.3ex}
+    \begin{description}
+      #3
+    \end{description}
+    \setlength{\topsep}{\oldspacing}
+  }
+}
+
+%  Replacement for HTML version (each routine in own subsection).
+\begin{htmlonly}
+   \renewcommand{\routine}[3]
+   {
+      \subsection{#1\xlabel{#1} - #2\label{#1}}
+       \begin{description}
+         #3
+       \end{description}
+   }
+\end{htmlonly}
+
+\newcommand{\action}[1]
+{\item[ACTION]: #1}
+
+\begin{htmlonly}
+   \newcommand{\action}[1]
+   {\item[ACTION:] #1}
+\end{htmlonly}
+
+\newcommand{\call}[1]
+{\item[CALL]: \hspace{0.4em}{\tt #1}}
+\newlength{\oldspacing}
+
+\begin{htmlonly}
+   \renewcommand{\call}[1]
+   {
+    \item[CALL:] {\tt #1}
+   }
+\end{htmlonly}
+
+\newcommand{\args}[2]
+{
+  \goodbreak
+  \setlength{\oldspacing}{\topsep}
+  \setlength{\topsep}{0.3ex}
+  \begin{description}
+  \item[#1]:\\[1.5ex]
+    \begin{tabular}{p{7em}p{6em}p{22em}}
+      #2
+    \end{tabular}
+  \end{description}
+  \setlength{\topsep}{\oldspacing}
+}
+\begin{htmlonly}
+   \renewcommand{\args}[2]
+   {
+     \begin{description}
+        \item[#1:]\\
+        \begin{tabular}{p{7em}p{6em}l}
+           #2
+        \end{tabular}
+     \end{description}
+   }
+\end{htmlonly}
+
+\newcommand{\spec}[3]
+{
+  {\em {#1}} & {\bf \mbox{#2}} & {#3}
+}
+
+\newcommand{\specel}[2]
+{
+  \multicolumn{1}{c}{#1} & {} & {#2}
+}
+
+\newcommand{\anote}[1]
+{
+  \goodbreak
+  \setlength{\oldspacing}{\topsep}
+  \setlength{\topsep}{0.3ex}
+  \begin{description}
+    \item[NOTE]:
+        #1
+  \end{description}
+  \setlength{\topsep}{\oldspacing}
+}
+
+\begin{htmlonly}
+   \renewcommand{\anote}[1]
+   {
+      \begin{description}
+      \item[NOTE:]
+          #1
+      \end{description}
+   }
+\end{htmlonly}
+
+\newcommand{\notes}[1]
+{
+  \goodbreak
+  \setlength{\oldspacing}{\topsep}
+  \setlength{\topsep}{0.3ex}
+  \begin{description}
+    \item[NOTES]:
+        #1
+  \end{description}
+  \setlength{\topsep}{\oldspacing}
+}
+
+\begin{htmlonly}
+   \renewcommand{\notes}[1]
+   {
+      \begin{description}
+         \item[NOTES:]
+            #1
+      \end{description}
+   }
+\end{htmlonly}
+
+\newcommand{\aref}[1]
+{
+  \goodbreak
+  \setlength{\oldspacing}{\topsep}
+  \setlength{\topsep}{0.3ex}
+  \begin{description}
+    \item[REFERENCE]:
+        #1
+  \end{description}
+  \setlength{\topsep}{\oldspacing}
+}
+
+\begin{htmlonly}
+   \newcommand{\aref}[1]
+   {
+     \begin{description}
+       \item[REFERENCE:]
+           #1
+     \end{description}
+   }
+\end{htmlonly}
+
+\newcommand{\refs}[1]
+{
+  \goodbreak
+  \setlength{\oldspacing}{\topsep}
+  \setlength{\topsep}{0.3ex}
+  \begin{description}
+    \item[REFERENCES]:
+        #1
+  \end{description}
+  \setlength{\topsep}{\oldspacing}
+}
+\begin{htmlonly}
+   \newcommand{\refs}[1]
+   {
+     \begin{description}
+       \item[REFERENCES:]
+           #1
+     \end{description}
+   }
+\end{htmlonly}
+
+\newcommand{\exampleitem}{\item [EXAMPLE]:}
+\begin{htmlonly}
+   \renewcommand{\exampleitem}{\item [EXAMPLE:]}
+\end{htmlonly}
+
+%------------------------------------------------------------------------------
+% ? End of document specific commands
+% -----------------------------------------------------------------------------
+%  Title Page.
+%  ===========
+\renewcommand{\thepage}{\roman{page}}
+\begin{document}
+\thispagestyle{empty}
+
+%  Latex document header.
+%  ======================
+\begin{latexonly}
+   CCLRC / {\sc Rutherford Appleton Laboratory} \hfill {\bf \stardocname}\\
+   {\large Particle Physics \& Astronomy Research Council}\\
+   {\large Starlink Project\\}
+   {\large \stardoccategory\ \stardocnumber}
+   \begin{flushright}
+   \stardocauthors\\
+   \stardocdate
+   \end{flushright}
+   \vspace{-4mm}
+   \rule{\textwidth}{0.5mm}
+   \vspace{5mm}
+   \begin{center}
+   {\Huge\bf  \stardoctitle \\ [2.5ex]}
+   {\LARGE\bf \stardocversion \\ [4ex]}
+   {\Huge\bf  \stardocmanual}
+   \end{center}
+   \vspace{5mm}
+
+% ? Heading for abstract if used.
+   \vspace{10mm}
+   \begin{center}
+      {\Large\bf Abstract}
+   \end{center}
+% ? End of heading for abstract.
+\end{latexonly}
+
+%  HTML documentation header.
+%  ==========================
+\begin{htmlonly}
+   \xlabel{}
+   \begin{rawhtml} <H1> \end{rawhtml}
+      \stardoctitle\\
+      \stardocversion\\
+      \stardocmanual
+   \begin{rawhtml} </H1> \end{rawhtml}
+
+% ? Add picture here if required.
+% ? End of picture
+
+   \begin{rawhtml} <P> <I> \end{rawhtml}
+   \stardoccategory \stardocnumber \\
+   \stardocauthors \\
+   \stardocdate
+   \begin{rawhtml} </I> </P> <H3> \end{rawhtml}
+      \htmladdnormallink{CCLRC}{http://www.cclrc.ac.uk} /
+      \htmladdnormallink{Rutherford Appleton Laboratory}
+                        {http://www.cclrc.ac.uk} \\
+      \htmladdnormallink{Particle Physics \& Astronomy Research Council}
+                        {http://www.pparc.ac.uk} \\
+   \begin{rawhtml} </H3> <H2> \end{rawhtml}
+      \htmladdnormallink{Starlink Project}{http://star-www.rl.ac.uk/}
+   \begin{rawhtml} </H2> \end{rawhtml}
+   \htmladdnormallink{\htmladdimg{source.gif} Retrieve hardcopy}
+      {http://star-www.rl.ac.uk/cgi-bin/hcserver?\stardocsource}\\
+
+%  HTML document table of contents.
+%  ================================
+%  Add table of contents header and a navigation button to return to this
+%  point in the document (this should always go before the abstract \section).
+  \label{stardoccontents}
+  \begin{rawhtml}
+    <HR>
+    <H2>Contents</H2>
+  \end{rawhtml}
+  \renewcommand{\latexonlytoc}[0]{}
+  \htmladdtonavigation{\htmlref{\htmladdimg{contents_motif.gif}}
+        {stardoccontents}}
+
+% ? New section for abstract if used.
+  \section{\xlabel{abstract}Abstract}
+% ? End of new section for abstract
+\end{htmlonly}
+
+% -----------------------------------------------------------------------------
+% ? Document Abstract. (if used)
+%   ==================
+SLALIB is a library used by writers of positional-astronomy applications.
+Most of the \nroutines\ routines are concerned with astronomical position
+and time,
+but a number have wider trigonometrical, numerical or general applications.
+% ? End of document abstract
+% -----------------------------------------------------------------------------
+% ? Latex document Table of Contents (if used).
+%  ===========================================
+ \newpage
+ \begin{latexonly}
+   \setlength{\parskip}{0mm}
+   \latexonlytoc
+   \setlength{\parskip}{\medskipamount}
+   \markright{\stardocname}
+ \end{latexonly}
+% ? End of Latex document table of contents
+% -----------------------------------------------------------------------------
+\newpage
+\renewcommand{\thepage}{\arabic{page}}
+\setcounter{page}{1}
+
+\section{INTRODUCTION}
+\subsection{Purpose}
+SLALIB\footnote{The name isn't an acronym;
+it just stands for ``Subprogram Library~A''.}
+is a library of routines
+intended to make accurate and reliable positional-astronomy
+applications easier to write.
+Most SLALIB routines are concerned with astronomical position and time, but a
+number have wider trigonometrical, numerical or general applications.
+The applications ASTROM, COCO, RV and TPOINT
+all make extensive use of the SLALIB
+routines, as do a number of telescope control systems around the world.
+The SLALIB versions currently in service are written in
+Fortran~77 and run on VAX/VMS, several Unix platforms and PC.
+A proprietary ANSI~C version is also available from the author;  it is
+functionally similar to the Fortran version upon which the present
+document concentrates.
+
+\subsection{Example Application}
+Here is a simple example of an application program written
+using SLALIB calls:
+
+\begin{verbatim}
+         PROGRAM FK4FK5
+   *
+   *  Read a B1950 position from I/O unit 5 and reply on I/O unit 6
+   *  with the J2000 equivalent.  Enter a period to quit.
+   *
+         IMPLICIT NONE
+         CHARACTER C*80,S
+         INTEGER I,J,IHMSF(4),IDMSF(4)
+         DOUBLE PRECISION R4,D4,R5,D5
+         LOGICAL BAD
+
+   *   Loop until a period is entered
+         C = ' '
+         DO WHILE (C(:1).NE.'.')
+
+   *     Read h m s d ' "
+            READ (5,'(A)') C
+            IF (C(:1).NE.'.') THEN
+               BAD = .TRUE.
+
+   *        Decode the RA
+               I = 1
+               CALL sla_DAFIN(C,I,R4,J)
+               IF (J.EQ.0) THEN
+                  R4 = 15D0*R4
+
+   *           Decode the Dec
+                  CALL sla_DAFIN(C,I,D4,J)
+                  IF (J.EQ.0) THEN
+
+   *              FK4 to FK5
+                     CALL sla_FK45Z(R4,D4,1950D0,R5,D5)
+
+   *              Format and output the result
+                     CALL sla_DR2TF(2,R5,S,IHMSF)
+                     CALL sla_DR2AF(1,D5,S,IDMSF)
+                     WRITE (6,
+        :       '(1X,I2.2,2I3.2,''.'',I2.2,2X,A,I2.2,2I3.2,''.'',I1)')
+        :                                                     IHMSF,S,IDMSF
+                     BAD = .FALSE.
+                  END IF
+               END IF
+               IF (BAD) WRITE (6,'(1X,''?'')')
+            END IF
+         END DO
+
+         END
+\end{verbatim}
+In this example, SLALIB not only provides the complicated FK4 to
+FK5 transformation but also
+simplifies the tedious and error-prone tasks
+of decoding and formatting angles
+expressed as hours, minutes {\it etc}.  The
+example incorporates range checking, and avoids the
+notorious ``minus zero'' problem (an often-perpetrated bug where
+declinations between $0^{\circ}$ and $-1^{\circ}$ lose their minus
+sign).
+With a little extra elaboration and a few more calls to SLALIB,
+defaulting can be provided (enabling unused fields to
+be replaced with commas to avoid retyping), proper motions
+can be handled, different epochs can be specified, and
+so on.  See the program COCO (SUN/56) for further ideas.
+
+\subsection{Scope}
+SLALIB contains \nroutines\ routines covering the following topics:
+\begin{itemize}
+\item String Decoding,
+      Sexagesimal Conversions
+\item Angles, Vectors \& Rotation Matrices
+\item Calendars,
+      Time Scales
+\item Precession \& Nutation
+\item Proper Motion
+\item FK4/FK5/Hipparcos,
+      Elliptic Aberration
+\item Geocentric Coordinates
+\item Apparent \& Observed Place
+\item Azimuth \& Elevation
+\item Refraction \& Air Mass
+\item Ecliptic,
+      Galactic,
+      Supergalactic Coordinates
+\item Ephemerides
+\item Astrometry
+\item Numerical Methods
+\end{itemize}
+
+\subsection{Objectives}
+SLALIB was designed to give application programmers
+a basic set of positional-astronomy tools which were
+accurate and easy to use.  To this end, the library is:
+\begin{itemize}
+\item Readily available, including source code and documentation.
+\item Supported and maintained.
+\item Portable -- coded in standard languages and available for
+multiple computers and operating systems.
+\item Thoroughly commented, both for maintainability and to
+assist those wishing to cannibalize the code.
+\item Stable.
+\item Trustworthy -- some care has gone into
+testing SLALIB, both by comparison with published data and
+by checks for internal consistency.
+\item Rigorous -- corners are not cut,
+even where the practical consequences would, as a rule, be
+negligible.
+\item Comprehensive, without including too many esoteric features
+required only by specialists.
+\item Practical -- almost all the routines have been written to
+satisfy real needs encountered during the development of
+real-life applications.
+\item Environment-independent -- the package is
+completely free of pauses, stops, I/O {\it etc}.
+\item Self-contained -- SLALIB calls no other libraries.
+\end{itemize}
+A few {\it caveats}:
+\begin{itemize}
+\item SLALIB does not pretend to be canonical.  It is in essence
+an anthology, and the adopted algorithms are liable
+to change as more up-to-date ones become available.
+\item The functions aren't orthogonal -- there are several
+cases of different
+routines doing similar things, and many examples where
+sequences of SLALIB calls have simply been packaged, all to
+make applications less trouble to write.
+\item There are omissions -- for example there are no
+routines for calculating physical ephemerides of
+Solar-System bodies.
+\item SLALIB is not homogeneous, though important subsets
+(for example the FK4/FK5 routines) are.
+\item The library is not foolproof.  You have to know what
+you are trying to do ({\it e.g.}\ by reading textbooks on positional
+astronomy), and it is the caller's responsibility to supply
+sensible arguments (although enough internal validation is done to
+avoid arithmetic errors).
+\item Without being written in a wasteful
+manner, SLALIB is nonetheless optimized for maintainability
+rather than speed.  In addition, there are many places
+where considerable simplification would be possible if some
+specified amount of accuracy could be sacrificed;  such
+compromises are left to the individual programmer and
+are not allowed to limit SLALIB's value as a source
+of comparison results.
+\end{itemize}
+
+\subsection{Fortran Version}
+The Fortran versions of SLALIB use ANSI Fortran~77 with a few
+commonplace extensions.  Just three out of the \nroutines\ routines require
+platform-specific techniques and accordingly are supplied
+in different forms.
+SLALIB has been implemented on the following platforms:
+VAX/VMS,
+PC (Microsoft Fortran, Linux),
+DECstation (Ultrix),
+DEC Alpha (DEC Unix),
+Sun (SunOS, Solaris),
+Hewlett Packard (HP-UX),
+CONVEX,
+Perkin-Elmer and
+Fujitsu.
+
+\subsection{C Version}
+An ANSI C version of SLALIB is available from the author
+but is not part of the Starlink release.
+The functionality of this (proprietary) C version closely matches
+that of the Starlink Fortran SLALIB, partly for the convenience of
+existing users of the Fortran version, some of whom have in the past
+implemented C ``wrappers''.  The function names
+cannot be the same as the Fortran versions because of potential
+linking problems when
+both forms of the library are present; the C routine which
+is the equivalent of (for example) {\tt SLA\_REFRO} is {\tt slaRefro}.
+The types of arguments follow the Fortran version, except
+that integers are {\tt int} rather than {\tt long} (the one
+exception being
+{\tt slaIntin}, which returns a {\tt long}
+and is supplemented by an additional routine,
+not present in the Fortran SLALIB, called {\tt slaInt2in}, which returns
+an {\tt int}).
+Argument passing is by value
+(except for arrays and strings of course)
+for given arguments and by pointer for returned arguments.
+All the C functions are re-entrant.
+
+The Fortran routines {\tt sla\_GRESID}, {\tt sla\_RANDOM} and
+{\tt sla\_WAIT} have no C counterparts.
+
+Further details of the C version of SLALIB are available
+from the author.  The definitive guide to
+the calling sequences is the file {\tt slalib.h}.
+
+\subsection{Future Versions}
+The homogeneity and ease of use of SLALIB could perhaps be improved
+in the future by turning to object-oriented techniques, in particular
+through the C++ and Java languages.  For example ``celestial
+position'' could be a class and many of the transformations
+could happen automatically.  This requires further study and
+would result in a complete redesign.  Various attempts have been
+made to do this, but none as yet has the author's seal of
+approval.  Furthermore,
+the impact of Fortran~90 has yet to be assessed.  Should compilers
+become widely available, some internal recoding may be worthwhile
+in order to simplify parts of the code.  However, as with C++,
+a redesign of the
+application interfaces will be needed if the capabilities of the
+new language are to be exploited to the full.
+
+\subsection{New Functions}
+In a package like SLALIB it is difficult to know how far to go.  Is it
+enough to provide the primitive operations, or should more
+complicated functions be packaged?  Is it worth encroaching on
+specialist areas, where individual experts have all written their
+own software already?  To what extent should CPU efficiency be
+an issue?  How much support of different numerical precisions is
+required?  And so on.
+
+In practice, almost all the routines in SLALIB are there because they were
+needed for some specific application, and this is likely to remain the
+pattern for any enhancements in the future.
+Suggestions for additional SLALIB routines should be addressed to the
+author.
+
+\subsection{Acknowledgements}
+SLALIB is descended from a package of routines written
+for the AAO 16-bit minicomputers
+in the mid-1970s.  The coming of the VAX
+allowed a much more comprehensive and thorough package
+to be designed for Starlink, especially important
+at a time when the adoption
+of the IAU 1976 resolutions meant that astronomers
+would have to cope with a mixture of reference frames,
+time scales and nomenclature.
+
+Much of the preparatory work on SLALIB was done by
+Althea~Wilkinson of Manchester University.
+During its development,
+Andrew~Murray,
+Catherine~Hohenkerk,
+Andrew~Sinclair,
+Bernard~Yallop
+and
+Brian~Emerson of Her Majesty's Nautical Almanac Office were consulted
+on many occasions; their advice was indispensable.
+I am especially grateful to
+Catherine~Hohenkerk
+for supplying preprints of papers, and test data. A number of
+enhancements to SLALIB were at the suggestion of
+Russell~Owen, University of Washington,
+the late Phil~Hill, St~Andrews University,
+Bill~Vacca, JILA, Boulder and
+Ron~Maddalena, NRAO.
+Mark~Calabretta, CSIRO Radiophysics, Sydney supplied changes to suit Convex.
+I am indebted to Derek~Jones (RGO) for introducing me to the
+``universal variables'' method of calculating orbits.
+
+The first C version of SLALIB was a hand-coded transcription
+of the Starlink Fortran version carried out by
+Steve~Eaton (University of Leeds) in the course of
+MSc work.  This was later
+enhanced by John~Straede (AAO) and Martin~Shepherd (Caltech).
+The current C SLALIB is a complete rewrite by the present author and
+includes a comprehensive validation suite.
+Additional comments on the C version came from Bob~Payne (NRAO) and
+Jeremy~Bailey (AAO).
+
+\section{LINKING}
+
+On Unix systems (Linux, Sun, DEC Alpha {\it etc.}):
+\begin{verse}
+{\tt \%~~f77 progname.o -L/star/lib `sla\_link` -o progname}
+\end{verse}
+(The above assumes that all Starlink directories have been added to
+the {\tt LD\_LIBRARY\_PATH} and {\tt PATH} environment variables
+as described in SUN/202.)
+
+\pagebreak
+
+\section{SUBPROGRAM SPECIFICATIONS}
+%-----------------------------------------------------------------------
+\routine{SLA\_ADDET}{Add E-terms of Aberration}
+{
+ \action{Add the E-terms (elliptic component of annual aberration) to a
+  pre IAU 1976 mean place to conform to the old catalogue convention.}
+ \call{CALL sla\_ADDET (RM, DM, EQ, RC, DC)}
+}
+\args{GIVEN}
+{
+ \spec{RM,DM}{D}{\radec\ without E-terms (radians)} \\
+ \spec{EQ}{D}{Besselian epoch of mean equator and equinox}
+}
+\args{RETURNED}
+{
+ \spec{RC,DC}{D}{\radec\ with E-terms included (radians)}
+}
+\anote{Most star positions from pre-1984 optical catalogues (or
+       obtained by astrometry with respect to such stars) have the
+       E-terms built-in.  If it is necessary to convert a formal mean
+       place (for example a pulsar timing position) to one
+       consistent with such a star catalogue, then the
+       \radec\ should be adjusted using this routine.}
+\aref{{\it Explanatory Supplement to the Astronomical Ephemeris},
+ section 2D, page 48.}
+%-----------------------------------------------------------------------
+\routine{SLA\_AFIN}{Sexagesimal character string to angle}
+{
+ \action{Decode a free-format sexagesimal string (degrees, arcminutes,
+         arcseconds) into a single precision floating point
+         number (radians).}
+ \call{CALL sla\_AFIN (STRING, NSTRT, RESLT, JF)}
+}
+\args{GIVEN}
+{
+ \spec{STRING}{C*(*)}{string containing deg, arcmin, arcsec fields} \\
+ \spec{NSTRT}{I}{pointer to start of decode (beginning of STRING = 1)}
+}
+\args{RETURNED}
+{
+ \spec{NSTRT}{I}{advanced past the decoded angle} \\
+ \spec{RESLT}{R}{angle in radians} \\
+ \spec{JF}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em}   0 = OK} \\
+ \spec{}{}{\hspace{0.7em} $+1$ = default, RESLT unchanged (note 2)} \\
+ \spec{}{}{\hspace{0.7em} $-1$ = bad degrees (note 3)} \\
+ \spec{}{}{\hspace{0.7em} $-2$ = bad arcminutes (note 3)} \\
+ \spec{}{}{\hspace{0.7em} $-3$ = bad arcseconds (note 3)} \\
+}
+\goodbreak
+\setlength{\oldspacing}{\topsep}
+\setlength{\topsep}{0.3ex}
+\begin{description}
+ \exampleitem \\ [1.5ex]
+  \begin{tabular}{p{7em}p{15em}p{12em}}
+   {\it argument} & {\it before} & {\it after} \\ \\
+   STRING & $'$\verb*}-57 17 44.806  12 34 56.7}$'$ & unchanged \\
+   NSTRT & 1 & 16 ({\it i.e.}\ pointing to 12...) \\
+   RESLT & - & $-1.00000$ \\
+   JF & - & 0
+  \end{tabular}
+\end{description}
+A further call to sla\_AFIN, without adjustment of NSTRT, will
+decode the second angle, \dms{12}{34}{56}{7}.
+\setlength{\topsep}{\oldspacing}
+\notes
+{
+ \begin{enumerate}
+  \item The first three ``fields'' in STRING are degrees, arcminutes,
+   arcseconds, separated by spaces or commas.  The degrees field
+   may be signed, but not the others.  The decoding is carried
+   out by the sla\_DFLTIN routine and is free-format.
+  \item Successive fields may be absent, defaulting to zero.  For
+   zero status, the only combinations allowed are degrees alone,
+   degrees and arcminutes, and all three fields present.  If all
+   three fields are omitted, a status of +1 is returned and RESLT is
+   unchanged.  In all other cases RESLT is changed.
+  \item Range checking:
+   \begin{itemize}
+    \item The degrees field is not range checked.  However, it is
+     expected to be integral unless the other two fields are absent.
+    \item The arcminutes field is expected to be 0-59, and integral if
+     the arcseconds field is present.  If the arcseconds field
+     is absent, the arcminutes is expected to be 0-59.9999...
+    \item The arcseconds field is expected to be 0-59.9999...
+    \item Decoding continues even when a check has failed.  Under these
+     circumstances the field takes the supplied value, defaulting to
+     zero, and the result RESLT is computed and returned.
+   \end{itemize}
+   \item Further fields after the three expected ones are not treated as
+    an error.  The pointer NSTRT is left in the correct state for
+    further decoding with the present routine or with sla\_DFLTIN
+    {\it etc}.  See the example, above.
+   \item If STRING contains hours, minutes, seconds instead of
+    degrees {\it etc},
+    or if the required units are turns (or days) instead of radians,
+    the result RESLT should be multiplied as follows: \\ [1.5ex]
+    \begin{tabular}{p{6em}p{5em}p{15em}}
+    {\it for STRING} & {\it to obtain} & {\it multiply RESLT by} \\ \\
+    ${\circ}$~~\raisebox{-0.7ex}{$'$}~~\raisebox{-0.7ex}{$''$}
+     & radians & $1.0$ \\
+    ${\circ}$~~\raisebox{-0.7ex}{$'$}~~\raisebox{-0.7ex}{$''$}
+     & turns & $1/{2 \pi} = 0.1591549430918953358$ \\
+    h m s & radians & $15.0$ \\
+    h m s & days & $15/{2\pi} = 2.3873241463784300365$ \\
+   \end{tabular}
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AIRMAS}{Air Mass}
+{
+ \action{Air mass at given zenith distance (double precision).}
+ \call{D~=~sla\_AIRMAS (ZD)}
+}
+\args{GIVEN}
+{
+ \spec{ZD}{D}{observed zenith distance (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_AIRMAS}{D}{air mass (1 at zenith)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The {\it observed}\/ zenith distance referred to above means
+        ``as affected by refraction''.
+  \item The routine uses Hardie's (1962) polynomial fit to Bemporad's
+        data for the relative air mass, $X$, in units of thickness at the
+        zenith as tabulated by Schoenberg (1929). This is adequate for all
+        normal needs as it is accurate to better than
+        0.1\% up to $X = 6.8$ and better than 1\% up to $X = 10$.
+        Bemporad's tabulated values are unlikely to be trustworthy
+        to such accuracy
+        because of variations in density, pressure and other
+        conditions in the atmosphere from those assumed in his work.
+  \item The sign of the ZD is ignored.
+  \item At zenith distances greater than about $\zeta = 87^{\circ}$ the
+        air mass is held constant to avoid arithmetic overflows.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Hardie, R.H., 1962, in {\it Astronomical Techniques}\,
+        ed. W.A.\ Hiltner, University of Chicago Press, p180.
+  \item Schoenberg, E., 1929, Hdb.\ d.\ Ap.,
+        Berlin, Julius Springer, 2, 268.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_ALTAZ}{Velocities {\it etc.}\ for Altazimuth Mount}
+{
+ \action{Positions, velocities and accelerations for an altazimuth
+         telescope mount that is tracking a star (double precision).}
+ \call{CALL sla\_ALTAZ (\vtop{
+         \hbox{HA, DEC, PHI,}
+         \hbox{AZ, AZD, AZDD, EL, ELD, ELDD, PA, PAD, PADD)}}}
+}
+\args{GIVEN}
+{
+ \spec{HA}{D}{hour angle} \\
+ \spec{DEC}{D}{declination} \\
+ \spec{PHI}{D}{observatory latitude}
+}
+\args{RETURNED}
+{
+ \spec{AZ}{D}{azimuth} \\
+ \spec{AZD}{D}{azimuth velocity} \\
+ \spec{AZDD}{D}{azimuth acceleration} \\
+ \spec{EL}{D}{elevation} \\
+ \spec{ELD}{D}{elevation velocity} \\
+ \spec{ELDD}{D}{elevation acceleration} \\
+ \spec{PA}{D}{parallactic angle} \\
+ \spec{PAD}{D}{parallactic angle velocity} \\
+ \spec{PADD}{D}{parallactic angle acceleration}
+}
+\notes
+{
+ \begin{enumerate}
+  \setlength{\parskip}{\medskipamount}
+  \item Natural units are used throughout.  HA, DEC, PHI, AZ, EL
+        and ZD are in radians.  The velocities and accelerations
+        assume constant declination and constant rate of change of
+        hour angle (as for tracking a star);  the units of AZD, ELD
+        and PAD are radians per radian of HA, while the units of AZDD,
+        ELDD and PADD are radians per radian of HA squared.  To
+        convert into practical degree- and second-based units:
+
+        \begin{center}
+        \begin{tabular}{rlcl}
+                  angles & $\times 360/2\pi$ & $\rightarrow$ & degrees \\
+              velocities & $\times (2\pi/86400) \times (360/2\pi)$
+                                             & $\rightarrow$ & degree/sec \\
+           accelerations & $\times (2\pi/86400)^2 \times (360/2\pi)$
+                                             & $\rightarrow$ & degree/sec/sec \\
+        \end{tabular}
+        \end{center}
+
+        Note that the seconds here are sidereal rather than SI.  One
+        sidereal second is about 0.99727 SI seconds.
+
+        The velocity and acceleration factors assume the sidereal
+        tracking case.  Their respective numerical values are (exactly)
+        1/240 and (approximately) 1/3300236.9.
+  \item Azimuth is returned in the range $[\,0,2\pi\,]$;  north is zero,
+        and east is $+\pi/2$.  Elevation and parallactic angle are
+        returned in the range $\pm\pi$.  Position angle is +ve
+        for a star west of the meridian and is the angle NP--star--zenith.
+  \item The latitude is geodetic as opposed to geocentric.  The
+        hour angle and declination are topocentric.  Refraction and
+        deficiencies in the telescope mounting are ignored.  The
+        purpose of the routine is to give the general form of the
+        quantities.  The details of a real telescope could profoundly
+        change the results, especially close to the zenith.
+  \item No range checking of arguments is carried out.
+  \item In applications which involve many such calculations, rather
+        than calling the present routine it will be more efficient to
+        use inline code, having previously computed fixed terms such
+        as sine and cosine of latitude, and (for tracking a star)
+        sine and cosine of declination.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AMP}{Apparent to Mean}
+{
+ \action{Convert star \radec\ from geocentric apparent to
+         mean place (post IAU 1976).}
+ \call{CALL sla\_AMP (RA, DA, DATE, EQ, RM, DM)}
+}
+\args{GIVEN}
+{
+ \spec{RA,DA}{D}{apparent \radec\ (radians)} \\
+ \spec{DATE}{D}{TDB for apparent place (JD$-$2400000.5)} \\
+ \spec{EQ}{D}{equinox:  Julian epoch of mean place}
+}
+\args{RETURNED}
+{
+ \spec{RM,DM}{D}{mean \radec\ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The distinction between the required TDB and TT is
+        always negligible.  Moreover, for all but the most
+        critical applications UTC is adequate.
+  \item Iterative techniques are used for the aberration and
+        light deflection corrections so that the routines
+        sla\_AMP (or sla\_AMPQK) and sla\_MAP (or sla\_MAPQK) are
+        accurate inverses;  even at the edge of the Sun's disc
+        the discrepancy is only about 1~nanoarcsecond.
+  \item Where multiple apparent places are to be converted to
+        mean places, for a fixed date and equinox, it is more
+        efficient to use the sla\_MAPPA routine to compute the
+        required parameters once, followed by one call to
+        sla\_AMPQK per star.
+  \item For EQ=2000D0,
+        the agreement with ICRS sub-mas, limited by the
+        precession-nutation model (IAU 1976 precession, Shirai \&
+        Fukushima 2001 forced nutation and precession corrections).
+  \item The accuracy is further limited by the routine sla\_EVP, called
+        by sla\_MAPPA, which computes the Earth position and
+        velocity using the methods of Stumpff.  The maximum
+        error is about 0.3~milliarcsecond.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr.Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AMPQK}{Quick Apparent to Mean}
+{
+ \action{Convert star \radec\ from geocentric apparent to mean place
+         (post IAU 1976).  Use of this routine is appropriate when
+         efficiency is important and where many star positions are
+         all to be transformed for one epoch and equinox.  The
+         star-independent parameters can be obtained by calling
+         the sla\_MAPPA routine.}
+ \call{CALL sla\_AMPQK (RA, DA, AMPRMS, RM, DM)}
+}
+\args{GIVEN}
+{
+ \spec{RA,DA}{D}{apparent \radec\ (radians)} \\
+ \spec{AMPRMS}{D(21)}{star-independent mean-to-apparent parameters:} \\
+ \specel   {(1)}     {time interval for proper motion (Julian years)} \\
+ \specel   {(2-4)}   {barycentric position of the Earth (AU)} \\
+ \specel   {(5-7)}   {heliocentric direction of the Earth (unit vector)} \\
+ \specel   {(8)}     {(gravitational radius of
+                      Sun)$\times 2 / $(Sun-Earth distance)} \\
+ \specel   {(9-11)}  {{\bf v}: barycentric Earth velocity in units of c} \\
+ \specel   {(12)}    {$\sqrt{1-\left|\mbox{\bf v}\right|^2}$} \\
+ \specel   {(13-21)} {precession-nutation $3\times3$ matrix}
+}
+\args{RETURNED}
+{
+ \spec{RM,DM}{D}{mean \radec\ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Iterative techniques are used for the aberration and
+        light deflection corrections so that the routines
+        sla\_AMP (or sla\_AMPQK) and sla\_MAP (or sla\_MAPQK) are
+        accurate inverses;  even at the edge of the Sun's disc
+        the discrepancy is only about 1~nanoarcsecond.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr.Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AOP}{Apparent to Observed}
+{
+ \action{Apparent to observed place, for sources distant from
+         the solar system.}
+ \call{CALL sla\_AOP (\vtop{
+         \hbox{RAP, DAP, DATE, DUT, ELONGM, PHIM, HM, XP, YP,}
+         \hbox{TDK, PMB, RH, WL, TLR, AOB, ZOB, HOB, DOB, ROB)}}}
+}
+\args{GIVEN}
+{
+ \spec{RAP,DAP}{D}{geocentric apparent \radec\ (radians)} \\
+ \spec{DATE}{D}{UTC date/time (Modified Julian Date, JD$-$2400000.5)} \\
+ \spec{DUT}{D}{$\Delta$UT:  UT1$-$UTC (UTC seconds)} \\
+ \spec{ELONGM}{D}{observer's mean longitude (radians, east +ve)} \\
+ \spec{PHIM}{D}{observer's mean geodetic latitude (radians)} \\
+ \spec{HM}{D}{observer's height above sea level (metres)} \\
+ \spec{XP,YP}{D}{polar motion \xy\ coordinates (radians)} \\
+ \spec{TDK}{D}{local ambient temperature (K; std=273.15D0)} \\
+ \spec{PMB}{D}{local atmospheric pressure (mb; std=1013.25D0)} \\
+ \spec{RH}{D}{local relative humidity (in the range 0D0\,--\,1D0)} \\
+ \spec{WL}{D}{effective wavelength ($\mu{\rm m}$, {\it e.g.}\ 0.55D0)} \\
+ \spec{TLR}{D}{tropospheric lapse rate (K per metre,
+                                              {\it e.g.}\ 0.0065D0)}
+}
+\args{RETURNED}
+{
+ \spec{AOB}{D}{observed azimuth (radians: N=0, E=$90^{\circ}$)} \\
+ \spec{ZOB}{D}{observed zenith distance (radians)} \\
+ \spec{HOB}{D}{observed Hour Angle (radians)} \\
+ \spec{DOB}{D}{observed $\delta$ (radians)} \\
+ \spec{ROB}{D}{observed $\alpha$ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine returns zenith distance rather than elevation
+        in order to reflect the fact that no allowance is made for
+        depression of the horizon.
+  \item The accuracy of the result is limited by the corrections for
+        refraction.  Providing the meteorological parameters are
+        known accurately and there are no gross local effects, the
+        predicted azimuth and elevation should be within about
+        \arcsec{0}{1} for $\zeta<70^{\circ}$.  Even
+        at a topocentric zenith distance of
+        $90^{\circ}$, the accuracy in elevation should be better than
+        1~arcminute;  useful results are available for a further
+        $3^{\circ}$, beyond which the sla\_REFRO routine returns a
+        fixed value of the refraction.  The complementary
+        routines sla\_AOP (or sla\_AOPQK) and sla\_OAP (or sla\_OAPQK)
+        are self-consistent to better than 1~microarcsecond all over
+        the celestial sphere.
+  \item It is advisable to take great care with units, as even
+        unlikely values of the input parameters are accepted and
+        processed in accordance with the models used.
+  \item {\it Apparent}\/ \radec\ means the geocentric apparent
+        right ascension
+        and declination, which is obtained from a catalogue mean place
+        by allowing for space motion, parallax, the Sun's gravitational
+        lens effect, annual aberration, and precession-nutation.  For
+        star positions in the FK5 system ({\it i.e.}\ J2000), these
+        effects can
+        be applied by means of the sla\_MAP {\it etc.}\ routines.
+        Starting from
+        other mean place systems, additional transformations will be
+        needed;  for example, FK4 ({\it i.e.}\ B1950) mean places would
+        first have to be converted to FK5, which can be done with the
+        sla\_FK425 {\it etc.}\ routines.
+  \item {\it Observed}\/ \azel\ means the position that would be seen by a
+        perfect theodolite located at the observer.  This is obtained
+        from the geocentric apparent \radec\ by allowing for Earth
+        orientation and diurnal aberration, rotating from equator
+        to horizon coordinates, and then adjusting for refraction.
+        The \hadec\ is obtained by rotating back into equatorial
+        coordinates, using the geodetic latitude corrected for polar
+        motion, and is the position that would be seen by a perfect
+        equatorial located at the observer and with its polar axis
+        aligned to the Earth's axis of rotation ({\it n.b.}\ not to the
+        refracted pole).  Finally, the $\alpha$ is obtained by subtracting
+        the {\it h}\/ from the local apparent ST.
+  \item To predict the required setting of a real telescope, the
+        observed place produced by this routine would have to be
+        adjusted for the tilt of the azimuth or polar axis of the
+        mounting (with appropriate corrections for mount flexures),
+        for non-perpendicularity between the mounting axes, for the
+        position of the rotator axis and the pointing axis relative
+        to it, for tube flexure, for gear and encoder errors, and
+        finally for encoder zero points.  Some telescopes would, of
+        course, exhibit other properties which would need to be
+        accounted for at the appropriate point in the sequence.
+  \item This routine takes time to execute, due mainly to the
+        rigorous integration used to evaluate the refraction.
+        For processing multiple stars for one location and time,
+        call sla\_AOPPA once followed by one call per star to sla\_AOPQK.
+        Where a range of times within a limited period of a few hours
+        is involved, and the highest precision is not required, call
+        sla\_AOPPA once, followed by a call to sla\_AOPPAT each time the
+        time changes, followed by one call per star to sla\_AOPQK.
+  \item The DATE argument is UTC expressed as an MJD.  This is,
+        strictly speaking, wrong, because of leap seconds.  However,
+        as long as the $\Delta$UT and the UTC are consistent there
+        are no difficulties, except during a leap second.  In this
+        case, the start of the 61st second of the final minute should
+        begin a new MJD day and the old pre-leap $\Delta$UT should
+        continue to be used.  As the 61st second completes, the MJD
+        should revert to the start of the day as, simultaneously,
+        the $\Delta$UT changes by one second to its post-leap new value.
+  \item The $\Delta$UT (UT1$-$UTC) is tabulated in IERS circulars and
+        elsewhere.  It increases by exactly one second at the end of
+        each UTC leap second, introduced in order to keep $\Delta$UT
+        within $\pm$\tsec{0}{9}.
+  \item IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.  The
+        longitude required by the present routine is {\bf east-positive},
+        in accordance with geographical convention (and right-handed).
+        In particular, note that the longitudes returned by the
+        sla\_OBS routine are west-positive (as in the {\it Astronomical
+        Almanac}\/ before 1984) and must be reversed in sign before use
+        in the present routine.
+  \item The polar coordinates XP,YP can be obtained from IERS
+        circulars and equivalent publications.  The
+        maximum amplitude is about \arcsec{0}{3}.  If XP,YP values
+        are unavailable, use XP=YP=0D0.  See page B60 of the 1988
+        {\it Astronomical Almanac}\/ for a definition of the two angles.
+  \item The height above sea level of the observing station, HM,
+        can be obtained from the {\it Astronomical Almanac}\/ (Section J
+        in the 1988 edition), or via the routine sla\_OBS.  If P,
+        the pressure in millibars, is available, an adequate
+        estimate of HM can be obtained from the following expression:
+        \begin{quote}
+         {\tt HM=-29.3D0*TSL*LOG(P/1013.25D0)}
+        \end{quote}
+        where TSL is the approximate sea-level air temperature in K
+        (see {\it Astrophysical Quantities}, C.W.Allen, 3rd~edition,
+        \S 52).  Similarly, if the pressure P is not known,
+        it can be estimated from the height of the observing
+        station, HM as follows:
+        \begin{quote}
+         {\tt P=1013.25D0*EXP(-HM/(29.3D0*TSL))}
+        \end{quote}
+        Note, however, that the refraction is nearly proportional to the
+        pressure and that an accurate P value is important for
+        precise work.
+  \item The azimuths {\it etc.}\ used by the present routine are with
+        respect to the celestial pole.  Corrections to the terrestrial pole
+        can be computed using sla\_POLMO.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AOPPA}{Appt-to-Obs Parameters}
+{
+ \action{Pre-compute the set of apparent to observed place parameters
+         required by the ``quick'' routines sla\_AOPQK and sla\_OAPQK.}
+ \call{CALL sla\_AOPPA (\vtop{
+          \hbox{DATE, DUT, ELONGM, PHIM, HM, XP, YP,}
+          \hbox{TDK, PMB, RH, WL, TLR, AOPRMS)}}}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{UTC date/time (Modified Julian Date, JD$-$2400000.5)} \\
+ \spec{DUT}{D}{$\Delta$UT:  UT1$-$UTC (UTC seconds)} \\
+ \spec{ELONGM}{D}{observer's mean longitude (radians, east +ve)} \\
+ \spec{PHIM}{D}{observer's mean geodetic latitude (radians)} \\
+ \spec{HM}{D}{observer's height above sea level (metres)} \\
+ \spec{XP,YP}{D}{polar motion \xy\ coordinates (radians)} \\
+ \spec{TDK}{D}{local ambient temperature (K; std=273.15D0)} \\
+ \spec{PMB}{D}{local atmospheric pressure (mb; std=1013.25D0)} \\
+ \spec{RH}{D}{local relative humidity (in the range 0D0\,--\,1D0)} \\
+ \spec{WL}{D}{effective wavelength ($\mu{\rm m}$, {\it e.g.}\ 0.55D0)} \\
+ \spec{TLR}{D}{tropospheric lapse rate (K per metre,
+                                              {\it e.g.}\ 0.0065D0)}
+}
+\args{RETURNED}
+{
+ \spec{AOPRMS}{D(14)}{star-independent apparent-to-observed parameters:} \\
+ \specel   {(1)}     {geodetic latitude (radians)} \\
+ \specel   {(2,3)}   {sine and cosine of geodetic latitude} \\
+ \specel   {(4)}     {magnitude of diurnal aberration vector} \\
+ \specel   {(5)}     {height (HM)} \\
+ \specel   {(6)}     {ambient temperature (TDK)} \\
+ \specel   {(7)}     {pressure (PMB)} \\
+ \specel   {(8)}     {relative humidity (RH)} \\
+ \specel   {(9)}     {wavelength (WL)} \\
+ \specel   {(10)}    {lapse rate (TLR)} \\
+ \specel   {(11,12)} {refraction constants A and B (radians)} \\
+ \specel   {(13)}    {longitude + eqn of equinoxes +
+                       ``sidereal $\Delta$UT'' (radians)} \\
+ \specel   {(14)}    {local apparent sidereal time (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item It is advisable to take great care with units, as even
+        unlikely values of the input parameters are accepted and
+        processed in accordance with the models used.
+  \item The DATE argument is UTC expressed as an MJD.  This is,
+        strictly speaking, wrong, because of leap seconds.  However,
+        as long as the $\Delta$UT and the UTC are consistent there
+        are no difficulties, except during a leap second.  In this
+        case, the start of the 61st second of the final minute should
+        begin a new MJD day and the old pre-leap $\Delta$UT should
+        continue to be used.  As the 61st second completes, the MJD
+        should revert to the start of the day as, simultaneously,
+        the $\Delta$UT changes by one second to its post-leap new value.
+  \item The $\Delta$UT (UT1$-$UTC) is tabulated in IERS circulars and
+        elsewhere.  It increases by exactly one second at the end of
+        each UTC leap second, introduced in order to keep $\Delta$UT
+        within $\pm$\tsec{0}{9}.  The ``sidereal $\Delta$UT'' which forms
+        part of AOPRMS(13) is the same quantity, but converted from solar
+        to sidereal seconds and expressed in radians.
+  \item IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.  The
+        longitude required by the present routine is {\bf east-positive},
+        in accordance with geographical convention (and right-handed).
+        In particular, note that the longitudes returned by the
+        sla\_OBS routine are west-positive (as in the {\it Astronomical
+        Almanac}\/ before 1984) and must be reversed in sign before use in
+        the present routine.
+  \item The polar coordinates XP,YP can be obtained from IERS
+        circulars and equivalent publications.  The
+        maximum amplitude is about \arcsec{0}{3}.  If XP,YP values
+        are unavailable, use XP=YP=0D0.  See page B60 of the 1988
+        {\it Astronomical Almanac}\/ for a definition of the two angles.
+  \item The height above sea level of the observing station, HM,
+        can be obtained from the {\it Astronomical Almanac}\/ (Section J
+        in the 1988 edition), or via the routine sla\_OBS.  If P,
+        the pressure in millibars, is available, an adequate
+        estimate of HM can be obtained from the following expression:
+        \begin{quote}
+         {\tt HM=-29.3D0*TSL*LOG(P/1013.25D0)}
+        \end{quote}
+        where TSL is the approximate sea-level air temperature in K
+        (see {\it Astrophysical Quantities}, C.W.Allen, 3rd~edition,
+        \S 52).  Similarly, if the pressure P is not known,
+        it can be estimated from the height of the observing
+        station, HM as follows:
+        \begin{quote}
+         {\tt P=1013.25D0*EXP(-HM/(29.3D0*TSL))}
+        \end{quote}
+        Note, however, that the refraction is nearly proportional to the
+        pressure and that an accurate P value is important for
+        precise work.
+  \item Repeated, computationally-expensive, calls to sla\_AOPPA for
+        times that are very close together can be avoided by calling
+        sla\_AOPPA just once and then using sla\_AOPPAT for the subsequent
+        times.  Fresh calls to sla\_AOPPA will be needed only when changes
+        in the precession have grown to unacceptable levels or when
+        anything affecting the refraction has changed.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AOPPAT}{Update Appt-to-Obs Parameters}
+{
+ \action{Recompute the sidereal time in the apparent to observed place
+         star-independent parameter block.}
+ \call{CALL sla\_AOPPAT (DATE, AOPRMS)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{UTC date/time (Modified Julian Date, JD$-$2400000.5)} \\
+ \spec{AOPRMS}{D(14)}{star-independent apparent-to-observed parameters:} \\
+ \specel{(1-12)}{not required} \\
+ \specel{(13)}{longitude + eqn of equinoxes +
+               ``sidereal $\Delta$UT'' (radians)} \\
+ \specel{(14)}{not required}
+}
+\args{RETURNED}
+{
+ \spec{AOPRMS}{D(14)}{star-independent apparent-to-observed parameters:} \\
+ \specel{(1-13)}{not changed} \\
+ \specel{(14)}{local apparent sidereal time (radians)}
+}
+\anote{For more information, see sla\_AOPPA.}
+%-----------------------------------------------------------------------
+\routine{SLA\_AOPQK}{Quick Appt-to-Observed}
+{
+ \action{Quick apparent to observed place (but see Note~8, below).}
+ \call{CALL sla\_AOPQK (RAP, DAP, AOPRMS, AOB, ZOB, HOB, DOB, ROB)}
+}
+\args{GIVEN}
+{
+ \spec{RAP,DAP}{D}{geocentric apparent \radec\ (radians)} \\
+ \spec{AOPRMS}{D(14)}{star-independent apparent-to-observed parameters:} \\
+ \specel{(1)}{geodetic latitude (radians)} \\
+ \specel{(2,3)}{sine and cosine of geodetic latitude} \\
+ \specel{(4)}{magnitude of diurnal aberration vector} \\
+ \specel{(5)}{height (metres)} \\
+ \specel{(6)}{ambient temperature (K)} \\
+ \specel{(7)}{pressure (mb)} \\
+ \specel{(8)}{relative humidity (0\,--\,1)} \\
+ \specel{(9)}{wavelength ($\mu{\rm m}$)} \\
+ \specel{(10)}{lapse rate (K per metre)} \\
+ \specel{(11,12)}{refraction constants A and B (radians)} \\
+ \specel{(13)}{longitude + eqn of equinoxes +
+               ``sidereal $\Delta$UT'' (radians)} \\
+ \specel{(14)}{local apparent sidereal time (radians)}
+}
+\args{RETURNED}
+{
+ \spec{AOB}{D}{observed azimuth (radians: N=0, E=$90^{\circ}$)} \\
+ \spec{ZOB}{D}{observed zenith distance (radians)} \\
+ \spec{HOB}{D}{observed Hour Angle (radians)} \\
+ \spec{DOB}{D}{observed Declination (radians)} \\
+ \spec{ROB}{D}{observed Right Ascension (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine returns zenith distance rather than elevation
+        in order to reflect the fact that no allowance is made for
+        depression of the horizon.
+  \item The accuracy of the result is limited by the corrections for
+        refraction.  Providing the meteorological parameters are
+        known accurately and there are no gross local effects, the
+        predicted azimuth and elevation should be within about
+        \arcsec{0}{1} for $\zeta<70^{\circ}$.  Even
+        at a topocentric zenith distance of
+        $90^{\circ}$, the accuracy in elevation should be better than
+        1~arcminute;  useful results are available for a further
+        $3^{\circ}$, beyond which the sla\_REFRO routine returns a
+        fixed value of the refraction.  The complementary
+        routines sla\_AOP (or sla\_AOPQK) and sla\_OAP (or sla\_OAPQK)
+        are self-consistent to better than 1~microarcsecond all over
+        the celestial sphere.
+  \item It is advisable to take great care with units, as even
+        unlikely values of the input parameters are accepted and
+        processed in accordance with the models used.
+  \item {\it Apparent}\/ \radec\ means the geocentric apparent right ascension
+        and declination, which is obtained from a catalogue mean place
+        by allowing for space motion, parallax, the Sun's gravitational
+        lens effect, annual aberration and precession-nutation.  For
+        star positions in the FK5 system ({\it i.e.}\ J2000), these effects can
+        be applied by means of the sla\_MAP {\it etc.}\ routines.  Starting from
+        other mean place systems, additional transformations will be
+        needed;  for example, FK4 ({\it i.e.}\ B1950) mean places would first
+        have to be converted to FK5, which can be done with the
+        sla\_FK425 {\it etc.}\ routines.
+  \item {\it Observed}\/ \azel\ means the position that would be seen by a
+        perfect theodolite located at the observer.  This is obtained
+        from the geocentric apparent \radec\ by allowing for Earth
+        orientation and diurnal aberration, rotating from equator
+        to horizon coordinates, and then adjusting for refraction.
+        The \hadec\ is obtained by rotating back into equatorial
+        coordinates, using the geodetic latitude corrected for polar
+        motion, and is the position that would be seen by a perfect
+        equatorial located at the observer and with its polar axis
+        aligned to the Earth's axis of rotation ({\it n.b.}\ not to the
+        refracted pole).  Finally, the $\alpha$ is obtained by subtracting
+        the {\it h}\/ from the local apparent ST.
+  \item To predict the required setting of a real telescope, the
+        observed place produced by this routine would have to be
+        adjusted for the tilt of the azimuth or polar axis of the
+        mounting (with appropriate corrections for mount flexures),
+        for non-perpendicularity between the mounting axes, for the
+        position of the rotator axis and the pointing axis relative
+        to it, for tube flexure, for gear and encoder errors, and
+        finally for encoder zero points.  Some telescopes would, of
+        course, exhibit other properties which would need to be
+        accounted for at the appropriate point in the sequence.
+  \item The star-independent apparent-to-observed-place parameters
+        in AOPRMS may be computed by means of the sla\_AOPPA routine.
+        If nothing has changed significantly except the time, the
+        sla\_AOPPAT routine may be used to perform the requisite
+        partial recomputation of AOPRMS.
+  \item At zenith distances beyond about $76^\circ$, the need for
+        special care with the corrections for refraction causes a
+        marked increase in execution time.  Moreover, the effect
+        gets worse with increasing zenith distance.  Adroit
+        programming in the calling application may allow the
+        problem to be reduced.  Prepare an alternative AOPRMS array,
+        computed for zero air-pressure;  this will disable the
+        refraction corrections and cause rapid execution.  Using
+        this AOPRMS array, a preliminary call to the present routine
+        will, depending on the application, produce a rough position
+        which may be enough to establish whether the full, slow
+        calculation (using the real AOPRMS array) is worthwhile.
+        For example, there would be no need for the full calculation
+        if the preliminary call had already established that the
+        source was well below the elevation limits for a particular
+        telescope.
+  \item The azimuths {\it etc.}\ used by the present routine are with
+        respect to the celestial pole.  Corrections to the terrestrial pole
+        can be computed using sla\_POLMO.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_ATMDSP}{Atmospheric Dispersion}
+{
+ \action{Apply atmospheric-dispersion adjustments to refraction coefficients.}
+ \call{CALL sla\_ATMDSP (TDK, PMB, RH, WL1, A1, B1, WL2, A2, B2)}
+}
+\args{GIVEN}
+{
+ \spec{TDK}{D}{ambient temperature at the observer (K)} \\
+ \spec{PMB}{D}{pressure at the observer (mb)} \\
+ \spec{RH}{D}{relative humidity at the observer (range 0\,--\,1)} \\
+ \spec{WL1}{D}{base wavelength ($\mu{\rm m}$)} \\
+ \spec{A1}{D}{refraction coefficient A for wavelength WL1 (radians)} \\
+ \spec{B1}{D}{refraction coefficient B for wavelength WL1 (radians)} \\
+ \spec{WL2}{D}{wavelength for which adjusted A,B required ($\mu{\rm m}$)}
+}
+\args{RETURNED}
+{
+ \spec{A2}{D}{refraction coefficient A for wavelength WL2 (radians)} \\
+ \spec{B2}{D}{refraction coefficient B for wavelength WL2 (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item To use this routine, first call sla\_REFCO specifying WL1 as the
+        wavelength.  This yields refraction coefficients A1, B1, correct
+        for that wavelength.  Subsequently, calls to sla\_ATMDSP specifying
+        different wavelengths will produce new, slightly adjusted
+        refraction coefficients A2, B2, which apply to the specified wavelength.
+  \item Most of the atmospheric dispersion happens between $0.7\,\mu{\rm m}$
+        and the UV atmospheric cutoff, and the effect increases strongly
+        towards the UV end.  For this reason a blue reference wavelength
+        is recommended, for example $0.4\,\mu{\rm m}$.
+  \item The accuracy, for this set of conditions: \\[1pc]
+   \hspace*{5ex} \begin{tabular}{rcl}
+        height above sea level & ~ & 2000\,m \\
+                      latitude & ~ & $29^\circ$ \\
+                      pressure & ~ & 793\,mb \\
+                   temperature & ~ & $290^\circ$\,K \\
+                      humidity & ~ & 0.5 (50\%) \\
+                    lapse rate & ~ & $0.0065^\circ m^{-1}$ \\
+          reference wavelength & ~ & $0.4\,\mu{\rm m}$ \\
+                star elevation & ~ & $15^\circ$ \\
+                  \end{tabular}\\[1pc]
+        is about 2.5\,mas RMS between 0.3 and $1.0\,\mu{\rm m}$, and stays
+        within 4\,mas for the whole range longward of $0.3\,\mu{\rm m}$
+        (compared with a total dispersion from 0.3 to $20\,\mu{\rm m}$
+        of about \arcseci{11}).  These errors are typical for ordinary
+        conditions;  in extreme conditions values a few times this size
+        may occur.
+  \item If either wavelength exceeds $100\,\mu{\rm m}$, the radio case
+        is assumed and the returned refraction coefficients are the
+        same as the given ones. Note that radio refraction coefficients
+        cannot be turned into optical values using this routine, nor
+        vice versa.
+  \item The algorithm consists of calculation of the refractivity of the
+        air at the observer for the two wavelengths, using the methods
+        of the sla\_REFRO routine, and then scaling of the two refraction
+        coefficients according to classical refraction theory.  This
+        amounts to scaling the A coefficient in proportion to $(\mu-1)$ and
+        the B coefficient almost in the same ratio (see R.M.Green,
+        {\it Spherical Astronomy,}\/ Cambridge University Press, 1985).
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_AV2M}{Rotation Matrix from Axial Vector}
+{
+ \action{Form the rotation matrix corresponding to a given axial vector
+         (single precision).}
+ \call{CALL sla\_AV2M (AXVEC, RMAT)}
+}
+\args{GIVEN}
+{
+ \spec{AXVEC}{R(3)}{axial vector (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RMAT}{R(3,3)}{rotation matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item A rotation matrix describes a rotation about some
+        arbitrary axis, called the Euler axis.  The
+        {\it axial vector} supplied to this routine
+        has the same direction as the Euler axis, and its
+        magnitude is the amount of rotation in radians.
+  \item If AXVEC is null, the unit matrix is returned.
+  \item The reference frame rotates clockwise as seen looking along
+        the axial vector from the origin.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_BEAR}{Direction Between Points on a Sphere}
+{
+ \action{Returns the bearing (position angle) of one point on a
+         sphere seen from another (single precision).}
+ \call{R~=~sla\_BEAR (A1, B1, A2, B2)}
+}
+\args{GIVEN}
+{
+ \spec{A1,B1}{R}{spherical coordinates of one point} \\
+ \spec{A2,B2}{R}{spherical coordinates of the other point}
+}
+\args{RETURNED}
+{
+ \spec{sla\_BEAR}{R}{bearing from first point to second}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The spherical coordinates are \radec,
+       $[\lambda,\phi]$ {\it etc.}, in radians.
+ \item The result is the bearing (position angle), in radians,
+       of point [A2,B2] as seen
+       from point [A1,B1].  It is in the range $\pm \pi$.  The sense
+       is such that if [A2,B2]
+       is a small distance due east of [A1,B1] the result
+       is about $+\pi/2$. Zero is returned
+       if the two points are coincident.
+ \item If either B-coordinate is outside the range $\pm\pi/2$, the
+       result may correspond to ``the long way round''.
+ \item The routine sla\_PAV performs an equivalent function except
+       that the points are specified in the form of Cartesian unit
+       vectors.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CAF2R}{Deg,Arcmin,Arcsec to Radians}
+{
+ \action{Convert degrees, arcminutes, arcseconds to radians
+         (single precision).}
+ \call{CALL sla\_CAF2R (IDEG, IAMIN, ASEC, RAD, J)}
+}
+\args{GIVEN}
+{
+ \spec{IDEG}{I}{degrees} \\
+ \spec{IAMIN}{I}{arcminutes} \\
+ \spec{ASEC}{R}{arcseconds}
+}
+\args{RETURNED}
+{
+ \spec{RAD}{R}{angle in radians} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 1 = IDEG outside range 0$-$359} \\
+ \spec{}{}{\hspace{1.5em} 2 = IAMIN outside range 0$-$59} \\
+ \spec{}{}{\hspace{1.5em} 3 = ASEC outside range 0$-$59.999$\cdots$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is computed even if any of the range checks fail.
+  \item The sign must be dealt with outside this routine.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CALDJ}{Calendar Date to MJD}
+{
+ \action{Gregorian Calendar to Modified Julian Date, with century default.}
+ \call{CALL sla\_CALDJ (IY, IM, ID, DJM, J)}
+}
+\args{GIVEN}
+{
+ \spec{IY,IM,ID}{I}{year, month, day in Gregorian calendar}
+}
+\args{RETURNED}
+{
+ \spec{DJM}{D}{modified Julian Date (JD$-$2400000.5) for $0^{\rm h}$} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{1.5em} 1 = bad year   (MJD not computed)} \\
+ \spec{}{}{\hspace{1.5em} 2 = bad month  (MJD not computed)} \\
+ \spec{}{}{\hspace{1.5em} 3 = bad day    (MJD computed)} \\
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine supports the {\it century default}\/ feature.
+        Acceptable years are:
+        \begin{itemize}
+         \item 00-49, interpreted as 2000\,--\,2049,
+         \item 50-99, interpreted as 1950\,--\,1999, and
+         \item 100 upwards, interpreted literally.
+        \end{itemize}
+        For 1-100AD use the routine sla\_CLDJ instead.
+  \item For year $n$BC use IY = $-(n-1)$.
+  \item When an invalid year or month is supplied (status J~=~1~or~2)
+        the MJD is {\bf not} computed.  When an invalid day is supplied
+        (status J~=~3) the MJD {\bf is} computed.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CALYD}{Calendar to Year, Day}
+{
+ \action{Gregorian calendar date to year and day in year, in a Julian
+         calendar aligned to the 20th/21st century Gregorian calendar,
+         with century default.}
+ \call{CALL sla\_CALYD (IY, IM, ID, NY, ND, J)}
+}
+\args{GIVEN}
+{
+ \spec{IY,IM,ID}{I}{year, month, day in Gregorian calendar:
+                    year may optionally omit the century}
+}
+\args{RETURNED}
+{
+ \spec{NY}{I}{year (re-aligned Julian calendar)} \\
+ \spec{ND}{I}{day in year (1 = January 1st)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em}  0 = OK} \\
+ \spec{}{}{\hspace{1.5em}  1 = bad year (before $-4711$)} \\
+ \spec{}{}{\hspace{1.5em}  2 = bad month} \\
+ \spec{}{}{\hspace{1.5em}  3 = bad day}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine supports the {\it century default}\/ feature.
+        Acceptable years are:
+        \begin{itemize}
+         \item 00-49, interpreted as 2000\,--\,2049,
+         \item 50-99, interpreted as 1950\,--\,1999, and
+         \item other years after $-4712$, interpreted literally.
+        \end{itemize}
+        Use sla\_CLYD for years before 100AD.
+  \item The purpose of sla\_CALDJ is to support
+        sla\_EARTH, sla\_MOON and sla\_ECOR.
+  \item Between 1900~March~1 and 2100~February~28 it returns answers
+        which are consistent with the ordinary Gregorian calendar.
+        Outside this range there will be a discrepancy which increases
+        by one day for every non-leap century year.
+  \item When an invalid year or month is supplied (status J~=~1 or J~=~2)
+        the results are {\bf not} computed.  When a day is
+        supplied which is outside the conventional range (status J~=~3)
+        the results {\bf are} computed.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CC2S}{Cartesian to Spherical}
+{
+ \action{Cartesian coordinates to spherical coordinates (single precision).}
+ \call{CALL sla\_CC2S (V, A, B)}
+}
+\args{GIVEN}
+{
+ \spec{V}{R(3)}{\xyz\ vector}
+}
+\args{RETURNED}
+{
+ \spec{A,B}{R}{spherical coordinates in radians}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The spherical coordinates are longitude (+ve anticlockwise
+        looking from the +ve latitude pole) and latitude.  The
+        Cartesian coordinates are right handed, with the {\it x}-axis
+        at zero longitude and latitude, and the {\it z}-axis at the
+        +ve latitude pole.
+  \item If V is null, zero A and B are returned.
+  \item At either pole, zero A is returned.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CC62S}{Cartesian 6-Vector to Spherical}
+{
+ \action{Conversion of position \& velocity in Cartesian coordinates
+         to spherical coordinates (single precision).}
+ \call{CALL sla\_CC62S (V, A, B, R, AD, BD, RD)}
+}
+\args{GIVEN}
+{
+ \spec{V}{R(6)}{\xyzxyzd}
+}
+\args{RETURNED}
+{
+ \spec{A}{R}{longitude (radians) -- for example $\alpha$} \\
+ \spec{B}{R}{latitude (radians) -- for example $\delta$} \\
+ \spec{R}{R}{radial coordinate} \\
+ \spec{AD}{R}{longitude derivative (radians per unit time)} \\
+ \spec{BD}{R}{latitude derivative (radians per unit time)} \\
+ \spec{RD}{R}{radial derivative}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CD2TF}{Days to Hour,Min,Sec}
+{
+ \action{Convert an interval in days to hours, minutes, seconds
+         (single precision).}
+ \call{CALL sla\_CD2TF (NDP, DAYS, SIGN, IHMSF)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of seconds} \\
+ \spec{DAYS}{R}{interval in days}
+}
+\args{RETURNED}
+{
+ \spec{SIGN}{C}{`+' or `$-$'} \\
+ \spec{IHMSF}{I(4)}{hours, minutes, seconds, fraction}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NDP less than zero is interpreted as zero.
+  \item The largest useful value for NDP is determined by the size of
+        DAYS, the format of REAL floating-point numbers on the target
+        machine, and the risk of overflowing IHMSF(4).  On some
+        architectures, for DAYS up to 1.0,
+        the available floating-point
+        precision corresponds roughly to NDP=3.  This is well
+        below the ultimate limit of NDP=9 set by the capacity of a
+        typical 32-bit IHMSF(4).
+  \item The absolute value of DAYS may exceed 1.0.  In cases where it
+        does not, it is up to the caller to test for and handle the
+        case where DAYS is very nearly 1.0 and rounds up to 24~hours,
+        by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+\end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CLDJ}{Calendar to MJD}
+{
+ \action{Gregorian Calendar to Modified Julian Date.}
+ \call{CALL sla\_CLDJ (IY, IM, ID, DJM, J)}
+}
+\args{GIVEN}
+{
+ \spec{IY,IM,ID}{I}{year, month, day in Gregorian calendar}
+}
+\args{RETURNED}
+{
+ \spec{DJM}{D}{modified Julian Date (JD$-$2400000.5) for $0^{\rm h}$} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{1.5em} 1 = bad year} \\
+ \spec{}{}{\hspace{1.5em} 2 = bad month} \\
+ \spec{}{}{\hspace{1.5em} 3 = bad day}
+}
+\notes
+{
+ \begin{enumerate}
+  \item When an invalid year or month is supplied (status J~=~1~or~2)
+        the MJD is {\bf not} computed.  When an invalid day is supplied
+        (status J~=~3) the MJD {\bf is} computed.
+  \item The year must be $-$4699 ({\it i.e.}\ 4700BC) or later.
+        For year $n$BC use IY = $-(n-1)$.
+  \item An alternative to the present routine is sla\_CALDJ, which
+        accepts a year with the century missing.
+ \end{enumerate}
+}
+\aref{The algorithm is adapted from Hatcher,
+      {\it Q.\,Jl.\,R.\,astr.\,Soc.}\ (1984) {\bf 25}, 53-55.}
+%-----------------------------------------------------------------------
+\routine{SLA\_CLYD}{Calendar to Year, Day}
+{
+ \action{Gregorian calendar date to year and day in year, in a Julian
+         calendar aligned to the 20th/21st century Gregorian calendar.}
+ \call{CALL sla\_CLYD (IY, IM, ID, NY, ND, J)}
+}
+\args{GIVEN}
+{
+ \spec{IY,IM,ID}{I}{year, month, day in Gregorian calendar}
+}
+\args{RETURNED}
+{
+ \spec{NY}{I}{year (re-aligned Julian calendar)} \\
+ \spec{ND}{I}{day in year (1 = January 1st)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em}  0 = OK} \\
+ \spec{}{}{\hspace{1.5em}  1 = bad year (before $-4711$)} \\
+ \spec{}{}{\hspace{1.5em}  2 = bad month} \\
+ \spec{}{}{\hspace{1.5em}  3 = bad day}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The purpose of sla\_CLYD is to support sla\_EARTH,
+        sla\_MOON and sla\_ECOR.
+  \item Between 1900~March~1 and 2100~February~28 it returns answers
+        which are consistent with the ordinary Gregorian calendar.
+        Outside this range there will be a discrepancy which increases
+        by one day for every non-leap century year.
+  \item When an invalid year or month is supplied (status J~=~1 or J~=~2)
+        the results are {\bf not} computed.  When a day is
+        supplied which is outside the conventional range (status J~=~3)
+        the results {\bf are} computed.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_COMBN}{Next Combination}
+{
+ \action{Generate the next combination, a subset of a specified size chosen
+         from a specified number of items.}
+ \call{CALL sla\_COMBN (NSEL, NCAND, LIST, J)}
+}
+\args{GIVEN}
+{
+ \spec{NSEL}{I}{number of items (subset size)} \\
+ \spec{NCAND}{I}{number of candidates (set size)}
+}
+\args{GIVEN and RETURNED}
+{
+ \spec{LIST}{I(NSEL)}{latest combination, LIST(1)=0 to initialize}
+}
+\args{RETURNED}
+{
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal NSEL or NCAND} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $+$1 = no more combinations available}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NSEL and NCAND must both be at least 1, and NSEL must be less
+        than or equal to NCAND.
+  \item This routine returns, in the LIST array, a subset of NSEL integers
+        chosen from the range 1 to NCAND inclusive, in ascending order.
+        Before calling the routine for the first time, the caller must set
+        the first element of the LIST array to zero (any value less than 1
+        will do) to cause initialization.
+  \item The first combination to be generated is:
+        \begin{verse}
+            LIST(1)=1, LIST(2)=2, \ldots, LIST(NSEL)=NSEL
+        \end{verse}
+        This is also the combination returned for the ``finished'' (J=1) case.
+        The final permutation to be generated is:
+        \begin{verse}
+           LIST(1)=NCAND, LIST(2)=NCAND$-$1, \ldots, \\
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~LIST(NSEL)=NCAND$-$NSEL+1
+        \end{verse}
+  \item If the ``finished'' (J=1) status is ignored, the routine
+        continues to deliver combinations, the pattern repeating
+        every NCAND!/(NSEL!(NCAND$-$NSEL)!) calls.
+  \item The algorithm is by R.\,F.\,Warren-Smith (private communication).
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CR2AF}{Radians to Deg,Arcmin,Arcsec}
+{
+ \action{Convert an angle in radians to degrees, arcminutes,
+         arcseconds (single precision).}
+ \call{CALL sla\_CR2AF (NDP, ANGLE, SIGN, IDMSF)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of arcseconds} \\
+ \spec{ANGLE}{R}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{SIGN}{C}{`+' or `$-$'} \\
+ \spec{IDMSF}{I(4)}{degrees, arcminutes, arcseconds, fraction}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NDP less than zero is interpreted as zero.
+  \item The largest useful value for NDP is determined by the size of
+        ANGLE, the format of REAL floating-point numbers on the target
+        machine, and the risk of overflowing IDMSF(4).  On some
+        architectures, for ANGLE up to 2pi,
+        the available floating-point
+        precision corresponds roughly to NDP=3.  This is well
+        below the ultimate limit of NDP=9 set by the capacity of a
+        typical 32-bit IDMSF(4).
+  \item The absolute value of ANGLE may exceed $2\pi$.  In cases where it
+        does not, it is up to the caller to test for and handle the
+        case where ANGLE is very nearly $2\pi$ and rounds up to $360^{\circ}$,
+        by testing for IDMSF(1)=360 and setting IDMSF(1-4) to zero.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CR2TF}{Radians to Hour,Min,Sec}
+{
+ \action{Convert an angle in radians to hours, minutes, seconds
+         (single precision).}
+ \call{CALL sla\_CR2TF (NDP, ANGLE, SIGN, IHMSF)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of seconds} \\
+ \spec{ANGLE}{R}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{SIGN}{C}{`+' or `$-$'} \\
+ \spec{IHMSF}{I(4)}{hours, minutes, seconds, fraction}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NDP less than zero is interpreted as zero.
+  \item The largest useful value for NDP is determined by the size of
+        ANGLE, the format of REAL floating-point numbers on the target
+        machine, and the risk of overflowing IHMSF(4).  On some
+        architectures, for ANGLE up to 2pi,
+        the available floating-point
+        precision corresponds roughly to NDP=3.  This is well below
+        the ultimate limit of NDP=9 set by the capacity of a typical
+        32-bit IHMSF(4).
+  \item The absolute value of ANGLE may exceed $2\pi$.  In cases where it
+        does not, it is up to the caller to test for and handle the
+        case where ANGLE is very nearly $2\pi$ and rounds up to 24~hours,
+        by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+\end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CS2C}{Spherical to Cartesian}
+{
+ \action{Spherical coordinates to Cartesian coordinates (single precision).}
+ \call{CALL sla\_CS2C (A, B, V)}
+}
+\args{GIVEN}
+{
+ \spec{A,B}{R}{spherical coordinates in radians: \radec\ {\it etc.}}
+}
+\args{RETURNED}
+{
+ \spec{V}{R(3)}{\xyz\ unit vector}
+}
+\anote{The spherical coordinates are longitude (+ve anticlockwise
+       looking from the +ve latitude pole) and latitude.  The
+       Cartesian coordinates are right handed, with the {\it x}-axis
+       at zero longitude and latitude, and the {\it z}-axis at the
+       +ve latitude pole.}
+%-----------------------------------------------------------------------
+\routine{SLA\_CS2C6}{Spherical Pos/Vel to Cartesian}
+{
+ \action{Conversion of position \& velocity in spherical coordinates
+         to Cartesian coordinates (single precision).}
+ \call{CALL sla\_CS2C6 (A, B, R, AD, BD, RD, V)}
+}
+\args{GIVEN}
+{
+ \spec{A}{R}{longitude (radians) -- for example $\alpha$} \\
+ \spec{B}{R}{latitude (radians) -- for example $\delta$} \\
+ \spec{R}{R}{radial coordinate} \\
+ \spec{AD}{R}{longitude derivative (radians per unit time)} \\
+ \spec{BD}{R}{latitude derivative (radians per unit time)} \\
+ \spec{RD}{R}{radial derivative}
+}
+\args{RETURNED}
+{
+ \spec{V}{R(6)}{\xyzxyzd}
+}
+\anote{The spherical coordinates are longitude (+ve anticlockwise
+       looking from the +ve latitude pole) and latitude.  The
+       Cartesian coordinates are right handed, with the {\it x}-axis
+       at zero longitude and latitude, and the {\it z}-axis at the
+       +ve latitude pole.}
+%-----------------------------------------------------------------------
+\routine{SLA\_CTF2D}{Hour,Min,Sec to Days}
+{
+ \action{Convert hours, minutes, seconds to days (single precision).}
+ \call{CALL sla\_CTF2D (IHOUR, IMIN, SEC, DAYS, J)}
+}
+\args{GIVEN}
+{
+ \spec{IHOUR}{I}{hours} \\
+ \spec{IMIN}{I}{minutes} \\
+ \spec{SEC}{R}{seconds}
+}
+\args{RETURNED}
+{
+ \spec{DAYS}{R}{interval in days} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{1.5em} 1 = IHOUR outside range 0-23} \\
+ \spec{}{}{\hspace{1.5em} 2 = IMIN outside range 0-59} \\
+ \spec{}{}{\hspace{1.5em} 3 = SEC outside range 0-59.999$\cdots$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is computed even if any of the range checks fail.
+  \item The sign must be dealt with outside this routine.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_CTF2R}{Hour,Min,Sec to Radians}
+{
+ \action{Convert hours, minutes, seconds to radians (single precision).}
+ \call{CALL sla\_CTF2R (IHOUR, IMIN, SEC, RAD, J)}
+}
+\args{GIVEN}
+{
+ \spec{IHOUR}{I}{hours} \\
+ \spec{IMIN}{I}{minutes} \\
+ \spec{SEC}{R}{seconds}
+}
+\args{RETURNED}
+{
+ \spec{RAD}{R}{angle in radians} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{1.5em} 1 = IHOUR outside range 0-23} \\
+ \spec{}{}{\hspace{1.5em} 2 = IMIN outside range 0-59} \\
+ \spec{}{}{\hspace{1.5em} 3 = SEC outside range 0-59.999$\cdots$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is computed even if any of the range checks fail.
+  \item The sign must be dealt with outside this routine.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DAF2R}{Deg,Arcmin,Arcsec to Radians}
+{
+ \action{Convert degrees, arcminutes, arcseconds to radians
+  (double precision).}
+ \call{CALL sla\_DAF2R (IDEG, IAMIN, ASEC, RAD, J)}
+}
+\args{GIVEN}
+{
+ \spec{IDEG}{I}{degrees} \\
+ \spec{IAMIN}{I}{arcminutes} \\
+ \spec{ASEC}{D}{arcseconds}
+}
+\args{RETURNED}
+{
+ \spec{RAD}{D}{angle in radians} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 1 = IDEG outside range 0$-$359} \\
+ \spec{}{}{\hspace{1.5em} 2 = IAMIN outside range 0$-$59} \\
+ \spec{}{}{\hspace{1.5em} 3 = ASEC outside range 0$-$59.999$\cdots$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is computed even if any of the range checks fail.
+  \item The sign must be dealt with outside this routine.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DAFIN}{Sexagesimal character string to angle}
+{
+ \action{Decode a free-format sexagesimal string (degrees, arcminutes,
+         arcseconds) into a double precision floating point
+         number (radians).}
+ \call{CALL sla\_DAFIN (STRING, NSTRT, DRESLT, JF)}
+}
+\args{GIVEN}
+{
+ \spec{STRING}{C*(*)}{string containing deg, arcmin, arcsec fields} \\
+ \spec{NSTRT}{I}{pointer to start of decode (beginning of STRING = 1)}
+}
+\args{RETURNED}
+{
+ \spec{NSTRT}{I}{advanced past the decoded angle} \\
+ \spec{DRESLT}{D}{angle in radians} \\
+ \spec{JF}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em}   0 = OK} \\
+ \spec{}{}{\hspace{0.7em} $+1$ = default, DRESLT unchanged (note 2)} \\
+ \spec{}{}{\hspace{0.7em} $-1$ = bad degrees (note 3)} \\
+ \spec{}{}{\hspace{0.7em} $-2$ = bad arcminutes (note 3)} \\
+ \spec{}{}{\hspace{0.7em} $-3$ = bad arcseconds (note 3)} \\
+}
+\goodbreak
+\setlength{\oldspacing}{\topsep}
+\setlength{\topsep}{0.3ex}
+\begin{description}
+ \item [EXAMPLE]: \\ [1.5ex]
+  \begin{tabular}{p{7em}p{15em}p{12em}}
+   {\it argument} & {\it before} & {\it after} \\ \\
+   STRING & $'$\verb*}-57 17 44.806  12 34 56.7}$'$ & unchanged \\
+   NSTRT & 1 & 16 ({\it i.e.}\ pointing to 12...) \\
+   RESLT & - & $-1.00000${\tt D0} \\
+   JF & - & 0
+  \end{tabular}
+ \item A further call to sla\_DAFIN, without adjustment of NSTRT, will
+       decode the second angle, \dms{12}{34}{56}{7}.
+\end{description}
+\setlength{\topsep}{\oldspacing}
+\notes
+{
+ \begin{enumerate}
+  \item The first three ``fields'' in STRING are degrees, arcminutes,
+   arcseconds, separated by spaces or commas.  The degrees field
+   may be signed, but not the others.  The decoding is carried
+   out by the sla\_DFLTIN routine and is free-format.
+  \item Successive fields may be absent, defaulting to zero.  For
+   zero status, the only combinations allowed are degrees alone,
+   degrees and arcminutes, and all three fields present.  If all
+   three fields are omitted, a status of +1 is returned and DRESLT is
+   unchanged.  In all other cases DRESLT is changed.
+  \item Range checking:
+   \begin{itemize}
+    \item The degrees field is not range checked.  However, it is
+     expected to be integral unless the other two fields are absent.
+    \item The arcminutes field is expected to be 0-59, and integral if
+     the arcseconds field is present.  If the arcseconds field
+     is absent, the arcminutes is expected to be 0-59.9999...
+    \item The arcseconds field is expected to be 0-59.9999...
+    \item Decoding continues even when a check has failed.  Under these
+     circumstances the field takes the supplied value, defaulting to
+     zero, and the result DRESLT is computed and returned.
+   \end{itemize}
+   \item Further fields after the three expected ones are not treated as
+    an error.  The pointer NSTRT is left in the correct state for
+    further decoding with the present routine or with sla\_DFLTIN
+    {\it etc}.  See the example, above.
+   \item If STRING contains hours, minutes, seconds instead of
+    degrees {\it etc},
+    or if the required units are turns (or days) instead of radians,
+    the result DRESLT should be multiplied as follows: \\ [1.5ex]
+    \begin{tabular}{p{6em}p{5em}p{18em}}
+    {\it for STRING} & {\it to obtain} & {\it multiply DRESLT by} \\ \\
+    ${\circ}$~~\raisebox{-0.7ex}{$'$}~~\raisebox{-0.7ex}{$''$}
+     & radians & $1.0${\tt D0} \\
+    ${\circ}$~~\raisebox{-0.7ex}{$'$}~~\raisebox{-0.7ex}{$''$}
+     & turns & $1/{2 \pi} = 0.1591549430918953358${\tt D0} \\
+    h m s & radians & $15.0${\tt D0} \\
+    h m s & days & $15/{2\pi} = 2.3873241463784300365${\tt D0}
+   \end{tabular}
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_DAT}{TAI$-$UTC}
+{
+ \action{Increment to be applied to Coordinated Universal Time UTC to give
+         International Atomic Time TAI.}
+ \call{D~=~sla\_DAT (UTC)}
+}
+\args{GIVEN}
+{
+ \spec{UTC}{D}{UTC date as a modified JD (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DAT}{D}{TAI$-$UTC in seconds}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The UTC is specified to be a date rather than a time to indicate
+       that care needs to be taken not to specify an instant which lies
+       within a leap second.  Though in most cases UTC can include the
+       fractional part, correct behaviour on the day of a leap second
+       can be guaranteed only up to the end of the second
+       $23^{\rm h}\,59^{\rm m}\,59^{\rm s}$.
+ \item For epochs from 1961 January 1 onwards, the expressions from the
+       file {\tt ftp://maia.usno.navy.mil/ser7/tai-utc.dat} are used.
+       A 5ms time step at 1961~January~1 is taken from 2.58.1 (p87) of
+       the 1992 Explanatory Supplement.
+ \item UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper
+       to call the routine with an earlier epoch.  However, if this
+       is attempted, the TAI$-$UTC expression for the year 1960 is used.
+ \item This routine has to be updated on each occasion that a
+       leap second is announced, and programs using it relinked.
+       Refer to the program source code for information on when the
+       most recent leap second was added.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DAV2M}{Rotation Matrix from Axial Vector}
+{
+ \action{Form the rotation matrix corresponding to a given axial vector
+         (double precision).}
+ \call{CALL sla\_DAV2M (AXVEC, RMAT)}
+}
+\args{GIVEN}
+{
+ \spec{AXVEC}{D(3)}{axial vector (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RMAT}{D(3,3)}{rotation matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item A rotation matrix describes a rotation about some
+        arbitrary axis, called the Euler axis.  The
+        {\it axial vector} supplied to this routine
+        has the same direction as the Euler axis, and its
+        magnitude is the amount of rotation in radians.
+  \item If AXVEC is null, the unit matrix is returned.
+  \item The reference frame rotates clockwise as seen looking along
+        the axial vector from the origin.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DBEAR}{Direction Between Points on a Sphere}
+{
+ \action{Returns the bearing (position angle) of one point on a
+         sphere relative to another (double precision).}
+ \call{D~=~sla\_DBEAR (A1, B1, A2, B2)}
+}
+\args{GIVEN}
+{
+ \spec{A1,B1}{D}{spherical coordinates of one point} \\
+ \spec{A2,B2}{D}{spherical coordinates of the other point}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DBEAR}{D}{bearing from first point to second}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The spherical coordinates are \radec,
+       $[\lambda,\phi]$ {\it etc.}, in radians.
+ \item The result is the bearing (position angle), in radians,
+       of point [A2,B2] as seen
+       from point [A1,B1].  It is in the range $\pm \pi$.  The sense
+       is such that if [A2,B2]
+       is a small distance due east of [A1,B1] the result
+       is about $+\pi/2$. Zero is returned
+       if the two points are coincident.
+ \item If either B-coordinate is outside the range $\pm\pi/2$, the
+       result may correspond to ``the long way round''.
+ \item The routine sla\_DPAV performs an equivalent function except
+       that the points are specified in the form of Cartesian
+       vectors.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DBJIN}{Decode String to B/J Epoch (DP)}
+{
+ \action{Decode a character string into a DOUBLE PRECISION number,
+         with special provision for Besselian and Julian epochs.
+         The string syntax is as for sla\_DFLTIN, prefixed by
+         an optional `B' or `J'.}
+ \call{CALL sla\_DBJIN (STRING, NSTRT, DRESLT, J1, J2)}
+}
+\args{GIVEN}
+{
+ \spec{STRING}{C}{string containing field to be decoded} \\
+ \spec{NSTRT}{I}{pointer to first character of field in string}
+}
+\args{RETURNED}
+{
+ \spec{NSTRT}{I}{incremented past the decoded field} \\
+ \spec{DRESLT}{D}{result} \\
+ \spec{J1}{I}{DFLTIN status:} \\
+ \spec{}{}{\hspace{0.7em} $-$1 = $-$OK} \\
+ \spec{}{}{\hspace{1.5em}   0 = +OK} \\
+ \spec{}{}{\hspace{1.5em}   1 = null field} \\
+ \spec{}{}{\hspace{1.5em}   2 = error} \\
+ \spec{J2}{I}{syntax flag:} \\
+ \spec{}{}{\hspace{1.5em}   0 = normal DFLTIN syntax} \\
+ \spec{}{}{\hspace{1.5em}   1 = `B' or `b'} \\
+ \spec{}{}{\hspace{1.5em}   2 = `J' or `j'}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The purpose of the syntax extensions is to help cope with mixed
+        FK4 and FK5 data, allowing fields such as `B1950' or `J2000'
+        to be decoded.
+  \item In addition to the syntax accepted by sla\_DFLTIN,
+        the following two extensions are recognized by sla\_DBJIN:
+        \begin{enumerate}
+         \item A valid non-null field preceded by the character `B'
+               (or `b') is accepted.
+         \item A valid non-null field preceded by the character `J'
+               (or `j') is accepted.
+         \end{enumerate}
+  \item The calling program is told of the `B' or `J' through an
+        supplementary status argument.  The rest of
+        the arguments are as for sla\_DFLTIN.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DC62S}{Cartesian 6-Vector to Spherical}
+{
+ \action{Conversion of position \& velocity in Cartesian coordinates
+         to spherical coordinates (double precision).}
+ \call{CALL sla\_DC62S (V, A, B, R, AD, BD, RD)}
+}
+\args{GIVEN}
+{
+ \spec{V}{D(6)}{\xyzxyzd}
+}
+\args{RETURNED}
+{
+ \spec{A}{D}{longitude (radians)} \\
+ \spec{B}{D}{latitude (radians)} \\
+ \spec{R}{D}{radial coordinate} \\
+ \spec{AD}{D}{longitude derivative (radians per unit time)} \\
+ \spec{BD}{D}{latitude derivative (radians per unit time)} \\
+ \spec{RD}{D}{radial derivative}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DCC2S}{Cartesian to Spherical}
+{
+ \action{Cartesian coordinates to spherical coordinates (double precision).}
+ \call{CALL sla\_DCC2S (V, A, B)}
+}
+\args{GIVEN}
+{
+ \spec{V}{D(3)}{\xyz\ vector}
+}
+\args{RETURNED}
+{
+ \spec{A,B}{D}{spherical coordinates in radians}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The spherical coordinates are longitude (+ve anticlockwise
+        looking from the +ve latitude pole) and latitude.  The
+        Cartesian coordinates are right handed, with the {\it x}-axis
+        at zero longitude and latitude, and the {\it z}-axis at the
+        +ve latitude pole.
+  \item If V is null, zero A and B are returned.
+  \item At either pole, zero A is returned.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DCMPF}{Interpret Linear Fit}
+{
+ \action{Decompose an \xy\ linear fit into its constituent parameters:
+         zero points, scales, nonperpendicularity and orientation.}
+ \call{CALL sla\_DCMPF (COEFFS,XZ,YZ,XS,YS,PERP,ORIENT)}
+}
+\args{GIVEN}
+{
+ \spec{COEFFS}{D(6)}{transformation coefficients (see note)}
+}
+\args{RETURNED}
+{
+ \spec{XZ}{D}{{\it x} zero point} \\
+ \spec{YZ}{D}{{\it y} zero point} \\
+ \spec{XS}{D}{{\it x} scale} \\
+ \spec{YS}{D}{{\it y} scale} \\
+ \spec{PERP}{D}{nonperpendicularity (radians)} \\
+ \spec{ORIENT}{D}{orientation (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The model relates two sets of \xy\ coordinates as follows.
+        Naming the six elements of COEFFS $a,b,c,d,e$ \& $f$,
+        the model transforms coordinates $[x_{1},y_{1}\,]$ into coordinates
+        $[x_{2},y_{2}\,]$ as follows:
+        \begin{verse}
+         $x_{2} = a + bx_{1} + cy_{1}$ \\
+         $y_{2} = d + ex_{1} + fy_{1}$
+        \end{verse}
+        The sla\_DCMPF routine decomposes this transformation
+        into four steps:
+        \begin{enumerate}
+        \item Zero points:
+              \begin{verse}
+               $x' = x_{1} + {\rm XZ}$ \\
+               $y' = y_{1} + {\rm YZ}$
+              \end{verse}
+        \item Scales:
+              \begin{verse}
+               $x'' = x' {\rm XS}$ \\
+               $y'' = y' {\rm YS}$
+              \end{verse}
+        \item Nonperpendicularity:
+              \begin{verse}
+               $x''' = + x'' \cos {\rm PERP}/2 + y'' \sin {\rm PERP}/2$ \\
+               $y''' = + x'' \sin {\rm PERP}/2 + y'' \cos {\rm PERP}/2$
+              \end{verse}
+        \item Orientation:
+              \begin{verse}
+               $x_{2} = + x''' \cos {\rm ORIENT} +
+                          y''' \sin {\rm ORIENT}$ \\
+               $y_{2} = - x''' \sin {\rm ORIENT} +
+                          y''' \cos {\rm ORIENT}$
+              \end{verse}
+        \end{enumerate}
+  \item See also sla\_FITXY, sla\_PXY, sla\_INVF, sla\_XY2XY.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DCS2C}{Spherical to Cartesian}
+{
+ \action{Spherical coordinates to Cartesian coordinates (double precision).}
+ \call{CALL sla\_DCS2C (A, B, V)}
+}
+\args{GIVEN}
+{
+ \spec{A,B}{D}{spherical coordinates in radians: \radec\ {\it etc.}}
+}
+\args{RETURNED}
+{
+ \spec{V}{D(3)}{\xyz\ unit vector}
+}
+\anote{The spherical coordinates are longitude (+ve anticlockwise
+       looking from the +ve latitude pole) and latitude.  The
+       Cartesian coordinates are right handed, with the {\it x}-axis
+       at zero longitude and latitude, and the {\it z}-axis at the
+       +ve latitude pole.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DD2TF}{Days to Hour,Min,Sec}
+{
+ \action{Convert an interval in days into hours, minutes, seconds
+         (double precision).}
+ \call{CALL sla\_DD2TF (NDP, DAYS, SIGN, IHMSF)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of seconds} \\
+ \spec{DAYS}{D}{interval in days}
+}
+\args{RETURNED}
+{
+ \spec{SIGN}{C}{`+' or `$-$'} \\
+ \spec{IHMSF}{I(4)}{hours, minutes, seconds, fraction}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NDP less than zero is interpreted as zero.
+  \item The largest useful value for NDP is determined by the size
+        of DAYS, the format of DOUBLE PRECISION floating-point numbers
+        on the target machine, and the risk of overflowing IHMSF(4).
+        On some architectures, for DAYS up to 1D0, the available
+        floating-point precision corresponds roughly to NDP=12.
+        However, the practical limit is NDP=9, set by the capacity of
+        a typical 32-bit IHMSF(4).
+  \item The absolute value of DAYS may exceed 1D0.  In cases where it
+        does not, it is up to the caller to test for and handle the
+        case where DAYS is very nearly 1D0 and rounds up to 24~hours,
+        by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+\end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DE2H}{$h,\delta$ to Az,El}
+{
+ \action{Equatorial to horizon coordinates
+         (double precision).}
+ \call{CALL sla\_DE2H (HA, DEC, PHI, AZ, EL)}
+}
+\args{GIVEN}
+{
+ \spec{HA}{D}{hour angle (radians)} \\
+ \spec{DEC}{D}{declination (radians)} \\
+ \spec{PHI}{D}{latitude (radians)}
+}
+\args{RETURNED}
+{
+ \spec{AZ}{D}{azimuth (radians)} \\
+ \spec{EL}{D}{elevation (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Azimuth is returned in the range $0\!-\!2\pi$;  north is zero,
+        and east is $+\pi/2$.  Elevation is returned in the range
+        $\pm\pi$.
+  \item The latitude must be geodetic.  In critical applications,
+        corrections for polar motion should be applied.
+  \item In some applications it will be important to specify the
+        correct type of hour angle and declination in order to
+        produce the required type of azimuth and elevation.  In
+        particular, it may be important to distinguish between
+        elevation as affected by refraction, which would
+        require the {\it observed} \hadec, and the elevation
+        {\it in vacuo}, which would require the {\it topocentric}
+        \hadec.
+        If the effects of diurnal aberration can be neglected, the
+        {\it apparent} \hadec\ may be used instead of the topocentric
+        \hadec.
+  \item No range checking of arguments is carried out.
+  \item In applications which involve many such calculations, rather
+        than calling the present routine it will be more efficient to
+        use inline code, having previously computed fixed terms such
+        as sine and cosine of latitude, and (for tracking a star)
+        sine and cosine of declination.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DEULER}{Euler Angles to Rotation Matrix}
+{
+ \action{Form a rotation matrix from the Euler angles -- three
+         successive rotations about specified Cartesian axes
+         (double precision).}
+ \call{CALL sla\_DEULER (ORDER, PHI, THETA, PSI, RMAT)}
+}
+\args{GIVEN}
+{
+ \spec{ORDER}{C}{specifies about which axes the rotations occur} \\
+ \spec{PHI}{D}{1st rotation (radians)} \\
+ \spec{THETA}{D}{2nd rotation (radians)} \\
+ \spec{PSI}{D}{3rd rotation (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RMAT}{D(3,3)}{rotation matrix}
+}
+\notes
+{
+ \begin{enumerate}
+ \item A rotation is positive when the reference frame rotates
+       anticlockwise as seen looking towards the origin from the
+       positive region of the specified axis.
+ \item The characters of ORDER define which axes the three successive
+       rotations are about.  A typical value is `ZXZ', indicating that
+       RMAT is to become the direction cosine matrix corresponding to
+       rotations of the reference frame through PHI radians about the
+       old {\it z}-axis, followed by THETA radians about the resulting
+       {\it x}-axis,
+       then PSI radians about the resulting {\it z}-axis.
+ \item The axis names can be any of the following, in any order or
+       combination:  X, Y, Z, uppercase or lowercase, 1, 2, 3.  Normal
+       axis labelling/numbering conventions apply;  the {\it xyz} ($\equiv123$)
+       triad is right-handed.  Thus, the `ZXZ' example given above
+       could be written `zxz' or `313' (or even `ZxZ' or `3xZ').  ORDER
+       is terminated by length or by the first unrecognized character.
+       Fewer than three rotations are acceptable, in which case the later
+       angle arguments are ignored.  Zero rotations produces
+       the identity RMAT.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DFLTIN}{Decode a Double Precision Number}
+{
+ \action{Convert free-format input into double precision floating point.}
+ \call{CALL sla\_DFLTIN (STRING, NSTRT, DRESLT, JFLAG)}
+}
+\args{GIVEN}
+{
+ \spec{STRING}{C}{string containing number to be decoded} \\
+ \spec{NSTRT}{I}{pointer to where decoding is to commence} \\
+ \spec{DRESLT}{D}{current value of result}
+}
+\args{RETURNED}
+{
+ \spec{NSTRT}{I}{advanced to next number} \\
+ \spec{DRESLT}{D}{result} \\
+ \spec{JFLAG}{I}{status: $-$1~=~$-$OK, 0~=~+OK, 1~=~null result, 2~=~error}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The reason sla\_DFLTIN has separate `OK' status values
+       for + and $-$ is to enable minus zero to be detected.
+       This is of crucial importance
+       when decoding mixed-radix numbers.  For example, an angle
+       expressed as degrees, arcminutes and arcseconds may have a
+       leading minus sign but a zero degrees field.
+ \item A TAB is interpreted as a space, and lowercase characters are
+       interpreted as uppercase.  {\it n.b.}\ The test for TAB is
+       ASCII-specific.
+ \item The basic format is the sequence of fields $\pm n.n x \pm n$,
+       where $\pm$ is a sign
+       character `+' or `$-$', $n$ means a string of decimal digits,
+       `.' is a decimal point, and $x$, which indicates an exponent,
+       means `D' or `E'.  Various combinations of these fields can be
+       omitted, and embedded blanks are permissible in certain places.
+ \item Spaces:
+       \begin{itemize}
+       \item Leading spaces are ignored.
+       \item Embedded spaces are allowed only after +, $-$, D or E,
+             and after the decimal point if the first sequence of
+             digits is absent.
+       \item Trailing spaces are ignored;  the first signifies
+             end of decoding and subsequent ones are skipped.
+       \end{itemize}
+ \item Delimiters:
+       \begin{itemize}
+       \item Any character other than +,$-$,0-9,.,D,E or space may be
+             used to signal the end of the number and terminate decoding.
+       \item Comma is recognized by sla\_DFLTIN as a special case; it
+             is skipped, leaving the pointer on the next character.  See
+             13, below.
+       \item Decoding will in all cases terminate if end of string
+             is reached.
+       \end{itemize}
+ \item Both signs are optional.  The default is +.
+ \item The mantissa $n.n$ defaults to unity.
+ \item The exponent $x\!\pm\!n$ defaults to `D0'.
+ \item The strings of decimal digits may be of any length.
+ \item The decimal point is optional for whole numbers.
+ \item A {\it null result}\/ occurs when the string of characters
+       being decoded does not begin with +,$-$,0-9,.,D or E, or
+       consists entirely of spaces.  When this condition is
+       detected, JFLAG is set to 1 and DRESLT is left untouched.
+ \item NSTRT = 1 for the first character in the string.
+ \item On return from sla\_DFLTIN, NSTRT is set ready for the next
+       decode -- following trailing blanks and any comma.  If a
+       delimiter other than comma is being used, NSTRT must be
+       incremented before the next call to sla\_DFLTIN, otherwise
+       all subsequent calls will return a null result.
+ \item Errors (JFLAG=2) occur when:
+       \begin{itemize}
+       \item a +, $-$, D or E is left unsatisfied; or
+       \item the decimal point is present without at least
+             one decimal digit before or after it; or
+       \item an exponent more than 100 has been presented.
+       \end{itemize}
+ \item When an error has been detected, NSTRT is left
+       pointing to the character following the last
+       one used before the error came to light.  This
+       may be after the point at which a more sophisticated
+       program could have detected the error.  For example,
+       sla\_DFLTIN does not detect that `1D999' is unacceptable
+       (on a computer where this is so) until the entire number
+       has been decoded.
+ \item Certain highly unlikely combinations of mantissa and
+       exponent can cause arithmetic faults during the
+       decode, in some cases despite the fact that they
+       together could be construed as a valid number.
+ \item Decoding is left to right, one pass.
+ \item See also sla\_FLOTIN and sla\_INTIN.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DH2E}{Az,El to $h,\delta$}
+{
+ \action{Horizon to equatorial coordinates
+         (double precision).}
+ \call{CALL sla\_DH2E (AZ, EL, PHI, HA, DEC)}
+}
+\args{GIVEN}
+{
+ \spec{AZ}{D}{azimuth (radians)} \\
+ \spec{EL}{D}{elevation (radians)} \\
+ \spec{PHI}{D}{latitude (radians)}
+}
+\args{RETURNED}
+{
+ \spec{HA}{D}{hour angle (radians)} \\
+ \spec{DEC}{D}{declination (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The sign convention for azimuth is north zero, east $+\pi/2$.
+  \item HA is returned in the range $\pm\pi$.  Declination is returned
+        in the range $\pm\pi/2$.
+  \item The latitude is (in principle) geodetic.  In critical
+        applications, corrections for polar motion should be applied
+        (see sla\_POLMO).
+  \item In some applications it will be important to specify the
+        correct type of elevation in order to produce the required
+        type of \hadec.  In particular, it may be important to
+        distinguish between the elevation as affected by refraction,
+        which will yield the {\it observed} \hadec, and the elevation
+        {\it in vacuo}, which will yield the {\it topocentric}
+        \hadec.  If the
+        effects of diurnal aberration can be neglected, the
+        topocentric \hadec\ may be used as an approximation to the
+        {\it apparent} \hadec.
+  \item No range checking of arguments is carried out.
+  \item In applications which involve many such calculations, rather
+        than calling the present routine it will be more efficient to
+        use inline code, having previously computed fixed terms such
+        as sine and cosine of latitude.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DIMXV}{Apply 3D Reverse Rotation}
+{
+ \action{Multiply a 3-vector by the inverse of a rotation
+         matrix (double precision).}
+ \call{CALL sla\_DIMXV (DM, VA, VB)}
+}
+\args{GIVEN}
+{
+ \spec{DM}{D(3,3)}{rotation matrix} \\
+ \spec{VA}{D(3)}{vector to be rotated}
+}
+\args{RETURNED}
+{
+ \spec{VB}{D(3)}{result vector}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine performs the operation:
+        \begin{verse}
+         {\bf b} = {\bf M}$^{T}\cdot${\bf a}
+        \end{verse}
+        where {\bf a} and {\bf b} are the 3-vectors VA and VB
+        respectively, and  {\bf M} is the $3\times3$ matrix DM.
+  \item The main function of this routine is apply an inverse
+        rotation;  under these circumstances, ${\bf M}$ is
+        {\it orthogonal}, with its inverse the same as its transpose.
+  \item To comply with the ANSI Fortran 77 standard, VA and VB must
+        {\bf not} be the same array.  The routine is, in fact, coded
+        so as to work properly on the VAX and many other systems even
+        if this rule is violated, something that is {\bf not}, however,
+        recommended.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DJCAL}{MJD to Gregorian for Output}
+{
+ \action{Modified Julian Date to Gregorian Calendar Date, expressed
+         in a form convenient for formatting messages (namely
+         rounded to a specified precision, and with the fields
+         stored in a single array).}
+ \call{CALL sla\_DJCAL (NDP, DJM, IYMDF, J)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of days in fraction} \\
+ \spec{DJM}{D}{modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{IYMDF}{I(4)}{year, month, day, fraction in Gregorian calendar} \\
+ \spec{J}{I}{status:  nonzero = out of range}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Any date after 4701BC March 1 is accepted.
+  \item Large NDP values risk internal overflows.  It is typically safe
+        to use up to NDP=4.
+ \end{enumerate}
+}
+\aref{The algorithm is adapted from Hatcher,
+      {\it Q.\,Jl.\,R.\,astr.\,Soc.}\ (1984) {\bf 25}, 53-55.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DJCL}{MJD to Year,Month,Day,Frac}
+{
+ \action{Modified Julian Date to Gregorian year, month, day,
+         and fraction of a day.}
+ \call{CALL sla\_DJCL (DJM, IY, IM, ID, FD, J)}
+}
+\args{GIVEN}
+{
+ \spec{DJM}{D}{modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{IY}{I}{year} \\
+ \spec{IM}{I}{month} \\
+ \spec{ID}{I}{day} \\
+ \spec{FD}{D}{fraction of day} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em}0~=~OK} \\
+ \spec{}{}{\hspace{0.7em}$-$1~= unacceptable date} \\
+ \spec{}{}{\hspace{0.7em}~~~~~~~~~~~~(before 4701\,BC~March~1)}
+}
+\aref{The algorithm is adapted from Hatcher,
+      {\it Q.\,Jl.\,R.\,astr.\,Soc.}\ (1984) {\bf 25}, 53-55.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DM2AV}{Rotation Matrix to Axial Vector}
+{
+ \action{From a rotation matrix, determine the corresponding axial vector
+        (double precision).}
+ \call{CALL sla\_DM2AV (RMAT, AXVEC)}
+}
+\args{GIVEN}
+{
+ \spec{RMAT}{D(3,3)}{rotation matrix}
+}
+\args{RETURNED}
+{
+ \spec{AXVEC}{D(3)}{axial vector (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item A rotation matrix describes a rotation about some arbitrary axis,
+        called the Euler axis.  The {\it axial vector} returned by
+        this routine has the same direction as the Euler axis, and its
+        magnitude is the amount of rotation in radians.
+  \item The magnitude and direction of the axial vector can be separated
+        by means of the routine sla\_DVN.
+  \item The reference frame rotates clockwise as seen looking along
+        the axial vector from the origin.
+  \item If RMAT is null, so is the result.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DMAT}{Solve Simultaneous Equations}
+{
+ \action{Matrix inversion and solution of simultaneous equations
+         (double precision).}
+ \call{CALL sla\_DMAT (N, A, Y, D, JF, IW)}
+}
+\args{GIVEN}
+{
+ \spec{N}{I}{number of unknowns} \\
+ \spec{A}{D(N,N)}{matrix} \\
+ \spec{Y}{D(N)}{vector}
+}
+\args{RETURNED}
+{
+ \spec{A}{D(N,N)}{matrix inverse} \\
+ \spec{Y}{D(N)}{solution} \\
+ \spec{D}{D}{determinant} \\
+ \spec{JF}{I}{singularity flag: 0=OK} \\
+ \spec{IW}{I(N)}{workspace}
+}
+\notes
+{
+ \begin{enumerate}
+  \item For the set of $n$ simultaneous linear equations in $n$ unknowns:
+        \begin{verse}
+         {\bf A}$\cdot${\bf y} = {\bf x}
+        \end{verse}
+        where:
+        \begin{itemize}
+         \item {\bf A} is a non-singular $n \times n$ matrix,
+         \item {\bf y} is the vector of $n$ unknowns, and
+         \item {\bf x} is the known vector,
+        \end{itemize}
+        sla\_DMAT computes:
+        \begin{itemize}
+         \item the inverse of matrix {\bf A},
+         \item the determinant of matrix {\bf A}, and
+         \item the vector of $n$ unknowns {\bf y}.
+        \end{itemize}
+        Argument N is the order $n$, A (given) is the matrix {\bf A},
+        Y (given) is the vector {\bf x} and Y (returned)
+        is the vector {\bf y}.
+        The argument A (returned) is the inverse matrix {\bf A}$^{-1}$,
+        and D is {\it det}\/({\bf A}).
+  \item JF is the singularity flag.  If the matrix is non-singular,
+        JF=0 is returned.  If the matrix is singular, JF=$-$1
+        and D=0D0 are returned.  In the latter case, the contents
+        of array A on return are undefined.
+  \item The algorithm is Gaussian elimination with partial pivoting.
+        This method is very fast;  some much slower algorithms can give
+        better accuracy, but only by a small factor.
+  \item This routine replaces the obsolete sla\_DMATRX.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DMOON}{Approx Moon Pos/Vel}
+{
+ \action{Approximate geocentric position and velocity of the Moon
+         (double precision).}
+ \call{CALL sla\_DMOON (DATE, PV)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (loosely ET) as a Modified Julian Date (JD$-$2400000.5)
+}
+}
+\args{RETURNED}
+{
+ \spec{PV}{D(6)}{Moon \xyzxyzd, mean equator and equinox
+                 of date (AU, AU~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine is a full implementation of the algorithm
+        published by Meeus (see reference).
+  \item Meeus quotes accuracies of \arcseci{10} in longitude,
+        \arcseci{3} in latitude and \arcsec{0}{2} arcsec in HP
+        (equivalent to about 20~km in distance).  Comparison with
+        JPL~DE200 over the interval 1960-2025 gives RMS errors of
+        \arcsec{3}{7} and 83~mas/hour in longitude,
+        \arcsec{2}{3} arcsec and 48~mas/hour in latitude,
+        11~km and 81~mm/s in distance.
+        The maximum errors over the same interval are
+        \arcseci{18} and \arcsec{0}{50}/hour in longitude,
+        \arcseci{11} and \arcsec{0}{24}/hour in latitude,
+        40~km and 0.29~m/s in distance.
+  \item The original algorithm is expressed in terms of the obsolete
+        time scale {\it Ephemeris Time}.  Either TDB or TT can be used,
+        but not UT without incurring significant errors (\arcseci{30} at
+        the present time) due to the Moon's \arcsec{0}{5}/s movement.
+  \item The algorithm is based on pre IAU 1976 standards.  However,
+        the result has been moved onto the new (FK5) equinox, an
+        adjustment which is in any case much smaller than the
+        intrinsic accuracy of the procedure.
+  \item Velocity is obtained by a complete analytical differentiation
+        of the Meeus model.
+ \end{enumerate}
+}
+\aref{Meeus, {\it l'Astronomie}, June 1984, p348.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DMXM}{Multiply $3\times3$ Matrices}
+{
+ \action{Product of two $3\times3$ matrices (double precision).}
+ \call{CALL sla\_DMXM (A, B, C)}
+}
+\args{GIVEN}
+{
+ \spec{A}{D(3,3)}{matrix {\bf A}} \\
+ \spec{B}{D(3,3)}{matrix {\bf B}}
+}
+\args{RETURNED}
+{
+ \spec{C}{D(3,3)}{matrix result: {\bf A}$\times${\bf B}}
+}
+\anote{To comply with the ANSI Fortran 77 standard, A, B and C must
+       be different arrays.  However, the routine is coded so as to
+       work properly on many platforms even if this rule is violated,
+       something that is {\bf not}, however, recommended.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DMXV}{Apply 3D Rotation}
+{
+ \action{Multiply a 3-vector by a rotation matrix (double precision).}
+ \call{CALL sla\_DMXV (DM, VA, VB)}
+}
+\args{GIVEN}
+{
+ \spec{DM}{D(3,3)}{rotation matrix} \\
+ \spec{VA}{D(3)}{vector to be rotated}
+}
+\args{RETURNED}
+{
+ \spec{VB}{D(3)}{result vector}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine performs the operation:
+        \begin{verse}
+           {\bf b} = {\bf M}$\cdot${\bf a}
+        \end{verse}
+        where {\bf a} and {\bf b} are the 3-vectors VA and VB
+        respectively, and {\bf M} is the $3\times3$ matrix DM.
+  \item The main function of this routine is apply a
+        rotation;  under these circumstances, {\bf M} is a
+        {\it proper real orthogonal}\/ matrix.
+  \item To comply with the ANSI Fortran 77 standard, VA and VB must
+        {\bf not} be the same array.  The routine is, in fact, coded
+        so as to work properly with many Fortran compilers even
+        if this rule is violated, something that is {\bf not}, however,
+        recommended.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DPAV}{Position-Angle Between Two Directions}
+{
+ \action{Returns the bearing (position angle) of one celestial
+         direction with respect to another (double precision).}
+ \call{D~=~sla\_DPAV (V1, V2)}
+}
+\args{GIVEN}
+{
+ \spec{V1}{D(3)}{vector to one point} \\
+ \spec{V2}{D(3)}{vector to the other point}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DPAV}{D}{position-angle of 2nd point with respect to 1st}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The coordinate frames correspond to \radec,
+       $[\lambda,\phi]$ {\it etc.}.
+ \item The result is the bearing (position angle), in radians,
+       of point V2 as seen
+       from point V1.  It is in the range $\pm \pi$.  The sense
+       is such that if V2
+       is a small distance due east of V1 the result
+       is about $+\pi/2$. Zero is returned
+       if the two points are coincident.
+ \item There is no requirement for either vector to be of unit length.
+ \item The routine sla\_DBEAR performs an equivalent function except
+       that the points are specified in the form of spherical coordinates.
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_DR2AF}{Radians to Deg,Min,Sec,Frac}
+{
+ \action{Convert an angle in radians to degrees, arcminutes, arcseconds,
+         fraction (double precision).}
+ \call{CALL sla\_DR2AF (NDP, ANGLE, SIGN, IDMSF)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of arcseconds} \\
+ \spec{ANGLE}{D}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{SIGN}{C}{`+' or `$-$'} \\
+ \spec{IDMSF}{I(4)}{degrees, arcminutes, arcseconds, fraction}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NDP less than zero is interpreted as zero.
+  \item The largest useful value for NDP is determined by the size
+        of ANGLE, the format of DOUBLE PRECISION floating-point
+        numbers on the target machine, and the risk of overflowing
+        IDMSF(4).  On some architectures, for ANGLE up to 2pi, the
+        available floating-point precision corresponds roughly to
+        NDP=12.  However, the practical limit is NDP=9, set by the
+        capacity of a typical 32-bit IDMSF(4).
+  \item The absolute value of ANGLE may exceed $2\pi$.  In cases where it
+        does not, it is up to the caller to test for and handle the
+        case where ANGLE is very nearly $2\pi$ and rounds up to $360^{\circ}$,
+        by testing for IDMSF(1)=360 and setting IDMSF(1-4) to zero.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DR2TF}{Radians to Hour,Min,Sec,Frac}
+{
+ \action{Convert an angle in radians to hours, minutes, seconds,
+         fraction (double precision).}
+ \call{CALL sla\_DR2TF (NDP, ANGLE, SIGN, IHMSF)}
+}
+\args{GIVEN}
+{
+ \spec{NDP}{I}{number of decimal places of seconds} \\
+ \spec{ANGLE}{D}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{SIGN}{C}{`+' or `$-$'} \\
+ \spec{IHMSF}{I(4)}{hours, minutes, seconds, fraction}
+}
+\notes
+{
+ \begin{enumerate}
+  \item NDP less than zero is interpreted as zero.
+  \item The largest useful value for NDP is determined by the size
+        of ANGLE, the format of DOUBLE PRECISION floating-point
+        numbers on the target machine, and the risk of overflowing
+        IHMSF(4).  On some architectures, for ANGLE up to 2pi, the
+        available floating-point precision corresponds roughly to
+        NDP=12.  However, the practical limit is NDP=9, set by the
+        capacity of a typical 32-bit IHMSF(4).
+  \item The absolute value of ANGLE may exceed $2\pi$.  In cases where it
+        does not, it is up to the caller to test for and handle the
+        case where ANGLE is very nearly $2\pi$ and rounds up to 24~hours,
+        by testing for IHMSF(1)=24 and setting IHMSF(1-4) to zero.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DRANGE}{Put Angle into Range $\pm\pi$}
+{
+ \action{Normalize an angle into the range $\pm\pi$ (double precision).}
+ \call{D~=~sla\_DRANGE (ANGLE)}
+}
+\args{GIVEN}
+{
+ \spec{ANGLE}{D}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DRANGE}{D}{ANGLE expressed in the range $\pm\pi$.}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DRANRM}{Put Angle into Range $0\!-\!2\pi$}
+{
+ \action{Normalize an angle into the range $0\!-\!2\pi$
+         (double precision).}
+ \call{D~=~sla\_DRANRM (ANGLE)}
+}
+\args{GIVEN}
+{
+ \spec{ANGLE}{D}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DRANRM}{D}{ANGLE expressed in the range $0\!-\!2\pi$}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DS2C6}{Spherical Pos/Vel to Cartesian}
+{
+ \action{Conversion of position \& velocity in spherical coordinates
+         to Cartesian coordinates (double precision).}
+ \call{CALL sla\_DS2C6 (A, B, R, AD, BD, RD, V)}
+}
+\args{GIVEN}
+{
+ \spec{A}{D}{longitude (radians) -- for example $\alpha$} \\
+ \spec{B}{D}{latitude (radians) -- for example $\delta$} \\
+ \spec{R}{D}{radial coordinate} \\
+ \spec{AD}{D}{longitude derivative (radians per unit time)} \\
+ \spec{BD}{D}{latitude derivative (radians per unit time)} \\
+ \spec{RD}{D}{radial derivative}
+}
+\args{RETURNED}
+{
+ \spec{V}{D(6)}{\xyzxyzd}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DS2TP}{Spherical to Tangent Plane}
+{
+ \action{Projection of spherical coordinates onto the tangent plane
+         (double precision).}
+ \call{CALL sla\_DS2TP (RA, DEC, RAZ, DECZ, XI, ETA, J)}
+}
+\args{GIVEN}
+{
+ \spec{RA,DEC}{D}{spherical coordinates of star (radians)} \\
+ \spec{RAZ,DECZ}{D}{spherical coordinates of tangent point (radians)}
+}
+\args{RETURNED}
+{
+ \spec{XI,ETA}{D}{tangent plane coordinates (radians)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK, star on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 1 = error, star too far from axis} \\
+ \spec{}{}{\hspace{1.5em} 2 = error, antistar on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 3 = error, antistar too far from axis}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item When working in \xyz\ rather than spherical coordinates, the
+        equivalent Cartesian routine sla\_DV2TP is available.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DSEP}{Angle Between 2 Points on Sphere}
+{
+ \action{Angle between two points on a sphere (double precision).}
+ \call{D~=~sla\_DSEP (A1, B1, A2, B2)}
+}
+\args{GIVEN}
+{
+ \spec{A1,B1}{D}{spherical coordinates of one point (radians)} \\
+ \spec{A2,B2}{D}{spherical coordinates of the other point (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DSEP}{D}{angle between [A1,B1] and [A2,B2] in radians}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The spherical coordinates are right ascension and declination,
+        longitude and latitude, {\it etc.}, in radians.
+  \item The result is always positive.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DSEPV}{Angle Between 2 Vectors}
+{
+ \action{Angle between two vectors (double precision).}
+ \call{D~=~sla\_DSEPV (V1, V2)}
+}
+\args{GIVEN}
+{
+ \spec{V1}{D(3)}{first vector} \\
+ \spec{V2}{D(3)}{second vector}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DSEPV}{D}{angle between V1 and V2 in radians}
+}
+\notes
+{
+ \begin{enumerate}
+  \item There is no requirement for either vector to be of unit length.
+  \item If either vector is null, zero is returned.
+  \item The result is always positive.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DT}{Approximate ET minus UT}
+{
+ \action{Estimate $\Delta$T, the offset between dynamical time
+         and Universal Time, for a given historical epoch.}
+ \call{D~=~sla\_DT (EPOCH)}
+}
+\args{GIVEN}
+{
+ \spec{EPOCH}{D}{(Julian) epoch ({\it e.g.}\ 1850D0)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DT}{D}{approximate ET$-$UT (after 1984, TT$-$UT1) in seconds}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Depending on the epoch, one of three parabolic approximations
+        is used:
+\begin{tabbing}
+xx \= xxxxxxxxxxxxxxxxxx \= \kill
+\> before AD 979 \> Stephenson \& Morrison's 390 BC to AD 948 model \\
+\> AD 979 to AD 1708 \> Stephenson \& Morrison's AD 948 to AD 1600 model \\
+\> after AD 1708 \> McCarthy \& Babcock's post-1650 model
+\end{tabbing}
+        The breakpoints are chosen to ensure continuity:  they occur
+        at places where the adjacent models give the same answer as
+        each other.
+  \item The accuracy is modest, with errors of up to $20^{\rm s}$ during
+        the interval since 1650, rising to perhaps $30^{\rm m}$
+        by 1000~BC.  Comparatively accurate values from AD~1600
+        are tabulated in
+        the {\it Astronomical Almanac}\/ (see section K8 of the 1995
+        edition).
+  \item The use of {\tt DOUBLE PRECISION} for both argument and result is
+        simply for compatibility with other SLALIB time routines.
+  \item The models used are based on a lunar tidal acceleration value
+        of \arcsec{-26}{00} per century.
+ \end{enumerate}
+}
+\aref{Seidelmann, P.K.\ (ed), 1992.  {\it Explanatory
+      Supplement to the Astronomical Almanac,}\/ ISBN~0-935702-68-7.
+      This contains references to the papers by Stephenson \& Morrison
+      and by McCarthy \& Babcock which describe the models used here.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTF2D}{Hour,Min,Sec to Days}
+{
+ \action{Convert hours, minutes, seconds to days (double precision).}
+ \call{CALL sla\_DTF2D (IHOUR, IMIN, SEC, DAYS, J)}
+}
+\args{GIVEN}
+{
+ \spec{IHOUR}{I}{hours} \\
+ \spec{IMIN}{I}{minutes} \\
+ \spec{SEC}{D}{seconds}
+}
+\args{RETURNED}
+{
+ \spec{DAYS}{D}{interval in days} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{1.5em} 1 = IHOUR outside range 0-23} \\
+ \spec{}{}{\hspace{1.5em} 2 = IMIN outside range 0-59} \\
+ \spec{}{}{\hspace{1.5em} 3 = SEC outside range 0-59.999$\cdots$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is computed even if any of the range checks fail.
+  \item The sign must be dealt with outside this routine.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTF2R}{Hour,Min,Sec to Radians}
+{
+ \action{Convert hours, minutes, seconds to radians (double precision).}
+ \call{CALL sla\_DTF2R (IHOUR, IMIN, SEC, RAD, J)}
+}
+\args{GIVEN}
+{
+ \spec{IHOUR}{I}{hours} \\
+ \spec{IMIN}{I}{minutes} \\
+ \spec{SEC}{D}{seconds}
+}
+\args{RETURNED}
+{
+ \spec{RAD}{D}{angle in radians} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{1.5em} 1 = IHOUR outside range 0-23} \\
+ \spec{}{}{\hspace{1.5em} 2 = IMIN outside range 0-59} \\
+ \spec{}{}{\hspace{1.5em} 3 = SEC outside range 0-59.999$\cdots$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is computed even if any of the range checks fail.
+  \item The sign must be dealt with outside this routine.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTP2S}{Tangent Plane to Spherical}
+{
+ \action{Transform tangent plane coordinates into spherical
+         coordinates (double precision)}
+ \call{CALL sla\_DTP2S (XI, ETA, RAZ, DECZ, RA, DEC)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{D}{tangent plane rectangular coordinates (radians)} \\
+ \spec{RAZ,DECZ}{D}{spherical coordinates of tangent point (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RA,DEC}{D}{spherical coordinates (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item When working in \xyz\ rather than spherical coordinates, the
+        equivalent Cartesian routine sla\_DTP2V is available.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTP2V}{Tangent Plane to Direction Cosines}
+{
+ \action{Given the tangent-plane coordinates of a star and the direction
+         cosines of the tangent point, determine the direction cosines
+         of the star
+         (double precision).}
+ \call{CALL sla\_DTP2V (XI, ETA, V0, V)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{D}{tangent plane coordinates of star (radians)} \\
+ \spec{V0}{D(3)}{direction cosines of tangent point}
+}
+\args{RETURNED}
+{
+ \spec{V}{D(3)}{direction cosines of star}
+}
+\notes
+{
+ \begin{enumerate}
+  \item If vector V0 is not of unit length, the returned vector V will
+        be wrong.
+  \item If vector V0 points at a pole, the returned vector V will be
+        based on the arbitrary assumption that $\alpha=0$ at
+        the tangent point.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item This routine is the Cartesian equivalent of the routine sla\_DTP2S.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTPS2C}{Plate centre from $\xi,\eta$ and $\alpha,\delta$}
+{
+ \action{From the tangent plane coordinates of a star of known \radec,
+        determine the \radec\ of the tangent point (double precision)}
+ \call{CALL sla\_DTPS2C (XI, ETA, RA, DEC, RAZ1, DECZ1, RAZ2, DECZ2, N)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{D}{tangent plane rectangular coordinates (radians)} \\
+ \spec{RA,DEC}{D}{spherical coordinates (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RAZ1,DECZ1}{D}{spherical coordinates of tangent point,
+                      solution 1} \\
+ \spec{RAZ2,DECZ2}{D}{spherical coordinates of tangent point,
+                      solution 2} \\
+ \spec{N}{I}{number of solutions:} \\
+ \spec{}{}{\hspace{1em} 0 = no solutions returned  (note 2)} \\
+ \spec{}{}{\hspace{1em} 1 = only the first solution is useful (note 3)} \\
+ \spec{}{}{\hspace{1em} 2 = there are two useful solutions (note 3)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The RAZ1 and RAZ2 values returned are in the range $0\!-\!2\pi$.
+  \item Cases where there is no solution can only arise near the poles.
+        For example, it is clearly impossible for a star at the pole
+        itself to have a non-zero $\xi$ value, and hence it is
+        meaningless to ask where the tangent point would have to be
+        to bring about this combination of $\xi$ and $\delta$.
+  \item Also near the poles, cases can arise where there are two useful
+        solutions.  The argument N indicates whether the second of the
+        two solutions returned is useful.  N\,=\,1
+        indicates only one useful solution, the usual case;  under
+        these circumstances, the second solution corresponds to the
+        ``over-the-pole'' case, and this is reflected in the values
+        of RAZ2 and DECZ2 which are returned.
+  \item The DECZ1 and DECZ2 values returned are in the range $\pm\pi$,
+        but in the ordinary, non-pole-crossing, case, the range is
+        $\pm\pi/2$.
+  \item RA, DEC, RAZ1, DECZ1, RAZ2, DECZ2 are all in radians.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item When working in \xyz\ rather than spherical coordinates, the
+        equivalent Cartesian routine sla\_DTPV2C is available.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTPV2C}{Plate centre from $\xi,\eta$ and $x,y,z$}
+{
+ \action{From the tangent plane coordinates of a star of known
+         direction cosines, determine the direction cosines
+         of the tangent point (double precision)}
+ \call{CALL sla\_DTPV2C (XI, ETA, V, V01, V02, N)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{D}{tangent plane coordinates of star (radians)} \\
+ \spec{V}{D(3)}{direction cosines of star}
+}
+\args{RETURNED}
+{
+ \spec{V01}{D(3)}{direction cosines of tangent point, solution 1} \\
+ \spec{V02}{D(3)}{direction cosines of tangent point, solution 2} \\
+ \spec{N}{I}{number of solutions:} \\
+ \spec{}{}{\hspace{1em} 0 = no solutions returned  (note 2)} \\
+ \spec{}{}{\hspace{1em} 1 = only the first solution is useful (note 3)} \\
+ \spec{}{}{\hspace{1em} 2 = there are two useful solutions (note 3)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The vector V must be of unit length or the result will be wrong.
+  \item Cases where there is no solution can only arise near the poles.
+        For example, it is clearly impossible for a star at the pole
+        itself to have a non-zero XI value.
+  \item Also near the poles, cases can arise where there are two useful
+        solutions.  The argument N indicates whether the second of the
+        two solutions returned is useful.
+        N\,=\,1
+        indicates only one useful solution, the usual case;  under these
+        circumstances, the second solution can be regarded as valid if
+        the vector V02 is interpreted as the ``over-the-pole'' case.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item This routine is the Cartesian equivalent of the routine sla\_DTPS2C.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DTT}{TT minus UTC}
+{
+ \action{Compute $\Delta$TT, the increment to be applied to
+         Coordinated Universal Time UTC to give
+         Terrestrial Time TT.}
+ \call{D~=~sla\_DTT (DJU)}
+}
+\args{GIVEN}
+{
+ \spec{DJU}{D}{UTC date as a modified JD (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DTT}{D}{TT$-$UTC in seconds}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The UTC is specified to be a date rather than a time to indicate
+        that care needs to be taken not to specify an instant which lies
+        within a leap second.  Though in most cases UTC can include the
+        fractional part, correct behaviour on the day of a leap second
+        can be guaranteed only up to the end of the second
+        $23^{\rm h}\,59^{\rm m}\,59^{\rm s}$.
+  \item Pre 1972 January 1 a fixed value of 10 + ET$-$TAI is returned.
+  \item TT is one interpretation of the defunct time scale
+        {\it Ephemeris Time}, ET.
+  \item See also the routine sla\_DT, which roughly estimates ET$-$UT for
+        historical epochs.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DV2TP}{Direction Cosines to Tangent Plane}
+{
+ \action{Given the direction cosines of a star and of the tangent point,
+         determine the star's tangent-plane coordinates
+         (double precision).}
+ \call{CALL sla\_DV2TP (V, V0, XI, ETA, J)}
+}
+\args{GIVEN}
+{
+ \spec{V}{D(3)}{direction cosines of star} \\
+ \spec{V0}{D(3)}{direction cosines of tangent point}
+}
+\args{RETURNED}
+{
+ \spec{XI,ETA}{D}{tangent plane coordinates (radians)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK, star on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 1 = error, star too far from axis} \\
+ \spec{}{}{\hspace{1.5em} 2 = error, antistar on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 3 = error, antistar too far from axis}
+}
+\notes
+{
+ \begin{enumerate}
+  \item If vector V0 is not of unit length, or if vector V is of zero
+        length, the results will be wrong.
+  \item If V0 points at a pole, the returned $\xi,\eta$
+        will be based on the
+        arbitrary assumption that $\alpha=0$ at the tangent point.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item This routine is the Cartesian equivalent of the routine sla\_DS2TP.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DVDV}{Scalar Product}
+{
+ \action{Scalar product of two 3-vectors (double precision).}
+ \call{D~=~sla\_DVDV (VA, VB)}
+}
+\args{GIVEN}
+{
+ \spec{VA}{D(3)}{first vector} \\
+ \spec{VB}{D(3)}{second vector}
+}
+\args{RETURNED}
+{
+ \spec{sla\_DVDV}{D}{scalar product VA.VB}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_DVN}{Normalize Vector}
+{
+ \action{Normalize a 3-vector, also giving the modulus (double precision).}
+ \call{CALL sla\_DVN (V, UV, VM)}
+}
+\args{GIVEN}
+{
+ \spec{V}{D(3)}{vector}
+}
+\args{RETURNED}
+{
+ \spec{UV}{D(3)}{unit vector in direction of V} \\
+ \spec{VM}{D}{modulus of V}
+}
+\anote{If the modulus of V is zero, UV is set to zero as well.}
+%-----------------------------------------------------------------------
+\routine{SLA\_DVXV}{Vector Product}
+{
+ \action{Vector product of two 3-vectors (double precision).}
+ \call{CALL sla\_DVXV (VA, VB, VC)}
+}
+\args{GIVEN}
+{
+ \spec{VA}{D(3)}{first vector} \\
+ \spec{VB}{D(3)}{second vector}
+}
+\args{RETURNED}
+{
+ \spec{VC}{D(3)}{vector product VA$\times$VB}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_E2H}{$h,\delta$ to Az,El}
+{
+ \action{Equatorial to horizon coordinates
+         (single precision).}
+ \call{CALL sla\_DE2H (HA, DEC, PHI, AZ, EL)}
+}
+\args{GIVEN}
+{
+ \spec{HA}{R}{hour angle (radians)} \\
+ \spec{DEC}{R}{declination (radians)} \\
+ \spec{PHI}{R}{latitude (radians)}
+}
+\args{RETURNED}
+{
+ \spec{AZ}{R}{azimuth (radians)} \\
+ \spec{EL}{R}{elevation (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Azimuth is returned in the range $0\!-\!2\pi$;  north is zero,
+        and east is $+\pi/2$.  Elevation is returned in the range
+        $\pm\pi$.
+  \item The latitude must be geodetic.  In critical applications,
+        corrections for polar motion should be applied.
+  \item In some applications it will be important to specify the
+        correct type of hour angle and declination in order to
+        produce the required type of azimuth and elevation.  In
+        particular, it may be important to distinguish between
+        elevation as affected by refraction, which would
+        require the {\it observed} \hadec, and the elevation
+        {\it in vacuo}, which would require the {\it topocentric}
+        \hadec.
+        If the effects of diurnal aberration can be neglected, the
+        {\it apparent} \hadec\ may be used instead of the topocentric
+        \hadec.
+  \item No range checking of arguments is carried out.
+  \item In applications which involve many such calculations, rather
+        than calling the present routine it will be more efficient to
+        use inline code, having previously computed fixed terms such
+        as sine and cosine of latitude, and (for tracking a star)
+        sine and cosine of declination.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EARTH}{Approx Earth Pos/Vel}
+{
+ \action{Approximate heliocentric position and velocity of the Earth
+         (single precision).}
+ \call{CALL sla\_EARTH (IY, ID, FD, PV)}
+}
+\args{GIVEN}
+{
+ \spec{IY}{I}{year} \\
+ \spec{ID}{I}{day in year (1 = Jan 1st)} \\
+ \spec{FD}{R}{fraction of day}
+}
+\args{RETURNED}
+{
+ \spec{PV}{R(6)}{Earth \xyzxyzd\ (AU, AU~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The date and time is TDB (loosely ET) in a Julian calendar
+        which has been aligned to the ordinary Gregorian
+        calendar for the interval 1900~March~1 to 2100~February~28.
+        The year and day can be obtained by calling sla\_CALYD or
+        sla\_CLYD.
+  \item The Earth heliocentric 6-vector is referred to the
+        FK4 mean equator and equinox of date.
+  \item Maximum/RMS errors 1950-2050:
+        \begin{itemize}
+         \item 13/5~$\times10^{-5}$~AU = 19200/7600~km in position
+         \item 47/26~$\times10^{-10}$~AU~s$^{-1}$ =
+               0.0070/0.0039~km~s$^{-1}$ in speed
+        \end{itemize}
+  \item More accurate results are obtainable with the routines sla\_EVP
+        and sla\_EPV.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_ECLEQ}{Ecliptic to Equatorial}
+{
+ \action{Transformation from ecliptic longitude and latitude to
+         J2000.0 \radec.}
+ \call{CALL sla\_ECLEQ (DL, DB, DATE, DR, DD)}
+}
+\args{GIVEN}
+{
+ \spec{DL,DB}{D}{ecliptic longitude and latitude
+                          (mean of date, IAU 1980 theory, radians)} \\
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date
+                                             (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{DR,DD}{D}{J2000.0 mean \radec\ (radians)}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_ECMAT}{Form $\alpha,\delta\rightarrow\lambda,\beta$ Matrix}
+{
+ \action{Form the equatorial to ecliptic rotation matrix (IAU 1980 theory).}
+ \call{CALL sla\_ECMAT (DATE, RMAT)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date
+                                           (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{RMAT}{D(3,3)}{rotation matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item RMAT is matrix {\bf M} in the expression
+        {\bf v}$_{ecl}$~=~{\bf M}$\cdot${\bf v}$_{equ}$.
+  \item The equator, equinox and ecliptic are mean of date.
+ \end{enumerate}
+}
+\aref{Murray, C.A., {\it Vectorial Astrometry}, section 4.3.}
+%-----------------------------------------------------------------------
+\routine{SLA\_ECOR}{RV \& Time Corrns to Sun}
+{
+ \action{Component of Earth orbit velocity and heliocentric
+         light time in a given direction.}
+ \call{CALL sla\_ECOR (RM, DM, IY, ID, FD, RV, TL)}
+}
+\args{GIVEN}
+{
+ \spec{RM,DM}{R}{mean \radec\ of date (radians)} \\
+ \spec{IY}{I}{year} \\
+ \spec{ID}{I}{day in year (1 = Jan 1st)} \\
+ \spec{FD}{R}{fraction of day}
+}
+\args{RETURNED}
+{
+ \spec{RV}{R}{component of Earth orbital velocity (km~s$^{-1}$)} \\
+ \spec{TL}{R}{component of heliocentric light time (s)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The date and time is TDB (loosely ET) in a Julian calendar
+        which has been aligned to the ordinary Gregorian
+        calendar for the interval 1900 March 1 to 2100 February 28.
+        The year and day can be obtained by calling sla\_CALYD or
+        sla\_CLYD.
+  \item Sign convention:
+        \begin{itemize}
+         \item The velocity component is +ve when the
+               Earth is receding from
+               the given point on the sky.
+         \item The light time component is +ve
+               when the Earth lies between the Sun and
+               the given point on the sky.
+        \end{itemize}
+ \item Accuracy:
+       \begin{itemize}
+        \item The velocity component is usually within 0.004~km~s$^{-1}$
+              of the correct value and is never in error by more than
+              0.007~km~s$^{-1}$.
+        \item The error in light time correction is about
+              \tsec{0}{03} at worst,
+              but is usually better than \tsec{0}{01}.
+       \end{itemize}
+       For applications requiring higher accuracy, see the sla\_EVP
+       and sla\_EPV routines.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EG50}{B1950 $\alpha,\delta$ to Galactic}
+{
+ \action{Transformation from B1950.0 FK4 equatorial coordinates to
+         IAU 1958 galactic coordinates.}
+ \call{CALL sla\_EG50 (DR, DD, DL, DB)}
+}
+\args{GIVEN}
+{
+ \spec{DR,DD}{D}{B1950.0 \radec\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{DL,DB}{D}{galactic longitude and latitude \gal\ (radians)}
+}
+\anote{The equatorial coordinates are B1950.0 FK4.  Use the
+       routine sla\_EQGAL if conversion from J2000.0 FK5 coordinates
+       is required.}
+\aref{Blaauw {\it et al.}, 1960, {\it Mon.Not.R.astr.Soc.},
+      {\bf 121}, 123.}
+%-----------------------------------------------------------------------
+\routine{SLA\_EL2UE}{Conventional to Universal Elements}
+{
+ \action{Transform conventional osculating orbital elements
+         into ``universal'' form.}
+ \call{CALL sla\_EL2UE (\vtop{
+         \hbox{DATE, JFORM, EPOCH, ORBINC, ANODE,}
+         \hbox{PERIH, AORQ, E, AORL, DM,}
+         \hbox{U, JSTAT)}}}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{epoch (TT MJD) of osculation (Note~3)} \\
+ \spec{JFORM}{I}{choice of element set (1-3; Note~6)} \\
+ \spec{EPOCH}{D}{epoch of elements ($t_0$ or $T$, TT MJD)} \\
+ \spec{ORBINC}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH}{D}{longitude or argument of perihelion
+                            ($\varpi$ or $\omega$,} \\
+ \spec{}{}{\hspace{1.5em} radians)} \\
+ \spec{AORQ}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E}{D}{eccentricity ($e$)} \\
+ \spec{AORL}{D}{mean anomaly or longitude
+                               ($M$ or $L$, radians,} \\
+ \spec{}{}{\hspace{1.5em} JFORM=1,2 only)} \\
+ \spec{DM}{D}{daily motion ($n$, radians, JFORM=1 only)}
+}
+\args{RETURNED}
+{
+ \spec{U}{D(13)}{universal orbital elements (Note~1)} \\
+ \specel {(1)}     {combined mass ($M+m$)} \\
+ \specel {(2)}     {total energy of the orbit ($\alpha$)} \\
+ \specel {(3)}     {reference (osculating) epoch ($t_0$)} \\
+ \specel {(4-6)}   {position at reference epoch (${\rm \bf r}_0$)} \\
+ \specel {(7-9)}   {velocity at reference epoch (${\rm \bf v}_0$)} \\
+ \specel {(10)}    {heliocentric distance at reference epoch} \\
+ \specel {(11)}    {${\rm \bf r}_0.{\rm \bf v}_0$} \\
+ \specel {(12)}    {date ($t$)} \\
+ \specel {(13)}    {universal eccentric anomaly ($\psi$) of date,
+                    approx} \\ \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{1.95em}       0 = OK} \\
+ \spec{}{}{\hspace{1.2em}  $-$1 = illegal JFORM} \\
+ \spec{}{}{\hspace{1.2em}   $-$2 = illegal E} \\
+ \spec{}{}{\hspace{1.2em}   $-$3 = illegal AORQ} \\
+ \spec{}{}{\hspace{1.2em}   $-$4 = illegal DM} \\
+ \spec{}{}{\hspace{1.2em}   $-$5 = numerical error}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The ``universal'' elements are those which define the orbit for
+        the purposes of the method of universal variables (see reference).
+        They consist of the combined mass of the two bodies, an epoch,
+        and the position and velocity vectors (arbitrary reference frame)
+        at that epoch.  The parameter set used here includes also various
+        quantities that can, in fact, be derived from the other
+        information.  This approach is taken to avoiding unnecessary
+        computation and loss of accuracy.  The supplementary quantities
+        are (i)~$\alpha$, which is proportional to the total energy of the
+        orbit, (ii)~the heliocentric distance at epoch,
+        (iii)~the outwards component of the velocity at the given epoch,
+        (iv)~an estimate of $\psi$, the ``universal eccentric anomaly'' at a
+        given date and (v)~that date.
+  \item The companion routine is sla\_UE2PV.  This takes the set of numbers
+        that the present routine outputs and uses them to derive the
+        object's position and velocity.  A single prediction requires one
+        call to the present routine followed by one call to sla\_UE2PV;
+        for convenience, the two calls are packaged as the routine
+        sla\_PLANEL.  Multiple predictions may be made by again calling the
+        present routine once, but then calling sla\_UE2PV multiple times,
+        which is faster than multiple calls to sla\_PLANEL.
+  \item DATE is the epoch of osculation.  It is in the TT time scale
+        (formerly Ephemeris Time, ET) and is a Modified Julian Date
+        (JD$-$2400000.5).
+  \item The supplied orbital elements are with respect to the J2000
+        ecliptic and equinox.  The position and velocity parameters
+        returned in the array U are with respect to the mean equator and
+        equinox of epoch J2000, and are for the perihelion prior to the
+        specified epoch.
+  \item The universal elements returned in the array U are in canonical
+        units (solar masses, AU and canonical days).
+  \item Three different element-format options are supported, as
+        follows. \\
+
+        JFORM=1, suitable for the major planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> longitude of perihelion $\varpi$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean longitude $L$ (radians) \\
+        \> DM     \> = \> daily motion $n$ (radians)
+        \end{tabbing}
+
+        JFORM=2, suitable for minor planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean anomaly $M$ (radians)
+        \end{tabbing}
+
+        JFORM=3, suitable for comets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of perihelion $T$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> perihelion distance $q$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e \leq 10 )$
+        \end{tabbing}
+  \item Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are
+        not accessed.
+  \item The algorithm was originally adapted from the EPHSLA program of
+        D.\,H.\,P.\,Jones (private communication, 1996).  The method
+        is based on Stumpff's Universal Variables.
+ \end{enumerate}
+}
+\aref{Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.}
+%------------------------------------------------------------------------------
+\routine{SLA\_EPB}{MJD to Besselian Epoch}
+{
+ \action{Conversion of Modified Julian Date to Besselian Epoch.}
+ \call{D~=~sla\_EPB (DATE)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{Modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_EPB}{D}{Besselian Epoch}
+}
+\aref{Lieske, J.H., 1979, {\it Astr.Astrophys.}\ {\bf 73}, 282.}
+%-----------------------------------------------------------------------
+\routine{SLA\_EPB2D}{Besselian Epoch to MJD}
+{
+ \action{Conversion of Besselian Epoch to Modified Julian Date.}
+ \call{D~=~sla\_EPB2D (EPB)}
+}
+\args{GIVEN}
+{
+ \spec{EPB}{D}{Besselian Epoch}
+}
+\args{RETURNED}
+{
+ \spec{sla\_EPB2D}{D}{Modified Julian Date (JD$-$2400000.5)}
+}
+\aref{Lieske, J.H., 1979. {\it Astr.Astrophys.}\ {\bf 73}, 282.}
+%-----------------------------------------------------------------------
+\routine{SLA\_EPCO}{Convert Epoch to B or J}
+{
+ \action{Convert an epoch to Besselian or Julian to match another one.}
+ \call{D~=~sla\_EPCO (K0, K, E)}
+
+}
+\args{GIVEN}
+{
+ \spec{K0}{C}{form of result:  `B'=Besselian, `J'=Julian} \\
+ \spec{K}{C}{form of given epoch:  `B' or `J'} \\
+ \spec{E}{D}{epoch}
+}
+\args{RETURNED}
+{
+ \spec{sla\_EPCO}{D}{the given epoch converted as necessary}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The result is always either equal to or very close to
+        the given epoch E.  The routine is required only in
+        applications where punctilious treatment of heterogeneous
+        mixtures of star positions is necessary.
+  \item K0 and K are not validated.  They are interpreted as follows:
+        \begin{itemize}
+         \item If K0 and K are the same, the result is E.
+         \item If K0 is `B' and K isn't, the conversion is J to B.
+         \item In all other cases, the conversion is B to J.
+        \end{itemize}
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EPJ}{MJD to Julian Epoch}
+{
+ \action{Convert Modified Julian Date to Julian Epoch.}
+ \call{D~=~sla\_EPJ (DATE)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{Modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_EPJ}{D}{Julian Epoch}
+}
+\aref{Lieske, J.H., 1979.\ {\it Astr.Astrophys.}, {\bf 73}, 282.}
+%-----------------------------------------------------------------------
+\routine{SLA\_EPJ2D}{Julian Epoch to MJD}
+{
+ \action{Convert Julian Epoch to Modified Julian Date.}
+ \call{D~=~sla\_EPJ2D (EPJ)}
+}
+\args{GIVEN}
+{
+ \spec{EPJ}{D}{Julian Epoch}
+}
+\args{RETURNED}
+{
+ \spec{sla\_EPJ2D}{D}{Modified Julian Date (JD$-$2400000.5)}
+}
+\aref{Lieske, J.H., 1979.\ {\it Astr.Astrophys.}, {\bf 73}, 282.}
+%-----------------------------------------------------------------------
+\routine{SLA\_EPV}{Earth Position \& Velocity (high accuracy)}
+{
+ \action{Earth position and velocity, heliocentric and barycentric,
+         with respect to the Barycentric Celestial Reference System.}
+ \call{CALL sla\_EPV (DATE, PH, VH, PB, VB)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB Modified Julian Date (Note~1)}
+}
+\args{RETURNED}
+{
+ \spec{PH}{D(3)}{heliocentric \xyz, AU} \\
+ \spec{VH}{D(3)}{heliocentric \xyzd, AU~d$^{-1}$} \\
+ \spec{PB}{D(3)}{barycentric \xyz, AU} \\
+ \spec{VB}{D(3)}{barycentric \xyzd, AU~d$^{-1}$}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The date is TDB as MJD (=JD$-$2400000.5).  TT can be used
+        instead of TDB in most applications.
+  \item The vectors are with respect to the Barycentric Celestial
+        Reference System (BCRS).  Positions are in AU;  velocities are in
+        AU per TDB day.
+  \item The routine is a {\it simplified solution}\/ from the planetary
+        theory VSOP2000 (X.\,Moisson, P.\,Bretagnon, 2001, Celes. Mechanics
+        \& Dyn. Astron., {\bf 80}, 3/4, 205-213) and is an adaptation of
+        original Fortran code supplied by P.\,Bretagnon (private
+        communication, 2000).
+  \item Comparisons over the time span 1900-2100 with this simplified
+        solution and the JPL DE405 ephemeris give the following results:
+        \begin{tabbing}
+        xxx \= xxxxxxxxxxxxxxxxxxx \= xxxxxx \= xxxxxxx \= \kill
+        \>               \> RMS \> max \\
+        \> Heliocentric: \\
+        \> ~~~~~position error \> 3.7 \> 11.2 \> km \\
+        \> ~~~~~velocity error \> 1.4 \> ~5.0 \> mm/s \\
+        \> Barycentric: \\
+        \> ~~~~~position error \> 4.6 \> 13.4 \> km \\
+        \> ~~~~~velocity error \> 1.4 \> ~4.9 \> mm/s
+        \end{tabbing}
+        The results deteriorate outside this time span.
+  \item The routine sla\_EVP is faster but less accurate.
+        The present routine targets the case where high
+        accuracy is more important
+        than CPU time, yet the extra complication of reading a
+        pre-computed ephemeris is not justified.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EQECL}{J2000 $\alpha,\delta$ to Ecliptic}
+{
+ \action{Transformation from J2000.0 equatorial coordinates to
+         ecliptic longitude and latitude.}
+ \call{CALL sla\_EQECL (DR, DD, DATE, DL, DB)}
+}
+\args{GIVEN}
+{
+ \spec{DR,DD}{D}{J2000.0 mean \radec\ (radians)} \\
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{DL,DB}{D}{ecliptic longitude and latitude
+                        (mean of date, IAU 1980 theory, radians)}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EQEQX}{Equation of the Equinoxes}
+{
+ \action{Equation of the equinoxes (IAU 1994).}
+ \call{D~=~sla\_EQEQX (DATE)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_EQEQX}{D}{The equation of the equinoxes (radians)}
+}
+\notes{
+ \begin{enumerate}
+  \item The equation of the equinoxes is defined here as GAST~$-$~GMST:
+        it is added to a {\it mean}\/ sidereal time to give the
+        {\it apparent}\/ sidereal time.
+  \item The change from the classic ``textbook'' expression
+        $\Delta\psi\,cos\,\epsilon$ occurred with IAU Resolution C7,
+        Recommendation~3 (1994).  The new formulation takes into
+        account cross-terms between the various precession and
+        nutation quantities, amounting to about 3~milliarcsec.
+        The transition from the old to the new model officially
+        took place on 1997 February~27.
+ \end{enumerate}
+}
+\aref{Capitaine, N.\ \& Gontier, A.-M.\ (1993),
+      {\it Astron. Astrophys.},
+      {\bf 275}, 645-650.}
+%-----------------------------------------------------------------------
+\routine{SLA\_EQGAL}{J2000 $\alpha,\delta$ to Galactic}
+{
+ \action{Transformation from J2000.0 FK5 equatorial coordinates to
+ IAU 1958 galactic coordinates.}
+ \call{CALL sla\_EQGAL (DR, DD, DL, DB)}
+}
+\args{GIVEN}
+{
+ \spec{DR,DD}{D}{J2000.0 \radec\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{DL,DB}{D}{galactic longitude and latitude \gal\ (radians)}
+}
+\anote{The equatorial coordinates are J2000.0 FK5.  Use the routine
+       sla\_EG50 if conversion from B1950.0 FK4 coordinates is required.}
+\aref{Blaauw {\it et al.}, 1960, {\it Mon.Not.R.astr.Soc.},
+      {\bf 121}, 123.}
+%-----------------------------------------------------------------------
+\routine{SLA\_ETRMS}{E-terms of Aberration}
+{
+ \action{Compute the E-terms vector -- the part of the annual
+         aberration which arises from the eccentricity of the
+         Earth's orbit.}
+ \call{CALL sla\_ETRMS (EP, EV)}
+}
+\args{GIVEN}
+{
+ \spec{EP}{D}{Besselian epoch}
+}
+\args{RETURNED}
+{
+ \spec{EV}{D(3)}{E-terms as $[\Delta x, \Delta y, \Delta z\,]$}
+}
+\anote{Note the use of the J2000 aberration constant (\arcsec{20}{49552}).
+       This is a reflection of the fact that the E-terms embodied in
+       existing star catalogues were computed from a variety of
+       aberration constants.  Rather than adopting one of the old
+       constants the latest value is used here.}
+\refs
+{
+ \begin{enumerate}
+  \item Smith, C.A.\ {\it et al.}, 1989.  {\it Astr.J.}\ {\bf 97}, 265.
+  \item Yallop, B.D.\ {\it et al.}, 1989.  {\it Astr.J.}\ {\bf 97}, 274.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EULER}{Rotation Matrix from Euler Angles}
+{
+ \action{Form a rotation matrix from the Euler angles -- three
+         successive rotations about specified Cartesian axes
+         (single precision).}
+ \call{CALL sla\_EULER (ORDER, PHI, THETA, PSI, RMAT)}
+}
+\args{GIVEN}
+{
+ \spec{ORDER}{C*(*)}{specifies about which axes the rotations occur} \\
+ \spec{PHI}{R}{1st rotation (radians)} \\
+ \spec{THETA}{R}{2nd rotation (radians)} \\
+ \spec{PSI}{R}{3rd rotation (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RMAT}{R(3,3)}{rotation matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item A rotation is positive when the reference frame rotates
+        anticlockwise as seen looking towards the origin from the
+        positive region of the specified axis.
+  \item The characters of ORDER define which axes the three successive
+        rotations are about.  A typical value is `ZXZ', indicating that
+        RMAT is to become the direction cosine matrix corresponding to
+        rotations of the reference frame through PHI radians about the
+        old {\it z}-axis, followed by THETA radians about the resulting
+        {\it x}-axis,
+        then PSI radians about the resulting {\it z}-axis.  In detail:
+        \begin{itemize}
+         \item The axis names can be any of the following, in any order or
+               combination:  X, Y, Z, uppercase or lowercase, 1, 2, 3.  Normal
+               axis labelling/numbering conventions apply;
+               the {\it xyz} ($\equiv123$)
+               triad is right-handed.  Thus, the `ZXZ' example given above
+               could be written `zxz' or `313' (or even `ZxZ' or `3xZ').
+         \item ORDER is terminated by length or by the first unrecognized
+               character.
+         \item Fewer than three rotations are acceptable, in which case
+               the later angle arguments are ignored.
+        \end{itemize}
+  \item Zero rotations produces the identity RMAT.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_EVP}{Earth Position \& Velocity}
+{
+ \action{Barycentric and heliocentric velocity and position of the Earth.}
+ \call{CALL sla\_EVP (DATE, DEQX, DVB, DPB, DVH, DPH)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (formerly ET) as a Modified Julian Date
+                                        (JD$-$2400000.5)} \\
+ \spec{DEQX}{D}{Julian Epoch ({\it e.g.}\ 2000D0) of mean equator and
+                equinox of the vectors returned.  If DEQX~$<0$,
+                  all vectors are referred to the mean equator and
+                  equinox (FK5) of date DATE.}
+}
+\args{RETURNED}
+{
+ \spec{DVB}{D(3)}{barycentric \xyzd, AU~s$^{-1}$} \\
+ \spec{DPB}{D(3)}{barycentric \xyz, AU} \\
+ \spec{DVH}{D(3)}{heliocentric \xyzd, AU~s$^{-1}$} \\
+ \spec{DPH}{D(3)}{heliocentric \xyz, AU}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine is accurate enough for many purposes but faster
+        and more compact than the sla\_EPV routine.  The maximum
+        deviations from the JPL~DE96 ephemeris are as follows:
+        \begin{itemize}
+         \item velocity (barycentric or heliocentric): 420~mm~s$^{-1}$
+         \item position (barycentric): 6900~km
+         \item position (heliocentric): 1600~km
+        \end{itemize}
+  \item The routine is adapted from the BARVEL and BARCOR
+        subroutines of Stumpff (1980).
+        Most of the changes are merely cosmetic and do not affect
+        the results at all.  However, some adjustments have been
+        made so as to give results that refer to the IAU 1976
+        `FK5' equinox and precession, although the differences these
+        changes make relative to the results from Stumpff's original
+        `FK4' version are smaller than the inherent accuracy of the
+        algorithm.  One minor shortcoming in the original routines
+        that has {\bf not} been corrected is that slightly better
+        numerical accuracy could be achieved if the various polynomial
+        evaluations were to be so arranged that the smallest terms were
+        computed first.
+ \end{enumerate}
+}
+\aref {Stumpff, P., 1980.,  {\it Astron.Astrophys.Suppl.Ser.}\
+       {\bf 41}, 1-8.}
+%-----------------------------------------------------------------------
+\routine{SLA\_FITXY}{Fit Linear Model to Two \xy\ Sets}
+{
+ \action{Fit a linear model to relate two sets of \xy\ coordinates.}
+ \call{CALL sla\_FITXY (ITYPE, NP, XYE, XYM, COEFFS, J)}
+}
+\args{GIVEN}
+{
+ \spec{ITYPE}{I}{type of model: 4 or 6 (note 1)} \\
+ \spec{NP}{I}{number of samples (note 2)} \\
+ \spec{XYE}{D(2,NP)}{expected \xy\ for each sample} \\
+ \spec{XYM}{D(2,NP)}{measured \xy\ for each sample}
+}
+\args{RETURNED}
+{
+ \spec{COEFFS}{D(6)}{coefficients of model (note 3)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK} \\
+ \spec{}{}{\hspace{0.7em} $-$1 = illegal ITYPE} \\
+ \spec{}{}{\hspace{0.7em} $-$2 = insufficient data} \\
+ \spec{}{}{\hspace{0.7em} $-$3 = singular solution}
+}
+\notes
+{
+ \begin{enumerate}
+  \item ITYPE, which must be either 4 or 6, selects the type of model
+        fitted.  Both allowed ITYPE values produce a model COEFFS which
+        consists of six coefficients, namely the zero points and, for
+        each of XE and YE, the coefficient of XM and YM.  For ITYPE=6,
+        all six coefficients are independent, modelling squash and shear
+        as well as origin, scale, and orientation.  However, ITYPE=4
+        selects the {\it solid body rotation}\/ option;  the model COEFFS
+        still consists of the same six coefficients, but now two of
+        them are used twice (appropriately signed).  Origin, scale
+        and orientation are still modelled, but not squash or shear --
+        the units of X and Y have to be the same.
+  \item For NC=4, NP must be at least 2.  For NC=6, NP must be at
+        least 3.
+  \item The model is returned in the array COEFFS.  Naming the
+        six elements of COEFFS $a,b,c,d,e$ \& $f$,
+        the model transforms {\it measured}\/ coordinates
+        $[x_{m},y_{m}\,]$ into {\it expected}\/ coordinates
+        $[x_{e},y_{e}\,]$ as follows:
+        \begin{verse}
+         $x_{e} = a + bx_{m} + cy_{m}$ \\
+         $y_{e} = d + ex_{m} + fy_{m}$
+        \end{verse}
+        For the {\it solid body rotation}\/ option (ITYPE=4), the
+        magnitudes of $b$ and $f$, and of $c$ and $e$, are equal.  The
+        signs of these coefficients depend on whether there is a
+        sign reversal between $[x_{e},y_{e}]$ and $[x_{m},y_{m}]$;
+        fits are performed
+        with and without a sign reversal and the best one chosen.
+  \item Error status values J=$-$1 and $-$2 leave COEFFS unchanged;
+        if J=$-$3 COEFFS may have been changed.
+  \item See also sla\_PXY, sla\_INVF, sla\_XY2XY, sla\_DCMPF.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_FK425}{FK4 to FK5}
+{
+ \action{Convert B1950.0 FK4 star data to J2000.0 FK5.
+         This routine converts stars from the old, Bessel-Newcomb, FK4
+         system to the new, IAU~1976, FK5, Fricke system.  The precepts
+         of Smith~{\it et~al.}\ (see reference~1) are followed,
+         using the implementation
+         by Yallop~{\it et~al.}\ (reference~2) of a matrix method
+         due to Standish.
+         Kinoshita's development of Andoyer's post-Newcomb precession is
+         used.  The numerical constants from
+         Seidelmann~{\it et~al.}\  (reference~3) are used canonically.}
+ \call{CALL sla\_FK425 (\vtop{
+         \hbox{R1950,D1950,DR1950,DD1950,P1950,V1950,}
+         \hbox{R2000,D2000,DR2000,DD2000,P2000,V2000)}}}
+}
+\args{GIVEN}
+{
+ \spec{R1950}{D}{B1950.0 $\alpha$ (radians)} \\
+ \spec{D1950}{D}{B1950.0 $\delta$ (radians)} \\
+ \spec{DR1950}{D}{B1950.0 proper motion in $\alpha$
+                              (radians per tropical year)} \\
+ \spec{DD1950}{D}{B1950.0 proper motion in $\delta$
+                              (radians per tropical year)} \\
+ \spec{P1950}{D}{B1950.0 parallax (arcsec)} \\
+ \spec{V1950}{D}{B1950.0 radial velocity (km~s$^{-1}$, +ve = moving away)}
+}
+\args{RETURNED}
+{
+ \spec{R2000}{D}{J2000.0 $\alpha$ (radians)} \\
+ \spec{D2000}{D}{J2000.0 $\delta$ (radians)} \\
+ \spec{DR2000}{D}{J2000.0 proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DD2000}{D}{J2000.0 proper motion in $\delta$
+                              (radians per Julian year)} \\
+ \spec{P2000}{D}{J2000.0 parallax (arcsec)} \\
+ \spec{V2000}{D}{J2000.0 radial velocity (km~s$^{-1}$, +ve = moving away)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item Conversion from Besselian epoch 1950.0 to Julian epoch
+        2000.0 only is provided for.  Conversions involving other
+        epochs will require use of the appropriate precession,
+        proper motion, and E-terms routines before and/or after FK425
+        is called.
+  \item In the FK4 catalogue the proper motions of stars within
+        $10^{\circ}$ of the poles do not include the {\it differential
+        E-terms}\/ effect and should, strictly speaking, be handled
+        in a different manner from stars outside these regions.
+        However, given the general lack of homogeneity of the star
+        data available for routine astrometry, the difficulties of
+        handling positions that may have been determined from
+        astrometric fields spanning the polar and non-polar regions,
+        the likelihood that the differential E-terms effect was not
+        taken into account when allowing for proper motion in past
+        astrometry, and the undesirability of a discontinuity in
+        the algorithm, the decision has been made in this routine to
+        include the effect of differential E-terms on the proper
+        motions for all stars, whether polar or not.  At epoch J2000,
+        and measuring on the sky rather than in terms of $\Delta\alpha$,
+        the errors resulting from this simplification are less than
+        1~milliarcsecond in position and 1~milliarcsecond per
+        century in proper motion.
+  \item See also sla\_FK45Z, sla\_FK524, sla\_FK54Z.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Smith, C.A.\ {\it et al.}, 1989.\  {\it Astr.J.}\ {\bf 97}, 265.
+  \item Yallop, B.D.\ {\it et al.}, 1989.\ {\it Astr.J.}\ {\bf 97}, 274.
+  \item Seidelmann, P.K.\ (ed), 1992.  {\it Explanatory
+        Supplement to the Astronomical Almanac,}\/ ISBN~0-935702-68-7.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_FK45Z}{FK4 to FK5, no P.M. or Parallax}
+{
+ \action{Convert B1950.0 FK4 star data to J2000.0 FK5 assuming zero
+         proper motion in the FK5 frame.
+         This routine converts stars from the old, Bessel-Newcomb, FK4
+         system to the new, IAU~1976, FK5, Fricke system, in such a
+         way that the FK5 proper motion is zero.  Because such a star
+         has, in general, a non-zero proper motion in the FK4 system,
+         the routine requires the epoch at which the position in the
+         FK4 system was determined.  The method is from appendix~2 of
+         reference~1, but using the constants of reference~4.}
+ \call{CALL sla\_FK45Z (R1950, D1950, BEPOCH, R2000, D2000)}
+}
+\args{GIVEN}
+{
+ \spec{R1950}{D}{B1950.0 FK4 $\alpha$ at epoch BEPOCH (radians)} \\
+ \spec{D1950}{D}{B1950.0 FK4 $\delta$ at epoch BEPOCH (radians)} \\
+ \spec{BEPOCH}{D}{Besselian epoch ({\it e.g.}\ 1979.3D0)}
+}
+\args{RETURNED}
+{
+ \spec{R2000}{D}{J2000.0 FK5 $\alpha$ (radians)} \\
+ \spec{D2000}{D}{J2000.0 FK5 $\delta$ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The epoch BEPOCH is strictly speaking Besselian, but
+        if a Julian epoch is supplied the result will be
+        affected only to a negligible extent.
+  \item Conversion from Besselian epoch 1950.0 to Julian epoch
+        2000.0 only is provided for.  Conversions involving other
+        epochs will require use of the appropriate precession,
+        proper motion, and E-terms routines before and/or
+        after FK45Z is called.
+  \item In the FK4 catalogue the proper motions of stars within
+        $10^{\circ}$ of the poles do not include the {\it differential
+        E-terms}\/ effect and should, strictly speaking, be handled
+        in a different manner from stars outside these regions.
+        However, given the general lack of homogeneity of the star
+        data available for routine astrometry, the difficulties of
+        handling positions that may have been determined from
+        astrometric fields spanning the polar and non-polar regions,
+        the likelihood that the differential E-terms effect was not
+        taken into account when allowing for proper motion in past
+        astrometry, and the undesirability of a discontinuity in
+        the algorithm, the decision has been made in this routine to
+        include the effect of differential E-terms on the proper
+        motions for all stars, whether polar or not.  At epoch 2000,
+        and measuring on the sky rather than in terms of $\Delta\alpha$,
+        the errors resulting from this simplification are less than
+        1~milliarcsecond in position and 1~milliarcsecond per
+        century in proper motion.
+  \item See also sla\_FK425, sla\_FK524, sla\_FK54Z.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Aoki, S., {\it et al.}, 1983.\ {\it Astr.Astrophys.}, {\bf 128}, 263.
+  \item Smith, C.A.\ {\it et al.}, 1989.\  {\it Astr.J.}\ {\bf 97}, 265.
+  \item Yallop, B.D.\ {\it et al.}, 1989.\ {\it Astr.J.}\ {\bf 97}, 274.
+  \item Seidelmann, P.K.\ (ed), 1992.  {\it Explanatory
+        Supplement to the Astronomical Almanac,}\/ ISBN~0-935702-68-7.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_FK524}{FK5 to FK4}
+{
+ \action{Convert J2000.0 FK5 star data to B1950.0 FK4.
+         This routine converts stars from the new, IAU~1976, FK5, Fricke
+         system, to the old, Bessel-Newcomb, FK4 system.
+         The precepts of Smith~{\it et~al.}\ (reference~1) are followed,
+         using the implementation by Yallop~{\it et~al.}\ (reference~2)
+         of a matrix method due to Standish.  Kinoshita's development of
+         Andoyer's post-Newcomb precession is used.  The numerical
+         constants from Seidelmann~{\it et~al.}\ (reference~3) are
+         used canonically.}
+ \call{CALL sla\_FK524 (\vtop{
+         \hbox{R2000, D2000, DR2000, DD2000, P2000, V2000,}
+         \hbox{R1950, D1950, DR1950, DD1950, P1950, V1950)}}}
+}
+\args{GIVEN}
+{
+ \spec{R2000}{D}{J2000.0 $\alpha$ (radians)} \\
+ \spec{D2000}{D}{J2000.0 $\delta$ (radians)} \\
+ \spec{DR2000}{D}{J2000.0 proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DD2000}{D}{J2000.0 proper motion in $\delta$
+                              (radians per Julian year)} \\
+ \spec{P2000}{D}{J2000.0 parallax (arcsec)} \\
+ \spec{V2000}{D}{J2000 radial velocity (km~s$^{-1}$, +ve = moving away)}
+}
+\args{RETURNED}
+{
+ \spec{R1950}{D}{B1950.0 $\alpha$ (radians)} \\
+ \spec{D1950}{D}{B1950.0 $\delta$ (radians)} \\
+ \spec{DR1950}{D}{B1950.0 proper motion in $\alpha$
+                              (radians per tropical year)} \\
+ \spec{DD1950}{D}{B1950.0 proper motion in $\delta$
+                              (radians per tropical year)} \\
+ \spec{P1950}{D}{B1950.0 parallax (arcsec)} \\
+ \spec{V1950}{D}{radial velocity (km~s$^{-1}$, +ve = moving away)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item Note that conversion from Julian epoch 2000.0 to Besselian
+        epoch 1950.0 only is provided for.  Conversions involving
+        other epochs will require use of the appropriate precession,
+        proper motion, and E-terms routines before and/or after
+        FK524 is called.
+  \item In the FK4 catalogue the proper motions of stars within
+        $10^{\circ}$ of the poles do not include the {\it differential
+        E-terms}\/ effect and should, strictly speaking, be handled
+        in a different manner from stars outside these regions.
+        However, given the general lack of homogeneity of the star
+        data available for routine astrometry, the difficulties of
+        handling positions that may have been determined from
+        astrometric fields spanning the polar and non-polar regions,
+        the likelihood that the differential E-terms effect was not
+        taken into account when allowing for proper motion in past
+        astrometry, and the undesirability of a discontinuity in
+        the algorithm, the decision has been made in this routine to
+        include the effect of differential E-terms on the proper
+        motions for all stars, whether polar or not.  At epoch 2000,
+        and measuring on the sky rather than in terms of $\Delta\alpha$,
+        the errors resulting from this simplification are less than
+        1~milliarcsecond in position and 1~milliarcsecond per
+        century in proper motion.
+  \item See also sla\_FK425, sla\_FK45Z, sla\_FK54Z.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Smith, C.A.\ {\it et al.}, 1989.\  {\it Astr.J.}\ {\bf 97}, 265.
+  \item Yallop, B.D.\ {\it et al.}, 1989.\ {\it Astr.J.}\ {\bf 97}, 274.
+  \item Seidelmann, P.K.\ (ed), 1992.  {\it Explanatory
+        Supplement to the Astronomical Almanac,}\/ ISBN~0-935702-68-7.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_FK52H}{FK5 to Hipparcos}
+{
+ \action{Transform an FK5 (J2000) position and proper motion
+         into the frame of the Hipparcos catalogue.}
+ \call{CALL sla\_FK52H (R5, D5, DR5, DD5, RH, DH, DRH, DDH)}
+}
+\args{GIVEN}
+{
+ \spec{R5}{D}{J2000.0 FK5 $\alpha$ (radians)} \\
+ \spec{D5}{D}{J2000.0 FK5 $\delta$ (radians)} \\
+ \spec{DR5}{D}{J2000.0 FK5 proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DD5}{D}{J2000.0 FK5 proper motion in $\delta$
+                              (radians per Julian year)}
+}
+\args{RETURNED}
+{
+ \spec{RH}{D}{Hipparcos $\alpha$ (radians)} \\
+ \spec{DH}{D}{Hipparcos $\delta$ (radians)} \\
+ \spec{DRH}{D}{Hipparcos proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DDH}{D}{Hipparcos proper motion in $\delta$
+                              (radians per Julian year)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item The FK5 to Hipparcos
+        transformation consists of a pure rotation and spin;
+        zonal errors in the FK5 catalogue are not taken into account.
+  \item The adopted epoch J2000.0 FK5 to Hipparcos orientation and spin
+        values are as follows (see reference):
+
+        \vspace{2ex}
+
+        ~~~~~~~~~~~~
+        \begin{tabular}{|r|r|r|} \hline
+        &
+        \multicolumn{1}{|c}{\it orientation} &
+        \multicolumn{1}{|c|}{\it ~~~spin~~~} \\ \hline
+        $x$ & $-19.9$~~~~ & ~$-0.30$~~ \\
+        $y$ &  $-9.1$~~~~ & ~$+0.60$~~ \\
+        $z$ & $+22.9$~~~~ & ~$+0.70$~~ \\ \hline
+        & {\it mas}~~~~~ & ~{\it mas/y}~ \\ \hline
+        \end{tabular}
+
+        \vspace{3ex}
+
+        These orientation and spin components are interpreted as
+        {\it axial vectors.}  An axial vector points at the pole of
+        the rotation and its length is the amount of rotation in radians.
+  \item See also sla\_FK5HZ, sla\_H2FK5, sla\_HFK5Z.
+ \end{enumerate}
+}
+\aref {Feissel, M.\ \& Mignard, F., 1998.,  {\it Astron.Astrophys.}\
+       {\bf 331}, L33-L36.}
+%-----------------------------------------------------------------------
+\routine{SLA\_FK54Z}{FK5 to FK4, no P.M. or Parallax}
+{
+ \action{Convert a J2000.0 FK5 star position to B1950.0 FK4 assuming
+         FK5 zero proper motion and parallax.
+         This routine converts star positions from the new, IAU~1976,
+         FK5, Fricke system to the old, Bessel-Newcomb, FK4 system.}
+ \call{CALL sla\_FK54Z (R2000, D2000, BEPOCH, R1950, D1950, DR1950, DD1950)}
+}
+\args{GIVEN}
+{
+ \spec{R2000}{D}{J2000.0 FK5 $\alpha$ (radians)} \\
+ \spec{D2000}{D}{J2000.0 FK5 $\delta$ (radians)} \\
+ \spec{BEPOCH}{D}{Besselian epoch ({\it e.g.}\ 1950D0)}
+}
+\args{RETURNED}
+{
+ \spec{R1950}{D}{B1950.0 FK4 $\alpha$ at epoch BEPOCH (radians)} \\
+ \spec{D1950}{D}{B1950.0 FK4 $\delta$ at epoch BEPOCH (radians)} \\
+ \spec{DR1950}{D}{B1950.0 FK4 proper motion in $\alpha$
+                              (radians per tropical year)} \\
+ \spec{DD1950}{D}{B1950.0 FK4 proper motion in $\delta$
+                              (radians per tropical year)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item Conversion from Julian epoch 2000.0 to Besselian epoch 1950.0
+        only is provided for.  Conversions involving other epochs will
+        require use of the appropriate precession routines before and
+        after this routine is called.
+  \item Unlike in the sla\_FK524 routine, the FK5 proper motions, the
+        parallax and the radial velocity are presumed zero.
+  \item It was the intention that FK5 should be a close approximation
+        to an inertial frame, so that distant objects have zero proper
+        motion;  such objects have (in general) non-zero proper motion
+        in FK4, and this routine returns those {\it fictitious proper
+        motions}.
+  \item The position returned by this routine is in the B1950
+        reference frame but at Besselian epoch BEPOCH.  For
+        comparison with catalogues the BEPOCH argument will
+        frequently be 1950D0.
+  \item See also sla\_FK425, sla\_FK45Z, sla\_FK524.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_FK5HZ}{FK5 to Hipparcos, no P.M.}
+{
+ \action{Transform an FK5 (J2000) star position into the frame of the
+         Hipparcos catalogue, assuming zero Hipparcos proper motion.}
+ \call{CALL sla\_FK5HZ (R5, D5, EPOCH, RH, DH)}
+}
+\args{GIVEN}
+{
+ \spec{R5}{D}{J2000.0 FK5 $\alpha$ (radians)} \\
+ \spec{D5}{D}{J2000.0 FK5 $\delta$ (radians)} \\
+ \spec{EPOCH}{D}{Julian epoch (TDB)}
+}
+\args{RETURNED}
+{
+ \spec{RH}{D}{Hipparcos $\alpha$ (radians)} \\
+ \spec{DH}{D}{Hipparcos $\delta$ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item The FK5 to Hipparcos
+        transformation consists of a pure rotation and spin;
+        zonal errors in the FK5 catalogue are not taken into account.
+  \item The adopted epoch J2000.0 FK5 to Hipparcos orientation and spin
+        values are as follows (see reference):
+
+        \vspace{2ex}
+
+        ~~~~~~~~~~~~
+        \begin{tabular}{|r|r|r|} \hline
+        &
+        \multicolumn{1}{|c}{\it orientation} &
+        \multicolumn{1}{|c|}{\it ~~~spin~~~} \\ \hline
+        $x$ & $-19.9$~~~~ & ~$-0.30$~~ \\
+        $y$ &  $-9.1$~~~~ & ~$+0.60$~~ \\
+        $z$ & $+22.9$~~~~ & ~$+0.70$~~ \\ \hline
+        & {\it mas}~~~~~ & ~{\it mas/y}~ \\ \hline
+        \end{tabular}
+
+        \vspace{3ex}
+
+        These orientation and spin components are interpreted as
+        {\it axial vectors.}  An axial vector points at the pole of
+        the rotation and its length is the amount of rotation in radians.
+  \item See also sla\_FK52H, sla\_H2FK5, sla\_HFK5Z.
+ \end{enumerate}
+}
+\aref {Feissel, M.\ \& Mignard, F., 1998.,  {\it Astron.Astrophys.}\
+       {\bf 331}, L33-L36.}
+%-----------------------------------------------------------------------
+\routine{SLA\_FLOTIN}{Decode a Real Number}
+{
+ \action{Convert free-format input into single precision floating point.}
+ \call{CALL sla\_FLOTIN (STRING, NSTRT, RESLT, JFLAG)}
+}
+\args{GIVEN}
+{
+ \spec{STRING}{C}{string containing number to be decoded} \\
+ \spec{NSTRT}{I}{pointer to where decoding is to commence} \\
+ \spec{RESLT}{R}{current value of result}
+}
+\args{RETURNED}
+{
+ \spec{NSTRT}{I}{advanced to next number} \\
+ \spec{RESLT}{R}{result} \\
+ \spec{JFLAG}{I}{status: $-$1~=~$-$OK, 0~=~+OK, 1~=~null result, 2~=~error}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The reason sla\_FLOTIN has separate `OK' status values
+       for + and $-$ is to enable minus zero to be detected.
+       This is of crucial importance
+       when decoding mixed-radix numbers.  For example, an angle
+       expressed as degrees, arcminutes and arcseconds may have a
+       leading minus sign but a zero degrees field.
+ \item A TAB is interpreted as a space, and lowercase characters are
+       interpreted as uppercase.  {\it n.b.}\ The test for TAB is
+       ASCII-specific.
+ \item The basic format is the sequence of fields $\pm n.n x \pm n$,
+       where $\pm$ is a sign
+       character `+' or `$-$', $n$ means a string of decimal digits,
+       `.' is a decimal point, and $x$, which indicates an exponent,
+       means `D' or `E'.  Various combinations of these fields can be
+       omitted, and embedded blanks are permissible in certain places.
+ \item Spaces:
+       \begin{itemize}
+       \item Leading spaces are ignored.
+       \item Embedded spaces are allowed only after +, $-$, D or E,
+             and after the decimal point if the first sequence of
+             digits is absent.
+       \item Trailing spaces are ignored;  the first signifies
+             end of decoding and subsequent ones are skipped.
+       \end{itemize}
+ \item Delimiters:
+       \begin{itemize}
+       \item Any character other than +,$-$,0-9,.,D,E or space may be
+             used to signal the end of the number and terminate decoding.
+       \item Comma is recognized by sla\_FLOTIN as a special case; it
+             is skipped, leaving the pointer on the next character.  See
+             13, below.
+       \item Decoding will in all cases terminate if end of string
+             is reached.
+       \end{itemize}
+ \item Both signs are optional.  The default is +.
+ \item The mantissa $n.n$ defaults to unity.
+ \item The exponent $x\!\pm\!n$ defaults to `E0'.
+ \item The strings of decimal digits may be of any length.
+ \item The decimal point is optional for whole numbers.
+ \item A {\it null result}\/ occurs when the string of characters
+       being decoded does not begin with +,$-$,0-9,.,D or E, or
+       consists entirely of spaces.  When this condition is
+       detected, JFLAG is set to 1 and RESLT is left untouched.
+ \item NSTRT = 1 for the first character in the string.
+ \item On return from sla\_FLOTIN, NSTRT is set ready for the next
+       decode -- following trailing blanks and any comma.  If a
+       delimiter other than comma is being used, NSTRT must be
+       incremented before the next call to sla\_FLOTIN, otherwise
+       all subsequent calls will return a null result.
+ \item Errors (JFLAG=2) occur when:
+       \begin{itemize}
+       \item a +, $-$, D or E is left unsatisfied; or
+       \item the decimal point is present without at least
+             one decimal digit before or after it; or
+       \item an exponent more than 100 has been presented.
+       \end{itemize}
+ \item When an error has been detected, NSTRT is left
+       pointing to the character following the last
+       one used before the error came to light.  This
+       may be after the point at which a more sophisticated
+       program could have detected the error.  For example,
+       sla\_FLOTIN does not detect that `1E999' is unacceptable
+       (on a computer where this is so)
+       until the entire number has been decoded.
+ \item Certain highly unlikely combinations of mantissa and
+       exponent can cause arithmetic faults during the
+       decode, in some cases despite the fact that they
+       together could be construed as a valid number.
+ \item Decoding is left to right, one pass.
+ \item See also sla\_DFLTIN and sla\_INTIN.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_GALEQ}{Galactic to J2000 $\alpha,\delta$}
+{
+ \action{Transformation from IAU 1958 galactic coordinates
+         to J2000.0 FK5 equatorial coordinates.}
+ \call{CALL sla\_GALEQ (DL, DB, DR, DD)}
+}
+\args{GIVEN}
+{
+ \spec{DL,DB}{D}{galactic longitude and latitude \gal}
+}
+\args{RETURNED}
+{
+ \spec{DR,DD}{D}{J2000.0 \radec}
+}
+\notes
+{
+ \begin{enumerate}
+  \item All arguments are in radians.
+  \item The equatorial coordinates are J2000.0 FK5.  Use the routine
+        sla\_GE50 if conversion to B1950.0 FK4 coordinates is
+                           required.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_GALSUP}{Galactic to Supergalactic}
+{
+ \action{Transformation from IAU 1958 galactic coordinates to
+         de Vaucouleurs supergalactic coordinates.}
+ \call{CALL sla\_GALSUP (DL, DB, DSL, DSB)}
+}
+\args{GIVEN}
+{
+ \spec{DL,DB}{D}{galactic longitude and latitude \gal\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{DSL,DSB}{D}{supergalactic longitude and latitude (radians)}
+}
+\refs
+{
+ \begin{enumerate}
+  \item de Vaucouleurs, de Vaucouleurs, \& Corwin, {\it Second Reference
+    Catalogue of Bright Galaxies}, U.Texas, p8.
+  \item Systems \& Applied Sciences Corp., documentation for the
+        machine-readable version of the above catalogue,
+        Contract NAS 5-26490.
+ \end{enumerate}
+ (These two references give different values for the galactic
+ longitude of the supergalactic origin.  Both are wrong;  the
+ correct value is $l^{I\!I}=137.37$.)
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_GE50}{Galactic to B1950 $\alpha,\delta$}
+{
+ \action{Transformation from IAU 1958 galactic coordinates to
+         B1950.0 FK4 equatorial coordinates.}
+ \call{CALL sla\_GE50 (DL, DB, DR, DD)}
+}
+\args{GIVEN}
+{
+ \spec{DL,DB}{D}{galactic longitude and latitude \gal}
+}
+\args{RETURNED}
+{
+ \spec{DR,DD}{D}{B1950.0 \radec}
+}
+\notes
+{
+ \begin{enumerate}
+  \item All arguments are in radians.
+  \item The equatorial coordinates are B1950.0 FK4.  Use the
+        routine sla\_GALEQ if conversion to J2000.0 FK5 coordinates
+        is required.
+ \end{enumerate}
+}
+\aref{Blaauw {\it et al.}, 1960, {\it Mon.Not.R.astr.Soc.},
+      {\bf 121}, 123.}
+%-----------------------------------------------------------------------
+\routine{SLA\_GEOC}{Geodetic to Geocentric}
+{
+ \action{Convert geodetic position to geocentric.}
+ \call{CALL sla\_GEOC (P, H, R, Z)}
+}
+\args{GIVEN}
+{
+ \spec{P}{D}{latitude (geodetic, radians)} \\
+ \spec{H}{D}{height above reference spheroid (geodetic, metres)}
+}
+\args{RETURNED}
+{
+ \spec{R}{D}{distance from Earth axis (AU)} \\
+ \spec{Z}{D}{distance from plane of Earth equator (AU)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Geocentric latitude can be obtained by evaluating {\tt ATAN2(Z,R)}.
+  \item IAU 1976 constants are used.
+ \end{enumerate}
+}
+\aref{Green, R.M., 1985.\ {\it Spherical Astronomy}, Cambridge U.P., p98.}
+%-----------------------------------------------------------------------
+\routine{SLA\_GMST}{UT to GMST}
+{
+ \action{Conversion from universal time UT1 to Greenwich mean
+         sidereal time.}
+ \call{D~=~sla\_GMST (UT1)}
+}
+\args{GIVEN}
+{
+ \spec{UT1}{D}{universal time (strictly UT1) expressed as
+                 modified Julian Date (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_GMST}{D}{Greenwich mean sidereal time (radians)}
+}
+\notes
+{
+  \begin{enumerate}
+       \item The IAU~1982 expression
+       (see page~S15 of the 1984 {\it Astronomical
+       Almanac})\/ is used, but rearranged to reduce rounding errors.  This
+       expression is always described as giving the GMST at $0^{\rm h}$UT;
+       in fact, it gives the difference between the
+       GMST and the UT, which happens to equal the GMST (modulo
+       24~hours) at $0^{\rm h}$UT each day.  In sla\_GMST, the
+       entire UT is used directly as the argument for the
+       canonical formula, and the fractional part of the UT is
+       added separately;  note that the factor $1.0027379\cdots$ does
+       not appear.
+       \item See also the routine sla\_GMSTA, which
+       delivers better numerical
+       precision by accepting the UT date and time as separate arguments.
+  \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_GMSTA}{UT to GMST (extra precision)}
+{
+ \action{Conversion from universal time UT1 to Greenwich mean
+         sidereal time, with rounding errors minimized.}
+ \call{D~=~sla\_GMSTA (DATE, UT1)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{UT1 date as Modified Julian Date (integer part
+                of JD$-$2400000.5)} \\
+ \spec{UT1}{D}{UT1 time (fraction of a day)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_GMST}{D}{Greenwich mean sidereal time (radians)}
+}
+\notes
+{
+  \begin{enumerate}
+       \item The algorithm is derived from the IAU 1982 expression
+       (see page~S15 of the 1984 Astronomical Almanac).
+       \item There is no restriction on how the UT is apportioned between the
+       DATE and UT1 arguments.  Either of the two arguments could, for
+       example, be zero and the entire date\,+\,time supplied in the other.
+       However, the routine is designed to deliver maximum accuracy when
+       the DATE argument is a whole number and the UT1 argument
+       lies in the range $[\,0,\,1\,]$, or {\it vice versa}.
+       \item See also the routine sla\_GMST, which accepts the UT1 as a single
+       argument.  Compared with sla\_GMST, the extra numerical precision
+       delivered by the present routine is unlikely to be important in
+       an absolute sense, but may be useful when critically comparing
+       algorithms and in applications where two sidereal times close
+       together are differenced.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_GRESID}{Gaussian Residual}
+{
+ \action{Generate pseudo-random normal deviate or {\it Gaussian residual}.}
+ \call{R~=~sla\_GRESID (S)}
+}
+\args{GIVEN}
+{
+ \spec{S}{R}{standard deviation}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The results of many calls to this routine will be
+        normally distributed with mean zero and standard deviation S.
+  \item The Box-Muller algorithm is used.
+  \item The implementation is machine-dependent.
+ \end{enumerate}
+}
+\aref{Ahrens \& Dieter, 1972.\ {\it Comm.A.C.M.}\ {\bf 15}, 873.}
+%-----------------------------------------------------------------------
+\routine{SLA\_H2E}{Az,El to $h,\delta$}
+{
+ \action{Horizon to equatorial coordinates
+         (single precision).}
+ \call{CALL sla\_H2E (AZ, EL, PHI, HA, DEC)}
+}
+\args{GIVEN}
+{
+ \spec{AZ}{R}{azimuth (radians)} \\
+ \spec{EL}{R}{elevation (radians)} \\
+ \spec{PHI}{R}{latitude (radians)}
+}
+\args{RETURNED}
+{
+ \spec{HA}{R}{hour angle (radians)} \\
+ \spec{DEC}{R}{declination (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The sign convention for azimuth is north zero, east $+\pi/2$.
+  \item HA is returned in the range $\pm\pi$.  Declination is returned
+        in the range $\pm\pi$.
+  \item The latitude is (in principle) geodetic.  In critical
+        applications, corrections for polar motion should be applied
+        (see sla\_POLMO).
+  \item In some applications it will be important to specify the
+        correct type of elevation in order to produce the required
+        type of \hadec.  In particular, it may be important to
+        distinguish between the elevation as affected by refraction,
+        which will yield the {\it observed} \hadec, and the elevation
+        {\it in vacuo}, which will yield the {\it topocentric}
+        \hadec.  If the
+        effects of diurnal aberration can be neglected, the
+        topocentric \hadec\ may be used as an approximation to the
+        {\it apparent} \hadec.
+  \item No range checking of arguments is carried out.
+  \item In applications which involve many such calculations, rather
+        than calling the present routine it will be more efficient to
+        use inline code, having previously computed fixed terms such
+        as sine and cosine of latitude.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_H2FK5}{Hipparcos to FK5}
+{
+ \action{Transform a Hipparcos star position and proper motion
+         into the FK5 (J2000) frame.}
+ \call{CALL sla\_H2FK5 (RH, DH, DRH, DDH, R5, D5, DR5, DD5)}
+}
+\args{GIVEN}
+{
+ \spec{RH}{D}{Hipparcos $\alpha$ (radians)} \\
+ \spec{DH}{D}{Hipparcos $\delta$ (radians)} \\
+ \spec{DRH}{D}{Hipparcos proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DDH}{D}{Hipparcos proper motion in $\delta$
+                              (radians per Julian year)}
+}
+\args{RETURNED}
+{
+ \spec{R5}{D}{J2000.0 FK5 $\alpha$ (radians)} \\
+ \spec{D5}{D}{J2000.0 FK5 $\delta$ (radians)} \\
+ \spec{DR5}{D}{J2000.0 FK5 proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DD5}{D}{FK5 J2000.0 proper motion in $\delta$
+                              (radians per Julian year)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item The FK5 to Hipparcos
+        transformation consists of a pure rotation and spin;
+        zonal errors in the FK5 catalogue are not taken into account.
+  \item The adopted epoch J2000.0 FK5 to Hipparcos orientation and spin
+        values are as follows (see reference):
+
+        \vspace{2ex}
+
+        ~~~~~~~~~~~~
+        \begin{tabular}{|r|r|r|} \hline
+        &
+        \multicolumn{1}{|c}{\it orientation} &
+        \multicolumn{1}{|c|}{\it ~~~spin~~~} \\ \hline
+        $x$ & $-19.9$~~~~ & ~$-0.30$~~ \\
+        $y$ &  $-9.1$~~~~ & ~$+0.60$~~ \\
+        $z$ & $+22.9$~~~~ & ~$+0.70$~~ \\ \hline
+        & {\it mas}~~~~~ & ~{\it mas/y}~ \\ \hline
+        \end{tabular}
+
+        \vspace{3ex}
+
+        These orientation and spin components are interpreted as
+        {\it axial vectors.}  An axial vector points at the pole of
+        the rotation and its length is the amount of rotation in radians.
+  \item See also sla\_FK52H, sla\_FK5HZ, sla\_HFK5Z.
+ \end{enumerate}
+}
+\aref {Feissel, M.\ \& Mignard, F., 1998.,  {\it Astron.Astrophys.}\
+       {\bf 331}, L33-L36.}
+%-----------------------------------------------------------------------
+\routine{SLA\_HFK5Z}{Hipparcos to FK5, no P.M.}
+{
+ \action{Transform a Hipparcos star position
+         into the FK5 (J2000) frame assuming zero Hipparcos proper motion.}
+ \call{CALL sla\_HFK5Z (RH, DH, EPOCH, R5, D5, DR5, DD5)}
+}
+\args{GIVEN}
+{
+ \spec{RH}{D}{Hipparcos $\alpha$ (radians)} \\
+ \spec{DH}{D}{Hipparcos $\delta$ (radians)} \\
+ \spec{EPOCH}{D}{Julian epoch (TDB)}
+}
+\args{RETURNED}
+{
+ \spec{R5}{D}{J2000.0 FK5 $\alpha$ (radians)} \\
+ \spec{D5}{D}{J2000.0 FK5 $\delta$ (radians)} \\
+ \spec{DR5}{D}{J2000.0 FK5 proper motion in $\alpha$
+                              (radians per Julian year)} \\
+ \spec{DD5}{D}{FK5 J2000.0 proper motion in $\delta$
+                              (radians per Julian year)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item The FK5 to Hipparcos
+        transformation consists of a pure rotation and spin;
+        zonal errors in the FK5 catalogue are not taken into account.
+  \item The adopted epoch J2000.0 FK5 to Hipparcos orientation and spin
+        values are as follows (see reference):
+
+        \vspace{2ex}
+
+        ~~~~~~~~~~~~
+        \begin{tabular}{|r|r|r|} \hline
+        &
+        \multicolumn{1}{|c}{\it orientation} &
+        \multicolumn{1}{|c|}{\it ~~~spin~~~} \\ \hline
+        $x$ & $-19.9$~~~~ & ~$-0.30$~~ \\
+        $y$ &  $-9.1$~~~~ & ~$+0.60$~~ \\
+        $z$ & $+22.9$~~~~ & ~$+0.70$~~ \\ \hline
+        & {\it mas}~~~~~ & ~{\it mas/y}~ \\ \hline
+        \end{tabular}
+
+        \vspace{3ex}
+
+        These orientation and spin components are interpreted as
+        {\it axial vectors.}  An axial vector points at the pole of
+        the rotation and its length is the amount of rotation in radians.
+  \item It was the intention that Hipparcos should be a close
+        approximation to an inertial frame, so that distant objects
+        have zero proper motion;  such objects have (in general)
+        non-zero proper motion in FK5, and this routine returns those
+        {\it fictitious proper motions.}
+  \item The position returned by this routine is in the FK5 J2000
+        reference frame but at Julian epoch EPOCH.
+  \item See also sla\_FK52H, sla\_FK5HZ, sla\_H2FK5.
+ \end{enumerate}
+}
+\aref {Feissel, M.\ \& Mignard, F., 1998.,  {\it Astron.Astrophys.}\
+       {\bf 331}, L33-L36.}
+%-----------------------------------------------------------------------
+\routine{SLA\_IMXV}{Apply 3D Reverse Rotation}
+{
+ \action{Multiply a 3-vector by the inverse of a rotation
+         matrix (single precision).}
+ \call{CALL sla\_IMXV (RM, VA, VB)}
+}
+\args{GIVEN}
+{
+ \spec{RM}{R(3,3)}{rotation matrix} \\
+ \spec{VA}{R(3)}{vector to be rotated}
+}
+\args{RETURNED}
+{
+ \spec{VB}{R(3)}{result vector}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine performs the operation:
+        \begin{verse}
+         {\bf b} = {\bf M}$^{T}\cdot${\bf a}
+        \end{verse}
+        where {\bf a} and {\bf b} are the 3-vectors VA and VB
+        respectively, and {\bf M} is the $3\times3$ matrix RM.
+  \item The main function of this routine is apply an inverse
+        rotation;  under these circumstances, ${\bf M}$ is
+        {\it orthogonal}, with its inverse the same as its transpose.
+  \item To comply with the ANSI Fortran 77 standard, VA and VB must
+        {\bf not} be the same array.  The routine is, in fact, coded
+        so as to work properly on the VAX and many other systems even
+        if this rule is violated, something that is {\bf not}, however,
+        recommended.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_INTIN}{Decode an Integer Number}
+{
+ \action{Convert free-format input into an integer.}
+ \call{CALL sla\_INTIN (STRING, NSTRT, IRESLT, JFLAG)}
+}
+\args{GIVEN}
+{
+ \spec{STRING}{C}{string containing number to be decoded} \\
+ \spec{NSTRT}{I}{pointer to where decoding is to commence} \\
+ \spec{IRESLT}{I}{current value of result}
+}
+\args{RETURNED}
+{
+ \spec{NSTRT}{I}{advanced to next number} \\
+ \spec{IRESLT}{I}{result} \\
+ \spec{JFLAG}{I}{status: $-$1 = $-$OK, 0~=~+OK, 1~=~null result, 2~=~error}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The reason sla\_INTIN has separate `OK' status values
+       for + and $-$ is to enable minus zero to be detected.
+       This is of crucial importance
+       when decoding mixed-radix numbers.  For example, an angle
+       expressed as degrees, arcminutes and arcseconds may have a
+       leading minus sign but a zero degrees field.
+ \item A TAB is interpreted as a space. {\it n.b.}\ The test for TAB is
+       ASCII-specific.
+ \item The basic format is the sequence of fields $\pm n$,
+       where $\pm$ is a sign
+       character `+' or `$-$', and $n$ means a string of decimal digits.
+ \item Spaces:
+       \begin{itemize}
+       \item Leading spaces are ignored.
+       \item Spaces between the sign and the number are allowed.
+       \item Trailing spaces are ignored;  the first signifies
+             end of decoding and subsequent ones are skipped.
+       \end{itemize}
+ \item Delimiters:
+       \begin{itemize}
+       \item Any character other than +,$-$,0-9 or space may be
+             used to signal the end of the number and terminate decoding.
+       \item Comma is recognized by sla\_INTIN as a special case; it
+             is skipped, leaving the pointer on the next character.  See
+             9, below.
+       \item Decoding will in all cases terminate if end of string
+             is reached.
+       \end{itemize}
+ \item The sign is optional.  The default is +.
+ \item A {\it null result}\/ occurs when the string of characters
+       being decoded does not begin with +,$-$ or 0-9, or
+       consists entirely of spaces.  When this condition is
+       detected, JFLAG is set to 1 and IRESLT is left untouched.
+ \item NSTRT = 1 for the first character in the string.
+ \item On return from sla\_INTIN, NSTRT is set ready for the next
+       decode -- following trailing blanks and any comma.  If a
+       delimiter other than comma is being used, NSTRT must be
+       incremented before the next call to sla\_INTIN, otherwise
+       all subsequent calls will return a null result.
+ \item Errors (JFLAG=2) occur when:
+       \begin{itemize}
+       \item there is a + or $-$ but no number; or
+       \item the number is greater than $2^{31}-1$.
+       \end{itemize}
+ \item When an error has been detected, NSTRT is left
+       pointing to the character following the last
+       one used before the error came to light.
+ \item See also sla\_FLOTIN and sla\_DFLTIN.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_INVF}{Invert Linear Model}
+{
+ \action{Invert a linear model of the type produced by the
+         sla\_FITXY routine.}
+ \call{CALL sla\_INVF (FWDS,BKWDS,J)}
+}
+\args{GIVEN}
+{
+ \spec{FWDS}{D(6)}{model coefficients}
+}
+\args{RETURNED}
+{
+ \spec{BKWDS}{D(6)}{inverse model} \\
+ \spec{J}{I}{status:  0 = OK, $-$1 = no inverse}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The models relate two sets of \xy\ coordinates as follows.
+        Naming the six elements of FWDS $a,b,c,d,e$ \& $f$,
+        where two sets of coordinates $[x_{1},y_{1}]$ and
+        $[x_{2},y_{2}\,]$ are related thus:
+        \begin{verse}
+         $x_{2} = a + bx_{1} + cy_{1}$ \\
+         $y_{2} = d + ex_{1} + fy_{1}$
+        \end{verse}
+        The present routine generates a new set of coefficients
+        $p,q,r,s,t$ \& $u$ (the array BKWDS) such that:
+        \begin{verse}
+         $x_{1} = p + qx_{2} + ry_{2}$ \\
+         $y_{1} = s + tx_{2} + uy_{2}$
+        \end{verse}
+  \item Two successive calls to this routine will deliver a set
+        of coefficients equal to the starting values.
+  \item To comply with the ANSI Fortran 77 standard, FWDS and BKWDS must
+        {\bf not} be the same array.  The routine is, in fact, coded
+        so as to work properly with many Fortran compilers even
+        if this rule is violated, something that is {\bf not}, however,
+        recommended.
+  \item See also sla\_FITXY, sla\_PXY, sla\_XY2XY, sla\_DCMPF.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_KBJ}{Select Epoch Prefix}
+{
+ \action{Select epoch prefix `B' or `J'.}
+ \call{CALL sla\_KBJ (JB, E, K, J)}
+}
+\args{GIVEN}
+{
+ \spec{JB}{I}{sla\_DBJIN prefix status:  0=none, 1=`B', 2=`J'} \\
+ \spec{E}{D}{epoch -- Besselian or Julian}
+}
+\args{RETURNED}
+{
+ \spec{K}{C}{`B' or `J'} \\
+ \spec{J}{I}{status:  0=OK}
+}
+\anote{The routine is mainly intended for use in conjunction with the
+       sla\_DBJIN routine.  If the value of JB indicates that an explicit
+       B or J prefix was detected by sla\_DBJIN, a `B' or `J'
+       is returned to match.  If JB indicates that no explicit B or J
+       was supplied, the choice is made on the basis of the epoch
+       itself;  B is assumed for E $<1984$, otherwise J.}
+%-----------------------------------------------------------------------
+\routine{SLA\_M2AV}{Rotation Matrix to Axial Vector}
+{
+ \action{From a rotation matrix, determine the corresponding axial vector
+        (single precision).}
+ \call{CALL sla\_M2AV (RMAT, AXVEC)}
+}
+\args{GIVEN}
+{
+ \spec{RMAT}{R(3,3)}{rotation matrix}
+}
+\args{RETURNED}
+{
+ \spec{AXVEC}{R(3)}{axial vector (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item A rotation matrix describes a rotation about some arbitrary axis,
+        called the Euler axis.  The {\it axial vector} returned by
+        this routine has the same direction as the Euler axis, and its
+        magnitude is the amount of rotation in radians.
+  \item The magnitude and direction of the axial vector can be separated
+        by means of the routine sla\_VN.
+  \item The reference frame rotates clockwise as seen looking along
+        the axial vector from the origin.
+  \item If RMAT is null, so is the result.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_MAP}{Mean to Apparent}
+{
+ \action{Transform star \radec\ from mean place to geocentric apparent.
+         The reference frames and time scales used are post IAU~1976.}
+ \call{CALL sla\_MAP (RM, DM, PR, PD, PX, RV, EQ, DATE, RA, DA)}
+}
+\args{GIVEN}
+{
+ \spec{RM,DM}{D}{mean \radec\ (radians)} \\
+ \spec{PR,PD}{D}{proper motions:  \radec\ changes per Julian year} \\
+ \spec{PX}{D}{parallax (arcsec)} \\
+ \spec{RV}{D}{radial velocity (km~s$^{-1}$, +ve if receding)} \\
+ \spec{EQ}{D}{epoch and equinox of star data (Julian)} \\
+ \spec{DATE}{D}{TDB for apparent place (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{RA,DA}{D}{apparent \radec\ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item EQ is the Julian epoch specifying both the reference
+        frame and the epoch of the position -- usually 2000.
+        For positions where the epoch and equinox are
+        different, use the routine sla\_PM to apply proper
+        motion corrections before using this routine.
+  \item The distinction between the required TDB and TT is
+        always negligible.  Moreover, for all but the most
+        critical applications UTC is adequate.
+  \item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+        $\dot{\alpha}\cos\delta$, and are per year rather than per century.
+  \item This routine may be wasteful for some applications
+        because it recomputes the Earth position/velocity and
+        the precession-nutation matrix each time, and because
+        it allows for parallax and proper motion.  Where
+        multiple transformations are to be carried out for one
+        epoch, a faster method is to call the sla\_MAPPA routine
+        once and then either the sla\_MAPQK routine (which includes
+        parallax and proper motion) or sla\_MAPQKZ (which assumes
+        zero parallax and FK5 proper motion).
+  \item The accuracy, starting from ICRS star data,
+        is limited to about 1~mas by the
+        precession-nutation model used, SF2001.
+        A different precession-nutation model
+        can be introduced by using sla\_MAPPA and sla\_MAPQK (see
+        the previous note) and replacing the precession-nutation
+        matrix into the parameter array directly.
+  \item The accuracy is further limited by the routine sla\_EVP, called
+        by sla\_MAPPA, which computes the Earth position and
+        velocity using the methods of Stumpff.  The maximum
+        error is about 0.3~milliarcsecond.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr.Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_MAPPA}{Mean to Apparent Parameters}
+{
+ \action{Compute star-independent parameters in preparation for
+         conversions between mean place and geocentric apparent place.
+         The parameters produced by this routine are required in the
+         parallax, light deflection, aberration, and precession-nutation
+         parts of the mean/apparent transformations.
+         The reference frames and time scales used are post IAU~1976.}
+ \call{CALL sla\_MAPPA (EQ, DATE, AMPRMS)}
+}
+\args{GIVEN}
+{
+ \spec{EQ}{D}{epoch of mean equinox to be used (Julian)} \\
+ \spec{DATE}{D}{TDB (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{AMPRMS}{D(21)}{star-independent mean-to-apparent parameters:} \\
+ \specel   {(1)}     {time interval for proper motion (Julian years)} \\
+ \specel   {(2-4)}   {barycentric position of the Earth (AU)} \\
+ \specel   {(5-7)}   {heliocentric direction of the Earth (unit vector)} \\
+ \specel   {(8)}     {(gravitational radius of
+                      Sun)$\times 2 / $(Sun-Earth distance)} \\
+ \specel   {(9-11)}  {{\bf v}: barycentric Earth velocity in units of c} \\
+ \specel   {(12)}    {$\sqrt{1-\left|\mbox{\bf v}\right|^2}$} \\
+ \specel   {(13-21)} {precession-nutation $3\times3$ matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item For DATE, the distinction between the required TDB and TT
+        is always negligible.  Moreover, for all but the most
+        critical applications UTC is adequate.
+  \item The vectors AMPRMS(2-4) and AMPRMS(5-7) are
+        (in essence) referred to
+        the mean equinox and equator of epoch EQ.  For
+        EQ=2000D0, they are referred to the ICRS.
+  \item The parameters produced by this routine are used by
+        sla\_MAPQK, sla\_MAPQKZ and sla\_AMPQK.
+  \item The accuracy, starting from ICRS star data,
+        is limited to about 1~mas by the precession-nutation
+        model used, SF2001.  A different precession-nutation model
+        can be introduced by first calling the present routine
+        and then replacing the precession-nutation
+        matrix in AMPRMS(13-21) directly.
+  \item A further limit to the accuracy of routines using the
+        parameter array AMPRMS is
+        imposed by the routine sla\_EVP, used here to compute the
+        Earth position and velocity by the methods of Stumpff.
+        The maximum error in the resulting aberration corrections is
+        about 0.3 milliarcsecond.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr.Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_MAPQK}{Quick Mean to Apparent}
+{
+ \action{Quick mean to apparent place:  transform a star \radec\ from
+         mean place to geocentric apparent place, given the
+         star-independent parameters.  The reference frames and
+         time scales used are post IAU~1976.}
+ \call{CALL sla\_MAPQK (RM, DM, PR, PD, PX, RV, AMPRMS, RA, DA)}
+}
+\args{GIVEN}
+{
+ \spec{RM,DM}{D}{mean \radec\ (radians)} \\
+ \spec{PR,PD}{D}{proper motions:  \radec\ changes per Julian year} \\
+ \spec{PX}{D}{parallax (arcsec)} \\
+ \spec{RV}{D}{radial velocity (km~s$^{-1}$, +ve if receding)} \\
+ \spec{AMPRMS}{D(21)}{star-independent mean-to-apparent parameters:} \\
+ \specel   {(1)}     {time interval for proper motion (Julian years)} \\
+ \specel   {(2-4)}   {barycentric position of the Earth (AU)} \\
+ \specel   {(5-7)}   {heliocentric direction of the Earth (unit vector)} \\
+ \specel   {(8)}     {(gravitational radius of
+                      Sun)$\times 2 / $(Sun-Earth distance)} \\
+ \specel   {(9-11)}  {{\bf v}: barycentric Earth velocity in units of c} \\
+ \specel   {(12)}    {$\sqrt{1-\left|\mbox{\bf v}\right|^2}$} \\
+ \specel   {(13-21)} {precession-nutation $3\times3$ matrix}
+}
+\args{RETURNED}
+{
+ \spec{RA,DA}{D }{apparent \radec\ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Use of this routine is appropriate when efficiency is important
+        and where many star positions, all referred to the same equator
+        and equinox, are to be transformed for one epoch.  The
+        star-independent parameters can be obtained by calling the
+        sla\_MAPPA routine.
+  \item If the parallax and proper motions are zero the sla\_MAPQKZ
+        routine can be used instead.
+  \item The vectors AMPRMS(2-4) and AMPRMS(5-7) are
+        (in essence) referred to
+        the mean equinox and equator of epoch EQ.  For
+        EQ=2000D0, they are referred to the ICRS.
+  \item Strictly speaking, the routine is not valid for solar-system
+        sources, though the error will usually be extremely small.
+        However, to prevent gross errors in the case where the
+        position of the Sun is specified, the gravitational
+        deflection term is restrained within about \arcseci{920} of the
+        centre of the Sun's disc.  The term has a maximum value of
+        about \arcsec{1}{85} at this radius, and decreases to zero as
+        the centre of the disc is approached.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr.Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_MAPQKZ}{Quick Mean-Appt, no PM {\it etc.}}
+{
+ \action{Quick mean to apparent place:  transform a star \radec\ from
+         mean place to geocentric apparent place, given the
+         star-independent parameters, and assuming zero parallax
+         and FK5 proper motion.
+         The reference frames and time scales used are post IAU~1976.}
+ \call{CALL sla\_MAPQKZ (RM, DM, AMPRMS, RA, DA)}
+}
+\args{GIVEN}
+{
+ \spec{RM,DM}{D}{mean \radec\ (radians)} \\
+ \spec{AMPRMS}{D(21)}{star-independent mean-to-apparent parameters:} \\
+ \specel   {(1)}     {time interval for proper motion (Julian years)} \\
+ \specel   {(2-4)}   {barycentric position of the Earth (AU)} \\
+ \specel   {(5-7)}   {heliocentric direction of the Earth (unit vector)} \\
+ \specel   {(8)}     {(gravitational radius of
+                      Sun)$\times 2 / $(Sun-Earth distance)} \\
+ \specel   {(9-11)}  {{\bf v}: barycentric Earth velocity in units of c} \\
+ \specel   {(12)}    {$\sqrt{1-\left|\mbox{\bf v}\right|^2}$} \\
+ \specel   {(13-21)} {precession-nutation $3\times3$ matrix}
+}
+\args{RETURNED}
+{
+ \spec{RA,DA}{D}{apparent \radec\ (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Use of this routine is appropriate when efficiency is important
+        and where many star positions, all with parallax and proper
+        motion either zero or already allowed for, and all referred to
+        the same equator and equinox, are to be transformed for one
+        epoch.  The star-independent parameters can be obtained by
+        calling the sla\_MAPPA routine.
+  \item The corresponding routine for the case of non-zero parallax
+        and FK5 proper motion is sla\_MAPQK.
+  \item The vectors AMPRMS(2-4) and AMPRMS(5-7) are
+        (in essence) referred to
+        the mean equinox and equator of epoch EQ.  For
+        EQ=2000D0, they are referred to the ICRS.
+  \item Strictly speaking, the routine is not valid for solar-system
+        sources, though the error will usually be extremely small.
+        However, to prevent gross errors in the case where the
+        position of the Sun is specified, the gravitational
+        deflection term is restrained within about \arcseci{920} of the
+        centre of the Sun's disc.  The term has a maximum value of
+        about \arcsec{1}{85} at this radius, and decreases to zero as
+        the centre of the disc is approached.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr.Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_MOON}{Approx Moon Pos/Vel}
+{
+ \action{Approximate geocentric position and velocity of the Moon
+         (single precision).}
+ \call{CALL sla\_MOON (IY, ID, FD, PV)}
+}
+\args{GIVEN}
+{
+ \spec{IY}{I}{year} \\
+ \spec{ID}{I}{day in year (1 = Jan 1st)} \\
+ \spec{FD}{R }{fraction of day}
+}
+\args{RETURNED}
+{
+ \spec{PV}{R(6)}{Moon \xyzxyzd, mean equator and equinox of
+                 date (AU, AU~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The date and time is TDB (loosely ET) in a Julian calendar
+        which has been aligned to the ordinary Gregorian
+        calendar for the interval 1900 March 1 to 2100 February 28.
+        The year and day can be obtained by calling sla\_CALYD or
+        sla\_CLYD.
+  \item The position is accurate to better than 0.5~arcminute
+        in direction and 1000~km in distance.  The velocity
+        is accurate to better than \arcsec{0}{5} per hour in direction
+        and 4~metres per second in distance.  (RMS figures with respect
+        to JPL DE200 for the interval 1960-2025 are \arcseci{14} and
+        \arcsec{0}{2} per hour in longitude, \arcseci{9} and \arcsec{0}{2}
+        per hour in latitude, 350~km and 2~metres per second in distance.)
+        Note that the distance accuracy is comparatively poor because this
+        routine is principally intended for computing topocentric direction.
+  \item This routine is only a partial implementation of the original
+        Meeus algorithm (reference below), which offers 4 times the
+        accuracy in direction and 20 times the accuracy in distance
+        when fully implemented (as it is in sla\_DMOON).
+ \end{enumerate}
+}
+\aref{Meeus, {\it l'Astronomie}, June 1984, p348.}
+%-----------------------------------------------------------------------
+\routine{SLA\_MXM}{Multiply $3\times3$ Matrices}
+{
+ \action{Product of two $3\times3$ matrices (single precision).}
+ \call{CALL sla\_MXM (A, B, C)}
+}
+\args{GIVEN}
+{
+ \spec{A}{R(3,3)}{matrix {\bf A}} \\
+ \spec{B}{R(3,3)}{matrix {\bf B}}
+}
+\args{RETURNED}
+{
+ \spec{C}{R(3,3)}{matrix result: {\bf A}$\times${\bf B}}
+}
+\anote{To comply with the ANSI Fortran 77 standard, A, B and C must
+       be different arrays.  The routine is, in fact, coded
+       so as to work properly with many Fortran compilers even
+       if this rule is violated, something that is {\bf not}, however,
+       recommended.}
+%-----------------------------------------------------------------------
+\routine{SLA\_MXV}{Apply 3D Rotation}
+{
+ \action{Multiply a 3-vector by a rotation matrix (single precision).}
+ \call{CALL sla\_MXV (RM, VA, VB)}
+}
+\args{GIVEN}
+{
+ \spec{RM}{R(3,3)}{rotation matrix} \\
+ \spec{VA}{R(3)}{vector to be rotated}
+}
+\args{RETURNED}
+{
+ \spec{VB}{R(3)}{result vector}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine performs the operation:
+        \begin{verse}
+         {\bf b} = {\bf M}$\cdot${\bf a}
+        \end{verse}
+        where {\bf a} and {\bf b} are the 3-vectors VA and VB
+        respectively, and {\bf M} is the $3\times3$ matrix RM.
+  \item The main function of this routine is apply a
+        rotation;  under these circumstances, ${\bf M}$ is a
+        {\it proper real orthogonal}\/ matrix.
+  \item To comply with the ANSI Fortran 77 standard, VA and VB must
+        {\bf not} be the same array.  The routine is, in fact, coded
+        so as to work properly with many Fortran compilers even
+        if this rule is violated, something that is {\bf not}, however,
+        recommended.
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_NUT}{Nutation Matrix}
+{
+ \action{Form the matrix of nutation (SF2001 theory) for a given date.}
+ \call{CALL sla\_NUT (DATE, RMATN)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date
+                                          (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{RMATN}{D(3,3)}{nutation matrix}
+}
+\notes{
+ \begin{enumerate}
+  \item The matrix is in the sense:
+        \begin{verse}
+         ${\bf v}_{true} = {\bf M}\times{\bf v}_{mean}$
+        \end{verse}
+        where ${\bf v}_{true}$ is the star vector relative to the
+        true equator and equinox of date, {\bf M} is the
+        $3\times3$ matrix {\tt rmatn} and
+        ${\bf v}_{mean}$ is the star vector relative to the
+        mean equator and equinox of date.
+  \item The matrix represents forced nutation (but not free core nutation)
+        plus corrections to the IAU~1976 precession model.
+  \item Earth attitude predictions made by combining the present nutation
+        matrix with IAU~1976 precession are accurate to 1~mas (with respect
+        to the ICRS) for a few decades around 2000.
+  \item The distinction between the required TDB and TT is
+        always negligible.  Moreover, for all but the most
+        critical applications UTC is adequate.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Kaplan, G.H., 1981.\ {\it USNO circular No.\ 163}, pA3-6.
+  \item Shirai, T. \& Fukushima, T., 2001, Astron.J., {\bf 121},
+        3270-3283.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_NUTC}{Nutation Components}
+{
+ \action{Nutation (SF2001 theory):  longitude \& obliquity
+         components, and mean obliquity.}
+ \call{CALL sla\_NUTC (DATE, DPSI, DEPS, EPS0)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date
+                                           (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{DPSI,DEPS}{D}{nutation in longitude and obliquity (radians)} \\
+ \spec{EPS0}{D}{mean obliquity (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The routine predicts forced nutation (but not free core nutation)
+        plus corrections to the IAU~1976 precession model.
+  \item Earth attitude predictions made by combining the present nutation
+        model with IAU~1976 precession are accurate to 1~mas (with respect
+        to the ICRS) for a few decades around 2000.
+  \item The slaNutc80 routine is the equivalent of the present routine
+        but using the IAU 1980 nutation theory.  The older theory is less
+        accurate, leading to errors as large as 350~mas over the interval
+        1900-2100, mainly because of the error in the IAU~1976 precession.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Shirai, T. \& Fukushima, T., Astron.J.\ 121, 3270-3283 (2001).
+  \item Fukushima, T., Astron.Astrophys.\ 244, L11 (1991).
+  \item Simon, J. L., Bretagnon, P., Chapront, J., Chapront-Touze, M.,
+        Francou, G. \& Laskar, J., Astron.Astrophys.\ 282, 663 (1994).
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_NUTC80}{Nutation Components, IAU 1980}
+{
+ \action{Nutation (IAU 1980 theory):  longitude \& obliquity
+         components, and mean obliquity.}
+ \call{CALL sla\_NUTC80 (DATE, DPSI, DEPS, EPS0)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TDB (formerly ET) as Modified Julian Date
+                                           (JD$-$2400000.5)}
+}
+\args{RETURNED}
+{
+ \spec{DPSI,DEPS}{D}{nutation in longitude and obliquity (radians)} \\
+ \spec{EPS0}{D}{mean obliquity (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The IAU 1980 theory used in the present function has
+        errors as large as 350~mas over the interval
+        1900-2100, mainly because of the error in the IAU~1976
+        precession.  For more accurate results, either the corrections
+        published in IERS {\it Bulletin~B}\/
+        must be applied, or the
+        sla\_NUTC function can be used.  The latter is based upon the
+        more recent SF2001 nutation theory and is of better
+        than 1\,mas accuracy.
+  \item The distinction between the required TDB and TT is
+        always negligible.  Moreover, for all but the most
+        critical applications UTC is adequate.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Final report of the IAU Working Group on Nutation,
+        chairman P.K.Seidelmann, 1980.
+  \item Kaplan, G.H., 1981.\ {\it USNO circular no.\ 163}, pA3-6.
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_OAP}{Observed to Apparent}
+{
+ \action{Observed to apparent place.}
+ \call{CALL sla\_OAP (\vtop{
+         \hbox{TYPE, OB1, OB2, DATE, DUT, ELONGM, PHIM,}
+         \hbox{HM, XP, YP, TDK, PMB, RH, WL, TLR, RAP, DAP)}}}
+}
+\args{GIVEN}
+{
+ \spec{TYPE}{C*(*)}{type of coordinates -- `R', `H' or `A' (see below)} \\
+ \spec{OB1}{D}{observed Az, HA or RA (radians; Az is N=0, E=$90^{\circ}$)} \\
+ \spec{OB2}{D}{observed zenith distance or $\delta$ (radians)} \\
+ \spec{DATE}{D }{UTC date/time (Modified Julian Date, JD$-$2400000.5)} \\
+ \spec{DUT}{D}{$\Delta$UT:  UT1$-$UTC (UTC seconds)} \\
+ \spec{ELONGM}{D}{observer's mean longitude (radians, east +ve)} \\
+ \spec{PHIM}{D}{observer's mean geodetic latitude (radians)} \\
+ \spec{HM}{D}{observer's height above sea level (metres)} \\
+ \spec{XP,YP}{D}{polar motion \xy\ coordinates (radians)} \\
+ \spec{TDK}{D}{local ambient temperature (K; std=273.15D0)} \\
+ \spec{PMB}{D}{local atmospheric pressure (mb; std=1013.25D0)} \\
+ \spec{RH}{D}{local relative humidity (in the range 0D0\,--\,1D0)} \\
+ \spec{WL}{D}{effective wavelength ($\mu{\rm m}$, {\it e.g.}\ 0.55D0)} \\
+ \spec{TLR}{D}{tropospheric lapse rate (K per metre,
+                                                {\it e.g.}\ 0.0065D0)}
+}
+\args{RETURNED}
+{
+ \spec{RAP,DAP}{D}{geocentric apparent \radec}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Only the first character of the TYPE argument is significant.
+        `R' or `r' indicates that OBS1 and OBS2 are the observed right
+        ascension and declination;  `H' or `h' indicates that they are
+        hour angle (west +ve) and declination; anything else (`A' or
+        `a' is recommended) indicates that OBS1 and OBS2 are azimuth
+        (north zero, east $90^{\circ}$) and zenith distance.  (Zenith
+        distance is used rather than elevation in order to reflect the
+        fact that no allowance is made for depression of the horizon.)
+  \item The accuracy of the result is limited by the corrections for
+        refraction.  Providing the meteorological parameters are
+        known accurately and there are no gross local effects, the
+        predicted azimuth and elevation should be within about
+        \arcsec{0}{1} for $\zeta<70^{\circ}$.  Even
+        at a topocentric zenith distance of
+        $90^{\circ}$, the accuracy in elevation should be better than
+        1~arcminute;  useful results are available for a further
+        $3^{\circ}$, beyond which the sla\_REFRO routine returns a
+        fixed value of the refraction.  The complementary
+        routines sla\_AOP (or sla\_AOPQK) and sla\_OAP (or sla\_OAPQK)
+        are self-consistent to better than 1~microarcsecond all over
+        the celestial sphere.
+  \item It is advisable to take great care with units, as even
+        unlikely values of the input parameters are accepted and
+        processed in accordance with the models used.
+  \item {\it Observed}\/ \azel\ means the position that would be seen by a
+        perfect theodolite located at the observer.  This is
+        related to the observed \hadec\ via the standard rotation, using
+        the geodetic latitude (corrected for polar motion), while the
+        observed HA and RA are related simply through the local
+        apparent ST.  {\it Observed}\/ \radec\ or \hadec\ thus means the
+        position that would be seen by a perfect equatorial located
+        at the observer and with its polar axis aligned to the
+        Earth's axis of rotation ({\it n.b.}\ not to the refracted pole).
+        By removing from the observed place the effects of
+        atmospheric refraction and diurnal aberration, the
+        geocentric apparent \radec\ is obtained.
+  \item Frequently, {\it mean}\/ rather than {\it apparent}\,
+        \radec\ will be required,
+        in which case further transformations will be necessary.  The
+        sla\_AMP {\it etc.}\ routines will convert
+        the apparent \radec\ produced
+        by the present routine into an FK5 J2000 mean place, by
+        allowing for the Sun's gravitational lens effect, annual
+        aberration, nutation and precession.  Should FK4 B1950
+        coordinates be required, the routines sla\_FK524 {\it etc.}\ will also
+        have to be applied.
+  \item To convert to apparent \radec\ the coordinates read from a
+        real telescope, corrections would have to be applied for
+        encoder zero points, gear and encoder errors, tube flexure,
+        the position of the rotator axis and the pointing axis
+        relative to it, non-perpendicularity between the mounting
+        axes, and finally for the tilt of the azimuth or polar axis
+        of the mounting (with appropriate corrections for mount
+        flexures).  Some telescopes would, of course, exhibit other
+        properties which would need to be accounted for at the
+        appropriate point in the sequence.
+  \item This routine takes time to execute, due mainly to the
+        rigorous integration used to evaluate the refraction.
+        For processing multiple stars for one location and time,
+        call sla\_AOPPA once followed by one call per star to sla\_OAPQK.
+        Where a range of times within a limited period of a few hours
+        is involved, and the highest precision is not required, call
+        sla\_AOPPA once, followed by a call to sla\_AOPPAT each time the
+        time changes, followed by one call per star to sla\_OAPQK.
+  \item The DATE argument is UTC expressed as an MJD.  This is,
+        strictly speaking, wrong, because of leap seconds.  However,
+        as long as the $\Delta$UT and the UTC are consistent there
+        are no difficulties, except during a leap second.  In this
+        case, the start of the 61st second of the final minute should
+        begin a new MJD day and the old pre-leap $\Delta$UT should
+        continue to be used.  As the 61st second completes, the MJD
+        should revert to the start of the day as, simultaneously,
+        the $\Delta$UT changes by one second to its post-leap new value.
+  \item The $\Delta$UT (UT1$-$UTC) is tabulated in IERS circulars and
+        elsewhere.  It increases by exactly one second at the end of
+        each UTC leap second, introduced in order to keep $\Delta$UT
+        within $\pm$\tsec{0}{9}.
+  \item IMPORTANT -- TAKE CARE WITH THE LONGITUDE SIGN CONVENTION.  The
+        longitude required by the present routine is {\bf east-positive},
+        in accordance with geographical convention (and right-handed).
+        In particular, note that the longitudes returned by the
+        sla\_OBS routine are west-positive (as in the {\it Astronomical
+        Almanac}\/ before 1984) and must be reversed in sign before use
+        in the present routine.
+  \item The polar coordinates XP,YP can be obtained from IERS
+        circulars and equivalent publications.  The
+        maximum amplitude is about \arcsec{0}{3}.  If XP,YP values
+        are unavailable, use XP=YP=0D0.  See page B60 of the 1988
+        {\it Astronomical Almanac}\/ for a definition of the two angles.
+  \item The height above sea level of the observing station, HM,
+        can be obtained from the {\it Astronomical Almanac}\/ (Section J
+        in the 1988 edition), or via the routine sla\_OBS.  If P,
+        the pressure in mb, is available, an adequate
+        estimate of HM can be obtained from the following expression:
+        \begin{quote}
+         {\tt HM=-29.3D0*TSL*LOG(P/1013.25D0)}
+        \end{quote}
+        where TSL is the approximate sea-level air temperature in K
+        (see {\it Astrophysical Quantities}, C.W.Allen, 3rd~edition,
+        \S 52).  Similarly, if the pressure P is not known,
+        it can be estimated from the height of the observing
+        station, HM as follows:
+        \begin{quote}
+         {\tt P=1013.25D0*EXP(-HM/(29.3D0*TSL))}
+        \end{quote}
+        Note, however, that the refraction is nearly proportional to the
+        pressure and that an accurate P value is important for
+        precise work.
+  \item The azimuths {\it etc.}\ used by the present routine are with
+        respect to the celestial pole.  Corrections from the terrestrial pole
+        can be computed using sla\_POLMO.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_OAPQK}{Quick Observed to Apparent}
+{
+ \action{Quick observed to apparent place.}
+ \call{CALL sla\_OAPQK (TYPE, OB1, OB2, AOPRMS, RAP, DAP)}
+}
+\args{GIVEN}
+{
+ \spec{TYPE}{C*(*)}{type of coordinates -- `R', `H' or `A' (see below)} \\
+ \spec{OB1}{D}{observed Az, HA or RA (radians; Az is N=0, E=$90^{\circ}$)} \\
+ \spec{OB2}{D}{observed zenith distance or $\delta$ (radians)} \\
+ \spec{AOPRMS}{D(14)}{star-independent apparent-to-observed parameters:} \\
+ \specel   {(1)}     {geodetic latitude (radians)} \\
+ \specel   {(2,3)}   {sine and cosine of geodetic latitude} \\
+ \specel   {(4)}     {magnitude of diurnal aberration vector} \\
+ \specel   {(5)}     {height (HM)} \\
+ \specel   {(6)}     {ambient temperature (TDK)} \\
+ \specel   {(7)}     {pressure (PMB)} \\
+ \specel   {(8)}     {relative humidity (RH)} \\
+ \specel   {(9)}     {wavelength (WL)} \\
+ \specel   {(10)}    {lapse rate (TLR)} \\
+ \specel   {(11,12)} {refraction constants A and B (radians)} \\
+ \specel   {(13)}    {longitude + eqn of equinoxes +
+                       ``sidereal $\Delta$UT'' (radians)} \\
+ \specel   {(14)}    {local apparent sidereal time (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RAP,DAP}{D}{geocentric apparent \radec}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Only the first character of the TYPE argument is significant.
+        `R' or `r' indicates that OBS1 and OBS2 are the observed right
+        ascension and declination;  `H' or `h' indicates that they are
+        hour angle (west +ve) and declination; anything else (`A' or
+        `a' is recommended) indicates that OBS1 and OBS2 are Azimuth
+        (north zero, east $90^{\circ}$) and zenith distance.  (Zenith
+        distance is used rather than elevation in order to reflect the
+        fact that no allowance is made for depression of the horizon.)
+  \item The accuracy of the result is limited by the corrections for
+        refraction.  Providing the meteorological parameters are
+        known accurately and there are no gross local effects, the
+        predicted azimuth and elevation should be within about
+        \arcsec{0}{1} for $\zeta<70^{\circ}$.  Even
+        at a topocentric zenith distance of
+        $90^{\circ}$, the accuracy in elevation should be better than
+        1~arcminute;  useful results are available for a further
+        $3^{\circ}$, beyond which the sla\_REFRO routine returns a
+        fixed value of the refraction.  The complementary
+        routines sla\_AOP (or sla\_AOPQK) and sla\_OAP (or sla\_OAPQK)
+        are self-consistent to better than 1~microarcsecond all over
+        the celestial sphere.
+  \item It is advisable to take great care with units, as even
+        unlikely values of the input parameters are accepted and
+        processed in accordance with the models used.
+  \item {\it Observed}\/ \azel\ means the position that would be seen by a
+        perfect theodolite located at the observer.  This is
+        related to the observed \hadec\ via the standard rotation, using
+        the geodetic latitude (corrected for polar motion), while the
+        observed HA and RA are related simply through the local
+        apparent ST.  {\it Observed}\/ \radec\ or \hadec\ thus means the
+        position that would be seen by a perfect equatorial located
+        at the observer and with its polar axis aligned to the
+        Earth's axis of rotation ({\it n.b.}\ not to the refracted pole).
+        By removing from the observed place the effects of
+        atmospheric refraction and diurnal aberration, the
+        geocentric apparent \radec\ is obtained.
+  \item Frequently, {\it mean}\/ rather than {\it apparent}\,
+        \radec\ will be required,
+        in which case further transformations will be necessary.  The
+        sla\_AMP {\it etc.}\ routines will convert
+        the apparent \radec\ produced
+        by the present routine into an FK5 J2000 mean place, by
+        allowing for the Sun's gravitational lens effect, annual
+        aberration, nutation and precession.  Should FK4 B1950
+        coordinates be required, the routines sla\_FK524 {\it etc.}\ will also
+        have to be applied.
+  \item To convert to apparent \radec\ the coordinates read from a
+        real telescope, corrections would have to be applied for
+        encoder zero points, gear and encoder errors, tube flexure,
+        the position of the rotator axis and the pointing axis
+        relative to it, non-perpendicularity between the mounting
+        axes, and finally for the tilt of the azimuth or polar axis
+        of the mounting (with appropriate corrections for mount
+        flexures).  Some telescopes would, of course, exhibit other
+        properties which would need to be accounted for at the
+        appropriate point in the sequence.
+  \item The star-independent apparent-to-observed-place parameters
+        in AOPRMS may be computed by means of the sla\_AOPPA routine.
+        If nothing has changed significantly except the time, the
+        sla\_AOPPAT routine may be used to perform the requisite
+        partial recomputation of AOPRMS.
+  \item The azimuths {\it etc.}\ used by the present routine are with
+        respect to the celestial pole.  Corrections from the terrestrial pole
+        can be computed using sla\_POLMO.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_OBS}{Observatory Parameters}
+{
+ \action{Look up an entry in a standard list of
+         groundbased observing stations parameters.}
+ \call{CALL sla\_OBS (N, C, NAME, W, P, H)}
+}
+\args{GIVEN}
+{
+ \spec{N}{I}{number specifying observing station}
+}
+\args{GIVEN or RETURNED}
+{
+ \spec{C}{C*(*)}{identifier specifying observing station}
+}
+\args{RETURNED}
+{
+ \spec{NAME}{C*(*)}{name of specified observing station} \\
+ \spec{W}{D}{longitude (radians, west +ve)} \\
+ \spec{P}{D}{geodetic latitude (radians, north +ve)} \\
+ \spec{H}{D}{height above sea level (metres)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Station identifiers C may be up to 10 characters long,
+        and station names NAME may be up to 40 characters long.
+  \item C and N are {\it alternative}\/ ways of specifying the observing
+        station.  The C option, which is the most generally useful,
+        may be selected by specifying an N value of zero or less.
+        If N is 1 or more, the parameters of the Nth station
+        in the currently supported list are interrogated, and
+        the station identifier C is returned as well as NAME, W,
+        P and H.
+  \item If the station parameters are not available, either because
+        the station identifier C is not recognized, or because an
+        N value greater than the number of stations supported is
+        given, a name of `?' is returned and W, P and H are left in
+        their current states.
+  \item Programs can obtain a list of all currently supported
+        stations by calling the routine repeatedly, with N=1,2,3...
+        When NAME=`?' is seen, the list of stations has been
+        exhausted.  The stations at the time of writing are listed
+        below.
+  \item Station numbers, identifiers, names and other details are
+        subject to change and should not be hardwired into
+        application programs.
+  \item All station identifiers C are uppercase only;  lower case
+        characters must be converted to uppercase by the calling
+        program.  The station names returned may contain both upper-
+        and lowercase.  All characters up to the first space are
+        checked;  thus an abbreviated ID will return the parameters
+        for the first station in the list which matches the
+        abbreviation supplied, and no station in the list will ever
+        contain embedded spaces.  C must not have leading spaces.
+  \item IMPORTANT -- BEWARE OF THE LONGITUDE SIGN CONVENTION.  The
+        longitude returned by sla\_OBS is
+        {\bf west-positive}, following the pre-1984 {\it Astronomical
+        Almanac}.  However, this sign convention is left-handed and is
+        the opposite of the one now used; elsewhere in
+        SLALIB the preferable east-positive convention is used.  In
+        particular, note that for use in sla\_AOP, sla\_AOPPA and
+        sla\_OAP the sign of the longitude must be reversed.
+  \item Users are urged to inform the author of any improvements
+        they would like to see made.  For example:
+        \begin{itemize}
+         \item typographical corrections
+         \item more accurate parameters
+         \item better station identifiers or names
+         \item additional stations
+        \end{itemize}
+ \end{enumerate}
+Stations supported by sla\_OBS at the time of writing:
+\begin{tabbing}
+xxxxxxxxxxxxxxxxx \= \kill
+{\it ID} \> {\it NAME} \\ \\
+AAT \> Anglo-Australian 3.9m Telescope \\
+ANU2.3 \> Siding Spring 2.3m \\
+APO3.5 \> Apache Point 3.5m \\
+ARECIBO \> Arecibo 1000 foot \\
+ATCA \> Australia Telescope Compact Array \\
+BLOEMF \> Bloemfontein 1.52m \\
+BOSQALEGRE \> Bosque Alegre 1.54m \\
+CAMB1MILE \> Cambridge 1 mile \\
+CAMB5KM \> Cambridge 5 km \\
+CATALINA61 \> Catalina 61 inch \\
+CFHT \> Canada-France-Hawaii 3.6m Telescope \\
+CSO \> Caltech Sub-mm Observatory, Mauna Kea \\
+DAO72 \> DAO Victoria BC 1.85m \\
+DUNLAP74 \> David Dunlap 74 inch \\
+DUPONT \> Du Pont 2.5m Telescope, Las Campanas \\
+EFFELSBERG \> Effelsberg 100m \\
+ESO3.6 \> ESO 3.6m \\
+ESONTT \> ESO 3.5m NTT \\
+ESOSCHM \> ESO 1m Schmidt, La Silla \\
+FCRAO \> Five College Radio Astronomy Obs \\
+FLAGSTF61 \> USNO 61 inch astrograph, Flagstaff \\
+GBVA140 \> Greenbank 140 foot \\
+GBVA300 \> Greenbank 300 foot \\
+GEMININ \> Gemini North 8m \\
+GEMINIS \> Gemini South 8m \\
+HARVARD \> Harvard College Observatory 1.55m \\
+HPROV1.52 \> Haute Provence 1.52m \\
+HPROV1.93 \> Haute Provence 1.93m \\
+IRTF \> NASA IR Telescope Facility, Mauna Kea \\
+JCMT \> JCMT 15m \\
+JODRELL1 \> Jodrell Bank 250 foot \\
+KECK1 \> Keck 10m Telescope 1 \\
+KECK2 \> Keck 10m Telescope 2 \\
+KISO \> Kiso 1.05m Schmidt, Japan \\
+KOSMA3M \> Cologne Submillimeter Observatory 3m \\
+KOTTAMIA \> Kottamia 74 inch \\
+KPNO158 \> Kitt Peak 158 inch \\
+KPNO36FT \> Kitt Peak 36 foot \\
+KPNO84 \> Kitt Peak 84 inch \\
+KPNO90 \> Kitt Peak 90 inch \\
+LICK120 \> Lick 120 inch \\
+LOWELL72 \> Perkins 72 inch, Lowell \\
+LPO1 \> Jacobus Kapteyn 1m Telescope \\
+LPO2.5 \> Isaac Newton 2.5m Telescope \\
+LPO4.2 \> William Herschel 4.2m Telescope \\
+MAGELLAN1 \> Magellan 1, 6.5m, Las Campanas \\
+MAGELLAN2 \> Magellan 2, 6.5m, Las Campanas \\
+MAUNAK88 \> Mauna Kea 88 inch \\
+MCDONLD2.1 \> McDonald 2.1m \\
+MCDONLD2.7 \> McDonald 2.7m \\
+MMT \> MMT, Mt Hopkins \\
+MOPRA \> ATNF Mopra Observatory \\
+MTEKAR \> Mt Ekar 1.82m \\
+MTHOP1.5 \> Mt Hopkins 1.5m \\
+MTLEMMON60 \> Mt Lemmon 60 inch \\
+NOBEYAMA \> Nobeyama 45m \\
+OKAYAMA \> Okayama 1.88m \\
+PALOMAR200 \> Palomar 200 inch \\
+PALOMAR48 \> Palomar 48-inch Schmidt \\
+PALOMAR60 \> Palomar 60 inch \\
+PARKES \> Parkes 64m \\
+QUEBEC1.6 \> Quebec 1.6m \\
+SAAO74 \> Sutherland 74 inch \\
+SANPM83 \> San Pedro Martir 83 inch \\
+ST.ANDREWS \> St Andrews University Observatory \\
+STEWARD90 \> Steward 90 inch \\
+STROMLO74 \> Mount Stromlo 74 inch \\
+SUBARU \> Subaru 8m \\
+SUGARGROVE \> Sugar Grove 150 foot \\
+TAUTNBG \> Tautenburg 2m \\
+TAUTSCHM \> Tautenberg 1.34m Schmidt \\
+TIDBINBLA \> Tidbinbilla 64m \\
+TOLOLO1.5M \> Cerro Tololo 1.5m \\
+TOLOLO4M \> Cerro Tololo 4m \\
+UKIRT \> UK Infra Red Telescope \\
+UKST \> UK 1.2m Schmidt, Siding Spring \\
+USSR6 \> USSR 6m \\
+USSR600 \> USSR 600 foot \\
+VLA \> Very Large Array \\
+VLT1 \> ESO VLT 8m, UT1 \\
+VLT2 \> ESO VLT 8m, UT2 \\
+VLT3 \> ESO VLT 8m, UT3 \\
+VLT4 \> ESO VLT 8m, UT4
+\end{tabbing}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PA}{$h,\delta$ to Parallactic Angle}
+{
+ \action{Hour angle and declination to parallactic angle
+         (double precision).}
+ \call{D~=~sla\_PA (HA, DEC, PHI)}
+}
+\args{GIVEN}
+{
+ \spec{HA}{D}{hour angle in radians (geocentric apparent)} \\
+ \spec{DEC}{D}{declination in radians (geocentric apparent)} \\
+ \spec{PHI}{D}{latitude in radians (geodetic)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_PA}{D}{parallactic angle (radians, in the range $\pm \pi$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The parallactic angle at a point in the sky is the position
+        angle of the vertical, {\it i.e.}\ the angle between the direction to
+        the pole and to the zenith.  In precise applications care must
+        be taken only to use geocentric apparent \hadec\ and to consider
+        separately the effects of atmospheric refraction and telescope
+        mount errors.
+  \item At the pole a zero result is returned.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PAV}{Position-Angle Between Two Directions}
+{
+ \action{Returns the bearing (position angle) of one celestial
+         direction with respect to another (single precision).}
+ \call{R~=~sla\_PAV (V1, V2)}
+}
+\args{GIVEN}
+{
+ \spec{V1}{R(3)}{vector to one point} \\
+ \spec{V2}{R(3)}{vector to the other point}
+}
+\args{RETURNED}
+{
+ \spec{sla\_PAV}{R}{position-angle of 2nd point with respect to 1st}
+}
+\notes
+{
+ \begin{enumerate}
+ \item The coordinate frames correspond to \radec,
+       $[\lambda,\phi]$ {\it etc.}.
+ \item The result is the bearing (position angle), in radians,
+       of point V2 as seen
+       from point V1.  It is in the range $\pm \pi$.  The sense
+       is such that if V2
+       is a small distance due east of V1 the result
+       is about $+\pi/2$. Zero is returned
+       if the two points are coincident.
+ \item There is no requirement for either vector to be of unit length.
+ \item The routine sla\_BEAR performs an equivalent function except
+       that the points are specified in the form of spherical coordinates.
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_PCD}{Apply Radial Distortion}
+{
+ \action{Apply pincushion/barrel distortion to a tangent-plane \xy.}
+ \call{CALL sla\_PCD (DISCO,X,Y)}
+}
+\args{GIVEN}
+{
+ \spec{DISCO}{D}{pincushion/barrel distortion coefficient} \\
+ \spec{X,Y}{D}{tangent-plane \xy}
+}
+\args{RETURNED}
+{
+ \spec{X,Y}{D}{distorted \xy}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The distortion is of the form $\rho = r (1 + c r^{2})$, where $r$ is
+        the radial distance from the tangent point, $c$ is the DISCO
+        argument, and $\rho$ is the radial distance in the presence of
+        the distortion.
+  \item For {\it pincushion}\/ distortion, C is +ve;  for
+        {\it barrel}\/ distortion, C is $-$ve.
+  \item For X,Y in units of one projection radius (in the case of
+        a photographic plate, the focal length), the following
+        DISCO values apply:
+
+        \vspace{2ex}
+
+        \hspace{5em}
+        \begin{tabular}{|l|c|} \hline
+         Geometry & DISCO \\ \hline \hline
+         astrograph & 0.0 \\ \hline
+         Schmidt & $-$0.3333 \\ \hline
+         AAT PF doublet & +147.069 \\ \hline
+         AAT PF triplet & +178.585 \\ \hline
+         AAT f/8 & +21.20 \\ \hline
+         JKT f/8 & +14.6 \\ \hline
+        \end{tabular}
+
+        \vspace{2ex}
+
+  \item There is a companion routine, sla\_UNPCD, which performs the
+        inverse operation.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PDA2H}{H.A.\ for a Given Azimuth}
+{
+ \action{Hour Angle corresponding to a given azimuth (double precision).}
+ \call{CALL sla\_PDA2H (P, D, A, H1, J1, H2, J2)}
+}
+\args{GIVEN}
+{
+ \spec{P}{D}{latitude} \\
+ \spec{D}{D}{declination} \\
+ \spec{A}{D}{azimuth}
+}
+\args{RETURNED}
+{
+ \spec{H1}{D}{hour angle:  first solution if any} \\
+ \spec{J1}{I}{flag: 0 = solution 1 is valid} \\
+ \spec{H2}{D}{hour angle:  second solution if any} \\
+ \spec{J2}{I}{flag: 0 = solution 2 is valid}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PDQ2H}{H.A.\ for a Given P.A.}
+{
+ \action{Hour Angle corresponding to a given parallactic angle
+         (double precision).}
+ \call{CALL sla\_PDQ2H (P, D, Q, H1, J1, H2, J2)}
+}
+\args{GIVEN}
+{
+ \spec{P}{D}{latitude} \\
+ \spec{D}{D}{declination} \\
+ \spec{Q}{D}{azimuth}
+}
+\args{RETURNED}
+{
+ \spec{H1}{D}{hour angle:  first solution if any} \\
+ \spec{J1}{I}{flag: 0 = solution 1 is valid} \\
+ \spec{H2}{D}{hour angle:  second solution if any} \\
+ \spec{J2}{I}{flag: 0 = solution 2 is valid}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PERMUT}{Next Permutation}
+{
+ \action{Generate the next permutation of a specified number of items.}
+ \call{CALL sla\_PERMUT (N, ISTATE, IORDER, J)}
+}
+\args{GIVEN}
+{
+ \spec{N}{I}{number of items:  there will be N! permutations} \\
+ \spec{ISTATE}{I(N)}{state, ISTATE(1)$=-1$ to initialize}
+}
+\args{RETURNED}
+{
+ \spec{ISTATE}{I(N)}{state, updated ready for next time} \\
+ \spec{IORDER}{I(N)}{next permutation of numbers 1,2,\ldots,N} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal N (zero or less is illegal)} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $+$1 = no more permutations available}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine returns, in the IORDER array, the integers 1 to N
+        inclusive, in an order that depends on the current contents of
+        the ISTATE array.  Before calling the routine for the first
+        time, the caller must set the first element of the ISTATE array
+        to $-1$ (any negative number will do) to cause the ISTATE array
+        to be fully initialized.
+  \item The first permutation to be generated is:
+        \begin{verse}
+           IORDER(1)=N, IORDER(2)=N-1, ..., IORDER(N)=1
+        \end{verse}
+        This is also the permutation returned for the ``finished'' (J=1) case.
+        The final permutation to be generated is:
+        \begin{verse}
+           IORDER(1)=1, IORDER(2)=2, ..., IORDER(N)=N
+        \end{verse}
+  \item If the ``finished'' (J=1) status is ignored, the routine continues
+        to deliver permutations, the pattern repeating every~N!\,~calls.
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_PERTEL}{Perturbed Orbital Elements}
+{
+ \action{Update the osculating elements of an asteroid or comet by
+         applying planetary perturbations.}
+ \call{CALL sla\_PERTEL (\vtop{
+         \hbox{JFORM, DATE0, DATE1,}
+         \hbox{EPOCH0, ORBI0, ANODE0, PERIH0, AORQ0, E0, AM0,}
+         \hbox{EPOCH1, ORBI1, ANODE1, PERIH1, AORQ1, E1, AM1,}
+         \hbox{JSTAT)}}}
+}
+\args{GIVEN (format and dates)}
+{
+ \spec{JFORM}{I}{choice of element set (2 or 3; Note~1)} \\
+ \spec{DATE0}{D}{date of osculation (TT MJD) for the given} \\
+ \spec{}{}{\hspace{1.5em} elements} \\
+ \spec{DATE1}{D}{date of osculation (TT MJD) for the updated} \\
+ \spec{}{}{\hspace{1.5em} elements}
+}
+\args{GIVEN (the unperturbed elements)}
+{
+ \spec{EPOCH0}{D}{epoch of the given element set
+                            ($t_0$ or $T$, TT MJD;} \\
+ \spec{}{}{\hspace{1.5em} Note~2)} \\
+ \spec{ORBI0}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE0}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH0}{D}{argument of perihelion
+                            ($\omega$, radians)} \\
+ \spec{AORQ0}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E0}{D}{eccentricity ($e$)} \\
+ \spec{AM0}{D}{mean anomaly ($M$, radians, JFORM=2 only)}
+}
+\args{RETURNED (the updated elements)}
+{
+ \spec{EPOCH1}{D}{epoch of the updated element set
+                            ($t_0$ or $T$,} \\
+ \spec{}{}{\hspace{1.5em} TT MJD; Note~2)} \\
+ \spec{ORBI1}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE1}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH1}{D}{argument of perihelion
+                            ($\omega$, radians)} \\
+ \spec{AORQ1}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E1}{D}{eccentricity ($e$)} \\
+ \spec{AM1}{D}{mean anomaly ($M$, radians, JFORM=2 only)}
+}
+\args{RETURNED (status flag)}
+{
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{0.5em}+102 = warning, distant epoch} \\
+ \spec{}{}{\hspace{0.5em}+101 = warning, large timespan
+                                            ($>100$ years)} \\
+ \spec{}{}{\hspace{-1.8em}+1 to +10 = coincident with major planet
+                                                  (Note~6)} \\
+ \spec{}{}{\hspace{1.95em}       0 = OK} \\
+ \spec{}{}{\hspace{1.2em}    $-$1 = illegal JFORM} \\
+ \spec{}{}{\hspace{1.2em}    $-$2 = illegal E0} \\
+ \spec{}{}{\hspace{1.2em}    $-$3 = illegal AORQ0} \\
+ \spec{}{}{\hspace{1.2em}    $-$4 = internal error} \\
+ \spec{}{}{\hspace{1.2em}    $-$5 = numerical error}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Two different element-format options are supported, as follows. \\
+
+        JFORM=2, suitable for minor planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean anomaly $M$ (radians)
+        \end{tabbing}
+
+        JFORM=3, suitable for comets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of perihelion $T$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> perihelion distance $q$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e \leq 10 )$
+        \end{tabbing}
+ \item DATE0, DATE1, EPOCH0 and EPOCH1 are all instants of time in
+       the TT time scale (formerly Ephemeris Time, ET), expressed
+       as Modified Julian Dates (JD$-$2400000.5).
+       \begin{itemize}
+       \item DATE0 is the instant at which the given
+             ({\it i.e.}\ unperturbed) osculating elements are correct.
+       \item DATE1 is the specified instant at which the updated osculating
+             elements are correct.
+       \item EPOCH0 and EPOCH1 will be the same as DATE0 and DATE1
+             (respectively) for the JFORM=2 case, normally used for minor
+             planets.  For the JFORM=3 case, the two epochs will refer to
+             perihelion passage and so will not, in general, be the same as
+             DATE0 and/or DATE1 though they may be similar to one another.
+       \end{itemize}
+ \item The elements are with respect to the J2000 ecliptic and mean equinox.
+ \item Unused elements (AM0 and AM1 for JFORM=3) are not accessed.
+ \item See the sla\_PERTUE routine for details of the algorithm used.
+ \item This routine is not intended to be used for major planets, which
+       is why JFORM=1 is not available and why there is no opportunity
+       to specify either the longitude of perihelion or the daily
+       motion.  However, if JFORM=2 elements are somehow obtained for a
+       major planet and supplied to the routine, sensible results will,
+       in fact, be produced.  This happens because the sla\_PERTUE routine
+       that is called to perform the calculations checks the separation
+       between the body and each of the planets and interprets a
+       suspiciously small value (0.001~AU) as an attempt to apply it to
+       the planet concerned.  If this condition is detected, the
+       contribution from that planet is ignored, and the status is set to
+       the planet number (1--10 = Mercury, Venus, EMB, Mars, Jupiter,
+       Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+ \end{enumerate}
+}
+\aref{Sterne, Theodore E., {\it An Introduction to Celestial Mechanics,}\/
+      Interscience Publishers, 1960.  Section 6.7, p199.}
+%------------------------------------------------------------------------------
+\routine{SLA\_PERTUE}{Perturbed Universal Elements}
+{
+ \action{Update the universal elements of an asteroid or comet by
+         applying planetary perturbations.}
+ \call{CALL sla\_PERTUE (DATE, U, JSTAT)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{final epoch (TT MJD) for the updated elements}
+}
+\args{GIVEN and RETURNED}
+{
+ \spec{U}{D(13)}{universal elements (updated in place)} \\
+ \specel {(1)}     {combined mass ($M+m$)} \\
+ \specel {(2)}     {total energy of the orbit ($\alpha$)} \\
+ \specel {(3)}     {reference (osculating) epoch ($t_0$)} \\
+ \specel {(4-6)}   {position at reference epoch (${\rm \bf r}_0$)} \\
+ \specel {(7-9)}   {velocity at reference epoch (${\rm \bf v}_0$)} \\
+ \specel {(10)}    {heliocentric distance at reference epoch} \\
+ \specel {(11)}    {${\rm \bf r}_0.{\rm \bf v_0}$} \\
+ \specel {(12)}    {date ($t$)} \\
+ \specel {(13)}    {universal eccentric anomaly ($\psi$) of date, approx}
+}
+\args{RETURNED}
+{
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{0.5em}+102 = warning, distant epoch} \\
+ \spec{}{}{\hspace{0.5em}+101 = warning, large timespan
+                                            ($>100$ years)} \\
+ \spec{}{}{\hspace{-1.8em}+1 to +10 = coincident with major planet
+                                                  (Note~5)} \\
+ \spec{}{}{\hspace{1.95em}       0 = OK} \\
+ \spec{}{}{\hspace{1.2em}    $-$1 = numerical error}
+}
+\notes
+{
+ \begin{enumerate}
+  \setlength{\parskip}{\medskipamount}
+  \item The ``universal'' elements are those which define the orbit for the
+        purposes of the method of universal variables (see reference 2).
+        They consist of the combined mass of the two bodies, an epoch,
+        and the position and velocity vectors (arbitrary reference frame)
+        at that epoch.  The parameter set used here includes also various
+        quantities that can, in fact, be derived from the other
+        information.  This approach is taken to avoiding unnecessary
+        computation and loss of accuracy.  The supplementary quantities
+        are (i)~$\alpha$, which is proportional to the total energy of the
+        orbit, (ii)~the heliocentric distance at epoch,
+        (iii)~the outwards component of the velocity at the given epoch,
+        (iv)~an estimate of $\psi$, the ``universal eccentric anomaly'' at a
+        given date and (v)~that date.
+
+  \item The universal elements are with respect to the J2000 equator and
+        equinox.
+
+  \item The epochs DATE, U(3) and U(12) are all Modified Julian Dates
+        (JD$-$2400000.5).
+
+  \item The algorithm is a simplified form of Encke's method.  It takes as
+        a basis the unperturbed motion of the body, and numerically
+        integrates the perturbing accelerations from the major planets.
+        The expression used is essentially Sterne's 6.7-2 (reference 1).
+        Everhart \& Pitkin (reference 2) suggest rectifying the orbit at
+        each integration step by propagating the new perturbed position
+        and velocity as the new universal variables.  In the present
+        routine the orbit is rectified less frequently than this, in order
+        to gain a slight speed advantage.  However, the rectification is
+        done directly in terms of position and velocity, as suggested by
+        Everhart \& Pitkin, bypassing the use of conventional orbital
+        elements.
+
+        The $f(q)$ part of the full Encke method is not used.  The purpose
+        of this part is to avoid subtracting two nearly equal quantities
+        when calculating the ``indirect member'', which takes account of the
+        small change in the Sun's attraction due to the slightly displaced
+        position of the perturbed body.  A simpler, direct calculation in
+        double precision proves to be faster and not significantly less
+        accurate.
+
+        Apart from employing a variable timestep, and occasionally
+        ``rectifying the orbit'' to keep the indirect member small, the
+        integration is done in a fairly straightforward way.  The
+        acceleration estimated for the middle of the timestep is assumed
+        to apply throughout that timestep;  it is also used in the
+        extrapolation of the perturbations to the middle of the next
+        timestep, to predict the new disturbed position.  There is no
+        iteration within a timestep.
+
+        Measures are taken to reach a compromise between execution time
+        and accuracy.  The starting-point is the goal of achieving
+        arcsecond accuracy for ordinary minor planets over a ten-year
+        timespan.  This goal dictates how large the timesteps can be,
+        which in turn dictates how frequently the unperturbed motion has
+        to be recalculated from the osculating elements.
+
+        Within predetermined limits, the timestep for the numerical
+        integration is varied in length in inverse proportion to the
+        magnitude of the net acceleration on the body from the major
+        planets.
+
+        The numerical integration requires estimates of the major-planet
+        motions.  Approximate positions for the major planets (Pluto
+        alone is omitted) are obtained from the routine sla\_PLANET.  Two
+        levels of interpolation are used, to enhance speed without
+        significantly degrading accuracy.  At a low frequency, the routine
+        sla\_PLANET is called to generate updated position+velocity ``state
+        vectors''.  The only task remaining to be carried out at the full
+        frequency ({\it i.e.}\ at each integration step) is to use the state
+        vectors to extrapolate the planetary positions.  In place of a
+        strictly linear extrapolation, some allowance is made for the
+        curvature of the orbit by scaling back the radius vector as the
+        linear extrapolation goes off at a tangent.
+
+        Various other approximations are made.  For example, perturbations
+        by Pluto and the minor planets are neglected and relativistic
+        effects are not taken into account.
+
+        In the interests of simplicity, the background calculations for
+        the major planets are carried out {\it en masse.}
+        The mean elements and
+        state vectors for all the planets are refreshed at the same time,
+        without regard for orbit curvature, mass or proximity.
+
+        The Earth-Moon system is treated as a single body when the body is
+        distant but as separate bodies when closer to the EMB than the
+        parameter RNE, which incurs a time penalty but improves accuracy
+        for near-Earth objects.
+
+  \item This routine is not intended to be used for major planets.
+        However, if major-planet elements are supplied, sensible results
+        will, in fact, be produced.  This happens because the routine
+        checks the separation between the body and each of the planets and
+        interprets a suspiciously small value (0.001~AU) as an attempt to
+        apply the routine to the planet concerned.  If this condition
+        is detected, the
+        contribution from that planet is ignored, and the status is set to
+        the planet number (1--10 = Mercury, Venus, EMB,
+        Mars, Jupiter, Saturn, Uranus, Neptune, Earth, Moon) as a warning.
+ \end{enumerate}
+}
+\refs{
+   \begin{enumerate}
+   \item Sterne, Theodore E., {\it An Introduction to Celestial Mechanics,}\/
+         Interscience Publishers, 1960.  Section 6.7, p199.
+   \item Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.
+   \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PLANEL}{Planet Position from Elements}
+{
+ \action{Heliocentric position and velocity of a planet,
+         asteroid or comet, starting from orbital elements.}
+ \call{CALL sla\_PLANEL (\vtop{
+         \hbox{DATE, JFORM, EPOCH, ORBINC, ANODE, PERIH,}
+         \hbox{AORQ, E, AORL, DM, PV, JSTAT)}}}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TT MJD of observation (JD$-$2400000.5,} \\
+ \spec{}{}{\hspace{1.5em} Note~1)} \\
+ \spec{JFORM}{I}{choice of element set (1-3, Note~3)} \\
+ \spec{EPOCH}{D}{epoch of elements ($t_0$ or $T$, TT MJD, Note~4)} \\
+ \spec{ORBINC}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH}{D}{longitude or argument of perihelion
+                            ($\varpi$ or $\omega$,} \\
+ \spec{}{}{\hspace{1.5em} radians)} \\
+ \spec{AORQ}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E}{D}{eccentricity ($e$)} \\
+ \spec{AORL}{D}{mean anomaly or longitude
+                               ($M$ or $L$, radians,} \\
+ \spec{}{}{\hspace{1.5em} JFORM=1,2 only)} \\
+ \spec{DM}{D}{daily motion ($n$, radians, JFORM=1 only)}
+}
+\args{RETURNED}
+{
+ \spec{PV}{D(6)}{heliocentric \xyzxyzd, equatorial, J2000} \\
+ \spec{}{}{\hspace{1.5em} (AU, AU/s)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal JFORM} \\
+ \spec{}{}{\hspace{1.5em} $-$2 = illegal E} \\
+ \spec{}{}{\hspace{1.5em} $-$3 = illegal AORQ} \\
+ \spec{}{}{\hspace{1.5em} $-$4 = illegal DM} \\
+ \spec{}{}{\hspace{1.5em} $-$5 = numerical error}
+}
+\notes
+{
+ \begin{enumerate}
+  \item DATE is the instant for which the prediction is required.  It is
+        in the TT time scale (formerly Ephemeris Time, ET) and is a
+        Modified Julian Date (JD$-$2400000.5).
+  \item The elements are with respect to the J2000 ecliptic and equinox.
+  \item A choice of three different element-format options is available, as
+        follows. \\
+
+        JFORM=1, suitable for the major planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> longitude of perihelion $\varpi$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ \\
+        \> AORL   \> = \> mean longitude $L$ (radians) \\
+        \> DM     \> = \> daily motion $n$ (radians)
+        \end{tabbing}
+
+        JFORM=2, suitable for minor planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ \\
+        \> AORL   \> = \> mean anomaly $M$ (radians)
+        \end{tabbing}
+
+        JFORM=3, suitable for comets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of perihelion $T$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> perihelion distance $q$ (AU) \\
+        \> E      \> = \> eccentricity $e$
+        \end{tabbing}
+        Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are
+        not accessed.
+
+  \item Each of the three element sets defines an unperturbed heliocentric
+        orbit.  For a given epoch of observation, the position of the body
+        in its orbit can be predicted from these elements, which are
+        called {\it osculating elements,}\/
+        using standard two-body analytical
+        solutions.  However, due to planetary perturbations, a given set
+        of osculating elements remains usable for only as long as the
+        unperturbed orbit that it describes is an adequate approximation
+        to reality.  Attached to such a set of elements is a date called
+        the {\it osculating epoch,}\/
+        at which the elements are, momentarily,
+        a perfect representation of the instantaneous position and
+        velocity of the body.
+
+        \vspace{1ex}
+
+        Therefore, for any given problem there are up to three different
+        epochs in play, and it is vital to distinguish clearly between
+        them:
+        \begin{itemize}
+        \item The epoch of observation:  the moment in time for which the
+              position of the body is to be predicted.
+        \item The epoch defining the position of the body:  the moment
+              in time at which, in the absence of purturbations, the
+              specified position---mean longitude, mean anomaly, or
+              perihelion---is reached.
+        \item The osculating epoch:  the moment in time at which the
+              given elements are correct.
+        \end{itemize}
+        For the major-planet and minor-planet cases it is usual to make
+        the epoch that defines the position of the body the same as the
+        epoch of osculation.  Thus, only two different epochs are
+        involved:  the epoch of the elements and the epoch of observation.
+        For comets, the epoch of perihelion fixes the position in the
+        orbit and in general a different epoch of osculation will be
+        chosen.  Thus, all three types of epoch are involved.
+
+        \vspace{1ex}
+
+        \goodbreak
+        For the present routine:
+        \begin{itemize}
+        \item The epoch of observation is the argument DATE.
+        \item The epoch defining the position of the body is the argument
+              EPOCH.
+        \item The osculating epoch is not used and is assumed to be
+              close enough to the epoch of observation to deliver
+              adequate accuracy. If not, a preliminary call to
+              sla\_PERTEL may be used to update the element-set (and
+              its associated osculating epoch) by
+              applying planetary perturbations.
+        \end{itemize}
+  \item The reference frame for the result is equatorial and is with
+        respect to the mean equinox and ecliptic of epoch J2000.
+  \item The algorithm was originally adapted from the EPHSLA program of
+        D.\,H.\,P.\,Jones (private communication, 1996).  The method
+        is based on Stumpff's Universal Variables.
+ \end{enumerate}
+}
+\aref{Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.}
+%------------------------------------------------------------------------------
+\routine{SLA\_PLANET}{Planetary Ephemerides}
+{
+ \action{Approximate heliocentric position and velocity of a planet.}
+ \call{CALL sla\_PLANET (DATE, NP, PV, JSTAT)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{Modified Julian Date (JD$-$2400000.5)} \\
+ \spec{NP}{I}{planet:} \\
+ \spec{}{}{\hspace{1.5em} 1\,=\,Mercury} \\
+ \spec{}{}{\hspace{1.5em} 2\,=\,Venus} \\
+ \spec{}{}{\hspace{1.5em} 3\,=\,Earth-Moon Barycentre} \\
+ \spec{}{}{\hspace{1.5em} 4\,=\,Mars} \\
+ \spec{}{}{\hspace{1.5em} 5\,=\,Jupiter} \\
+ \spec{}{}{\hspace{1.5em} 6\,=\,Saturn} \\
+ \spec{}{}{\hspace{1.5em} 7\,=\,Uranus} \\
+ \spec{}{}{\hspace{1.5em} 8\,=\,Neptune} \\
+ \spec{}{}{\hspace{1.5em} 9\,=\,Pluto}
+}
+\args{RETURNED}
+{
+ \spec{PV}{D(6)}{heliocentric \xyzxyzd, equatorial, J2000} \\
+ \spec{}{}{\hspace{1.5em} (AU, AU/s)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} $+$1 = warning: date outside of range} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal NP (outside 1-9)} \\
+ \spec{}{}{\hspace{1.5em} $-$2 = solution didn't converge}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The epoch, DATE, is in the TDB time scale and is in the form
+        of a Modified Julian Date (JD$-$2400000.5).
+  \item The reference frame is equatorial and is with respect to
+        the mean equinox and ecliptic of epoch J2000.
+  \item If a planet number, NP, outside the range 1-9 is supplied, an error
+        status is returned (JSTAT~=~$-1$) and the PV vector
+        is set to zeroes.
+  \item The algorithm for obtaining the mean elements of the
+        planets from Mercury to Neptune is due to
+        J.\,L.\,Simon, P.\,Bretagnon, J.\,Chapront,
+        M.\,Chapront-Touze, G.\,Francou and J.\,Laskar (Bureau des
+        Longitudes, Paris, France).  The (completely different)
+        algorithm for calculating the ecliptic coordinates of
+        Pluto is by Meeus.
+  \item Comparisons of the present routine with the JPL DE200 ephemeris
+        give the following RMS errors over the interval 1960-2025:
+        \begin{tabbing}
+         xxxxx \= xxxxxxxxxxxxxxxxx \= xxxxxxxxxxxxxx \= \kill
+         \> \> {\it position (km)} \> {\it speed (metre/sec)} \\ \\
+         \> Mercury \> \hspace{2em}334 \> \hspace{2.5em}0.437 \\
+         \> Venus   \> \hspace{1.5em}1060 \> \hspace{2.5em}0.855 \\
+         \> EMB     \> \hspace{1.5em}2010 \> \hspace{2.5em}0.815 \\
+         \> Mars    \> \hspace{1.5em}7690 \> \hspace{2.5em}1.98 \\
+         \> Jupiter \> \hspace{1em}71700 \> \hspace{2.5em}7.70 \\
+         \> Saturn  \> \hspace{0.5em}199000 \> \hspace{2em}19.4 \\
+         \> Uranus  \> \hspace{0.5em}564000 \> \hspace{2em}16.4 \\
+         \> Neptune \> \hspace{0.5em}158000 \> \hspace{2em}14.4 \\
+         \> Pluto \> \hspace{1em}36400 \> \hspace{2.5em}0.137
+        \end{tabbing}
+        From comparisons with DE102, Simon {\it et al.}\/ quote the following
+        longitude accuracies over the interval 1800-2200:
+        \begin{tabbing}
+         xxxxx \= xxxxxxxxxxxxxxxxxxxx \= \kill
+         \> Mercury \> \hspace{0.5em}\arcseci{4} \\
+         \> Venus   \> \hspace{0.5em}\arcseci{5} \\
+         \> EMB     \> \hspace{0.5em}\arcseci{6} \\
+         \> Mars    \> \arcseci{17} \\
+         \> Jupiter \> \arcseci{71} \\
+         \> Saturn  \> \arcseci{81} \\
+         \> Uranus  \> \arcseci{86} \\
+         \> Neptune \> \arcseci{11}
+        \end{tabbing}
+        In the case of Pluto, Meeus quotes an accuracy of \arcsec{0}{6}
+        in longitude and \arcsec{0}{2} in latitude for the period
+        1885-2099.
+
+        For all except Pluto, over the period 1000-3000,
+        the accuracy is better than 1.5
+        times that over 1800-2200.  Outside the interval 1000-3000 the
+        accuracy declines.  For Pluto the accuracy declines rapidly
+        outside the period 1885-2099.  Outside these ranges
+        (1885-2099 for Pluto, 1000-3000 for the rest) a ``date out
+        of range'' warning status ({\tt JSTAT=+1}) is returned.
+  \item The algorithms for (i)~Mercury through Neptune and
+        (ii)~Pluto are completely independent.  In the Mercury
+        through Neptune case, the present SLALIB
+        implementation differs from the original
+        Simon {\it et al.}\/ Fortran code in the following respects:
+        \begin{itemize}
+         \item The date is supplied as a Modified Julian Date rather
+               a Julian Date (${\rm MJD} = ({\rm JD} - 2400000.5$).
+         \item The result is returned only in equatorial
+               Cartesian form;  the ecliptic
+               longitude, latitude and radius vector are not returned.
+         \item The velocity is in AU per second, not AU per day.
+         \item Different error/warning status values are used.
+         \item Kepler's Equation is not solved inline.
+         \item Polynomials in T are nested to minimize rounding errors.
+         \item Explicit double-precision constants are used to avoid
+               mixed-mode expressions.
+         \item There are other, cosmetic, changes to comply with
+               Starlink/SLALIB style guidelines.
+        \end{itemize}
+        None of the above changes affects the result significantly.
+  \item For NP\,=\,3 the result is for the Earth-Moon Barycentre.  To
+        obtain the heliocentric position and velocity of the Earth,
+        either use the SLALIB routine sla\_EVP (or sla\_EPV)
+        or call sla\_DMOON and
+        subtract 0.012150581 times the geocentric Moon vector from
+        the EMB vector produced by the present routine.  (The Moon
+        vector should be precessed to J2000 first, but this can
+        be omitted for modern epochs without introducing significant
+        inaccuracy.)
+ \end{enumerate}
+\refs
+{
+ \begin{enumerate}
+  \item Simon {\it et al.,}\/
+        Astron.\ Astrophys.\ {\bf 282}, 663 (1994).
+  \item Meeus, J.,
+        {\it Astronomical Algorithms,}\/ Willmann-Bell (1991).
+ \end{enumerate}
+}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_PLANTE}{\radec\ of Planet from Elements}
+{
+ \action{Topocentric apparent \radec\ of a Solar-System object whose
+         heliocentric orbital elements are known.}
+ \call{CALL sla\_PLANTE (\vtop{
+         \hbox{DATE, ELONG, PHI, JFORM, EPOCH, ORBINC, ANODE, PERIH,}
+         \hbox{AORQ, E, AORL, DM, RA, DEC, R, JSTAT)}}}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TT MJD of observation (JD$-$2400000.5,} \\
+ \spec{}{}{\hspace{1.5em} Notes~1,5)} \\
+ \spec{ELONG,PHI}{D}{observer's longitude (east +ve) and latitude} \\
+ \spec{}{}{\hspace{1.5em} (radians, Note~2)} \\
+ \spec{JFORM}{I}{choice of element set (1-3, Notes~3-6)} \\
+ \spec{EPOCH}{D}{epoch of elements ($t_0$ or $T$, TT MJD, Note~5)} \\
+ \spec{ORBINC}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH}{D}{longitude or argument of perihelion
+                            ($\varpi$ or $\omega$,} \\
+ \spec{}{}{\hspace{1.5em} radians)} \\
+ \spec{AORQ}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E}{D}{eccentricity ($e$)} \\
+ \spec{AORL}{D}{mean anomaly or longitude ($M$ or $L$, radians,} \\
+  \spec{}{}{\hspace{1.5em} JFORM=1,2 only)} \\
+ \spec{DM}{D}{daily motion ($n$, radians, JFORM=1 only)}
+}
+\args{RETURNED}
+{
+ \spec{RA,DEC}{D}{topocentric apparent \radec\ (radians)} \\
+ \spec{R}{D}{distance from observer (AU)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal JFORM} \\
+ \spec{}{}{\hspace{1.5em} $-$2 = illegal E} \\
+ \spec{}{}{\hspace{1.5em} $-$3 = illegal AORQ} \\
+ \spec{}{}{\hspace{1.5em} $-$4 = illegal DM} \\
+ \spec{}{}{\hspace{1.5em} $-$5 = numerical error}
+}
+\notes
+{
+ \begin{enumerate}
+  \item DATE is the instant for which the prediction is
+        required.  It is in the TT time scale (formerly
+        Ephemeris Time, ET) and is a
+        Modified Julian Date (JD$-$2400000.5).
+  \item The longitude and latitude allow correction for geocentric
+        parallax.  This is usually a small effect, but can become
+        important for near-Earth asteroids.  Geocentric positions
+        can be generated by appropriate use of the routines
+        sla\_EVP (or sla\_EPV) and sla\_PLANEL.
+  \item The elements are with respect to the J2000 ecliptic and equinox.
+  \item A choice of three different element-format options is available, as
+        follows. \\
+
+        JFORM=1, suitable for the major planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> longitude of perihelion $\varpi$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ \\
+        \> AORL   \> = \> mean longitude $L$ (radians) \\
+        \> DM     \> = \> daily motion $n$ (radians)
+        \end{tabbing}
+
+        JFORM=2, suitable for minor planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ \\
+        \> AORL   \> = \> mean anomaly $M$ (radians)
+        \end{tabbing}
+
+        JFORM=3, suitable for comets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of perihelion $T$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> perihelion distance $q$ (AU) \\
+        \> E      \> = \> eccentricity $e$
+        \end{tabbing}
+        Unused elements (DM for JFORM=2, AORL and DM for JFORM=3) are
+        not accessed.
+
+  \item Each of the three element sets defines an unperturbed heliocentric
+        orbit.  For a given epoch of observation, the position of the body
+        in its orbit can be predicted from these elements, which are
+        called {\it osculating elements,}\/
+        using standard two-body analytical
+        solutions.  However, due to planetary perturbations, a given set
+        of osculating elements remains usable for only as long as the
+        unperturbed orbit that it describes is an adequate approximation
+        to reality.  Attached to such a set of elements is a date called
+        the {\it osculating epoch,}\/
+        at which the elements are, momentarily,
+        a perfect representation of the instantaneous position and
+        velocity of the body.
+
+        \vspace{1ex}
+
+        Therefore, for any given problem there are up to three different
+        epochs in play, and it is vital to distinguish clearly between
+        them:
+        \begin{itemize}
+        \item The epoch of observation:  the moment in time for which the
+              position of the body is to be predicted.
+        \item The epoch defining the position of the body:  the moment
+              in time at which, in the absence of purturbations, the
+              specified position---mean longitude, mean anomaly, or
+              perihelion---is reached.
+        \item The osculating epoch:  the moment in time at which the
+              given elements are correct.
+        \end{itemize}
+        For the major-planet and minor-planet cases it is usual to make
+        the epoch that defines the position of the body the same as the
+        epoch of osculation.  Thus, only two different epochs are
+        involved:  the epoch of the elements and the epoch of observation.
+        For comets, the epoch of perihelion fixes the position in the
+        orbit and in general a different epoch of osculation will be
+        chosen.  Thus, all three types of epoch are involved.
+
+        \vspace{1ex}
+
+        \goodbreak
+        For the present routine:
+        \begin{itemize}
+        \item The epoch of observation is the argument DATE.
+        \item The epoch defining the position of the body is the argument
+              EPOCH.
+        \item The osculating epoch is not used and is assumed to be
+              close enough to the epoch of observation to deliver
+              adequate accuracy. If not, a preliminary call to
+              sla\_PERTEL may be used to update the element-set (and
+              its associated osculating epoch) by
+              applying planetary perturbations.
+        \end{itemize}
+  \item Two important sources for orbital elements are {\it Horizons,}\/
+        operated by the Jet Propulsion Laboratory, Pasadena,
+        and the {\it Minor Planet Center,}\/ operated by the Center for
+        Astrophysics, Harvard.  For further details, see Section~\ref{ephem}.
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_PLANTU}{\radec\ from Universal Elements}
+{
+ \action{Topocentric apparent \radec\ of a Solar-System object whose
+         heliocentric universal orbital elements are known.}
+ \call{CALL sla\_PLANTU (DATE, ELONG, PHI, U, RA, DEC, R, JSTAT)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{TT MJD of observation (JD$-$2400000.5)} \\
+ \spec{ELONG,PHI}{D}{observer's longitude (east +ve) and latitude} \\
+ \spec{}{}{\hspace{1.5em} radians)}
+}
+\args{GIVEN and RETURNED}
+{
+ \spec{U}{D(13)}{universal orbital elements} \\
+ \specel {(1)}     {combined mass ($M+m$)} \\
+ \specel {(2)}     {total energy of the orbit ($\alpha$)} \\
+ \specel {(3)}     {reference (osculating) epoch ($t_0$)} \\
+ \specel {(4-6)}   {position at reference epoch (${\rm \bf r}_0$)} \\
+ \specel {(7-9)}   {velocity at reference epoch (${\rm \bf v}_0$)} \\
+ \specel {(10)}    {heliocentric distance at reference epoch} \\
+ \specel {(11)}    {${\rm \bf r}_0.{\rm \bf v_0}$} \\
+ \specel {(12)}    {date ($t$)} \\
+ \specel {(13)}    {universal eccentric anomaly ($\psi$) of date, approx}
+}
+\args{RETURNED}
+{
+ \spec{RA,DEC}{D}{topocentric apparent \radec\ (radians)} \\
+ \spec{R}{D}{distance from observer (AU)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = radius vector zero} \\
+ \spec{}{}{\hspace{1.5em} $-$2 = failed to converge}
+}
+\notes
+{
+ \begin{enumerate}
+  \item DATE is the instant for which the prediction is
+        required.  It is in the TT time scale (formerly
+        Ephemeris Time, ET) and is a
+        Modified Julian Date (JD$-$2400000.5).
+  \item The longitude and latitude allow correction for geocentric
+        parallax.  This is usually a small effect, but can become
+        important for near-Earth asteroids.  Geocentric positions
+        can be generated by appropriate use of the routines
+        sla\_EVP (or sla\_EPV) and sla\_UE2PV.
+  \item The ``universal'' elements are those which define the orbit for the
+        purposes of the method of universal variables (see reference 2).
+        They consist of the combined mass of the two bodies, an epoch,
+        and the position and velocity vectors (arbitrary reference frame)
+        at that epoch.  The parameter set used here includes also various
+        quantities that can, in fact, be derived from the other
+        information.  This approach is taken to avoiding unnecessary
+        computation and loss of accuracy.  The supplementary quantities
+        are (i)~$\alpha$, which is proportional to the total energy of the
+        orbit, (ii)~the heliocentric distance at epoch,
+        (iii)~the outwards component of the velocity at the given epoch,
+        (iv)~an estimate of $\psi$, the ``universal eccentric anomaly'' at a
+        given date and (v)~that date.
+  \item The universal elements are with respect to the J2000 ecliptic
+        and equinox.
+ \end{enumerate}
+}
+\refs{
+   \begin{enumerate}
+   \item Sterne, Theodore E., {\it An Introduction to Celestial Mechanics,}\/
+         Interscience Publishers, 1960.  Section 6.7, p199.
+   \item Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.
+   \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_PM}{Proper Motion}
+{
+ \action{Apply corrections for proper motion to a star \radec.}
+ \call{CALL sla\_PM (R0, D0, PR, PD, PX, RV, EP0, EP1, R1, D1)}
+}
+\args{GIVEN}
+{
+ \spec{R0,D0}{D}{\radec\ at epoch EP0 (radians)} \\
+ \spec{PR,PD}{D}{proper motions:  rate of change of
+                 \radec\  (radians per year)} \\
+ \spec{PX}{D}{parallax (arcsec)} \\
+ \spec{RV}{D}{radial velocity (km~s$^{-1}$, +ve if receding)} \\
+ \spec{EP0}{D}{start epoch in years ({\it e.g.}\ Julian epoch)} \\
+ \spec{EP1}{D}{end epoch in years (same system as EP0)}
+}
+\args{RETURNED}
+{
+ \spec{R1,D1}{D}{\radec\ at epoch EP1 (radians)}
+}
+\notes
+{
+\begin{enumerate}
+\item The $\alpha$ proper motions are $\dot{\alpha}$ rather than
+      $\dot{\alpha}\cos\delta$, and are in the same coordinate
+      system as R0,D0.
+\item If the available proper motions are pre-FK5 they will be per
+      tropical year rather than per Julian year, and so the epochs
+      must both be Besselian rather than Julian.  In such cases, a
+      scaling factor of 365.2422D0/365.25D0 should be applied to the
+      radial velocity before use also.
+\end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item 1984 {\it Astronomical Almanac}, pp B39-B41.
+  \item Lederle \& Schwan, 1984.\ {\it Astr. Astrophys.}\ {\bf 134}, 1-6.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_POLMO}{Polar Motion}
+{
+ \action{Polar motion:  correct site longitude and latitude for polar
+         motion and calculate azimuth difference between celestial and
+         terrestrial poles.}
+ \call{CALL sla\_POLMO (ELONGM, PHIM, XP, YP, ELONG, PHI, DAZ)}
+}
+\args{GIVEN}
+{
+ \spec{ELONGM}{D}{mean longitude of the site (radians, east +ve)} \\
+ \spec{PHIM}{D}{mean geodetic latitude of the site (radians)} \\
+ \spec{XP}{D}{polar motion $x$-coordinate (radians)} \\
+ \spec{YP}{D}{polar motion $y$-coordinate (radians)}
+}
+\args{RETURNED}
+{
+ \spec{ELONG}{D}{true longitude of the site (radians, east +ve)} \\
+ \spec{PHI}{D}{true geodetic latitude of the site (radians)} \\
+ \spec{DAZ}{D}{azimuth correction (terrestrial$-$celestial, radians)}
+}
+\notes
+{
+\begin{enumerate}
+\item ``Mean'' longitude and latitude are the (fixed) values for the
+      site's location with respect to the IERS terrestrial reference
+      frame;  the latitude is geodetic.  TAKE CARE WITH THE LONGITUDE
+      SIGN CONVENTION.  The longitudes used by the present routine
+      are east-positive, in accordance with geographical convention
+      (and right-handed).  In particular, note that the longitudes
+      returned by the sla\_OBS routine are west-positive, following
+      astronomical usage, and must be reversed in sign before use in
+      the present routine.
+\item XP and YP are the (changing) coordinates of the Celestial
+      Ephemeris Pole with respect to the IERS Reference Pole.
+      XP is positive along the meridian at longitude $0^\circ$,
+      and YP is positive along the meridian at longitude
+      $270^\circ$ ({\it i.e.}\ $90^\circ$ west).  Values for XP,YP can
+      be obtained from IERS circulars and equivalent publications;
+      the maximum amplitude observed so far is about \arcsec{0}{3}.
+\item ``True'' longitude and latitude are the (moving) values for
+      the site's location with respect to the celestial ephemeris
+      pole and the meridian which corresponds to the Greenwich
+      apparent sidereal time.  The true longitude and latitude
+      link the terrestrial coordinates with the standard celestial
+      models (for precession, nutation, sidereal time {\it etc}).
+\item The azimuths produced by sla\_AOP and sla\_AOPQK are with
+      respect to due north as defined by the Celestial Ephemeris
+      Pole, and can therefore be called ``celestial azimuths''.
+      However, a telescope fixed to the Earth measures azimuth
+      essentially with respect to due north as defined by the
+      IERS Reference Pole, and can therefore be called ``terrestrial
+      azimuth''.  Uncorrected, this would manifest itself as a
+      changing ``azimuth zero-point error''.  The value DAZ is the
+      correction to be added to a celestial azimuth to produce
+      a terrestrial azimuth.
+\item The present routine is rigorous.  For most practical
+      purposes, the following simplified formulae provide an
+      adequate approximation: \\[2ex]
+      \hspace*{1em}\begin{tabular}{lll}
+        {\tt ELONG} & {\tt =} &
+             {\tt ELONGM+XP*COS(ELONGM)-YP*SIN(ELONGM)} \\
+        {\tt PHI  } & {\tt =} &
+             {\tt PHIM+(XP*SIN(ELONGM)+YP*COS(ELONGM))*TAN(PHIM)} \\
+        {\tt DAZ  } & {\tt =} &
+             {\tt -SQRT(XP*XP+YP*YP)*COS(ELONGM-ATAN2(XP,YP))/COS(PHIM)} \\
+      \end{tabular} \\[2ex]
+      An alternative formulation for DAZ is:\\[2ex]
+      \hspace*{1em}\begin{tabular}{lll}
+        {\tt X  } & {\tt =} & {\tt COS(ELONGM)*COS(PHIM)} \\
+        {\tt Y  } & {\tt =} & {\tt SIN(ELONGM)*COS(PHIM)} \\
+        {\tt DAZ} & {\tt =} & {\tt ATAN2(-X*YP-Y*XP,X*X+Y*Y)} \\
+      \end{tabular}
+\end{enumerate}
+}
+\aref{Seidelmann, P.K.\ (ed), 1992.  {\it Explanatory
+      Supplement to the Astronomical Almanac,}\/ ISBN~0-935702-68-7,
+      sections 3.27, 4.25, 4.52.}
+%-----------------------------------------------------------------------
+\routine{SLA\_PREBN}{Precession Matrix (FK4)}
+{
+ \action{Generate the matrix of precession between two epochs,
+         using the old, pre IAU~1976, Bessel-Newcomb model, in
+         Andoyer's formulation.}
+ \call{CALL sla\_PREBN (BEP0, BEP1, RMATP)}
+}
+\args{GIVEN}
+{
+ \spec{BEP0}{D}{beginning Besselian epoch} \\
+ \spec{BEP1}{D}{ending Besselian epoch}
+}
+\args{RETURNED}
+{
+ \spec{RMATP}{D(3,3)}{precession matrix}
+}
+\anote{The matrix is in the sense:
+       \begin{verse}
+        {\bf v}$_{1}$ =  {\bf M}$\cdot${\bf v}$_{0}$
+       \end{verse}
+       where {\bf v}$_{1}$ is the star vector relative to the
+       mean equator and equinox of epoch BEP1, {\bf M} is the
+       $3\times3$ matrix RMATP and
+       {\bf v}$_{0}$ is the star vector relative to the
+       mean equator and equinox of epoch BEP0.}
+\aref{Smith {\it et al.}, 1989.\ {\it Astr.J.}\ {\bf 97}, 269.}
+%-----------------------------------------------------------------------
+\routine{SLA\_PREC}{Precession Matrix (FK5)}
+{
+ \action{Form the matrix of precession between two epochs (IAU 1976, FK5).}
+ \call{CALL sla\_PREC (EP0, EP1, RMATP)}
+}
+\args{GIVEN}
+{
+ \spec{EP0}{D}{beginning epoch} \\
+ \spec{EP1}{D}{ending epoch}
+}
+\args{RETURNED}
+{
+ \spec{RMATP}{D(3,3)}{precession matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The epochs are TDB Julian epochs.
+  \item The matrix is in the sense:
+        \begin{verse}
+         {\bf v}$_{1}$ =  {\bf M}$\cdot${\bf v}$_{0}$
+        \end{verse}
+        where {\bf v}$_{1}$ is the star vector relative to the
+        mean equator and equinox of epoch EP1, {\bf M} is the
+        $3\times3$ matrix RMATP and
+        {\bf v}$_{0}$ is the star vector relative to the
+        mean equator and equinox of epoch EP0.
+  \item Though the matrix method itself is rigorous, the precession
+        angles are expressed through canonical polynomials which are
+        valid only for a limited time span.  There are also known
+        errors in the IAU precession rate.  The absolute accuracy
+        of the present formulation is better than \arcsec{0}{1} from
+        1960\,AD to 2040\,AD, better than \arcseci{1} from 1640\,AD to 2360\,AD,
+        and remains below \arcseci{3} for the whole of the period
+        500\,BC to 3000\,AD.  The errors exceed \arcseci{10} outside the
+        range 1200\,BC to 3900\,AD, exceed \arcseci{100} outside 4200\,BC to
+        5600\,AD and exceed \arcseci{1000} outside 6800\,BC to 8200\,AD.
+        The SLALIB routine sla\_PRECL implements a more elaborate
+        model which is suitable for problems spanning several
+        thousand years.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Lieske, J.H., 1979.\ {\it Astr.Astrophys.}\ {\bf 73}, 282;
+        equations 6 \& 7, p283.
+  \item Kaplan, G.H., 1981.\ {\it USNO circular no.\ 163}, pA2.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PRECES}{Precession}
+{
+ \action{Precession -- either the old ``FK4'' (Bessel-Newcomb, pre~IAU~1976)
+         or new ``FK5'' (Fricke, post~IAU~1976) as required.}
+ \call{CALL sla\_PRECES (SYSTEM, EP0, EP1, RA, DC)}
+}
+\args{GIVEN}
+{
+ \spec{SYSTEM}{C}{precession to be applied: `FK4' or `FK5'} \\
+ \spec{EP0,EP1}{D}{starting and ending epoch} \\
+ \spec{RA,DC}{D}{\radec, mean equator \& equinox of epoch EP0}
+}
+\args{RETURNED}
+{
+ \spec{RA,DC}{D}{\radec, mean equator \& equinox of epoch EP1}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Lowercase characters in SYSTEM are acceptable.
+  \item The epochs are Besselian if SYSTEM=`FK4' and Julian if `FK5'.
+        For example, to precess coordinates in the old system from
+        equinox 1900.0 to 1950.0 the call would be:
+        \begin{quote}
+         {\tt CALL sla\_PRECES ('FK4', 1900D0, 1950D0, RA, DC)}
+        \end{quote}
+  \item This routine will {\bf NOT} correctly convert between the old and
+        the new systems -- for example conversion from B1950 to J2000.
+        For these purposes see sla\_FK425, sla\_FK524, sla\_FK45Z and
+        sla\_FK54Z.
+  \item If an invalid SYSTEM is supplied, values of $-$99D0,$-$99D0 are
+        returned for both RA and DC.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PRECL}{Precession Matrix (latest)}
+{
+ \action{Form the matrix of precession between two epochs, using the
+         model of Simon {\it et al}.\ (1994), which is suitable for long
+         periods of time.}
+ \call{CALL sla\_PRECL (EP0, EP1, RMATP)}
+}
+\args{GIVEN}
+{
+ \spec{EP0}{D}{beginning epoch} \\
+ \spec{EP1}{D}{ending epoch}
+}
+\args{RETURNED}
+{
+ \spec{RMATP}{D(3,3)}{precession matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The epochs are TDB Julian epochs.
+  \item The matrix is in the sense:
+        \begin{verse}
+         {\bf v}$_{1}$ =  {\bf M}$\cdot${\bf v}$_{0}$
+        \end{verse}
+        where {\bf v}$_{1}$ is the star vector relative to the
+        mean equator and equinox of epoch EP1, {\bf M} is the
+        $3\times3$ matrix RMATP and
+        {\bf v}$_{0}$ is the star vector relative to the
+        mean equator and equinox of epoch EP0.
+  \item The absolute accuracy of the model is limited by the
+        uncertainty in the general precession, about \arcsec{0}{3} per
+        1000~years.  The remainder of the formulation provides a
+        precision of 1~milliarcsecond over the interval from 1000\,AD
+        to 3000\,AD, \arcsec{0}{1} from 1000\,BC to 5000\,AD and
+        \arcseci{1} from 4000\,BC to 8000\,AD.
+ \end{enumerate}
+}
+\aref{Simon, J.L.\ {\it et al}., 1994.\ {\it Astr.Astrophys.}\ {\bf 282},
+      663.}
+%-----------------------------------------------------------------------
+\routine{SLA\_PRENUT}{Precession-Nutation Matrix}
+{
+ \action{Form the matrix of precession and nutation (SF2001).}
+ \call{CALL sla\_PRENUT (EPOCH, DATE, RMATPN)}
+}
+\args{GIVEN}
+{
+ \spec{EPOCH}{D}{Julian Epoch for mean coordinates} \\
+ \spec{DATE}{D}{Modified Julian Date (JD$-$2400000.5)
+                       for true coordinates}
+}
+\args{RETURNED}
+{
+ \spec{RMATPN}{D(3,3)}{combined precession-nutation matrix}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The epoch and date are TDB.  TT (or even UTC) will do.
+  \item The matrix is in the sense:
+        \begin{verse}
+         {\bf v}$_{true}$ =  {\bf M}$\cdot${\bf v}$_{mean}$
+        \end{verse}
+        where {\bf v}$_{true}$ is the star vector relative to the
+        true equator and equinox of epoch DATE, {\bf M} is the
+        $3\times3$ matrix RMATPN and
+        {\bf v}$_{mean}$ is the star vector relative to the
+        mean equator and equinox of epoch EPOCH.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_PV2EL}{Orbital Elements from Position/Velocity}
+{
+ \action{Heliocentric osculating elements obtained from instantaneous
+         position and velocity.}
+ \call{CALL sla\_PV2EL (\vtop{
+         \hbox{PV, DATE, PMASS, JFORMR, JFORM, EPOCH, ORBINC,}
+         \hbox{ANODE, PERIH, AORQ, E, AORL, DM, JSTAT)}}}
+}
+\args{GIVEN}
+{
+ \spec{PV}{D(6)}{heliocentric \xyzxyzd, equatorial, J2000} \\
+ \spec{}{}{\hspace{1.5em} (AU, AU/s; Note~1)} \\
+ \spec{DATE}{D}{date (TT Modified Julian Date = JD$-$2400000.5)} \\
+ \spec{PMASS}{D}{mass of the planet (Sun = 1; Note~2)} \\
+ \spec{JFORMR}{I}{requested element set (1-3; Note~3)}
+}
+\args{RETURNED}
+{
+ \spec{JFORM}{I}{element set actually returned (1-3; Note~4)} \\
+ \spec{EPOCH}{D}{epoch of elements ($t_0$ or $T$, TT MJD)} \\
+ \spec{ORBINC}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH}{D}{longitude or argument of perihelion
+                            ($\varpi$ or $\omega$,} \\
+ \spec{}{}{\hspace{1.5em} radians)} \\
+ \spec{AORQ}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E}{D}{eccentricity ($e$)} \\
+ \spec{AORL}{D}{mean anomaly or longitude
+                               ($M$ or $L$, radians,} \\
+ \spec{}{}{\hspace{1.5em} JFORM=1,2 only)} \\
+ \spec{DM}{D}{daily motion ($n$, radians, JFORM=1 only)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal PMASS} \\
+ \spec{}{}{\hspace{1.5em} $-$2 = illegal JFORMR} \\
+ \spec{}{}{\hspace{1.5em} $-$3 = position/velocity out of allowed range}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The PV 6-vector is with respect to the mean equator and equinox of
+        epoch J2000.  The orbital elements produced are with respect to
+        the J2000 ecliptic and mean equinox.
+  \item The mass, PMASS, is important only for the larger planets.  For
+        most purposes ({\it e.g.}~asteroids) use 0D0.  Values less than zero
+        are illegal.
+  \item Three different element-format options are supported, as
+        follows. \\
+
+        JFORM=1, suitable for the major planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> longitude of perihelion $\varpi$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean longitude $L$ (radians) \\
+        \> DM     \> = \> daily motion $n$ (radians)
+        \end{tabbing}
+
+        JFORM=2, suitable for minor planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean anomaly $M$ (radians)
+        \end{tabbing}
+
+        JFORM=3, suitable for comets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of perihelion $T$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> perihelion distance $q$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e \leq 10 )$
+        \end{tabbing}
+  \item It may not be possible to generate elements in the form
+        requested through JFORMR.  The caller is notified of the form
+        of elements actually returned by means of the JFORM argument:
+
+        \begin{tabbing}
+        xx \= xxxxxxxxxx \= xxxxxxxxxxx \= \kill
+        \> JFORMR   \> JFORM   \> meaning \\ \\
+        \> ~~~~~1   \> ~~~~~1  \> OK: elements are in the requested format \\
+        \> ~~~~~1   \> ~~~~~2  \> never happens \\
+        \> ~~~~~1   \> ~~~~~3  \> orbit not elliptical \\
+        \> ~~~~~2   \> ~~~~~1  \> never happens \\
+        \> ~~~~~2   \> ~~~~~2  \> OK: elements are in the requested format \\
+        \> ~~~~~2   \> ~~~~~3  \> orbit not elliptical \\
+        \> ~~~~~3   \> ~~~~~1  \> never happens \\
+        \> ~~~~~3   \> ~~~~~2  \> never happens \\
+        \> ~~~~~3   \> ~~~~~3  \> OK: elements are in the requested format
+        \end{tabbing}
+  \item The arguments returned for each value of JFORM ({\it cf.}\/ Note~5:
+        JFORM may not be the same as JFORMR) are as follows:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxxxxxx \= xxxxxx \= xxxxxx \= \kill
+        \> JFORM  \> 1        \> 2        \> 3 \\ \\
+        \> EPOCH  \> $t_0$    \> $t_0$    \> $T$ \\
+        \> ORBINC \> $i$      \> $i$      \> $i$ \\
+        \> ANODE  \> $\Omega$ \> $\Omega$ \> $\Omega$ \\
+        \> PERIH  \> $\varpi$ \> $\omega$ \> $\omega$ \\
+        \> AORQ   \> $a$      \> $a$      \> $q$ \\
+        \> E      \> $e$      \> $e$      \> $e$ \\
+        \> AORL   \> $L$      \> $M$      \> - \\
+        \> DM     \> $n$      \> -        \> -
+        \end{tabbing}
+
+        where:
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xxx \= \kill
+        \> $t_0$    \> is the epoch of the elements (MJD, TT) \\
+        \> $T$      \> is the epoch of perihelion (MJD, TT) \\
+        \> $i$      \> is the inclination (radians) \\
+        \> $\Omega$ \> is the longitude of the ascending node (radians) \\
+        \> $\varpi$ \> is the longitude of perihelion (radians) \\
+        \> $\omega$ \> is the argument of perihelion (radians) \\
+        \> $a$      \> is the mean distance (AU) \\
+        \> $q$      \> is the perihelion distance (AU) \\
+        \> $e$      \> is the eccentricity \\
+        \> $L$      \> is the longitude (radians, $0-2\pi$) \\
+        \> $M$      \> is the mean anomaly (radians, $0-2\pi$) \\
+        \> $n$      \> is the daily motion (radians) \\
+        \> - \> means no value is set
+        \end{tabbing}
+  \item At very small inclinations, the longitude of the ascending node
+        ANODE becomes indeterminate and under some circumstances may be
+        set arbitrarily to zero.  Similarly, if the orbit is close to
+        circular, the true anomaly becomes indeterminate and under some
+        circumstances may be set arbitrarily to zero.  In such cases,
+        the other elements are automatically adjusted to compensate,
+        and so the elements remain a valid description of the orbit.
+  \item The osculating epoch for the returned elements is the argument
+        DATE.
+ \end{enumerate}
+}
+\aref{Sterne, Theodore E., {\it An Introduction to Celestial Mechanics,}\/
+      Interscience Publishers, 1960.}
+%-----------------------------------------------------------------------
+\routine{SLA\_PV2UE}{Position/Velocity to Universal Elements}
+{
+ \action{Construct a universal element set based on an instantaneous
+         position and velocity.}
+ \call{CALL sla\_PV2UE (PV, DATE, PMASS, U, JSTAT)}
+}
+\args{GIVEN}
+{
+ \spec{PV}{D(6)}{heliocentric \xyzxyzd, equatorial, J2000} \\
+ \spec{}{}{\hspace{1.5em} (AU, AU/s; Note~1)} \\
+ \spec{DATE}{D}{date (TT Modified Julian Date = JD$-$2400000.5)} \\
+ \spec{PMASS}{D}{mass of the planet (Sun = 1; Note~2)}
+}
+\args{RETURNED}
+{
+ \spec{U}{D(13)}{universal orbital elements (Note~3)} \\
+ \specel {(1)}     {combined mass ($M+m$)} \\
+ \specel {(2)}     {total energy of the orbit ($\alpha$)} \\
+ \specel {(3)}     {reference (osculating) epoch ($t_0$)} \\
+ \specel {(4-6)}   {position at reference epoch (${\rm \bf r}_0$)} \\
+ \specel {(7-9)}   {velocity at reference epoch (${\rm \bf v}_0$)} \\
+ \specel {(10)}    {heliocentric distance at reference epoch} \\
+ \specel {(11)}    {${\rm \bf r}_0.{\rm \bf v}_0$} \\
+ \specel {(12)}    {date ($t$)} \\
+ \specel {(13)}    {universal eccentric anomaly ($\psi$) of date, approx} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{1.95em}      0 = OK} \\
+ \spec{}{}{\hspace{1.2em}    $-$1 = illegal PMASS} \\
+ \spec{}{}{\hspace{1.2em}    $-$2 = too close to Sun} \\
+ \spec{}{}{\hspace{1.2em}    $-$3 = too slow}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The PV 6-vector can be with respect to any chosen inertial frame,
+        and the resulting universal-element set will be with respect to
+        the same frame.  A common choice will be mean equator and ecliptic
+        of epoch J2000.
+  \item The mass, PMASS, is important only for the larger planets.  For
+        most purposes ({\it e.g.}~asteroids) use 0D0.  Values less than zero
+        are illegal.
+  \item The ``universal'' elements are those which define the orbit for the
+        purposes of the method of universal variables (see reference).
+        They consist of the combined mass of the two bodies, an epoch,
+        and the position and velocity vectors (arbitrary reference frame)
+        at that epoch.  The parameter set used here includes also various
+        quantities that can, in fact, be derived from the other
+        information.  This approach is taken to avoiding unnecessary
+        computation and loss of accuracy.  The supplementary quantities
+        are (i)~$\alpha$, which is proportional to the total energy of the
+        orbit, (ii)~the heliocentric distance at epoch,
+        (iii)~the outwards component of the velocity at the given epoch,
+        (iv)~an estimate of $\psi$, the ``universal eccentric anomaly'' at a
+        given date and (v)~that date.
+ \end{enumerate}
+}
+\aref{Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.}
+%-----------------------------------------------------------------------
+\routine{SLA\_PVOBS}{Observatory Position \& Velocity}
+{
+ \action{Position and velocity of an observing station.}
+ \call{CALL sla\_PVOBS (P, H, STL, PV)}
+}
+\args{GIVEN}
+{
+ \spec{P}{D}{latitude (geodetic, radians)} \\
+ \spec{H}{D}{height above reference spheroid (geodetic, metres)} \\
+ \spec{STL}{D}{local apparent sidereal time (radians)}
+}
+\args{RETURNED}
+{
+ \spec{PV}{D(6)}{\xyzxyzd\ (AU, AU~s$^{-1}$, true equator and equinox
+                                                            of date)}
+}
+\anote{IAU 1976 constants are used.}
+%-----------------------------------------------------------------------
+\routine{SLA\_PXY}{Apply Linear Model}
+{
+ \action{Given arrays of {\it expected}\/ and {\it measured}\,
+         \xy\ coordinates, and a
+         linear model relating them (as produced by sla\_FITXY), compute
+         the array of {\it predicted}\/ coordinates and the RMS residuals.}
+ \call{CALL sla\_PXY (NP,XYE,XYM,COEFFS,XYP,XRMS,YRMS,RRMS)}
+}
+\args{GIVEN}
+{
+ \spec{NP}{I}{number of samples} \\
+ \spec{XYE}{D(2,NP)}{expected \xy\ for each sample} \\
+ \spec{XYM}{D(2,NP)}{measured \xy\ for each sample} \\
+ \spec{COEFFS}{D(6)}{coefficients of model (see below)}
+}
+\args{RETURNED}
+{
+ \spec{XYP}{D(2,NP)}{predicted \xy\ for each sample} \\
+ \spec{XRMS}{D}{RMS in X} \\
+ \spec{YRMS}{D}{RMS in Y} \\
+ \spec{RRMS}{D }{total RMS (vector sum of XRMS and YRMS)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The model is supplied in the array COEFFS.  Naming the
+        six elements of COEFFS $a,b,c,d,e$ \& $f$,
+        the model transforms {\it measured}\/ coordinates
+        $[x_{m},y_{m}\,]$ into {\it predicted}\/ coordinates
+        $[x_{p},y_{p}\,]$ as follows:
+        \begin{verse}
+         $x_{p} = a + bx_{m} + cy_{m}$ \\
+         $y_{p} = d + ex_{m} + fy_{m}$
+        \end{verse}
+  \item The residuals are $(x_{p}-x_{e})$ and $(y_{p}-y_{e})$.
+  \item If NP is less than or equal to zero, no coordinates are
+        transformed, and the RMS residuals are all zero.
+  \item See also sla\_FITXY, sla\_INVF, sla\_XY2XY, sla\_DCMPF
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_RANDOM}{Random Number}
+{
+ \action{Generate pseudo-random real number in the range $0 \leq x < 1$.}
+ \call{R~=~sla\_RANDOM (SEED)}
+}
+\args{GIVEN}
+{
+ \spec{SEED}{R}{an arbitrary real number}
+}
+\args{RETURNED}
+{
+ \spec{SEED}{R}{a new arbitrary value} \\
+ \spec{sla\_RANDOM}{R}{Pseudo-random real number $0 \leq x < 1$.}
+}
+\anote{The implementation is machine-dependent.}
+%-----------------------------------------------------------------------
+\routine{SLA\_RANGE}{Put Angle into Range $\pm\pi$}
+{
+ \action{Normalize an angle into the range $\pm\pi$ (single precision).}
+ \call{R~=~sla\_RANGE (ANGLE)}
+}
+\args{GIVEN}
+{
+ \spec{ANGLE}{R}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RANGE}{R}{ANGLE expressed in the range $\pm\pi$.}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_RANORM}{Put Angle into Range $0\!-\!2\pi$}
+{
+ \action{Normalize an angle into the range $0\!-\!2\pi$ (single precision).}
+ \call{R~=~sla\_RANORM (ANGLE)}
+}
+\args{GIVEN}
+{
+ \spec{ANGLE}{R}{angle in radians}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RANORM}{R}{ANGLE expressed in the range $0\!-\!2\pi$}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_RCC}{Barycentric Coordinate Time}
+{
+ \call{D~=~sla\_RCC (TDB, UT1, WL, U, V)}
+ \action{The relativistic clock correction:
+         the difference between {\it proper time}\/ at
+         a point on the Earth and
+         {\it coordinate time}\/ in the solar
+         system barycentric space-time frame of reference.
+         The proper time is Terrestrial Time, TT;
+         the coordinate time is an implementation of Barycentric
+         Dynamical Time, TDB.}
+}
+\args{GIVEN}
+{
+ \spec{TDB}{D}{TDB (MJD: JD$-$2400000.5)} \\
+ \spec{UT1}{D}{universal time (fraction of one day)} \\
+ \spec{WL}{D}{clock longitude (radians west)} \\
+ \spec{U}{D}{clock distance from Earth spin axis (km)} \\
+ \spec{V}{D}{clock distance north of Earth equatorial plane (km)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RCC}{D}{TDB$-$TT (sec; Note 1)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item TDB is coordinate time in the solar system barycentre frame
+        of reference, in units chosen to eliminate the scale difference
+        with respect to terrestrial time.  TT is the proper
+        time for clocks at mean sea level on the Earth.
+  \item The number returned by sla\_RCC comprises
+        a main (annual) sinusoidal term of amplitude
+        approximately 1.66ms, plus lunar and planetary terms up to about
+        20$\mu$s, and diurnal terms up to 2$\mu$s.  The
+        variation arises from the transverse Doppler effect and the
+        gravitational red-shift as the observer varies in speed and
+        moves through different gravitational potentials.
+  \item The argument TDB is, strictly, the barycentric coordinate time;
+        however, the terrestrial time (TT) can in practice be used without
+        significant loss of accuracy.
+  \item The geocentric model is that of Fairhead \& Bretagnon (1990), in
+        its full form.  It was supplied by Fairhead (private communication)
+        as a Fortran subroutine.  A number of coding changes were made to
+        this subroutine in order
+        match the calling sequence of previous versions of the present
+        routine, to comply with Starlink programming standards and to
+        avoid compilation problems on certain machines.  The
+        numerical results are essentially unaffected by the
+        changes.
+  \item The topocentric model is from Moyer (1981) and Murray (1983).
+        It is an approximation to the expression
+        \[\frac{{\bf v}_e \cdot ( {\bf x} - {\bf x}_e )}{c^2}\]
+        where ${\bf v}_e$ is the barycentric velocity of
+        the Earth, ${\bf x}$ and ${\bf x}_e$ are the barycentric positions
+        of the observer and the Earth respectively, and
+        c is the speed of light.
+        It can be disabled, if necessary, by setting the arguments
+        U and V to zero.
+  \item During the interval 1950-2050, the absolute accuracy
+        is better than $\pm3$~nanoseconds
+        relative to direct numerical integrations using the JPL DE200/LE200
+        solar system ephemeris.
+  \item The IAU 1976 definition of TDB was that it must differ from TT only by
+        periodic terms.  Though practical, this is an imprecise definition
+        which ignores the existence of very long-period and secular effects
+        in the dynamics of the solar system.  As a consequence, different
+        implementations of TDB will, in general, differ in zero-point and
+        will drift linearly relative to one other.  In 1991 the IAU introduced
+        new time scales designed to overcome these objections:  geocentric coordinate
+        time, TCG, and barycentric coordinate time, TCB.  In principle, therefore,
+        TDB is obsolete.  However, sla\_RCC
+        can be used to implement the periodic part of TCB$-$TCG.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Fairhead,\,L., \& Bretagnon,\,P., {\it Astron.\,Astrophys.,}\/
+        {\bf 229}, 240-247 (1990).
+  \item Moyer,\,T.D., {\it Cel.\,Mech.,}\/ {\bf 23}, 33 (1981).
+  \item Murray,\,C.A., {\it Vectorial Astrometry,}\/ Adam Hilger (1983).
+  \item Seidelmann,\,P.K.\ {\it et al,}\/ {\it Explanatory Supplement to the
+        Astronomical Almanac,}\/ Chapter 2, University Science Books
+        (1992).
+  \item Simon,\,J.L., Bretagnon,\,P., Chapront,\,J., Chapront-Touze,\,M.,
+        Francou,\,G.\ \& Laskar,\,J., {\it Astron.Astrophys.,}\/
+        {\bf 282}, 663-683 (1994).
+ \end{enumerate}
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_RDPLAN}{Apparent \radec\ of Planet}
+{
+ \action{Approximate topocentric apparent \radec\ and angular
+         size of a planet.}
+ \call{CALL sla\_RDPLAN (DATE, NP, ELONG, PHI, RA, DEC, DIAM)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{MJD of observation (JD$-$2400000.5)} \\
+ \spec{NP}{I}{planet:} \\
+ \spec{}{}{\hspace{1.5em} 1\,=\,Mercury} \\
+ \spec{}{}{\hspace{1.5em} 2\,=\,Venus} \\
+ \spec{}{}{\hspace{1.5em} 3\,=\,Moon} \\
+ \spec{}{}{\hspace{1.5em} 4\,=\,Mars} \\
+ \spec{}{}{\hspace{1.5em} 5\,=\,Jupiter} \\
+ \spec{}{}{\hspace{1.5em} 6\,=\,Saturn} \\
+ \spec{}{}{\hspace{1.5em} 7\,=\,Uranus} \\
+ \spec{}{}{\hspace{1.5em} 8\,=\,Neptune} \\
+ \spec{}{}{\hspace{1.5em} 9\,=\,Pluto} \\
+ \spec{}{}{\hspace{0.44em} else\,=\,Sun} \\
+ \spec{ELONG,PHI}{D}{observer's longitude (east +ve) and latitude
+                     (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RA,DEC}{D}{topocentric apparent \radec\ (radians)} \\
+ \spec{DIAM}{D}{angular diameter (equatorial, radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The date is in a dynamical time scale (TDB, formerly ET)
+        and is in the form of a Modified
+        Julian Date (JD$-$2400000.5).  For all practical purposes, TT can
+        be used instead of TDB, and for many applications UT will do
+        (except for the Moon).
+  \item The longitude and latitude allow correction for geocentric
+        parallax.  This is a major effect for the Moon, but in the
+        context of the limited accuracy of the present routine its
+        effect on planetary positions is small (negligible for the
+        outer planets).  Geocentric positions can be generated by
+        appropriate use of the routines sla\_DMOON and sla\_PLANET.
+  \item The direction accuracy (arcsec, 1000-3000\,AD) is of order:
+        \begin{tabbing}
+         xxxxxxx \= xxxxxxxxxxxxxxxxxx \= \kill
+         \> Sun     \>  \hspace{0.5em}5 \\
+         \> Mercury \>  \hspace{0.5em}2 \\
+         \> Venus   \> 10 \\
+         \> Moon    \> 30 \\
+         \> Mars    \> 50 \\
+         \> Jupiter \> 90 \\
+         \> Saturn  \> 90 \\
+         \> Uranus  \> 90 \\
+         \> Neptune \> 10 \\
+         \> Pluto \> \hspace{0.5em}1~~~(1885-2099\,AD only)
+        \end{tabbing}
+        The angular diameter accuracy is about 0.4\% for the Moon,
+        and 0.01\% or better for the Sun and planets.
+        For more information on accuracy,
+        refer to the routines sla\_PLANET and sla\_DMOON,
+        which the present routine uses.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_REFCO}{Refraction Constants}
+{
+ \action{Determine the constants $a$ and $b$ in the
+         atmospheric refraction model
+         $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$,
+         where $\zeta$ is the {\it observed}\/ zenith distance
+         ({\it i.e.}\ affected by refraction) and $\Delta \zeta$ is
+         what to add to $\zeta$ to give the {\it topocentric}\,
+         ({\it i.e.\ in vacuo}) zenith distance.}
+ \call{CALL sla\_REFCO (HM, TDK, PMB, RH, WL, PHI, TLR, EPS, REFA, REFB)}
+}
+\args{GIVEN}
+{
+ \spec{HM}{D}{height of the observer above sea level (metre)} \\
+ \spec{TDK}{D}{ambient temperature at the observer K)} \\
+ \spec{PMB}{D}{pressure at the observer (mb)} \\
+ \spec{RH}{D}{relative humidity at the observer (range 0\,--\,1)} \\
+ \spec{WL}{D}{effective wavelength of the source ($\mu{\rm m}$)} \\
+ \spec{PHI}{D}{latitude of the observer (radian, astronomical)} \\
+ \spec{TLR}{D}{temperature lapse rate in the troposphere
+                                     ( K per metre)} \\
+ \spec{EPS}{D}{precision required to terminate iteration (radian)}
+}
+\args{RETURNED}
+{
+ \spec{REFA}{D}{$\tan \zeta$ coefficient (radians)} \\
+ \spec{REFB}{D}{$\tan^{3} \zeta$ coefficient (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Suggested values for the TLR and EPS arguments are 0.0065D0 and
+        1D$-$8 respectively.  The signs of both are immaterial.
+  \item The radio refraction is chosen by specifying WL $>100$~$\mu{\rm m}$.
+  \item The routine is a slower but more accurate alternative to the
+        sla\_REFCOQ routine.  The constants it produces give perfect
+        agreement with sla\_REFRO at zenith distances
+        $\tan^{-1} 1$ ($45^\circ$) and $\tan^{-1} 4$ ($\sim 76^\circ$).
+        At other zenith distances, the model achieves:
+        \arcsec{0}{5} accuracy for $\zeta<80^{\circ}$,
+        \arcsec{0}{01} accuracy for $\zeta<60^{\circ}$, and
+        \arcsec{0}{001} accuracy for $\zeta<45^{\circ}$.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_REFCOQ}{Refraction Constants (fast)}
+{
+ \action{Determine the constants $a$ and $b$ in the
+         atmospheric refraction model
+         $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$,
+         where $\zeta$ is the {\it observed}\/ zenith distance
+         ({\it i.e.}\ affected by refraction) and $\Delta \zeta$ is
+         what to add to $\zeta$ to give the {\it topocentric}\,
+         ({\it i.e.\ in vacuo}) zenith distance. (This is a fast
+         alternative to the sla\_REFCO routine -- see notes.)}
+ \call{CALL sla\_REFCOQ (TDK, PMB, RH, WL, REFA, REFB)}
+}
+\args{GIVEN}
+{
+ \spec{TDK}{D}{ambient temperature at the observer (K)} \\
+ \spec{PMB}{D}{pressure at the observer (mb)} \\
+ \spec{RH}{D}{relative humidity at the observer (range 0\,--\,1)} \\
+ \spec{WL}{D}{effective wavelength of the source ($\mu{\rm m}$)}
+}
+\args{RETURNED}
+{
+ \spec{REFA}{D}{$\tan \zeta$ coefficient (radians)} \\
+ \spec{REFB}{D}{$\tan^{3} \zeta$ coefficient (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The radio refraction is chosen by specifying WL $>100$~$\mu{\rm m}$.
+  \item The model is an approximation, for moderate zenith distances,
+        to the predictions of the sla\_REFRO routine.  The approximation
+        is maintained across a range of conditions, and applies to
+        both optical/IR and radio.
+  \item The algorithm is a fast alternative to the sla\_REFCO routine.
+        The latter calls the sla\_REFRO routine itself:  this involves
+        integrations through a model atmosphere, and is costly in
+        processor time.  However, the model which is produced is precisely
+        correct for two zenith distances ($45^\circ$ and $\sim\!76^\circ$)
+        and at other zenith distances is limited in accuracy only by the
+        $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$ formulation
+        itself.  The present routine is not as accurate, though it
+        satisfies most practical requirements.
+  \item The model omits the effects of (i)~height above sea level (apart
+        from the reduced pressure itself), (ii)~latitude ({\it i.e.}\ the
+        flattening of the Earth) and (iii)~variations in tropospheric
+        lapse rate.
+  \item The model has been tested using the following range of conditions:
+        \begin{itemize}
+        \item [$\cdot$] lapse rates 0.0055, 0.0065, 0.0075~K per metre
+        \item [$\cdot$] latitudes $0^\circ$, $25^\circ$, $50^\circ$, $75^\circ$
+        \item [$\cdot$] heights 0, 2500, 5000 metres above sea level
+        \item [$\cdot$] pressures mean for height $-10$\% to $+5$\% in steps of $5$\%
+        \item [$\cdot$] temperatures $-10^\circ$ to $+20^\circ$ with respect to
+              $280$K at sea level
+        \item [$\cdot$] relative humidity 0, 0.5, 1
+        \item [$\cdot$] wavelength 0.4, 0.6, \ldots\ $2\mu{\rm m}$, + radio
+        \item [$\cdot$] zenith distances $15^\circ$, $45^\circ$, $75^\circ$
+        \end{itemize}
+        For the above conditions, the comparison with sla\_REFRO
+        was as follows:
+
+        \vspace{2ex}
+
+        ~~~~~~~~~~
+        \begin{tabular}{|r|r|r|} \hline
+              & {\it worst} & {\it RMS} \\ \hline
+              optical/IR & 62 & 8 \\
+              radio & 319 & 49 \\ \hline
+              & mas & mas \\ \hline
+        \end{tabular}
+
+        \vspace{3ex}
+
+        For this particular set of conditions:
+        \begin{itemize}
+        \item [$\cdot$] lapse rate 6.5 K km$^{-1}$
+        \item [$\cdot$] latitude $50^\circ$
+        \item [$\cdot$] sea level
+        \item [$\cdot$] pressure 1005\,mb
+        \item [$\cdot$] temperature $7^\circ$C
+        \item [$\cdot$] humidity 80\%
+        \item [$\cdot$] wavelength 5740\,\.{A}
+        \end{itemize}
+        the results were as follows:
+
+        \vspace{2ex}
+
+        ~~~~~~~~~~
+        \begin{tabular}{|r|r|r|r|} \hline
+        \multicolumn{1}{|c}{$\zeta$} &
+        \multicolumn{1}{|c}{sla\_REFRO} &
+        \multicolumn{1}{|c}{sla\_REFCOQ} &
+        \multicolumn{1}{|c|}{Saastamoinen} \\ \hline
+        10 &  10.27 &  10.27 &  10.27 \\
+        20 &  21.19 &  21.20 &  21.19 \\
+        30 &  33.61 &  33.61 &  33.60 \\
+        40 &  48.82 &  48.83 &  48.81 \\
+        45 &  58.16 &  58.18 &  58.16 \\
+        50 &  69.28 &  69.30 &  69.27 \\
+        55 &  82.97 &  82.99 &  82.95 \\
+        60 & 100.51 & 100.54 & 100.50 \\
+        65 & 124.23 & 124.26 & 124.20 \\
+        70 & 158.63 & 158.68 & 158.61 \\
+        72 & 177.32 & 177.37 & 177.31 \\
+        74 & 200.35 & 200.38 & 200.32 \\
+        76 & 229.45 & 229.43 & 229.42 \\
+        78 & 267.44 & 267.29 & 267.41 \\
+        80 & 319.13 & 318.55 & 319.10 \\ \hline
+        deg & arcsec & arcsec & arcsec \\ \hline
+        \end{tabular}
+
+        \vspace{3ex}
+
+        The values for Saastamoinen's formula (which includes terms
+        up to $\tan^5$) are taken from Hohenkerk \& Sinclair (1985).
+
+        The results from the much slower but more accurate sla\_REFCO
+        routine have not been included in the tabulation as they are
+        identical to those in the sla\_REFRO column to the \arcsec{0}{01}
+        resolution used.
+  \item Outlandish input parameters are silently limited
+        to mathematically safe values.  Zero pressure is permissible,
+        and causes zeroes to be returned.
+  \item The algorithm draws on several sources, as follows:
+        \begin{itemize}
+        \item The formula for the saturation vapour pressure of water as
+              a function of temperature and temperature is taken from
+              expressions A4.5-A4.7 of Gill (1982).
+        \item The formula for the water vapour pressure, given the
+              saturation pressure and the relative humidity is from
+              Crane (1976), expression 2.5.5.
+        \item The refractivity of air is a function of temperature,
+              total pressure, water-vapour pressure and, in the case
+              of optical/IR but not radio, wavelength.  The formulae
+              for the two cases are developed from Hohenkerk \& Sinclair
+              (1985) and Rueger (2002).
+        \item The formula for $\beta~(=H_0/r_0)$ is
+              an adaption of expression 9 from Stone (1996).  The
+              adaptations, arrived at empirically, consist of (i)~a
+              small adjustment to the coefficient and (ii)~a humidity
+              term for the radio case only.
+        \item The formulae for the refraction constants as a function of
+              $n-1$ and $\beta$ are from Green (1987), expression 4.31.
+        \end{itemize}
+        The first three items are as used in the sla\_REFRO routine.
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Crane, R.K., Meeks, M.L.\ (ed), ``Refraction Effects in
+        the Neutral Atmosphere'',
+        {\it Methods of Experimental Physics: Astrophysics 12B,}\/
+        Academic Press, 1976.
+  \item Gill, Adrian E., {\it Atmosphere-Ocean Dynamics,}\/
+        Academic Press, 1982.
+  \item Green, R.M., {\it Spherical Astronomy,}\/ Cambridge
+        University Press, 1987.
+  \item Hohenkerk, C.Y., \& Sinclair, A.T., NAO Technical Note
+        No.~63, 1985.
+  \item Rueger, J.M., {\it Refractive Index Formulae for
+        Electronic Distance Measurement with Radio and Millimetre
+        Waves}, in Unisurv Report S-68, School of Surveying
+        and Spatial Information Systems, University of New South
+        Wales, Sydney, Australia, 2002.
+  \item Stone, Ronald C., P.A.S.P.~{\bf 108} 1051-1058, 1996.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_REFRO}{Refraction}
+{
+ \action{Atmospheric refraction, for radio or optical/IR wavelengths.}
+ \call{CALL sla\_REFRO (ZOBS, HM, TDK, PMB, RH, WL, PHI, TLR, EPS, REF)}
+}
+\args{GIVEN}
+{
+ \spec{ZOBS}{D}{observed zenith distance of the source (radians)} \\
+ \spec{HM}{D}{height of the observer above sea level (metre)} \\
+ \spec{TDK}{D}{ambient temperature at the observer (K)} \\
+ \spec{PMB}{D}{pressure at the observer (mb)} \\
+ \spec{RH}{D}{relative humidity at the observer (range 0\,--\,1)} \\
+    \spec{WL}{D}{effective wavelength of the source ($\mu{\rm m}$)} \\
+ \spec{PHI}{D}{latitude of the observer (radian, astronomical)} \\
+ \spec{TLR}{D}{temperature lapse rate in the troposphere
+                                     (K per metre)} \\
+ \spec{EPS}{D}{precision required to terminate iteration (radian)}
+}
+\args{RETURNED}
+{
+ \spec{REF}{D}{refraction: {\it in vacuo}\/ ZD minus observed ZD (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item A suggested value for the TLR argument is 0.0065D0 (sign immaterial).
+        The refraction is significantly affected by TLR, and if studies
+        of the local atmosphere have been carried out a better TLR
+        value may be available.
+  \item A suggested value for the EPS argument is 1D$-$8.  The result is
+        usually at least two orders of magnitude more computationally
+        precise than the supplied EPS value.
+  \item The routine computes the refraction for zenith distances up
+        to and a little beyond $90^\circ$ using the method of Hohenkerk
+        \& Sinclair (NAO Technical Notes 59 and 63, subsequently adopted
+        in the {\it Explanatory Supplement to the Astronomical Almanac,}\/
+        1992 -- see section 3.281).
+ \item The code is based on the {\tt AREF}
+       optical/IR refraction subroutine
+       (HMNAO, September 1984, RGO: Hohenkerk 1985),
+       with extensions to
+       support the radio case.  The modifications to the original HMNAO
+       optical/IR refraction code which affect the results are:
+       \begin{itemize}
+        \item The angle arguments have been changed to radians,
+              any value of ZOBS is allowed (see Note~6, below) and
+              other argument values have been limited to safe values.
+        \item Revised values for the gas constants are used, from
+              Murray (1983).
+        \item A better model for $P_s(T)$ has been adopted,
+              from Gill (1982).
+        \item More accurate expressions for $Pw_o$ have been adopted
+              (again from Gill 1982).
+        \item The formula for the water vapour pressure, given the
+              saturation pressure and the relative humidity, is from
+              Crane (1976), expression 2.5.5.
+        \item Provision for radio wavelengths has been added using
+              expressions devised by A.\,T.\,Sinclair, RGO (Sinclair 1989).
+              The refractivity model is from Rueger (2002).
+        \item The optical refractivity for dry air is from IAG (1999).
+       \end{itemize}
+  \item The radio refraction is chosen by specifying WL $>100$~$\mu{\rm m}$.
+        Because the algorithm takes no account of the ionosphere, the
+        accuracy deteriorates at low frequencies, below about 30\,MHz.
+  \item Before use, the value of ZOBS is expressed in the range $\pm\pi$.
+        If this ranged ZOBS is negative, the result REF is computed from its
+        absolute value before being made negative to match.  In addition, if
+        it has an absolute value greater than $93^\circ$, a fixed REF value
+        equal to the result for ZOBS~$=93^\circ$ is returned, appropriately
+        signed.
+  \item As in the original Hohenkerk \& Sinclair algorithm, fixed values
+        of the water vapour polytrope exponent, the height of the
+        tropopause, and the height at which refraction is negligible are
+        used.
+  \item The radio refraction has been tested against work done by
+        Iain~Coulson, JACH, (private communication 1995) for the
+        James Clerk Maxwell Telescope, Mauna Kea.  For typical conditions,
+        agreement at the \arcsec{0}{1} level is achieved for moderate ZD,
+        worsening to perhaps \arcsec{0}{5}\,--\,\arcsec{1}{0} at ZD $80^\circ$.
+        At hot and humid sea-level sites the accuracy will not be as good.
+  \item It should be noted that the relative humidity RH is formally
+        defined in terms of ``mixing ratio'' rather than pressures or
+        densities as is often stated.  It is the mass of water per unit
+        mass of dry air divided by that for saturated air at the same
+        temperature and pressure (see Gill 1982).  The familiar
+        $\nu=p_w/p_s$ or $\nu=\rho_w/\rho_s$ expressions can differ from
+        the formal definition by several percent, significant in the
+        radio case.
+  \item The algorithm is designed for observers in the troposphere.  The
+        supplied temperature, pressure and lapse rate are assumed to be
+        for a point in the troposphere and are used to define a model
+        atmosphere with the tropopause at 11km altitude and a constant
+        temperature above that.  However, in practice, the refraction
+        values returned for stratospheric observers, at altitudes up to
+        25km, are quite usable.
+  \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Coulsen, I.\ 1995, private communication.
+  \item Crane, R.K., Meeks, M.L.\ (ed), 1976,
+        ``Refraction Effects in the Neutral Atmosphere'',
+        {\it Methods of Experimental Physics: Astrophysics 12B},
+        Academic Press.
+  \item Gill, Adrian E.\ 1982, {\it Atmosphere-Ocean Dynamics},
+        Academic Press.
+  \item Hohenkerk, C.Y.\ 1985, private communication.
+  \item Hohenkerk, C.Y., \& Sinclair, A.T.\ 1985,
+        {\it NAO Technical Note}\/
+        No.~63, Royal Greenwich Observatory.
+  \item International Association of Geodesy,
+        XXIIth General Assembly, Birmingham, UK, 1999,
+        Resolution 3.
+  \item Murray, C.A.\ 1983, {\it Vectorial Astrometry,}
+        Adam Hilger, Bristol.
+  \item Seidelmann,\,P.K.\ {\it et al.}\ 1992,
+        {\it Explanatory Supplement to the
+        Astronomical Almanac}, Chapter 3, University Science Books.
+  \item Rueger, J.M.\ 2002, {\it Refractive Index Formulae for
+        Electronic Distance Measurement with Radio and Millimetre
+        Waves}, in Unisurv Report S-68, School of Surveying
+        and Spatial Information Systems, University of New South
+        Wales, Sydney, Australia.
+  \item Sinclair, A.T.\ 1989, private communication.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_REFV}{Apply Refraction to Vector}
+{
+ \action{Adjust an unrefracted Cartesian vector to include the effect of
+         atmospheric refraction, using the simple
+         $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$ model.}
+ \call{CALL sla\_REFV (VU, REFA, REFB, VR)}
+}
+\args{GIVEN}
+{
+ \spec{VU}{D}{unrefracted position of the source (\azel\ 3-vector)} \\
+ \spec{REFA}{D}{$\tan \zeta$ coefficient (radians)} \\
+ \spec{REFB}{D}{$\tan^{3} \zeta$ coefficient (radians)}
+}
+\args{RETURNED}
+{
+ \spec{VR}{D}{refracted position of the source (\azel\ 3-vector)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine applies the adjustment for refraction in the
+        opposite sense to the usual one -- it takes an unrefracted
+        ({\it in vacuo}\/) position and produces an observed (refracted)
+        position, whereas the
+        $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$
+        model strictly
+        applies to the case where an observed position is to have the
+        refraction removed.  The unrefracted to refracted case is
+        harder, and requires an inverted form of the text-book
+        refraction models;  the algorithm used here is equivalent to
+        one iteration of the Newton-Raphson method applied to the
+        above formula.
+  \item Though optimized for speed rather than precision, the present
+        routine achieves consistency with the refracted-to-unrefracted
+        $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$
+        model at better than 1~microarcsecond within
+        $30^\circ$ of the zenith and remains within 1~milliarcsecond to
+        $\zeta=70^\circ$.  The inherent accuracy of the model is, of
+        course, far worse than this -- see the documentation for sla\_REFCO
+        for more information.
+  \item At low elevations (below about $3^\circ$) the refraction
+        correction is held back to prevent arithmetic problems and
+        wildly wrong results.  For optical/IR wavelengths, over a wide
+        range of observer heights and corresponding temperatures and
+        pressures, the following levels of accuracy (worst case)
+        are achieved, relative to numerical integration through a model
+        atmosphere:
+        \begin{center}
+        \begin{tabular}{ccl}
+              $\zeta_{obs}$ & {\it error} \\ \\
+              $80^\circ$ & \arcsec{0}{7}  \\
+              $81^\circ$ & \arcsec{1}{3}  \\
+              $82^\circ$ & \arcsec{2}{5}  \\
+              $83^\circ$ & \arcseci{5}    \\
+              $84^\circ$ & \arcseci{10}    \\
+              $85^\circ$ & \arcseci{20}   \\
+              $86^\circ$ & \arcseci{55}   \\
+              $87^\circ$ & \arcseci{160}  \\
+              $88^\circ$ & \arcseci{360}  \\
+              $89^\circ$ & \arcseci{640}  \\
+              $90^\circ$ & \arcseci{1100} \\
+              $91^\circ$ & \arcseci{1700} & $<$ high-altitude \\
+              $92^\circ$ & \arcseci{2600} & $<$ sites only \\
+        \end{tabular}
+        \end{center}
+        The results for radio are slightly worse over most of the range,
+        becoming significantly worse below $\zeta = 88^\circ$
+        and unusable beyond $\zeta = 90^\circ$.
+  \item See also the routine sla\_REFZ, which performs the adjustment to
+        the zenith distance rather than in \xyz.
+        The present routine is faster than sla\_REFZ and,
+        except very low down,
+        is equally accurate for all practical purposes.  However, beyond
+        about $\zeta=84^\circ$ sla\_REFZ should be used, and for the utmost
+        accuracy iterative use of sla\_REFRO should be considered.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_REFZ}{Apply Refraction to ZD}
+{
+ \action{Adjust an unrefracted zenith distance to include the effect of
+         atmospheric refraction, using the simple
+         $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$ model.}
+ \call{CALL sla\_REFZ (ZU, REFA, REFB, ZR)}
+}
+\args{GIVEN}
+{
+ \spec{ZU}{D}{unrefracted zenith distance of the source (radians)} \\
+ \spec{REFA}{D}{$\tan \zeta$ coefficient (radians)} \\
+ \spec{REFB}{D}{$\tan^{3} \zeta$ coefficient (radians)}
+}
+\args{RETURNED}
+{
+ \spec{ZR}{D}{refracted zenith distance (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item This routine applies the adjustment for refraction in the
+        opposite sense to the usual one -- it takes an unrefracted
+        ({\it in vacuo}\/) position and produces an observed (refracted)
+        position, whereas the
+        $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$
+        model strictly
+        applies to the case where an observed position is to have the
+        refraction removed.  The unrefracted to refracted case is
+        harder, and requires an inverted form of the text-book
+        refraction models;  the formula used here is based on the
+        Newton-Raphson method.  For the utmost numerical consistency
+        with the refracted to unrefracted model, two iterations are
+        carried out, achieving agreement at the $10^{-11}$~arcsecond level
+        for $\zeta=80^\circ$.  The inherent accuracy of the model
+        is, of course, far worse than this -- see the documentation for
+        sla\_REFCO for more information.
+  \item At $\zeta=83^\circ$, the rapidly-worsening
+        $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$
+        model is abandoned and an empirical formula takes over:
+
+          \[\Delta \zeta = F \left(
+  \frac{0^\circ\hspace{-0.37em}.\hspace{0.02em}55445
+                - 0^\circ\hspace{-0.37em}.\hspace{0.02em}01133 E
+                          + 0^\circ\hspace{-0.37em}.\hspace{0.02em}00202 E^2}
+             {1 + 0.28385 E +0.02390 E^2} \right) \]
+        where $E=90^\circ-\zeta_{true}$
+        and $F$ is a factor chosen to meet the
+        $\Delta \zeta = a \tan \zeta + b \tan^{3} \zeta$
+        formula at $\zeta=83^\circ$.
+
+        For optical/IR wavelengths, over a wide range of observer heights
+        and corresponding temperatures and pressures, the following levels
+        of accuracy (worst case) are achieved,
+        relative to numerical integration through a model atmosphere:
+
+        \begin{center}
+        \begin{tabular}{ccl}
+              $\zeta_{obs}$ & {\it error} \\ \\
+              $80^\circ$ & \arcsec{0}{7}  \\
+              $81^\circ$ & \arcsec{1}{3}  \\
+              $82^\circ$ & \arcsec{2}{4}  \\
+              $83^\circ$ & \arcsec{4}{7}  \\
+              $84^\circ$ & \arcsec{6}{2}  \\
+              $85^\circ$ & \arcsec{6}{4}  \\
+              $86^\circ$ & \arcseci{8}    \\
+              $87^\circ$ & \arcseci{10}   \\
+              $88^\circ$ & \arcseci{15}   \\
+              $89^\circ$ & \arcseci{30}   \\
+              $90^\circ$ & \arcseci{60}   \\
+              $91^\circ$ & \arcseci{150} & $<$ high-altitude \\
+              $92^\circ$ & \arcseci{400} & $<$ sites only \\
+        \end{tabular}
+        \end{center}
+        For radio wavelengths the errors are typically 50\% larger than
+        the optical figures and by $\zeta = 85^\circ$ are twice as bad,
+        worsening rapidly below that.  To maintain \arcseci{1} accuracy
+        down to $\zeta = 85^\circ$ at the Green Bank site, Condon (2004)
+        has suggested amplifying the amount of refraction predicted by
+        sla\_REFZ below \degree{10}{8} elevation by the factor
+        $(1+0.00195*(10.8-E_{topo}))$, where $E_{topo}$ is the
+        unrefracted elevation in degrees.
+
+        The high-ZD model is scaled to match the normal model at the
+        transition point;  there is no glitch.
+  \item See also the routine sla\_REFV, which performs the adjustment in
+        \xyz , and with the emphasis on speed rather than numerical accuracy.
+ \end{enumerate}
+}
+\aref{Condon,\,J.J., {\it Refraction Corrections for the GBT,} PTCS/PN/35.2,
+      NRAO Green Bank, 2004.}
+%-----------------------------------------------------------------------
+\routine{SLA\_RVEROT}{RV Corrn to Earth Centre}
+{
+ \action{Velocity component in a given direction due to Earth rotation.}
+ \call{R~=~sla\_RVEROT (PHI, RA, DA, ST)}
+}
+\args{GIVEN}
+{
+ \spec{PHI}{R}{geodetic latitude of observing station (radians)} \\
+ \spec{RA,DA}{R}{apparent \radec\ (radians)} \\
+ \spec{ST}{R}{local apparent sidereal time (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RVEROT}{R}{Component of Earth rotation in
+                       direction [RA,DA]~(km~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Sign convention: the result is positive when the observatory
+        is receding from the given point on the sky.
+  \item Accuracy: the simple algorithm used assumes a spherical Earth and
+        an observing station at sea level;  for actual observing
+        sites, the error is unlikely to be greater than 0.0005~km~s$^{-1}$.
+        For applications requiring greater accuracy, use the routine
+        sla\_PVOBS.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_RVGALC}{RV Corrn to Galactic Centre}
+{
+ \action{Velocity component in a given direction due to the rotation
+         of the Galaxy.}
+ \call{R~=~sla\_RVGALC (R2000, D2000)}
+}
+\args{GIVEN}
+{
+ \spec{R2000,D2000}{R}{J2000.0 mean \radec\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RVGALC}{R}{Component of dynamical LSR motion in direction
+                       R2000,D2000 (km~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Sign convention: the result is positive when the LSR
+        is receding from the given point on the sky.
+  \item The Local Standard of Rest used here is a point in the
+        vicinity of the Sun which is in a circular orbit around
+        the Galactic centre.  Sometimes called the {\it dynamical}\/ LSR,
+        it is not to be confused with a {\it kinematical}\/ LSR, which
+        is the mean standard of rest of star catalogues or stellar
+        populations.
+  \item The dynamical LSR velocity due to Galactic rotation is assumed to
+        be 220~km~s$^{-1}$ towards $l^{I\!I}=90^{\circ}$,
+                                   $b^{I\!I}=0$.
+ \end{enumerate}
+}
+\aref{Kerr \& Lynden-Bell (1986), MNRAS, 221, p1023.}
+%-----------------------------------------------------------------------
+\routine{SLA\_RVLG}{RV Corrn to Local Group}
+{
+ \action{Velocity component in a given direction due to the combination
+         of the rotation of the Galaxy and the motion of the Galaxy
+         relative to the mean motion of the local group.}
+ \call{R~=~sla\_RVLG (R2000, D2000)}
+}
+\args{GIVEN}
+{
+ \spec{R2000,D2000}{R}{J2000.0 mean \radec\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RVLG}{R}{Component of {\bf solar} ({\it n.b.})
+                     motion in direction R2000,D2000 (km~s$^{-1}$)}
+}
+\anote{Sign convention: the result is positive when
+       the Sun is receding from the given point on the sky.}
+\aref{{\it IAU Trans.}\ 1976.\ {\bf 16B}, p201.}
+%-----------------------------------------------------------------------
+\routine{SLA\_RVLSRD}{RV Corrn to Dynamical LSR}
+{
+ \action{Velocity component in a given direction due to the Sun's
+         motion with respect to the ``dynamical'' Local Standard of Rest.}
+ \call{R~=~sla\_RVLSRD (R2000, D2000)}
+}
+\args{GIVEN}
+{
+ \spec{R2000,D2000}{R}{J2000.0 mean \radec\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RVLSRD}{R}{Component of {\it peculiar}\/ solar motion
+                      in direction R2000,D2000 (km~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Sign convention: the result is positive when
+        the Sun is receding from the given point on the sky.
+  \item The Local Standard of Rest used here is the {\it dynamical}\/ LSR,
+        a point in the vicinity of the Sun which is in a circular
+        orbit around the Galactic centre.  The Sun's motion with
+        respect to the dynamical LSR is called the {\it peculiar}\/ solar
+        motion.
+  \item There is another type of LSR, called a {\it kinematical}\/ LSR.  A
+        kinematical LSR is the mean standard of rest of specified star
+        catalogues or stellar populations, and several slightly
+        different kinematical LSRs are in use.  The Sun's motion with
+        respect to an agreed kinematical LSR is known as the
+        {\it standard}\/ solar motion.
+        The dynamical LSR is seldom used by observational astronomers,
+        who conventionally use a kinematical LSR such as the one implemented
+        in the routine sla\_RVLSRK.
+  \item The peculiar solar motion is from Delhaye (1965), in {\it Stars
+        and Stellar Systems}, vol~5, p73:  in Galactic Cartesian
+        coordinates (+9,+12,+7)~km~s$^{-1}$.
+        This corresponds to about 16.6~km~s$^{-1}$
+        towards Galactic coordinates $l^{I\!I}=53^{\circ},b^{I\!I}=+25^{\circ}$.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_RVLSRK}{RV Corrn to Kinematical LSR}
+{
+ \action{Velocity component in a given direction due to the Sun's
+         motion with respect to a kinematical Local Standard of Rest.}
+ \call{R~=~sla\_RVLSRK (R2000, D2000)}
+}
+\args{GIVEN}
+{
+ \spec{R2000,D2000}{R}{J2000.0 mean \radec\ (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_RVLSRK}{R}{Component of {\it standard}\/ solar motion
+                      in direction R2000,D2000 (km~s$^{-1}$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item Sign convention: the result is positive when
+        the Sun is receding from the given point on the sky.
+  \item The Local Standard of Rest used here is one of several
+        {\it kinematical}\/ LSRs in common use.  A kinematical LSR is the
+        mean standard of rest of specified star catalogues or stellar
+        populations.  The Sun's motion with respect to a kinematical
+        LSR is known as the {\it standard}\/ solar motion.
+  \item There is another sort of LSR, seldom used by observational
+        astronomers, called the {\it dynamical}\/ LSR.  This is a
+        point in the vicinity of the Sun which is in a circular orbit
+        around the Galactic centre.  The Sun's motion with respect to
+        the dynamical LSR is called the {\it peculiar}\/ solar motion.  To
+        obtain a radial velocity correction with respect to the
+        dynamical LSR use the routine sla\_RVLSRD.
+  \item The adopted standard solar motion is 20~km~s$^{-1}$
+        towards $\alpha=18^{\rm h},\delta=+30^{\circ}$ (1900).
+ \end{enumerate}
+}
+\refs
+{
+ \begin{enumerate}
+  \item Delhaye (1965), in {\it Stars and Stellar Systems}, vol~5, p73.
+  \item {\it Methods of Experimental Physics}\/ (ed Meeks), vol~12,
+        part~C, sec~6.1.5.2, p281.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_S2TP}{Spherical to Tangent Plane}
+{
+ \action{Projection of spherical coordinates onto the tangent plane
+         (single precision).}
+ \call{CALL sla\_S2TP (RA, DEC, RAZ, DECZ, XI, ETA, J)}
+}
+\args{GIVEN}
+{
+ \spec{RA,DEC}{R}{spherical coordinates of star (radians)} \\
+ \spec{RAZ,DECZ}{R}{spherical coordinates of tangent point (radians)}
+}
+\args{RETURNED}
+{
+ \spec{XI,ETA}{R}{tangent plane coordinates (radians)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK, star on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 1 = error, star too far from axis} \\
+ \spec{}{}{\hspace{1.5em} 2 = error, antistar on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 3 = error, antistar too far from axis}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item When working in \xyz\ rather than spherical coordinates, the
+        equivalent Cartesian routine sla\_V2TP is available.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_SEP}{Angle Between 2 Points on Sphere}
+{
+ \action{Angle between two points on a sphere (single precision).}
+ \call{R~=~sla\_SEP (A1, B1, A2, B2)}
+}
+\args{GIVEN}
+{
+ \spec{A1,B1}{R}{spherical coordinates of one point (radians)} \\
+ \spec{A2,B2}{R}{spherical coordinates of the other point (radians)}
+}
+\args{RETURNED}
+{
+ \spec{sla\_SEP}{R}{angle between [A1,B1] and [A2,B2] in radians}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The spherical coordinates are right ascension and declination,
+  longitude and latitude, {\it etc.}\ in radians.
+  \item The result is always positive.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_SEPV}{Angle Between 2 Vectors}
+{
+ \action{Angle between two vectors (single precision).}
+ \call{R~=~sla\_SEPV (V1, V2)}
+}
+\args{GIVEN}
+{
+ \spec{V1}{R(3)}{first vector} \\
+ \spec{V2}{R(3)}{second vector}
+}
+\args{RETURNED}
+{
+ \spec{sla\_SEPV}{R}{angle between V1 and V2 in radians}
+}
+\notes
+{
+ \begin{enumerate}
+  \item There is no requirement for either vector to be of unit length.
+  \item If either vector is null, zero is returned.
+  \item The result is always positive.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_SMAT}{Solve Simultaneous Equations}
+{
+ \action{Matrix inversion and solution of simultaneous equations
+         (single precision).}
+ \call{CALL sla\_SMAT (N, A, Y, D, JF, IW)}
+}
+\args{GIVEN}
+{
+ \spec{N}{I}{number of unknowns} \\
+ \spec{A}{R(N,N)}{matrix} \\
+ \spec{Y}{R(N)}{vector}
+}
+\args{RETURNED}
+{
+ \spec{A}{R(N,N)}{matrix inverse} \\
+ \spec{Y}{R(N)}{solution} \\
+ \spec{D}{R}{determinant} \\
+ \spec{JF}{I}{singularity flag: 0=OK} \\
+ \spec{IW}{I(N)}{workspace}
+}
+\notes
+{
+ \begin{enumerate}
+  \item For the set of $n$ simultaneous linear equations in $n$ unknowns:
+        \begin{verse}
+         {\bf A}$\cdot${\bf y} = {\bf x}
+        \end{verse}
+        where:
+        \begin{itemize}
+         \item {\bf A} is a non-singular $n \times n$ matrix,
+         \item {\bf y} is the vector of $n$ unknowns, and
+         \item {\bf x} is the known vector,
+        \end{itemize}
+        sla\_SMAT computes:
+        \begin{itemize}
+         \item the inverse of matrix {\bf A},
+         \item the determinant of matrix {\bf A}, and
+         \item the vector of $n$ unknowns {\bf y}.
+        \end{itemize}
+        Argument N is the order $n$, A (given) is the matrix {\bf A},
+        Y (given) is the vector {\bf x} and Y (returned)
+        is the vector {\bf y}.
+        The argument A (returned) is the inverse matrix {\bf A}$^{-1}$,
+        and D is {\it det}\/({\bf A}).
+  \item JF is the singularity flag.  If the matrix is non-singular,
+        JF=0 is returned.  If the matrix is singular, JF=$-$1
+        and D=0.0 are returned.  In the latter case, the contents
+        of array A on return are undefined.
+  \item The algorithm is Gaussian elimination with partial pivoting.
+        This method is very fast;  some much slower algorithms can give
+        better accuracy, but only by a small factor.
+  \item This routine replaces the obsolete sla\_SMATRX.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_SUBET}{Remove E-terms}
+{
+ \action{Remove the E-terms (elliptic component of annual aberration)
+         from a pre IAU~1976 catalogue \radec\ to give a mean place.}
+ \call{CALL sla\_SUBET (RC, DC, EQ, RM, DM)}
+}
+\args{GIVEN}
+{
+ \spec{RC,DC}{D}{\radec\ with E-terms included (radians)} \\
+ \spec{EQ}{D}{Besselian epoch of mean equator and equinox}
+}
+\args{RETURNED}
+{
+ \spec{RM,DM}{D}{\radec\ without E-terms (radians)}
+}
+\anote{Most star positions from pre-1984 optical catalogues (or
+       obtained by astrometry with respect to such stars) have the
+       E-terms built-in.  This routine converts such a position to a
+       formal mean place (allowing, for example, comparison with a
+       pulsar timing position).}
+\aref{{\it Explanatory Supplement to the Astronomical Ephemeris},
+      section 2D, page 48.}
+%-----------------------------------------------------------------------
+\routine{SLA\_SUPGAL}{Supergalactic to Galactic}
+{
+ \action{Transformation from de Vaucouleurs supergalactic coordinates
+         to IAU 1958 galactic coordinates.}
+ \call{CALL sla\_SUPGAL (DSL, DSB, DL, DB)}
+}
+\args{GIVEN}
+{
+ \spec{DSL,DSB}{D}{supergalactic longitude and latitude (radians)}
+}
+\args{RETURNED}
+{
+ \spec{DL,DB}{D}{galactic longitude and latitude \gal\ (radians)}
+}
+\refs
+{
+ \begin{enumerate}
+  \item de Vaucouleurs, de Vaucouleurs, \& Corwin, {\it Second Reference
+    Catalogue of Bright Galaxies}, U.Texas, p8.
+  \item Systems \& Applied Sciences Corp., documentation for the
+        machine-readable version of the above catalogue,
+        Contract NAS 5-26490.
+ \end{enumerate}
+ (These two references give different values for the galactic
+ longitude of the supergalactic origin.  Both are wrong;  the
+ correct value is $l^{I\!I}=137.37$.)
+}
+%------------------------------------------------------------------------------
+\routine{SLA\_SVD}{Singular Value Decomposition}
+{
+ \action{Singular value decomposition.
+         This routine expresses a given matrix {\bf A} as the product of
+         three matrices {\bf U}, {\bf W}, {\bf V}$^{T}$:
+         \begin{tabbing}
+         XXXXXX \= \kill
+         \> {\bf A} = {\bf U} $\cdot$ {\bf W} $\cdot$ {\bf V}$^{T}$
+         \end{tabbing}
+         where:
+         \begin{tabbing}
+         XXXXXX \= XXXX \= \kill
+         \> {\bf A} \> is any $m$ (rows) $\times n$ (columns) matrix,
+                       where $m \geq n$ \\
+         \> {\bf U} \> is an $m \times n$ column-orthogonal matrix \\
+         \> {\bf W} \> is an $n \times n$ diagonal matrix with
+                       $w_{ii} \geq 0$ \\
+         \> {\bf V}$^{T}$ \> is the transpose of an $n \times n$
+                             orthogonal matrix
+\end{tabbing}
+}
+ \call{CALL sla\_SVD (M, N, MP, NP, A, W, V, WORK, JSTAT)}
+}
+\args{GIVEN}
+{
+ \spec{M,N}{I}{$m$, $n$, the numbers of rows and columns in matrix {\bf A}} \\
+ \spec{MP,NP}{I}{physical dimensions of array containing matrix {\bf A}} \\
+ \spec{A}{D(MP,NP)}{array containing $m \times n$ matrix {\bf A}}
+}
+\args{RETURNED}
+{
+ \spec{A}{D(MP,NP)}{array containing $m \times n$ column-orthogonal
+                    matrix {\bf U}} \\
+ \spec{W}{D(N)}{$n \times n$ diagonal matrix {\bf W}
+               (diagonal elements only)} \\
+ \spec{V}{D(NP,NP)}{array containing $n \times n$ orthogonal
+                    matrix {\bf V} ({\it n.b.}\ not {\bf V}$^{T}$)} \\
+ \spec{WORK}{D(N)}{workspace} \\
+ \spec{JSTAT}{I}{0~=~OK, $-$1~=~array A wrong shape, $>$0~=~index of W
+                 for which convergence failed (see note~3, below)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item M and N are the {\it logical}\/ dimensions of the
+        matrices and vectors concerned, which can be located in
+        arrays of larger {\it physical}\/ dimensions, given by MP and NP.
+  \item V contains matrix V, not the transpose of matrix V.
+  \item If the status JSTAT is greater than zero, this need not
+        necessarily be treated as a failure.  It means that, due to
+        chance properties of the matrix A, the QR transformation
+        phase of the routine did not fully converge in a predefined
+        number of iterations, something that very seldom occurs.
+        When this condition does arise, it is possible that the
+        elements of the diagonal matrix W have not been correctly
+        found.  However, in practice the results are likely to
+        be trustworthy.  Applications should report the condition
+        as a warning, but then proceed normally.
+ \end{enumerate}
+}
+\refs{The algorithm is an adaptation of the routine SVD in the {\it EISPACK}\,
+      library (Garbow~{\it et~al.}\ 1977, {\it EISPACK Guide Extension},
+      Springer Verlag), which is a FORTRAN~66 implementation of the Algol
+      routine SVD of Wilkinson \& Reinsch 1971 ({\it Handbook for Automatic
+      Computation}, vol~2, ed Bauer~{\it et~al.}, Springer Verlag).  These
+      references give full details of the algorithm used here.
+      A good account of the use of SVD in least squares problems is given
+      in {\it Numerical Recipes}\/ (Press~{\it et~al.}\ 1987, Cambridge
+      University Press), which includes another variant of the EISPACK code.}
+%-----------------------------------------------------------------------
+\routine{SLA\_SVDCOV}{Covariance Matrix from SVD}
+{
+ \action{From the {\bf W} and {\bf V} matrices from the SVD
+         factorization of a matrix
+         (as obtained from the sla\_SVD routine), obtain
+         the covariance matrix.}
+ \call{CALL sla\_SVDCOV (N, NP, NC, W, V, WORK, CVM)}
+}
+\args{GIVEN}
+{
+ \spec{N}{I}{$n$, the number of rows and columns in
+             matrices {\bf W} and {\bf V}} \\
+ \spec{NP}{I}{first dimension of array containing $n \times n$
+              matrix {\bf V}} \\
+ \spec{NC}{I}{first dimension of array CVM} \\
+ \spec{W}{D(N)}{$n \times n$ diagonal matrix {\bf W}
+                (diagonal elements only)} \\
+ \spec{V}{D(NP,NP)}{array containing $n \times n$ orthogonal matrix {\bf V}}
+}
+\args{RETURNED}
+{
+ \spec{WORK}{D(N)}{workspace} \\
+ \spec{CVM}{D(NC,NC)}{array to receive covariance matrix}
+}
+\aref{{\it Numerical Recipes}, section 14.3.}
+%-----------------------------------------------------------------------
+\routine{SLA\_SVDSOL}{Solution Vector from SVD}
+{
+ \action{From a given vector and the SVD of a matrix (as obtained from
+         the sla\_SVD routine), obtain the solution vector.
+         This routine solves the equation:
+         \begin{tabbing}
+         XXXXXX \= \kill
+         \> {\bf A} $\cdot$ {\bf x} = {\bf b}
+         \end{tabbing}
+         where:
+         \begin{tabbing}
+         XXXXXX \= XXXX \= \kill
+         \> {\bf A} \> is a given $m$ (rows) $\times n$ (columns)
+                       matrix, where $m \geq n$ \\
+         \> {\bf x} \> is the $n$-vector we wish to find, and \\
+         \> {\bf b} \> is a given $m$-vector
+         \end{tabbing}
+         by means of the {\it Singular Value Decomposition}\/ method (SVD).}
+ \call{CALL sla\_SVDSOL (M, N, MP, NP, B, U, W, V, WORK, X)}
+}
+\args{GIVEN}
+{
+ \spec{M,N}{I}{$m$, $n$, the numbers of rows and columns in matrix {\bf A}} \\
+ \spec{MP,NP}{I}{physical dimensions of array containing matrix {\bf A}} \\
+ \spec{B}{D(M)}{known vector {\bf b}} \\
+ \spec{U}{D(MP,NP)}{array containing $m \times n$ matrix {\bf U}} \\
+ \spec{W}{D(N)}{$n \times n$ diagonal matrix {\bf W}
+                (diagonal elements only)} \\
+ \spec{V}{D(NP,NP)}{array containing $n \times n$ orthogonal matrix {\bf V}}
+}
+\args{RETURNED}
+{
+ \spec{WORK}{D(N)}{workspace} \\
+ \spec{X}{D(N)}{unknown vector {\bf x}}
+}
+\notes
+{
+ \begin{enumerate}
+  \item In the Singular Value Decomposition method (SVD),
+        the matrix {\bf A} is first factorized (for example by
+        the routine sla\_SVD) into the following components:
+        \begin{tabbing}
+        XXXXXX \= \kill
+        \> {\bf A} = {\bf U} $\cdot$ {\bf W} $\cdot$ {\bf V}$^{T}$
+        \end{tabbing}
+        where:
+        \begin{tabbing}
+        XXXXXX \= XXXX \= \kill
+        \> {\bf A} \> is any $m$ (rows) $\times n$ (columns) matrix,
+                      where $m > n$ \\
+        \> {\bf U} \> is an $m \times n$ column-orthogonal matrix \\
+        \> {\bf W} \> is an $n \times n$ diagonal matrix with
+                      $w_{ii} \geq 0$ \\
+        \> {\bf V}$^{T}$ \> is the transpose of an $n \times n$
+                            orthogonal matrix
+        \end{tabbing}
+        Note that $m$ and $n$ are the {\it logical}\/ dimensions of the
+        matrices and vectors concerned, which can be located in
+        arrays of larger {\it physical}\/ dimensions MP and NP.
+        The solution is then found from the expression:
+        \begin{tabbing}
+        XXXXXX \= \kill
+        \> {\bf x} = {\bf V} $\cdot~[diag(1/${\bf W}$_{j})]
+           \cdot (${\bf U}$^{T} \cdot${\bf b})
+        \end{tabbing}
+  \item If matrix {\bf A} is square, and if the diagonal matrix {\bf W} is not
+        altered, the method is equivalent to conventional solution
+        of simultaneous equations.
+  \item If $m > n$, the result is a least-squares fit.
+  \item If the solution is poorly determined, this shows up in the
+        SVD factorization as very small or zero {\bf W}$_{j}$ values.  Where
+        a {\bf W}$_{j}$ value is small but non-zero it can be set to zero to
+        avoid ill effects.  The present routine detects such zero
+        {\bf W}$_{j}$ values and produces a sensible solution, with highly
+        correlated terms kept under control rather than being allowed
+        to elope to infinity, and with meaningful values for the
+       other terms.
+ \end{enumerate}
+}
+\aref{{\it Numerical Recipes}, section 2.9.}
+%-----------------------------------------------------------------------
+\routine{SLA\_TP2S}{Tangent Plane to Spherical}
+{
+ \action{Transform tangent plane coordinates into spherical
+         coordinates (single precision)}
+ \call{CALL sla\_TP2S (XI, ETA, RAZ, DECZ, RA, DEC)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{R}{tangent plane rectangular coordinates (radians)} \\
+ \spec{RAZ,DECZ}{R}{spherical coordinates of tangent point (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RA,DEC}{R}{spherical coordinates (radians)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item When working in \xyz\ rather than spherical coordinates, the
+        equivalent Cartesian routine sla\_TP2V is available.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_TP2V}{Tangent Plane to Direction Cosines}
+{
+ \action{Given the tangent-plane coordinates of a star and the direction
+         cosines of the tangent point, determine the direction cosines
+         of the star
+         (single precision).}
+ \call{CALL sla\_TP2V (XI, ETA, V0, V)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{R}{tangent plane coordinates of star (radians)} \\
+ \spec{V0}{R(3)}{direction cosines of tangent point}
+}
+\args{RETURNED}
+{
+ \spec{V}{R(3)}{direction cosines of star}
+}
+\notes
+{
+ \begin{enumerate}
+  \item If vector V0 is not of unit length, the returned vector V will
+        be wrong.
+  \item If vector V0 points at a pole, the returned vector V will be
+        based on the arbitrary assumption that $\alpha=0$ at
+        the tangent point.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item This routine is the Cartesian equivalent of the routine sla\_TP2S.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_TPS2C}{Plate centre from $\xi,\eta$ and $\alpha,\delta$}
+{
+ \action{From the tangent plane coordinates of a star of known \radec,
+        determine the \radec\ of the tangent point (single precision)}
+ \call{CALL sla\_TPS2C (XI, ETA, RA, DEC, RAZ1, DECZ1, RAZ2, DECZ2, N)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{R}{tangent plane rectangular coordinates (radians)} \\
+ \spec{RA,DEC}{R}{spherical coordinates (radians)}
+}
+\args{RETURNED}
+{
+ \spec{RAZ1,DECZ1}{R}{spherical coordinates of tangent point,
+                      solution 1} \\
+ \spec{RAZ2,DECZ2}{R}{spherical coordinates of tangent point,
+                      solution 2} \\
+ \spec{N}{I}{number of solutions:} \\
+ \spec{}{}{\hspace{1em} 0 = no solutions returned  (note 2)} \\
+ \spec{}{}{\hspace{1em} 1 = only the first solution is useful (note 3)} \\
+ \spec{}{}{\hspace{1em} 2 = there are two useful solutions (note 3)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The RAZ1 and RAZ2 values returned are in the range $0\!-\!2\pi$.
+  \item Cases where there is no solution can only arise near the poles.
+        For example, it is clearly impossible for a star at the pole
+        itself to have a non-zero $\xi$ value, and hence it is
+        meaningless to ask where the tangent point would have to be
+        to bring about this combination of $\xi$ and $\delta$.
+  \item Also near the poles, cases can arise where there are two useful
+        solutions.  The argument N indicates whether the second of the
+        two solutions returned is useful.  N\,=\,1
+        indicates only one useful solution, the usual case;  under
+        these circumstances, the second solution corresponds to the
+        ``over-the-pole'' case, and this is reflected in the values
+        of RAZ2 and DECZ2 which are returned.
+  \item The DECZ1 and DECZ2 values returned are in the range $\pm\pi$,
+        but in the ordinary, non-pole-crossing, case, the range is
+        $\pm\pi/2$.
+  \item RA, DEC, RAZ1, DECZ1, RAZ2, DECZ2 are all in radians.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item When working in \xyz\ rather than spherical coordinates, the
+        equivalent Cartesian routine sla\_TPV2C is available.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_TPV2C}{Plate centre from $\xi,\eta$ and $x,y,z$}
+{
+ \action{From the tangent plane coordinates of a star of known
+         direction cosines, determine the direction cosines
+         of the tangent point (single precision)}
+ \call{CALL sla\_TPV2C (XI, ETA, V, V01, V02, N)}
+}
+\args{GIVEN}
+{
+ \spec{XI,ETA}{R}{tangent plane coordinates of star (radians)} \\
+ \spec{V}{R(3)}{direction cosines of star}
+}
+\args{RETURNED}
+{
+ \spec{V01}{R(3)}{direction cosines of tangent point, solution 1} \\
+ \spec{V01}{R(3)}{direction cosines of tangent point, solution 2} \\
+ \spec{N}{I}{number of solutions:} \\
+ \spec{}{}{\hspace{1em} 0 = no solutions returned  (note 2)} \\
+ \spec{}{}{\hspace{1em} 1 = only the first solution is useful (note 3)} \\
+ \spec{}{}{\hspace{1em} 2 = there are two useful solutions (note 3)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The vector V must be of unit length or the result will be wrong.
+  \item Cases where there is no solution can only arise near the poles.
+        For example, it is clearly impossible for a star at the pole
+        itself to have a non-zero XI value.
+  \item Also near the poles, cases can arise where there are two useful
+        solutions.  The argument N indicates whether the second of the
+        two solutions returned is useful.
+        N\,=\,1
+        indicates only one useful solution, the usual case;  under these
+        circumstances, the second solution can be regarded as valid if
+        the vector V02 is interpreted as the ``over-the-pole'' case.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item This routine is the Cartesian equivalent of the routine sla\_TPS2C.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_UE2EL}{Universal to Conventional Elements}
+{
+ \action{Transform universal elements into conventional heliocentric
+         osculating elements.}
+ \call{CALL sla\_UE2EL (\vtop{
+         \hbox{U, JFORMR,}
+         \hbox{JFORM, EPOCH, ORBINC, ANODE, PERIH,}
+         \hbox{AORQ, E, AORL, DM, JSTAT)}}}
+}
+\args{GIVEN}
+{
+ \spec{U}{D(13)}{universal orbital elements (updated; Note~1)} \\
+ \specel {(1)}     {combined mass ($M+m$)} \\
+ \specel {(2)}     {total energy of the orbit ($\alpha$)} \\
+ \specel {(3)}     {reference (osculating) epoch ($t_0$)} \\
+ \specel {(4-6)}   {position at reference epoch (${\rm \bf r}_0$)} \\
+ \specel {(7-9)}   {velocity at reference epoch (${\rm \bf v}_0$)} \\
+ \specel {(10)}    {heliocentric distance at reference epoch} \\
+ \specel {(11)}    {${\rm \bf r}_0.{\rm \bf v}_0$} \\
+ \specel {(12)}    {date ($t$)} \\
+ \specel {(13)}    {universal eccentric anomaly ($\psi$) of date, approx} \\ \\
+ \spec{JFORMR}{I}{requested element set (1-3; Note~3)}
+}
+\args{RETURNED}
+{
+ \spec{JFORM}{I}{element set actually returned (1-3; Note~4)} \\
+ \spec{EPOCH}{D}{epoch of elements ($t_0$ or $T$, TT MJD)} \\
+ \spec{ORBINC}{D}{inclination ($i$, radians)} \\
+ \spec{ANODE}{D}{longitude of the ascending node ($\Omega$, radians)} \\
+ \spec{PERIH}{D}{longitude or argument of perihelion
+                            ($\varpi$ or $\omega$,} \\
+ \spec{}{}{\hspace{1.5em} radians)} \\
+ \spec{AORQ}{D}{mean distance or perihelion distance ($a$ or $q$, AU)} \\
+ \spec{E}{D}{eccentricity ($e$)} \\
+ \spec{AORL}{D}{mean anomaly or longitude
+                               ($M$ or $L$, radians,} \\
+ \spec{}{}{\hspace{1.5em} JFORM=1,2 only)} \\
+ \spec{DM}{D}{daily motion ($n$, radians, JFORM=1 only)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{2.3em}    0 = OK} \\
+ \spec{}{}{\hspace{1.5em} $-$1 = illegal PMASS} \\
+ \spec{}{}{\hspace{1.5em} $-$2 = illegal JFORMR} \\
+ \spec{}{}{\hspace{1.5em} $-$3 = position/velocity out of allowed range}
+}
+\notes
+{
+ \begin{enumerate}
+  \setlength{\parskip}{\medskipamount}
+  \item The ``universal'' elements are those which define the orbit for the
+        purposes of the method of universal variables (see reference 2).
+        They consist of the combined mass of the two bodies, an epoch,
+        and the position and velocity vectors (arbitrary reference frame)
+        at that epoch.  The parameter set used here includes also various
+        quantities that can, in fact, be derived from the other
+        information.  This approach is taken to avoiding unnecessary
+        computation and loss of accuracy.  The supplementary quantities
+        are (i)~$\alpha$, which is proportional to the total energy of the
+        orbit, (ii)~the heliocentric distance at epoch,
+        (iii)~the outwards component of the velocity at the given epoch,
+        (iv)~an estimate of $\psi$, the ``universal eccentric anomaly'' at a
+        given date and (v)~that date.
+  \item The universal elements are with respect to the mean equator and
+        equinox of epoch J2000.  The orbital elements produced are with
+        respect to the J2000 ecliptic and mean equinox.
+  \item Three different element-format options are supported, as
+        follows. \\
+
+        JFORM=1, suitable for the major planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> longitude of perihelion $\varpi$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean longitude $L$ (radians) \\
+        \> DM     \> = \> daily motion $n$ (radians)
+        \end{tabbing}
+
+        JFORM=2, suitable for minor planets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of elements $t_0$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> mean distance $a$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e < 1 )$ \\
+        \> AORL   \> = \> mean anomaly $M$ (radians)
+        \end{tabbing}
+
+        JFORM=3, suitable for comets:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xx \= \kill
+        \> EPOCH  \> = \> epoch of perihelion $T$ (TT MJD) \\
+        \> ORBINC \> = \> inclination $i$ (radians) \\
+        \> ANODE  \> = \> longitude of the ascending node $\Omega$ (radians) \\
+        \> PERIH  \> = \> argument of perihelion $\omega$ (radians) \\
+        \> AORQ   \> = \> perihelion distance $q$ (AU) \\
+        \> E      \> = \> eccentricity $e$ $( 0 \leq e \leq 10 )$
+        \end{tabbing}
+  \item It may not be possible to generate elements in the form
+        requested through JFORMR.  The caller is notified of the form
+        of elements actually returned by means of the JFORM argument:
+
+        \begin{tabbing}
+        xx \= xxxxxxxxxx \= xxxxxxxxxxx \= \kill
+        \> JFORMR   \> JFORM   \> meaning \\ \\
+        \> ~~~~~1   \> ~~~~~1  \> OK: elements are in the requested format \\
+        \> ~~~~~1   \> ~~~~~2  \> never happens \\
+        \> ~~~~~1   \> ~~~~~3  \> orbit not elliptical \\
+        \> ~~~~~2   \> ~~~~~1  \> never happens \\
+        \> ~~~~~2   \> ~~~~~2  \> OK: elements are in the requested format \\
+        \> ~~~~~2   \> ~~~~~3  \> orbit not elliptical \\
+        \> ~~~~~3   \> ~~~~~1  \> never happens \\
+        \> ~~~~~3   \> ~~~~~2  \> never happens \\
+        \> ~~~~~3   \> ~~~~~3  \> OK: elements are in the requested format
+        \end{tabbing}
+  \item The arguments returned for each value of JFORM ({\it cf.}\/ Note~5:
+        JFORM may not be the same as JFORMR) are as follows:
+
+        \begin{tabbing}
+        xxx \= xxxxxxxxxxxx \= xxxxxx \= xxxxxx \= \kill
+        \> JFORM  \> 1        \> 2        \> 3 \\ \\
+        \> EPOCH  \> $t_0$    \> $t_0$    \> $T$ \\
+        \> ORBINC \> $i$      \> $i$      \> $i$ \\
+        \> ANODE  \> $\Omega$ \> $\Omega$ \> $\Omega$ \\
+        \> PERIH  \> $\varpi$ \> $\omega$ \> $\omega$ \\
+        \> AORQ   \> $a$      \> $a$      \> $q$ \\
+        \> E      \> $e$      \> $e$      \> $e$ \\
+        \> AORL   \> $L$      \> $M$      \> - \\
+        \> DM     \> $n$      \> -        \> -
+        \end{tabbing}
+
+        where:
+        \begin{tabbing}
+        xxx \= xxxxxxxx \= xxx \= \kill
+        \> $t_0$    \> is the epoch of the elements (MJD, TT) \\
+        \> $T$      \> is the epoch of perihelion (MJD, TT) \\
+        \> $i$      \> is the inclination (radians) \\
+        \> $\Omega$ \> is the longitude of the ascending node (radians) \\
+        \> $\varpi$ \> is the longitude of perihelion (radians) \\
+        \> $\omega$ \> is the argument of perihelion (radians) \\
+        \> $a$      \> is the mean distance (AU) \\
+        \> $q$      \> is the perihelion distance (AU) \\
+        \> $e$      \> is the eccentricity \\
+        \> $L$      \> is the longitude (radians, $0-2\pi$) \\
+        \> $M$      \> is the mean anomaly (radians, $0-2\pi$) \\
+        \> $n$      \> is the daily motion (radians) \\
+        \> - \> means no value is set
+        \end{tabbing}
+  \item At very small inclinations, the longitude of the ascending node
+        ANODE becomes indeterminate and under some circumstances may be
+        set arbitrarily to zero.  Similarly, if the orbit is close to
+        circular, the true anomaly becomes indeterminate and under some
+        circumstances may be set arbitrarily to zero.  In such cases,
+        the other elements are automatically adjusted to compensate,
+        and so the elements remain a valid description of the orbit.
+ \end{enumerate}
+}
+\refs{
+   \begin{enumerate}
+   \item Sterne, Theodore E., {\it An Introduction to Celestial Mechanics,}\/
+         Interscience Publishers, 1960.  Section 6.7, p199.
+   \item Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.
+   \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_UE2PV}{Pos/Vel from Universal Elements}
+{
+ \action{Heliocentric position and velocity of a planet, asteroid or comet,
+         starting from orbital elements in the ``universal variables'' form.}
+ \call{CALL sla\_UE2PV (DATE, U, PV, JSTAT)}
+}
+\args{GIVEN}
+{
+ \spec{DATE}{D}{date (TT Modified Julian Date = JD$-$2400000.5)}
+}
+\args{GIVEN and RETURNED}
+{
+ \spec{U}{D(13)}{universal orbital elements (updated; Note~1)} \\
+ \specel {(1)}     {combined mass ($M+m$)} \\
+ \specel {(2)}     {total energy of the orbit ($\alpha$)} \\
+ \specel {(3)}     {reference (osculating) epoch ($t_0$)} \\
+ \specel {(4-6)}   {position at reference epoch (${\rm \bf r}_0$)} \\
+ \specel {(7-9)}   {velocity at reference epoch (${\rm \bf v}_0$)} \\
+ \specel {(10)}    {heliocentric distance at reference epoch} \\
+ \specel {(11)}    {${\rm \bf r}_0.{\rm \bf v}_0$} \\
+ \specel {(12)}    {date ($t$)} \\
+ \specel {(13)}    {universal eccentric anomaly ($\psi$) of date, approx}
+}
+\args{RETURNED}
+{
+ \spec{PV}{D(6)}{heliocentric \xyzxyzd, equatorial, J2000} \\
+ \spec{}{}{\hspace{1.5em} (AU, AU/s; Note~1)} \\
+ \spec{JSTAT}{I}{status:} \\
+ \spec{}{}{\hspace{1.95em}      0 = OK} \\
+ \spec{}{}{\hspace{1.2em}    $-$1 = radius vector zero} \\
+ \spec{}{}{\hspace{1.2em}    $-2$ = failed to converge}
+}
+\notes
+{
+ \begin{enumerate}
+  \setlength{\parskip}{\medskipamount}
+  \item The ``universal'' elements are those which define the orbit for the
+        purposes of the method of universal variables (see reference).
+        They consist of the combined mass of the two bodies, an epoch,
+        and the position and velocity vectors (arbitrary reference frame)
+        at that epoch.  The parameter set used here includes also various
+        quantities that can, in fact, be derived from the other
+        information.  This approach is taken to avoiding unnecessary
+        computation and loss of accuracy.  The supplementary quantities
+        are (i)~$\alpha$, which is proportional to the total energy of the
+        orbit, (ii)~the heliocentric distance at epoch,
+        (iii)~the outwards component of the velocity at the given epoch,
+        (iv)~an estimate of $\psi$, the ``universal eccentric anomaly'' at a
+        given date and (v)~that date.
+  \item The companion routine is sla\_EL2UE.  This takes the conventional
+        orbital elements and transforms them into the set of numbers
+        needed by the present routine.  A single prediction requires one
+        one call to sla\_EL2UE followed by one call to the present routine;
+        for convenience, the two calls are packaged as the routine
+        sla\_PLANEL.  Multiple predictions may be made by again
+        calling sla\_EL2UE once, but then calling the present routine
+        multiple times, which is faster than multiple calls to sla\_PLANEL.
+
+        It is not obligatory to use sla\_EL2UE to obtain the parameters.
+        However, it should be noted that because sla\_EL2UE performs its
+        own validation, no checks on the contents of the array U are made
+        by the present routine.
+  \item DATE is the instant for which the prediction is required.  It is
+        in the TT time scale (formerly Ephemeris Time, ET) and is a
+        Modified Julian Date (JD$-$2400000.5).
+  \item The universal elements supplied in the array U are in canonical
+        units (solar masses, AU and canonical days).  The position and
+        velocity are not sensitive to the choice of reference frame.  The
+        sla\_EL2UE routine in fact produces coordinates with respect to the
+        J2000 equator and equinox.
+  \item The algorithm was originally adapted from the EPHSLA program of
+        D.\,H.\,P.\,Jones (private communication, 1996).  The method
+        is based on Stumpff's Universal Variables.
+ \end{enumerate}
+}
+\aref{Everhart, E. \& Pitkin, E.T., Am.~J.~Phys.~51, 712, 1983.}
+%-----------------------------------------------------------------------
+\routine{SLA\_UNPCD}{Remove Radial Distortion}
+{
+ \action{Remove pincushion/barrel distortion from a distorted
+         \xy\  to give tangent-plane \xy.}
+ \call{CALL sla\_UNPCD (DISCO,X,Y)}
+}
+\args{GIVEN}
+{
+ \spec{DISCO}{D}{pincushion/barrel distortion coefficient} \\
+ \spec{X,Y}{D}{distorted \xy}
+}
+\args{RETURNED}
+{
+ \spec{X,Y}{D}{tangent-plane \xy}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The distortion is of the form $\rho = r (1 + c r^{2})$, where $r$ is
+        the radial distance from the tangent point, $c$ is the DISCO
+        argument, and $\rho$ is the radial distance in the presence of
+        the distortion.
+  \item For {\it pincushion}\/ distortion, C is +ve;  for
+        {\it barrel}\/ distortion, C is $-$ve.
+  \item For X,Y in units of one projection radius (in the case of
+        a photographic plate, the focal length), the following
+        DISCO values apply:
+
+        \vspace{2ex}
+
+        \hspace{5em}
+        \begin{tabular}{|l|c|} \hline
+         Geometry & DISCO \\ \hline \hline
+         astrograph & 0.0 \\ \hline
+         Schmidt & $-$0.3333 \\ \hline
+         AAT PF doublet & +147.069 \\ \hline
+         AAT PF triplet & +178.585 \\ \hline
+         AAT f/8 & +21.20 \\ \hline
+         JKT f/8 & +14.6 \\ \hline
+        \end{tabular}
+
+        \vspace{2ex}
+
+  \item The present routine is a rigorous inverse of the companion
+        routine sla\_PCD.  The expression for $\rho$ in Note~1
+        is rewritten in the form $x^3 + ax + b = 0$ and solved by
+        standard techniques.
+
+  \item Cases where the cubic has multiple real roots can sometimes
+        occur, corresponding to extreme instances of barrel distortion
+        where up to three different undistorted \xy s all produce the
+        same distorted \xy.  However, only one solution is returned,
+        the one that produces the smallest change in \xy.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_V2TP}{Direction Cosines to Tangent Plane}
+{
+ \action{Given the direction cosines of a star and of the tangent point,
+         determine the star's tangent-plane coordinates
+         (single precision).}
+ \call{CALL sla\_V2TP (V, V0, XI, ETA, J)}
+}
+\args{GIVEN}
+{
+ \spec{V}{R(3)}{direction cosines of star} \\
+ \spec{V0}{R(3)}{direction cosines of tangent point}
+}
+\args{RETURNED}
+{
+ \spec{XI,ETA}{R}{tangent plane coordinates (radians)} \\
+ \spec{J}{I}{status:} \\
+ \spec{}{}{\hspace{1.5em} 0 = OK, star on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 1 = error, star too far from axis} \\
+ \spec{}{}{\hspace{1.5em} 2 = error, antistar on tangent plane} \\
+ \spec{}{}{\hspace{1.5em} 3 = error, antistar too far from axis}
+}
+\notes
+{
+ \begin{enumerate}
+  \item If vector V0 is not of unit length, or if vector V is of zero
+        length, the results will be wrong.
+  \item If V0 points at a pole, the returned $\xi,\eta$
+        will be based on the
+        arbitrary assumption that $\alpha=0$ at the tangent point.
+  \item The projection is called the {\it gnomonic}\/ projection;  the
+        Cartesian coordinates \xieta\ are called
+        {\it standard coordinates.}\/  The latter
+        are in units of the distance from the tangent plane to the projection
+        point, {\it i.e.}\ radians near the origin.
+  \item This routine is the Cartesian equivalent of the routine sla\_S2TP.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_VDV}{Scalar Product}
+{
+ \action{Scalar product of two 3-vectors (single precision).}
+ \call{R~=~sla\_VDV (VA, VB)}
+}
+\args{GIVEN}
+{
+ \spec{VA}{R(3)}{first vector} \\
+ \spec{VB}{R(3)}{second vector}
+}
+\args{RETURNED}
+{
+ \spec{sla\_VDV}{R}{scalar product VA.VB}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_VN}{Normalize Vector}
+{
+ \action{Normalize a 3-vector, also giving the modulus (single precision).}
+ \call{CALL sla\_VN (V, UV, VM)}
+}
+\args{GIVEN}
+{
+ \spec{V}{R(3)}{vector}
+}
+\args{RETURNED}
+{
+ \spec{UV}{R(3)}{unit vector in direction of V} \\
+ \spec{VM}{R}{modulus of V}
+}
+\anote{If the modulus of V is zero, UV is set to zero as well.}
+%-----------------------------------------------------------------------
+\routine{SLA\_VXV}{Vector Product}
+{
+ \action{Vector product of two 3-vectors (single precision).}
+ \call{CALL sla\_VXV (VA, VB, VC)}
+}
+\args{GIVEN}
+{
+ \spec{VA}{R(3)}{first vector} \\
+ \spec{VB}{R(3)}{second vector}
+}
+\args{RETURNED}
+{
+ \spec{VC}{R(3)}{vector product VA$\times$VB}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_WAIT}{Time Delay}
+{
+ \action{Wait for a specified interval.}
+ \call{CALL sla\_WAIT (DELAY)}
+}
+\args{GIVEN}
+{
+ \spec{DELAY}{R}{delay in seconds}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The implementation is machine-specific.
+  \item The delay actually requested is restricted to the range
+        100ns-200s in the present implementation.
+  \item There is no guarantee of accuracy, though on almost all
+        types of computer the program will certainly not
+        resume execution {\it before}\/ the stated interval has
+        elapsed.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_XY2XY}{Apply Linear Model to an \xy}
+{
+ \action{Transform one \xy\ into another using a linear model of the type
+         produced by the sla\_FITXY routine.}
+ \call{CALL sla\_XY2XY (X1, Y1, COEFFS, X2, Y2)}
+}
+\args{GIVEN}
+{
+ \spec{X1,Y1}{D}{\xy\ before transformation} \\
+ \spec{COEFFS}{D(6)}{transformation coefficients (see note)}
+}
+\args{RETURNED}
+{
+ \spec{X2,Y2}{D}{\xy\ after transformation}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The model relates two sets of \xy\ coordinates as follows.
+        Naming the six elements of COEFFS $a,b,c,d,e$ \& $f$,
+        the present routine performs the transformation:
+        \begin{verse}
+          $x_{2} = a + bx_{1} + cy_{1}$ \\
+          $y_{2} = d + ex_{1} + fy_{1}$
+        \end{verse}
+  \item See also sla\_FITXY, sla\_PXY, sla\_INVF, sla\_DCMPF.
+ \end{enumerate}
+}
+%-----------------------------------------------------------------------
+\routine{SLA\_ZD}{$h,\delta$ to Zenith Distance}
+{
+ \action{Hour angle and declination to zenith distance
+         (double precision).}
+ \call{D~=~sla\_ZD (HA, DEC, PHI)}
+}
+\args{GIVEN}
+{
+ \spec{HA}{D}{hour angle in radians} \\
+ \spec{DEC}{D}{declination in radians} \\
+ \spec{PHI}{D}{latitude in radians}
+}
+\args{RETURNED}
+{
+ \spec{sla\_ZD}{D}{zenith distance (radians, $0\!-\!\pi$)}
+}
+\notes
+{
+ \begin{enumerate}
+  \item The latitude must be geodetic.  In critical applications,
+        corrections for polar motion should be applied (see sla\_POLMO).
+  \item In some applications it will be important to specify the
+        correct type of hour angle and declination in order to
+        produce the required type
+        of zenith distance.  In particular, it may be
+        important to distinguish between the zenith distance
+        as affected by refraction, which would require the
+        {\it observed}\/ \hadec, and the zenith distance {\it in vacuo},
+        which would require the {\it topocentric}\/ \hadec.  If
+        the effects of diurnal aberration can be neglected, the
+        {\it apparent}\/ \hadec\ may be used instead of the
+        {\it topocentric}\/ \hadec.
+  \item No range checking of arguments is done.
+  \item In applications which involve many zenith distance calculations,
+        rather than calling the present routine it will be more
+        efficient to use inline code, having previously computed fixed
+        terms such as sine and cosine of latitude, and perhaps sine and
+        cosine of declination.
+ \end{enumerate}
+}
+\vfill
+\pagebreak
+
+\section{EXPLANATION AND EXAMPLES}
+To guide the writer of positional-astronomy applications software,
+this final chapter puts the SLALIB routines into the context of
+astronomical phenomena and techniques, and presents a few
+``cookbook'' examples
+of the SLALIB calls in action.  The astronomical content of the chapter
+is not, of course, intended to be a substitute for specialist text-books on
+positional astronomy, but may help bridge the gap between
+such books and the SLALIB routines.  For further reading, the following
+cover a wide range of material and styles:
+\begin{itemize}
+\item {\it Explanatory Supplement to the Astronomical Almanac},
+      ed.\ P.\,Kenneth~Seidelmann (1992), University Science Books.
+\item {\it Vectorial Astrometry}, C.\,A.\,Murray (1983), Adam Hilger.
+\item {\it Spherical Astronomy}, Robin~M.\,Green (1985), Cambridge
+      University Press.
+\item {\it Spacecraft Attitude Determination and Control},
+      ed.\ James~R.\,Wertz (1986), Reidel.
+\item {\it Practical Astronomy with your Calculator},
+      Peter~Duffett-Smith (1981), Cambridge University Press.
+\end{itemize}
+Also of considerable value, though out of date in places, are:
+\begin{itemize}
+\item {\it Explanatory Supplement to the Astronomical Ephemeris
+      and the American Ephemeris and Nautical Almanac}, RGO/USNO (1974),
+      HMSO.
+\item {\it Textbook on Spherical Astronomy}, W.\,M.\,Smart (1977),
+      Cambridge University Press.
+\end{itemize}
+Only brief details of individual SLALIB routines are given here, and
+readers will find it useful to refer to the subprogram specifications
+elsewhere in this document.  The source code for the SLALIB routines
+(available in both Fortran and C) is also intended to be used as
+documentation.
+
+\subsection {Spherical Trigonometry}
+Celestial phenomena occur at such vast distances from the
+observer that for most practical purposes there is no need to
+work in 3D;  only the direction
+of a source matters, not how far away it is.  Things can
+therefore be viewed as if they were happening
+on the inside of sphere with the observer at the centre --
+the {\it celestial sphere}.  Problems involving
+positions and orientations in the sky can then be solved by
+using the formulae of {\it spherical trigonometry}, which
+apply to {\it spherical triangles}, the sides of which are
+{\it great circles}.
+
+Positions on the celestial sphere may be specified by using
+a spherical polar coordinate system, defined in terms of
+some fundamental plane and a line in that plane chosen to
+represent zero longitude.  Mathematicians usually work with the
+co-latitude, with zero at the principal pole, whereas most
+astronomical coordinate systems use latitude, reckoned plus and
+minus from the equator.
+Astronomical coordinate systems may be either right-handed
+({\it e.g.}\ right ascension and declination \radec,
+Galactic longitude and latitude \gal)
+or left-handed ({\it e.g.}\ hour angle and
+declination \hadec).  In some cases
+different conventions have been used in the past, a fruitful source of
+mistakes.  Azimuth and geographical longitude are examples;  azimuth
+is now generally reckoned north through east
+(making a left-handed system);  geographical longitude is now usually
+taken to increase eastwards (a right-handed system) but astronomers
+used to employ a west-positive convention.  In reports
+and program comments it is wise to spell out what convention
+is being used, if there is any possibility of confusion.
+
+When applying spherical trigonometry formulae, attention must be
+paid to
+rounding errors (for example it is a bad idea to find a
+small angle through its cosine) and to the possibility of
+problems close to poles.
+Also, if a formulation relies on inspection to establish
+the quadrant of the result, it is an indication that a vector-related
+method might be preferable.
+
+As well as providing many routines which work in terms of specific
+spherical coordinates such as \radec, SLALIB provides
+two routines which operate directly on generic spherical
+coordinates:
+sla\_SEP
+computes the separation between
+two points (the distance along a great circle) and
+sla\_BEAR
+computes the bearing (or {\it position angle})
+of one point seen from the other.  The routines
+sla\_DSEP
+and
+sla\_DBEAR
+are double precision equivalents.  As a simple demonstration
+of SLALIB, we will use these facilities to estimate the distance from
+London to Sydney and the initial compass heading:
+\goodbreak
+\begin{verbatim}
+            IMPLICIT NONE
+
+      *  Degrees to radians
+            REAL D2R
+            PARAMETER (D2R=0.01745329252)
+
+      *  Longitudes and latitudes (radians) for London and Sydney
+            REAL AL,BL,AS,BS
+            PARAMETER (AL=-0.2*D2R,BL=51.5*D2R,AS=151.2*D2R,BS=-33.9*D2R)
+
+      *  Earth radius in km (spherical approximation)
+            REAL RKM
+            PARAMETER (RKM=6375.0)
+
+            REAL sla_SEP,sla_BEAR
+
+
+      *  Distance and initial heading (N=0, E=90)
+            WRITE (*,'(1X,I5,'' km,'',I4,'' deg'')')
+           :    NINT(sla_SEP(AL,BL,AS,BS)*RKM),NINT(sla_BEAR(AL,BL,AS,BS)/D2R)
+
+            END
+\end{verbatim}
+\goodbreak
+(The result is 17011~km, $61^\circ$.)
+
+The routines
+sla\_SEPV,
+sla\_DSEPV,
+sla\_PAV,
+sla\_DPAV
+are equivalents of sla\_SEP, sla\_DSEP, sla\_BEAR and sla\_DBEAR
+but starting from vectors
+instead of spherical coordinates.
+
+\subsubsection{Formatting angles}
+SLALIB has routines for decoding decimal numbers
+from character form and for converting angles to and from
+sexagesimal form (hours, minutes, seconds or degrees,
+arcminutes, arcseconds).  These apparently straightforward
+operations contain hidden traps which the SLALIB routines
+avoid.
+
+There are five routines for decoding numbers from a character
+string, such as might be entered using a keyboard.
+They all work in the same style, and successive calls
+can work their way along a single string decoding
+a sequence of numbers of assorted types.  Number
+fields can be separated by spaces or commas, and can be defaulted
+to previous values or to preset defaults.
+
+Three of the routines decode single numbers:
+sla\_INTIN
+(integer),
+sla\_FLOTIN
+(single precision floating point) and
+sla\_DFLTIN
+(double precision).  A minus sign can be
+detected even when the number is zero;  this avoids
+the frequently-encountered ``minus zero'' bug, where
+declinations {\it etc.}\ in
+the range $0^{\circ}$ to $-1^{\circ}$ mysteriously migrate to
+the range $0^{\circ}$ to $+1^{\circ}$.
+Here is an example (in Fortran) where we wish to
+read two numbers, an integer {\tt IX} and a real, {\tt Y},
+with {\tt IX} defaulting to zero and {\tt Y} defaulting to
+{\tt IX}:
+\goodbreak
+\begin{verbatim}
+            DOUBLE PRECISION Y
+            CHARACTER*80 A
+            INTEGER IX,I,J
+
+      *  Input the string to be decoded
+            READ (*,'(A)') A
+
+      *  Preset IX to its default value
+            IX = 0
+
+      *  Point to the start of the string
+            I = 1
+
+      *  Decode an integer
+            CALL sla_INTIN(A,I,IX,J)
+            IF (J.GT.1) GO TO ... (bad IX)
+
+      *  Preset Y to its default value
+            Y = DBLE(IX)
+
+      *  Decode a double precision number
+            CALL sla_DFLTIN(A,I,Y,J)
+            IF (J.GT.1) GO TO ... (bad Y)
+\end{verbatim}
+\goodbreak
+Two additional routines decode a 3-field sexagesimal number:
+sla\_AFIN
+(degrees, arcminutes, arcseconds to single
+precision radians) and
+sla\_DAFIN
+(the same but double precision).  They also
+work using other units such as hours {\it etc}.\ if
+you multiply the result by the appropriate factor.  An example
+Fortran program which uses
+sla\_DAFIN
+was given earlier, in section 1.2.
+
+SLALIB provides four routines for expressing an angle in radians
+in a preferred range.  The function
+sla\_RANGE
+expresses an angle
+in the range $\pm\pi$;
+sla\_RANORM
+expresses an angle in the range
+$0-2\pi$.  The functions
+sla\_DRANGE
+and
+sla\_DRANRM
+are double precision versions.
+
+Several routines
+(sla\_CTF2D,
+sla\_CR2AF
+{\it etc.}) are provided to convert
+angles to and from
+sexagesimal form (hours, minute, seconds or degrees,
+arcminutes and arcseconds).
+They avoid the common
+``converting from integer to real at the wrong time''
+bug, which produces angles like \hms{24}{59}{59}{999}.
+Here is a program which displays an hour angle
+stored in radians:
+\goodbreak
+\begin{verbatim}
+            DOUBLE PRECISION HA
+            CHARACTER SIGN
+            INTEGER IHMSF(4)
+            :
+            CALL sla_DR2TF(3,HA,SIGN,IHMSF)
+            WRITE (*,'(1X,A,3I3.2,''.'',I3.3)') SIGN,IHMSF
+\end{verbatim}
+\goodbreak
+
+\subsection {Vectors and Matrices}
+As an alternative to employing a spherical polar coordinate system,
+the direction of an object can be defined in terms of the sum of any
+three vectors as long as they are different and
+not coplanar.  In practice, three vectors at right angles are
+usually chosen, forming a system
+of {\it Cartesian coordinates}.  The {\it x}- and {\it y}-axes
+lie in the fundamental plane ({\it e.g.}\ the equator in the
+case of \radec), with the {\it x}-axis pointing to zero longitude.
+The {\it z}-axis is normal to the fundamental plane and points
+towards positive latitudes.  The {\it y}-axis can lie in either
+of the two possible directions, depending on whether the
+coordinate system is right-handed or left-handed.
+The three axes are sometimes called
+a {\it triad}.  For most applications involving arbitrarily
+distant objects such as stars, the vector which defines
+the direction concerned is constrained to have unit length.
+The {\it x}-, {\it y-} and {\it z-}components
+can be regarded as the scalar (dot) product of this vector
+onto the three axes of the triad in turn.  Because the vector
+is a unit vector,
+each of the three dot-products is simply the cosine of the angle
+between the unit vector and the axis concerned, and the
+{\it x}-, {\it y-} and {\it z-}components are sometimes
+called {\it direction cosines}.
+
+For some applications, including those involving objects
+within the Solar System, unit vectors are inappropriate, and
+it is necessary to use vectors scaled in length-units such as
+AU, km {\it etc.}
+In these cases the origin of the coordinate system may not be
+the observer, but instead might be the Sun, the Solar-System
+barycentre, the centre of the Earth {\it etc.}  But whatever the application,
+the final direction in which the observer sees the object can be
+expressed as direction cosines.
+
+But where has this got us?  Instead of two numbers -- a longitude and
+a latitude -- we now have three numbers to look after
+-- the {\it x}-, {\it y-} and
+{\it z-}components -- whose quadratic sum we have somehow to contrive to
+be unity.  And, in addition to this apparent redundancy,
+most people find it harder to visualize
+problems in terms of \xyz\ than in $[\,\theta,\phi~]$.
+Despite these objections, the vector approach turns out to have
+significant advantages over the spherical trigonometry approach:
+\begin{itemize}
+\item Vector formulae tend to be much more succinct;  one vector
+      operation is the equivalent of strings of sines and cosines.
+\item The formulae are as a rule rigorous, even at the poles.
+\item Accuracy is maintained all over the celestial sphere.
+      When one Cartesian component is nearly unity and
+      therefore insensitive to direction, the others become small
+      and therefore more precise.
+\item Formulations usually deliver the quadrant of the result
+      without the need for any inspection (except within the
+      library function ATAN2).
+\end{itemize}
+A number of important transformations in positional
+astronomy turn out to be nothing more than changes of coordinate
+system, something which is especially convenient if
+the vector approach is used.  A direction with respect
+to one triad can be expressed relative to another triad simply
+by multiplying the \xyz\ column vector by the appropriate
+$3\times3$ orthogonal matrix
+(a tensor of Rank~2, or {\it dyadic}).  The three rows of this
+{\it rotation matrix}\/
+are the vectors in the old coordinate system of the three
+new axes, and the transformation amounts to obtaining the
+dot-product of the direction-vector with each of the three
+new axes.  Precession, nutation, \hadec\ to \azel,
+\radec\ to \gal\ and so on are typical examples of the
+technique.  A useful property of the rotation matrices
+is that they can be inverted simply by taking the transpose.
+
+The elements of these vectors and matrices are assorted combinations of
+the sines and cosines of the various angles involved (hour angle,
+declination and so on, depending on which transformation is
+being applied).  If you write out the matrix multiplications
+in full you get expressions which are essentially the same as the
+equivalent spherical trigonometry formulae.  Indeed, many of the
+standard formulae of spherical trigonometry are most easily
+derived by expressing the problem initially in
+terms of vectors.
+
+\subsubsection{Using vectors}
+SLALIB provides conversions between spherical and vector
+form
+(sla\_CS2C,
+sla\_CC2S
+{\it etc.}), plus an assortment
+of standard vector and matrix operations
+(sla\_VDV,
+sla\_MXV
+{\it etc.}).
+There are also routines
+(sla\_EULER
+{\it etc.}) for creating a rotation matrix
+from three {\it Euler angles}\/ (successive rotations about
+specified Cartesian axes).  Instead of Euler angles, a rotation
+matrix can be expressed as an {\it axial vector}\/ (the pole of the rotation,
+and the amount of rotation), and routines are provided for this
+(sla\_AV2M,
+sla\_M2AV
+{\it etc.}).
+
+Here is an example where spherical coordinates {\tt P1} and {\tt Q1}
+undergo a coordinate transformation and become {\tt P2} and {\tt Q2};
+the transformation consists of a rotation of the coordinate system
+through angles {\tt A}, {\tt B} and {\tt C} about the
+{\it z}, new {\it y}\/ and new {\it z}\/ axes respectively:
+\goodbreak
+\begin{verbatim}
+            REAL A,B,C,R(3,3),P1,Q1,V1(3),V2(3),P2,Q2
+             :
+      *  Create rotation matrix
+            CALL sla_EULER('ZYZ',A,B,C,R)
+
+      *  Transform position (P1,Q1) from spherical to Cartesian
+            CALL sla_CS2C(P1,Q1,V1)
+
+      *  Apply the rotation
+            CALL sla_MXV(R,V1,V2)
+
+      *  Back to spherical
+            CALL sla_CC2S(V2,P2,Q2)
+\end{verbatim}
+\goodbreak
+Small adjustments to the direction of a position
+vector are often most conveniently described in terms of
+$[\,\Delta x,\Delta y, \Delta z\,]$.  Adding the correction
+vector needs careful handling if the position
+vector is to remain of length unity, an advisable precaution which
+ensures that
+the \xyz\ components are always available to mean the cosines of
+the angles between the vector and the axis concerned.  Two types
+of shifts are commonly used,
+the first where a small vector of arbitrary direction is
+added to the unit vector, and the second where there is a displacement
+in the latitude coordinate (declination, elevation {\it etc.}) alone.
+
+For a shift produced by adding a small \xyz\ vector ${\bf d}$ to a
+unit vector ${\bf v}_1$, the resulting vector ${\bf v}_2$ has direction
+$<{\bf v}_1+{\bf d}>$ but is no longer of unit length.  A better approximation
+is available if the result is multiplied by a scaling factor of
+$(1-{\bf d}\cdot{\bf v}_1)$, where the dot
+means scalar product.  In Fortran:
+\goodbreak
+\begin{verbatim}
+            F = (1D0-(DX*V1X+DY*V1Y+DZ*V1Z))
+            V2X = F*(V1X+DX)
+            V2Y = F*(V1Y+DY)
+            V2Z = F*(V1Z+DZ)
+\end{verbatim}
+\goodbreak
+\noindent
+The correction for diurnal aberration (discussed later) is
+an example of this form of shift.
+
+As an example of the second kind of displacement
+we will apply a small change in elevation $\delta E$ to an
+\azel\ direction vector.  The direction of the
+result can be obtained by making the allowable approximation
+${\tan \delta E\approx\delta E}$ and adding a adjustment
+vector of length $\delta E$ normal
+to the direction vector in the vertical plane containing the direction
+vector.  The $z$-component of the adjustment vector is
+$\delta E \cos E$,
+and the horizontal component is
+$\delta E \sin E$ which has then to be
+resolved into $x$ and $y$ in proportion to their current sizes. To
+approximate a unit vector more closely, a correction factor of
+$\cos \delta E$ can then be applied, which is nearly
+$(1-\delta E^2 /2)$ for
+small $\delta E$.  Expressed in Fortran, for initial vector
+{\tt V1X,V1Y,V1Z}, change in elevation {\tt DEL}
+(+ve $\equiv$ upwards), and result
+vector {\tt V2X,V2Y,V2Z}:
+\goodbreak
+\begin{verbatim}
+            COSDEL = 1D0-DEL*DEL/2D0
+            R1 = SQRT(V1X*V1X+V1Y*V1Y)
+            F = COSDEL*(R1-DEL*V1Z)/R1
+            V2X = F*V1X
+            V2Y = F*V1Y
+            V2Z = COSDEL*(V1Z+DEL*R1)
+\end{verbatim}
+\goodbreak
+An example of this type of shift is the correction for atmospheric
+refraction (see later).
+Depending on the relationship between $\delta E$ and $E$, special
+handling at the pole (the zenith for our example) may be required.
+
+SLALIB includes routines for the case where both a position
+and a velocity are involved.  The routines
+sla\_CS2C6
+and
+sla\_CC62S
+convert from $[\theta,\phi,\dot{\theta},\dot{\phi}]$
+to \xyzxyzd\ and back;
+sla\_DS2C6
+and
+sla\_DC62S
+are double precision equivalents.
+
+\subsection {Celestial Coordinate Systems}
+SLALIB has routines to perform transformations
+of celestial positions between different spherical
+coordinate systems, including those shown in the following table:
+
+\begin{center}
+\begin{tabular}{|l|c|c|c|c|c|c|} \hline
+{\it system} & {\it symbols} & {\it longitude} & {\it latitude} &
+          {\it x-y plane} & {\it long.\ zero} & {\it RH/LH}
+\\ \hline \hline
+horizon & -- & azimuth & elevation & horizontal & north & L
+\\ \hline
+equatorial & $\alpha,\delta$ & R.A.\ & Dec.\ & equator & equinox & R
+\\ \hline
+local equ.\ & $h,\delta$ & H.A.\ & Dec.\ & equator & meridian & L
+\\ \hline
+ecliptic & $\lambda,\beta$ & ecl.\ long.\ & ecl.\ lat.\ &
+                                       ecliptic & equinox & R
+\\ \hline
+galactic & $l^{I\!I},b^{I\!I}$ & gal.\ long.\ & gal.\ lat.\ &
+                                       gal.\ equator & gal.\ centre & R
+\\ \hline
+supergalactic & SGL,SGB & SG long.\ & SG lat.\ &
+                                       SG equator & node w.\ gal.\ equ.\ & R
+\\ \hline
+\end{tabular}
+\end{center}
+Transformations between \hadec\ and \azel\ can be performed by
+calling
+sla\_E2H
+and
+sla\_H2E,
+or, in double precision,
+sla\_DE2H
+and
+sla\_DH2E.
+There is also a routine for obtaining
+zenith distance alone for a given \hadec,
+sla\_ZD,
+and one for determining the parallactic angle,
+sla\_PA.
+Three routines are included which relate to altazimuth telescope
+mountings.  For a given \hadec\ and latitude,
+sla\_ALTAZ
+returns the azimuth, elevation and parallactic angle, plus
+velocities and accelerations for sidereal tracking.
+The routines
+sla\_PDA2H
+and
+sla\_PDQ2H
+predict at what hour angle a given azimuth or
+parallactic angle will be reached.
+
+The routines
+sla\_EQECL
+and
+sla\_ECLEQ
+transform between ecliptic
+coordinates and \radec\/; there is also a routine for generating the
+equatorial to ecliptic rotation matrix for a given date:
+sla\_ECMAT.
+
+For conversion between Galactic coordinates and \radec\ there are
+two sets of routines, depending on whether the \radec\ is
+old-style, B1950, or new-style, J2000;
+sla\_EG50
+and
+sla\_GE50
+are \radec\ to \gal\ and {\it vice versa}\/ for the B1950 case, while
+sla\_EQGAL
+and
+sla\_GALEQ
+are the J2000 equivalents.
+
+Finally, the routines
+sla\_GALSUP
+and
+sla\_SUPGAL
+transform \gal\ to de~Vaucouleurs supergalactic longitude and latitude
+and {\it vice versa.}
+
+It should be appreciated that the table, above, constitutes
+a gross oversimplification.   Apparently
+simple concepts such as equator, equinox {\it etc.}\ are apt to be very hard to
+pin down precisely (polar motion, orbital perturbations \ldots) and
+some have several interpretations, all subtly different.  The various
+frames move in complicated ways with respect to one another or to
+the stars (themselves in motion).  And in some instances the
+coordinate system is slightly distorted, so that the
+ordinary rules of spherical trigonometry no longer strictly apply.
+
+These {\it caveats}\/
+apply particularly to the bewildering variety of different
+\radec\ systems that are in use.  Figure~1 shows how
+some of these systems are related, to one another and
+to the direction in which a celestial source actually
+appears in the sky.  At the top of the diagram are
+the various sorts of {\it mean place}\/
+found in star catalogues and papers;\footnote{One frame not included in
+Figure~1 is that of the Hipparcos catalogue.  This is currently the
+best available implementation in the optical of the {\it International
+Celestial Reference System}\/ (ICRS), which is based on extragalactic
+radio sources observed by VLBI.  The distinction between FK5 J2000
+and Hipparcos coordinates only becomes important when accuracies of
+50~mas or better are required.  More details are given in
+Section~4.14.} at the bottom is the
+{\it observed}\/ \azel, where a perfect theodolite would
+be pointed to see the source;  and in the body of
+the diagram are
+the intermediate processing steps and coordinate
+systems.  To help
+understand this diagram, and the SLALIB routines that can
+be used to carry out the various calculations, we will look at the coordinate
+systems involved, and the astronomical phenomena that
+affect them.
+
+\begin{figure}
+\begin{center}
+\begin{tabular}{|cccccc|}   \hline
+& & & & & \\
+\hspace{5em} & \hspace{5em} & \hspace{5em} &
+   \hspace{5em} & \hspace{5em} & \hspace{5em}  \\
+\multicolumn{2}{|c}{\hspace{0em}\fbox{\parbox{8.5em}{\center \vspace{-2ex}
+                                                   mean \radec, FK4, \\
+                                                   any equinox
+                                                   \vspace{0.5ex}}}} &
+ \multicolumn{2}{c}{\hspace{0em}\fbox{\parbox{8.5em}{\center \vspace{-2ex}
+                                                   mean \radec, FK4,
+                                                   no $\mu$, any equinox
+                                                   \vspace{0.5ex}}}} &
+\multicolumn{2}{c|}{\hspace{0em}\fbox{\parbox{8.5em}{\center \vspace{-2ex}
+                                                   mean \radec, FK5, \\
+                                                   any equinox
+                                                   \vspace{0.5ex}}}} \\
+& \multicolumn{2}{|c|}{} & \multicolumn{2}{c|}{} & \\
+\multicolumn{2}{|c}{space motion} & \multicolumn{1}{c|}{} & &
+   \multicolumn{2}{c|}{space motion} \\
+\multicolumn{2}{|c}{-- E-terms} &
+   \multicolumn{2}{c}{-- E-terms} & \multicolumn{1}{c|}{} & \\
+\multicolumn{2}{|c}{precess to B1950} & \multicolumn{2}{c}{precess to B1950} &
+   \multicolumn{2}{c|}{precess to J2000} \\
+\multicolumn{2}{|c}{+ E-terms} &
+   \multicolumn{2}{c}{+ E-terms} & \multicolumn{1}{c|}{} & \\
+\multicolumn{2}{|c}{FK4 to FK5, no $\mu$} &
+   \multicolumn{2}{c}{FK4 to FK5, no $\mu$} & \multicolumn{1}{c|}{} & \\
+\multicolumn{2}{|c}{parallax} & \multicolumn{1}{c|}{} & &
+   \multicolumn{2}{c|}{parallax} \\
+& \multicolumn{2}{|c|}{} & \multicolumn{2}{c|}{} & \\ \cline{2-5}
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\fbox{\parbox{18em}{\center \vspace{-2ex}
+                                   FK5, J2000, current epoch, geocentric
+                                          \vspace{0.5ex}}}} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{light deflection} & \\
+& \multicolumn{4}{c}{annual aberration} & \\
+& \multicolumn{4}{c}{precession-nutation} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\fbox{Apparent \radec}} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{Earth rotation} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\fbox{Apparent \hadec}} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{diurnal aberration} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\fbox{Topocentric \hadec}} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\hadec\ to \azel} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\fbox{Topocentric \azel}} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{refraction} & \\
+\multicolumn{3}{|c|}{} & & & \\
+& \multicolumn{4}{c}{\fbox{Observed \azel}} & \\
+& & & & & \\
+& & & & & \\ \hline
+\end{tabular}
+\end{center}
+\vspace{-0.5ex}
+\caption{\bf Relationship Between Celestial Coordinates}
+
+Star positions are published or catalogued using
+one of the mean \radec\ systems shown at
+the top.  The ``FK4'' systems
+were used before about 1980 and are usually
+equinox B1950.  The ``FK5'' system, equinox J2000, is now preferred,
+or rather its modern equivalent, the International Celestial Reference
+Frame (in the optical, the Hipparcos catalogue).
+The figure relates a star's mean \radec\ to the actual
+line-of-sight to the star.
+Note that for the conventional choices of equinox, namely
+B1950 or J2000, all of the precession and E-terms corrections
+are superfluous.
+\end{figure}
+
+\subsection{Precession and Nutation}
+{\it Right ascension and declination}, (\radec), are the names
+of the longitude and latitude in a spherical
+polar coordinate system based on the Earth's axis of rotation.
+The zero point of $\alpha$ is the point of intersection of
+the {\it celestial
+equator}\/ and the {\it ecliptic}\/ (the apparent path of the Sun
+through the year) where the Sun moves into the northern
+hemisphere.  This point is called the
+{\it first point of Aries},
+the {\it vernal equinox}\/ (with apologies to
+southern-hemisphere readers) or simply the {\it equinox}.\footnote{With
+the introduction of the International Celestial Reference System (ICRS), the
+connection between (i)~star coordinates and (ii)~the Earth's orientation
+and orbit has been broken.  However, the orientation of the
+International Celestial Reference Frame (ICRF) axes was, for convenience,
+chosen to match J2000 FK5, and for most practical purposes ICRF coordinates
+(for example entries in the Hipparcos catalogue) can be regarded as
+synonymous with J2000 FK5.  See Section 4.14 for further details.}
+
+This simple picture is unfortunately
+complicated by the difficulty of defining
+a suitable equator and equinox.  One problem is that the
+Sun's apparent diurnal and annual
+motions are not completely regular, due to the
+ellipticity of the Earth's orbit and its continuous disturbance
+by the Moon and planets.  This is dealt with by
+separating the motion into (i)~a smooth and steady {\it mean Sun}\/
+and (ii)~a set of periodic corrections and perturbations; only the former
+is involved in establishing reference systems and time scales.
+A second, far larger problem, is that
+the celestial equator and the ecliptic
+are both moving with respect to the stars.
+These motions arise because of the gravitational
+interactions between the Earth and the other solar-system bodies.
+
+By far the largest effect is the
+so-called ``precession of the equinoxes'', where the Earth's
+rotation axis sweeps out a cone centred on the ecliptic
+pole, completing one revolution in about 26,000 years.  The
+cause of the motion is the torque exerted on the distorted and
+spinning Earth by the Sun and the Moon.  Consider the effect of the
+Sun alone, at or near the northern summer solstice.  The Sun
+`sees' the top (north pole) of the Earth tilted towards it
+(by about \degree{23}{5}, the {\it obliquity of the
+ecliptic}\/),
+and sees the nearer part of the Earth's equatorial bulge
+below centre and the further part above centre.
+Although the Earth is in free fall,
+the gravitational force on the nearer part of the
+equatorial bulge is greater than that on the further part, and
+so there is a net torque acting
+as if to eliminate the tilt.  Six months later the same thing
+is happening in reverse, except that the torque is still
+trying to eliminate the tilt.  In between (at the equinoxes) the
+torque shrinks to zero.  A torque acting on a spinning body
+is gyroscopically translated
+into a precessional motion of the spin axis at right-angles to the torque,
+and this happens to the Earth.
+The motion varies during the
+year, going through two maxima, but always acts in the
+same direction.  The Moon produces the same effect,
+adding a contribution to the precession which peaks twice
+per month.  The Moon's proximity to the Earth more than compensates
+for its smaller mass and gravitational attraction, so that it
+in fact contributes most of the precessional effect.
+
+The complex interactions between the three bodies produce a
+precessional motion that is wobbly rather than completely smooth.
+However, the main 26,000-year component is on such a grand scale that
+it dwarfs the remaining terms, the biggest of
+which has an amplitude of only \arcseci{11} and a period of
+about 18.6~years.  This difference of scale makes it convenient to treat
+these two components of the motion separately.  The main 26,000-year
+effect is called {\it luni-solar precession};  the smaller,
+faster, periodic terms are called the {\it nutation}.
+
+Note that precession and nutation are simply
+different frequency components of the same physical effect.  It is
+a common misconception that precession is caused
+by the Sun and nutation is caused by the Moon.  In fact
+the Moon is responsible for two-thirds of the precession, and,
+while it is true that much of the complex detail of the nutation is
+a reflection of the intricacies of the lunar orbit, there are
+nonetheless important solar terms in the nutation.
+
+In addition to and quite separate
+from the precession-nutation effect, the orbit of the Earth-Moon system
+is not fixed in orientation, a result of the attractions of the
+planets.  This slow (about \arcsec{0}{5}~per~year)
+secular rotation of the ecliptic about a slowly-moving diameter is called,
+confusingly, {\it planetary
+precession}\/ and, along with the luni-solar precession is
+included in the {\it general precession}.  The equator and
+ecliptic as affected by general precession
+are what define the various ``mean'' \radec\ reference frames.
+
+The models for precession and nutation come from a combination
+of observation and theory, and are subject to continuous
+refinement.  Nutation models in particular have reached a high
+degree of sophistication, taking into account such things as
+the non-rigidity of the Earth and the effects of
+the planets; SLALIB's nutation
+model (SF2001) involves 194 terms in each of $\psi$ (longitude)
+and $\epsilon$ (obliquity), some as small as a few microarcseconds.
+
+\subsubsection{SLALIB support for precession and nutation}
+SLALIB offers a choice of three precession models:
+\begin{itemize}
+\item The old Bessel-Newcomb, pre IAU~1976, ``FK4'' model, used for B1950
+      star positions and other pre-1984.0 purposes
+(sla\_PREBN).
+\item The new Fricke, IAU~1976, ``FK5'' model, used for J2000 star
+      positions and other post-1984.0 purposes
+(sla\_PREC).
+\item A model published by Simon {\it et al.}\ which is more accurate than
+      the IAU~1976 model and which is suitable for long
+      periods of time
+(sla\_PRECL).
+\end{itemize}
+In each case, the named SLALIB routine generates the $(3\times3)$
+{\it precession
+matrix}\/ for a given start and finish time.  For example,
+here is the Fortran code for generating the rotation
+matrix which describes the precession between the epochs
+J2000 and J1985.372 (IAU 1976 model):
+\goodbreak
+\begin{verbatim}
+            DOUBLE PRECISION PMAT(3,3)
+             :
+            CALL sla_PREC(2000D0,1985.372D0,PMAT)
+\end{verbatim}
+\goodbreak
+It is instructive to examine the resulting matrix:
+\goodbreak
+\begin{verbatim}
+            +0.9999936402  +0.0032709208  +0.0014214694
+            -0.0032709208  +0.9999946505  -0.0000023247
+            -0.0014214694  -0.0000023248  +0.9999989897
+\end{verbatim}
+\goodbreak
+Note that the diagonal elements are close to unity, and the
+other elements are small.  This shows that over an interval as
+short as 15~years the precession isn't going to move a
+position vector very far (in this case about \degree{0}{2}).
+
+For convenience, a direct \radec\ to \radec\ precession routine is
+also provided
+(sla\_PRECES),
+suitable for either the old or the new system (but not a
+mixture of the two).
+
+SLALIB provides two nutation models, the old IAU~1980 model,
+implemented in the routine
+slaNutc80, and a much more accurate newer theory, SF2001,
+implemented in the routine
+slaNutc.
+Both return the components of nutation
+in longitude and latitude (and also provide the obliquity) from
+which a nutation matrix can be generated by calling
+slaDeuler
+(and from which the {\it equation of the equinoxes}, described
+later, can be found).  Alternatively,
+the SF2001 nutation matrix can be generated in a single call by using
+slaNut.  The SF2001 nutation theory includes components that correct
+for errors in the IAU~1976 precession and also for the
+$\sim 23\,$mas
+displacement between the mean J2000 and ICRS coordinate systems,
+achieving a final accuracy well under 1\,mas in the present era.
+
+A rotation matrix for applying the entire precession-nutation
+transformation in one go can be generated by calling
+sla\_PRENUT.
+
+\subsection{Mean Places}
+From a classical standpoint,
+the main effect of the precession-nutation is an increase of about
+\arcseci{50}/year in the ecliptic longitudes of the stars.  It is therefore
+essential, when reporting the position of an astronomical target, to
+qualify the coordinates with a date, or {\it epoch}.
+Specifying the epoch ties down the equator and
+equinox which define the \radec\ coordinate system that is
+being used.
+\footnote{An equinox is, however, not required for coordinates
+in the International Celestial Reference System.  Such coordinates must
+be labelled simply ``ICRS'', or the specific catalogue can be mentioned,
+such as ``Hipparcos'';  constructions such as ``Hipparcos, J2000'' are
+redundant and misleading.}  For simplicity, only
+the smooth and steady ``precession'' part of the
+complete precession-nutation effect is
+included, thereby defining what is called the {\it mean}\/
+equator and equinox for the epoch concerned.  We say a star
+has a mean place of (for example)
+\hms{12}{07}{58}{09}~\dms{-19}{44}{37}{1} ``with respect to the mean equator
+and equinox of epoch J2000''.  The short way of saying
+this is ``\radec\ equinox J2000'' ({\bf not} ``\radec\ epoch J2000'',
+which means something different to do with
+proper motion).
+
+\subsection{Epoch}
+The word ``epoch'' just means a significant
+moment in time, and can be supplied
+in a variety of forms, using different calendar systems and time scales.
+
+For the purpose of specifying the epochs associated with the
+mean place of a star, two conventions exist.  Both sorts of epoch
+superficially resemble years AD but are not tied to the civil
+(Gregorian) calendar;  to distinguish them from ordinary calendar-years
+there is often
+a ``.0'' suffix (as in ``1950.0''), although any other fractional
+part is perfectly legal ({\it e.g.}\ 1987.5).
+
+The older system,
+{\it Besselian epoch}, is defined in such a way that its units are
+tropical years of about 365.2422~days and its time scale is the
+obsolete {\it Ephemeris Time}.
+The start of the Besselian year is the moment
+when the ecliptic longitude of the mean Sun is
+$280^{\circ}$;  this happens near the start of the
+calendar year (which is why $280^{\circ}$ was chosen).
+
+The new system, {\it Julian epoch}, was adopted as
+part of the IAU~1976 revisions (about which more will be said
+in due course) and came formally into use at the
+beginning of 1984.  It uses the Julian year of exactly
+365.25~days; Julian epoch 2000 is defined to be 2000~January~1.5 in the
+TT time scale.
+
+For specifying mean places, various standard epochs are in use, the
+most common ones being Besselian epoch 1950.0 and Julian epoch 2000.0.
+To distinguish the two systems, Besselian epochs
+are now prefixed ``B'' and Julian epochs are prefixed ``J''.
+Epochs without an initial letter can be assumed to be Besselian
+if before 1984.0, otherwise Julian.  These details are supported by
+the SLALIB routines
+sla\_DBJIN
+(decodes numbers from a
+character string, accepting an optional leading B or J),
+sla\_KBJ
+(decides whether B or J depending on prefix or range) and
+sla\_EPCO
+(converts one epoch to match another).
+
+SLALIB has four routines for converting
+Besselian and Julian epochs into other forms.
+The functions
+sla\_EPB2D
+and
+sla\_EPJ2D
+convert Besselian and Julian epochs into MJD; the functions
+sla\_EPB
+and
+sla\_EPJ
+do the reverse.  For example, to express B1950 as a Julian epoch:
+\goodbreak
+\begin{verbatim}
+            DOUBLE PRECISION sla_EPJ,sla_EPB2D
+             :
+            WRITE (*,'(1X,''J'',F10.5)') sla_EPJ(sla_EPB2D(1950D0))
+\end{verbatim}
+\goodbreak
+(The answer is J1949.99979.)
+
+\subsection{Proper Motion}
+Stars in catalogues usually have, in addition to the
+\radec\  coordinates, a {\it proper motion} $[\mu_\alpha,\mu_\delta]$.
+This is an intrinsic motion
+of the star across the background.  Very few stars have a
+proper motion which exceeds \arcseci{1}/year, and most are
+far below this level.  A star observed as part of normal
+astronomy research will, as a rule, have a proper motion
+which is unknown.
+
+Mean \radec\ and rate of change are not sufficient to pin
+down a star;  the epoch at which the \radec\ was or will
+be correct is also needed.  Note the distinction
+between the epoch which specifies the
+coordinate system and the epoch at which the star passed
+through the given \radec.  The full specification for a star
+is \radec, proper motions, equinox and epoch (plus something to
+identify which set of models for the precession {\it etc.}\ is
+being used -- see the next section).
+For convenience, coordinates given in star catalogues are almost
+always adjusted to make the equinox and epoch the same -- for
+example B1950 in the case of the SAO~catalogue.
+
+SLALIB provides one routine to handle proper motion on its own,
+sla\_PM.
+Proper motion is also allowed for in various other
+routines as appropriate, for example
+sla\_MAP
+and
+sla\_FK425.
+Note that in all SLALIB routines which involve proper motion
+the units are radians per year and the
+$\alpha$ component is in the form $\dot{\alpha}$ ({\it i.e.}\ big
+numbers near the poles).
+Some star catalogues have proper motion per century, and
+in some catalogues the $\alpha$ component is in the form
+$\dot{\alpha}\cos\delta$ ({\it i.e.}\ angle on the sky).
+
+\subsection{Parallax and Radial Velocity}
+For the utmost accuracy and the nearest stars, allowance can
+be made for {\it annual parallax}\/ and for the effects of perspective
+on the proper motion.
+
+Parallax is appreciable only for nearby stars;  even
+the nearest, Proxima Centauri, is displaced from its average
+position by less than
+an arcsecond as the Earth revolves in its orbit.
+
+For stars with a known parallax, knowledge of the radial velocity
+allows the proper motion to be expressed as an actual space
+motion in 3~dimensions.  The proper motion is,
+in fact, a snapshot of the transverse component of the
+space motion, and in the case of nearby stars will
+change with time due to perspective.
+
+SLALIB does not provide facilities for handling parallax
+and radial-velocity on their own, but their contribution is
+allowed for in such routines as
+sla\_PM,
+sla\_MAP
+and
+sla\_FK425.
+Catalogue mean
+places do not include the effects of parallax and are therefore
+{\it barycentric};  when pointing telescopes {\it etc.}\ it is
+usually most efficient to apply the slowly-changing
+parallax correction to the mean place of the target early on
+and to work with the {\it geocentric}\/ mean place.  This latter
+approach is implied in Figure~1.
+
+\subsection{Aberration}
+The finite speed of light combined with the motion of the observer
+around the Sun during the year causes apparent displacements of
+the positions of the stars.  The effect is called
+the {\it annual aberration} (or ``stellar''
+aberration).  Its maximum size, about \arcsec{20}{5},
+occurs for stars $90^{\circ}$ from the point towards which
+the Earth is headed as it orbits the Sun;  a star exactly in line with
+the Earth's motion is not displaced.  To receive the light of
+a star, the telescope has to be offset slightly in the direction of
+the Earth's motion.  A familiar analogy is the need to tilt your
+umbrella forward when on the move, to avoid getting wet.  This
+classical model is,
+in fact, misleading in the context of light as opposed
+to rain, but happens to give the same answer as a relativistic
+treatment to first order (better than 1~milliarcsecond).
+
+Before the IAU 1976 resolutions, different
+values for the approximately
+\arcsec{20}{5} {\it aberration constant}\/ were employed
+at different times, and this can complicate comparisons
+between different catalogues.  Another complication comes from
+the so-called {\it E-terms of aberration},
+that small part of the annual aberration correction that is a
+function of the eccentricity of the Earth's orbit.  The E-terms,
+maximum amplitude about \arcsec{0}{3},
+happen to be approximately constant for a given star, and so they
+used to be incorporated in the catalogue \radec\/
+to reduce the labour of converting to and from apparent place.
+The E-terms can be removed from a catalogue \radec\/ by
+calling
+sla\_SUBET
+or applied (for example to allow a pulsar
+timing-position to be plotted on a B1950 finding chart)
+by calling
+sla\_ADDET;
+the E-terms vector itself can be obtained by calling
+sla\_ETRMS.
+Star positions post IAU 1976 are free of these distortions, and to
+apply corrections for annual aberration involves the actual
+barycentric velocity of the Earth rather than the use of
+canonical circular-orbit models.
+
+The annual aberration is the aberration correction for
+an imaginary observer at the Earth's centre.
+The motion of a real observer around the Earth's rotation axis in
+the course of the day makes a small extra contribution to the total
+aberration effect called the {\it diurnal aberration}.  Its
+maximum amplitude is about \arcsec{0}{3}.
+
+No SLALIB routine is provided for calculating the aberration on
+its own, though the required velocity vectors can be
+generated using
+sla\_EVP (or
+sla\_EPV)
+and
+sla\_GEOC.
+Annual and diurnal aberration are allowed for where required, for example in
+sla\_MAP
+{\it etc}.\ and
+sla\_AOP
+{\it etc}.  Note that this sort
+of aberration is different from the {\it planetary
+aberration}, which is the apparent displacement of a solar-system
+body, with respect to the ephemeris position, as a consequence
+of the motion of {\it both}\/ the Earth and the source.  The
+planetary aberration can be computed either by correcting the
+position of the solar-system body for light-time, followed by
+the ordinary stellar aberration correction, or more
+directly by expressing the position and velocity of the source
+in the observer's frame and correcting for light-time alone.
+
+\subsection{Different Sorts of Mean Place}
+A confusing aspect of the mean places used in the
+pre-ICRS era is that they
+are sensitive to the precise way they were determined.  A mean
+place is not directly observable, even with fundamental
+instruments such as transit circles, and to produce one
+will involve relying on some existing star catalogue,
+for example the fundamental catalogues FK4 and FK5,
+and applying given mathematical models of precession, nutation,
+aberration and so on.
+Note in particular that no star catalogue,
+even a fundamental catalogue such as FK4 or
+FK5, defines a coordinate system, strictly speaking;
+it is merely a list of star positions and proper motions.
+However, once the stars from a given catalogue
+are used as position calibrators, {\it e.g.}\ for
+transit-circle observations or for plate reductions, then a
+broader sense of there being a coordinate grid naturally
+arises, and such phrases as ``in the system of
+the FK4'' can legitimately be employed.  However,
+there is no formal link between the
+two concepts -- no ``standard least squares fit'' between
+reality and the inevitably flawed catalogues.
+All such
+catalogues suffer at some level from systematic, zonal distortions
+of both the star positions and of the proper motions,
+and include measurement errors peculiar to individual
+stars.
+
+Many of these complications are of little significance except to
+specialists.  However, observational astronomers cannot
+escape exposure to at least the two main varieties of
+mean place, loosely called
+FK4 and FK5, and should be aware of
+certain pitfalls.  For most practical purposes the more recent
+system, FK5, is free of surprises and tolerates naive
+use well.  FK4, in contrast, contains two important traps:
+\begin{itemize}
+\item The FK4 system rotates at about
+      \arcsec{0}{5} per century relative to distant galaxies.
+      This is manifested as a systematic distortion in the
+      proper motions of all FK4-derived catalogues, which will
+      in turn pollute any astrometry done using those catalogues.
+      For example, FK4-based astrometry of a QSO using plates
+      taken decades apart will reveal a non-zero {\it fictitious proper
+      motion}, and any FK4 star which happens to have zero proper
+      motion is, in fact, slowly moving against the distant
+      background.  The FK4 frame rotates because it was
+      established before the nature of the Milky Way, and hence the
+      existence of systematic motions of nearby stars, had been
+      recognized.
+\item Star positions in the FK4 system are part-corrected for
+      annual aberration (see above) and embody the so-called
+      E-terms of aberration.
+\end{itemize}
+The change from the old FK4-based system to FK5
+occurred at the beginning
+of 1984 as part of a package of resolutions made by the IAU in 1976,
+along with the adoption of J2000 as the reference epoch.  Star
+positions in the newer, FK5, system are free from the E-terms, and
+the system is a much better approximation to an
+inertial frame -- about five times better (and ICRS is hundreds
+of times better still).
+
+It may occasionally be convenient to specify the FK4 fictitious proper
+motion directly.  In FK4, the centennial proper motion of (for example)
+a QSO is:
+
+$\mu_\alpha=-$\tsec{0}{015869}$
+          +(($\tsec{0}{029032}$~\sin \alpha
+            +$\tsec{0}{000340}$~\cos \alpha ) \sin \delta
+            -$\tsec{0}{000105}$~\cos \alpha
+            -$\tsec{0}{000083}$~\sin \alpha ) \sec \delta $ \\
+$\mu_\delta\,=+$\arcsec{0}{43549}$~\cos \alpha
+              -$\arcsec{0}{00510}$~\sin \alpha +
+              ($\arcsec{0}{00158}$~\sin \alpha
+              -$\arcsec{0}{00125}$~\cos \alpha ) \sin \delta
+              -$\arcsec{0}{00066}$~\cos \delta $
+
+\subsection{Mean Place Transformations}
+Figure~1 is based upon three varieties of mean \radec\ all of which are
+of practical significance to observing astronomers in the present era:
+\begin{itemize}
+   \item Old style (FK4) with known proper motion in the FK4
+         system, and with parallax and radial velocity either
+         known or assumed zero.
+   \item Old style (FK4) with zero proper motion in FK5,
+         and with parallax and radial velocity assumed zero.
+   \item New style (FK5 or, loosely, ICRS)
+         with proper motion, parallax and
+         radial velocity either known or assumed zero.
+\end{itemize}
+The figure outlines the steps required to convert positions in
+any of these systems to a J2000 \radec\ for the current
+epoch, as might be required in a telescope-control
+program for example.
+Most of the steps can be carried out by calling a single
+SLALIB routine;  there are other SLALIB routines which
+offer set-piece end-to-end transformation routines for common cases.
+Note, however, that SLALIB does not set out to provide the capability
+for arbitrary transformations of star-catalogue data
+between all possible systems of mean \radec.
+Only in the (common) cases of FK4, equinox and epoch B1950,
+to FK5, equinox and epoch J2000, and {\it vice versa}\/ are
+proper motion, parallax and radial velocity transformed
+along with the star position itself, the
+focus of SLALIB support.
+
+As an example of using SLALIB to transform mean places, here is
+Fortran code that implements the top-left path of Figure~1.
+An FK4 \radec\ of arbitrary equinox and epoch and with
+known proper motion and
+parallax is transformed into an FK5 J2000 \radec\ for the current
+epoch.  As a test star we will use $\alpha=$\hms{16}{09}{55}{13},
+$\delta=$\dms{-75}{59}{27}{2}, equinox 1900, epoch 1963.087,
+$\mu_\alpha=$\tsec{-0}{0312}$/y$, $\mu_\delta=$\arcsec{+0}{103}$/y$,
+parallax = \arcsec{0}{062}, radial velocity = $-34.22$~km/s.  The
+date of observation is 1994.35.
+\goodbreak
+\begin{verbatim}
+            IMPLICIT NONE
+            DOUBLE PRECISION AS2R,S2R
+            PARAMETER (AS2R=4.8481368110953599D-6,S2R=7.2722052166430399D-5)
+            INTEGER J,I
+            DOUBLE PRECISION R0,D0,EQ0,EP0,PR,PD,PX,RV,EP1,R1,D1,R2,D2,R3,D3,
+           :                 R4,D4,R5,D5,R6,D6,EP1D,EP1B,W(3),EB(3),PXR,V(3)
+            DOUBLE PRECISION sla_EPB,sla_EPJ2D
+
+      *  RA, Dec etc of example star
+            CALL sla_DTF2R(16,09,55.13D0,R0,J)
+            CALL sla_DAF2R(75,59,27.2D0,D0,J)
+            D0=-D0
+            EQ0=1900D0
+            EP0=1963.087D0
+            PR=-0.0312D0*S2R
+            PD=+0.103D0*AS2R
+            PX=0.062D0
+            RV=-34.22D0
+            EP1=1994.35D0
+
+      *  Epoch of observation as MJD and Besselian epoch
+            EP1D=sla_EPJ2D(EP1)
+            EP1B=sla_EPB(EP1D)
+
+      *  Space motion to the current epoch
+            CALL sla_PM(R0,D0,PR,PD,PX,RV,EP0,EP1B,R1,D1)
+
+      *  Remove E-terms of aberration for the original equinox
+            CALL sla_SUBET(R1,D1,EQ0,R2,D2)
+
+      *  Precess to B1950
+            R3=R2
+            D3=D2
+            CALL sla_PRECES('FK4',EQ0,1950D0,R3,D3)
+
+      *  Add E-terms for the standard equinox B1950
+            CALL sla_ADDET(R3,D3,1950D0,R4,D4)
+
+      *  Transform to J2000, no proper motion
+            CALL sla_FK45Z(R4,D4,EP1B,R5,D5)
+
+      *  Parallax
+            CALL sla_EVP(sla_EPJ2D(EP1),2000D0,W,EB,W,W)
+            PXR=PX*AS2R
+            CALL sla_DCS2C(R5,D5,V)
+            DO I=1,3
+               V(I)=V(I)-PXR*EB(I)
+            END DO
+            CALL sla_DCC2S(V,R6,D6)
+             :
+\end{verbatim}
+\goodbreak
+It is interesting to look at how the \radec\ changes during the
+course of the calculation:
+\begin{tabbing}
+xxxxxxxxxxxxxx \= xxxxxxxxxxxxxxxxxxxxxxxxx \= x \= \kill
+\> {\tt 16 09 55.130 -75 59 27.20} \> \> {\it original equinox and epoch} \\
+\> {\tt 16 09 54.155 -75 59 23.98} \> \> {\it with space motion} \\
+\> {\tt 16 09 54.229 -75 59 24.18} \> \> {\it with old E-terms removed} \\
+\> {\tt 16 16 28.213 -76 06 54.57} \> \> {\it precessed to 1950.0} \\
+\> {\tt 16 16 28.138 -76 06 54.37} \> \> {\it with new E-terms} \\
+\> {\tt 16 23 07.901 -76 13 58.87} \> \> {\it J2000, current epoch} \\
+\> {\tt 16 23 07.907 -76 13 58.92} \> \> {\it including parallax}
+\end{tabbing}
+
+Other remarks about the above (unusually complicated) example:
+\begin{itemize}
+\item If the original equinox and epoch were B1950, as is quite
+      likely, then it would be unnecessary to treat space motions
+      and E-terms explicitly.  Transformation to FK5 J2000 could
+      be accomplished simply by calling
+sla\_FK425, after which
+      a call to
+sla\_PM and the parallax code would complete the
+      work.
+\item The rigorous treatment of the E-terms
+      has only a small effect on the result.  Such refinements
+      are, nevertheless, worthwhile in order to facilitate comparisons and
+      to increase the chances that star positions from different
+      suppliers are compatible.
+\item The FK4 to FK5 transformations,
+sla\_FK425
+      and
+sla\_FK45Z,
+      are not as is sometimes assumed simply 50 years of precession,
+      though this indeed accounts for most of the change.  The
+      transformations also include adjustments
+      to the equinox, a revised precession model, elimination of the
+      E-terms, a change to the proper-motion time unit and so on.
+      The reason there are two routines rather than just one
+      is that the FK4 frame rotates relative to the background, whereas
+      the FK5 frame is a much better approximation to an
+      inertial frame, and zero proper
+      motion in FK4 does not, therefore, mean zero proper motion in FK5.
+      SLALIB also provides two routines,
+sla\_FK524
+      and
+sla\_FK54Z,
+      to perform the inverse transformations.
+\item Some star catalogues (FK4 itself is one) were constructed using slightly
+      different procedures for the polar regions compared with
+      elsewhere.  SLALIB ignores this inhomogeneity and always
+      applies the standard
+      transformations, irrespective of location on the celestial sphere.
+\end{itemize}
+
+\subsection {Mean Place to Apparent Place}
+The {\it geocentric apparent place}\/ of a source, or {\it apparent place}\/
+for short,
+is the \radec\ if viewed from the centre of the Earth,
+with respect to the true equator and equinox of date.
+Transformation of an FK5 mean \radec, equinox J2000,
+current epoch, to apparent place involves the following effects:
+\goodbreak
+\begin{itemize}
+   \item Light deflection -- the gravitational lens effect of
+         the sun.
+   \item Annual aberration.
+   \item Precession-nutation.
+\end{itemize}
+The {\it light deflection}\/ is seldom significant.  Its value
+at the limb of the Sun is about
+\arcsec{1}{74};  it falls off rapidly with distance from the
+Sun and has shrunk to about
+\arcsec{0}{02} at an elongation of $20^\circ$.
+
+As already described, the {\it annual aberration}\/
+is a function of the Earth's velocity
+relative to the solar system barycentre (available through the
+SLALIB routines
+sla\_EVP and
+sla\_EPV)
+and produces shifts of up to about \arcsec{20}{5}.
+
+The {\it precession-nutation}, from J2000 to the current epoch, is
+expressed by a rotation matrix which is available through the
+SLALIB routine
+sla\_PRENUT.
+
+The whole mean-to-apparent transformation can be done using the SLALIB
+routine
+sla\_MAP.  As a demonstration, here is a program which lists the
+{\it North Polar Distance}\/ ($90^\circ-\delta$) of Polaris for
+the decade of closest approach to the Pole:
+\goodbreak
+\begin{verbatim}
+            IMPLICIT NONE
+            DOUBLE PRECISION PI,PIBY2,D2R,S2R,AS2R
+            PARAMETER (PI=3.141592653589793238462643D0)
+            PARAMETER (D2R=PI/180D0,
+           :           PIBY2=PI/2D0,
+           :           S2R=PI/(12D0*3600D0),
+           :           AS2R=PI/(180D0*3600D0))
+            DOUBLE PRECISION RM,DM,PR,PD,DATE,RA,DA
+            INTEGER J,IDS,IDE,ID,IYMDF(4),I
+
+            CALL sla_DTF2R(02,31,49.8131D0,RM,J)
+            CALL sla_DAF2R(89,15,50.661D0,DM,J)
+            PR=+21.7272D0*S2R/100D0
+            PD=-1.571D0*AS2R/100D0
+            WRITE (*,'(1X,'//
+           :            '''Polaris north polar distance (deg) 2096-2105''/)')
+            WRITE (*,'(4X,''Date'',7X''NPD''/)')
+            CALL sla_CLDJ(2096,1,1,DATE,J)
+            IDS=NINT(DATE)
+            CALL sla_CLDJ(2105,12,31,DATE,J)
+            IDE=NINT(DATE)
+            DO ID=IDS,IDE,10
+               DATE=DBLE(ID)
+               CALL sla_DJCAL(0,DATE,IYMDF,J)
+               CALL sla_MAP(RM,DM,PR,PD,0D0,0D0,2000D0,DATE,RA,DA)
+               WRITE (*,'(1X,I4,2I3.2,F9.5)') (IYMDF(I),I=1,3),(PIBY2-DA)/D2R
+            END DO
+
+            END
+\end{verbatim}
+\goodbreak
+For cases where the transformation has to be repeated for different
+times or for more than one star, the straightforward
+sla\_MAP
+approach is apt to be
+wasteful as both the Earth velocity and the
+precession-nutation matrix can be re-calculated relatively
+infrequently without ill effect.  A more efficient method is to
+perform the target-independent calculations only when necessary,
+by calling
+sla\_MAPPA,
+and then to use either
+sla\_MAPQKZ,
+when only the \radec\/ is known, or
+sla\_MAPQK,
+when full catalogue positions, including proper motion, parallax and
+radial velocity, are available.  How frequently to call
+sla\_MAPPA
+depends on the accuracy objectives;  once per
+night will deliver sub-arcsecond accuracy for example.
+
+The routines
+sla\_AMP
+and
+sla\_AMPQK
+allow the reverse transformation, from apparent to mean place.
+
+\subsection{Apparent Place to Observed Place}
+The {\it observed place}\/ of a source is its position as
+seen by a perfect theodolite at the location of the
+observer.  Transformation of an apparent \radec\ to observed
+place involves the following effects:
+\goodbreak
+\begin{itemize}
+   \item \radec\ to \hadec.
+   \item Diurnal aberration.
+   \item \hadec\ to \azel.
+   \item Refraction.
+\end{itemize}
+The transformation from apparent \radec\ to
+apparent \hadec\ is made by allowing for
+{\it Earth rotation}\/ through the {\it sidereal time}, $\theta$:
+\[ h = \theta - \alpha \]
+For this equation to work, $\alpha$ must be the apparent right
+ascension for the time of observation, and $\theta$ must be
+the {\it local apparent sidereal time}.  The latter is obtained
+as follows:
+\begin{enumerate}
+\item from civil time obtain the coordinated universal time, UTC
+      (more later on this);
+\item add the UT1$-$UTC (typically a few tenths of a second) to
+      give the UT;
+\item from the UT compute the Greenwich mean sidereal time (using
+sla\_GMST);
+\item add the observer's (east) longitude, giving the local mean
+      sidereal time;
+\item add the equation of the equinoxes (using
+sla\_EQEQX).
+\end{enumerate}
+The {\it equation of the equinoxes}\/~($=\Delta\psi\cos\epsilon$ plus
+small terms)
+is the effect of nutation on the sidereal time.
+Its value is typically a second or less.  It is
+interesting to note that if the object of the exercise is to
+transform a mean place all the way into an observed place (very
+often the case),
+then the equation of the
+equinoxes and the longitude component of nutation can both be
+omitted, removing a great deal of computation.  However, SLALIB
+follows the normal convention and  works {\it via}\/ the apparent place.
+
+Note that for very precise work the observer's longitude should
+be corrected for {\it polar motion}.  This can be done with
+sla\_POLMO.
+The corrections are always less than about \arcsec{0}{3}, and
+are futile unless the position of the observer's telescope is known
+to better than a few metres.
+
+Tables of observed and
+predicted UT1$-$UTC corrections and polar motion data
+are published every few weeks by the International Earth Rotation Service.
+
+The transformation from apparent \hadec\ to {\it topocentric}\/
+\hadec\ consists of allowing for
+{\it diurnal aberration}.  This effect, maximum amplitude \arcsec{0}{2},
+was described earlier.  There is no specific SLALIB routine
+for computing the diurnal aberration,
+though the routines
+sla\_AOP {\it etc.}\
+include it, and the required velocity vector can be
+determined by calling
+sla\_GEOC.
+
+The next stage is the major coordinate rotation from local equatorial
+coordinates \hadec\ into horizon coordinates.  The SLALIB routines
+sla\_E2H
+{\it etc.}\ can be used for this.  For high-precision
+applications the mean geodetic latitude should be corrected for polar
+motion.
+
+\subsubsection{Refraction}
+The final correction is for atmospheric refraction.
+This effect, which depends on local meteorological conditions and
+the effective colour of the source/detector combination,
+increases the observed elevation of the source by a
+significant effect even at moderate zenith distances, and near the
+horizon by over \degree{0}{5}.  The amount of refraction can by
+computed by calling the SLALIB routine
+sla\_REFRO;
+however,
+this requires as input the observed zenith distance, which is what
+we are trying to predict.  For high precision it is
+therefore necessary to iterate, using the topocentric
+zenith distance as the initial estimate of the
+observed zenith distance.
+
+The full
+sla\_REFRO refraction calculation is onerous, and for
+zenith distances of less than, say, $75^{\circ}$ the following
+model can be used instead:
+
+\[ \zeta _{vac} \approx \zeta _{obs}
+                     + A \tan \zeta _{obs}
+                     + B \tan ^{3}\zeta _{obs} \]
+where $\zeta _{vac}$ is the topocentric
+zenith distance (i.e.\ {\it in vacuo}),
+$\zeta _{obs}$ is the observed
+zenith distance (i.e.\ affected by refraction), and $A$ and $B$ are
+constants, about \arcseci{60}
+and \arcsec{-0}{06} respectively for a sea-level site.
+The two constants can be calculated for a given set of conditions
+by calling either
+sla\_REFCO or
+sla\_REFCOQ.
+
+sla\_REFCO works by calling
+sla\_REFRO for two zenith distances and fitting $A$ and $B$
+to match.  The calculation is onerous, but delivers accurate
+results whatever the conditions.
+sla\_REFCOQ uses a direct formulation of $A$ and $B$ and
+is much faster;  it is slightly less accurate than
+sla\_REFCO but more than adequate for most practical purposes.
+
+Like the full refraction model, the two-term formulation works in the wrong
+direction for our purposes, predicting
+the {\it in vacuo}\/ (topocentric) zenith distance
+given the refracted (observed) zenith distance,
+rather than {\it vice versa}.  The obvious approach of
+interchanging $\zeta _{vac}$ and $\zeta _{obs}$ and
+reversing the signs, though approximately
+correct, gives avoidable errors which are just significant in
+some applications;  for
+example about \arcsec{0}{2} at $70^\circ$ zenith distance.  A
+much better result can easily be obtained, by using one Newton-Raphson
+iteration as follows:
+
+\[ \zeta _{obs} \approx \zeta _{vac}
+    - \frac{A \tan \zeta _{vac} + B \tan ^{3}\zeta _{vac}}
+    {1 + ( A + 3 B \tan ^{2}\zeta _{vac} ) \sec ^{2}\zeta _{vac}}\]
+
+The effect of refraction can be applied to an unrefracted
+zenith distance by calling
+sla\_REFZ or to an unrefracted
+\xyz\ by calling
+sla\_REFV.
+Over most of the sky these two routines deliver almost identical
+results, but beyond $\zeta=83^\circ$
+sla\_REFV
+becomes unacceptably inaccurate while
+sla\_REFZ
+remains usable.  (However
+sla\_REFV
+is significantly faster, which may be important in some applications.)
+SLALIB also provides a routine for computing the airmass, the function
+sla\_AIRMAS.
+
+The refraction ``constants'' returned by
+sla\_REFCO and
+sla\_REFCOQ
+are slightly affected by colour, especially at the blue end
+of the spectrum.  Where values for more than one
+wavelength are needed, rather than calling
+sla\_REFCO
+several times it is more efficient to call
+sla\_REFCO
+just once, for a selected ``base'' wavelength, and then to call
+sla\_ATMDSP
+once for each wavelength of interest.
+
+All the SLALIB refraction routines work for radio wavelengths as well
+as the optical/IR band.  The radio refraction is very dependent on
+humidity, and an accurate value must be supplied.  There is no
+wavelength dependence, however.  The choice of optical/IR or
+radio is made by specifying a wavelength greater than $100\mu {\rm m}$
+for the radio case.
+
+\subsubsection{Efficiency considerations}
+The complete apparent place to observed place transformation
+can be carried out by calling
+sla\_AOP.
+For improved efficiency
+in cases of more than one star or a sequence of times, the
+target-independent calculations can be done once by
+calling
+sla\_AOPPA,
+the time can be updated by calling
+sla\_AOPPAT,
+and
+sla\_AOPQK
+can then be used to perform the
+apparent-to-observed transformation.  The reverse transformation
+is available through
+sla\_OAP
+and
+sla\_OAPQK.
+({\it n.b.}\ These routines use accurate but computationally-expensive
+refraction algorithms for zenith distances beyond about $76^\circ$.
+For many purposes, in-line code tailored to the accuracy requirements
+of the application will be preferable, for example ignoring
+polar motion,
+omitting diurnal aberration and using
+sla\_REFZ
+to apply the refraction.)
+
+\subsection{The Hipparcos Catalogue and the ICRS}
+With effect from the beginning of 1998, the IAU adopted a new
+reference system to replace FK5 J2000.  The new system, called the
+International Celestial Reference System (ICRS), differs profoundly
+from all predecessors in that the link with solar-system dynamics
+was broken;  the ICRS axes are defined in terms of the coordinates
+of a set of extragalactic sources, not in terms of the mean equator and
+equinox at a given reference epoch.  Although the ICRS and FK5 coordinates
+of any given object are almost the same, the orientation of the new frame
+was essentially arbitrary, and the close match to FK5 J2000 was contrived
+purely for reasons of continuity and convenience.
+
+A distinction is made between the reference {\it system}\/ (the ICRS)
+and {\it frame}\/ (ICRF).  The ICRS is the set of prescriptions and
+conventions together with the modelling required to define, at any
+time, a triad of axes.  The ICRF is a practical realization, and
+currently consists of a catalogue of equatorial coordinates for 608
+extragalactic radio sources observed by VLBI.
+
+The best optical realization of the ICRF currently available is the
+Hipparcos catalogue.  The extragalactic sources were not directly
+observable by the Hipparcos satellite and so the link from Hipparcos
+to ICRF was established through a variety of indirect techniques: VLBI and
+conventional interferometry of radio stars, photographic astrometry
+and so on.  The Hipparcos frame is aligned to the ICRF to within about
+0.5~mas and 0.5~mas/year (at epoch 1991.25).
+
+The Hipparcos catalogue includes all of the FK5 stars, which has enabled
+the orientation and spin of the latter to be studied.  At epoch J2000,
+the misalignment of the FK5 frame with respect to Hipparcos
+(and hence ICRS) are about 32~mas and 1~mas/year respectively.
+Consequently, for many practical purposes, including pointing
+telescopes, the IAU 1976-1982 conventions on reference frames and
+Earth orientation remain adequate and there is no need to change to
+Hipparcos coordinates, new precession-nutation models and so on.
+However, for the most exacting astrometric applications, SLALIB
+provides some support for Hipparcos coordinates in the form of
+four new routines:
+sla\_FK52H and
+sla\_H2FK5,
+which transform FK5 positions and proper motions to the Hipparcos frame
+and {\it vice versa,}\/ and
+sla\_FK5HZ and
+sla\_HFK5Z,
+where the transformations are for stars whose Hipparcos proper motion is
+zero.
+
+Further information on the ICRS can be found in the paper by M.\,Feissel
+and F.\,Mignard, Astron.\,Astrophys. 331, L33-L36 (1988).
+
+\subsection{Time Scales}
+
+SLALIB provides for transformation between several time scales, and involves
+use of one or two others.  The full list is as follows:
+\begin{itemize}
+\item TAI: International Atomic Time
+\item UTC: Coordinated Universal Time
+\item TT: Terrestrial Time
+\item TDB: Barycentric Dynamical Time.
+\item UT: Universal Time
+\item GMST: Greenwich mean sidereal time
+\item GAST (or GST): Greenwich apparent sidereal time.
+\item LAST: local apparent sidereal time
+\end{itemize}
+Strictly speaking, UT and the sidereal times are not {\it times}\/ in
+the physics sense, but {\it angles}\/ that describe Earth rotation.
+
+Three obsolete time scales should be mentioned here to avoid confusion.
+\begin{itemize}
+\item GMT: Greenwich Mean Time -- can mean either UTC or UT.
+\item ET: Ephemeris Time -- more or less the same as either TT or TDB.
+\item TDT: Terrestrial Dynamical Time -- former name of TT.
+\end{itemize}
+
+time scales that have no SLALIB support at present:
+\begin{itemize}
+\item Any form of local civil time (BST, PDT {\it etc.})
+\item TCG: geocentric coordinate time.
+\item TCB: barycentric coordinate time.
+\end{itemize}
+
+\subsubsection{Atomic Time: TAI}
+{\it International Atomic Time,} TAI, is a ``laboratory''
+time scale with no link to astronomical observations
+except in an historical sense.  Its
+unit is the SI second, which is defined in terms of a
+specific number
+of wavelengths of the radiation produced by a certain electronic
+transition in the caesium 133 atom.  It
+is realized through a changing
+population of high-precision atomic clocks held
+at standards institutes in various countries.  There is an
+elaborate process of continuous intercomparison, leading to
+a weighted average of all the clocks involved.
+
+Though TAI shares the same second as the more familiar UTC, the
+two time scales are noticeably separated in epoch because of the
+build-up of leap seconds (see the next section).
+At the time of writing, UTC
+lags over half a minute behind TAI.
+
+For any given date, the difference TAI$-$UTC
+can be obtained by calling the SLALIB function
+sla\_DAT.
+Note, however, that an up-to-date copy of the function must be used if
+the most recent leap seconds are required.  For applications
+where this is critical, mechanisms independent of SLALIB
+and under local control must
+be set up;  in such cases
+sla\_DAT
+can be useful as an
+independent check, for test dates within the range of the
+available version.  Up-to-date information on TAI$-$UTC is available
+from {\tt ftp://maia.usno.navy.mil/ser7/tai-utc.dat}.
+
+\subsubsection{Universal Time: UT, UTC}
+\label{UTC}
+{\it Universal Time,} UT, or more specifically UT1,
+is in effect mean solar time and is really an expression
+of Earth rotation rather than a measure of time.
+Originally
+defined in terms of a point in the sky called ``the fictitious
+mean Sun'', UT is now defined through its relationship
+with Earth rotation angle
+(formerly sidereal time).
+Because the Earth's rotation rate is slightly irregular and
+gradually decreasing,\footnote{The Earth is slowing
+down because of tidal effects.  The SI
+second reflects the length-of-day in the mid-19th century, when
+the astronomical observations that established modern timekeeping
+were being made.  Since then,
+the average length-of-day has increased by roughly 2~ms.
+Superimposed in this gradual slowdown are
+variations (seasonal and decadal) that are geophysical in origin,
+notably due to large scale movements of water and atmosphere.
+Because of
+conservation of angular momentum, as the Earth's rotation-rate
+decreases, the Moon moves farther away.  In 50 billion years the
+distance of the Moon will be at a maximum, 44\% greater than now, at
+which stage day and month will both equal 47 present days.}
+the UT second is not precisely
+matched to the SI second.  This makes UT itself unsuitable for
+use as a time scale.
+
+That role is instead taken by
+{\it Coordinated Universal Time,} UTC, which is clock-based and
+is the foundation of civil timekeeping.
+Most time zones differ from UTC by an integer number
+of hours, though a few ({\it e.g.}\ parts of Canada and Australia) differ
+by $n+0.5$~hours.  Since its introduction, UTC has been kept
+roughly in step with UT by a variety of adjustments that are
+agreed in advance and then carried out in a coordinated manner by
+the timekeeping communities of different countries---hence the
+name.  Though rate
+changes were used in the past, nowadays all such adjustments
+are made by occasionally inserting
+a whole second.  This procedure is called
+a {\it leap second}.  Because the day length is now slightly longer
+than 86400 SI seconds, a leap second amounts to stopping the UTC
+clock for a second to let the Earth catch up.
+
+You need UT1 in order to point a telescope or antenna at a
+clestial target.  To obtain it
+starting from UTC, you
+have to look up the value of UT1$-$UTC for the date concerned
+in tables published by the International Earth Rotation and
+reference frames
+Service;  this quantity, kept in the range
+$\pm$\tsec{0}{9} by means of leap
+seconds, is then added to the UTC.  The quantity UT1$-$UTC,
+which typically changes by of order 1~ms per day,
+can be obtained only by observation (VLBI using
+extragalactic radio sources), though seasonal trends
+are well known and the IERS listings are able to predict some way into
+the future with adequate accuracy for pointing telescopes.
+
+UTC leap seconds are introduced as necessary,
+usually at the end of December or June.
+Because on the average the solar day is slightly longer
+than the nominal 86,400~SI~seconds, leap seconds are always positive;
+however, provision exists for negative leap seconds if needed.
+The form of a leap second can be seen from the
+following description of the end of June~1994:
+
+\hspace{3em}
+\begin{tabular}{clrccc} \\
+     &      &    &   UTC    & UT1$-$UTC  &    UT1       \\ \\
+1994 & June & 30 & 23 59 58 & $-0.218$ & 23 59 57.782 \\
+     &      &    & 23 59 59 & $-0.218$ & 23 59 58.782 \\
+     &      &    & 23 59 60 & $-0.218$ & 23 59 59.782 \\
+     & July &  1 & 00 00 00 & $+0.782$ & 00 00 00.782 \\
+     &      &    & 00 00 01 & $+0.782$ & 00 00 01.782 \\
+\end{tabular}
+\goodbreak
+
+Note that UTC has to be expressed as hours, minutes and
+seconds (or at least in seconds for a given date) if leap seconds
+are to be taken into account in the
+correct manner.
+It is improper to express a UTC as a
+Julian Date, for example, because there will be an ambiguity
+during a leap second (in the above example,
+1994~June~30 \hms{23}{59}{60}{0} and
+1994~July~1 \hms{00}{00}{00}{0} would {\it both}\/ come out as
+MJD~49534.00000).  Although in the vast majority of
+cases this won't matter, there are potential problems in
+on-line data acquisition systems and in applications involving
+taking the difference between two times.  Note that although the functions
+sla\_DAT
+and
+sla\_DTT
+expect UTC in the form of an MJD, the meaning here is really a
+whole-number {\it date}\/ rather than a time.
+Though the functions will accept
+a fractional part and will almost always function correctly, on a day
+which ends with a leap
+second incorrect results would be obtained during the leap second
+itself because by then the MJD would have moved into the next day.
+
+\subsubsection{Sidereal Time: GMST, LAST {\it etc.}}
+Sidereal time is like the time of day but relative to the
+stars rather than to the Sun.  After
+one sidereal day the stars come back to the same place in the
+sky, apart from sub-arcsecond precession effects.  Because the Earth
+rotates faster relative to the stars than to the Sun by one day
+per year, the sidereal second is shorter than the solar
+second; the ratio is about 0.9973.
+
+The {\it Greenwich mean sidereal time,} GMST, is
+linked to UT1 by a numerical formula which
+is implemented in the SLALIB functions
+sla\_GMST
+and
+sla\_GMSTA.
+There are, of course, no leap seconds in GMST, but the sidereal
+second (measured in SI seconds)
+changes in length along with the UT1 second, and also varies
+over long periods of time because of slow changes in the Earth's
+orbit.  This makes sidereal time unsuitable for everything except
+predicting the apparent directions of celestial sources, in other
+words as an angle rather than a time.
+
+The {\it local apparent sidereal time,} LAST, is the apparent right
+ascension of the local meridian, from which the hour angle of any
+star can be determined knowing its right
+ascension.  LAST can be obtained from the
+GMST by adding the east longitude (corrected for polar motion
+in precise work) and the {\it equation of the equinoxes}.  The
+latter, already described, is an aspect of the nutation effect
+and can be predicted by calling the SLALIB function
+sla\_EQEQX
+or, neglecting certain very small terms, by calling
+sla\_NUTC
+and using the expression $\Delta\psi\cos\epsilon$.
+
+GAST, or plain GST, is GMST plus the equation of the equinoxes.
+
+\subsubsection{Dynamical Time: TT, TDB}
+Dynamical time (formerly Ephemeris Time, ET)
+is the independent variable in the theories
+which describe the motions of bodies in the solar system.  When
+using published formulae or
+tables that model the position of the
+Earth in its orbit, for example, or look up
+the Moon's position in a precomputed ephemeris, the date and time
+must be in terms of one of the dynamical time scales.  It
+is a common but understandable mistake to use UTC directly, in which
+case the results will be over a minute out (at the time of writing).
+
+It is not hard to see why such time scales are necessary.
+UTC would clearly be unsuitable as the argument of an
+ephemeris because of leap seconds.
+A solar-system ephemeris based on UT1 or sidereal time would somehow
+have to include the unpredictable variations of the Earth's rotation.
+TAI would work, but in principle
+the ephemeris and the ensemble of atomic clocks would
+eventually drift apart.
+In effect, the ephemeris {\it is}\/ a clock, with the bodies of
+the solar system the hands from which the ephemeris time is read.
+
+Only two of the dynamical time scales are of any great importance to
+observational astronomers, TT and TDB.
+
+{\it Terrestrial Time,} TT, is
+the theoretical time scale of apparent geocentric ephemerides of solar
+system bodies.  It applies to clocks at sea-level, and for practical purposes
+it is tied to
+Atomic Time TAI through the formula TT~$=$~TAI~$+$~\tsec{32}{184}.
+In practice, therefore, the units of TT are ordinary SI seconds, and
+the offset of \tsec{32}{184} with respect to TAI is fixed.
+The SLALIB function
+sla\_DTT
+returns TT$-$UTC for a given UTC
+({\it n.b.}~sla\_DTT
+calls
+sla\_DTT,
+and the latter must be an up-to-date version if recent leap seconds are
+to be taken into account).
+
+{\it Barycentric Dynamical Time,} TDB, is a
+{\it coordinate time,} suitable
+for labelling events that are most simply described in a context
+where the bodies of the solar system
+are absent.  Applications include
+the emission of pulsar radiation and the motions of the
+solar-system bodies themselves.  When the readings of the
+observer's TT clock are labelled using such a
+coordinate time, differences
+are seen because the clock is affected by its
+speed in the barycentric coordinate system
+and the gravitational potential in which it is immersed.  Equivalently,
+observations of pulsars
+expressed in TT would display similar variations (quite
+apart from the familiar light-time effects).
+
+TDB is defined in such a way that it keeps close to TT
+on the average, with the relativistic effects emerging as
+quasi-periodic differences of maximum amplitude rather less
+than 2\,ms.  This is
+negligible for many purposes, so that TT can act as
+a perfectly adequate surrogate for TDB in most cases,
+but unless taken into
+account would swamp
+long-term analysis of pulse arrival times from the
+millisecond pulsars.
+
+Most of the variation between TDB and TT comes from the ellipticity of
+the Earth's orbit;  the TT clock's speed and
+gravitational potential vary slightly
+during the course of the year, and as a consequence
+its rate as seen from an outside observer
+varies due to transverse Doppler effect and gravitational
+redshift.  The main component is a sinusoidal variation of
+amplitude \tsec{0}{0017};  higher harmonics, and terms
+caused by Moon and planets, lie two orders of magnitude below
+this dominant annual term.  Diurnal (topocentric) terms, a
+function of UT, are $2\,\mu$s or less.
+
+The IAU 1976 resolution defined TDB by
+stipulating that TDB$-$TT consists of periodic terms only.
+This provided
+a good qualitative description, but turned out to
+contain hidden assumptions about the form of the
+solar-system ephemeris and hence lacked dynamical
+rigour.  A later resolution, in 1991, introduced new
+coordinate time scales, TCG and TCB, and identified TDB as a
+linear transformation of one of them (TCB) with a rate
+chosen not to drift from TT on the average.  Unfortunately
+even this improved definition has proved to
+contin ambiguities.  The SLALIB
+sla\_RCC function implements TDB in the way that is
+most consistent with the 1976 definition and
+with existing practice.  It provides a model of
+TDB$-$TT accurate to a few nanoseconds.
+
+Unlike TDB, the IAU 1991 coordinate time scales TCG and TCB
+(not supported by SLALIB functions at present)
+do not have their rates adjusted to track TT and consequently
+gain on TT and TDB, by about
+\tsec{0}{02}/year and \tsec{0}{5}/year respectively.
+
+As already pointed out, the distinction between TT and TDB is
+of no practical importance for most purposes.  For
+example when calling
+sla\_PRENUT
+to generate a precession-nutation matrix, or when calling
+sla\_EVP or
+sla\_EPV
+to predict the
+Earth's position and velocity, the time argument is strictly
+TDB, but TT is entirely adequate and will require much
+less computation.
+
+The time scale used by the JPL solar-system ephemerides is called
+$T_{eph}$ and is numerically the same as TDB.
+
+Predictions of topocentric solar-system phenomena such as
+occultations and eclipses require solar time UT as well as dynamical
+time.  TT/TDB/ET is all that is required in order to compute the geocentric
+circumstances, but if horizon coordinates or geocentric parallax
+are to be tackled UT is also needed.  A rough estimate
+of $\Delta {\rm T} = {\rm ET} - {\rm UT}$ is
+available via the function
+sla\_DT.
+For a given epoch ({\it e.g.}\ 1650) this returns an approximation
+to $\Delta {\rm T}$ in seconds.
+
+
+
+
+\subsection{Calendars}
+The ordinary {\it Gregorian Calendar Date},
+together with a time of day, can be
+used to express an epoch in any desired time scale.  For many purposes,
+however, a continuous count of days is more convenient, and for
+this purpose the system of {\it Julian Day Number}\/ can be used.
+JD zero is located about 7000~years ago, well before the
+historical era, and is formally defined in terms of Greenwich noon;
+for example Julian Day Number 2449444 began at noon
+on 1994 April~1.  {\it Julian Date}\/
+is the same system but with a fractional part appended;
+Julian Date 2449443.5 was the midnight on which 1994 April~1
+commenced.  Because of the unwieldy size of Julian Dates
+and the awkwardness of the half-day offset, it is
+accepted practice to remove the leading `24' and the trailing `.5',
+producing what is called the {\it Modified Julian Date}:
+MJD~=~JD$-2400000.5$.  SLALIB routines use MJD, as opposed to
+JD, throughout, largely to avoid loss of precision.
+1994 April~1 commenced at MJD~49443.0.
+
+Despite JD (and hence MJD) being defined in terms of (in effect)
+UT, the system can be used in conjunction with other time scales
+such as TAI, TT and TDB (and even sidereal time through the
+concept of {\it Greenwich Sidereal Date}).  However, it is improper
+to express a UTC as a JD or MJD because of leap seconds.
+
+SLALIB has six routines for converting to and from dates in
+the Gregorian calendar.  The routines
+sla\_CLDJ
+and
+sla\_CALDJ
+both convert a calendar date into an MJD, the former interpreting
+years between 0 and 99 as 1st century and the latter as late 20th or
+early 21st century.  The routines sla\_DJCL
+and
+sla\_DJCAL
+both convert an MJD into calendar year, month, day and fraction of a day;
+the latter performs rounding to a specified precision, important
+to avoid dates like `{\tt 2005 04 01.***}' appearing in messages.
+Some of SLALIB's low-precision ephemeris routines
+(sla\_EARTH,
+sla\_MOON
+and
+sla\_ECOR)
+work in terms of year plus day-in-year (where
+day~1~=~January~1st, at least for the modern era).
+This form of date can be generated by
+calling
+sla\_CALYD
+(which defaults years 0-99 into 1950-2049)
+or
+sla\_CLYD
+(which covers the full range from prehistoric times).
+
+\subsection{Geocentric Coordinates}
+The location of the observer on the Earth is significant in a
+number of ways.  The most obvious, of course, is the effect of
+longitude and latitude
+on the observed \azel\ of a star.  Less obvious is the need to
+allow for geocentric parallax when finding the Moon with a
+telescope (and when doing high-precision work involving the
+Sun or planets), and the need to correct observed radial
+velocities and apparent pulsar periods for the effects
+of the Earth's rotation.
+
+The SLALIB routine
+sla\_OBS
+supplies details of groundbased observatories from an internal
+list.  This is useful when writing applications that apply to
+more than one observatory;  the user can enter a brief name,
+or browse through a list, and be spared the trouble of typing
+in the full latitude, longitude {\it etc}.  The following
+Fortran code returns the full name, longitude and latitude
+of a specified observatory:
+\goodbreak
+\begin{verbatim}
+            CHARACTER IDENT*10,NAME*40
+            DOUBLE PRECISION W,P,H
+             :
+            CALL sla_OBS(0,IDENT,NAME,W,P,H)
+            IF (NAME.EQ.'?') ...             (not recognized)
+\end{verbatim}
+\goodbreak
+(Beware of the longitude sign convention, which is west +ve
+for historical reasons.)  The following lists all
+the supported observatories:
+\goodbreak
+\begin{verbatim}
+             :
+            INTEGER N
+             :
+            N=1
+            NAME=' '
+            DO WHILE (NAME.NE.'?')
+               CALL sla_OBS(N,IDENT,NAME,W,P,H)
+               IF (NAME.NE.'?') THEN
+                  WRITE (*,'(1X,I3,4X,A,4X,A)') N,IDENT,NAME
+                  N=N+1
+               END IF
+            END DO
+\end{verbatim}
+\goodbreak
+The routine
+sla\_GEOC
+converts a {\it geodetic latitude}\/
+(one referred to the local horizon) to a geocentric position,
+taking into account the Earth's oblateness and also the height
+above sea level of the observer.  The results are expressed in
+vector form, namely as the distance of the observer from
+the spin axis and equator respectively.  The {\it geocentric
+latitude}\/ can be found be evaluating ATAN2 of the
+two numbers.  A full 3-D vector description of the position
+and velocity of the observer is available through the routine
+sla\_PVOBS.
+For a specified geodetic latitude, height above
+sea level, and local sidereal time,
+sla\_PVOBS
+generates a 6-element vector containing the position and
+velocity with respect to the true equator and equinox of
+date ({\it i.e.}\ compatible with apparent \radec).  For
+some applications it will be necessary to convert to a
+mean \radec\ frame (notably FK5, J2000) by multiplying
+elements 1-3 and 4-6 respectively with the appropriate
+precession matrix.  (In theory an additional correction to the
+velocity vector is needed to allow for differential precession,
+but this correction is always negligible.)
+
+See also the discussion of the routine
+sla\_RVEROT,
+later.
+
+\label{ephem}
+\subsection{Ephemerides}
+SLALIB includes routines for generating positions and
+velocities of Solar-System bodies.  The accuracy objectives are
+modest, and the SLALIB facilities do not attempt
+to compete with precomputed ephemerides such as
+those provided by JPL, or with models containing
+thousands of terms.  It is also worth noting
+that SLALIB's very accurate star coordinate conversion
+routines are not strictly applicable to solar-system cases,
+though they are adequate for most practical purposes.
+
+Earth/Sun ephemerides can be generated using the routines
+sla\_EVP and
+sla\_EPV,
+each of which predict Earth position and velocity with respect to both the
+solar-system barycentre and the
+Sun.  The two routines offer different trade-offs between
+accuracy and execution time.  For most purposes,
+sla\_EVP is adequate:
+maximum velocity error is 0.42~metres per second;  maximum
+heliocentric position error is 1600~km (equivalent to
+about \arcseci{2} at 1~AU), with
+barycentric position errors about 4 times worse.
+The larger and slower
+sla\_EPV
+delivers $3\sigma$ results of 0.005~metres per second in velocity
+and 15~km in position, and is particularly useful when predicting
+apparent directions of near-Earth objects.
+(The Sun's position as
+seen from the Earth can, of course, be obtained simply by
+reversing the signs of the Cartesian components of the
+Earth\,:\,Sun vector.)
+
+Geocentric Moon ephemerides are available from
+sla\_DMOON,
+which predicts the Moon's position and velocity with respect to
+the Earth's centre.  Direction accuracy is usually better than
+10~km (\arcseci{5}) and distance accuracy a little worse.
+
+Lower-precision but faster predictions for the Sun and Moon
+can be made by calling
+sla\_EARTH
+and
+sla\_MOON.
+Both are single precision and accept dates in the form of
+year, day-in-year and fraction of day
+(starting from a calendar date you need to call
+sla\_CLYD
+or
+sla\_CALYD
+to get the required year and day).
+The
+sla\_EARTH
+routine returns the heliocentric position and velocity
+of the Earth's centre for the mean equator and
+equinox of date.  The accuracy is better than 20,000~km in position
+and 10~metres per second in speed.
+The
+position and velocity of the Moon with respect to the
+Earth's centre for the mean equator and ecliptic of date
+can be obtained by calling
+sla\_MOON.
+The positional accuracy is better than \arcseci{30} in direction
+and 1000~km in distance.
+
+Approximate ephemerides for all the major planets
+can be generated by calling
+sla\_PLANET
+or
+sla\_RDPLAN.  These routines offer arcminute accuracy (much
+better for the inner planets and for Pluto) over a span of several
+millennia (but only $\pm100$ years for Pluto).
+The routine
+sla\_PLANET produces heliocentric position and
+velocity in the form of equatorial \xyzxyzd\ for the
+mean equator and equinox of J2000.  The vectors
+produced by
+sla\_PLANET
+can be used in a variety of ways according to the
+requirements of the application concerned.  The routine
+sla\_RDPLAN
+uses
+sla\_PLANET
+and
+sla\_DMOON
+to deal with the common case of predicting
+a planet's apparent \radec\ and angular size as seen by a
+terrestrial observer.
+
+Note that in predicting the position in the sky of a solar-system body
+it is necessary to allow for geocentric parallax.  This correction
+is {\it essential}\/ in the case of the Moon, where the observer's
+position on the Earth can affect the Moon's \radec\ by up to
+$1^\circ$.  The calculation can most conveniently be done by calling
+sla\_PVOBS and subtracting the resulting 6-vector from the
+one produced by
+sla\_DMOON, as is demonstrated by the following example:
+\goodbreak
+\begin{verbatim}
+      *  Demonstrate the size of the geocentric parallax correction
+      *  in the case of the Moon.  The test example is for the AAT,
+      *  before midnight, in summer, near first quarter.
+
+            IMPLICIT NONE
+            CHARACTER NAME*40,SH,SD
+            INTEGER J,I,IHMSF(4),IDMSF(4)
+            DOUBLE PRECISION SLONGW,SLAT,H,DJUTC,FDUTC,DJUT1,DJTT,STL,
+           :                 RMATN(3,3),PMM(6),PMT(6),RM,DM,PVO(6),TL
+            DOUBLE PRECISION sla_DTT,sla_GMST,sla_EQEQX,sla_DRANRM
+
+      *  Get AAT longitude and latitude in radians and height in metres
+            CALL sla_OBS(0,'AAT',NAME,SLONGW,SLAT,H)
+
+      *  UTC (1992 January 13, 11 13 59) to MJD
+            CALL sla_CLDJ(1992,1,13,DJUTC,J)
+            CALL sla_DTF2D(11,13,59.0D0,FDUTC,J)
+            DJUTC=DJUTC+FDUTC
+
+      *  UT1 (UT1-UTC value of -0.152 sec is from IERS Bulletin B)
+            DJUT1=DJUTC+(-0.152D0)/86400D0
+
+      *  TT
+            DJTT=DJUTC+sla_DTT(DJUTC)/86400D0
+
+      *  Local apparent sidereal time
+            STL=sla_GMST(DJUT1)-SLONGW+sla_EQEQX(DJTT)
+
+      *  Geocentric position/velocity of Moon (mean of date)
+            CALL sla_DMOON(DJTT,PMM)
+
+      *  Nutation to true equinox of date
+            CALL sla_NUT(DJTT,RMATN)
+            CALL sla_DMXV(RMATN,PMM,PMT)
+            CALL sla_DMXV(RMATN,PMM(4),PMT(4))
+
+      *  Report geocentric HA,Dec
+            CALL sla_DCC2S(PMT,RM,DM)
+            CALL sla_DR2TF(2,sla_DRANRM(STL-RM),SH,IHMSF)
+            CALL sla_DR2AF(1,DM,SD,IDMSF)
+            WRITE (*,'(1X,'' geocentric:'',2X,A,I2.2,2I3.2,''.'',I2.2,'//
+           :                              '1X,A,I2.2,2I3.2,''.'',I1)')
+           :                                                SH,IHMSF,SD,IDMSF
+
+      *  Geocentric position of observer (true equator and equinox of date)
+            CALL sla_PVOBS(SLAT,H,STL,PVO)
+
+      *  Place origin at observer
+            DO I=1,6
+               PMT(I)=PMT(I)-PVO(I)
+            END DO
+
+      *  Allow for planetary aberration
+            TL=499.004782D0*SQRT(PMT(1)**2+PMT(2)**2+PMT(3)**2)
+            DO I=1,3
+               PMT(I)=PMT(I)-TL*PMT(I+3)
+            END DO
+
+      *  Report topocentric HA,Dec
+            CALL sla_DCC2S(PMT,RM,DM)
+            CALL sla_DR2TF(2,sla_DRANRM(STL-RM),SH,IHMSF)
+            CALL sla_DR2AF(1,DM,SD,IDMSF)
+            WRITE (*,'(1X,''topocentric:'',2X,A,I2.2,2I3.2,''.'',I2.2,'//
+           :                              '1X,A,I2.2,2I3.2,''.'',I1)')
+           :                                                SH,IHMSF,SD,IDMSF
+            END
+\end{verbatim}
+\goodbreak
+The output produced is as follows:
+\goodbreak
+\begin{verbatim}
+       geocentric:  +03 06 55.55 +15 03 38.8
+      topocentric:  +03 09 23.76 +15 40 51.4
+\end{verbatim}
+\goodbreak
+(An easier but
+less instructive method of estimating the topocentric apparent place of the
+Moon is to call the routine
+sla\_RDPLAN.)
+
+As an example of using
+sla\_PLANET,
+the following program estimates the geocentric separation
+between Venus and Jupiter during a close conjunction
+in 2\,BC, which is a star-of-Bethlehem candidate:
+\goodbreak
+\begin{verbatim}
+      *  Compute time and minimum geocentric apparent separation
+      *  between Venus and Jupiter during the close conjunction of 2 BC.
+
+            IMPLICIT NONE
+
+            DOUBLE PRECISION SEPMIN,DJD0,FD,DJD,DJDM,PV(6),RMATP(3,3),
+           :                 PVM(6),PVE(6),TL,RV,DV,RJ,DJ,SEP
+            INTEGER IHOUR,IMIN,J,I,IHMIN,IMMIN
+            DOUBLE PRECISION sla_EPJ,sla_DSEP
+
+
+      *  Search for closest approach on the given day
+            DJD0=1720859.5D0
+            SEPMIN=1D10
+            DO IHOUR=20,22
+               DO IMIN=0,59
+                  CALL sla_DTF2D(IHOUR,IMIN,0D0,FD,J)
+
+      *        Julian date and MJD
+                  DJD=DJD0+FD
+                  DJDM=DJD-2400000.5D0
+
+      *        Earth to Moon (mean of date)
+                  CALL sla_DMOON(DJDM,PV)
+
+      *        Precess Moon position to J2000
+                  CALL sla_PRECL(sla_EPJ(DJDM),2000D0,RMATP)
+                  CALL sla_DMXV(RMATP,PV,PVM)
+
+      *        Sun to Earth-Moon Barycentre (mean J2000)
+                  CALL sla_PLANET(DJDM,3,PVE,J)
+
+      *        Correct from EMB to Earth
+                  DO I=1,3
+                     PVE(I)=PVE(I)-0.012150581D0*PVM(I)
+                  END DO
+
+      *        Sun to Venus
+                  CALL sla_PLANET(DJDM,2,PV,J)
+
+      *        Earth to Venus
+                  DO I=1,6
+                     PV(I)=PV(I)-PVE(I)
+                  END DO
+
+      *        Light time to Venus (sec)
+                  TL=499.004782D0*SQRT((PV(1)-PVE(1))**2+
+           :                           (PV(2)-PVE(2))**2+
+           :                           (PV(3)-PVE(3))**2)
+
+      *        Extrapolate backwards in time by that much
+                  DO I=1,3
+                     PV(I)=PV(I)-TL*PV(I+3)
+                  END DO
+
+      *        To RA,Dec
+                  CALL sla_DCC2S(PV,RV,DV)
+
+      *        Same for Jupiter
+                  CALL sla_PLANET(DJDM,5,PV,J)
+                  DO I=1,6
+                     PV(I)=PV(I)-PVE(I)
+                  END DO
+                  TL=499.004782D0*SQRT((PV(1)-PVE(1))**2+
+           :                           (PV(2)-PVE(2))**2+
+           :                           (PV(3)-PVE(3))**2)
+                  DO I=1,3
+                     PV(I)=PV(I)-TL*PV(I+3)
+                  END DO
+                  CALL sla_DCC2S(PV,RJ,DJ)
+
+      *        Separation (arcsec)
+                  SEP=sla_DSEP(RV,DV,RJ,DJ)
+
+      *        Keep if smallest so far
+                  IF (SEP.LT.SEPMIN) THEN
+                     IHMIN=IHOUR
+                     IMMIN=IMIN
+                     SEPMIN=SEP
+                  END IF
+               END DO
+            END DO
+
+      *  Report
+            WRITE (*,'(1X,I2.2,'':'',I2.2,F6.1)') IHMIN,IMMIN,
+           :                                      206264.8062D0*SEPMIN
+
+            END
+\end{verbatim}
+\goodbreak
+The output produced (the Ephemeris Time on the day in question, and
+the closest approach in arcseconds) is as follows:
+\goodbreak
+\begin{verbatim}
+      21:16  33.3
+\end{verbatim}
+\goodbreak
+For comparison, accurate JPL predictions
+give a separation \arcseci{8} less than
+the above estimate, occurring $30^{\rm m}$ earlier
+(see {\it Sky and Telescope,}\/ April~1987, p\,357).
+
+The following program demonstrates
+sla\_RDPLAN.
+\begin{verbatim}
+      *  For a given date, time and geographical location, output
+      *  a table of planetary positions and diameters.
+
+            IMPLICIT NONE
+            CHARACTER PNAMES(0:9)*7,B*80,S
+            INTEGER I,NP,IY,J,IM,ID,IHMSF(4),IDMSF(4)
+            DOUBLE PRECISION D15B2P,R2AS,FD,DJM,ELONG,PHI,RA,DEC,DIAM
+            PARAMETER (D15B2P=2.3873241463784300365D0,
+           :           R2AS=206264.80625D0)
+            DATA PNAMES / 'Sun','Mercury','Venus','Moon','Mars','Jupiter',
+           :              'Saturn','Uranus','Neptune', 'Pluto' /
+
+
+      *  Loop until 'end' typed
+            B=' '
+            DO WHILE (B.NE.'END'.AND.B.NE.'end')
+
+      *     Get date, time and observer's location
+               PRINT *,'Date? (Y,M,D, Gregorian)'
+               READ (*,'(A)') B
+               IF (B.NE.'END'.AND.B.NE.'end') THEN
+                  I=1
+                  CALL sla_INTIN(B,I,IY,J)
+                  CALL sla_INTIN(B,I,IM,J)
+                  CALL sla_INTIN(B,I,ID,J)
+                  PRINT *,'Time? (H,M,S, dynamical)'
+                  READ (*,'(A)') B
+                  I=1
+                  CALL sla_DAFIN(B,I,FD,J)
+                  FD=FD*D15B2P
+                  CALL sla_CLDJ(IY,IM,ID,DJM,J)
+                  DJM=DJM+FD
+                  PRINT *,'Longitude? (D,M,S, east +ve)'
+                  READ (*,'(A)') B
+                  I=1
+                  CALL sla_DAFIN(B,I,ELONG,J)
+                  PRINT *,'Latitude? (D,M,S, geodetic)'
+                  READ (*,'(A)') B
+                  I=1
+                  CALL sla_DAFIN(B,I,PHI,J)
+
+      *        Loop planet by planet
+                  DO NP=0,9
+
+      *           Get RA,Dec and diameter
+                     CALL sla_RDPLAN(DJM,NP,ELONG,PHI,RA,DEC,DIAM)
+
+      *           One line of report
+                     CALL sla_DR2TF(2,RA,S,IHMSF)
+                     CALL sla_DR2AF(1,DEC,S,IDMSF)
+                     WRITE (*,
+           : '(1X,A,2X,3I3.2,''.'',I2.2,2X,A,I2.2,2I3.2,''.'',I1,F8.1)')
+           :                          PNAMES(NP),IHMSF,S,IDMSF,R2AS*DIAM
+
+      *           Next planet
+                  END DO
+                  PRINT *,' '
+               END IF
+
+      *     Next case
+            END DO
+
+            END
+\end{verbatim}
+Entering the following data (for 1927~June~29 at $5^{\rm h}\,25^{\rm m}$~ET
+and the position of Preston, UK):
+\begin{verbatim}
+      1927 6 29
+      5 25
+      -2 42
+      53 46
+\end{verbatim}
+produces the following report:
+\begin{verbatim}
+      Sun       06 28 14.03  +23 17 17.3  1887.8
+      Mercury   08 08 58.60  +19 20 57.1     9.3
+      Venus     09 38 53.61  +15 35 32.8    22.8
+      Moon      06 28 15.95  +23 17 21.3  1902.3
+      Mars      09 06 49.33  +17 52 26.6     4.0
+      Jupiter   00 11 12.08  -00 10 57.5    41.1
+      Saturn    16 01 43.35  -18 36 55.9    18.2
+      Uranus    00 13 33.54  +00 39 36.1     3.5
+      Neptune   09 49 35.76  +13 38 40.8     2.2
+      Pluto     07 05 29.51  +21 25 04.2     0.1
+\end{verbatim}
+Inspection of the Sun and Moon data reveals that
+a total solar eclipse is in progress.
+
+SLALIB also provides for the case where orbital elements (with respect
+to the J2000 equinox and ecliptic)
+are available.  This allows predictions to be made for minor-planets and
+(if you ignore non-gravitational effects)
+comets.  Furthermore, if major-planet elements for an epoch close to the date
+in question are available, more accurate predictions can be made than
+are offered by
+sla\_RDPLAN and
+sla\_PLANET.
+
+The SLALIB planetary-prediction
+routines that work with orbital elements are
+sla\_PLANTE (the orbital-elements equivalent of
+sla\_RDPLAN), which predicts the topocentric \radec, and
+sla\_PLANEL (the orbital-elements equivalent of
+sla\_PLANET), which predicts the heliocentric \xyzxyzd\ with respect to the
+J2000 equinox and equator.  In addition, the routine
+sla\_PV2EL does the inverse of
+sla\_PLANEL, transforming \xyzxyzd\ into {\it osculating elements.}
+
+Osculating elements describe the unperturbed 2-body orbit.  Depending
+on accuracy requirements, this unperturbed orbit is an
+adequate approximation to the actual orbit for a few weeks either
+side of the specified epoch, outside which perturbations due to
+the other bodies of the Solar System lead to
+increasing errors.  Given a minor planet's osculating elements for
+a particular date, predictions for a date only
+100 days earlier or later
+are likely to be in error by several arcseconds.
+These errors can
+be reduced if new elements are generated which take account of
+the perturbations of the major planets, and this is what the routine
+sla\_PERTEL does.  Once
+sla\_PERTEL has been called, to provide osculating elements
+close to the required date, the elements can be passed to
+sla\_PLANEL or
+sla\_PLANTE in the normal way.  Predictions of arcsecond accuracy
+over a span of a decade or more are available using this
+technique.
+
+Three different combinations of orbital elements are
+provided for, matching the usual conventions
+for major planets, minor planets and
+comets respectively.  The choice is made through the
+argument {\tt JFORM}:
+
+\vspace{1ex}
+\hspace{3em}
+\begin{tabular}{|c|c|c|} \hline
+{\tt JFORM=1} & {\tt JFORM=2} & {\tt JFORM=3} \\
+\hline \hline
+$t_0$ & $t_0$ & $T$ \\
+\hline
+$i$ & $i$ & $i$ \\
+\hline
+$\Omega$ & $\Omega$ & $\Omega$ \\
+\hline
+$\varpi$ & $\omega$ & $\omega$ \\
+\hline
+$a$ & $a$ & $q$ \\
+\hline
+$e$ & $e$ & $e$ \\
+\hline
+$L$ & $M$ & \\
+\hline
+$n$ & & \\
+\hline
+\end{tabular}\\[2ex]
+The symbols have the following meanings:
+
+\vspace{-1ex}
+\begin{tabbing}
+xxxxxxx \= xxxx \= \kill
+\> $t_0$ \> epoch of osculation \\
+\> $T$ \> epoch of perihelion passage \\
+\> $i$ \> inclination of the orbit \\
+\> $\Omega$ \> longitude of the ascending node \\
+\> $\varpi$ \> longitude of perihelion ($\varpi = \Omega + \omega$) \\
+\> $\omega$ \> argument of perihelion \\
+\> $a$ \> semi-major axis of the orbital ellipse \\
+\> $q$ \> perihelion distance \\
+\> $e$ \> orbital eccentricity \\
+\> $L$ \> mean longitude ($L = \varpi + M$) \\
+\> $M$ \> mean anomaly \\
+\> $n$ \> mean motion \\
+\end{tabbing}
+
+The mean motion, $n$, tells
+sla\_PLANEL the mass of the planet.
+If it is not available, it should be calculated
+from $n^2 a^3 = k^2 (1+m)$, where $k = 0.01720209895$ and
+m is the mass of the planet ($M_\odot = 1$); $a$ is in AU.
+
+Note that for any given problem there are up to three different
+epochs in play, and it is vital to distinguish clearly between
+them:
+\begin{itemize}
+\item The epoch of observation:  the moment in time for which the
+      position of the body is to be predicted.
+\item The epoch defining the position of the body:  the moment in time
+      at which, in the absence of purturbations, the specified
+      position---mean longitude, mean anomaly, or perihelion---is
+      reached.
+\item The epoch of osculation:  the moment in time at which the given
+      elements precisely specify the body's position and velocity.
+\end{itemize}
+
+For the major-planet and minor-planet cases it is usual to make
+the epoch that defines the position of the body the same as the
+epoch of osculation.  Thus, for planets (major and
+minor) only two different epochs are
+involved:  the epoch of the elements and the epoch of observation.
+For comets, the epoch of perihelion fixes the position in the
+orbit and in general a different epoch of osculation will be
+chosen.  Thus, for comets all three types of epoch are involved.
+How many of the three elements are present in a given SLALIB
+argument list depends on the routine concerned.
+
+Two important sources for orbital elements are the {\it Horizons}\/
+service, operated by the Jet Propulsion Laboratory, Pasadena,
+and the Minor Planet Center, operated by the Center for
+Astrophysics, Harvard.
+The JPL elements (heliocentric, J2000 ecliptic and
+equinox) and MPC elements
+correspond to SLALIB arguments as shown in the following table,
+where ``(rad)'' means conversion from degrees to radians, and
+``(MJD)'' means ``subtract {\tt 2400000.5D0}'':
+
+\vspace{2ex}
+
+\begin{small}
+\begin{tabular}{|c||c|c|c||c|c|} \hline
+{\it SLALIB } & \multicolumn{3}{c||}{\it JPL}
+ & \multicolumn{2}{c|}{\it MPC} \\
+argument & major planet & minor planet & comet & minor planet & comet \\
+\hline \hline
+{\tt JFORM} & {\tt 1} & {\tt 2} & {\tt 3} & {\tt 2} & {\tt 3} \\
+{\tt EPOCH} & {\tt JDCT} (MJD) & {\tt JDCT} (MJD) & {\tt Tp} (MJD) &
+                                    {\tt Epoch} (MJD) & {\tt T} (MJD) \\
+{\tt ORBINC} & {\tt IN} (rad) & {\tt IN} (rad) & {\tt IN} (rad) &
+                                {\tt Incl.} (rad) & {\tt Incl.} (rad) \\
+{\tt ANODE} & {\tt OM} (rad) & {\tt OM} (rad) & {\tt OM} (rad) &
+                                 {\tt Node} (rad) & {\tt Node.} (rad) \\
+{\tt PERIH} & {\tt OM+W} (rad) & {\tt W} (rad) & {\tt W} (rad) &
+                              {\tt Perih.} (rad) & {\tt Perih.} (rad) \\
+{\tt AORQ} & {\tt A} & {\tt A} & {\tt QR} & {\tt a} & {\tt q} \\
+{\tt E} & {\tt EC} & {\tt EC} & {\tt EC} & {\tt e} & {\tt e} \\
+{\tt AORL} & {\tt MA+OM+W} (rad) & {\tt MA} (rad) & & {\tt M} (rad) & \\
+{\tt DM} & {\tt N} (rad) & & & & \\  \hline
+epoch of osculation & {\tt JDCT} (MJD)
+                    & {\tt JDCT} (MJD)
+                    & {\tt JDCT} (MJD)
+                    & {\tt Epoch} (MJD)
+                    & {\tt Epoch} (MJD) \\
+\hline
+\end{tabular}
+\end{small}\\[3ex]
+
+Conventional elements are not the only way of specifying an orbit.
+The \xyzxyzd\ state vector is an equally valid specification,
+and the so-called {\it method of universal variables}\/ allows
+orbital calculations to be made directly, bypassing angular
+quantities and avoiding Kepler's Equation.  The universal-variables
+approach has various advantages, including better handling of
+near-parabolic cases and greater efficiency.
+SLALIB uses universal variables for its internal
+calculations and also offers a number of routines which
+applications can call.
+
+The universal elements are the \xyzxyzd\ and its epoch, plus the mass
+of the body.  The SLALIB routines supplement these elements with
+certain redundant values in order to
+avoid unnecessary recomputation when the elements are next used.
+
+The routines
+sla\_EL2UE and
+sla\_UE2EL transform conventional elements into the
+universal form and {\it vice versa.}
+The routine
+sla\_PV2UE takes an \xyzxyzd\ and forms the set of universal
+elements;
+sla\_UE2PV takes a set of universal elements and predicts the \xyzxyzd\
+for a specified epoch.
+The routine
+sla\_PERTUE provides updated universal elements,
+taking into account perturbations from the major planets.
+Starting with universal elements, the routine
+sla\_PLANTU (the universal elements equivalent of
+sla\_PLANTE) predicts topocentric \radec.
+
+\subsection{Radial Velocity and Light-Time Corrections}
+When publishing high-resolution spectral observations
+it is necessary to refer them to a specified standard of rest.
+This involves knowing the component in the direction of the
+source of the velocity of the observer.  SLALIB provides a number
+of routines for this purpose, allowing observations to be
+referred to the Earth's centre, the Sun, a Local Standard of Rest
+(either dynamical or kinematical), the centre of the Galaxy, and
+the mean motion of the Local Group.
+
+The routine
+sla\_RVEROT
+corrects for the diurnal rotation of
+the observer around the Earth's axis.  This is always less than 0.5~km/s.
+
+No specific routine is provided to correct a radial velocity
+from geocentric to heliocentric, but this can easily be done by calling
+sla\_EVP
+as follows (array declarations {\it etc}.\ omitted):
+\goodbreak
+\begin{verbatim}
+             :
+      *  Star vector, J2000
+            CALL sla_DCS2C(RM,DM,V)
+
+      *  Earth/Sun velocity and position, J2000
+            CALL sla_EVP(TDB,2000D0,DVB,DPB,DVH,DPH)
+
+      *  Radial velocity correction due to Earth orbit (km/s)
+            VCORB = -sla_DVDV(V,DVH)*149.597870D6
+             :
+\end{verbatim}
+\goodbreak
+The maximum value of this correction is the Earth's orbital speed
+of about 30~km/s.  A related routine,
+sla\_ECOR,
+computes the light-time correction with respect to the Sun.  It
+would be used when reducing observations of a rapid variable-star
+for instance.
+For pulsar work the
+sla\_EVP routine is not sufficiently accurate for
+phase predictions, being limited to about 25~ms.  The
+alternative sla\_EPV routine will deliver pulse arrival times
+accurate to 50~$\mu$s, but is significantly slower.
+
+To remove the intrinsic $\sim20$~km/s motion of the Sun relative
+to other stars in the solar neighbourhood,
+a velocity correction to a
+{\it local standard of rest}\/ (LSR) is required.  There are
+opportunities for mistakes here.  There are two sorts of LSR,
+{\it dynamical}\/ and {\it kinematical}, and
+multiple definitions exist for the latter.  The
+dynamical LSR is a point near the Sun which is in a circular
+orbit around the Galactic centre;  the Sun has a ``peculiar''
+motion relative to the dynamical LSR.  A kinematical LSR is
+the mean standard of rest of specified star catalogues or stellar
+populations, and its precise definition depends on which
+catalogues or populations were used and how the analysis was
+carried out.  The Sun's motion with respect to a kinematical
+LSR is called the ``standard'' solar motion.  Radial
+velocity corrections to the dynamical LSR are produced by the routine
+sla\_RVLSRD
+and to the adopted kinematical LSR by
+sla\_RVLSRK.
+See the individual specifications for these routines for the
+precise definition of the LSR in each case.
+
+For extragalactic sources, the centre of the Galaxy can be used as
+a standard of rest.  The radial velocity correction from the
+dynamical LSR to the Galactic centre can be obtained by calling
+sla\_RVGALC.
+Its maximum value is 220~km/s.
+
+For very distant sources it is appropriate to work relative
+to the mean motion of the Local Group.  The routine for
+computing the radial velocity correction in this case is
+sla\_RVLG.
+Note that in this case the correction is with respect to the
+dynamical LSR, not the Galactic centre as might be expected.
+This conforms to the IAU definition, and confers immunity from
+revisions of the Galactic rotation speed.
+
+\subsection{Focal-Plane Astrometry}
+The relationship between the position of a star image in
+the focal plane of a telescope and the star's celestial
+coordinates is usually described in terms of the {\it tangent plane}\/
+or {\it gnomonic}\/ projection.  This is the projection produced
+by a pin-hole camera and is a good approximation to the projection
+geometry of a traditional large {\it f}\/-ratio astrographic refractor.
+SLALIB includes a group of routines which transform
+star positions between their observed places on the celestial
+sphere and their \xy\ coordinates in the tangent plane.  The
+spherical coordinate system does not have to be \radec\ but
+usually is.  The so-called {\it standard coordinates}\/ of a star
+are the tangent plane \xy, in radians, with respect to an origin
+at the tangent point, with the $y$-axis pointing north and
+the $x$-axis pointing east (in the direction of increasing $\alpha$).
+The factor relating the standard coordinates to
+the actual \xy\ coordinates in, say, millimetres is simply
+the focal length of the telescope.
+
+Given the \radec\ of the {\it plate centre}\/ (the tangent point)
+and the \radec\ of a star within the field, the standard
+coordinates can be determined by calling
+sla\_S2TP
+(single precision) or
+sla\_DS2TP
+(double precision).  The reverse transformation, where the
+\xy\ is known and we wish to find the \radec, is carried out by calling
+sla\_TP2S
+or
+sla\_DTP2S.
+Occasionally we know the both the \xy\ and the \radec\ of a
+star and need to deduce the \radec\ of the tangent point;
+this can be done by calling
+sla\_TPS2C
+or
+sla\_DTPS2C.
+(All of these transformations apply not just to \radec\ but to
+other spherical coordinate systems, of course.)
+Equivalent (and faster)
+routines are provided which work directly in \xyz\ instead of
+spherical coordinates:
+sla\_V2TP and
+sla\_DV2TP,
+sla\_TP2V and
+sla\_DTP2V,
+sla\_TPV2C and
+sla\_DTPV2C.
+
+Even at the best of times, the tangent plane projection is merely an
+approximation.  Some telescopes and cameras exhibit considerable pincushion
+or barrel distortion and some have a curved focal surface.
+For example, neither Schmidt cameras nor (especially)
+large reflecting telescopes with wide-field corrector lenses
+are adequately modelled by tangent-plane geometry.  In such
+cases, however, it is still possible to do most of the work
+using the (mathematically convenient) tangent-plane
+projection by inserting an extra step which applies or
+removes the distortion peculiar to the system concerned.
+A simple $r_1=r_0(1+Kr_0^2)$ law works well in the
+majority of cases; $r_0$ is the radial distance in the
+tangent plane, $r_1$ is the radial distance after adding
+the distortion, and $K$ is a constant which depends on the
+telescope ($\theta$ is unaffected).  The routine
+sla\_PCD
+applies the distortion to an \xy\ and
+sla\_UNPCD
+removes it.  For \xy\ in radians, $K$ values range from $-1/3$ for the
+tiny amount of barrel distortion in Schmidt geometry to several
+hundred for the serious pincushion distortion
+produced by wide-field correctors in big reflecting telescopes
+(the AAT prime focus triplet corrector is about $K=+178.6$).
+
+SLALIB includes a group of routines which can be put together
+to build a simple plate-reduction program.  The heart of the group is
+sla\_FITXY,
+which fits a linear model to relate two sets of \xy\ coordinates,
+in the case of a plate reduction the measured positions of the
+images of a set of
+reference stars and the standard
+coordinates derived from their catalogue positions.  The
+model is of the form:
+\[x_{p} = a + bx_{m} + cy_{m}\]
+\[y_{p} = d + ex_{m} + fy_{m}\]
+
+where the {\it p}\/ subscript indicates ``predicted'' coordinates
+(the model's approximation to the ideal ``expected'' coordinates) and the
+{\it m}\/ subscript indicates ``measured coordinates''.  The
+six coefficients {\it a--f}\/ can optionally be
+constrained to represent a ``solid body rotation'' free of
+any squash or shear distortions.  Without this constraint
+the model can, to some extent, accommodate effects like refraction,
+allowing mean places to be used directly and
+avoiding the extra complications of a
+full mean-apparent-observed transformation for each star.
+Having obtained the linear model,
+sla\_PXY
+can be used to process the set of measured and expected
+coordinates, giving the predicted coordinates and determining
+the RMS residuals in {\it x}\/ and {\it y}.
+The routine
+sla\_XY2XY
+transforms one \xy\ into another using the linear model.  A model
+can be inverted by calling
+sla\_INVF,
+and decomposed into zero points, scales, $x/y$ nonperpendicularity
+and orientation by calling
+sla\_DCMPF.
+
+\subsection{Numerical Methods}
+SLALIB contains a small number of simple, general-purpose
+numerical-methods routines.  They have no specific
+connection with positional astronomy but have proved useful in
+applications to do with simulation and fitting.
+
+At the heart of many simulation programs is the generation of
+pseudo-random numbers, evenly distributed in a given range:
+sla\_RANDOM
+does this.  Pseudo-random normal deviates, or ``Gaussian
+residuals'', are often required to simulate noise and
+can be generated by means of the function
+sla\_GRESID.
+Neither routine will pass super-sophisticated
+statistical tests, but they work adequately for most
+practical purposes and avoid the need to call non-standard
+library routines peculiar to one sort of computer.
+
+Applications which perform a least-squares fit using a traditional
+normal-equations methods can accomplish the required matrix-inversion
+by calling either
+sla\_SMAT
+(single precision) or
+sla\_DMAT
+(double).  A generally better way to perform such fits is
+to use singular value decomposition.  SLALIB provides a routine
+to do the decomposition itself,
+sla\_SVD,
+and two routines to use the results:
+sla\_SVDSOL
+generates the solution, and
+sla\_SVDCOV
+produces the covariance matrix.
+A simple demonstration of the use of the SLALIB SVD
+routines is given below.  It generates 500 simulated data
+points and fits them to a model which has 4 unknown coefficients.
+(The arrays in the example are sized to accept up to 1000
+points and 20 unknowns.)  The model is:
+\[ y = C_{1} +C_{2}x +C_{3}sin{x} +C_{4}cos{x} \]
+The test values for the four coefficients are
+$C_1\!=\!+50.0$,
+$C_2\!=\!-2.0$,
+$C_3\!=\!-10.0$ and
+$C_4\!=\!+25.0$.
+Gaussian noise, $\sigma=5.0$, is added to each ``observation''.
+\goodbreak
+\begin{verbatim}
+            IMPLICIT NONE
+
+      *  Sizes of arrays, physical and logical
+            INTEGER MP,NP,NC,M,N
+            PARAMETER (MP=1000,NP=10,NC=20,M=500,N=4)
+
+      *  The unknowns we are going to solve for
+            DOUBLE PRECISION C1,C2,C3,C4
+            PARAMETER (C1=50D0,C2=-2D0,C3=-10D0,C4=25D0)
+
+      *  Arrays
+            DOUBLE PRECISION A(MP,NP),W(NP),V(NP,NP),
+           :                 WORK(NP),B(MP),X(NP),CVM(NC,NC)
+
+            DOUBLE PRECISION VAL,BF1,BF2,BF3,BF4,SD2,D,VAR
+            REAL sla_GRESID
+            INTEGER I,J
+
+      *  Fill the design matrix
+            DO I=1,M
+
+      *     Dummy independent variable
+               VAL=DBLE(I)/10D0
+
+      *     The basis functions
+               BF1=1D0
+               BF2=VAL
+               BF3=SIN(VAL)
+               BF4=COS(VAL)
+
+      *     The observed value, including deliberate Gaussian noise
+               B(I)=C1*BF1+C2*BF2+C3*BF3+C4*BF4+DBLE(sla_GRESID(5.0))
+
+      *     Fill one row of the design matrix
+               A(I,1)=BF1
+               A(I,2)=BF2
+               A(I,3)=BF3
+               A(I,4)=BF4
+            END DO
+
+      *  Factorize the design matrix, solve and generate covariance matrix
+            CALL sla_SVD(M,N,MP,NP,A,W,V,WORK,J)
+            CALL sla_SVDSOL(M,N,MP,NP,B,A,W,V,WORK,X)
+            CALL sla_SVDCOV(N,NP,NC,W,V,WORK,CVM)
+
+      *  Compute the variance
+            SD2=0D0
+            DO I=1,M
+               VAL=DBLE(I)/10D0
+               BF1=1D0
+               BF2=VAL
+               BF3=SIN(VAL)
+               BF4=COS(VAL)
+               D=B(I)-(X(1)*BF1+X(2)*BF2+X(3)*BF3+X(4)*BF4)
+               SD2=SD2+D*D
+            END DO
+            VAR=SD2/DBLE(M)
+
+      *  Report the RMS and the solution
+            WRITE (*,'(1X,''RMS ='',F5.2/)') SQRT(VAR)
+            DO I=1,N
+               WRITE (*,'(1X,''C'',I1,'' ='',F7.3,'' +/-'',F6.3)')
+           :                                         I,X(I),SQRT(VAR*CVM(I,I))
+            END DO
+            END
+\end{verbatim}
+\goodbreak
+The program produces output like the following:
+\goodbreak
+\begin{verbatim}
+            RMS = 4.88
+
+            C1 = 50.192 +/- 0.439
+            C2 = -2.002 +/- 0.015
+            C3 = -9.771 +/- 0.310
+            C4 = 25.275 +/- 0.310
+\end{verbatim}
+\goodbreak
+In this above example, essentially
+identical results would be obtained if the more
+commonplace normal-equations method had been used, and the large
+$1000\times20$ array would have been avoided.  However, the SVD method
+comes into its own when the opportunity is taken to edit the W-matrix
+(the so-called ``singular values'') in order to control
+possible ill-conditioning.  The procedure involves replacing with
+zeroes any W-elements smaller than a nominated value, for example
+0.001 times the largest W-element.  Small W-elements indicate
+ill-conditioning, which in the case of the normal-equations
+method would produce spurious large coefficient values and
+possible arithmetic overflows.  Using SVD, the effect on the solution
+of setting suspiciously small W-elements to zero is to restrain
+the offending coefficients from moving very far.  The
+fact that action was taken can be reported to show the program user that
+something is amiss.  Furthermore, if element W(J) was set to zero,
+the row numbers of the two biggest elements in the Jth column of the
+V-matrix identify the pair of solution coefficients that are
+dependent.
+
+A more detailed description of SVD and its use in least-squares
+problems would be out of place here, and the reader is urged
+to refer to the relevant sections of the book {\it Numerical Recipes}
+(Press {\it et al.}, Cambridge University Press, 1987).
+
+The routines
+sla\_COMBN
+and
+sla\_PERMUT
+are useful for problems which involve combinations (different subsets)
+and permutations (different orders).
+Both return the next in a sequence of results, cycling through all the
+possible results as the routine is called repeatedly.
+
+\vfill
+
+\pagebreak
+
+\section{SUMMARY OF CALLS}
+The basic trigonometrical and numerical facilities are supplied in both single
+and double precision versions.
+Most of the more esoteric position and time routines use double precision
+arguments only, even in cases where single precision would normally be adequate
+in practice.
+Certain routines with modest accuracy objectives are supplied in
+single precision versions only.
+In the calling sequences which follow, no attempt has been made
+to distinguish between single and double precision argument names,
+and frequently the same name is used on different occasions to
+mean different things.
+However, none of the routines uses a mixture of single and
+double precision arguments;  each routine is either wholly
+single precision or wholly double precision.
+
+In the classified list, below,
+{\it subroutine}\/ subprograms are those whose names and argument lists
+are preceded by `CALL', whereas {\it function}\/ subprograms are
+those beginning `R=' (when the result is REAL) or `D=' (when
+the result is DOUBLE~PRECISION).
+
+The list is, of course, merely for quick reference;  inexperienced
+users {\bf must} refer to the detailed specifications given later.
+In particular, {\bf don't guess} whether arguments are single or
+double precision; the result could be a program that happens to
+works on one sort of machine but not on another.
+
+\callhead{String Decoding}
+\begin{callset}
+\subp{CALL sla\_INTIN (STRING, NSTRT, IRESLT, JFLAG)}
+   Convert free-format string into integer
+\subq{CALL sla\_FLOTIN (STRING, NSTRT, RESLT, JFLAG)}
+     {CALL sla\_DFLTIN (STRING, NSTRT, DRESLT, JFLAG)}
+   Convert free-format string into floating-point number
+\subq{CALL sla\_AFIN (STRING, NSTRT, RESLT, JFLAG)}
+     {CALL sla\_DAFIN (STRING, NSTRT, DRESLT, JFLAG)}
+   Convert free-format string from deg,arcmin,arcsec to radians
+\end{callset}
+
+\callhead{Sexagesimal Conversions}
+\begin{callset}
+\subq{CALL sla\_CTF2D (IHOUR, IMIN, SEC, DAYS, J)}
+     {CALL sla\_DTF2D (IHOUR, IMIN, SEC, DAYS, J)}
+   Hours, minutes, seconds to days
+\subq{CALL sla\_CD2TF (NDP, DAYS, SIGN, IHMSF)}
+     {CALL sla\_DD2TF (NDP, DAYS, SIGN, IHMSF)}
+   Days to hours, minutes, seconds
+\subq{CALL sla\_CTF2R (IHOUR, IMIN, SEC, RAD, J)}
+     {CALL sla\_DTF2R (IHOUR, IMIN, SEC, RAD, J)}
+   Hours, minutes, seconds to radians
+\subq{CALL sla\_CR2TF (NDP, ANGLE, SIGN, IHMSF)}
+     {CALL sla\_DR2TF (NDP, ANGLE, SIGN, IHMSF)}
+   Radians to hours, minutes, seconds
+\subq{CALL sla\_CAF2R (IDEG, IAMIN, ASEC, RAD, J)}
+     {CALL sla\_DAF2R (IDEG, IAMIN, ASEC, RAD, J)}
+   Degrees, arcminutes, arcseconds to radians
+\subq{CALL sla\_CR2AF (NDP, ANGLE, SIGN, IDMSF)}
+     {CALL sla\_DR2AF (NDP, ANGLE, SIGN, IDMSF)}
+   Radians to degrees, arcminutes, arcseconds
+\end{callset}
+
+\callhead{Angles, Vectors and Rotation Matrices}
+\begin{callset}
+\subq{R~=~sla\_RANGE (ANGLE)}
+     {D~=~sla\_DRANGE (ANGLE)}
+   Normalize angle into range $\pm\pi$
+\subq{R~=~sla\_RANORM (ANGLE)}
+     {D~=~sla\_DRANRM (ANGLE)}
+   Normalize angle into range $0\!-\!2\pi$
+\subq{CALL sla\_CS2C (A, B, V)}
+     {CALL sla\_DCS2C (A, B, V)}
+   Spherical coordinates to \xyz
+\subq{CALL sla\_CC2S (V, A, B)}
+     {CALL sla\_DCC2S (V, A, B)}
+   \xyz\ to spherical coordinates
+\subq{R~=~sla\_VDV (VA, VB)}
+     {D~=~sla\_DVDV (VA, VB)}
+   Scalar product of two 3-vectors
+\subq{CALL sla\_VXV (VA, VB, VC)}
+     {CALL sla\_DVXV (VA, VB, VC)}
+   Vector product of two 3-vectors
+\subq{CALL sla\_VN (V, UV, VM)}
+     {CALL sla\_DVN (V, UV, VM)}
+   Normalize a 3-vector also giving the modulus
+\subq{R~=~sla\_SEP (A1, B1, A2, B2)}
+     {D~=~sla\_DSEP (A1, B1, A2, B2)}
+   Angle between two points on a sphere
+\subq{R~=~sla\_SEPV (V1, V2)}
+     {D~=~sla\_DSEPV (V1, V2)}
+   Angle between two \xyz\ vectors
+\subq{R~=~sla\_BEAR (A1, B1, A2, B2)}
+     {D~=~sla\_DBEAR (A1, B1, A2, B2)}
+   Direction of one point on a sphere seen from another
+\subq{R~=~sla\_PAV (V1, V2)}
+     {D~=~sla\_DPAV (V1, V2)}
+   Position-angle of one \xyz\ with respect to another
+\subq{CALL sla\_EULER (ORDER, PHI, THETA, PSI, RMAT)}
+     {CALL sla\_DEULER (ORDER, PHI, THETA, PSI, RMAT)}
+   Form rotation matrix from three Euler angles
+\subq{CALL sla\_AV2M (AXVEC, RMAT)}
+     {CALL sla\_DAV2M (AXVEC, RMAT)}
+   Form rotation matrix from axial vector
+\subq{CALL sla\_M2AV (RMAT, AXVEC)}
+     {CALL sla\_DM2AV (RMAT, AXVEC)}
+   Determine axial vector from rotation matrix
+\subq{CALL sla\_MXV (RM, VA, VB)}
+     {CALL sla\_DMXV (DM, VA, VB)}
+   Rotate vector forwards
+\subq{CALL sla\_IMXV (RM, VA, VB)}
+     {CALL sla\_DIMXV (DM, VA, VB)}
+   Rotate vector backwards
+\subq{CALL sla\_MXM (A, B, C)}
+     {CALL sla\_DMXM (A, B, C)}
+   Product of two 3x3 matrices
+\subq{CALL sla\_CS2C6 (A, B, R, AD, BD, RD, V)}
+     {CALL sla\_DS2C6 (A, B, R, AD, BD, RD, V)}
+   Conversion of position and velocity in spherical
+     coordinates to Cartesian coordinates
+\subq{CALL sla\_CC62S (V, A, B, R, AD, BD, RD)}
+     {CALL sla\_DC62S (V, A, B, R, AD, BD, RD)}
+   Conversion of position and velocity in Cartesian
+     coordinates to spherical coordinates
+\end{callset}
+
+\callhead{Calendars}
+\begin{callset}
+\subp{CALL sla\_CLDJ (IY, IM, ID, DJM, J)}
+   Gregorian Calendar to Modified Julian Date
+\subp{CALL sla\_CALDJ (IY, IM, ID, DJM, J)}
+   Gregorian Calendar to Modified Julian Date,
+     permitting century default
+\subp{CALL sla\_DJCAL (NDP, DJM, IYMDF, J)}
+   Modified Julian Date to Gregorian Calendar,
+     in a form convenient for formatted output
+\subp{CALL sla\_DJCL (DJM, IY, IM, ID, FD, J)}
+   Modified Julian Date to Gregorian Year, Month, Day, Fraction
+\subp{CALL sla\_CALYD (IY, IM, ID, NY, ND, J)}
+   Calendar to year and day in year, permitting century default
+\subp{CALL sla\_CLYD (IY, IM, ID, NY, ND, J)}
+   Calendar to year and day in year
+\subp{D~=~sla\_EPB (DATE)}
+   Modified Julian Date to Besselian Epoch
+\subp{D~=~sla\_EPB2D (EPB)}
+   Besselian Epoch to Modified Julian Date
+\subp{D~=~sla\_EPJ (DATE)}
+   Modified Julian Date to Julian Epoch
+\subp{D~=~sla\_EPJ2D (EPJ)}
+   Julian Epoch to Modified Julian Date
+\end{callset}
+
+\callhead{Time Scales}
+\begin{callset}
+\subp{D~=~sla\_GMST (UT1)}
+   Conversion from Universal Time to sidereal time
+\subp{D~=~sla\_GMSTA (DATE, UT1)}
+   Conversion from Universal Time to sidereal time, rounding errors minimized
+\subp{D~=~sla\_EQEQX (DATE)}
+   Equation of the equinoxes
+\subp{D~=~sla\_DAT (DJU)}
+   Offset of Atomic Time from Coordinated Universal Time: TAI$-$UTC
+\subp{D~=~sla\_DT (EPOCH)}
+   Approximate offset between dynamical time and universal time
+\subp{D~=~sla\_DTT (DJU)}
+   Offset of Terrestrial Time from Coordinated Universal Time: TT$-$UTC
+\subp{D~=~sla\_RCC (TDB, UT1, WL, U, V)}
+   Relativistic clock correction: TDB$-$TT
+\end{callset}
+
+\callhead{Precession and Nutation}
+\begin{callset}
+\subp{CALL sla\_NUT (DATE, RMATN)}
+   Nutation matrix
+\subp{CALL sla\_NUTC (DATE, DPSI, DEPS, EPS0)}
+   Longitude and obliquity components of nutation, and
+     mean obliquity
+\subp{CALL sla\_NUTC80 (DATE, DPSI, DEPS, EPS0)}
+   Longitude and obliquity components of nutation, and
+     mean obliquity, IAU 1980
+\subp{CALL sla\_PREC (EP0, EP1, RMATP)}
+   Precession matrix (IAU)
+\subp{CALL sla\_PRECL (EP0, EP1, RMATP)}
+   Precession matrix (suitable for long periods)
+\subp{CALL sla\_PRENUT (EPOCH, DATE, RMATPN)}
+   Combined precession-nutation matrix
+\subp{CALL sla\_PREBN (BEP0, BEP1, RMATP)}
+   Precession matrix, old system
+\subp{CALL sla\_PRECES (SYSTEM, EP0, EP1, RA, DC)}
+   Precession, in either the old or the new system
+\end{callset}
+
+\callhead{Proper Motion}
+\begin{callset}
+\subp{CALL sla\_PM (R0, D0, PR, PD, PX, RV, EP0, EP1, R1, D1)}
+   Adjust for proper motion
+\end{callset}
+
+\callhead{FK4/FK5/Hipparcos Conversions}
+\begin{callset}
+\subp{CALL sla\_FK425 (\vtop
+                       {\hbox{R1950, D1950, DR1950, DD1950, P1950, V1950,}
+                        \hbox{R2000, D2000, DR2000, DD2000, P2000, V2000)}}}
+   Convert B1950.0 FK4 star data to J2000.0 FK5
+\subp{CALL sla\_FK45Z (R1950, D1950, EPOCH, R2000, D2000)}
+   Convert B1950.0 FK4 position to J2000.0 FK5 assuming zero
+   FK5 proper motion and no parallax
+\subp{CALL sla\_FK524 (\vtop
+                       {\hbox{R2000, D2000, DR2000, DD2000, P2000, V2000,}
+                        \hbox{R1950, D1950, DR1950, DD1950, P1950, V1950)}}}
+   Convert J2000.0 FK5 star data to B1950.0 FK4
+\subp{CALL sla\_FK54Z (R2000, D2000, BEPOCH,
+               R1950, D1950, DR1950, DD1950)}
+   Convert J2000.0 FK5 position to B1950.0 FK4 assuming zero
+   FK5 proper motion and no parallax
+\subp{CALL sla\_FK52H (R5, D5, DR5, DD5, RH, DH, DRH, DDH)}
+   Convert J2000.0 FK5 star data to Hipparcos
+\subp{CALL sla\_FK5HZ (R5, D5, EPOCH, RH, DH )}
+   Convert J2000.0 FK5 position to Hipparcos assuming zero Hipparcos
+   proper motion
+\subp{CALL sla\_H2FK5 (RH, DH, DRH, DDH, R5, D5, DR5, DD5)}
+   Convert Hipparcos star data to J2000.0 FK5
+\subp{CALL sla\_HFK5Z (RH, DH, EPOCH, R5, D5, DR5, DD5)}
+   Convert Hipparcos position to J2000.0 FK5 assuming zero Hipparcos
+   proper motion
+\subp{CALL sla\_DBJIN (STRING, NSTRT, DRESLT, J1, J2)}
+   Like sla\_DFLTIN but with extensions to accept leading `B' and `J'
+\subp{CALL sla\_KBJ (JB, E, K, J)}
+   Select epoch prefix `B' or `J'
+\subp{D~=~sla\_EPCO (K0, K, E)}
+   Convert an epoch into the appropriate form -- `B' or `J'
+\end{callset}
+
+\callhead{Elliptic Aberration}
+\begin{callset}
+\subp{CALL sla\_ETRMS (EP, EV)}
+   E-terms
+\subp{CALL sla\_SUBET (RC, DC, EQ, RM, DM)}
+   Remove the E-terms
+\subp{CALL sla\_ADDET (RM, DM, EQ, RC, DC)}
+   Add the E-terms
+\end{callset}
+
+\callhead{Geographical and Geocentric Coordinates}
+\begin{callset}
+\subp{CALL sla\_OBS (NUMBER, ID, NAME, WLONG, PHI, HEIGHT)}
+   Interrogate list of observatory parameters
+\subp{CALL sla\_GEOC (P, H, R, Z)}
+   Convert geodetic position to geocentric
+\subp{CALL sla\_POLMO (ELONGM, PHIM, XP, YP, ELONG, PHI, DAZ)}
+   Polar motion
+\subp{CALL sla\_PVOBS (P, H, STL, PV)}
+   Position and velocity of observatory
+\end{callset}
+
+\callhead{Apparent and Observed Place}
+\begin{callset}
+\subp{CALL sla\_MAP (RM, DM, PR, PD, PX, RV, EQ, DATE, RA, DA)}
+   Mean place to geocentric apparent place
+\subp{CALL sla\_MAPPA (EQ, DATE, AMPRMS)}
+   Precompute mean to apparent parameters
+\subp{CALL sla\_MAPQK (RM, DM, PR, PD, PX, RV, AMPRMS, RA, DA)}
+   Mean to apparent using precomputed parameters
+\subp{CALL sla\_MAPQKZ (RM, DM, AMPRMS, RA, DA)}
+   Mean to apparent using precomputed parameters, for zero proper
+     motion, parallax and radial velocity
+\subp{CALL sla\_AMP (RA, DA, DATE, EQ, RM, DM)}
+   Geocentric apparent place to mean place
+\subp{CALL sla\_AMPQK (RA, DA, AMPRMS, RM, DM)}
+   Apparent to mean using precomputed parameters
+\subp{CALL sla\_AOP (\vtop
+                      {\hbox{RAP, DAP, UTC, DUT, ELONGM, PHIM, HM, XP, YP,}
+                       \hbox{TDK, PMB, RH, WL, TLR, AOB, ZOB, HOB, DOB, ROB)}}}
+   Apparent place to observed place
+\subp{CALL sla\_AOPPA (\vtop
+                        {\hbox{UTC, DUT, ELONGM, PHIM, HM, XP, YP,}
+                         \hbox{TDK, PMB, RH, WL, TLR, AOPRMS)}}}
+   Precompute apparent to observed parameters
+\subp{CALL sla\_AOPPAT (UTC, AOPRMS)}
+   Update sidereal time in apparent to observed parameters
+\subp{CALL sla\_AOPQK (RAP, DAP, AOPRMS, AOB, ZOB, HOB, DOB, ROB)}
+   Apparent to observed using precomputed parameters
+\subp{CALL sla\_OAP (\vtop
+                     {\hbox{TYPE, OB1, OB2, UTC, DUT, ELONGM, PHIM, HM, XP, YP,}
+                      \hbox{TDK, PMB, RH, WL, TLR, RAP, DAP)}}}
+   Observed to apparent
+\subp{CALL sla\_OAPQK (TYPE, OB1, OB2, AOPRMS, RA, DA)}
+   Observed to apparent using precomputed parameters
+\end{callset}
+
+\callhead{Azimuth and Elevation}
+\begin{callset}
+\subp{CALL sla\_ALTAZ (\vtop
+               {\hbox{HA, DEC, PHI,}
+                \hbox{AZ, AZD, AZDD, EL, ELD, ELDD, PA, PAD, PADD)}}}
+   Positions, velocities {\it etc.}\ for an altazimuth mount
+\subq{CALL sla\_E2H (HA, DEC, PHI, AZ, EL)}
+     {CALL sla\_DE2H (HA, DEC, PHI, AZ, EL)}
+   \hadec\ to \azel
+\subq{CALL sla\_H2E (AZ, EL, PHI, HA, DEC)}
+     {CALL sla\_DH2E (AZ, EL, PHI, HA, DEC)}
+   \azel\ to \hadec
+\subp{CALL sla\_PDA2H (P, D, A, H1, J1, H2, J2)}
+   Hour Angle corresponding to a given azimuth
+\subp{CALL sla\_PDQ2H (P, D, Q, H1, J1, H2, J2)}
+   Hour Angle corresponding to a given parallactic angle
+\subp{D~=~sla\_PA (HA, DEC, PHI)}
+   \hadec\ to parallactic angle
+\subp{D~=~sla\_ZD (HA, DEC, PHI)}
+   \hadec\ to zenith distance
+\end{callset}
+
+\callhead{Refraction and Air Mass}
+\begin{callset}
+\subp{CALL sla\_REFRO (ZOBS, HM, TDK, PMB, RH, WL, PHI, TLR, EPS, REF)}
+   Change in zenith distance due to refraction
+\subp{CALL sla\_REFCO (HM, TDK, PMB, RH, WL, PHI, TLR, EPS, REFA, REFB)}
+   Constants for simple refraction model (accurate)
+\subp{CALL sla\_REFCOQ (TDK, PMB, RH, WL, REFA, REFB)}
+   Constants for simple refraction model (fast)
+\subp{CALL sla\_ATMDSP ( TDK, PMB, RH, WL1, REFA1, REFB1, WL2, REFA2, REFB2 )}
+   Adjust refraction constants for colour
+\subp{CALL sla\_REFZ (ZU, REFA, REFB, ZR)}
+   Unrefracted to refracted ZD, simple model
+\subp{CALL sla\_REFV (VU, REFA, REFB, VR)}
+   Unrefracted to refracted \azel\ vector, simple model
+\subp{D~=~sla\_AIRMAS (ZD)}
+   Air mass
+\end{callset}
+
+\callhead{Ecliptic Coordinates}
+\begin{callset}
+\subp{CALL sla\_ECMAT (DATE, RMAT)}
+   Equatorial to ecliptic rotation matrix
+\subp{CALL sla\_EQECL (DR, DD, DATE, DL, DB)}
+   J2000.0 `FK5' to ecliptic coordinates
+\subp{CALL sla\_ECLEQ (DL, DB, DATE, DR, DD)}
+   Ecliptic coordinates to J2000.0 `FK5'
+\end{callset}
+
+\callhead{Galactic Coordinates}
+\begin{callset}
+\subp{CALL sla\_EG50 (DR, DD, DL, DB)}
+   B1950.0 `FK4' to galactic
+\subp{CALL sla\_GE50 (DL, DB, DR, DD)}
+   Galactic to B1950.0 `FK4'
+\subp{CALL sla\_EQGAL (DR, DD, DL, DB)}
+   J2000.0 `FK5' to galactic
+\subp{CALL sla\_GALEQ (DL, DB, DR, DD)}
+   Galactic to J2000.0 `FK5'
+\end{callset}
+
+\callhead{Supergalactic Coordinates}
+\begin{callset}
+\subp{CALL sla\_GALSUP (DL, DB, DSL, DSB)}
+   Galactic to supergalactic
+\subp{CALL sla\_SUPGAL (DSL, DSB, DL, DB)}
+   Supergalactic to galactic
+\end{callset}
+
+\callhead{Ephemerides}
+\begin{callset}
+\subp{CALL sla\_DMOON (DATE, PV)}
+   Approximate geocentric position and velocity of the Moon
+\subp{CALL sla\_EARTH (IY, ID, FD, PV)}
+   Approximate heliocentric position and velocity of the Earth
+\subp{CALL sla\_EPV (DATE, DPH, DVH, DPB, DVB )}
+   Heliocentric and barycentric position and velocity of the Earth
+\subp{CALL sla\_EVP (DATE, DEQX, DVB, DPB, DVH, DPH)}
+   Barycentric and heliocentric velocity and position of the Earth
+\subp{CALL sla\_MOON (IY, ID, FD, PV)}
+   Approximate geocentric position and velocity of the Moon
+\subp{CALL sla\_PLANET (DATE, NP, PV, JSTAT)}
+   Approximate heliocentric position and velocity of a planet
+\subp{CALL sla\_RDPLAN (DATE, NP, ELONG, PHI, RA, DEC, DIAM)}
+   Approximate topocentric apparent place of a planet
+\subp{CALL sla\_PLANEL (\vtop
+                       {\hbox{DATE, JFORM, EPOCH, ORBINC, ANODE, PERIH,}
+                      \hbox{AORQ, E, AORL, DM, PV, JSTAT)}}}
+   Heliocentric position and velocity of a planet, asteroid or
+   comet, starting from orbital elements
+\subp{CALL sla\_PLANTE (\vtop
+                       {\hbox{DATE, ELONG, PHI, JFORM, EPOCH, ORBINC, ANODE,}
+                      \hbox{PERIH, AORQ, E, AORL, DM, RA, DEC, R, JSTAT)}}}
+   Topocentric apparent place of a Solar-System object whose
+   heliocentric orbital elements are known
+\subp{CALL sla\_PLANTU (DATE, ELONG, PHI, U, RA, DEC, R, JSTAT)}
+   Topocentric apparent place of a Solar-System object whose
+   heliocentric universal orbital elements are known
+\subp{CALL sla\_PV2EL (\vtop
+                      {\hbox{PV, DATE, PMASS, JFORMR, JFORM, EPOCH, ORBINC,}
+                     \hbox{ANODE, PERIH, AORQ, E, AORL, DM, JSTAT)}}}
+   Orbital elements of a planet from instantaneous position and velocity
+\subp{CALL sla\_PERTEL (\vtop
+                       {\hbox{JFORM, DATE0, DATE1,}
+                     \hbox{EPOCH0, ORBI0, ANODE0, PERIH0, AORQ0, E0, AM0,}
+                     \hbox{EPOCH1, ORBI1, ANODE1, PERIH1, AORQ1, E1, AM1,}
+                     \hbox{JSTAT)}}}
+   Update elements by applying perturbations
+\subp{CALL sla\_EL2UE (\vtop
+                      {\hbox{DATE, JFORM, EPOCH, ORBINC, ANODE,}
+                     \hbox{PERIH, AORQ, E, AORL, DM,}
+                     \hbox{U, JSTAT)}}}
+   Transform conventional elements to universal elements
+\subp{CALL sla\_UE2EL (\vtop
+                      {\hbox{U, JFORMR,}
+                     \hbox{JFORM, EPOCH, ORBINC, ANODE, PERIH,}
+                     \hbox{AORQ, E, AORL, DM, JSTAT)}}}
+   Transform universal elements to conventional elements
+\subp{CALL sla\_PV2UE (PV, DATE, PMASS, U, JSTAT)}
+   Package a position and velocity for use as universal elements
+\subp{CALL sla\_UE2PV (DATE, U, PV, JSTAT)}
+   Extract the position and velocity from universal elements
+\subp{CALL sla\_PERTUE (DATE, U, JSTAT)}
+   Update universal elements by applying perturbations
+\subp{R~=~sla\_RVEROT (PHI, RA, DA, ST)}
+   Velocity component due to rotation of the Earth
+\subp{CALL sla\_ECOR (RM, DM, IY, ID, FD, RV, TL)}
+   Components of velocity and light time due to Earth orbital motion
+\subp{R~=~sla\_RVLSRD (R2000, D2000)}
+   Velocity component due to solar motion wrt dynamical LSR
+\subp{R~=~sla\_RVLSRK (R2000, D2000)}
+   Velocity component due to solar motion wrt kinematical LSR
+\subp{R~=~sla\_RVGALC (R2000, D2000)}
+   Velocity component due to rotation of the Galaxy
+\subp{R~=~sla\_RVLG (R2000, D2000)}
+   Velocity component due to rotation and translation of the
+   Galaxy, relative to the mean motion of the local group
+\end{callset}
+
+\callhead{Astrometry}
+\begin{callset}
+\subq{CALL sla\_S2TP (RA, DEC, RAZ, DECZ, XI, ETA, J)}
+     {CALL sla\_DS2TP (RA, DEC, RAZ, DECZ, XI, ETA, J)}
+   Transform spherical coordinates into tangent plane
+\subq{CALL sla\_V2TP (V, V0, XI, ETA, J)}
+     {CALL sla\_DV2TP (V, V0, XI, ETA, J)}
+   Transform \xyz\ into tangent plane coordinates
+\subq{CALL sla\_DTP2S (XI, ETA, RAZ, DECZ, RA, DEC)}
+     {CALL sla\_TP2S (XI, ETA, RAZ, DECZ, RA, DEC)}
+   Transform tangent plane coordinates into spherical coordinates
+\subq{CALL sla\_DTP2V (XI, ETA, V0, V)}
+     {CALL sla\_TP2V (XI, ETA, V0, V)}
+   Transform tangent plane coordinates into \xyz
+\subq{CALL sla\_DTPS2C (XI, ETA, RA, DEC, RAZ1, DECZ1, RAZ2, DECZ2, N)}
+     {CALL sla\_TPS2C (XI, ETA, RA, DEC, RAZ1, DECZ1, RAZ2, DECZ2, N)}
+   Get plate centre from star \radec\ and tangent plane coordinates
+\subq{CALL sla\_DTPV2C (XI, ETA, V, V01, V02, N)}
+     {CALL sla\_TPV2C (XI, ETA, V, V01, V02, N)}
+   Get plate centre from star \xyz\ and tangent plane coordinates
+\subp{CALL sla\_PCD (DISCO, X, Y)}
+   Apply pincushion/barrel distortion
+\subp{CALL sla\_UNPCD (DISCO, X, Y)}
+   Remove pincushion/barrel distortion
+\subp{CALL sla\_FITXY (ITYPE, NP, XYE, XYM, COEFFS, J)}
+   Fit a linear model to relate two sets of \xy\ coordinates
+\subp{CALL sla\_PXY (NP, XYE, XYM, COEFFS, XYP, XRMS, YRMS, RRMS)}
+   Compute predicted coordinates and residuals
+\subp{CALL sla\_INVF (FWDS, BKWDS, J)}
+   Invert a linear model
+\subp{CALL sla\_XY2XY (X1, Y1, COEFFS, X2, Y2)}
+   Transform one \xy
+\subp{CALL sla\_DCMPF (COEFFS, XZ, YZ, XS, YS, PERP, ORIENT)}
+   Decompose a linear fit into scales {\it etc.}
+\end{callset}
+
+\callhead{Numerical Methods}
+\begin{callset}
+\subp{CALL sla\_COMBN (NSEL, NCAND, LIST, J)}
+   Next combination (subset from a specified number of items)
+\subp{CALL sla\_PERMUT (N, ISTATE, IORDER, J)}
+   Next permutation of a specified number of items
+\subq{CALL sla\_SMAT (N, A, Y, D, JF, IW)}
+     {CALL sla\_DMAT (N, A, Y, D, JF, IW)}
+   Matrix inversion and solution of simultaneous equations
+\subp{CALL sla\_SVD (M, N, MP, NP, A, W, V, WORK, JSTAT)}
+   Singular value decomposition of a matrix
+\subp{CALL sla\_SVDSOL (M, N, MP, NP, B, U, W, V, WORK, X)}
+   Solution from given vector plus SVD
+\subp{CALL sla\_SVDCOV (N, NP, NC, W, V, WORK, CVM)}
+   Covariance matrix from SVD
+\subp{R~=~sla\_RANDOM (SEED)}
+   Generate pseudo-random real number in the range {$0 \leq x < 1$}
+\subp{R~=~sla\_GRESID (S)}
+   Generate pseudo-random normal deviate ($\equiv$ `Gaussian residual')
+\end{callset}
+
+\callhead{Real-time}
+\begin{callset}
+\subp{CALL sla\_WAIT (DELAY)}
+    Interval wait
+\end{callset}
+
+\end{document}
diff --git a/supgal.f b/supgal.f
new file mode 100644
index 0000000000000000000000000000000000000000..a149e79c4ce4fa048a3bd53a6113fda2484819b5
--- /dev/null
+++ b/supgal.f
@@ -0,0 +1,96 @@
+      SUBROUTINE sla_SUPGAL (DSL, DSB, DL, DB)
+*+
+*     - - - - - - -
+*      S U P G A L
+*     - - - - - - -
+*
+*  Transformation from de Vaucouleurs supergalactic coordinates
+*  to IAU 1958 galactic coordinates (double precision)
+*
+*  Given:
+*     DSL,DSB     dp       supergalactic longitude and latitude
+*
+*  Returned:
+*     DL,DB       dp       galactic longitude and latitude L2,B2
+*
+*  (all arguments are radians)
+*
+*  Called:
+*     sla_DCS2C, sla_DIMXV, sla_DCC2S, sla_DRANRM, sla_DRANGE
+*
+*  References:
+*
+*     de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference
+*     Catalogue of Bright Galaxies, U. Texas, page 8.
+*
+*     Systems & Applied Sciences Corp., Documentation for the
+*     machine-readable version of the above catalogue,
+*     Contract NAS 5-26490.
+*
+*    (These two references give different values for the galactic
+*     longitude of the supergalactic origin.  Both are wrong;  the
+*     correct value is L2=137.37.)
+*
+*  P.T.Wallace   Starlink   March 1986
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DSL,DSB,DL,DB
+
+      DOUBLE PRECISION sla_DRANRM,sla_DRANGE
+
+      DOUBLE PRECISION V1(3),V2(3)
+
+*
+*  System of supergalactic coordinates:
+*
+*    SGL   SGB        L2     B2      (deg)
+*     -    +90      47.37  +6.32
+*     0     0         -      0
+*
+*  Galactic to supergalactic rotation matrix:
+*
+      DOUBLE PRECISION RMAT(3,3)
+      DATA RMAT(1,1),RMAT(1,2),RMAT(1,3),
+     :     RMAT(2,1),RMAT(2,2),RMAT(2,3),
+     :     RMAT(3,1),RMAT(3,2),RMAT(3,3)/
+     : -0.735742574804D0,+0.677261296414D0,+0.000000000000D0,
+     : -0.074553778365D0,-0.080991471307D0,+0.993922590400D0,
+     : +0.673145302109D0,+0.731271165817D0,+0.110081262225D0/
+
+
+
+*  Spherical to Cartesian
+      CALL sla_DCS2C(DSL,DSB,V1)
+
+*  Supergalactic to galactic
+      CALL sla_DIMXV(RMAT,V1,V2)
+
+*  Cartesian to spherical
+      CALL sla_DCC2S(V2,DL,DB)
+
+*  Express in conventional ranges
+      DL=sla_DRANRM(DL)
+      DB=sla_DRANGE(DB)
+
+      END
diff --git a/svd.f b/svd.f
new file mode 100644
index 0000000000000000000000000000000000000000..543fb0eb7be8f111cf50edbacc0bf416ebb364c6
--- /dev/null
+++ b/svd.f
@@ -0,0 +1,400 @@
+      SUBROUTINE sla_SVD (M, N, MP, NP, A, W, V, WORK, JSTAT)
+*+
+*     - - - -
+*      S V D
+*     - - - -
+*
+*  Singular value decomposition  (double precision)
+*
+*  This routine expresses a given matrix A as the product of
+*  three matrices U, W, V:
+*
+*     A = U x W x VT
+*
+*  Where:
+*
+*     A   is any M (rows) x N (columns) matrix, where M.GE.N
+*     U   is an M x N column-orthogonal matrix
+*     W   is an N x N diagonal matrix with W(I,I).GE.0
+*     VT  is the transpose of an N x N orthogonal matrix
+*
+*     Note that M and N, above, are the LOGICAL dimensions of the
+*     matrices and vectors concerned, which can be located in
+*     arrays of larger PHYSICAL dimensions, given by MP and NP.
+*
+*  Given:
+*     M,N    i         numbers of rows and columns in matrix A
+*     MP,NP  i         physical dimensions of array containing matrix A
+*     A      d(MP,NP)  array containing MxN matrix A
+*
+*  Returned:
+*     A      d(MP,NP)  array containing MxN column-orthogonal matrix U
+*     W      d(N)      NxN diagonal matrix W (diagonal elements only)
+*     V      d(NP,NP)  array containing NxN orthogonal matrix V
+*     WORK   d(N)      workspace
+*     JSTAT  i         0 = OK, -1 = A wrong shape, >0 = index of W
+*                      for which convergence failed.  See note 2, below.
+*
+*   Notes:
+*
+*   1)  V contains matrix V, not the transpose of matrix V.
+*
+*   2)  If the status JSTAT is greater than zero, this need not
+*       necessarily be treated as a failure.  It means that, due to
+*       chance properties of the matrix A, the QR transformation
+*       phase of the routine did not fully converge in a predefined
+*       number of iterations, something that very seldom occurs.
+*       When this condition does arise, it is possible that the
+*       elements of the diagonal matrix W have not been correctly
+*       found.  However, in practice the results are likely to
+*       be trustworthy.  Applications should report the condition
+*       as a warning, but then proceed normally.
+*
+*  References:
+*     The algorithm is an adaptation of the routine SVD in the EISPACK
+*     library (Garbow et al 1977, EISPACK Guide Extension, Springer
+*     Verlag), which is a FORTRAN 66 implementation of the Algol
+*     routine SVD of Wilkinson & Reinsch 1971 (Handbook for Automatic
+*     Computation, vol 2, ed Bauer et al, Springer Verlag).  These
+*     references give full details of the algorithm used here.  A good
+*     account of the use of SVD in least squares problems is given in
+*     Numerical Recipes (Press et al 1986, Cambridge University Press),
+*     which includes another variant of the EISPACK code.
+*
+*  Last revision:   8 September 2005
+*
+*  Copyright P.T.Wallace.  All rights reserved.
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER M,N,MP,NP
+      DOUBLE PRECISION A(MP,NP),W(N),V(NP,NP),WORK(N)
+      INTEGER JSTAT
+
+*  Maximum number of iterations in QR phase
+      INTEGER ITMAX
+      PARAMETER (ITMAX=30)
+
+      INTEGER L,L1,I,K,J,K1,ITS,I1
+      LOGICAL CANCEL
+      DOUBLE PRECISION G,SCALE,AN,S,X,F,H,C,Y,Z
+
+
+
+*  Variable initializations to avoid compiler warnings.
+      L = 0
+      L1 = 0
+
+*  Check that the matrix is the right shape
+      IF (M.LT.N) THEN
+
+*     No:  error status
+         JSTAT = -1
+
+      ELSE
+
+*     Yes:  preset the status to OK
+         JSTAT = 0
+
+*
+*     Householder reduction to bidiagonal form
+*     ----------------------------------------
+
+         G = 0D0
+         SCALE = 0D0
+         AN = 0D0
+         DO I=1,N
+            L = I+1
+            WORK(I) = SCALE*G
+            G = 0D0
+            S = 0D0
+            SCALE = 0D0
+            IF (I.LE.M) THEN
+               DO K=I,M
+                  SCALE = SCALE+ABS(A(K,I))
+               END DO
+               IF (SCALE.NE.0D0) THEN
+                  DO K=I,M
+                     X = A(K,I)/SCALE
+                     A(K,I) = X
+                     S = S+X*X
+                  END DO
+                  F = A(I,I)
+                  G = -SIGN(SQRT(S),F)
+                  H = F*G-S
+                  A(I,I) = F-G
+                  IF (I.NE.N) THEN
+                     DO J=L,N
+                        S = 0D0
+                        DO K=I,M
+                           S = S+A(K,I)*A(K,J)
+                        END DO
+                        F = S/H
+                        DO K=I,M
+                           A(K,J) = A(K,J)+F*A(K,I)
+                        END DO
+                     END DO
+                  END IF
+                  DO K=I,M
+                     A(K,I) = SCALE*A(K,I)
+                  END DO
+               END IF
+            END IF
+            W(I) = SCALE*G
+            G = 0D0
+            S = 0D0
+            SCALE = 0D0
+            IF (I.LE.M .AND. I.NE.N) THEN
+               DO K=L,N
+                  SCALE = SCALE+ABS(A(I,K))
+               END DO
+               IF (SCALE.NE.0D0) THEN
+                  DO K=L,N
+                     X = A(I,K)/SCALE
+                     A(I,K) = X
+                     S = S+X*X
+                  END DO
+                  F = A(I,L)
+                  G = -SIGN(SQRT(S),F)
+                  H = F*G-S
+                  A(I,L) = F-G
+                  DO K=L,N
+                     WORK(K) = A(I,K)/H
+                  END DO
+                  IF (I.NE.M) THEN
+                     DO J=L,M
+                        S = 0D0
+                        DO K=L,N
+                           S = S+A(J,K)*A(I,K)
+                        END DO
+                        DO K=L,N
+                           A(J,K) = A(J,K)+S*WORK(K)
+                        END DO
+                     END DO
+                  END IF
+                  DO K=L,N
+                     A(I,K) = SCALE*A(I,K)
+                  END DO
+               END IF
+            END IF
+
+*        Overestimate of largest column norm for convergence test
+            AN = MAX(AN,ABS(W(I))+ABS(WORK(I)))
+
+         END DO
+
+*
+*     Accumulation of right-hand transformations
+*     ------------------------------------------
+
+         DO I=N,1,-1
+            IF (I.NE.N) THEN
+               IF (G.NE.0D0) THEN
+                  DO J=L,N
+                     V(J,I) = (A(I,J)/A(I,L))/G
+                  END DO
+                  DO J=L,N
+                     S = 0D0
+                     DO K=L,N
+                        S = S+A(I,K)*V(K,J)
+                     END DO
+                     DO K=L,N
+                        V(K,J) = V(K,J)+S*V(K,I)
+                     END DO
+                  END DO
+               END IF
+               DO J=L,N
+                  V(I,J) = 0D0
+                  V(J,I) = 0D0
+               END DO
+            END IF
+            V(I,I) = 1D0
+            G = WORK(I)
+            L = I
+         END DO
+
+*
+*     Accumulation of left-hand transformations
+*     -----------------------------------------
+
+         DO I=N,1,-1
+            L = I+1
+            G = W(I)
+            IF (I.NE.N) THEN
+               DO J=L,N
+                  A(I,J) = 0D0
+               END DO
+            END IF
+            IF (G.NE.0D0) THEN
+               IF (I.NE.N) THEN
+                  DO J=L,N
+                     S = 0D0
+                     DO K=L,M
+                        S = S+A(K,I)*A(K,J)
+                     END DO
+                     F = (S/A(I,I))/G
+                     DO K=I,M
+                        A(K,J) = A(K,J)+F*A(K,I)
+                     END DO
+                  END DO
+               END IF
+               DO J=I,M
+                  A(J,I) = A(J,I)/G
+               END DO
+            ELSE
+               DO J=I,M
+                  A(J,I) = 0D0
+               END DO
+            END IF
+            A(I,I) = A(I,I)+1D0
+         END DO
+
+*
+*     Diagonalisation of the bidiagonal form
+*     --------------------------------------
+
+         DO K=N,1,-1
+            K1 = K-1
+
+*        Iterate until converged
+            ITS = 0
+            DO WHILE (ITS.LT.ITMAX)
+               ITS = ITS+1
+
+*           Test for splitting into submatrices
+               CANCEL = .TRUE.
+               DO L=K,1,-1
+                  L1 = L-1
+                  IF (AN+ABS(WORK(L)).EQ.AN) THEN
+                     CANCEL = .FALSE.
+                     GO TO 10
+                  END IF
+*              (Following never attempted for L=1 because WORK(1) is zero)
+                  IF (AN+ABS(W(L1)).EQ.AN) GO TO 10
+               END DO
+ 10            CONTINUE
+
+*           Cancellation of WORK(L) if L>1
+               IF (CANCEL) THEN
+                  C = 0D0
+                  S = 1D0
+                  DO I=L,K
+                     F = S*WORK(I)
+                     IF (AN+ABS(F).EQ.AN) GO TO 20
+                     G = W(I)
+                     H = SQRT(F*F+G*G)
+                     W(I) = H
+                     C = G/H
+                     S = -F/H
+                     DO J=1,M
+                        Y = A(J,L1)
+                        Z = A(J,I)
+                        A(J,L1) = Y*C+Z*S
+                        A(J,I) = -Y*S+Z*C
+                     END DO
+                  END DO
+ 20               CONTINUE
+               END IF
+
+*           Converged?
+               Z = W(K)
+               IF (L.EQ.K) THEN
+
+*              Yes:  stop iterating
+                  ITS = ITMAX
+
+*              Ensure singular values non-negative
+                  IF (Z.LT.0D0) THEN
+                     W(K) = -Z
+                     DO J=1,N
+                        V(J,K) = -V(J,K)
+                     END DO
+                  END IF
+               ELSE
+
+*              Not converged yet:  set status if iteration limit reached
+                  IF (ITS.EQ.ITMAX) JSTAT = K
+
+*              Shift from bottom 2x2 minor
+                  X = W(L)
+                  Y = W(K1)
+                  G = WORK(K1)
+                  H = WORK(K)
+                  F = ((Y-Z)*(Y+Z)+(G-H)*(G+H))/(2D0*H*Y)
+                  IF (ABS(F).LE.1D15) THEN
+                     G = SQRT(F*F+1D0)
+                  ELSE
+                     G = ABS(F)
+                  END IF
+                  F = ((X-Z)*(X+Z)+H*(Y/(F+SIGN(G,F))-H))/X
+
+*              Next QR transformation
+                  C = 1D0
+                  S = 1D0
+                  DO I1=L,K1
+                     I = I1+1
+                     G = WORK(I)
+                     Y = W(I)
+                     H = S*G
+                     G = C*G
+                     Z = SQRT(F*F+H*H)
+                     WORK(I1) = Z
+                     IF (Z.NE.0D0) THEN
+                        C = F/Z
+                        S = H/Z
+                     ELSE
+                        C = 1D0
+                        S = 0D0
+                     END IF
+                     F = X*C+G*S
+                     G = -X*S+G*C
+                     H = Y*S
+                     Y = Y*C
+                     DO J=1,N
+                        X = V(J,I1)
+                        Z = V(J,I)
+                        V(J,I1) = X*C+Z*S
+                        V(J,I) = -X*S+Z*C
+                     END DO
+                     Z = SQRT(F*F+H*H)
+                     W(I1) = Z
+                     IF (Z.NE.0D0) THEN
+                        C = F/Z
+                        S = H/Z
+                     END IF
+                     F = C*G+S*Y
+                     X = -S*G+C*Y
+                     DO J=1,M
+                        Y = A(J,I1)
+                        Z = A(J,I)
+                        A(J,I1) = Y*C+Z*S
+                        A(J,I) = -Y*S+Z*C
+                     END DO
+                  END DO
+                  WORK(L) = 0D0
+                  WORK(K) = F
+                  W(K) = X
+               END IF
+            END DO
+         END DO
+      END IF
+
+      END
diff --git a/svdcov.f b/svdcov.f
new file mode 100644
index 0000000000000000000000000000000000000000..863e7cc4b039ecf99021c5a9212da62ee93039ca
--- /dev/null
+++ b/svdcov.f
@@ -0,0 +1,77 @@
+      SUBROUTINE sla_SVDCOV (N, NP, NC, W, V, WORK, CVM)
+*+
+*     - - - - - - -
+*      S V D C O V
+*     - - - - - - -
+*
+*  From the W and V matrices from the SVD factorisation of a matrix
+*  (as obtained from the sla_SVD routine), obtain the covariance matrix.
+*
+*  (double precision)
+*
+*  Given:
+*     N      i         number of rows and columns in matrices W and V
+*     NP     i         first dimension of array containing matrix V
+*     NC     i         first dimension of array to receive CVM
+*     W      d(N)      NxN diagonal matrix W (diagonal elements only)
+*     V      d(NP,NP)  array containing NxN orthogonal matrix V
+*
+*  Returned:
+*     WORK   d(N)      workspace
+*     CVM    d(NC,NC)  array to receive covariance matrix
+*
+*  Reference:
+*     Numerical Recipes, section 14.3.
+*
+*  P.T.Wallace   Starlink   December 1988
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER N,NP,NC
+      DOUBLE PRECISION W(N),V(NP,NP),WORK(N),CVM(NC,NC)
+
+      INTEGER I,J,K
+      DOUBLE PRECISION S
+
+
+
+      DO I=1,N
+         S=W(I)
+         IF (S.NE.0D0) THEN
+            WORK(I)=1D0/(S*S)
+         ELSE
+            WORK(I)=0D0
+         END IF
+      END DO
+      DO I=1,N
+         DO J=1,I
+            S=0D0
+            DO K=1,N
+               S=S+V(I,K)*V(J,K)*WORK(K)
+            END DO
+            CVM(I,J)=S
+            CVM(J,I)=S
+         END DO
+      END DO
+
+      END
diff --git a/svdsol.f b/svdsol.f
new file mode 100644
index 0000000000000000000000000000000000000000..b2f61782be3df3ed857867c7a90de6e8a074dd5a
--- /dev/null
+++ b/svdsol.f
@@ -0,0 +1,126 @@
+      SUBROUTINE sla_SVDSOL (M, N, MP, NP, B, U, W, V, WORK, X)
+*+
+*     - - - - - - -
+*      S V D S O L
+*     - - - - - - -
+*
+*  From a given vector and the SVD of a matrix (as obtained from
+*  the SVD routine), obtain the solution vector (double precision)
+*
+*  This routine solves the equation:
+*
+*     A . x = b
+*
+*  where:
+*
+*     A   is a given M (rows) x N (columns) matrix, where M.GE.N
+*     x   is the N-vector we wish to find
+*     b   is a given M-vector
+*
+*  by means of the Singular Value Decomposition method (SVD).  In
+*  this method, the matrix A is first factorised (for example by
+*  the routine sla_SVD) into the following components:
+*
+*     A = U x W x VT
+*
+*  where:
+*
+*     A   is the M (rows) x N (columns) matrix
+*     U   is an M x N column-orthogonal matrix
+*     W   is an N x N diagonal matrix with W(I,I).GE.0
+*     VT  is the transpose of an NxN orthogonal matrix
+*
+*     Note that M and N, above, are the LOGICAL dimensions of the
+*     matrices and vectors concerned, which can be located in
+*     arrays of larger PHYSICAL dimensions MP and NP.
+*
+*  The solution is found from the expression:
+*
+*     x = V . [diag(1/Wj)] . (transpose(U) . b)
+*
+*  Notes:
+*
+*  1)  If matrix A is square, and if the diagonal matrix W is not
+*      adjusted, the method is equivalent to conventional solution
+*      of simultaneous equations.
+*
+*  2)  If M>N, the result is a least-squares fit.
+*
+*  3)  If the solution is poorly determined, this shows up in the
+*      SVD factorisation as very small or zero Wj values.  Where
+*      a Wj value is small but non-zero it can be set to zero to
+*      avoid ill effects.  The present routine detects such zero
+*      Wj values and produces a sensible solution, with highly
+*      correlated terms kept under control rather than being allowed
+*      to elope to infinity, and with meaningful values for the
+*      other terms.
+*
+*  Given:
+*     M,N    i         numbers of rows and columns in matrix A
+*     MP,NP  i         physical dimensions of array containing matrix A
+*     B      d(M)      known vector b
+*     U      d(MP,NP)  array containing MxN matrix U
+*     W      d(N)      NxN diagonal matrix W (diagonal elements only)
+*     V      d(NP,NP)  array containing NxN orthogonal matrix V
+*
+*  Returned:
+*     WORK   d(N)      workspace
+*     X      d(N)      unknown vector x
+*
+*  Reference:
+*     Numerical Recipes, section 2.9.
+*
+*  P.T.Wallace   Starlink   29 October 1993
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      INTEGER M,N,MP,NP
+      DOUBLE PRECISION B(M),U(MP,NP),W(N),V(NP,NP),WORK(N),X(N)
+
+      INTEGER J,I,JJ
+      DOUBLE PRECISION S
+
+
+
+*  Calculate [diag(1/Wj)] . transpose(U) . b (or zero for zero Wj)
+      DO J=1,N
+         S=0D0
+         IF (W(J).NE.0D0) THEN
+            DO I=1,M
+               S=S+U(I,J)*B(I)
+            END DO
+            S=S/W(J)
+         END IF
+         WORK(J)=S
+      END DO
+
+*  Multiply by matrix V to get result
+      DO J=1,N
+         S=0D0
+         DO JJ=1,N
+            S=S+V(J,JJ)*WORK(JJ)
+         END DO
+         X(J)=S
+      END DO
+
+      END
diff --git a/tp2s.f b/tp2s.f
new file mode 100644
index 0000000000000000000000000000000000000000..7bd65a11280d633c2f393bf4bab14a63e440fc06
--- /dev/null
+++ b/tp2s.f
@@ -0,0 +1,59 @@
+      SUBROUTINE sla_TP2S (XI, ETA, RAZ, DECZ, RA, DEC)
+*+
+*     - - - - -
+*      T P 2 S
+*     - - - - -
+*
+*  Transform tangent plane coordinates into spherical
+*  (single precision)
+*
+*  Given:
+*     XI,ETA      real  tangent plane rectangular coordinates
+*     RAZ,DECZ    real  spherical coordinates of tangent point
+*
+*  Returned:
+*     RA,DEC      real  spherical coordinates (0-2pi,+/-pi/2)
+*
+*  Called:        sla_RANORM
+*
+*  P.T.Wallace   Starlink   24 July 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL XI,ETA,RAZ,DECZ,RA,DEC
+
+      REAL sla_RANORM
+
+      REAL SDECZ,CDECZ,DENOM
+
+
+
+      SDECZ=SIN(DECZ)
+      CDECZ=COS(DECZ)
+
+      DENOM=CDECZ-ETA*SDECZ
+
+      RA=sla_RANORM(ATAN2(XI,DENOM)+RAZ)
+      DEC=ATAN2(SDECZ+ETA*CDECZ,SQRT(XI*XI+DENOM*DENOM))
+
+      END
diff --git a/tp2v.f b/tp2v.f
new file mode 100644
index 0000000000000000000000000000000000000000..32d4805b262430dc428b576499b0d79f7374af4a
--- /dev/null
+++ b/tp2v.f
@@ -0,0 +1,73 @@
+      SUBROUTINE sla_TP2V (XI, ETA, V0, V)
+*+
+*     - - - - -
+*      T P 2 V
+*     - - - - -
+*
+*  Given the tangent-plane coordinates of a star and the direction
+*  cosines of the tangent point, determine the direction cosines
+*  of the star.
+*
+*  (single precision)
+*
+*  Given:
+*     XI,ETA    r       tangent plane coordinates of star
+*     V0        r(3)    direction cosines of tangent point
+*
+*  Returned:
+*     V         r(3)    direction cosines of star
+*
+*  Notes:
+*
+*  1  If vector V0 is not of unit length, the returned vector V will
+*     be wrong.
+*
+*  2  If vector V0 points at a pole, the returned vector V will be
+*     based on the arbitrary assumption that the RA of the tangent
+*     point is zero.
+*
+*  3  This routine is the Cartesian equivalent of the routine sla_TP2S.
+*
+*  P.T.Wallace   Starlink   11 February 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL XI,ETA,V0(3),V(3)
+
+      REAL X,Y,Z,F,R
+
+
+      X=V0(1)
+      Y=V0(2)
+      Z=V0(3)
+      F=SQRT(1.0+XI*XI+ETA*ETA)
+      R=SQRT(X*X+Y*Y)
+      IF (R.EQ.0.0) THEN
+         R=1E-20
+         X=R
+      END IF
+      V(1)=(X-(XI*Y+ETA*X*Z)/R)/F
+      V(2)=(Y+(XI*X-ETA*Y*Z)/R)/F
+      V(3)=(Z+ETA*R)/F
+
+      END
diff --git a/tps2c.f b/tps2c.f
new file mode 100644
index 0000000000000000000000000000000000000000..1d5ee39aed0f600357ce10d0cab0eeccc5bfdc3f
--- /dev/null
+++ b/tps2c.f
@@ -0,0 +1,108 @@
+      SUBROUTINE sla_TPS2C (XI, ETA, RA, DEC, RAZ1, DECZ1,
+     :                                        RAZ2, DECZ2, N)
+*+
+*     - - - - - -
+*      T P S 2 C
+*     - - - - - -
+*
+*  From the tangent plane coordinates of a star of known RA,Dec,
+*  determine the RA,Dec of the tangent point.
+*
+*  (single precision)
+*
+*  Given:
+*     XI,ETA      r    tangent plane rectangular coordinates
+*     RA,DEC      r    spherical coordinates
+*
+*  Returned:
+*     RAZ1,DECZ1  r    spherical coordinates of tangent point, solution 1
+*     RAZ2,DECZ2  r    spherical coordinates of tangent point, solution 2
+*     N           i    number of solutions:
+*                        0 = no solutions returned (note 2)
+*                        1 = only the first solution is useful (note 3)
+*                        2 = both solutions are useful (note 3)
+*
+*  Notes:
+*
+*  1  The RAZ1 and RAZ2 values are returned in the range 0-2pi.
+*
+*  2  Cases where there is no solution can only arise near the poles.
+*     For example, it is clearly impossible for a star at the pole
+*     itself to have a non-zero XI value, and hence it is
+*     meaningless to ask where the tangent point would have to be
+*     to bring about this combination of XI and DEC.
+*
+*  3  Also near the poles, cases can arise where there are two useful
+*     solutions.  The argument N indicates whether the second of the
+*     two solutions returned is useful.  N=1 indicates only one useful
+*     solution, the usual case;  under these circumstances, the second
+*     solution corresponds to the "over-the-pole" case, and this is
+*     reflected in the values of RAZ2 and DECZ2 which are returned.
+*
+*  4  The DECZ1 and DECZ2 values are returned in the range +/-pi, but
+*     in the usual, non-pole-crossing, case, the range is +/-pi/2.
+*
+*  5  This routine is the spherical equivalent of the routine sla_DTPV2C.
+*
+*  Called:  sla_RANORM
+*
+*  P.T.Wallace   Starlink   5 June 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL XI,ETA,RA,DEC,RAZ1,DECZ1,RAZ2,DECZ2
+      INTEGER N
+
+      REAL X2,Y2,SD,CD,SDF,R2,R,S,C
+
+      REAL sla_RANORM
+
+
+      X2=XI*XI
+      Y2=ETA*ETA
+      SD=SIN(DEC)
+      CD=COS(DEC)
+      SDF=SD*SQRT(1.0+X2+Y2)
+      R2=CD*CD*(1.0+Y2)-SD*SD*X2
+      IF (R2.GE.0.0) THEN
+         R=SQRT(R2)
+         S=SDF-ETA*R
+         C=SDF*ETA+R
+         IF (XI.EQ.0.0.AND.R.EQ.0.0) R=1.0
+         RAZ1=sla_RANORM(RA-ATAN2(XI,R))
+         DECZ1=ATAN2(S,C)
+         R=-R
+         S=SDF-ETA*R
+         C=SDF*ETA+R
+         RAZ2=sla_RANORM(RA-ATAN2(XI,R))
+         DECZ2=ATAN2(S,C)
+         IF (ABS(SDF).LT.1.0) THEN
+            N=1
+         ELSE
+            N=2
+         END IF
+      ELSE
+         N=0
+      END IF
+
+      END
diff --git a/tpv2c.f b/tpv2c.f
new file mode 100644
index 0000000000000000000000000000000000000000..2f4838c92ad4a4b7089dc42b69c5cd64e52d908d
--- /dev/null
+++ b/tpv2c.f
@@ -0,0 +1,100 @@
+      SUBROUTINE sla_TPV2C (XI, ETA, V, V01, V02, N)
+*+
+*     - - - - - -
+*      T P V 2 C
+*     - - - - - -
+*
+*  Given the tangent-plane coordinates of a star and its direction
+*  cosines, determine the direction cosines of the tangent-point.
+*
+*  (single precision)
+*
+*  Given:
+*     XI,ETA    r       tangent plane coordinates of star
+*     V         r(3)    direction cosines of star
+*
+*  Returned:
+*     V01       r(3)    direction cosines of tangent point, solution 1
+*     V02       r(3)    direction cosines of tangent point, solution 2
+*     N         i       number of solutions:
+*                         0 = no solutions returned (note 2)
+*                         1 = only the first solution is useful (note 3)
+*                         2 = both solutions are useful (note 3)
+*
+*  Notes:
+*
+*  1  The vector V must be of unit length or the result will be wrong.
+*
+*  2  Cases where there is no solution can only arise near the poles.
+*     For example, it is clearly impossible for a star at the pole
+*     itself to have a non-zero XI value, and hence it is meaningless
+*     to ask where the tangent point would have to be.
+*
+*  3  Also near the poles, cases can arise where there are two useful
+*     solutions.  The argument N indicates whether the second of the
+*     two solutions returned is useful.  N=1 indicates only one useful
+*     solution, the usual case;  under these circumstances, the second
+*     solution can be regarded as valid if the vector V02 is interpreted
+*     as the "over-the-pole" case.
+*
+*  4  This routine is the Cartesian equivalent of the routine sla_TPS2C.
+*
+*  P.T.Wallace   Starlink   5 June 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL XI,ETA,V(3),V01(3),V02(3)
+      INTEGER N
+
+      REAL X,Y,Z,RXY2,XI2,ETA2P1,SDF,R2,R,C
+
+
+      X=V(1)
+      Y=V(2)
+      Z=V(3)
+      RXY2=X*X+Y*Y
+      XI2=XI*XI
+      ETA2P1=ETA*ETA+1.0
+      SDF=Z*SQRT(XI2+ETA2P1)
+      R2=RXY2*ETA2P1-Z*Z*XI2
+      IF (R2.GT.0.0) THEN
+         R=SQRT(R2)
+         C=(SDF*ETA+R)/(ETA2P1*SQRT(RXY2*(R2+XI2)))
+         V01(1)=C*(X*R+Y*XI)
+         V01(2)=C*(Y*R-X*XI)
+         V01(3)=(SDF-ETA*R)/ETA2P1
+         R=-R
+         C=(SDF*ETA+R)/(ETA2P1*SQRT(RXY2*(R2+XI2)))
+         V02(1)=C*(X*R+Y*XI)
+         V02(2)=C*(Y*R-X*XI)
+         V02(3)=(SDF-ETA*R)/ETA2P1
+         IF (ABS(SDF).LT.1.0) THEN
+            N=1
+         ELSE
+            N=2
+         END IF
+      ELSE
+         N=0
+      END IF
+
+      END
diff --git a/ue2el.f b/ue2el.f
new file mode 100644
index 0000000000000000000000000000000000000000..bccf8d469ae1b033b5dd8b0bd58425d00c74d7a7
--- /dev/null
+++ b/ue2el.f
@@ -0,0 +1,211 @@
+      SUBROUTINE sla_UE2EL (U, JFORMR,
+     :                      JFORM, EPOCH, ORBINC, ANODE, PERIH,
+     :                      AORQ, E, AORL, DM, JSTAT)
+*+
+*     - - - - - -
+*      U E 2 E L
+*     - - - - - -
+*
+*  Transform universal elements into conventional heliocentric
+*  osculating elements.
+*
+*  Given:
+*     U         d(13)  universal orbital elements (Note 1)
+*
+*                 (1)  combined mass (M+m)
+*                 (2)  total energy of the orbit (alpha)
+*                 (3)  reference (osculating) epoch (t0)
+*               (4-6)  position at reference epoch (r0)
+*               (7-9)  velocity at reference epoch (v0)
+*                (10)  heliocentric distance at reference epoch
+*                (11)  r0.v0
+*                (12)  date (t)
+*                (13)  universal eccentric anomaly (psi) of date, approx
+*
+*     JFORMR    i      requested element set (1-3; Note 3)
+*
+*  Returned:
+*     JFORM     d      element set actually returned (1-3; Note 4)
+*     EPOCH     d      epoch of elements (TT MJD)
+*     ORBINC    d      inclination (radians)
+*     ANODE     d      longitude of the ascending node (radians)
+*     PERIH     d      longitude or argument of perihelion (radians)
+*     AORQ      d      mean distance or perihelion distance (AU)
+*     E         d      eccentricity
+*     AORL      d      mean anomaly or longitude (radians, JFORM=1,2 only)
+*     DM        d      daily motion (radians, JFORM=1 only)
+*     JSTAT     i      status:  0 = OK
+*                              -1 = illegal combined mass
+*                              -2 = illegal JFORMR
+*                              -3 = position/velocity out of range
+*
+*  Notes
+*
+*  1  The "universal" elements are those which define the orbit for the
+*     purposes of the method of universal variables (see reference 2).
+*     They consist of the combined mass of the two bodies, an epoch,
+*     and the position and velocity vectors (arbitrary reference frame)
+*     at that epoch.  The parameter set used here includes also various
+*     quantities that can, in fact, be derived from the other
+*     information.  This approach is taken to avoiding unnecessary
+*     computation and loss of accuracy.  The supplementary quantities
+*     are (i) alpha, which is proportional to the total energy of the
+*     orbit, (ii) the heliocentric distance at epoch, (iii) the
+*     outwards component of the velocity at the given epoch, (iv) an
+*     estimate of psi, the "universal eccentric anomaly" at a given
+*     date and (v) that date.
+*
+*  2  The universal elements are with respect to the mean equator and
+*     equinox of epoch J2000.  The orbital elements produced are with
+*     respect to the J2000 ecliptic and mean equinox.
+*
+*  3  Three different element-format options are supported:
+*
+*     Option JFORM=1, suitable for the major planets:
+*
+*     EPOCH  = epoch of elements (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = longitude of perihelion, curly pi (radians)
+*     AORQ   = mean distance, a (AU)
+*     E      = eccentricity, e
+*     AORL   = mean longitude L (radians)
+*     DM     = daily motion (radians)
+*
+*     Option JFORM=2, suitable for minor planets:
+*
+*     EPOCH  = epoch of elements (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = argument of perihelion, little omega (radians)
+*     AORQ   = mean distance, a (AU)
+*     E      = eccentricity, e
+*     AORL   = mean anomaly M (radians)
+*
+*     Option JFORM=3, suitable for comets:
+*
+*     EPOCH  = epoch of perihelion (TT MJD)
+*     ORBINC = inclination i (radians)
+*     ANODE  = longitude of the ascending node, big omega (radians)
+*     PERIH  = argument of perihelion, little omega (radians)
+*     AORQ   = perihelion distance, q (AU)
+*     E      = eccentricity, e
+*
+*  4  It may not be possible to generate elements in the form
+*     requested through JFORMR.  The caller is notified of the form
+*     of elements actually returned by means of the JFORM argument:
+*
+*      JFORMR   JFORM     meaning
+*
+*        1        1       OK - elements are in the requested format
+*        1        2       never happens
+*        1        3       orbit not elliptical
+*
+*        2        1       never happens
+*        2        2       OK - elements are in the requested format
+*        2        3       orbit not elliptical
+*
+*        3        1       never happens
+*        3        2       never happens
+*        3        3       OK - elements are in the requested format
+*
+*  5  The arguments returned for each value of JFORM (cf Note 6: JFORM
+*     may not be the same as JFORMR) are as follows:
+*
+*         JFORM         1              2              3
+*         EPOCH         t0             t0             T
+*         ORBINC        i              i              i
+*         ANODE         Omega          Omega          Omega
+*         PERIH         curly pi       omega          omega
+*         AORQ          a              a              q
+*         E             e              e              e
+*         AORL          L              M              -
+*         DM            n              -              -
+*
+*     where:
+*
+*         t0           is the epoch of the elements (MJD, TT)
+*         T              "    epoch of perihelion (MJD, TT)
+*         i              "    inclination (radians)
+*         Omega          "    longitude of the ascending node (radians)
+*         curly pi       "    longitude of perihelion (radians)
+*         omega          "    argument of perihelion (radians)
+*         a              "    mean distance (AU)
+*         q              "    perihelion distance (AU)
+*         e              "    eccentricity
+*         L              "    longitude (radians, 0-2pi)
+*         M              "    mean anomaly (radians, 0-2pi)
+*         n              "    daily motion (radians)
+*         -             means no value is set
+*
+*  6  At very small inclinations, the longitude of the ascending node
+*     ANODE becomes indeterminate and under some circumstances may be
+*     set arbitrarily to zero.  Similarly, if the orbit is close to
+*     circular, the true anomaly becomes indeterminate and under some
+*     circumstances may be set arbitrarily to zero.  In such cases,
+*     the other elements are automatically adjusted to compensate,
+*     and so the elements remain a valid description of the orbit.
+*
+*  References:
+*
+*     1  Sterne, Theodore E., "An Introduction to Celestial Mechanics",
+*        Interscience Publishers Inc., 1960.  Section 6.7, p199.
+*
+*     2  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+*
+*  Called:  sla_PV2EL
+*
+*  P.T.Wallace   Starlink   18 March 1999
+*
+*  Copyright (C) 1999 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION U(13)
+      INTEGER JFORMR,JFORM
+      DOUBLE PRECISION EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM
+      INTEGER JSTAT
+
+*  Gaussian gravitational constant (exact)
+      DOUBLE PRECISION GCON
+      PARAMETER (GCON=0.01720209895D0)
+
+*  Canonical days to seconds
+      DOUBLE PRECISION CD2S
+      PARAMETER (CD2S=GCON/86400D0)
+
+      INTEGER I
+      DOUBLE PRECISION PMASS,DATE,PV(6)
+
+
+*  Unpack the universal elements.
+      PMASS = U(1)-1D0
+      DATE = U(3)
+      DO I=1,3
+         PV(I) = U(I+3)
+         PV(I+3) = U(I+6)*CD2S
+      END DO
+
+*  Convert the position and velocity etc into conventional elements.
+      CALL sla_PV2EL(PV,DATE,PMASS,JFORMR,JFORM,EPOCH,ORBINC,ANODE,
+     :               PERIH,AORQ,E,AORL,DM,JSTAT)
+
+      END
diff --git a/ue2pv.f b/ue2pv.f
new file mode 100644
index 0000000000000000000000000000000000000000..ea7bb2b7d5a97898e92ef4b0c665ffc5889526a7
--- /dev/null
+++ b/ue2pv.f
@@ -0,0 +1,252 @@
+      SUBROUTINE sla_UE2PV ( DATE, U, PV, JSTAT )
+*+
+*     - - - - - -
+*      U E 2 P V
+*     - - - - - -
+*
+*  Heliocentric position and velocity of a planet, asteroid or comet,
+*  starting from orbital elements in the "universal variables" form.
+*
+*  Given:
+*     DATE     d       date, Modified Julian Date (JD-2400000.5)
+*
+*  Given and returned:
+*     U        d(13)   universal orbital elements (updated; Note 1)
+*
+*       given    (1)   combined mass (M+m)
+*         "      (2)   total energy of the orbit (alpha)
+*         "      (3)   reference (osculating) epoch (t0)
+*         "    (4-6)   position at reference epoch (r0)
+*         "    (7-9)   velocity at reference epoch (v0)
+*         "     (10)   heliocentric distance at reference epoch
+*         "     (11)   r0.v0
+*     returned  (12)   date (t)
+*         "     (13)   universal eccentric anomaly (psi) of date
+*
+*  Returned:
+*     PV       d(6)    position (AU) and velocity (AU/s)
+*     JSTAT    i       status:  0 = OK
+*                              -1 = radius vector zero
+*                              -2 = failed to converge
+*
+*  Notes
+*
+*  1  The "universal" elements are those which define the orbit for the
+*     purposes of the method of universal variables (see reference).
+*     They consist of the combined mass of the two bodies, an epoch,
+*     and the position and velocity vectors (arbitrary reference frame)
+*     at that epoch.  The parameter set used here includes also various
+*     quantities that can, in fact, be derived from the other
+*     information.  This approach is taken to avoiding unnecessary
+*     computation and loss of accuracy.  The supplementary quantities
+*     are (i) alpha, which is proportional to the total energy of the
+*     orbit, (ii) the heliocentric distance at epoch, (iii) the
+*     outwards component of the velocity at the given epoch, (iv) an
+*     estimate of psi, the "universal eccentric anomaly" at a given
+*     date and (v) that date.
+*
+*  2  The companion routine is sla_EL2UE.  This takes the conventional
+*     orbital elements and transforms them into the set of numbers
+*     needed by the present routine.  A single prediction requires one
+*     one call to sla_EL2UE followed by one call to the present routine;
+*     for convenience, the two calls are packaged as the routine
+*     sla_PLANEL.  Multiple predictions may be made by again
+*     calling sla_EL2UE once, but then calling the present routine
+*     multiple times, which is faster than multiple calls to sla_PLANEL.
+*
+*     It is not obligatory to use sla_EL2UE to obtain the parameters.
+*     However, it should be noted that because sla_EL2UE performs its
+*     own validation, no checks on the contents of the array U are made
+*     by the present routine.
+*
+*  3  DATE is the instant for which the prediction is required.  It is
+*     in the TT timescale (formerly Ephemeris Time, ET) and is a
+*     Modified Julian Date (JD-2400000.5).
+*
+*  4  The universal elements supplied in the array U are in canonical
+*     units (solar masses, AU and canonical days).  The position and
+*     velocity are not sensitive to the choice of reference frame.  The
+*     sla_EL2UE routine in fact produces coordinates with respect to the
+*     J2000 equator and equinox.
+*
+*  5  The algorithm was originally adapted from the EPHSLA program of
+*     D.H.P.Jones (private communication, 1996).  The method is based
+*     on Stumpff's Universal Variables.
+*
+*  Reference:  Everhart, E. & Pitkin, E.T., Am.J.Phys. 51, 712, 1983.
+*
+*  P.T.Wallace   Starlink   22 October 2005
+*
+*  Copyright (C) 2005 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DATE,U(13),PV(6)
+      INTEGER JSTAT
+
+*  Gaussian gravitational constant (exact)
+      DOUBLE PRECISION GCON
+      PARAMETER (GCON=0.01720209895D0)
+
+*  Canonical days to seconds
+      DOUBLE PRECISION CD2S
+      PARAMETER (CD2S=GCON/86400D0)
+
+*  Test value for solution and maximum number of iterations
+      DOUBLE PRECISION TEST
+      INTEGER NITMAX
+      PARAMETER (TEST=1D-13,NITMAX=25)
+
+      INTEGER I,NIT,N
+
+      DOUBLE PRECISION CM,ALPHA,T0,P0(3),V0(3),R0,SIGMA0,T,PSI,DT,W,
+     :                 TOL,PSJ,PSJ2,BETA,S0,S1,S2,S3,
+     :                 FF,R,FLAST,PLAST,F,G,FD,GD
+
+
+
+*  Unpack the parameters.
+      CM = U(1)
+      ALPHA = U(2)
+      T0 = U(3)
+      DO I=1,3
+         P0(I) = U(I+3)
+         V0(I) = U(I+6)
+      END DO
+      R0 = U(10)
+      SIGMA0 = U(11)
+      T = U(12)
+      PSI = U(13)
+
+*  Approximately update the universal eccentric anomaly.
+      PSI = PSI+(DATE-T)*GCON/R0
+
+*  Time from reference epoch to date (in Canonical Days: a canonical
+*  day is 58.1324409... days, defined as 1/GCON).
+      DT = (DATE-T0)*GCON
+
+*  Refine the universal eccentric anomaly, psi.
+      NIT = 1
+      W = 1D0
+      TOL = 0D0
+      DO WHILE (ABS(W).GE.TOL)
+
+*     Form half angles until BETA small enough.
+         N = 0
+         PSJ = PSI
+         PSJ2 = PSJ*PSJ
+         BETA = ALPHA*PSJ2
+         DO WHILE (ABS(BETA).GT.0.7D0)
+            N = N+1
+            BETA = BETA/4D0
+            PSJ = PSJ/2D0
+            PSJ2 = PSJ2/4D0
+         END DO
+
+*     Calculate Universal Variables S0,S1,S2,S3 by nested series.
+         S3 = PSJ*PSJ2*((((((BETA/210D0+1D0)
+     :                      *BETA/156D0+1D0)
+     :                      *BETA/110D0+1D0)
+     :                      *BETA/72D0+1D0)
+     :                      *BETA/42D0+1D0)
+     :                      *BETA/20D0+1D0)/6D0
+         S2 = PSJ2*((((((BETA/182D0+1D0)
+     :                  *BETA/132D0+1D0)
+     :                  *BETA/90D0+1D0)
+     :                  *BETA/56D0+1D0)
+     :                  *BETA/30D0+1D0)
+     :                  *BETA/12D0+1D0)/2D0
+         S1 = PSJ+ALPHA*S3
+         S0 = 1D0+ALPHA*S2
+
+*     Undo the angle-halving.
+         TOL = TEST
+         DO WHILE (N.GT.0)
+            S3 = 2D0*(S0*S3+PSJ*S2)
+            S2 = 2D0*S1*S1
+            S1 = 2D0*S0*S1
+            S0 = 2D0*S0*S0-1D0
+            PSJ = PSJ+PSJ
+            TOL = TOL+TOL
+            N = N-1
+         END DO
+
+*     Values of F and F' corresponding to the current value of psi.
+         FF = R0*S1+SIGMA0*S2+CM*S3-DT
+         R = R0*S0+SIGMA0*S1+CM*S2
+
+*     If first iteration, create dummy "last F".
+         IF ( NIT.EQ.1) FLAST = FF
+
+*     Check for sign change.
+         IF ( FF*FLAST.LT.0D0 ) THEN
+
+*        Sign change:  get psi adjustment using secant method.
+            W = FF*(PLAST-PSI)/(FLAST-FF)
+         ELSE
+
+*        No sign change:  use Newton-Raphson method instead.
+            IF (R.EQ.0D0) GO TO 9010
+            W = FF/R
+         END IF
+
+*     Save the last psi and F values.
+         PLAST = PSI
+         FLAST = FF
+
+*     Apply the Newton-Raphson or secant adjustment to psi.
+         PSI = PSI-W
+
+*     Next iteration, unless too many already.
+         IF (NIT.GT.NITMAX) GO TO 9020
+         NIT = NIT+1
+      END DO
+
+*  Project the position and velocity vectors (scaling velocity to AU/s).
+      W = CM*S2
+      F = 1D0-W/R0
+      G = DT-CM*S3
+      FD = -CM*S1/(R0*R)
+      GD = 1D0-W/R
+      DO I=1,3
+         PV(I) = P0(I)*F+V0(I)*G
+         PV(I+3) = CD2S*(P0(I)*FD+V0(I)*GD)
+      END DO
+
+*  Update the parameters to allow speedy prediction of PSI next time.
+      U(12) = DATE
+      U(13) = PSI
+
+*  OK exit.
+      JSTAT = 0
+      GO TO 9999
+
+*  Null radius vector.
+ 9010 CONTINUE
+      JSTAT = -1
+      GO TO 9999
+
+*  Failed to converge.
+ 9020 CONTINUE
+      JSTAT = -2
+
+ 9999 CONTINUE
+      END
diff --git a/unpcd.f b/unpcd.f
new file mode 100644
index 0000000000000000000000000000000000000000..21bc5a21a7a3a4e8609a7fe486b7162960608833
--- /dev/null
+++ b/unpcd.f
@@ -0,0 +1,144 @@
+      SUBROUTINE sla_UNPCD ( DISCO, X, Y )
+*+
+*     - - - - - -
+*      U N P C D
+*     - - - - - -
+*
+*  Remove pincushion/barrel distortion from a distorted [x,y] to give
+*  tangent-plane [x,y].
+*
+*  Given:
+*     DISCO    d      pincushion/barrel distortion coefficient
+*     X,Y      d      distorted coordinates
+*
+*  Returned:
+*     X,Y      d      tangent-plane coordinates
+*
+*  Notes:
+*
+*  1)  The distortion is of the form RP = R*(1+C*R^2), where R is
+*      the radial distance from the tangent point, C is the DISCO
+*      argument, and RP is the radial distance in the presence of
+*      the distortion.
+*
+*  2)  For pincushion distortion, C is +ve;  for barrel distortion,
+*      C is -ve.
+*
+*  3)  For X,Y in "radians" - units of one projection radius,
+*      which in the case of a photograph is the focal length of
+*      the camera - the following DISCO values apply:
+*
+*          Geometry          DISCO
+*
+*          astrograph         0.0
+*          Schmidt           -0.3333
+*          AAT PF doublet  +147.069
+*          AAT PF triplet  +178.585
+*          AAT f/8          +21.20
+*          JKT f/8          +13.32
+*
+*  4)  The present routine is a rigorous inverse of the companion
+*      routine sla_PCD.  The expression for RP in Note 1 is rewritten
+*      in the form x^3+a*x+b=0 and solved by standard techniques.
+*
+*  5)  Cases where the cubic has multiple real roots can sometimes
+*      occur, corresponding to extreme instances of barrel distortion
+*      where up to three different undistorted [X,Y]s all produce the
+*      same distorted [X,Y].  However, only one solution is returned,
+*      the one that produces the smallest change in [X,Y].
+*
+*  P.T.Wallace   Starlink   3 September 2000
+*
+*  Copyright (C) 2000 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION DISCO,X,Y
+
+      DOUBLE PRECISION THIRD
+      PARAMETER (THIRD=1D0/3D0)
+      DOUBLE PRECISION D2PI
+      PARAMETER (D2PI=6.283185307179586476925286766559D0)
+
+      DOUBLE PRECISION RP,Q,R,D,W,S,T,F,C,T3,F1,F2,F3,W1,W2,W3
+
+
+
+*  Distance of the point from the origin.
+      RP = SQRT(X*X+Y*Y)
+
+*  If zero, or if no distortion, no action is necessary.
+      IF (RP.NE.0D0.AND.DISCO.NE.0D0) THEN
+
+*     Begin algebraic solution.
+         Q = 1D0/(3D0*DISCO)
+         R = RP/(2D0*DISCO)
+         W = Q*Q*Q+R*R
+
+*     Continue if one real root, or three of which only one is positive.
+         IF (W.GE.0D0) THEN
+            D = SQRT(W)
+            W = R+D
+            S = SIGN(ABS(W)**THIRD,W)
+            W = R-D
+            T = SIGN((ABS(W))**THIRD,W)
+            F = S+T
+         ELSE
+
+*        Three different real roots:  use geometrical method instead.
+            W = 2D0/SQRT(-3D0*DISCO)
+            C = 4D0*RP/(DISCO*W*W*W)
+            S = SQRT(1D0-MIN(C*C,1D0))
+            T3 = ATAN2(S,C)
+
+*        The three solutions.
+            F1 = W*COS((D2PI-T3)/3D0)
+            F2 = W*COS((T3)/3D0)
+            F3 = W*COS((D2PI+T3)/3D0)
+
+*        Pick the one that moves [X,Y] least.
+            W1 = ABS(F1-RP)
+            W2 = ABS(F2-RP)
+            W3 = ABS(F3-RP)
+            IF (W1.LT.W2) THEN
+               IF (W1.LT.W3) THEN
+                  F = F1
+               ELSE
+                  F = F3
+               END IF
+            ELSE
+               IF (W2.LT.W3) THEN
+                  F = F2
+               ELSE
+                  F = F3
+               END IF
+            END IF
+
+         END IF
+
+*     Remove the distortion.
+         F = F/RP
+         X = F*X
+         Y = F*Y
+
+      END IF
+
+      END
diff --git a/v2tp.f b/v2tp.f
new file mode 100644
index 0000000000000000000000000000000000000000..6640f2e9b39176986922f1e45b57a943a9070ef1
--- /dev/null
+++ b/v2tp.f
@@ -0,0 +1,95 @@
+      SUBROUTINE sla_V2TP (V, V0, XI, ETA, J)
+*+
+*     - - - - -
+*      V 2 T P
+*     - - - - -
+*
+*  Given the direction cosines of a star and of the tangent point,
+*  determine the star's tangent-plane coordinates.
+*
+*  (single precision)
+*
+*  Given:
+*     V         r(3)    direction cosines of star
+*     V0        r(3)    direction cosines of tangent point
+*
+*  Returned:
+*     XI,ETA    r       tangent plane coordinates of star
+*     J         i       status:   0 = OK
+*                                 1 = error, star too far from axis
+*                                 2 = error, antistar on tangent plane
+*                                 3 = error, antistar too far from axis
+*
+*  Notes:
+*
+*  1  If vector V0 is not of unit length, or if vector V is of zero
+*     length, the results will be wrong.
+*
+*  2  If V0 points at a pole, the returned XI,ETA will be based on the
+*     arbitrary assumption that the RA of the tangent point is zero.
+*
+*  3  This routine is the Cartesian equivalent of the routine sla_S2TP.
+*
+*  P.T.Wallace   Starlink   27 November 1996
+*
+*  Copyright (C) 1996 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL V(3),V0(3),XI,ETA
+      INTEGER J
+
+      REAL X,Y,Z,X0,Y0,Z0,R2,R,W,D
+
+      REAL TINY
+      PARAMETER (TINY=1E-6)
+
+
+      X=V(1)
+      Y=V(2)
+      Z=V(3)
+      X0=V0(1)
+      Y0=V0(2)
+      Z0=V0(3)
+      R2=X0*X0+Y0*Y0
+      R=SQRT(R2)
+      IF (R.EQ.0.0) THEN
+         R=1E-20
+         X0=R
+      END IF
+      W=X*X0+Y*Y0
+      D=W+Z*Z0
+      IF (D.GT.TINY) THEN
+         J=0
+      ELSE IF (D.GE.0.0) THEN
+         J=1
+         D=TINY
+      ELSE IF (D.GT.-TINY) THEN
+         J=2
+         D=-TINY
+      ELSE
+         J=3
+      END IF
+      D=D*R
+      XI=(Y*X0-X*Y0)/D
+      ETA=(Z*R2-Z0*W)/D
+
+      END
diff --git a/vdv.f b/vdv.f
new file mode 100644
index 0000000000000000000000000000000000000000..86b0adc265ece22082f125bebc8e84d294d5e46c
--- /dev/null
+++ b/vdv.f
@@ -0,0 +1,44 @@
+      REAL FUNCTION sla_VDV (VA, VB)
+*+
+*     - - - -
+*      V D V
+*     - - - -
+*
+*  Scalar product of two 3-vectors  (single precision)
+*
+*  Given:
+*      VA      real(3)     first vector
+*      VB      real(3)     second vector
+*
+*  The result is the scalar product VA.VB (single precision)
+*
+*  P.T.Wallace   Starlink   November 1984
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL VA(3),VB(3)
+
+
+      sla_VDV=VA(1)*VB(1)+VA(2)*VB(2)+VA(3)*VB(3)
+
+      END
diff --git a/veri.f b/veri.f
new file mode 100644
index 0000000000000000000000000000000000000000..c54f4805440fcd89cc3bb7d21eea3e7bdebdba5b
--- /dev/null
+++ b/veri.f
@@ -0,0 +1,52 @@
+      INTEGER FUNCTION sla_VERI ()
+*+
+*     - - - - -
+*      V E R I
+*     - - - - -
+*
+*  Report the SLALIB version number as an integer.
+*
+*  Given:
+*    None
+*
+*  The result is the SLALIB version number as an integer m*1e6+n*1e3+r,
+*  where m is the major version, n the minor version and r the release
+*  number.
+*
+*  Notes:
+*
+*    To obtain the version number in a printable form, see
+*    subroutine sla_vers(version).
+*
+*    The sla_veri subroutine was introduced in SLALIB version 2.5-1, so
+*    if this function is absent, one can only tell that the release
+*    predates that one.
+*
+*  Norman Gray   Starlink   8 April 2005
+*
+*  Copyright (C) 2005 Council for the Central Laboratory of the
+*  Research Councils
+*
+*  Licence:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      sla_VERI=2005004
+
+      END
diff --git a/veri.f.in b/veri.f.in
new file mode 100644
index 0000000000000000000000000000000000000000..29a21c8c3a4b681538439e0461e1eaf86f1e05a6
--- /dev/null
+++ b/veri.f.in
@@ -0,0 +1,52 @@
+      INTEGER FUNCTION sla_VERI ()
+*+
+*     - - - - -
+*      V E R I
+*     - - - - -
+*
+*  Report the SLALIB version number as an integer.
+*
+*  Given:
+*    None
+*
+*  The result is the SLALIB version number as an integer m*1e6+n*1e3+r,
+*  where m is the major version, n the minor version and r the release
+*  number.
+*
+*  Notes:
+*
+*    To obtain the version number in a printable form, see
+*    subroutine sla_vers(version).
+*
+*    The sla_veri subroutine was introduced in SLALIB version 2.5-1, so
+*    if this function is absent, one can only tell that the release
+*    predates that one.
+*
+*  Norman Gray   Starlink   8 April 2005
+*
+*  Copyright (C) 2005 Council for the Central Laboratory of the
+*  Research Councils
+*
+*  Licence:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      sla_VERI=@PACKAGE_VERSION_INTEGER@
+
+      END
diff --git a/vers.f b/vers.f
new file mode 100644
index 0000000000000000000000000000000000000000..5a5174191e99ca0917ed01c86f82c3781dd16547
--- /dev/null
+++ b/vers.f
@@ -0,0 +1,58 @@
+      SUBROUTINE sla_VERS (VERSION)
+*+
+*     - - - - -
+*      V E R S
+*     - - - - -
+*
+*  Report the SLALIB version number.
+*
+*  Given:
+*    None
+*
+*  Returned:
+*    VERSION   c*(*)   Version number, in the form 'm.n-r'.
+*                      The major version is m, the minor version n, and
+*                      release r.  The string passed in should be at least
+*                      8 characters in length, to account for the (remote)
+*                      possibility that these numbers will ever go to
+*                      two digits.
+*
+*  Notes:
+*
+*    To obtain the version number in a more easily processed form, see
+*    function sla_veri().
+*
+*    The sla_vers subroutine was introduced in SLALIB version 2.5-1, so
+*    if this function is absent, one can only tell that the release
+*    predates that one.
+*
+*  Norman Gray   Starlink   8 April 2005
+*
+*  Copyright (C) 2005 Council for the Central Laboratory of the
+*  Research Councils
+*
+*  Licence:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER VERSION*(*)
+
+      VERSION='2.5-4'
+
+      END
diff --git a/vers.f.in b/vers.f.in
new file mode 100644
index 0000000000000000000000000000000000000000..5f9f87beb68d9559035d086764212bb1b0fe14f2
--- /dev/null
+++ b/vers.f.in
@@ -0,0 +1,58 @@
+      SUBROUTINE sla_VERS (VERSION)
+*+
+*     - - - - -
+*      V E R S
+*     - - - - -
+*
+*  Report the SLALIB version number.
+*
+*  Given:
+*    None
+*
+*  Returned:
+*    VERSION   c*(*)   Version number, in the form 'm.n-r'.
+*                      The major version is m, the minor version n, and
+*                      release r.  The string passed in should be at least
+*                      8 characters in length, to account for the (remote)
+*                      possibility that these numbers will ever go to
+*                      two digits.
+*
+*  Notes:
+*
+*    To obtain the version number in a more easily processed form, see
+*    function sla_veri().
+*
+*    The sla_vers subroutine was introduced in SLALIB version 2.5-1, so
+*    if this function is absent, one can only tell that the release
+*    predates that one.
+*
+*  Norman Gray   Starlink   8 April 2005
+*
+*  Copyright (C) 2005 Council for the Central Laboratory of the
+*  Research Councils
+*
+*  Licence:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      CHARACTER VERSION*(*)
+
+      VERSION='@PACKAGE_VERSION@'
+
+      END
diff --git a/vn.f b/vn.f
new file mode 100644
index 0000000000000000000000000000000000000000..6ba68d10067207221f107375088c2f6db04aa17b
--- /dev/null
+++ b/vn.f
@@ -0,0 +1,63 @@
+      SUBROUTINE sla_VN (V, UV, VM)
+*+
+*     - - -
+*      V N
+*     - - -
+*
+*  Normalizes a 3-vector also giving the modulus (single precision)
+*
+*  Given:
+*     V       real(3)      vector
+*
+*  Returned:
+*     UV      real(3)      unit vector in direction of V
+*     VM      real         modulus of V
+*
+*  If the modulus of V is zero, UV is set to zero as well
+*
+*  P.T.Wallace   Starlink   23 November 1995
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL V(3),UV(3),VM
+
+      INTEGER I
+      REAL W1,W2
+
+
+*  Modulus
+      W1=0.0
+      DO I=1,3
+         W2=V(I)
+         W1=W1+W2*W2
+      END DO
+      W1=SQRT(W1)
+      VM=W1
+
+*  Normalize the vector
+      IF (W1.LE.0.0) W1=1.0
+      DO I=1,3
+         UV(I)=V(I)/W1
+      END DO
+
+      END
diff --git a/vxv.f b/vxv.f
new file mode 100644
index 0000000000000000000000000000000000000000..f39efd02e226bfc8f0faefae62026ab7690f14ad
--- /dev/null
+++ b/vxv.f
@@ -0,0 +1,56 @@
+      SUBROUTINE sla_VXV (VA, VB, VC)
+*+
+*     - - - -
+*      V X V
+*     - - - -
+*
+*  Vector product of two 3-vectors (single precision)
+*
+*  Given:
+*      VA      real(3)     first vector
+*      VB      real(3)     second vector
+*
+*  Returned:
+*      VC      real(3)     vector result
+*
+*  P.T.Wallace   Starlink   March 1986
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL VA(3),VB(3),VC(3)
+
+      REAL VW(3)
+      INTEGER I
+
+
+*  Form the vector product VA cross VB
+      VW(1)=VA(2)*VB(3)-VA(3)*VB(2)
+      VW(2)=VA(3)*VB(1)-VA(1)*VB(3)
+      VW(3)=VA(1)*VB(2)-VA(2)*VB(1)
+
+*  Return the result
+      DO I=1,3
+         VC(I)=VW(I)
+      END DO
+
+      END
diff --git a/wait.f b/wait.f
new file mode 120000
index 0000000000000000000000000000000000000000..389f6840a9e90932aa642cd92e7d1702709df18d
--- /dev/null
+++ b/wait.f
@@ -0,0 +1 @@
+wait.fdefault
\ No newline at end of file
diff --git a/wait.f__vms b/wait.f__vms
new file mode 100644
index 0000000000000000000000000000000000000000..f40bd3bceeacd45d9127a385ea182056b5a2bb94
--- /dev/null
+++ b/wait.f__vms
@@ -0,0 +1,60 @@
+      SUBROUTINE sla_WAIT (DELAY)
+*+
+*     - - - - -
+*      W A I T
+*     - - - - -
+*
+*  Interval wait
+*
+*  !!! VAX/VMS specific !!!
+*
+*  Given:
+*     DELAY     real      delay in seconds
+*
+*  A delay 100ns < DELAY < 200s is requested.
+*
+*  P.T.Wallace   Starlink   14 October 1991
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL DELAY
+
+      INTEGER JSTAT
+      INTEGER SYS$SCHDWK,SYS$HIBER
+
+      INTEGER IDT(2)
+      DATA IDT(2)/-1/
+
+
+
+*  Encode delta time
+      IDT(1)=-NINT(MAX(1.0,1E7*MIN(200.0,DELAY)))
+
+
+*  Schedule a wakeup
+      JSTAT=SYS$SCHDWK(,,IDT,)
+      IF (.NOT.JSTAT) CALL LIB$STOP(%VAL(JSTAT))
+
+*  Hibernate
+      JSTAT=SYS$HIBER()
+      IF (.NOT.JSTAT) CALL LIB$STOP(%VAL(JSTAT))
+
+      END
diff --git a/wait.f__win b/wait.f__win
new file mode 100644
index 0000000000000000000000000000000000000000..678ab5f1778c310de75fd21cc7b5c05d83f731e4
--- /dev/null
+++ b/wait.f__win
@@ -0,0 +1,83 @@
+      SUBROUTINE sla_WAIT (DELAY)
+*+
+*     - - - - -
+*      W A I T
+*     - - - - -
+*
+*  Interval wait
+*
+*  !!! PC only - Microsoft Fortran specific !!!
+*
+*  Given:
+*     DELAY     real      delay in seconds
+*
+*  A delay of up to 10000 seconds occurs.
+*
+*  Called:  GETTIM (Microsoft Fortran run-time library)
+*
+*  P.T.Wallace   Starlink   14 October 1991
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL DELAY
+
+      INTEGER IDELAY,IH,IM,IS,I,IT,IT0,IDT
+      LOGICAL FIRST,LOOP
+
+
+
+
+*  Convert requested delay to 0.01 second ticks
+      IDELAY=NINT(MAX(MIN(DELAY,1E4),0.0)*1E2)
+
+*  Set "note start time" flag
+      FIRST=.TRUE.
+
+*  Set "wait in progress" flag
+      LOOP=.TRUE.
+
+*  Main loop
+      DO WHILE (LOOP)
+
+*     Get the current time and convert to 0.01 second ticks
+         CALL GETTIM(IH,IM,IS,I)
+         IT=((IH*60+IM)*60+IS)*100+I
+
+*     First time through the loop?
+         IF (FIRST) THEN
+
+*        Yes: note the time and reset the flag
+            IT0=IT
+            FIRST=.FALSE.
+         ELSE
+
+*        No: subtract the start time, handling 0 hours wrap
+            IDT=IT-IT0
+            IF (IDT.LT.0) IDT=IDT+8640000
+
+*        If the requested delay has elapsed, stop looping
+            LOOP=IDT.LT.IDELAY
+         END IF
+      END DO
+
+      END
diff --git a/wait.fdefault b/wait.fdefault
new file mode 100644
index 0000000000000000000000000000000000000000..94ed70fd87a089dfbc5a557712cc0486216e2f9b
--- /dev/null
+++ b/wait.fdefault
@@ -0,0 +1,49 @@
+      SUBROUTINE sla_WAIT (DELAY)
+*+
+*     - - - - -
+*      W A I T
+*     - - - - -
+*
+*  Interval wait
+*
+*  !!! Version for: SPARC/SunOS4, 
+*                   SPARC/Solaris2, 
+*                   DEC Mips/Ultrix
+*                   DEC AXP/Digital Unix
+*                   Intel/Linux
+*                   Convex
+*
+*  Given:
+*     DELAY     real      delay in seconds
+*
+*  Called:  SLEEP (a Fortran Intrinsic on all obove platforms)
+*
+*  P.T.Wallace   Starlink   22 January 1998
+*
+*  Copyright (C) 1998 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      REAL DELAY
+
+      CALL SLEEP(NINT(DELAY))
+
+      END
diff --git a/xy2xy.f b/xy2xy.f
new file mode 100644
index 0000000000000000000000000000000000000000..cb76cce30ec04c3941bbbeebfe9ad050d27652b3
--- /dev/null
+++ b/xy2xy.f
@@ -0,0 +1,66 @@
+      SUBROUTINE sla_XY2XY (X1,Y1,COEFFS,X2,Y2)
+*+
+*     - - - - - -
+*      X Y 2 X Y
+*     - - - - - -
+*
+*  Transform one [X,Y] into another using a linear model of the type
+*  produced by the sla_FITXY routine.
+*
+*  Given:
+*     X1       d        x-coordinate
+*     Y1       d        y-coordinate
+*     COEFFS  d(6)      transformation coefficients (see note)
+*
+*  Returned:
+*     X2       d        x-coordinate
+*     Y2       d        y-coordinate
+*
+*  The model relates two sets of [X,Y] coordinates as follows.
+*  Naming the elements of COEFFS:
+*
+*     COEFFS(1) = A
+*     COEFFS(2) = B
+*     COEFFS(3) = C
+*     COEFFS(4) = D
+*     COEFFS(5) = E
+*     COEFFS(6) = F
+*
+*  the present routine performs the transformation:
+*
+*     X2 = A + B*X1 + C*Y1
+*     Y2 = D + E*X1 + F*Y1
+*
+*  See also sla_FITXY, sla_PXY, sla_INVF, sla_DCMPF
+*
+*  P.T.Wallace   Starlink   5 December 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION X1,Y1,COEFFS(6),X2,Y2
+
+
+      X2=COEFFS(1)+COEFFS(2)*X1+COEFFS(3)*Y1
+      Y2=COEFFS(4)+COEFFS(5)*X1+COEFFS(6)*Y1
+
+      END
diff --git a/zd.f b/zd.f
new file mode 100644
index 0000000000000000000000000000000000000000..041a0ec780b741de517ac859e0758822a54b392f
--- /dev/null
+++ b/zd.f
@@ -0,0 +1,79 @@
+      DOUBLE PRECISION FUNCTION sla_ZD (HA, DEC, PHI)
+*+
+*     - - -
+*      Z D
+*     - - -
+*
+*  HA, Dec to Zenith Distance (double precision)
+*
+*  Given:
+*     HA     d     Hour Angle in radians
+*     DEC    d     declination in radians
+*     PHI    d     observatory latitude in radians
+*
+*  The result is in the range 0 to pi.
+*
+*  Notes:
+*
+*  1)  The latitude must be geodetic.  In critical applications,
+*      corrections for polar motion should be applied.
+*
+*  2)  In some applications it will be important to specify the
+*      correct type of hour angle and declination in order to
+*      produce the required type of zenith distance.  In particular,
+*      it may be important to distinguish between the zenith distance
+*      as affected by refraction, which would require the "observed"
+*      HA,Dec, and the zenith distance in vacuo, which would require
+*      the "topocentric" HA,Dec.  If the effects of diurnal aberration
+*      can be neglected, the "apparent" HA,Dec may be used instead of
+*      the topocentric HA,Dec.
+*
+*  3)  No range checking of arguments is done.
+*
+*  4)  In applications which involve many zenith distance calculations,
+*      rather than calling the present routine it will be more efficient
+*      to use inline code, having previously computed fixed terms such
+*      as sine and cosine of latitude, and perhaps sine and cosine of
+*      declination.
+*
+*  P.T.Wallace   Starlink   3 April 1994
+*
+*  Copyright (C) 1995 Rutherford Appleton Laboratory
+*
+*  License:
+*    This program is free software; you can redistribute it and/or modify
+*    it under the terms of the GNU General Public License as published by
+*    the Free Software Foundation; either version 2 of the License, or
+*    (at your option) any later version.
+*
+*    This program is distributed in the hope that it will be useful,
+*    but WITHOUT ANY WARRANTY; without even the implied warranty of
+*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+*    GNU General Public License for more details.
+*
+*    You should have received a copy of the GNU General Public License
+*    along with this program (see SLA_CONDITIONS); if not, write to the 
+*    Free Software Foundation, Inc., 59 Temple Place, Suite 330, 
+*    Boston, MA  02111-1307  USA
+*
+*-
+
+      IMPLICIT NONE
+
+      DOUBLE PRECISION HA,DEC,PHI
+
+      DOUBLE PRECISION SH,CH,SD,CD,SP,CP,X,Y,Z
+
+
+      SH=SIN(HA)
+      CH=COS(HA)
+      SD=SIN(DEC)
+      CD=COS(DEC)
+      SP=SIN(PHI)
+      CP=COS(PHI)
+      X=CH*CD*SP-SD*CP
+      Y=SH*CD
+      Z=CH*CD*CP+SD*SP
+      sla_ZD=ATAN2(SQRT(X*X+Y*Y),Z)
+
+      END