Download Latest Version ephcom-3.0.0.tar.gz (278.6 kB)
Email in envelope

Get an email when there's a new version of Time Ephemerides

Home / ephcom
Name Modified Size InfoDownloads / Week
Parent folder
README.release 2013-01-12 280.6 kB
ephcom-3.0.0.tar.gz 2013-01-12 278.6 kB
ephcom-3.0.0.tar.gz.asc 2013-01-12 490 Bytes
ephcom-2.0.2.tar.gz 2011-09-14 111.2 kB
ephcom-2.0.2.tar.gz.asc 2011-09-14 490 Bytes
ephcom-2.0.1.tar.gz 2011-08-24 114.5 kB
ephcom-2.0.1.tar.gz.asc 2011-08-24 490 Bytes
Totals: 7 Items   786.5 kB 1
The ephcom-3.0.0 software package for manipulating and interpolating
planetary ephemerides and time ephemerides has been released.
Planetary ephemerides (such as those published by the JPL and INPOP
groups) represent mankind's best knowledge of the motions of all major
solar system objects.  Time ephemerides (such as those computed from
planetary ephemerides by the te_gen-2.0.0 software that is about to be
released) represent mankind's best knowledge of the general
relativistic corrections that must be made to clocks that are located
near some reference point within the solar system (e.g., some point
near the Earth).  Such clock corrections are required, for example, to
correctly predict the independent time variable of planetary
ephemerides from TT (terrestrial time).

The current "ephcom" development effort is now a subproject of the
Time Ephemerides software project (http://timeephem.sourceforge.net)
and also a revival of the "ephcom-1.0" development effort which was
released in May 2004 at ephemeris.com by Paul Hardy.

The last release of the current ephcom development effort was
ephcom-2.0.2.  Since that release, David Howells, a developer with
outstanding C and Python skills has been recruited to the Time
Ephemerides project, and he has provided much of the energy for all
the many changes (almost 400 commits) that have gone into this new
release of ephcom.

David and I would like to give a big vote of thanks to Arjen Markus
who gave us lots of time-consuming testing help for ephcom-3.0.0 on
various MS Windows platforms.  We would also like to thank Bill
Folkner of JPL for useful discussions of the best way to generalize
the traditional JPL ascii and binary formats for ephemerides that
would allow convenient storage and use of planetary, time, and (in
theory) asteroid ephemeris data.

The most important changes in this release relative to ephcom-2.0.2
are as follows:

* WARNING.  The names, organization, and API of all ephcom-3.0.0
  libraries have been changed in a backwards incompatible way from
  what was available for ephcom-2.0.2.  There are three C libraries
  called libephcomc, libephcom, and libgnulliver that are built by
  ephcom-3.0.0.  The primary library of interest to ephcom-3.0.0 users
  is libephcomc.  That library has a convenient high-level API whose
  use is demonstrated in examples/c/test_api.c and
  examples/c/vtransit.c.  This API allows users to read names and
  values of ephemeris constants from the header sections of a binary
  ephemeris.  A change for ephcom-3.0.0 are these data are returned in
  sorted order (by the name of the constant) to make it easier to
  search these array results for a particular constant value.  The
  libephcomc API also allows users to interpolate time-dependent data
  that are stored in the data sections of a binary ephemeris and
  conveniently transform calendar dates/times to Julian dates and vice
  versa.  libephcomc is basically a convenience wrapper for libephcom
  which does all the work required by the libephcomc routines using a
  lower-level API.  The ephcom-3.0.0 utility programmes also use the
  low-level API of libephcom to read and write individual data blocks
  of binary or ascii ephemerides.  libephcom calls libgnulliver to do
  any byteswapping that is necessary to resolve endianness issues.
  
* The interpolation efficiency of libephcom has been greatly improved
  by caching required Chebyshev interpolation coefficients (and header
  data) in a context struct so that unnecessary rereading of such data
  from disks is avoided.  In typical use cases where the time does not
  change dramatically from one interpolation to the next, this can
  increase the effective speed of ephcom-3.0.0 interpolation by an
  order of magnitude (!) compared to ephcom-2.0.2.

* The API of the libgnulliver byte-swapping library has been changed.
  So has the way that library is used (or not) from within libephcom.
  The result is that ephcom-3.0.0 users generally do not have to worry
  about endianness issues at all!  When reading a binary ephemeris
  file, libephcom automatically detects the endianness of the file,
  compares that result with the known host endianness, and only if the
  two are different calls libgnulliver routines to swap the bytes of
  the records being read from the file into the correct endian order
  for the host.  This is a large improvement on previous ephcom
  releases which assumed all input binary ephemeris files were
  big-endian.  On output libephcom writes binary ephemerides in host
  endian order (rather than big-endian order as in the previous ephcom
  releases).

* The previous Fortran 77 interface that had been implemented has now
  been changed to a mixture of Fortran 77 (for the deprecated API) and
  a new Fortran 95 API that provides a direct Fortran 95 wrapper for
  the high-level C API provided by libephcomc.

  The deprecated API is the "const", "pleph", and "dpleph" API that
  most JPL ephemeris users are familiar with from using the legacy JPL
  Fortran code that has been made available for many years with the
  JPL ephemerides.  This deprecated API should serve as a convenient
  drop-in replacement for the legacy JPL Fortran code without the
  well-known configuration and endianness inconveniences and licensing
  uncertainties of that code.  An additional advantage of the
  deprecated API for ephcom-3.0.0 compared to the legacy JPL Fortran
  code is it returns "const" results in alphabetic order of the
  ephemeris constant names which makes the array results easier to search for a
  particular constant value.  This characteristic is a result of
  "const" wrapping a Fortran 95 routine and ultimately a libephcomc
  routine that all return ephemeris constant names and values in this
  sorted order.

  The "const", "pleph", and "dpleph" API for the Fortran bindings of
  ephcom-3.0.0 has been deprecated because it necessarily shares a
  limitation of the JPL legacy Fortran code which is that the user of
  this API has no control over the binary ephemeris filename.
  Therefore, all JPL binary ephemeris files must be called "JPLEPH"
  when using this deprecated API.  The example,
  examples/f95/flce_testeph.f demonstrates that the deprecated API
  works using calls to const and pleph.

  Because of this limitation of the deprecated API, those developing
  new Fortran applications are strongly urged to use the new Fortran
  95 API as demonstrated by the calls used in examples/f95/test_api.f
  and examples/f95/vtransit.f.  Note that one of the tests configured
  by our build system checks that the results from these Fortran 95
  routines for the DE405 JPL ephemeris are the same as the results
  from the corresponding C examples.

* New swig-generated bindings for libephcomc have been implemented for
  Python.  These bindings provide a Python wrapper for the high-level
  C API provided by that library. See examples/python/test_api.py and
  examples/python/vtransit.py for examples of how to access ephemeris
  information from Python.  Note that one of the tests configured by
  our build system checks that the results of these Python scripts for
  the DE405 JPL ephemeris are the same as the results from the
  corresponding C examples.

* A new binary format for ephemerides has been designed and
  implemented to allow storage of planetary, time, and (in principle)
  asteroid ephemerides.  This new format removes a lot of limitations
  of the traditional JPL binary ephemeris format.  For example, the
  new format removes the previous limit of 400 on the number of
  constants in the ephemeris header (especially useful if the masses
  of asteroids are contained in the ephemeris constants in the header)
  and removes the previous limit of 6 characters for the length of the
  name of the constants.  Also, the previous limit of 13 different
  index slots corresponding to a maximum of 13 kinds of data that
  could be stored and interpolated has been removed.  So one
  additional index slot is reserved for the time-ephemeris integral at
  geocentre (a scalar quantity used to help calculate clock
  corrections at geocentre), and an additional index slot is reserved
  for the time-ephemeris vector (a three-vector which is used to help
  correct the geocentre clock correction to any location in the
  vicinity of the Earth).  But in principle the binary format allows
  any number of index slots so, for example, many more index slots
  could be used to store and interpolate positions and velocities of
  individual asteroids.

  The design of both the traditional JPL binary format and the new
  binary format has been documented in doc/man/jpl_binary_ephemeris.5.
  The libephcom library reads binary ephemerides formatted with either
  the old or new binary format and writes binary ephemerides using the
  new binary format.

* Some small and optional extensions to the traditional JPL ascii
  format for ephemerides have been designed and implemented which
  correspond to relaxing the same restrictions that were relaxed in
  the new binary format case.  So the extended ascii format allows
  storing any data, e.g., planetary, time, or (in principle) asteroid
  ephemerides) that can be stored in the new binary format and vice
  versa.

  The design of both the traditional JPL ascii format and its
  extension have been documented in doc/man/jpl_ascii_ephemeris.5.
  The libephcom library reads ascii ephemerides formatted with either
  the traditional JPL ascii format or its extension and writes ascii
  ephemerides using the extended format.

* The error reporting system has been changed from simply exiting from
  any routine where an error occurs (which can disrupt interactive
  applications that are using the ephcom-3.0.0 libraries) to proper
  error returns for each libephcomc and libephcom routine which are
  correctly propagated back within libephcom and libephcomc to the
  external application or library that called one of the routines in
  those two libraries.

* The traditional JPL ascii and binary format specifications say
  nothing about the fractions used for the starting and ending Julian
  dates for a given data block.  However, for the planetary
  ephemerides produced by the JPL group all such dates correspond to
  midnight so they are offset from an integer by exactly 0.5.  In
  contrast, the planetary ephemerides produced by the INPOP group
  using the traditional JPL binary format have starting and stopping
  Julian dates corresponding to noon so they are offset from an
  integer by exactly 0.0.  The software for prior releases of ephcom
  assumed the offset was 0.5 so could not be used to read INPOP
  ephemerides even published with the traditional JPL binary format.
  The ephcom-3.0.0 release fixes this issue and detects whether the
  offset is 0.5 or 0.0 and uses appropriate logic in both cases so
  that no floating-point noise is introduced into those start/stop
  Julian dates (since offsets of 0.5 and 0.0 can be exactly
  represented by floating-point numbers).  Furthermore, logic has been
  implemented for both offset cases so that when a user requests
  interpolation at an arbitrary Julian date (represented by two 64-bit
  floating-point numbers), there is minimal floating-point noise
  introduced into those results due to potential representation issues
  for that number.  Note a limitation of ephcom-3.0.0 logic is the
  offset must be exactly 0.5 or 0.0 for the starting and stopping
  Julian dates.  On the other hand, we believe this is a theoretical
  issue because we are not aware of any ephemerides that deviate from
  this de facto standard.

* The CMake logic for our test system has been substantially improved
  and extended for this release.  For example, the CMake configuration
  of most of the test targets that have been implemented for the build
  tree is now automatically duplicated in the installed examples tree.
  As a result, a comprehensive test of the installed binary
  ephemerides and installed examples is now available.  This can be
  done after the install by running cmake using the installed examples
  directory as the source tree, and running "make test_everything"
  afterwards.  http://timeephem.sourceforge.net/ephcom.php (which is
  currently being prepared and which should be available a few days
  after the ephcom-3.0.0 release date) will have all the details.

* There have been many documentation improvements for this release.
  The doxygen documentation of all our libraries has been improved,
  and the hand-crafted man pages extended to new topics such
  as documenting the binary and ascii formats of ephemerides (see
  above) and documenting the libephcomc API. 

* There has been a substantial number of bug fixes for this release.
  Many of these bugs have been found because of improvements to our
  test system mentioned above.  Because of the good results on a
  number of different Linux and Windows platforms that we obtain with
  that test system for JPL and INPOP planetary ephemerides and the
  corresponding time ephemerides generated by te_gen-2.0.0 (whose
  calculation of the time-ephemeris integral and vector depends on
  quantities which are interpolated from planetary ephemerides using
  ephcom software), we feel confident that ephcom-3.0.0 has fewer bugs
  than any previous releases of ephcom despite its enhanced feature
  set.

For details of all ephcom-3.0.0 changes since the release of ephcom-2.0.2,
please consult the ChangeLog.release file.

Details of the ephcom-3.0.0 (and te_gen-2.0.0) tests:

This ephcom-3.0.0 release has been tested on the following Linux
platforms using the gcc and gfortran compilers: Debian wheezy on
x86-64 hardware; Fedora 17 on x86-64 hardware; and RHEL-6.3 on 64-bit
PowerPC hardware.  This release has also been tested on the following
Windows platforms: MinGW compilers (gcc and gfortran) on a 32-bit
Wine-1.5.19 platform built on the Debian wheezy x86-64 system; MinGW
compilers on MS Windows; and MSVC/ifort compilers on MS Windows.  The
ephcom-3.0.0 test suite has been implemented with bash, env, tr, cat, comp,
and sed.  Those apps are all routinely available on Linux platforms
and also are provided by MSYS for Windows platforms.  So a
prerequisite for all the Windows tests was that MSYS had to be
installed and on the PATH.  Another prerequisite of the ephcom build
is Python which is routinely available on both Linux and Windows.

The te_gen-2.0.0 test suite indirectly tests ephcom by interpolating
planetary-ephemeris results and manipulating the generated
time-ephemeris results afterwards using ephcom utilities.  That test
suite requires all the above prerequisites and also PLplot.  (A large
subset of the tests implemented by the te_gen-2.0.0 test suite uses
configured Python scripts which use the Python bindings for
ephcom-3.0.0 and PLplot-5.9.x to compare interpolated time ephemeris
results and plot the residuals between those results as a function of
time.)  PLplot is readily available on Linux in source code and binary
form and on Windows in source code form.  On both platforms PLplot
source code is readily built into binary form using the cross-platform
CMake-based build system for PLplot.

In practice, the ephcom-3.0.0 and te_gen-2.0.0 tests were
run sequentially on all the above platforms.

The above combined tests check many aspects of the ephcom-3.0.0
software.  Ascii JPL ephemerides were converted to binary ephemerides
and compared in detail (using ephcom_headcmp and ephcom_ephcmp)
with external binary ephemerides for the same ephemeris that were
produced by the legacy JPL Fortran software.  Those ephcom-generated
binary ephemerides were also tested (using ephcom_testeph) against the
testpo.* files that JPL provides for each of its published planetary
ephemerides.  Time-ephemeris integral results generated with the aid
of ephcom interpolation of INPOP planetary ephemeris results were
graphically (with PLplot) compared with the corresponding
time-ephemeris integral results generated by the independent INPOP
software.  For both planetary and time ephemerides, the binary
ephemeris form was converted to ascii form and back to binary form
again as a complete end-to-end consistency check for the
ephcom_eph2asc and ephcom_asc2eph software.

In all cases for the Linux platforms, and the Wine platform all these
build and run-time tests gave excellent results for 8 different JPL planetary
ephemerides, 6 different INPOP planetary ephemerides, and the
14 corresponding time ephemerides generated by te_gen-2.0.0.

The MS Windows tests were kindly done by Arjen Markus.  Unfortunately,
those tests are currently limited by issues which
appear to be external to ephcom-3.0.0 and te_gen-2.0.0.  For
example, Arjen found older versions of gfortran did not work correctly
with te_gen-2.0.0 so we recommend version 4.7.0 or later which solved the
issue for him.  The Python bindings for PLplot and ephcom build fine
for MinGW but do not build correctly for MSVC for the debug case which
must be specifically avoided (for MSVC/ifort) by specifying the cmake
option -DCMAKE_BUILD_TYPE=Release.  For more details about this issue
see
http://www.miscdebris.net/plplot_wiki/index.php?title=Install_Python.

Arjen also had to be careful about the method he used to put MSYS
(required for convenient testing) on the PATH for MSVC/ifort, but he
hasn't written up those details yet because he solved the problem for
a simple test software build with MSVC alone, but adding ifort to the
mix showed there were still interference issues between MSYS and
ifort.  Therefore, it is going to take him a while to figure out a
method to allow MSYS and MSVC/ifort to both be on the PATH at the same
time.

Arjen was able to build and to successfully complete limited run-time
tests for MinGW on MS Windows.  Those limits consist of using only one
planetary ephemeris and one corresponding time_ephemeris built by
te_gen with the PLplot testing results dropped because of an issue in
an early release candidate which has now been fixed.  Because of our
comprehensive testing success with MinGW on Wine, and these good
but limited test results for MinGW on MS Windows, we are confident
that MinGW will work well for most ephcom-3.0.0 (and te_gen-2.0.0) users.

Arjen was able to confirm that a pure (without MSYS on the PATH)
MSVC/ifort build completed without issues for both ephcom and te_gen,
and those executables could be run by hand without any issues (by
copying the libraries and executables over into the test framework
generated by MinGW + MSYS, and then running that test framework).
But putting MSYS on the PATH (required for convenient and
comprehensive testing) is currently problematic for the MSVC/ifort
case, and if some user figures that out, we would appreciate
hearing about what the solution is.

Test limitations:

A limitation of the above tests was the interpolation tests were only
done using control = 0 in the ephcom_interpolate_relative or
ephcom_interpolate_list argument lists.  Non-zero control values which
allow possibilities other than distance units of astronomical units
and time units of days in the returned interpolated quantities appear
to work but have only had minimal testing.

We believe that test coverage is good for gcc/gfortran on Linux
platforms, and good for MinGW gcc and gfortran on Windows platforms,
but other Windows compilers such as MSVC/ifort have not had adequate
testing yet.  Worse yet, the Mac OS X platform remains completely
untested.  It's possible that ephcom-3.0.0 will work right out of the
box for Mac OS X since that platform and Linux are Unix platforms, and
a lot of the Mac OS X Unix idiosyncrasies are taken care of by CMake's
strong cross-platform support.  Anyhow, we urge Mac OS X users to give
ephcom-3.0.0 (and te_gen-2.0.0) a try and report back issues (if any)
to us so we can fix them.

ephcom-3.0.0 limitations:

* ephcom-3.0.0 currently only has computer language support for C,
  Fortran 95, and Python.  Of course, we believe everybody should have
  access to planetary and time ephemeris results regardless of which
  computer language they are using so we encourage others to develop
  and donate libephcomc bindings for their favourite computer
  languages.



DETAILED CHANGELOG FOR THIS RELEASE


------------------------------------------------------------------------
r849 | airwin | 2013-01-11 23:16:57 -0800 (Fri, 11 Jan 2013) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/README.release

Completed draft of detailed release notes for the forthcoming ephcom-3.0.0 release.

------------------------------------------------------------------------
r848 | airwin | 2013-01-11 03:13:04 -0800 (Fri, 11 Jan 2013) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh
   M /trunk/time_ephemerides/te_gen/scripts/make_tarball.sh

Properly quote CFLAGS and FFLAGS that were specified for last commit.

------------------------------------------------------------------------
r847 | airwin | 2013-01-11 03:09:45 -0800 (Fri, 11 Jan 2013) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh
   M /trunk/time_ephemerides/te_gen/scripts/make_tarball.sh

Tweak script to use more diagnostic gcc and gfortran options especially
including the -fvisibility=hidden option for gcc which tests for
any visibility issues that might affect the the Windows case.

Use VERBOSE=1 on all make commands to store complete
information in corresponding *.out files.


------------------------------------------------------------------------
r846 | airwin | 2013-01-11 01:59:48 -0800 (Fri, 11 Jan 2013) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h

Fix obvious visibility issue introduced by last commit.

Only tested this fix for one case that failed without the fix on Linux
(with -fvisibility=hidden) but which succeeds now with the fix.

Comprehensive tests on both Linux (with -fvisibility=hidden this time)
and MinGW/SYS/Wine are in progress to make sure there are no other
issues introduced by the last commit.


------------------------------------------------------------------------
r845 | airwin | 2013-01-10 17:38:08 -0800 (Thu, 10 Jan 2013) | 31 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/ephcom_time_test.c
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Change the names of ephcom_cal2jd and ephcom_jd2cal to ephcom_cal2jd0
and ephcom_jd2cal0 within libephcom.  Implement ephcom_cal2jd and
ephcom_jd2cal routines in libephcomc that are wrappers for
ephcom_cal2jd0 and ephcom_jd2cal0.  The advantage of this change is it
simplifies linking for users of what we have called the "bindings" or
"high-level" API in the past. The result is such users only have to
link to libephcomc and can completely ignore libephcom.

I was quite reluctant to make this change right before the
ephcom-3.0.0 release.  It has only occurred now because after
discussing this issue in the past with David, I forgot the issue again
until I was writing up the release notes for ephcom.  Fortunately,
although a fair number of files are touched by this change, any
introduced issues caused by renaming routines should show up at build
time immediately on Linux, and these changes not only pass a build
test on Linux, but they also pass a two-ephemeris run-time test on
Linux (which also included a corresponding te_gen build and run test).
Furthermore, the advantages of simplified linking for users are fairly
compelling, and this release (where we break backwards API in any
case) is a much better time to introduce this API breakage than later.

Note I deliberately did not replace the dual linking of libephcomc and
libephcom by linking to just libephcomc for our bindings and examples.
The reason is such linking changes should be carefully checked on all
platforms.  Of course, as a result of this conservative policy on
changes to linking so close to release some of our bindings and
examples for this release will be overlinked.  However, that is a
completely benign linking style issue that can be addressed
post-release.


------------------------------------------------------------------------
r844 | airwin | 2013-01-09 14:50:06 -0800 (Wed, 09 Jan 2013) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/versions.cmake
   M /trunk/time_ephemerides/te_gen/versions.cmake

Update VERSION to 3.0.0 for ephcom and 2.0.0 for te_gen in
preparation for the ephcom-3.0.0 and te_gen-2.0.0 releases.

------------------------------------------------------------------------
r842 | airwin | 2013-01-09 14:24:32 -0800 (Wed, 09 Jan 2013) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh

Tweak spacing in output from this script.

------------------------------------------------------------------------
r841 | airwin | 2013-01-08 22:03:39 -0800 (Tue, 08 Jan 2013) | 20 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts/set_mingw_msys_path.wine_sh
   M /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts/set_msys_ephcom2.wine_sh
   M /trunk/time_ephemerides/te_gen/scripts/wine_scripts/set_mingw_msys_path.wine_sh
   M /trunk/time_ephemerides/te_gen/scripts/wine_scripts/set_msys_te_gen.wine_sh

Update wine source scripts to be the same as the revised ones used for
the latest comprehensive (and successful) tests on Wine.

The updates consist of improving the commentary, using ordinary
variables rather than environment variables where possible, and
confining the purpose of set_mingw_msys_path.wine_sh to just putting
CMake, MinGW, and MSYS on the PATH.

A bug in set_msys_te_gen.wine_sh was fixed so that PATH_NODLL was
changed from an ordinary variable (which the te_gen build script did
not have access to, thus clobbering the installed examples tree tests)
to an environment variable.

N.B. these scripts are useful for externally setting up MinGW/MSYS
testing on Wine (and presumably Windows).  However, they are not used
internally by the build system so essentially these changes are the
equivalent of documentation changes, and therefore I feel comfortable 
updating them this close to release.


------------------------------------------------------------------------
r838 | airwin | 2013-01-08 03:59:10 -0800 (Tue, 08 Jan 2013) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh

Use "svn export" to copy local directory changes _that are under svn
control_ into the tarball.  That's much cleaner and a better test than
using the local directory version (which could, for example,
incorporate files not under svn control into the tarball).


------------------------------------------------------------------------
r836 | airwin | 2013-01-08 03:52:42 -0800 (Tue, 08 Jan 2013) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/versions.cmake
   M /trunk/time_ephemerides/te_gen/versions.cmake

Bump VERSION consistent with RC4.

------------------------------------------------------------------------
r834 | airwin | 2013-01-07 23:23:39 -0800 (Mon, 07 Jan 2013) | 2 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts/README.wine_scripts

Explanation of these scripts and how to use them.

------------------------------------------------------------------------
r833 | airwin | 2013-01-07 22:35:56 -0800 (Mon, 07 Jan 2013) | 2 lines
Changed paths:
   D /trunk/jpl_ephemerides/ephcom2/scripts/build_msys_ephcom2.wine_sh
   D /trunk/jpl_ephemerides/ephcom2/scripts/set_mingw_msys_path.wine_sh
   D /trunk/jpl_ephemerides/ephcom2/scripts/set_msys_ephcom2.wine_sh
   A /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts
   A /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts/build_msys_ephcom2.wine_sh (from /trunk/jpl_ephemerides/ephcom2/scripts/build_msys_ephcom2.wine_sh:822)
   A /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts/set_mingw_msys_path.wine_sh (from /trunk/jpl_ephemerides/ephcom2/scripts/set_mingw_msys_path.wine_sh:822)
   A /trunk/jpl_ephemerides/ephcom2/scripts/wine_scripts/set_msys_ephcom2.wine_sh (from /trunk/jpl_ephemerides/ephcom2/scripts/set_msys_ephcom2.wine_sh:822)

Move wine scripts to their own directory.

------------------------------------------------------------------------
r832 | airwin | 2013-01-07 22:31:40 -0800 (Mon, 07 Jan 2013) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/doc/CMakeLists.txt

Previously the DESTDIR fix was not working for me.  (${DESTDIR} was being
replaced by nothing).

Implement the correct DESTDIR fix for the INSTALL(CODE... case
(according to a tip from David Cole who suggested escaping the "$" in
$ENV{DESTDIR} so that the DESTDIR environment variable would be read
at "make" time rather than cmake time where it is not defined
for the test case below.)

Tested by Alan W. Irwin <airwin@users.sourceforge.net> using the "make
DESTDIR=/tmp/whatever -j4 install" command for both ephcom and te_gen.


------------------------------------------------------------------------
r831 | airwin | 2013-01-07 10:52:19 -0800 (Mon, 07 Jan 2013) | 14 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Commit patch (version 2) from David Howells <dhowells@redhat.com>.

    Add some missing error handling to ephcom utility programs
        
    Add some missing error handling to ephcom utility programs.  The results of
    some calls to the ephcom library are depended on by later calls, and if the
    expected stuff is not returned due to an error occurring, this can result in
    segmentation faults.
    
Tested by: Alan W. Irwin <airwin@users.sourceforge.net> using the
"test_everything" and "install" targets on the Linux platform for two JPL ephemerides
and the full pack of INPOP ephemerides.
    

------------------------------------------------------------------------
r830 | airwin | 2013-01-05 15:41:40 -0800 (Sat, 05 Jan 2013) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Apply patch from Arjen Markus <arjen.markus@deltares.nl> to sort out
build issues (replace alloca by more standard malloc/free combination
and declare variables at the top of code blocks) that showed up for
the MSVC compiler.

Thanks, Arjen!


------------------------------------------------------------------------
r828 | airwin | 2013-01-04 12:47:09 -0800 (Fri, 04 Jan 2013) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dChar.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dDouble.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_cal2jd.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_close.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_get_coords.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_open.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_pleph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/jpl_ascii_ephemeris.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/jpl_binary_ephemeris.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/jpl_ephemeris.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants_ctx.3

AWI commit of "[PATCH 1/2] Library manual pages" patch by
David Howells <dhowells@redhat.com> which incorporates the last
of his recent changes.

Also update all html counterparts of the man pages to make them
consistent with the totality of David's recent series of man page
changes.


------------------------------------------------------------------------
r825 | airwin | 2013-01-03 11:13:01 -0800 (Thu, 03 Jan 2013) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/doc/CMakeLists.txt

AWI for David Howells <dhowells@redhat.com>.

For both ephcom and te_gen fix documentation installation to make sure
it goes to the intended destination directory within the root
directory specified on the make command line with DESTDIR= rather than
/ as the latter may be somewhere the build cannot write and may
clobber installed system data.

This is required to make it possible to build RPMs.


------------------------------------------------------------------------
r824 | airwin | 2013-01-03 10:27:00 -0800 (Thu, 03 Jan 2013) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh
   M /trunk/time_ephemerides/te_gen/scripts/make_tarball.sh

Determine VERSION from the value set in the versions.cmake
file in the top-level directory of the appropriate
ephcom or te_gen source tree.

These changes remove a version maintenance issue for each
of the make_tarball.sh scripts.


------------------------------------------------------------------------
r822 | airwin | 2012-12-31 22:29:17 -0800 (Mon, 31 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/versions.cmake
   M /trunk/time_ephemerides/te_gen/versions.cmake

Bump release-candidate version number.

------------------------------------------------------------------------
r821 | airwin | 2012-12-31 17:44:36 -0800 (Mon, 31 Dec 2012) | 27 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/deprecated.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/interface.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/generate_swig_documentation.py
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dChar.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dDouble.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_cal2jd.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_close.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_get_coords.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_open.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_pleph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Alloc2dChar.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Alloc2dDouble.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_cal2jd.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_close.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_get_coords.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_list.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_list_ctx.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_relative.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_relative_ctx.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_open.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_pleph.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants_ctx.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake
   M /trunk/jpl_ephemerides/ephcom2/examples/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/ephcom_time_test.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_repeat_interpolation.f
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/vtransit.f
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py
   M /trunk/jpl_ephemerides/ephcom2/examples/python/vtransit.py
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in
   M /trunk/jpl_ephemerides/ephcom2/python.cmake
   M /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.in
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h.in
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/libephcom_internal.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/names.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/swig.cmake
   M /trunk/jpl_ephemerides/ephcom2/test.cmake
   M /trunk/jpl_ephemerides/ephcom2/test_float32_double64.c
   M /trunk/jpl_ephemerides/ephcom2/test_host_endianness.c
   M /trunk/scripts/generate_website.sh
   M /trunk/scripts/style_source.sh
   M /trunk/time_ephemerides/te_gen/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/doc/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/doc/html/convert_inpop_ascii_time_ephemeris.html
   M /trunk/time_ephemerides/te_gen/doc/html/te_gen_chebyshev.html
   M /trunk/time_ephemerides/te_gen/doc/html/te_gen_header.html
   M /trunk/time_ephemerides/te_gen/doc/html/te_gen_integral_test.html
   M /trunk/time_ephemerides/te_gen/doc/html/te_gen_testfile_generate.html
   M /trunk/time_ephemerides/te_gen/doc/man/convert_inpop_ascii_time_ephemeris.1
   M /trunk/time_ephemerides/te_gen/doc/man/te_gen_chebyshev.1
   M /trunk/time_ephemerides/te_gen/doc/man/te_gen_header.1
   M /trunk/time_ephemerides/te_gen/doc/man/te_gen_integral_test.1
   M /trunk/time_ephemerides/te_gen/doc/man/te_gen_testfile_generate.1
   M /trunk/time_ephemerides/te_gen/ephemeris_tests.cmake
   M /trunk/time_ephemerides/te_gen/examples/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/examples/f95/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/examples/f95/print_te_gen_integrand_components_main.f
   M /trunk/time_ephemerides/te_gen/examples/f95/semimajor_axes_main.f
   M /trunk/time_ephemerides/te_gen/examples/f95/te_gen_integral_test_main.f
   M /trunk/time_ephemerides/te_gen/examples/f95/test_asteroids_main.f
   M /trunk/time_ephemerides/te_gen/examples/f95/test_linear_lsf_main.f
   M /trunk/time_ephemerides/te_gen/examples/f95/test_orbit_main.f
   M /trunk/time_ephemerides/te_gen/installed_CMakeLists.txt.in
   M /trunk/time_ephemerides/te_gen/scripts/make_tarball.sh
   M /trunk/time_ephemerides/te_gen/src/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/src/asteroids.f
   M /trunk/time_ephemerides/te_gen/src/dpolint.f
   M /trunk/time_ephemerides/te_gen/src/dromb.f
   M /trunk/time_ephemerides/te_gen/src/dtrapzd.f
   M /trunk/time_ephemerides/te_gen/src/ephem_constants.f
   M /trunk/time_ephemerides/te_gen/src/fill_common_block.f
   M /trunk/time_ephemerides/te_gen/src/interface.f
   M /trunk/time_ephemerides/te_gen/src/kepler_solve.f
   M /trunk/time_ephemerides/te_gen/src/linear_lsf.f
   M /trunk/time_ephemerides/te_gen/src/lower_case.f
   M /trunk/time_ephemerides/te_gen/src/orbit.f
   M /trunk/time_ephemerides/te_gen/src/te_gen_dot_product.f
   M /trunk/time_ephemerides/te_gen/src/tt_derivative.f
   M /trunk/time_ephemerides/te_gen/src/vector_calc.f
   M /trunk/time_ephemerides/te_gen/utils/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/utils/convert_inpop_ascii_time_ephemeris_main.f
   M /trunk/time_ephemerides/te_gen/utils/te_gen_chebyshev_main.f
   M /trunk/time_ephemerides/te_gen/utils/te_gen_header_main.f
   M /trunk/time_ephemerides/te_gen/utils/te_gen_testfile_generate_main.f

Copyright lines should reflect release dates rather than when the software
was written.  So since there haven't been releases of either ephcom or
te_gen in 2012, all copyright dates of 2012 must be changed to 2013
when the forthcoming releases of ephcom and te_gen will occur
(in roughly a week).

Furthermore, copyright dates should ideally be discrete reflecting
the exact years when releases occurred.  Thus, I changed
2011-2013 ==> 2011, 2013 for all my copyright lines where
that pattern occurred.

For David's copyright lines (which are now uniformly dated as 2013 
since he did not contribute to the 2011 release), I also attempted to always render
his e-mail address consistently (with angle brackets rather
than parantheses) and on the same line as "Copyright".

I also fixed a few whitespace issues discovered when I wrote out the
unique copyright strings that were being used with the appropriate
find, xargs, grep, and sort --unique pipeline combinations.

This change touched virtually all files and much of it was automated
(via find commands and sed scripts).  Therefore, I looked very
carefully at the diff before committing to be sure most changes were
on the same line as the "copyright" string, and in the few cases where
that did not occur, made sure the change was exactly what I intended.


------------------------------------------------------------------------
r819 | airwin | 2012-12-31 15:42:21 -0800 (Mon, 31 Dec 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt

Add additional man pages to install.

Instead of using a separate loop to install each kind
of man page, use one loop with logic to detect which
kind of man page it is with logic to install in the appropriate
man directory for that kind of man page.



------------------------------------------------------------------------
r818 | airwin | 2012-12-31 15:36:12 -0800 (Mon, 31 Dec 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dChar.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dDouble.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_cal2jd.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_close.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_get_coords.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_open.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_pleph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants_ctx.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/jpl_ascii_ephemeris.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/jpl_binary_ephemeris.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/jpl_ephemeris.html

Make html format of man page files (excluding symlinks) consistent
with man page files using commands (invoked in the man subdirectory)
similar to

for name in $(find -name "*.1" -a -type f |sed "s?.1??"); \
do echo $name; man2html <$name.1 >| ../html/$name.html; done

for 1, 3, 5, 7.



------------------------------------------------------------------------
r817 | airwin | 2012-12-31 10:41:14 -0800 (Mon, 31 Dec 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Alloc2dChar.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Alloc2dDouble.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_asc2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_cal2jd.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_close.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_get_coords.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_list.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_list_ctx.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_relative.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_relative_ctx.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_open.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_pleph.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants_ctx.3
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1
   A /trunk/jpl_ephemerides/ephcom2/doc/man/jpl_ascii_ephemeris.5
   A /trunk/jpl_ephemerides/ephcom2/doc/man/jpl_binary_ephemeris.5
   A /trunk/jpl_ephemerides/ephcom2/doc/man/jpl_ephemeris.7

AWI for  David Howells <dhowells@redhat.com>.

Improve *.1 and *.3 man pages with better cross-references.

Initial implementation of *.5 man pages to explain the
ascii and binary-ephemeris formats used by ephcom, and a *.7 man page to
give more background information on JPL ephemerides.

ToDo. For the updated pages, make similar html updates,
For the new pages, build system changes to install them,
and create corresponding html pages.


------------------------------------------------------------------------
r816 | airwin | 2012-12-30 19:30:33 -0800 (Sun, 30 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/CMakeLists.txt

Do not include files named svn-commit.tmp* in source packages.

------------------------------------------------------------------------
r814 | airwin | 2012-12-30 17:15:53 -0800 (Sun, 30 Dec 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/versions.cmake
   M /trunk/time_ephemerides/te_gen/versions.cmake

Move to completely numerical versioning scheme to describe release
candidates 2 for ephcom-3.0.0 and te_gen-2.0.0.

------------------------------------------------------------------------
r812 | airwin | 2012-12-30 16:33:43 -0800 (Sun, 30 Dec 2012) | 22 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dChar.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Alloc2dDouble.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Free2dChar.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_Free2dDouble.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_cal2jd.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_close.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_close_ctx.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_get_coords.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_list_ctx.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_interpolate_relative_ctx.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_jd2cal.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_open.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_open_ctx.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_pleph.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_read_constants_ctx.html
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Alloc2dChar.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Alloc2dDouble.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Free2dChar.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_Free2dDouble.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_cal2jd.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_close.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_close_ctx.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_get_coords.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_list.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_list_ctx.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_relative.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_interpolate_relative_ctx.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_jd2cal.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_open.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_open_ctx.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_pleph.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants.3
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_read_constants_ctx.3

Initial commit of *.3 man pages hand-crafted by David Howells
<dhowells@redhat.com> to describe the ephcom "bindings" API.

Added appropriate man/*.3 symlinks for the case when the man page referred to
multiple function API's.

Added html equivalents for the files (as opposed to symlinks)
using

cd man
for name in $(find -name "*.3" -a -type f |sed "s?.3??"); do echo \
$name; man2html <$name.3 >| ../html/$name.html; done

Added appropriate html/*.html symlinks for the case when the man page
referred to multiple function API's.

Dropped installation of doxygen-generated man pages describing the
ephcom API, because David prefers the hand-crafted ones.  Of course,
we still install the doxygen-generated html files both for the
ordinary install-tree install and also for the website install.


------------------------------------------------------------------------
r811 | airwin | 2012-12-29 11:21:16 -0800 (Sat, 29 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Remove modification date for the file from the output.

------------------------------------------------------------------------
r810 | airwin | 2012-12-28 16:55:14 -0800 (Fri, 28 Dec 2012) | 25 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

AWI commit of two related patches by David Howells <dhowells@redhat.com>.

    Fix loop counting and missing error handling in ephcom_writebinary_block()
    
    ephcom_writebinary_block() should have the variable 'i' as the same size of
    type as filebyte and filepos.  Further, ftell() can give an error which should
    be checked for.

Fix the following warnings:
    
/data/planet/ephcom2/src/libs/file.c: In function ‘ephcom_writebinary_header’:
/data/planet/ephcom2/src/libs/file.c:1438:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘long
unsigned int’ [-Wformat]
/data/planet/ephcom2/src/libs/file.c:1592:17: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘long
unsigned int’ [-Wformat]

This and the previous changes by Arjen Markus
Tested by: Alan W. Irwin <airwin@users.sourceforge.net> using
the test_everything and install targets for both ephcom and te_gen
on both Linux and Wine.  These tests only involved two JPL
planetary ephemerides (de200 and de405) so were limited
compared to my usual comprehensive test involving large
numbers of JPL and INPOP ephemerides.


------------------------------------------------------------------------
r809 | airwin | 2012-12-28 14:35:47 -0800 (Fri, 28 Dec 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/libephcom_internal.h
   M /trunk/time_ephemerides/te_gen/src/CMakeLists.txt
   A /trunk/time_ephemerides/te_gen/src/te_gen_ifort.def

AWI for Arjen Markus.  Apply changes from Arjen that he found necessary
to get ephcom and te_gen to build for the Intel Fortran/MSVC/C++ set
of compilers on Microsoft Windows.

These changes inspected for Linux/Wine issues but not tested
(yet) on those platforms.  Arjen is currently having
trouble getting an MSYS environment (required for run-time testing)
to work for Intel Fortran/MSVC/C++.


------------------------------------------------------------------------
r808 | airwin | 2012-12-27 18:30:37 -0800 (Thu, 27 Dec 2012) | 8 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/scripts/build_msys_ephcom2.wine_sh (from /trunk/jpl_ephemerides/ephcom2/scripts/msys_ephcom2.wine.sh:797)
   D /trunk/jpl_ephemerides/ephcom2/scripts/msys_ephcom2.wine.sh
   M /trunk/jpl_ephemerides/ephcom2/scripts/set_mingw_msys_path.wine_sh
   M /trunk/jpl_ephemerides/ephcom2/scripts/set_msys_ephcom2.wine_sh

Update Wine build scripts to the latest versions. Note that
build_msys_ephcom2.wine_sh is generic so it is useful for anybody.
However, that generic script sources set_msys_ephcom2.wine_sh to
set up some specifics (appropriate in this case to the AWI Wine
platform) which in turn sources set_mingw_msys_path.wine_sh (again
with specifics appropriate to the AWI Wine platform).


------------------------------------------------------------------------
r807 | airwin | 2012-12-27 18:17:48 -0800 (Thu, 27 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt

Drop gnulliver_swap_test test for the Windows and not MinGW case.

------------------------------------------------------------------------
r806 | airwin | 2012-12-27 18:16:12 -0800 (Thu, 27 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake

Output original de_dir_list and inpop_dir_list.

------------------------------------------------------------------------
r805 | airwin | 2012-12-27 17:44:01 -0800 (Thu, 27 Dec 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Add current source directory to the list of include directories.  This
_may_ fix the ifort issue that Arjen found where the #include directive
was not finding ephcomf.f.

------------------------------------------------------------------------
r804 | airwin | 2012-12-27 17:34:54 -0800 (Thu, 27 Dec 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

AWI for Arjen Markus.

Better detection of ifort compiler.

For that compiler on Windows, use -fpp rather than -cpp compiler option.


------------------------------------------------------------------------
r803 | airwin | 2012-12-27 17:26:30 -0800 (Thu, 27 Dec 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_ifort.def

Update ifort define file so that it is consistent with Fortran 95 part
of the interface.

------------------------------------------------------------------------
r801 | airwin | 2012-12-26 18:39:05 -0800 (Wed, 26 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake

Only repeat message output de_dir_list and inpop_dir_list if they are modified.

------------------------------------------------------------------------
r800 | airwin | 2012-12-26 17:28:09 -0800 (Wed, 26 Dec 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/python.cmake

Implement logic to insure PYTHON_INSTDIR is a CMake path.  (Previously
the code gave a mixture of Windows and CMake path results for this
variable on Windows which completely confused CMake for the install-tree
build and test.)

------------------------------------------------------------------------
r799 | airwin | 2012-12-26 17:26:34 -0800 (Wed, 26 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in

Output derived PYTHON_INSTDIR.

------------------------------------------------------------------------
r798 | airwin | 2012-12-26 15:42:27 -0800 (Wed, 26 Dec 2012) | 31 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Use simplified and largely uniform logic everywhere for massaging
header->ttl information.  

1. For ascii input fill in the last part (including the linefeed read
in) of the first EPHCOM_MAXTTL characters in the ttl arrays with
blanks and null terminate the result using the EPHCOM_MAXTTL+1
character.

2. For ascii output take whatever is in the null-terminated ttl arrays
and extend it with blanks to EPHCOM_MAXTTL
characters which are null-terminated with the EPHCOM_MAXTTL+1
character.  For actual ascii output trim off all the trailing blanks.

3. For binary input, take whatever is read into the null-terminated
ttl arrays in the binary ephemeris and extend the ttl arrays with
blanks to EPHCOM_MAXTTL characters which are null-terminated with the
EPHCOM_MAXTTL+1 character. 

4. For binary output, take whatever is in the null-terminated ttl
arrays and extend it with blanks to EPHCOM_MAXTTL characters which are
null-terminated with the EPHCOM_MAXTTL+1 character before outputting
to the binary ephemeris.

The result of this new largely uniform logic is two bugs have been
squashed.  The extraneous linefeeds inserted into Linux and Wine
binary ephemerides for the first ttl record are now gone and replaced
by blanks.  For Wine, the extraneous extra garbage characters inserted
into ascii output which occurred whenever gcc was optimized (-O1
through -O3) are now gone.


------------------------------------------------------------------------
r797 | airwin | 2012-12-23 13:33:03 -0800 (Sun, 23 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in
   M /trunk/time_ephemerides/te_gen/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/installed_CMakeLists.txt.in

Use modern idiom to determine CMake version to be output.

------------------------------------------------------------------------
r793 | airwin | 2012-12-23 02:25:14 -0800 (Sun, 23 Dec 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh

Update script to allow testing of INPOP ephemerides.

Make version 3.0.0-RC1 (for now).

Several other tweaks.

The result appears to work well.

------------------------------------------------------------------------
r792 | airwin | 2012-12-23 02:21:24 -0800 (Sun, 23 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/versions.cmake
   M /trunk/time_ephemerides/te_gen/versions.cmake

rc1 ==> RC1 in version.

------------------------------------------------------------------------
r790 | airwin | 2012-12-22 15:51:05 -0800 (Sat, 22 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in

Finish implementation of tests of the installed python examples.

------------------------------------------------------------------------
r789 | airwin | 2012-12-22 15:49:21 -0800 (Sat, 22 Dec 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt

Fix up logic for deciding whether binary ephemeris will be available
for the test at the time of the test.

------------------------------------------------------------------------
r788 | airwin | 2012-12-22 13:30:20 -0800 (Sat, 22 Dec 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in

Complete the implementation of the install-tree build and test
of the Fortran examples.

------------------------------------------------------------------------
r787 | airwin | 2012-12-22 13:28:37 -0800 (Sat, 22 Dec 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt

Tweak the CMake logic to implement C examples tests.

------------------------------------------------------------------------
r786 | airwin | 2012-12-22 13:22:56 -0800 (Sat, 22 Dec 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake

For custom commands that run ephcom_testeph for JPL ephemerides, add file dependency on
the test file.


------------------------------------------------------------------------
r785 | airwin | 2012-12-21 22:14:28 -0800 (Fri, 21 Dec 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in

Add C, Fortran 95, and Python examples to the install-tree build and
test system.

The installed C examples build and test now with no known issues, but
the f95 and python examples have just been updated in a generic way to
work in the install tree and more work needs to be done on them before
they will work correctly for that case.


------------------------------------------------------------------------
r784 | airwin | 2012-12-21 22:08:14 -0800 (Fri, 21 Dec 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake

Implement more precise handling of binary-ephemeris dependencies. If
the binary-ephemeris target does not exist, it is assumed the binary
ephemeris is pre-built (which occurs for the INPOP case and also for
the install tree in general), and add_dependency is skipped.  The
previous method where add_dependency was used with no check as to
whether the dependent target for the binary ephemeris actually existed
only worked because of a long-standing CMake bug,
http://public.kitware.com/Bug/view.php?id=9188, but this new method
should work regardless of whether that bug is fixed or not.


------------------------------------------------------------------------
r783 | airwin | 2012-12-21 21:50:06 -0800 (Fri, 21 Dec 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py
   M /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out

Remove filename from the output because the full pathname for the
binary ephemeris file varies from system to system and between build
tree and install tree.


------------------------------------------------------------------------
r782 | airwin | 2012-12-20 22:25:47 -0800 (Thu, 20 Dec 2012) | 22 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in

Clarify and drastically reduce the CMake code that configures most JPL
and INPOP tests by using one merged loop rather than two separate
loops to configure the core tests for those two kinds of ephemerides.

Generalize the configured test logic so that the (JPL and INPOP) tests
work in both the ephcom build tree and the ephcom install tree.  This
is a big improvement on the previous CMake code that configured 
install tree tests since that code was unique ==> maintenance issue
and only dealt with the JPL case.

Tested by: Alan W Irwin <airwin@users.sourceforge.net> using the
test_everything and install targets in the build tree and
the test_everything target in the install tree.  These are fairly
light tests that involve only two JPL ephemerides and the usual
6 INPOP ephemerides.  For example, the "cross" tests are not
configured or run for this small number of JPL ephemerides.

ToDo: much heavier testing involving all JPL ephemerides that
are accessible to me + incorporating additional examples
tests into the install tree test system.


------------------------------------------------------------------------
r781 | airwin | 2012-12-20 22:12:33 -0800 (Thu, 20 Dec 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt

CMake export all the ephcom utilities so that these add_executable
targets can be used by other CMake-based build and/or test systems
(such as the test system for the ephcom install tree or the build and
test system for te_gen).


------------------------------------------------------------------------
r775 | airwin | 2012-12-18 13:09:26 -0800 (Tue, 18 Dec 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Use best code practice (as recommended by David Howells) for
determining when particular bits of control are set.


------------------------------------------------------------------------
r774 | airwin | 2012-12-16 11:05:38 -0800 (Sun, 16 Dec 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Consolidate all C library testing in ephemeris_tests.cmake.

Remove test of the JPL legacy code build from the tests because that
is no longer necessary (because the flce_test_external target
implemented in examples/f95 already does tests of the legacy API), and
because the test only works for very specialized conditions
(such as having built the JPL legacy code).

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> using
the test_everything and install targets configured with 6
INPOP planetary ephemerides and a minimal set of JPL ephemerides.


------------------------------------------------------------------------
r773 | airwin | 2012-12-16 10:08:47 -0800 (Sun, 16 Dec 2012) | 4 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/ephemeris_tests.cmake (from /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt:747)

Start process of moving tests from src/CMakeLists.txt to
ephemeris_tests.cmake


------------------------------------------------------------------------
r764 | airwin | 2012-12-06 14:54:58 -0800 (Thu, 06 Dec 2012) | 30 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Update transformation of units for time-ephemeris integral and
time-ephemeris vector and their derivatives.  

The time-ephemeris integral which is internally stored with units of
days is converted for interpolation output to units of seconds if
coords->seconds is true.

The time-ephemeris integral derivative which is internally stored
without units (i.e., days/day or seconds/sec) continues that way for
interpolation output regardless of coords->seconds.

The time-ephemeris vector is internally stored with units of km/day. 
For interpolation output the km units are converted to au if
coords->km is false, and the time units are converted from days^{-1}
to seconds^{-1} if coords->seconds is true.

The time-ephemeris vector derivative is internally stored with units
of km/day^2.  For interpolation output the km units are converted to
au if coords->km is false, and the time units are converted from
days^{-2} to seconds^{-2} if coords->seconds is true.

Make corresponding commentary and doxygen changes.

Note, these changes should work, but they are only build-tested
because none of our tests interpolate with anything other than a zero
control parameter (which results in all distance units being left as
au and all time units being left as days in interpolated output
quantities).


------------------------------------------------------------------------
r763 | airwin | 2012-12-04 18:58:23 -0800 (Tue, 04 Dec 2012) | 20 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/deprecated.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcom_parameters.h
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py
   M /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/names.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Use consistent terminology everywhere for quantities tabulated in a
time ephemeris; 

time ephemeris ==> time-ephemeris integral
earth velocity ==> time-ephemeris vector

Also, change names of

EPHCOM_TE ==> EPHCOM_TEI
EPHCOM_VE ==> EPHCOM_TEV

to be consistent with the above change in terminology.

This change in terminology changes lots of files, but

Tested by: Alan W. Irwin <airwin@users.sourceforge.net> using
the test_everything and install targets for a quick test configuration
that uses just two planetary ephemerides (DE200 and DE405).


------------------------------------------------------------------------
r748 | airwin | 2012-11-20 13:08:51 -0800 (Tue, 20 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_asc2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1

Change wording of licensing boilerplate to be exactly consistent with
the rest of the ephcom files.

------------------------------------------------------------------------
r747 | airwin | 2012-11-20 12:50:46 -0800 (Tue, 20 Nov 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/deprecated.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/interface.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/generate_swig_documentation.py
   M /trunk/jpl_ephemerides/ephcom2/examples/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/ephcom_time_test.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_repeat_interpolation.f
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/testconst.f
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/vtransit.f
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py
   M /trunk/jpl_ephemerides/ephcom2/examples/python/vtransit.py
   M /trunk/jpl_ephemerides/ephcom2/installed_CMakeLists.txt.in
   M /trunk/jpl_ephemerides/ephcom2/python.cmake
   M /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.in
   M /trunk/jpl_ephemerides/ephcom2/scripts/make_tarball.sh
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h.in
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/libephcom_internal.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/names.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/swig.cmake
   M /trunk/jpl_ephemerides/ephcom2/test.cmake
   M /trunk/jpl_ephemerides/ephcom2/test_float32_double64.c
   M /trunk/jpl_ephemerides/ephcom2/test_host_endianness.c

Update license boilerplate everywhere to version 2.1 of LGPL rather
than the incorrect version 2.  This change is necessary to be
consistent with the licensing of Paul Hardy's ephcom1.


------------------------------------------------------------------------
r746 | airwin | 2012-11-20 12:35:27 -0800 (Tue, 20 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1

Clean up one badly duplicated paragraph in the licensing terms.

------------------------------------------------------------------------
r743 | airwin | 2012-11-19 22:20:17 -0800 (Mon, 19 Nov 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/install_locations.cmake
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/versions.cmake

Create install_locations.cmake and versions.cmake as module files to
be included from top-level CMakeLists.txt file for the ephcom project.

install_locations sets all the install locations.

All version numbers are collected in versions.cmake.

Reviewed all those numbers and updated them for this forthcoming
release (except for trailing "-rc1" on package version number which
will need to be dropped just before the release).



------------------------------------------------------------------------
r740 | airwin | 2012-11-19 12:14:43 -0800 (Mon, 19 Nov 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_asc2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1

LGPL version 2.1 or later ==> LGPL version 2.1 only to be
consistent with the original ephcom1 licensing terms as required.

Also, remove references to
the ephcom_vtransit man page which no longer exists.


------------------------------------------------------------------------
r738 | airwin | 2012-11-19 09:39:18 -0800 (Mon, 19 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.in
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Improve quality and consistency of usage messages.

------------------------------------------------------------------------
r737 | airwin | 2012-11-19 09:16:52 -0800 (Mon, 19 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

More informative output when a compact index is missing from an
ephemeris.

------------------------------------------------------------------------
r736 | airwin | 2012-11-19 09:14:46 -0800 (Mon, 19 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h

Style previous commit.

------------------------------------------------------------------------
r735 | airwin | 2012-11-17 14:27:22 -0800 (Sat, 17 Nov 2012) | 17 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/names.c

Fix issue reintroduced by one of the recent patches from David
Howells.

The ephcom_ephcmp application needs access to the array of names of
the compact indices.  As far as I can tell, there is no way to export
that data (as defined by names.c) from the library to ephcom_ephcmp.
Instead, if those names are defined as an ordinary static array in
ephcom.h and that array removed from names.c (the present commit),
then ephcom_ephcmp prints out those names properly (rather than
"null") as part of its ordinary output both on Linux and Windows
(Wine).

Tested by: Alan W. Irwin <airwin@users.sourceforge.net>
by looking at ephcom_ephcmp output on both Linux and
Wine.


------------------------------------------------------------------------
r731 | airwin | 2012-11-15 09:27:35 -0800 (Thu, 15 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f

Tweak doxygen documentation.  Identify "end function" statements.

------------------------------------------------------------------------
r726 | airwin | 2012-11-14 10:58:52 -0800 (Wed, 14 Nov 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.in (from /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.sh.in:681)
   D /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.sh.in
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Change ephcom_concatenate.sh ==> ephcom_concatenate everywhere except
the documentation (where this change has already been made).

Tested by: Alan W. Irwin <airwin@users.sf.net> using the
ephcom test_everything and install targets.

As far as I can tell, te_gen does not use ephcom_concatenate so no
changes were made there.


------------------------------------------------------------------------
r725 | airwin | 2012-11-14 10:40:39 -0800 (Wed, 14 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   A /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.html (from /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.sh.html:681)
   D /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.sh.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_asc2eph.1
   A /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.1 (from /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.sh.1:681)
   D /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.sh.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1

ephcom_concatenate.sh ==> ephcom_concatenate in all documentation files.

------------------------------------------------------------------------
r720 | airwin | 2012-11-12 16:22:46 -0800 (Mon, 12 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Install ephcomh.mod Fortran 95 module file in appropriate location in
install tree (according to where such module files are installed in Debian).

------------------------------------------------------------------------
r719 | airwin | 2012-11-12 13:27:06 -0800 (Mon, 12 Nov 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/vtransit.f
   M /trunk/jpl_ephemerides/ephcom2/examples/python/vtransit.py
   M /trunk/jpl_ephemerides/ephcom2/examples/results/vtransit.out

Round off three significant digits so that floating-point noise
will not ruin comparisons on different platforms.

With this new rounding I achieve good test results on both Linux and
MinGW/MSYS/Wine.


------------------------------------------------------------------------
r718 | airwin | 2012-11-12 13:13:24 -0800 (Mon, 12 Nov 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f

Use filtered comparison for test_api Fortran 95 test results, and
round those results consistent with the C (and other) results.


------------------------------------------------------------------------
r717 | airwin | 2012-11-12 13:11:28 -0800 (Mon, 12 Nov 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py

Use filtered comparison for test_api Python test results, round those
results consistent with the C results, and use correct %d format rather
than the %s format for outputting integer ephcom constants.


------------------------------------------------------------------------
r716 | airwin | 2012-11-12 13:06:35 -0800 (Mon, 12 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/CMakeLists.txt

Let cmp state when files are different.

------------------------------------------------------------------------
r715 | airwin | 2012-11-12 00:33:13 -0800 (Mon, 12 Nov 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt

Filter comparisons between calculated and stored results.  Such
filtering makes it possible to do comparisons of Windows
platform results with stored results.

This implementation only used for comparison of C and stored results
at the moment, but it does give good results on Linux and Wine.

ToDo.  Rounded and filtered comparison of python and fortran results
with stored results. 

------------------------------------------------------------------------
r714 | airwin | 2012-11-12 00:28:11 -0800 (Mon, 12 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c
   M /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out

Round results so that other platforms (such as Wine) still pass tests.

------------------------------------------------------------------------
r713 | airwin | 2012-11-12 00:25:08 -0800 (Mon, 12 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c

Style previous commit.

------------------------------------------------------------------------
r712 | airwin | 2012-11-11 14:40:50 -0800 (Sun, 11 Nov 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/f95/vtransit.f

Add Fortran implementation of vtransit example and test of that
example.  That test shows the results are identical with the results
of the corresponding C example.


------------------------------------------------------------------------
r711 | airwin | 2012-11-11 14:30:56 -0800 (Sun, 11 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f

Tweak error message.

------------------------------------------------------------------------
r710 | airwin | 2012-11-11 14:00:44 -0800 (Sun, 11 Nov 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/examples/python/vtransit.py
   M /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out
   M /trunk/jpl_ephemerides/ephcom2/examples/results/vtransit.out

Output more exact value of Julian date.

Update results file properties so that these comparison files will
always have "LF" line endings regardless of what platform is being
used for the svn checkout or update.


------------------------------------------------------------------------
r709 | airwin | 2012-11-11 00:55:11 -0800 (Sun, 11 Nov 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f

Finished the Fortran 95 test_api example.  This now produces a perfect
test result when compared against results for the corresponding C (and
other) language examples.  Therefore, this is a good indication that
the complete Fortran 95 API is working properly.

ToDo: For completeness implement the vtransit example in
Fortran 95.  Also, make some required additional build-system
changes so that the tests work on MinGW/MSYS/Windows
platforms.


------------------------------------------------------------------------
r708 | airwin | 2012-11-11 00:48:00 -0800 (Sun, 11 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/interface.f

Add interfaces for ephcom_cal2jd and ephcom_jd2cal.

------------------------------------------------------------------------
r707 | airwin | 2012-11-11 00:46:07 -0800 (Sun, 11 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt

Use correct libraries when linking Fortran 95 examples.

------------------------------------------------------------------------
r706 | airwin | 2012-11-10 23:26:59 -0800 (Sat, 10 Nov 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/f95/test_api.f

Initial implementation of the Fortran 95 version of the test_api example.

This version gives perfect test results other than the missing
output from ephcom_jd2cal and ephcom_cal2jd which will be implemented
as soon as the required changes in the Fortran 95 API are done.


------------------------------------------------------------------------
r705 | airwin | 2012-11-10 22:03:38 -0800 (Sat, 10 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py
   M /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out

Change from "e" output format to "E" output format to make it easier
to match results with the equivalent Fortran example.

------------------------------------------------------------------------
r704 | airwin | 2012-11-10 22:01:06 -0800 (Sat, 10 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt

Tweak commentary.

------------------------------------------------------------------------
r703 | airwin | 2012-11-10 18:58:13 -0800 (Sat, 10 Nov 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c

Add ephcom_jd2cal and ephcom_cal2jd calls to make the output of the C
version of test_api agree exactly with the Python version (and the
version in examples/results/test_api.out).  This result is a
self-consistency check of the complete Python API versus the complete
higher-level C API that is the source for all language bindings and
the recommended API for most C applications that use ephcom2.

The comment in the previous commit message concerning the Fortran 95
API was the result of getting ahead of myself.  The Fortran 95 version
of test_api still needs to be implemented!


------------------------------------------------------------------------
r702 | airwin | 2012-11-10 18:34:46 -0800 (Sat, 10 Nov 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py

Use symbolic constants rather than numbers to control whether Julian
or Gregorian proleptic calendar is being used.

Actually test and output Gregorian result from ephcom_cal2jd.


------------------------------------------------------------------------
r701 | airwin | 2012-11-10 15:29:39 -0800 (Sat, 10 Nov 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/c/test_api.c

Add C implementation of test_api and also add a test for that
implementation.

ToDo: add tests of ephcom_cal2jd and ephcom_jd2cal to this
implementation, but that must wait adding those functions to the
Fortran 95 interface.


------------------------------------------------------------------------
r700 | airwin | 2012-11-10 15:24:30 -0800 (Sat, 10 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py
   M /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out

Reformat test_api output so that other languages can mimic it.

------------------------------------------------------------------------
r699 | airwin | 2012-11-10 13:33:28 -0800 (Sat, 10 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt

Add file level and target level dependency on _ephcomcmodule for all
python examples.

------------------------------------------------------------------------
r698 | airwin | 2012-11-10 13:30:50 -0800 (Sat, 10 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c

Style previous commit.

------------------------------------------------------------------------
r697 | airwin | 2012-11-10 13:28:46 -0800 (Sat, 10 Nov 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Hide information to the same degree for Python's
ephcomc.ephcom_open_ctx as is done for other languages for
ephcom_read_constants.

------------------------------------------------------------------------
r696 | airwin | 2012-11-10 13:24:06 -0800 (Sat, 10 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt

Find env which is needed by some tests.

------------------------------------------------------------------------
r695 | airwin | 2012-11-10 11:37:55 -0800 (Sat, 10 Nov 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Change ephcom_read_constants(_ctx) routines so they return cnames and
values in alphabetic order of cnames.  This change potentially allows
finding name/value pairs by bisection for the languages that use
ephcom_read_constants(_ctx).  This change also makes it
straightforward to list out all the the names and values from the
ephemeris header in alphabetic order by their name for C and other
languages that use the ephcom_read_constants(_ctx) routines. Python is
one language that uses a different alternative to those routines.
However, in that case, the names/values are returned in the
ephcomc.ephcom_open_ctx.constants directory which also makes it
straightforward to list out all the names and values from the
ephemeris header in alphabetic order by their name (see the
examples/python/test_api.py script for an example of this).


------------------------------------------------------------------------
r693 | airwin | 2012-11-09 21:17:03 -0800 (Fri, 09 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt

Add test_api.py to the list of examples that are normally run as part
of external checks.

------------------------------------------------------------------------
r692 | airwin | 2012-11-09 21:15:47 -0800 (Fri, 09 Nov 2012) | 10 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/examples/results/test_api.out

Initial commit of test data for the test_api applications.

ToDo.  There is a lot of python-specific formatting in this result
which is okay for now (because the only example being tested so far
with this file is examples/python/test_api.py).  However, this file
will have to become more generically formatted (and test_api.py
changed accordingly) in the future as we propagate the test_api
example to other languages.


------------------------------------------------------------------------
r691 | airwin | 2012-11-09 21:07:23 -0800 (Fri, 09 Nov 2012) | 3 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/examples/python/test_api.py (from /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py:681)
   D /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py

Rename testeph.py ==> test_api.py to distinguish it better from the
ephcom_testeph utility.

------------------------------------------------------------------------
r690 | airwin | 2012-11-09 15:42:43 -0800 (Fri, 09 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/python/vtransit.py

Create vtransit_python_test_external_de405 target to test vtransit.py.
Update vtransit.py to be consistent with corresponding C example.

------------------------------------------------------------------------
r689 | airwin | 2012-11-09 15:40:00 -0800 (Fri, 09 Nov 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt

Use a "c_" in the target name that tests vtransit.c results to
distinguish this target from similar targets for other languages.

------------------------------------------------------------------------
r688 | airwin | 2012-11-09 15:37:56 -0800 (Fri, 09 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c

Use ISO dates/times.

------------------------------------------------------------------------
r687 | airwin | 2012-11-09 15:36:52 -0800 (Fri, 09 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/results/vtransit.out

Use ISO dates and times.

------------------------------------------------------------------------
r686 | airwin | 2012-11-07 16:14:19 -0800 (Wed, 07 Nov 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/results
   A /trunk/jpl_ephemerides/ephcom2/examples/results/vtransit.out

Add known results for the vtransit example to the repository and a comparison
with those known results for the C version of that example.


------------------------------------------------------------------------
r685 | airwin | 2012-11-07 16:02:00 -0800 (Wed, 07 Nov 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Set and use variables for sed and cmp executables.

------------------------------------------------------------------------
r684 | airwin | 2012-11-07 13:18:01 -0800 (Wed, 07 Nov 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c

Expand C version of the vtransit example to output positions that are
scaled by the distance to confirm that mid-transit corresponds to a
fairly close agreement in angular positions between geocentric Sun and
Venus.

ToDo: Propagate these changes to the equivalent Python example and
also implement an equivalent example in Fortran 95.  For each
language, test results against the C results for the same example.


------------------------------------------------------------------------
r683 | airwin | 2012-11-06 19:31:52 -0800 (Tue, 06 Nov 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/deprecated.f
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcom_parameters.h
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_mingw.def
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/global_defines.sed
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/interface.f

Move to Fortran 95 interface for the recommended (i.e., not
deprecated) part of the API for the ephcomf library.  This change has
been build-tested.  It has also been run-tested for the deprecated
part of the API of that library which still works (e.g, for the
flce_test_external_de405 target where the flce_testeph Fortran source
code that only uses JPL deprecated Fortran routine calls continues to
work as previously).

Run-time tests of this new Fortran 95 API for the non-deprecated part
of the ephcomf library will have to wait until te_gen changes are made
to use this new API.  However, the contents of bindings/f95/ephcomf.mod
and the results of nm for bindings/f95/libephcomf.so look correct
so I think this new API should work.


------------------------------------------------------------------------
r678 | airwin | 2012-10-21 23:27:48 -0700 (Sun, 21 Oct 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c

Fix memory management bug which occurred in the Fortran interface when
propagating a nonexistent filename error.

------------------------------------------------------------------------
r677 | airwin | 2012-10-21 23:01:09 -0700 (Sun, 21 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c

Tweak Doxygen documentation.

------------------------------------------------------------------------
r676 | airwin | 2012-10-21 22:59:51 -0700 (Sun, 21 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Add function names to most error messages.

------------------------------------------------------------------------
r675 | airwin | 2012-10-21 21:33:35 -0700 (Sun, 21 Oct 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c

Make style of error messages associated with ephcom_open more consistent
with utilities.

------------------------------------------------------------------------
r674 | airwin | 2012-10-21 15:06:45 -0700 (Sun, 21 Oct 2012) | 16 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Drop the free of ctx when it is NULL due to an error.

More informative error messages for ephcom_fgets, ephcom_fputs,
ephcom_fputc, and ephcom_fprintf.

Implement and use ephcom_fgetc.

Fixed incorrect "Success" error message for fread.

This should finish my current review and update of how error returns
are handled for functions calling other functions from within file.c

ToDo: review how non-file.c source code handles error
returns from functions defined within file.c.


------------------------------------------------------------------------
r673 | airwin | 2012-10-21 13:33:30 -0700 (Sun, 21 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c

Style recent changes.

------------------------------------------------------------------------
r672 | airwin | 2012-10-21 13:32:25 -0700 (Sun, 21 Oct 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c

Put blanks around the various PRI* formatting macros.  The blanks
don't appear to make any difference, and if you don't use the blanks,
uncrustify gets confused attempting to style this source file.


------------------------------------------------------------------------
r668 | airwin | 2012-10-17 11:31:22 -0700 (Wed, 17 Oct 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py
   M /trunk/time_ephemerides/te_gen/src/residual_plot.py.in

All tests including the comprehensive generation of plots for te_gen
with Python scripts indicate that ephcom_open_ctx delivers header data
to the user more conveniently than ephcom_read_constants, and the _ctx
variants of ephcom_interpolate_relative and ephcom_interpolate_list
are reliable replacements for the equivalent non-ctx versions. 
Therefore, remove ephcom_read_constants, ephcom_interpolate_relative,
and ephcom_interpolate_list from the Python API for ephcom and also
use the ctx equivalents of those for our Python scripts.


------------------------------------------------------------------------
r667 | airwin | 2012-10-16 16:50:42 -0700 (Tue, 16 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c

Get rid of compiler warnings.

------------------------------------------------------------------------
r666 | airwin | 2012-10-16 10:24:14 -0700 (Tue, 16 Oct 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i

Removal of "c_" prefix everywhere but the macros allows Doxygen
documentation for ephcom_cal2jd and ephcom_jd2cal to propagate for those
functions to swig_documentation.i.

------------------------------------------------------------------------
r665 | airwin | 2012-10-16 10:21:56 -0700 (Tue, 16 Oct 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Remove "c_" prefix from routine names other than where there are
macros to define that prefix.  This change allows the Doxygen
documentation to refer to the unprefixed name and therefore
allows propagation of that documentation to swig_documentation.i.

Also, strip out irrelevant/wordy documentation at the start of the
date.c and file.c source files.

------------------------------------------------------------------------
r664 | airwin | 2012-10-16 09:21:06 -0700 (Tue, 16 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i
   M /trunk/jpl_ephemerides/ephcom2/doc/generate_swig_documentation.py

Correct double-quote bugs

------------------------------------------------------------------------
r663 | airwin | 2012-10-16 08:38:51 -0700 (Tue, 16 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt

BUILD_SHARED_LIBS option should be determined before Python is considered.

------------------------------------------------------------------------
r662 | airwin | 2012-10-15 18:50:22 -0700 (Mon, 15 Oct 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c

Fix logic error (wrong length used in inequality check on strings so
uninitialized data could be compared) in compare_ascii logic.

Interestingly, this general logic error was discovered during
the course of Wine platform tests.


------------------------------------------------------------------------
r661 | airwin | 2012-10-15 11:09:24 -0700 (Mon, 15 Oct 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c

Implement debug output which made me realize I was screwing up the
hexadecimal output for floating-point numbers (which I fixed with a
union).

Also greatly improve formatting consistency of output results.


------------------------------------------------------------------------
r660 | airwin | 2012-10-15 00:40:48 -0700 (Mon, 15 Oct 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c
   M /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h.in
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c

Drop unreliable (at least on Wine and probably due to fiddling with
NaN patterns when byteswapping creates those) floating point byteswaps
implemented by gnulliver32f and gnulliver64f. Use gnulliver32c and
gnulliver64c instead.

Implement gnulliver32c for those who need to byteswap a float.

Drop gnulliver32f and gnulliver64f tests from gnulliver_swap_test.c 
Add a gnulliver32c test to joint the already existing test of
gnulliver64c.

Massive changes to rationalize gnulliver_swap_test.c so that it
will work correctly on Wine with its much smaller MAX_RAND value.


------------------------------------------------------------------------
r659 | airwin | 2012-10-15 00:32:59 -0700 (Mon, 15 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h

Style previous commit.

------------------------------------------------------------------------
r658 | airwin | 2012-10-13 10:20:20 -0700 (Sat, 13 Oct 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h.in

Drop the now-redundant check on __STDC_IEC_559__ to make sure the host
has 32-bit floats and 64-bit doubles since __STDC_IEC_559__ is not
available on Wine (and probably proprietary Windows as well), and that
information is known another way with the CMake-configured
GNULLIVER_HOST_FLOAT32_DOUBLE64 macro.


------------------------------------------------------------------------
r657 | airwin | 2012-10-13 10:05:04 -0700 (Sat, 13 Oct 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h.in
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Do not build or use the gnulliver library if the host does not have 32-bit
floats and 64-bit doubles.

This infrastructure has been tested for correctness by falsifying the
test result for 32-bit floats and 64-bit doubles to return 0 rather
than 1.  In this case, the builds were fine and little-endian binary
ephemerides created on a little-endian host could be read and written
properly.  However, as expected, inpop binary ephemerides (which are
big-endian) could not be read (i.e., they errored out with a reasonable
message).


------------------------------------------------------------------------
r656 | airwin | 2012-10-13 09:16:56 -0700 (Sat, 13 Oct 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/include/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h
   A /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h.in (from /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h:642)
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt

Make gnulliver.h (now renamed to gnulliver.h.in) configurable.  There
are actually no configurable items in this file yet, but that is about
to be changed.

------------------------------------------------------------------------
r655 | airwin | 2012-10-13 08:26:09 -0700 (Sat, 13 Oct 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/test.cmake

Change CMake variable name set by 32-bit float/64-bit double test from
CMAKE_HOST_FLOAT_OK to CMAKE_HOST_FLOAT32_DOUBLE64.  Also improve
warning message when CMAKE_HOST_FLOAT32_DOUBLE64 is 0.


------------------------------------------------------------------------
r654 | airwin | 2012-10-13 00:48:13 -0700 (Sat, 13 Oct 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/test.cmake
   A /trunk/jpl_ephemerides/ephcom2/test_float32_double64.c

Move tests out of top-level CMakeLists.txt into new test.cmake file.

Implement a new test that platform has 32-bit floats and 64-bit doubles.

------------------------------------------------------------------------
r653 | airwin | 2012-10-12 22:58:40 -0700 (Fri, 12 Oct 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h

On the Wine platform ENODATA and ELIBBAD are not #defined.  I don't know
if that is a Wine bug or whether they are just following non-POSIX Windows.

But to be safe, if any of EINVAL (#defined on WINE, but who knows on other
non-Linuxplatforms?) , ENODATA, or ELIBBAD are not
#defined, then #define them to be -1.


------------------------------------------------------------------------
r652 | airwin | 2012-10-11 19:47:06 -0700 (Thu, 11 Oct 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i

Update swig documentation (which propagates now to Python, but which
should ultimately propagate to all swig-generated interfaces) using
the results generated by the check_swig_documentation target.  That
is, the swig documentation is now consistent with what is generated
by our doxygen documentation.

------------------------------------------------------------------------
r651 | airwin | 2012-10-11 19:40:29 -0700 (Thu, 11 Oct 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt

Implement a check_swig_documentation target (linux + python 2.6+ only)
that generates a file from the doxygen-generated documentation and
compares it with bindings/swig_support/swig_documentation.i.  If the
comparison shows a difference, the user has a chance to copy the
result to bindings/swig_support/swig_documentation.i to improve that
documentation.


------------------------------------------------------------------------
r650 | airwin | 2012-10-11 19:35:46 -0700 (Thu, 11 Oct 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/generate_swig_documentation.py

Tweak lead paragraph of swig documentation file that is created by this
script.

------------------------------------------------------------------------
r649 | airwin | 2012-10-11 19:30:54 -0700 (Thu, 11 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Improve doxygen documentation.

------------------------------------------------------------------------
r648 | airwin | 2012-10-11 18:20:05 -0700 (Thu, 11 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/swig.cmake

Correct copyright range.

------------------------------------------------------------------------
r647 | airwin | 2012-10-11 15:26:37 -0700 (Thu, 11 Oct 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in

Add XML files to those which are normally generated by doxygen.  This
is in support of using the doxygen results to automate generation of a
potential replacement for bindings/swig_support/swig_documentation.i


------------------------------------------------------------------------
r646 | airwin | 2012-10-11 15:23:07 -0700 (Thu, 11 Oct 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/python.cmake
   A /trunk/jpl_ephemerides/ephcom2/swig.cmake

Move swig and python configuration to their own central files located
in the CMAKE_MODULE_PATH directory.

------------------------------------------------------------------------
r645 | airwin | 2012-10-11 14:27:43 -0700 (Thu, 11 Oct 2012) | 3 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/doc/generate_swig_documentation.py

Implement Python script to generate a potential swig_documentation.i
replacement from doxygen-generated XML documentation of our C libraries.

------------------------------------------------------------------------
r644 | airwin | 2012-10-10 16:27:54 -0700 (Wed, 10 Oct 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Large indentation style change because of the recent change to
scripts/style_source.sh that makes uncrustify completely ignore
the %{ and %} directives and therefore NOT apply an additional
indentation layer because of those directives.

I like this new style for *.i files a lot better since it makes it
much easier to recognize the start and end of functions, etc.


------------------------------------------------------------------------
r642 | airwin | 2012-10-09 16:01:56 -0700 (Tue, 09 Oct 2012) | 13 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/examples/python/vtransit.py

Initial implementation of Python equivalent of examples/c/vtransit.c.

This script was originally donated by David Howells
<dhowells@redhat.com> but has been substantially modified to be
consistent with the new swig-generated context-oriented Python
interface to ephcom.

The revised script produces absolutely identical results to the C
equivalent which is another test (after testeph.py) that the new
swig-generated context-oriented Python interface to ephcom is working
properly.


------------------------------------------------------------------------
r641 | airwin | 2012-10-09 15:55:25 -0700 (Tue, 09 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py

Turn file into an executable Python script.

------------------------------------------------------------------------
r640 | airwin | 2012-10-09 15:45:30 -0700 (Tue, 09 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Style previous change that was just committed.

------------------------------------------------------------------------
r639 | airwin | 2012-10-09 15:42:58 -0700 (Tue, 09 Oct 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c

Get rid of lame announcement at the start of output telling you what
programme you are running!


------------------------------------------------------------------------
r638 | airwin | 2012-10-09 15:40:00 -0700 (Tue, 09 Oct 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Add some additional #defines for constants that would be useful to
swig-generated bindings.

------------------------------------------------------------------------
r637 | airwin | 2012-10-09 13:00:40 -0700 (Tue, 09 Oct 2012) | 16 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py

Improved choice of interpolation epoch.

Include EPHCOM_GEOMOON coordinates in ephcom_interpolate_list* tests.

Print out all C header constants appearing in
bindings/swig_support/ephcomcapi.i

Replace "foo" everywhere by "ephcom_ctx

Add test calls to recently interfaced ephcom_interpolate_relative_ctx
and ephcom_interpolate_list_ctx

Those produced the same results as the equivalent non-ctx variants
indicating that the new interfaces for ephcom_interpolate_relative_ctx
and ephcom_interpolate_list_ctx are working.

------------------------------------------------------------------------
r636 | airwin | 2012-10-09 12:50:27 -0700 (Tue, 09 Oct 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Implement Python bindings for ephcom_interpolate_*_ctx routines.

These ephcom_context variants of the Python ephcom interpolation
routines work without obvious issues in one test case tried so far,
and further extensive testing (via te_gen) is planned.


------------------------------------------------------------------------
r635 | airwin | 2012-10-09 00:16:41 -0700 (Tue, 09 Oct 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py

Keep the original Python interface tests in this Python script since
those still exist, but also test the partially implemented new Python
interface using code contributed by David Howells
<dhowells@redhat.com> but modified further by AWI.

Status: So far can call ephcom_open_ctx and from the object returned
by that function get access to and print out all binary ephemeris
header values.

ToDo: After ephcom_interpolate*ctx variants are wrapped, test those
calls.


------------------------------------------------------------------------
r634 | airwin | 2012-10-09 00:10:03 -0700 (Tue, 09 Oct 2012) | 21 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Adapt David Howells' ideas/contributed code concerning a new Python
interface to the swig approach.

Status: I have wrapped ephcom_open_ctx to allow ctx and binary
ephemeris file header values to be accessed as well as a dictionary of
names, values of binary ephemeris header variables.  

I have deliberately excluded David's additional implementation that
made C header constants available via a call to ephcom_open_ctx since
the swig approach already makes those C header constants available via
the ephcomc namespace (which is more logical than the ephcom_open_ctx
namespace).

I have also excluded David's initial implementation of additional
wrapped ctx variant functions as part of the ephcom_open_ctx
namespace.  Instead, I hope to use the Python object returned by
ephcom_open_ctx as one of the arguments of the ephcom_interpolate*_ctx
functions that are wrapped by swig, but that idea needs to be tested
by attempting to implement it.


------------------------------------------------------------------------
r633 | airwin | 2012-10-08 23:50:01 -0700 (Mon, 08 Oct 2012) | 36 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Commit of "libs: Provide versions of ephcom_open and ephcom_close for
language bindings" patch from David Howells <dhowells@redhat.com>.

Provide special versions of ephcom_open and ephcom_close for use by a language
binding module (such as for Python) that can carry the context within its own
structures:

 (1) Open a data file and fill in a preallocated and precleared context:

        EPHCOMDLLIMPEXP
        ephcom_context *ephcom_open_ctx( ephcom_context *ctx,
                                         const char *filename );

     This can be called from the Python bindings module with a Python Object
     containing the ephcom_context struct, thus allowing Python to directly
     access the contents of the context.

     Upon error, the memory pointed to by ctx is not freed, but anything
     allocated within the function is.  ephcom_open() just becomes a wrapper
     around this.

 (2) Close a data file context:

        EPHCOMDLLIMPEXP
        int ephcom_close_ctx( ephcom_context *ctx );

     Everything bar the memory pointed to directly by ctx is closed and/or
     freed.  The caller is responsible for releasing the ephcom_context struct
     itself.

     This can be called from something such as the Python bindings module that
     has embedded the context struct within a struct of its own (such as Python
     object).



------------------------------------------------------------------------
r626 | airwin | 2012-10-01 18:02:42 -0700 (Mon, 01 Oct 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in

Used "doxygen -u" command to update to the doxgyen 1.8.1.2 standard
and thus remove all doxygen-related warning messages.

Also preserve my EXCLUDE_PATTERNS comments concerning why I
am excluding certain files (all user comments are erased by "doxygen -u"
so you have to do something special to get them back).


------------------------------------------------------------------------
r625 | airwin | 2012-10-01 17:47:07 -0700 (Mon, 01 Oct 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/CMakeLists.txt

Improve message for the case when swig cannot be found.

------------------------------------------------------------------------
r611 | airwin | 2012-09-14 22:01:11 -0700 (Fri, 14 Sep 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt

Fix a bug in the ephcom_ephcmp utility where the compact coefficient
names were coming out as (null).  The fix was to compile names.c as
part of the ephcom_ephcmp utility, but there may be a better way to
do this.


------------------------------------------------------------------------
r607 | airwin | 2012-09-12 19:43:19 -0700 (Wed, 12 Sep 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.sh.in

Remove the time ephemeris forms since normally there is only one
compressed file in that case so this script approach is (1) overkill 
and (2) fragile when there is more than one ascii form of time
ephemeris in a particular directory.

------------------------------------------------------------------------
r606 | airwin | 2012-09-12 16:54:44 -0700 (Wed, 12 Sep 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Make "j != header->ncoeff" error message more informative.

------------------------------------------------------------------------
r604 | airwin | 2012-09-10 10:38:43 -0700 (Mon, 10 Sep 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Change all instances of %d to %u when formatting unsigned ints.

Tested by: Alan W. Irwin <airwin@users.sf.net> for both JPL and INPOP
ephemerides using the test_everything and install targets.

------------------------------------------------------------------------
r603 | airwin | 2012-09-08 20:26:48 -0700 (Sat, 08 Sep 2012) | 28 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Fix an array overrun issue that occurs in the loop logic to trim all
trailing blanks from title strings in ephcom_writeascii_header.  This
issue only occurs for the special case where the title is all
whitespace (which occurs for INPOP ephemerides).  The decrementing
index for the loop reaches -1 for this special case which caused a bus
error for the unsigned integer index. The solution is to restore the
type of the loop index to int again (since it must reach -1 to
terminate for this special case) _and_ put in a range check on the
loop so it never indexes anything outside the array boundaries.
(Previously we were relying on the isspace function to stop the loop,
but that is problematic for this special case since conceivably you
could have a bit pattern in memory corresponding to whitespace outside
the array limits which would cause writing to locations outside the
array bounds.)

Presumably isspace by a high-probability (but not 100 per cent) chance
did stop the loop soon enough to avoid obvious run-time errors when
testing INPOP ephemerides prior to the recent unsigned changes.
However, after those changes the obvious bus error result was not
found during my tests because those tests were not comprehensive
enough (i.e., they did not include INPOP ephemerides to speed up the
testing process).  So I plan to be more specific about what was tested
in the Tested by: line from now on.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the test_everything
and install targets for _both_ JPL and INPOP ephemerides.


------------------------------------------------------------------------
r602 | airwin | 2012-09-08 17:25:39 -0700 (Sat, 08 Sep 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Style previous commit.

------------------------------------------------------------------------
r601 | airwin | 2012-09-08 11:34:38 -0700 (Sat, 08 Sep 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Add some sanity checking for the int arguments of the 2d alloc and free
routines.

------------------------------------------------------------------------
r600 | airwin | 2012-09-08 10:20:40 -0700 (Sat, 08 Sep 2012) | 23 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Revert the recent change from int to unsigned for the integer arguments of the
ephcom_Alloc2d... and ephcom_Free2d... routines.  Those integer
arguments are directly affected by user input, and if they
accidentally enter -1 for one of those integers in the user-exposed
language bindings, they could initiate an accidental denial of service
attack on themselves with OOM.  (Of course, if they specify extremely
large integers, they get what they deserve in any case, but that would
not be accidental.)

This change has the nice side benefit that unsigned is not an issue
any more for vtransit.c or testeph.c.

Also fix two of my recent changes associated with reverting back to
int types for nvalues and cname_length.  Those changes incorrectly
chose the potentially dangerous (unsigned) cast to these user-input
variables when comparing with small unsigned quantities.  Now, I use
the alternative and completely safe (int) cast of the (small) unsigned
quantities being compared.

Tested by Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets.


------------------------------------------------------------------------
r599 | airwin | 2012-09-07 23:15:07 -0700 (Fri, 07 Sep 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Style previous changes in this series of modified patches from
David Howells <dhowells@redhat.com> by running the 

scripts/style_source.sh --apply

script.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the test_everything
and install targets.


------------------------------------------------------------------------
r598 | airwin | 2012-09-07 23:04:07 -0700 (Fri, 07 Sep 2012) | 23 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Implemented the same simple idea as the "lib: Set unused bits of pv[6]
to NaN" by David Howells <dhowells@redhat.com>.

Set the unused bits of pv[6] to NaN to make the FPU complain if
someone tries to do something with one of them.

I did my own implementation of this two line insertion because
otherwise there would have been conflicts to resolve (from previous
patches in David's patch series which I dropped).  I also protected this
inserted code by #ifdef NAN so that the idea will only be applied for
those platforms where the NAN macro is #defined.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets after checking that indeed the
macro NAN (a non-standard GNU extension) is #defined for the
particular set of CFLAGS that I use

CFLAGS="-O3 -fvisibility=hidden -std=c99 -pedantic -Wall -Wextra
-Wmissing-prototypes -Wstrict-prototypes -Wnested-externs -Wconversion
-Wshadow -Wcast-qual -Wcast-align -Wwrite-strings
FFLAGS=-O3 -std=legacy -Wall -Wextra"


------------------------------------------------------------------------
r597 | airwin | 2012-09-07 22:18:08 -0700 (Fri, 07 Sep 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Commit of "lib: Don't use >0 when testing to see if a bit is set in a
signed int" patch from David Howells <dhowells@redhat.com>.

Don't use >0 when testing to see if a bit is set in a signed integer,
just in case the constant gets changed to have the MSB set.  As we
have defined enums for this, use conditionals and the enum symbols
which the compiler will optimise appropriately.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the install and
test_everything targets.


------------------------------------------------------------------------
r596 | airwin | 2012-09-07 21:11:57 -0700 (Fri, 07 Sep 2012) | 45 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Commit of modified form of "lib: Make header values unsigned" patch
from David Howells <dhowells@redhat.com>.

Most of the values in the ephcom header don't make any sense if
negative, so represent them as unsigned in the ephcom_header struct.
This has the benefit that we no longer need the checks for negative
values.

Further modifications by AWI:

I want to stick strictly with int arguments and not unsigned int
arguments for the bindings API since some languages have no support
for unsigned ints.  Therefore, do not change some of the int arguments
of the bindings API (consisting of the functions in libephcom and
libephcomc that are wrapped for the Fortran and Python bindings) from
ints to unsigned ints. This additional modification only affects
nvalues, cname_length, numde (for all ephcom_read_constants variants)
and nbody (for all ephcom_interpolate_list variants).

Instead of David's first 3 patches in the series entitled "lib: Kill
some warnings in ephcom.c and ephcomc.c", "lib: Add 'unspecified'
value for the ephcom_object...", and "lib: Print better messages in
ephcom_pleph()", I simply replace the ephcom_object argument type by
int in ephcom_interpolate_relative_ctx.  This means ntarget and
ncenter are consistently typed as int in all functions that have those
arguments. This allows wild ntarget or ncenter values entered by the
user for any of the bindings to have arbitrary values so long as they
follow the flexible rules documented in ephcom_interpolate_relative
and documented AND robustly checked in ephcom_pleph.

Change the coords->center type from ephcom_object to int for similar
reasons.

These modifications were required on top of the rest of David's patch 
to eliminate all compiler warnings with gcc version 4.4.5 for the case
where

CFLAGS="-O3 -fvisibility=hidden -std=c99 -pedantic -Wall -Wextra
-Wmissing-prototypes -Wstrict-prototypes -Wnested-externs -Wconversion
-Wshadow -Wcast-qual -Wcast-align -Wwrite-strings"

Tested by: Alan W. Irwin <airwin@users.sf.net> using the test_everything
and install targets with the above CFLAGS and gcc-4.4.5.


------------------------------------------------------------------------
r593 | airwin | 2012-09-06 20:26:46 -0700 (Thu, 06 Sep 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/names.c

Style results from the David Howells <dhowells@redhat.com> patch series
that has just been committed.

Tested by Alan W. Irwin <airwin@users.sf.net> using the test_everything
and install targets.

------------------------------------------------------------------------
r592 | airwin | 2012-09-06 20:19:18 -0700 (Thu, 06 Sep 2012) | 34 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Commit of "lib: Fix a valgrind reported error" patch from David
Howells <dhowells@redhat.com>.

Fix a valgrind reported error, though I don't precisely understand why
it occurs (and only when optimised):

==11552== Invalid read of size 4
==11552==    at 0x4E1B922: ephcom_open (file.c:202)
==11552==    by 0x400B25: main (vtransit.c:78)
==11552==  Address 0x526edb4 is 36 bytes inside a block of size 37
alloc'd
==11552==    at 0x4A0884D: malloc (vg_replace_malloc.c:263)
==11552==    by 0x4E1B904: ephcom_open (file.c:198)
==11552==    by 0x400B25: main (vtransit.c:78)

Line 198 is:

        ctx->filename = (char *) malloc( strlen( filename ) + 1 );
	
and 202 is:
	
        ctx->len_filename = strlen( ctx->filename );

AWI comment: I also don't understand why this simple change makes a
valgrind difference on your platform.  I haven't done any such
valgrind tests recently, but you may have discovered an error in the
gcc optimizer for your version of gcc.  But in any case, this patch
drops an unnecessary call to strlen and replaces a call to strcpy by a
presumably faster call to memcpy so I have committed it.

Tested by Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets.


------------------------------------------------------------------------
r591 | airwin | 2012-09-06 20:04:50 -0700 (Thu, 06 Sep 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Commit "Remove a set of braces that used to hold a local variable"
patch from David Howells <dhowells@redhat.com>.

Remove a set of braces that used to hold a local variable that has
since been removed and wind back the interior indentation.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets.


------------------------------------------------------------------------
r590 | airwin | 2012-09-06 19:57:44 -0700 (Thu, 06 Sep 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Commit of "Remove a third level of redundant else-statements" patch by
David Howells <dhowells@redhat.com>.

Remove a third level of redundant else-statements where the if
statement exits or returns unconditionally.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets.


------------------------------------------------------------------------
r589 | airwin | 2012-09-06 19:48:53 -0700 (Thu, 06 Sep 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Commit of "Remove a second level of redundant else-statements" patch
by David Howells <dhowells@redhat.com>.

Remove a second level of redundant else-statements where the if
statement exits or returns unconditionally.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets. 

------------------------------------------------------------------------
r588 | airwin | 2012-09-06 19:41:28 -0700 (Thu, 06 Sep 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Commit of "Remove a level of redundant else-statements" patch by David
Howells <dhowells@redhat.com>.

Tested by Alan W. Irwin <airwin@users.sf.net> using the
test_everything and install targets.

------------------------------------------------------------------------
r587 | airwin | 2012-09-06 19:32:41 -0700 (Thu, 06 Sep 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Commit of "Change else-return to if-return" patch by David
Howells <dhowells@redhat.com>.

Change an else-return to an if-return and remove indentation.

Tested by: Alan W. Irwin <airwin@users.sf.net>

------------------------------------------------------------------------
r586 | airwin | 2012-09-06 19:16:59 -0700 (Thu, 06 Sep 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   A /trunk/jpl_ephemerides/ephcom2/src/libs/names.c

Commit of patch "lib: Make enum constant representative names globally
accessible" patch from David Howells <dhowells@redhat.com>.

Make enum constant representative name tables globally accessible and
move them all to one common file.

Tested by: Alan W. Irwin <airwin@users.sf.net> using the test_everything
and install targets.
 

------------------------------------------------------------------------
r585 | airwin | 2012-09-06 13:51:40 -0700 (Thu, 06 Sep 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c

Fix issue introduced by the last commit where for the common case
where stopjd is larger than the largest time of the binary ephemeris
an attempt was made to read past the end of the data.  The results
were fine for the last commit, but the current commit avoids that
invalid read which in turn squelches the error message associated with
that invalid read.


------------------------------------------------------------------------
r584 | airwin | 2012-09-06 13:46:30 -0700 (Thu, 06 Sep 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Comment out some leftover debugging output.

------------------------------------------------------------------------
r582 | airwin | 2012-09-04 15:53:57 -0700 (Tue, 04 Sep 2012) | 18 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/src/utils/time_select.c

Remove the just implemented ephcom_time_select utility since I
just proved (using the same example of taking a subset of
the inpop8a long ephemeris and proving it identical to the inpop8a
short ephemeris) that the functionality of

ephcom_time_select bin1 startjd stopjd bin2

is exactly replicated by

ephcom_eph2eph bin1 bin1 bin2 startjd stopjd

The input binary ephemeris must be repeated since the ephcom_eph2eph
utility has the feature that it merges the first two binary
ephemerides in time, but the startjd stopjd time selection logic works
identically to the now deleted ephcom_time_select code and also the
recently updated ephcom_eph2asc utility.


------------------------------------------------------------------------
r581 | airwin | 2012-09-04 15:36:10 -0700 (Tue, 04 Sep 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c

Fix bug in and refine time selection logic to be the same as the tested
time selection for the ephcom_time_select utility.  The introduced bug
that has been fixed was that stopjd was ignored altogether.  The
refinement is that if startjd coincides exactly with the start of a
block, that is the first block that will be selected, and if stopjd
coincides exactly with the end of a block, that block will be the
last that is selected.

------------------------------------------------------------------------
r580 | airwin | 2012-09-04 15:31:21 -0700 (Tue, 04 Sep 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/src/utils/time_select.c

Implement a utily to copy a time-selected subset of one binary
ephemeris to a new binary ephemeris.  This utility has been tested by
creating a short INPOP ephemeris corresponding to the range of
inpop08a_m100_p100 from the much longer inpop08a_m1000_p1000.  The
result was identical (as checked with cmp) to the existing
inpop08a_m100_p100 ephemeris.


------------------------------------------------------------------------
r571 | airwin | 2012-08-30 16:19:43 -0700 (Thu, 30 Aug 2012) | 24 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Important time transformation bug fix for the integral time case.

The inpop ephemerides have header->ss[0] and header->ss[1] values
which are integral as opposed to the half-integral values for these
quantities that exist with the JPL ephemerides.  This difference
necessitates some differences in how the independent time variable is
transformed since it is important to have as exact time calculations
as possible in both the integral and half-integral cases.  However, a
bug was introduced in the recent initial implementation of the
integral case; the et2 calculation completely ignored (gack!)
coords->et2[1]. That bug has now been fixed by adopting the good
half-integral logic except for a time_offset which is 0. in the
integral case and 0.5 in the half-integral case.

This bug fix vastly improves the te_gen results for inpop ephemerides
since those are implemented using changes in coords->et2[1] over each
4-day interval, and those time differences were ignored because of the
ephcom bug. Before, the calculated inpop time ephemeris was only
within 10 per cent or so of the corresponding JPL results, but now it
is within 1 part in 10^7 within the interval from +/- a century from
J2000 which jibes pretty closely with what is expected for those
differences.


------------------------------------------------------------------------
r570 | airwin | 2012-08-27 10:30:56 -0700 (Mon, 27 Aug 2012) | 12 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/examples/python/test_compare_ephemerides.py

Implement a test comparing de405 and inpop8a results using the same
units (meters and meters/day) that are used in Table 6 of
http://arxiv.org/pdf/0906.2860v2.pdf.  That table corresponds to a
comparison between de423 and inpop8a so the agreement of this current
test is not as good as that table, but it is within a factor of two or
so for the inner planets which is a pretty good confirmation that we
appear to be reading and interpolating both de405 and inpop8a binary
ephemerides properly.  Of course, a much better test would be to compare
with a "testpo" file put out by the inpop group, but so far they have
not supplied that.


------------------------------------------------------------------------
r569 | airwin | 2012-08-27 10:24:08 -0700 (Mon, 27 Aug 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py

Make it easier to run the python test example for different binary
ephemerides.  For now the filename corresponds to de405 in the build
tree, but this should be made configurable later.

------------------------------------------------------------------------
r568 | airwin | 2012-08-26 22:50:56 -0700 (Sun, 26 Aug 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c

Rename ephcom_coeffname to the more descriptive
ephcom_compact_coeff_name.

Tracing system tweaks.

Within ephcom.c make coords->km logic depend on whether coords->km is
non-zero or not (just in case some compiler allows users to set
coords->km to be non-zero but not equal to 1 despite the enum
declaration of coords->km as either 0 or 1.)


------------------------------------------------------------------------
r567 | airwin | 2012-08-26 22:41:32 -0700 (Sun, 26 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

Set coords.km and coords.seconds to true or false (1 or 0) depending
on the bits set in the control variable to be consistent with enum
declaration of coords.km and coords.seconds.


------------------------------------------------------------------------
r566 | airwin | 2012-08-26 22:37:28 -0700 (Sun, 26 Aug 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Style tweak.

------------------------------------------------------------------------
r565 | airwin | 2012-08-26 22:12:19 -0700 (Sun, 26 Aug 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Propagate EPHCOM_CONTROL_* bits to the swig-generated bindings (i.e.,
just the python bindings for now).

------------------------------------------------------------------------
r564 | airwin | 2012-08-26 18:54:02 -0700 (Sun, 26 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Solve "warning: assignment from incompatible pointer type" compiler message
for Python interface by using the appropriate (int *) casts for input
integer array arguments and output integer array arguments rather than
the incorrect (double *) casts that existed before.

------------------------------------------------------------------------
r563 | airwin | 2012-08-26 15:43:13 -0700 (Sun, 26 Aug 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/libephcom_internal.h
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c

Styled all recent changes.  These style changes are mostly due to David
Howells' patch series that has been recently committed.

These style changes have been successfully tested using the
test_everything and install targets.


------------------------------------------------------------------------
r562 | airwin | 2012-08-26 15:30:09 -0700 (Sun, 26 Aug 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error.c
   A /trunk/jpl_ephemerides/ephcom2/src/libs/error_private.h (from /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h:561)
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   D /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h
   A /trunk/jpl_ephemerides/ephcom2/src/libs/libephcom_internal.h (from /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h:561)

Split internal.h into two headers, error_private.h and
libephcom_internal.h.  error_private.h supports our internal error
handling system for both the ephcom and ephcomc libraries.
libephcom_internal.h supports time splitting and our internal tracing system
that are only required internally by the ephcom library routines.

------------------------------------------------------------------------
r561 | airwin | 2012-08-26 14:19:35 -0700 (Sun, 26 Aug 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/error.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c

Apply the patch "lib: Add tracing facility" from David Howells
<dhowells@redhat.com>.

AWI moved the ephcom_coeffname definition to ephcom.h to resolve a
conflict introduced by this patch.

AWI added configuration of the tracing level using the mutually
exclusive CMake options EPHCOM_TRACE_DEBUG (output for both
ephcom_trace and ephcom_debug calls) and EPHCOM_TRACE (output for
ephcom_trace call).

Tested using the test_everything and install targets by:
Alan W. Irwin <airwin@users.sf.net>.


------------------------------------------------------------------------
r560 | airwin | 2012-08-25 23:14:57 -0700 (Sat, 25 Aug 2012) | 23 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcoeff.c

Committed "lib: Block numbers should be unsigned" patch from David
Howells <dhowells@redhat.com> with some minor conflict resolution
required by AWI.

David's commit message:

Make block numbers unsigned as negative values are meaningless.

Also cast block numbers to unsigned long before multiplying them to
help prevent overflows.  fpos_t would be better (and using fsetpos()
and fgetpos() but I'm not sure how prevalent they are.

Tested by: Alan W. Irwin <airwin@users.sf.net> with the
"test_everything" and install targets followed by running

find . -name '*.out*' |xargs grep -i err
find . -name '*.out*' |xargs grep -i warn |grep -v PYTHON |grep -v numpy
find . -name '*.out*' |xargs grep -i diff |grep -v 'jpl value' \
|grep -v 000000000 

to verify there were no significant issues.


------------------------------------------------------------------------
r559 | airwin | 2012-08-25 19:01:59 -0700 (Sat, 25 Aug 2012) | 43 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   A /trunk/jpl_ephemerides/ephcom2/src/libs/error.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h
   M /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c

A patch entitled "lib: Add better internal error handling functions"
by David Howells <dhowells@redhat.com> applied with a number of
additional changes from AWI.

Those additional changes include the following:

I dropped the included ephcom_pleph argument check simplifications
because those simplifications removed important robustness that is in
the original argument check logic.

I also changed the start of the error messages from "Ephcom:" to
"ephcom error:" to give the correct capitalization of ephcom and also
so they would be easy to spot by the usual case insensitive grepping
for "err" on all *.out files.
	
A bug in the patch (wrong sense for detecting fwrite errors) was
fixed.  This eliminates the spurious error message noise generated at
run-time by this patch, but there were still additional error messages
the test_everything target turned up (and which are a testament to the
usefulness of this patch) which I address in the next paragraphs.
      
There was some low-quality (read blocks until you error out) logic in
eph2asc.c and ephcmp.c which I have now tightened up to eliminate the
error messages.
    
A similar issue in asc2eph could not be solved in the same way (since
there is no knowledge allowing identification of the last block when
reading ascii data).  The solution there was to change readascii_block
to use fgets rather than ephcom_fgets for the first read from each
block. This allowed returning 0 on the EOF condition for the first
read from each block without writing a spurious error message.
      
Tested by: Alan W. Irwin <airwin@users.sf.net> using the
"test_everything" target and running

find . -name '*.out*' |xargs grep -i err
find . -name '*.out*' |xargs grep -i warn |grep -v PYTHON |grep -v numpy
find . -name '*.out*' |xargs grep -i diff |grep -v 'jpl value' \
|grep -v 000000000 

afterward.


------------------------------------------------------------------------
r558 | airwin | 2012-08-24 16:56:56 -0700 (Fri, 24 Aug 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

AWI and David Howells.  Modified "Fix type of coords->center" patch
from David to drop ephcom.h changes (which were #defines for
EPHCOM_UNSPECIFIED and EPHCOM_COMPACT_UNSPECIFIED which I don't think
will be needed once I modify David's future patches) and also to fix
up a bug introduced by David's case logic to follow exactly the
previous code logic. So this change boils down to a style change which
I agree is much easier to read and understand.  That said, these
changes are only build tested because we have no tests for the case
where coords->bary == EPHCOM_ADJUST_FOR_CENTRE.


------------------------------------------------------------------------
r557 | airwin | 2012-08-24 16:08:49 -0700 (Fri, 24 Aug 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

AWI for David Howells.  lib: Clean up ephcom_cheby()

Don't use static data in ephcom_cheby(), but rather preallocate the
buffers and attach them to struct ephcom_context along with lastx and
twox. This greatly simplifies ephcom_cheby() and stops the resource
leakage.

Tested-by: Alan W. Irwin <airwin@users.sf.net> using the
"test_everything" target.


------------------------------------------------------------------------
r556 | airwin | 2012-08-24 15:49:36 -0700 (Fri, 24 Aug 2012) | 17 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Generalizations for the INPOP case.

Drop all tests on the title (since we want to allow arbitrary titles).

Ascii header data must include DENUM, AU, and EMRAT (since those are an
intrinsic part of the binary header).

Generalize logic to handle header->ss[0], header->ss[1], and all start
and stop times on each block of data values that are integers, i.e. no
fractional part.  This includes implementing a test that these data
are forced to exactly no fractional part (integral) or a fractional
part of 0.5 (half-integral) if the fractional part is sufficiently
close to either of those values.  Implement a test that thes data 
must all be integral or all half-integral.  Implement a test that
header->ss[2] must be integral.


------------------------------------------------------------------------
r555 | airwin | 2012-08-24 15:38:51 -0700 (Fri, 24 Aug 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Generalize logic to handle header->ss[0] values that are integers, i.e.
no fractional part.

------------------------------------------------------------------------
r554 | airwin | 2012-08-24 15:31:49 -0700 (Fri, 24 Aug 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py

Improve formatting of results.

------------------------------------------------------------------------
r553 | airwin | 2012-08-19 13:43:47 -0700 (Sun, 19 Aug 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h

INPOP binary ephemerides contain 400 + 3 added constants (DENUM, AU,
and EMRAT).  This requirement for 403 items is larger than the current
maximum so boost that maximum from 400 to 4000 to be generous.  Note
the effective maximum is currently limited to 1018 (the typical result
for modern ephemerides when you consider the number of
double-precision values in a data block consisting of 2 Julian dates +
Chebyshev coefficients) since all data blocks (whether header or
dates+Chebyshev) have to be the same size. But if this effective limit
of 1018 ever becomes a problem, that can be boosted by a factor of
four by quadrupling the number of granules per time range for each
kind of ephemeris data.


------------------------------------------------------------------------
r552 | airwin | 2012-08-19 00:32:49 -0700 (Sun, 19 Aug 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c

Both the JPL and INPOP JPL-formatted binary ephemerides carry the
values of numde (index number describing the ephemeris), au (number of
kilometers in an astronomical unit), and emrat (ratio of Earth mass to
Moon mass) directly in the header.  The JPL binary ephemerides store
these values redundantly in the values array so that is how we
accessed them before, but the INPOP binary ephemerides do not have
such redundant storage.  Therefore, in order to reliably obtain numde,
au, and emrat values for both types of ephemerides, you must pass them
back in the argument list of all variants of ephcom_read_constants.
These substantial API changes have been tested successfully with
the test_everything target, testeph.py script, and install target.


------------------------------------------------------------------------
r551 | airwin | 2012-08-18 11:08:59 -0700 (Sat, 18 Aug 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Simplify ephcom build-system naming conventions.

+ jpl_binary ==> binary (upper or lower case) since that
target/directory/etc., was more general than jpl or else the name
already had a reference to jpl in it such as binary_de200.

+ drop _bigendian from inpop directory names since the results can be
any endian.

Add inpop binary ephemeris targets as a dependency of the binary_ephemerides
target.

Install inpop binary ephemerides.


------------------------------------------------------------------------
r542 | airwin | 2012-08-06 23:11:37 -0700 (Mon, 06 Aug 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/include/gnulliver.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h

Style previous changes.  Results successfully tested with "install" and
"test_everything" targets.

------------------------------------------------------------------------
r540 | airwin | 2012-08-06 22:24:35 -0700 (Mon, 06 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/include
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/src/include (from /trunk/jpl_ephemerides/ephcom2/include:539)
   M /trunk/jpl_ephemerides/ephcom2/src/include/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt

Move ephcom2/include directory to more logical location
(ephcom2/src/include).
This change tested successfully with the "install" and "test_everything"
targets.

------------------------------------------------------------------------
r539 | airwin | 2012-08-06 21:31:53 -0700 (Mon, 06 Aug 2012) | 41 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Re-enable tests against little-endian binary epherides produced with
the jpl fortran software.

The results for "test_everything" and the four possible kinds of
endianness (native [whatever that turns out to be], little-endian,
big-endian, and dec-endian) for ephcom-generated output files were all
fine.

I repeated those 4 tests for my little-endian host with faked host
big-endianness (that fake information was temporarily hacked at
the CMake level).  The results were all fine. This makes sense for the
files generated by ephcom itself since the file swapping on output is
simply reversed on input in all cases. This also makes sense for the
foreign little-endian and big-endian files since the input that was
tried was one of the three kinds of byte-swapping with (the fake)
big-endianness of the host, and one of those combinations always work
with foreign little- or big-endian files for a real little-endian host.

I repeated those 4 tests with faked host dec-endianness. The results
were all fine except for the foreign big-endian file case. The good
results make sense for the files generated by ephcom itself since the
file swapping on output is simply reversed on input in all cases. The
good results also make sense for the foreign little-endian file since
the input that was tried was some kind of byte-swapping with (the
fake) dec-endianness of the host, and the dec-dec swapping (i.e., no
swapping) always work with foreign little-endian files for my host
which is little-endian.  The foreign big-endian file could not be
read, because the input that was tried was one of the three kinds of
byte-swapping with (the fake) dec-endianness of the host, and none of
those combinations is equivalent to the byteswapping that was actually
needed between big-endian file and (real) little-endian host.

In sum, these two last sets of hacked tests for (fake) host endianness
are extreme debug options that I tried on my little-endian host simply
to exercise all possible software paths, and the results were exactly
as expected. Thus, I consider the present set of tests to be a
complete end-to-end test of all combinations of the endianness logic,
and users of ephcom from now on should not have to worry about
endianness issues for either foreign or ephcom-generated files.


------------------------------------------------------------------------
r538 | airwin | 2012-08-06 21:02:47 -0700 (Mon, 06 Aug 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt

Refine warning message when host dec-endianness is detected.

------------------------------------------------------------------------
r537 | airwin | 2012-08-06 15:32:25 -0700 (Mon, 06 Aug 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/include/gnulliver.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c

Update doxygen documentation (and also internal comments) to
reflect new paradigm (pure byteswapping) and API for gnulliver.

------------------------------------------------------------------------
r536 | airwin | 2012-08-06 12:46:58 -0700 (Mon, 06 Aug 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/c/gnulliver_swap_test.c

Implement comprehensive (GNULLIVER_BYTESWAP_LITTLE_BIG,
GNULLIVER_BYTESWAP_LITTLE_DEC, and GNULLIVER_BYTESWAP_BIG_DEC)
double-swap identity tests of every 16-bit, 32-bit, and 64-bit
byte-swap function from the gnulliver library using 100 different
random bit patterns for each test that was run.  The resultant target
"run_gnulliver_swap_test" built and ran without issues confirming that
if you call a gnulliver byteswapping function twice, you always get
the same result you started with.


------------------------------------------------------------------------
r535 | airwin | 2012-08-05 16:27:35 -0700 (Sun, 05 Aug 2012) | 20 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/include/gnulliver.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c

Change gnulliver library API to using definite width uintN_t types
rather than uncertain width unsigned types for various kinds of generic
integers.

Error out the preprocessor if the uintN_t types are not available.

Error out the preprocessor if __STD_IEC_559__ macro is undefined
or !=1.  When that macro is 1, then c99 guarantees that float
and double have definite width (32 bits and 64 bits).  (It also
guarantees IEEE 754 floating point.  That is overkill, but I
don't know any other way to guaranteed 32 bits and 64 bits for float
and double.)

Add byteswap == GNULLIVER_BYTESWAP_LITTLE_DEC stanzas appropriately
in gnulliver.c to implement byte swapping from little-endian to
dec-endian.

These changes have only been build tested.


------------------------------------------------------------------------
r534 | airwin | 2012-08-04 22:31:58 -0700 (Sat, 04 Aug 2012) | 42 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/include/gnulliver.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c

Complete API change for gnulliver library so that is becomes just a
byte-swapping library with no internal knowledge of file or host
endianness (except for the gnulliver routine for determining host
endianness which is not used internally by libgnulliver or externally
by libephcom, but which still could be useful to external users). For
this API change, implementation of byte swaps between little-endian
and big-endian (byteswap == GNULLIVER_BYTESWAP_LITTLE_BIG) and
big-endian and dec-endian (byteswap == GNULLIVER_BYTESWAP_BIG_DEC) has
been completed, but byte swaps between little-endian and dec-endian
(byteswap == GNULLIVER_BYTESWAP_LITTLE_DEC) still need to be
implemented.

Implement discovery of input binary ephemeris file endianness using
range checks on the first header integer occurring for each of the two
different binary formats.

Change ephcom_inint, ephcom_indouble, ephcom_outint, and
ephcom_outdouble to do appropriate byteswapping to make output
binary files one of little-endian, big-endian, dec-endian, or native
endian.

These results successfully tested with the test_everything target for
the cases of (1) -DLITTLE_ENDIAN_OUTPUT_FILE=ON, (2) 
-DBIG_ENDIAN_OUTPUT_FILE=ON, and (3) neither of those options
specified (which corresponds to the default native endian for output
files. On my little-endian host, (1) and (3) should exercise virtually
identical logic (which generates no byte swapping) while (2) tests the
gnulliver little-endian/big-ending byteswapping.  The timed results
for those tests were too scattered to make a good case that no
swapping was significantly faster.  In other words, the elapsed
wall-clock time and cpu time are presumably both dominated by file i/o
for these tests and not the relatively small time required to do the
byteswapping.

ToDo: To finish up the new endianness paradigm project (where the user
selects the output file endianness at CMake time and detects the input
file endiannes at run time), implement byteswap ==
GNULLIVER_BYTESWAP_LITTLE_DEC logic in gnulliver and test that with
-DDEC_ENDIAN_OUTPUT_FILE=ON and also by faking the CMake determination
of the host endianess.


------------------------------------------------------------------------
r533 | airwin | 2012-08-04 15:04:34 -0700 (Sat, 04 Aug 2012) | 19 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

Implement infrastructure to support further improvements in endianness
paradigm.  Create CMake options to control the output file endianness
using the EPHCOM_OUTPUT_FILE_ENDIANNESS C macro.  Test endianness of
input binary ephemerides using range checks on the results derived
with various ctx->binary_file_endianness values.  The range checks are
done for the first integer read for each different kind of binary
format so different integers and different ranges are necessarily
checked for the two different binary formats.  However, for now, 
(NOTE the FIXME's in file.c) stick with the old endianness paradigm.
That is, in the ephcom_in* routines ignore the specified
ctx->binary_file_endianness value and go with what was done before
(assume input file is big-endian) while in the ephcom_out* routines
ignore EPHCOM_OUTPUT_FILE_ENDIANNESS and go with what was done before
(outfile file set to big-endian regardless). These temporary
constraints allow checking the infrastructure has been implemented
correctly with no changes to gnulliver.c. That has been verified with
a successfully run of the test_everything target.


------------------------------------------------------------------------
r532 | airwin | 2012-08-04 14:59:41 -0700 (Sat, 04 Aug 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/include/ephcom.h

Tweak commentary.

------------------------------------------------------------------------
r531 | airwin | 2012-08-03 10:59:37 -0700 (Fri, 03 Aug 2012) | 23 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/include/gnulliver.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c

Add general enum support for endianness to both the gnulliver and ephcom
libraries.

Propagate host endianness detected by CMake to the
GNULLIVER_HOST_ENDIANNESS macro available to gnulliver.c and the
EPHCOM_HOST_ENDIANNESS macro available for file.c.  This change allows
dropping all calls to the gnulliver function that previously
determined host endianness and has the nice side-benefit that all
static data are eliminated from the gnulliver library.

These changes successfully tested with the test_everything target.

ToDo: use this new endian support infrastructure to change the current
endian paradigm (which is all binary ephemeris files are written and
read in big-endian order with time-consuming byte-swapping on
little-endinan hosts to make that so) to a pardigm where binary
ephemeris files are always written in native endian order with no
time-consuming byte swapping and the endianness of binary ephemeris
files being read in is automatically detected and time-consuming byte
swapping is only done if that file endianess differs from the host
endianness.


------------------------------------------------------------------------
r530 | airwin | 2012-08-03 08:05:34 -0700 (Fri, 03 Aug 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/test_host_endianess.c
   A /trunk/jpl_ephemerides/ephcom2/test_host_endianness.c (from /trunk/jpl_ephemerides/ephcom2/test_host_endianess.c:528)

Spell "endianness" correctly in the file name and CMake references to that
file.

------------------------------------------------------------------------
r529 | airwin | 2012-08-02 22:05:08 -0700 (Thu, 02 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c

Modify new binary format so that ENDIAN_TYPE is no longer part of it.
Instead I prefer (still to be implemented) automatic detection of
the endian type of the file since other ephemeris software is bound
to NOT fill in ENDIAN_TYPE correctly.

------------------------------------------------------------------------
r528 | airwin | 2012-08-02 21:05:46 -0700 (Thu, 02 Aug 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/test_host_endianess.c

Implement CMake test of the host endianness.  The result of this test
is that the CMake variable CMAKE_HOST_ENDIANNESS is set to one of
"LITTLE_ENDIAN", "BIG_ENDIAN", or "DEC_ENDIAN".  This test is
implemented with the aid of the test_host_endian.c source code which
contains a slightly modified version of the gnulliver function
implemented in the gnulliver library.

The CMake CMAKE_HOST_ENDIANNESS variable is currently not used, but it
will be used later to set the EPHCOM_HOST_ENDIANNESS C macro to help
implement ephcom run-time checking for whether the binary ephemeris
file being read has the same endianness as the host or whether byte
swapping must occur while reading in that file to convert that file to
the host endianness.


------------------------------------------------------------------------
r527 | airwin | 2012-08-02 16:47:47 -0700 (Thu, 02 Aug 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c

Remove use of NO_GNULLIVER_SWAP macro and associated code in the
source code since that macro is no longer set and we don't want to
obfuscate further planned changes in the handling of endian issues at
run-time with conditional compilation depending on that macro.


------------------------------------------------------------------------
r526 | airwin | 2012-08-02 16:39:36 -0700 (Thu, 02 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Disable tests against legacy binaries for now since current ephcom
cannot understand native endian binaries (an issue that will be
addressed soon).


------------------------------------------------------------------------
r525 | airwin | 2012-08-02 15:14:47 -0700 (Thu, 02 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt

Remove NATIVE_ENDIAN option from CMake since we don't want to
obfuscate further planned changes in the handling of endian issues at
run-time with that CMake-time option.


------------------------------------------------------------------------
r523 | airwin | 2012-08-02 00:27:08 -0700 (Thu, 02 Aug 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/include/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c

libs: Extend use of context to ephcomc routines.  This is a patch by
David Howells which I have modified slightly by tweaking commentary in
ephcomc.h to explain the purpose of the *_ctx versions of the
ephcom_read_constants, ephcom_interpolate_relative, and
ephcom_interpolate_list routines.  The test_everything target was used
to test this modified patch with no obvious issues.


------------------------------------------------------------------------
r522 | airwin | 2012-08-01 23:18:12 -0700 (Wed, 01 Aug 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

libs: Clean up stuff that should be in the rodata section.  Apply 
corresponding patch by David Howells with no changes.  Result
successfully tested with test_everything target.


------------------------------------------------------------------------
r521 | airwin | 2012-08-01 17:47:08 -0700 (Wed, 01 Aug 2012) | 22 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c
   M /trunk/jpl_ephemerides/ephcom2/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

libs: Define related parameter constants with enumerations.  Modified
version of corresponding patch from David Howells.  The modifications
(by AWI) consist of the following:

1. maintaining the same API for ephcom_interpolate_relative and
ephcom_pleph with int indices rather than the enum ephcom_objects
indices of David's patch since there are some uses of that API for the
single-index coordinates such as nutation and library where the unused
index can have arbitrary values outside any possible enumeration.

2. A simple fix for a long-standing (but previously symptomless)
memory management issue in ephcom_interpolate_relative that dealt with
the case where the unused index could have arbitrary values.  This
memory management issue was discovered by accident as a result of
running either the test_everything or test_external_de* targets
using David's patch.

As a result of the second modification, the ephcom_testeph utility run
by the latter targets is now valgrind clean, and the test_everything
target now runs without any obvious errors.


------------------------------------------------------------------------
r520 | airwin | 2012-08-01 13:47:57 -0700 (Wed, 01 Aug 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/include/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/src/libs/date.c
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   A /trunk/jpl_ephemerides/ephcom2/src/libs/internal.h

libs: Split the date handling stuff out into its own file.  This is
the equivalent of the corresponding David Howell's patch with the
patch to CMakeLists.txt modified to preserve the multiple libraries.
This change has been successfully tested with the "test_everything"
target.


------------------------------------------------------------------------
r519 | airwin | 2012-08-01 13:19:46 -0700 (Wed, 01 Aug 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c
   A /trunk/jpl_ephemerides/ephcom2/src/libs/file.c

libs: Split the file handing into its own file.  This is David
Howells's corresponding patch with an adjustment for keeping the separate
libraries.  "test_everything" target worked without issues.

------------------------------------------------------------------------
r518 | airwin | 2012-08-01 13:08:02 -0700 (Wed, 01 Aug 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c

Drop unused blockbytes calculations from ephcom_readascii_header and
ephcom_writeascii_header.  Thanks to David Howells for this fix.

------------------------------------------------------------------------
r517 | airwin | 2012-07-19 13:33:09 -0700 (Thu, 19 Jul 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/src/asc2eph.c
   D /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c
   D /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c
   D /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c
   D /trunk/jpl_ephemerides/ephcom2/src/ephcoeff.c
   D /trunk/jpl_ephemerides/ephcom2/src/headcmp.c
   D /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   A /trunk/jpl_ephemerides/ephcom2/src/utils
   A /trunk/jpl_ephemerides/ephcom2/src/utils/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/src/utils/asc2eph.c (from /trunk/jpl_ephemerides/ephcom2/src/asc2eph.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/utils/eph2asc.c (from /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/utils/eph2eph.c (from /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/utils/ephcmp.c (from /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/utils/ephcoeff.c (from /trunk/jpl_ephemerides/ephcom2/src/ephcoeff.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/utils/headcmp.c (from /trunk/jpl_ephemerides/ephcom2/src/headcmp.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/utils/testeph.c (from /trunk/jpl_ephemerides/ephcom2/src/testeph.c:512)

Move the C code for the ephcom utilities into the newly created
src/utils directory with supporting CMake changes.


------------------------------------------------------------------------
r516 | airwin | 2012-07-19 13:14:05 -0700 (Thu, 19 Jul 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   D /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   D /trunk/jpl_ephemerides/ephcom2/src/gnulliver.c
   A /trunk/jpl_ephemerides/ephcom2/src/libs
   A /trunk/jpl_ephemerides/ephcom2/src/libs/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/src/libs/ephcom.c (from /trunk/jpl_ephemerides/ephcom2/src/ephcom.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/libs/ephcomc.c (from /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c:512)
   A /trunk/jpl_ephemerides/ephcom2/src/libs/gnulliver.c (from /trunk/jpl_ephemerides/ephcom2/src/gnulliver.c:512)

Move the code for the ephcom C libraries into src/libs with supporting
CMake changes.


------------------------------------------------------------------------
r515 | airwin | 2012-07-19 12:51:14 -0700 (Thu, 19 Jul 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in
   M /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/include
   A /trunk/jpl_ephemerides/ephcom2/include/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/include/ephcom.h (from /trunk/jpl_ephemerides/ephcom2/src/ephcom.h:512)
   A /trunk/jpl_ephemerides/ephcom2/include/ephcomc.h (from /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h:512)
   A /trunk/jpl_ephemerides/ephcom2/include/ephcomdll.h (from /trunk/jpl_ephemerides/ephcom2/src/ephcomdll.h:512)
   A /trunk/jpl_ephemerides/ephcom2/include/gnulliver.h (from /trunk/jpl_ephemerides/ephcom2/src/gnulliver.h:512)
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   D /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h
   D /trunk/jpl_ephemerides/ephcom2/src/ephcomdll.h
   D /trunk/jpl_ephemerides/ephcom2/src/gnulliver.h

Move src/*.h headers to the include subdirectory.

------------------------------------------------------------------------
r514 | airwin | 2012-07-19 12:23:54 -0700 (Thu, 19 Jul 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_vtransit.html
   D /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_vtransit.1

Remove ephcom_vtransit from man pages (and html version of those) since
that is an example and not a utility.

------------------------------------------------------------------------
r513 | airwin | 2012-07-19 12:00:22 -0700 (Thu, 19 Jul 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/bindings/f95/flce_testeph.f
   D /trunk/jpl_ephemerides/ephcom2/bindings/f95/test_repeat_interpolation.f
   D /trunk/jpl_ephemerides/ephcom2/bindings/f95/testconst.f
   D /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py
   A /trunk/jpl_ephemerides/ephcom2/examples
   A /trunk/jpl_ephemerides/ephcom2/examples/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/c
   A /trunk/jpl_ephemerides/ephcom2/examples/c/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/c/ephcom_time_test.c (from /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c:512)
   A /trunk/jpl_ephemerides/ephcom2/examples/c/vtransit.c (from /trunk/jpl_ephemerides/ephcom2/src/vtransit.c:512)
   A /trunk/jpl_ephemerides/ephcom2/examples/f95
   A /trunk/jpl_ephemerides/ephcom2/examples/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/f95/flce_testeph.f (from /trunk/jpl_ephemerides/ephcom2/bindings/f95/flce_testeph.f:512)
   A /trunk/jpl_ephemerides/ephcom2/examples/f95/test_repeat_interpolation.f (from /trunk/jpl_ephemerides/ephcom2/bindings/f95/test_repeat_interpolation.f:512)
   A /trunk/jpl_ephemerides/ephcom2/examples/f95/testconst.f (from /trunk/jpl_ephemerides/ephcom2/bindings/f95/testconst.f:512)
   A /trunk/jpl_ephemerides/ephcom2/examples/python
   A /trunk/jpl_ephemerides/ephcom2/examples/python/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/examples/python/testeph.py (from /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py:512)
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c
   D /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Move tests and examples from src, bindings/f95, and bindings/python to
newly created examples/c, examples/f95, and examples/python.

------------------------------------------------------------------------
r512 | airwin | 2012-07-17 17:44:04 -0700 (Tue, 17 Jul 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Manage context for libephcomc with inlined code.

------------------------------------------------------------------------
r511 | airwin | 2012-07-17 10:36:08 -0700 (Tue, 17 Jul 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Style change to be more consistent with the general naming scheme in
ephcom2.

ephcom_Header ==> ephcom_header
ephcom_Coords ==> ephcom_coords


------------------------------------------------------------------------
r510 | airwin | 2012-07-16 22:37:59 -0700 (Mon, 16 Jul 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Style previous change.

------------------------------------------------------------------------
r509 | airwin | 2012-07-16 21:48:14 -0700 (Mon, 16 Jul 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Use a method (which is not thread-safe) to keep a consistent context
from one ephcom_interpolate_relative call to the next so long as the
identical filename appears in the argument list. Do the same change
for ephcom_interpolate_list.  This change increases the efficiency of
the test_repeat_interpolation test by a factor of roughly 200 (!)
(presumably because the consistent context allows the same block of
data to be reused rather than read in and byteswapped repeatedly).
This change makes the present version of the code just as efficient
with the test_repeat_interpolation test as the revision 497 version of
the code (that revision was just prior to all the context work).


------------------------------------------------------------------------
r508 | airwin | 2012-07-16 18:05:46 -0700 (Mon, 16 Jul 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/test_repeat_interpolation.f

Add an executable that tests the ephcom library chain for efficiency
for repeat interpolation for the same block of data.

------------------------------------------------------------------------
r507 | airwin | 2012-07-16 15:27:17 -0700 (Mon, 16 Jul 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Revert revision 500 which added an additional check of the context
handle.  That logic is not necessary since the context handle
stores both last_blocknum AND the data associated with that blocknum.
So there is never any need to update that data if you are dealing with
the same blocknum as previous _for any given context_.


------------------------------------------------------------------------
r506 | airwin | 2012-07-16 10:57:28 -0700 (Mon, 16 Jul 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Update ephcom_inint documentation to be consistent with current context
handle argument.

------------------------------------------------------------------------
r505 | airwin | 2012-07-16 09:57:48 -0700 (Mon, 16 Jul 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Update doxygen documentation to be consistent with argument lists that
now contain a context handle.  This removes all the doxygen warnings
generated by the context handle patch.


------------------------------------------------------------------------
r504 | airwin | 2012-07-16 08:21:50 -0700 (Mon, 16 Jul 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h

Remove confusing comment about valid non-zero block number since, in
fact, a valid block number is non-negative (i.e., can be zero or above). 

------------------------------------------------------------------------
r503 | airwin | 2012-07-16 06:53:14 -0700 (Mon, 16 Jul 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Use ctx1->header and ctx2->header to label output rather than
capitalized version of that (or Header1 alone) since we are referring
to particular case-sensitive variable names.


------------------------------------------------------------------------
r502 | airwin | 2012-07-15 19:53:12 -0700 (Sun, 15 Jul 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Style previous changes.

------------------------------------------------------------------------
r501 | airwin | 2012-07-15 19:52:18 -0700 (Sun, 15 Jul 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Fix ctx memory leak introduced by initial ephcom_context changes. 

------------------------------------------------------------------------
r500 | airwin | 2012-07-15 19:00:45 -0700 (Sun, 15 Jul 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Make tests to decide whether a block read is necessary more rigourous.
This improved logic means that there is no longer any need to initialize
ctx->last_blocknum.


------------------------------------------------------------------------
r499 | airwin | 2012-07-15 18:17:23 -0700 (Sun, 15 Jul 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Style change: use typedef appropriately so that "struct
ephcom_context" can be replaced everywhere by ephcom_context.

------------------------------------------------------------------------
r498 | airwin | 2012-07-15 16:46:03 -0700 (Sun, 15 Jul 2012) | 27 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Provide datafile open/close routines and handle to help reduce the
icky static data as much as possible. Also avoid using FILE * pointers
as cache indices.  They cannot be relied on in that fashion.

David Howells (kindly) provided the patch, AWI did further work on it
consisting of converting to ephcom2 style, replacement of call to
nonstandard strdup by c99 equivalent, replace nonstandard %m by c99
equivalent in *printf statement, and cast mallocs and argument of
malloc when necessary to avoid compiler warning messages. 
Furthermore, a bug (uninitialized ctx->last_blocknum) was fixed in
David's patch that was causing segfaults.

The result of these changes is the test_everything target continues to
give good results (just like the old version of the code), but there
are some outstanding concerns with making the blocknum check as
rigourous as previously, and also some efficiency concerns (two
minutes longer to complete the test_everything target than the
previous version of the code).

But on the whole I think these changes make the code easier to
understand, and the concerns expressed above should be easy to address
later by adding the minimum number of static variables to keep track
of old data to compare with the current data to help make a rigourous
decision about when some steps can be skipped to improve efficiency.
Therefore, I am going ahead and committing this change.


------------------------------------------------------------------------
r497 | airwin | 2012-06-21 00:20:21 -0700 (Thu, 21 Jun 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

AWI for David Howells. Reorder comment text from 

x, xdot, y, ydot, z, zdot ==> x, y, z, xdot, ydot, zdot

to be consistent with actual order of quantities in that array.


------------------------------------------------------------------------
r487 | airwin | 2012-04-06 13:59:27 -0700 (Fri, 06 Apr 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Add capability of reading INPOP8 bigendian "JPL-style" binary
ephemeris results.  The principal issue was the blank title line.  So
presumably this will have to be revisited if/when the INPOP group use
a proper title line.

Add test_internal_inpop* targets to demonstrate that one can generate
an ascii ephemeris from the inpop binary one, then generate a binary
ephemeris from the ascii one that gives the same results for the
header constants and all Chebyshev coefficients.


------------------------------------------------------------------------
r480 | airwin | 2012-03-15 21:47:25 -0700 (Thu, 15 Mar 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Improved test formatting.

Sample 10-million year test every 399 years instead of every 401 years
just to make sure some fixed 400-year Gregorian cycles are sampled
more than once.

------------------------------------------------------------------------
r479 | airwin | 2012-03-15 11:55:46 -0700 (Thu, 15 Mar 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Generalize Julian calendar version of ephcom_cal2j with the floor
function.  This wrings out what I believe is the last bug
in ephcom_cal2jd (and ephcom_jd2cal before that).  The result passes
all tests in ephcom_time_test.c

For CMakeLists.txt also drop byte-by-byte header comparison with JPL
fortran code since that comparison always fails.  The JPL code
currently produces binary_version=0 binary files while ephcom produces
binary_version=1 files.


------------------------------------------------------------------------
r478 | airwin | 2012-03-12 15:51:43 -0700 (Mon, 12 Mar 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Generalize original JPL ascii format in a backwards-compatible way.
On input if cname_length does not appear after ncon, then
assume it is 6.  Derive npt from length of first ipt line.
Write cname_length on output, and npt ipt coefficients.

------------------------------------------------------------------------
r477 | airwin | 2012-03-12 15:44:41 -0700 (Mon, 12 Mar 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Change comparison with legacy results by dropping headcmp part of it
since that involves a header comparison between necessariy different
binary versions (binary_version==1 for the ephcom results,
binary_version==0 for the JPL legacy fortran results) which is not
possible at such a detailed byte-by-byte level.


------------------------------------------------------------------------
r476 | airwin | 2012-03-11 19:55:39 -0700 (Sun, 11 Mar 2012) | 14 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/gnulliver.c

Move to completely specific test for little- or big-endian binary64
ieee 754 floating-point representation.  So far, only the
little-endian case has been specifically tested, but the corresponding
test for big-endian is only trivially different so that _should_ work.

Anything other than these two cases is labelled as "GNULLIVER_DEC" and
will very likely _only_ work for the case where you are
reading/writing binary ephemerides on the same platform with ephcom
software.  The reason is that DEC 64-bit floating point comes in two
representations (G_FLOAT and D_FLOAT), and there is no provision yet
to (a) detect those or (b) do the bit manipulations to transform them
to/from binary64 ieee 754.


------------------------------------------------------------------------
r475 | airwin | 2012-03-11 18:34:30 -0700 (Sun, 11 Mar 2012) | 21 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/gnulliver.c
   M /trunk/jpl_ephemerides/ephcom2/src/gnulliver.h

Update/rationalize handling of byte swapping which is controlled by
CMake NATIVE_ENDIAN option (which defaults to OFF).  

If this option is ON then do no byteswapping on input from or output
to binary ephemeris files.  Also, identify host endian
order using the gnulliver() function and mark output binary files with
whatever host endian order is detected by gnulliver(), and check input
binary files to assure their endian order (as marked by whatever
programme wrote that file) is the same as the host endian order.

If this option is OFF (the default), then byteswap (if necessary) to
convert from host endian order to big-endian order on output to a
binary ephemeris and mark that ephemeris as big-endian.  Also,
byteswap (if necessary) to convert from big-endian order to host
endian order on input from a binary ephemeris and also check that file
has been marked as big-endian by whatever code that wrote it.

Drop ascii_version and endian_type from the ephcom_Header struct since
those values only used locally within routines.


------------------------------------------------------------------------
r474 | airwin | 2012-03-08 01:06:03 -0800 (Thu, 08 Mar 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Link ephcomfc library against both the ephcomc library (since that
library contains ephcom_read_constants, ephcom_interpolate_relative,
and ephcom_interpolate_list) and the ephcom library (since that
library contains ephcom_cal2jd and ephcom_jd2cal).


------------------------------------------------------------------------
r473 | airwin | 2012-03-08 01:04:31 -0800 (Thu, 08 Mar 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h

Add ephcom_cal2jd and ephcom_jd2cal to f95 bindings.

------------------------------------------------------------------------
r472 | airwin | 2012-03-07 23:39:18 -0800 (Wed, 07 Mar 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt

Link python _ephcomc module against both the ephcomc library (since
that library contains ephcom_read_constants,
ephcom_interpolate_relative, and ephcom_interpolate_list) and the
ephcom library (since that library contains ephcom_cal2jd and
ephcom_jd2cal).


------------------------------------------------------------------------
r471 | airwin | 2012-03-07 23:30:24 -0800 (Wed, 07 Mar 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py

Add test of new ephcom_cal2jd and ephcom_jd2cal python bindings.

------------------------------------------------------------------------
r470 | airwin | 2012-03-07 23:28:35 -0800 (Wed, 07 Mar 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i

Add ephcom_cal2jd and ephcom_jd2cal to swig-generated Python bindings.

------------------------------------------------------------------------
r469 | airwin | 2012-03-06 17:55:36 -0800 (Tue, 06 Mar 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Slightly change (by 0.5 days) the epoch used for the libration angle
warning criterion normalization to be consistent with a further
explanatory statement from Bill Folkner. Could also adopt JDEPOC from
the ephemeris headers, but not necessary yet since the value is always
the same (checked by Bill and double-checked by me) for all
ephemerides other than de102 where there is probably a misprint in the
value, and in any case no libraration data are included in de102.  For
now, though, just use the epoch of 2440400.5 for the libration warning
criterion normalization.


------------------------------------------------------------------------
r468 | airwin | 2012-03-06 12:55:35 -0800 (Tue, 06 Mar 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Change to new criterion for WARNING message for 3rd (rotational?)
physical libration angle following advice from Bill Folkner.  The
assumption is he will also make the corresponding change in the
JPL version of testeph.f that is maintained by him, but that external
change has not happened yet so this may have to be revisited later if
he eventually decides to treat this issue differently in his own
implementation (which I would like to remain consistent with).


------------------------------------------------------------------------
r467 | airwin | 2012-03-05 12:10:24 -0800 (Mon, 05 Mar 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Final cleanup and decision on how many test times to skip for the
run_ephcom_time_test target.  The result is that target now takes 82
seconds to complete.


------------------------------------------------------------------------
r466 | airwin | 2012-03-03 13:42:19 -0800 (Sat, 03 Mar 2012) | 21 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Code cleanup (remove declarations of unused variables).

Correctly round the calculation of seconds_past_epoch.

Full precision output of tjd2.

Modify unbuilt testlib_MJD into working testlib_jd.

Implement outer TEST04 (for small range of seconds near
Julian year epoch and Gregorian year epoch) of new testlib_jd.

Change TEST07 to a test of testlib_jd.

The result of all these changes is that all implemented tests now pass.

N.B. including TEST06 although that is only because I avoid the
off-by-one day error that occurs for negative JD's (e.g., the year ~
-4800 or less) by starting that test at the year, -4700 rather than
-50000000.


------------------------------------------------------------------------
r465 | airwin | 2012-02-28 15:59:24 -0800 (Tue, 28 Feb 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Improve test near year epoch that contains full range of complete
Gregorian cycle of 400 years = 2*73048 + 1 days.

That test revealed bad normalization of leap days in
ephcom_normalize_YMD so fixed that bug (in two copies of that code) as
well.


------------------------------------------------------------------------
r464 | airwin | 2012-02-28 10:55:29 -0800 (Tue, 28 Feb 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

To improve efficiency replace while loops with appropriate calls to
floor wherever possible to obtain the count of seconds, hours, days,
months, and years that have to be added/subtracted to normlize the
calendar date.


------------------------------------------------------------------------
r463 | airwin | 2012-02-28 00:06:33 -0800 (Tue, 28 Feb 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Switch to controlling what inner tests are run by second and third
integers read in from stdin.

Switch long test to start at -4700 (because -4800 errors out for
jd2cal for both the Julian and Gregorian cases), and step through it
to the year 50000000 in steps of 100 years at a time (for now).

------------------------------------------------------------------------
r462 | airwin | 2012-02-28 00:00:52 -0800 (Tue, 28 Feb 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Use floor function on ephcom_cal2jd and ephcom_jd2cal Julian and
Gregorian formulas to avoid integer overflows.  Change to wikipedia
formula for the cal2jd Gregorian case.

Tests against my_timegm show this gives excellent results for the
Gregorian case, but there is an off-by-one day error in jd2cal when
using that to attempt to derive the cal2jd argument starting at a
time near JD = 0 and less.  (e.g. year = -4700 and above has no
issue, but for both the Julian and Gregorian cases year -4800 and
below has at least an off-by-one day error).

Since no JPL ephemeris extends back as far as the year -4700, it is
a low priority to solve this ephcom_jd2cal bug.


------------------------------------------------------------------------
r461 | airwin | 2012-02-25 22:49:31 -0800 (Sat, 25 Feb 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Implement an internal helper function in ephcom.c called
ephcom_normalize_YMD which normalizes year, month, and day values to
standard form.  Use this function to normalize the Y, M, and D data
input to ephcom_cal2jd, and output from ephcom_jd2cal.  Also, copy
ephcom_normalize_YMD to ephcom_time_test.c (since it is externally
invisible from the ephcom library), and use it in the ephcom_time_test
application to normalize the Y, M, and D input data to
testlib_broken_down_time.  This insures the ephcom_time_test
application has identical Y, M, and D normalizations as the
ephcom_cal2jd and ephcom_jd2cal code being tested.


------------------------------------------------------------------------
r460 | airwin | 2012-02-25 11:03:14 -0800 (Sat, 25 Feb 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   A /trunk/jpl_ephemerides/ephcom2/src/ephcom_time_test.c

Create an executable and corresponding custom command/target
to test the ephcom_cal2jd and ephcom_jd2cal time functions
in a comprehensive way similar to what has been done previously
by lib/qsastime/qsastime_testlib.c for the qsastime library.

Note only part of the tests have been implemented yet, and some of
those implemented ones are currently skipped because ephcom_cal2jd and
ephcom_jd2cal do not pass the test.  So more research has to be done
concerning the formulas used in ephcom_cal2jd and ephcom_jd2cal before
broadening the tests.


------------------------------------------------------------------------
r459 | airwin | 2012-02-24 15:21:54 -0800 (Fri, 24 Feb 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Backwards incompatible API change to ephcom_cal2jd (now #defined to be
c_ephcom_cal2jd to ease Fortran interfacing issues) and change to API
for ephcom_jd2cal (#defined to be c_ephcom_jd2cal) that was formerly
declared static but which is now exposed for the first time as a part
of the public API for libephcom.

Tweak commentary and Doxygen documentation.

Reordering functions defined in ephcom.c so that the remaining static
functions are all defined together.


------------------------------------------------------------------------
r458 | airwin | 2012-02-24 15:19:49 -0800 (Fri, 24 Feb 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

Tweak commentary concerning source of API used for language bindings.

------------------------------------------------------------------------
r457 | airwin | 2012-02-23 10:30:49 -0800 (Thu, 23 Feb 2012) | 16 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Change format of "KSIZE= # NCOEFF= #" line output by
ephcom_writeascii_header so that the numbers have an integer field
width of 6 rather than 5.

The various ascii headers produced at JPL from DE102 through DE423
include both the 5-width and 6-width variants.  For example, de405 is
6 width while DE423 is 5 width. However, the JPL asc2eph.f code
actually reads in ksize with i6 format so the 5-width variants only
work because blanks are ignored on input by default and will fail
if the file is opened with BLANK=ZERO (rather than the default BLANK=NULL).

To avoid this possible failure, I have moved to the 6-width format which
eliminates trailing blanks in the field (when read as in the JPL
asc2eph.f using the i6 format).


------------------------------------------------------------------------
r446 | airwin | 2012-02-10 17:29:15 -0800 (Fri, 10 Feb 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/src/CMakeLists.txt

Implement NON_TRANSITIVE option (defaults to ON for non-windows systems)
to use non-transitive linking (e.g., link only directly necessary
libraries).  

Clean up some MATH_LIB issues.

"ldd -u" results are much improved by these changes.


------------------------------------------------------------------------
r441 | airwin | 2012-02-09 12:53:34 -0800 (Thu, 09 Feb 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Check for the case when the compact body index that has been requested
is above header->npt, the maximum number of compact bodies defined for
this particular ephemeris.

------------------------------------------------------------------------
r440 | airwin | 2012-02-09 12:27:16 -0800 (Thu, 09 Feb 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

For the EPHCOM_LIBRATION && (testncoord == 3 || testncoord == 6) cases
change warning_criterion to avoid zero and negative values.

(There are equivalent bugs for the JPL testeph.f code which I have
brought to Bill Folkner's attention.)

------------------------------------------------------------------------
r435 | airwin | 2012-02-03 18:24:14 -0800 (Fri, 03 Feb 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.sh.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_vtransit.html
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_asc2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.sh.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_vtransit.1

Update licensing language to be exactly consistent with the recommended
text for LGPL version 2.1.

------------------------------------------------------------------------
r434 | airwin | 2012-02-03 16:06:31 -0800 (Fri, 03 Feb 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_asc2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_concatenate.sh.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2asc.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_eph2eph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_ephcoeff.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_headcmp.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_testeph.html
   M /trunk/jpl_ephemerides/ephcom2/doc/html/ephcom_vtransit.html

Regenerate html versions of recently updated man pages using

cd ../man
for name in $(ls *.1 |sed "s?.1??"); do echo $name; \
man2html <$name.1 >| ../html/$name.html;done


------------------------------------------------------------------------
r433 | airwin | 2012-02-03 15:49:25 -0800 (Fri, 03 Feb 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.sh.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2asc.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_eph2eph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_ephcoeff.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_headcmp.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_testeph.1
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_vtransit.1

Change reference to "library" in short licensing info to "executable" or
"script" as appropriate.

Update copyright date and last modification date.

------------------------------------------------------------------------
r432 | airwin | 2012-02-03 15:02:53 -0800 (Fri, 03 Feb 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/man/ephcom_concatenate.sh.1

Fix emphasis tag for ephemeris-directory argument.

------------------------------------------------------------------------
r429 | airwin | 2012-02-03 13:41:56 -0800 (Fri, 03 Feb 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/LICENSE.txt

Replace LGPL 2.1 licensing text by the definitive plain text version
of that license downloaded from http://www.gnu.org/licenses/lgpl-2.1.txt
and referenced by http://www.gnu.org/licenses/lgpl-2.1.html.

Spot checking the changes revealed just white-space and line-wrapping changes.


------------------------------------------------------------------------
r426 | airwin | 2012-02-03 12:52:37 -0800 (Fri, 03 Feb 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Change methodology so that output testdel value is unmolested while
the criterion for giving a warning message is appropriately modified
depending on circumstances.

Use 0.1ns and 0.1ns/day for warning_criterion in the case of te and te
derivative.  This change solves warnings (due to slope issues) for too
stringent a criterion before.

Use the default warning_criterion = 1.e-13 for ve and its derivatives.


------------------------------------------------------------------------
r423 | airwin | 2012-02-02 20:45:18 -0800 (Thu, 02 Feb 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Rescale te and ve/c differences appropriately so that 1.d-13 criterion
means something significant.

------------------------------------------------------------------------
r420 | airwin | 2012-02-01 14:43:49 -0800 (Wed, 01 Feb 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Be more careful about checking input format.

Skip any number of lines containing anything until a line starting
with EOT is encountered. Then for the rest of the lines, check each
one is started with a single digit (the first digit of the ephemeris
number) before reading that line to obtain the test data that is
analyzed.


------------------------------------------------------------------------
r398 | airwin | 2012-01-28 12:15:00 -0800 (Sat, 28 Jan 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Fix corner case issue where lastx could be the same so that Chebyshev
polynomials were not calculated for newly malloced pc and vc.

Improve commentary as well.

------------------------------------------------------------------------
r397 | airwin | 2012-01-27 17:58:26 -0800 (Fri, 27 Jan 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Fix bug where "permanently" malloced pc and vc in ephcom_cheby were
not the correct size if a switch to a different ephemeris occurred
with a larger maxcoeffs than before.


------------------------------------------------------------------------
r395 | airwin | 2012-01-26 20:12:50 -0800 (Thu, 26 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c

Style previous commit.

------------------------------------------------------------------------
r394 | airwin | 2012-01-26 13:15:47 -0800 (Thu, 26 Jan 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/time_ephemerides/te_gen/src/CMakeLists.txt

Remove unnecessary fake epoch ranges (-1.d300 to 1.d300) that were
being specified to force applications to use the full range of the
ephemerides since the applications use the full range in any case if
no range is specified.


------------------------------------------------------------------------
r389 | airwin | 2012-01-25 22:43:33 -0800 (Wed, 25 Jan 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c

Make error message about not finding common time intervals more
informative.

Put ERROR string in every error message.

Put \n at the end of every error message.

------------------------------------------------------------------------
r388 | airwin | 2012-01-24 22:07:55 -0800 (Tue, 24 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c

Style previous commit.

------------------------------------------------------------------------
r387 | airwin | 2012-01-24 22:06:15 -0800 (Tue, 24 Jan 2012) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

To test for a different filename, test contents of filename string
rather than its address since the address can change. (For example,
gdb showed Fortran legacy dpleph creates a filename of "JPLEPH" in a
different stack location each time it is called.)

If the filename has changed from the previous call, close the open
file that is no longer going to be used.


------------------------------------------------------------------------
r386 | airwin | 2012-01-24 20:52:29 -0800 (Tue, 24 Jan 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c

Fix memory leak associated with stringf2c usage (free in the wrong place
in EPHCOM_INTERPOLATE_RELATIVE7).

------------------------------------------------------------------------
r384 | airwin | 2012-01-23 23:02:58 -0800 (Mon, 23 Jan 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Fix file open when ephcom_read_relative and ephcom_read_list
are called with a different file name than previously.

------------------------------------------------------------------------
r383 | airwin | 2012-01-23 22:48:33 -0800 (Mon, 23 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c

Style previous commit.

------------------------------------------------------------------------
r382 | airwin | 2012-01-23 17:02:42 -0800 (Mon, 23 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt

Install python bindings.

------------------------------------------------------------------------
r378 | airwin | 2012-01-21 14:32:14 -0800 (Sat, 21 Jan 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/scripts/ephcom_concatenate.sh.in

Add time ephemeris files as possibilities for this script to
concatenate.

------------------------------------------------------------------------
r377 | airwin | 2012-01-19 17:02:04 -0800 (Thu, 19 Jan 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h

Replace private Fortran routines by the equivalent static C routine
for converting from Fortran character variable to NULL-terminated C
string.  This aesthetic change reduces the clutter in the Fortran
ephcomf library API without adding to the API of the ephcomfc library.

flce_test_external_de405 target worked and gave same result as before.


------------------------------------------------------------------------
r376 | airwin | 2012-01-19 16:57:11 -0800 (Thu, 19 Jan 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Fix bug where embedded blanks in ephemeris names for constants would
have been changed to NULL.  (Embedded blanks do not occur for existing
names of constants for ephemerides, but get this right just in case.)


------------------------------------------------------------------------
r375 | airwin | 2012-01-19 15:18:24 -0800 (Thu, 19 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c

Report header->numte in output of this application.

------------------------------------------------------------------------
r374 | airwin | 2012-01-19 15:17:40 -0800 (Thu, 19 Jan 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Reorder header records to take alignment into account for
binary_version == 1. 

------------------------------------------------------------------------
r373 | airwin | 2012-01-19 15:13:51 -0800 (Thu, 19 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h

numte stored in header.

------------------------------------------------------------------------
r372 | airwin | 2012-01-18 23:19:13 -0800 (Wed, 18 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Fix alignment of trailing zeros for each header block.

------------------------------------------------------------------------
r369 | airwin | 2012-01-17 23:07:53 -0800 (Tue, 17 Jan 2012) | 20 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

Fix a prototype bug found by

CFLAGS="-O3 -fvisibility=hidden -std=c99 -pedantic -Wall -Wextra
-Wmissing-prototypes -Wstrict-prototypes -Wnested-externs -Wconversion
-Wshadow -Wcast-qual -Wcast-align -Wwrite-strings"
FFLAGS="-O3 -fvisibility=hidden -std=legacy -Wall -Wextra"

Also quiet the non-Python warnings generated by the above environment
variables.

The above CFLAGS variable generates lots of compiler warnings from
SWIG-generated boilerplate code as well as NumPy calls that are part
of the typemap codeblocks. I can do nothing about the former, and the
latter has a number of difficult issues (the actual types of NumPy
functions are always very much more complicated than the simplified
type mentioned in the NumPy documentation) so I am unlikely to do
anything further to quiet the python bindings warnings.



------------------------------------------------------------------------
r368 | airwin | 2012-01-17 22:58:09 -0800 (Tue, 17 Jan 2012) | 17 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Replace call to PyArray_DescrFromType by call to PyArray_DescrNewFromType
since according to the NumPy documentation the latter is more
appropriate if you are going to modify the result (as in this case).

Also, Py_INCREF the result before using it as an argument
to PyArray_Zeros (which is necessary according to the NumPy
documentation).

The result seems to be in better conformance with the NumPY
documentation and continues to pass the

valgrind --num-callers=40 python testeph.py  >| valgrind.out 2>&1

test with valgrind.out showing no memory management issues for
anything to do with the SWIG-generated wrapper functions.


------------------------------------------------------------------------
r367 | airwin | 2012-01-17 16:01:03 -0800 (Tue, 17 Jan 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Now that the Fortran interface is building again and gives good test
results for flce_test_external_de405 enable Fortran by default.

Make the test_external_de405 target (and therefore the test_external and
test_everything targets) depend on flce_test_external_de405 so that
latter test is always run as part of more comprehensive tests.


------------------------------------------------------------------------
r366 | airwin | 2012-01-17 15:57:55 -0800 (Tue, 17 Jan 2012) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h

Doxygen documentation updates.

Adjust Fortran bindings to ephcomc library API changes.  Results
passed the flce_test_external_de405 test, i.e., the Fortran legacy
const and pleph calls (which are ultimately wrappers for
c_ephcom_read_constants and ephcom_interpolate_relative) work. That
test also works for the alternative ephcom_interpolate_list debug code
path.  For that case, EPHCOM_INTERPOLATE_LIST_DEBUG is #defined in the
ephcomf.f code, and ephcom_list_relative calls an appropriately
configured ephcom_interpolate_list rather than the usual call to
ephcom_interpolate_relative7.


------------------------------------------------------------------------
r365 | airwin | 2012-01-17 13:36:36 -0800 (Tue, 17 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

Doxygen documentation and ordinary commentary changes.

------------------------------------------------------------------------
r364 | airwin | 2012-01-17 13:23:56 -0800 (Tue, 17 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Style previous commit.

------------------------------------------------------------------------
r363 | airwin | 2012-01-17 13:21:55 -0800 (Tue, 17 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Update to adjust to recent changes in c_ephcom_read_constants API.

------------------------------------------------------------------------
r362 | airwin | 2012-01-16 14:32:37 -0800 (Mon, 16 Jan 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Tweak Doxygen documentation.

Replace "7" by appropriate header.cnam_length + 1.

Deal with just-noticed jmax issue for i == EPHCOM_TE.

------------------------------------------------------------------------
r361 | airwin | 2012-01-16 13:21:18 -0800 (Mon, 16 Jan 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Since c_ephcom_read_constants writes cnames_length + 1 bytes for each
string in the cnames array fix off-by-one dimension bug in the newly
created NumPy array to make it large enough to accommodate those
writes.


------------------------------------------------------------------------
r360 | airwin | 2012-01-15 15:24:36 -0800 (Sun, 15 Jan 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

Change c_ephcom_read_constants argument list to include second
dimension -1 of cnames array in the calling routine.  This allows
c_ephcom_read_constants to check that second dimension is large
enough.

I also took this opportunity to reorder the argument list for
c_ephcom_read_constants in a more logical order.

Doxygen documention was updated appropriately.


------------------------------------------------------------------------
r359 | airwin | 2012-01-13 23:12:10 -0800 (Fri, 13 Jan 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Propagate/use header->cnam_length for both reading and writing of
ascii and binary headers in anticipation that future ephemerides will
have names for header constants that are longer than 6 characters.  Set
the value to 6 when reading ascii_version 0 ascii headers or
binary_version 0 binary headers.

This change has been tested using "make test_internal_de405"

ToDo: c_ephcom_read_constants will need both its internals and API
changed because of header->cnam_length considerations.


------------------------------------------------------------------------
r358 | airwin | 2012-01-13 19:00:27 -0800 (Fri, 13 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h

Style previous commit.

------------------------------------------------------------------------
r357 | airwin | 2012-01-13 17:35:08 -0800 (Fri, 13 Jan 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h

#define EPHCOM_MAXPVCOORDS = 6 (the maximum value of the last
dimension of pv) and EPHCOM_MAX_CNAM_LENGTH = 6, (the maximum size of
the CNAM string excluding the trailing NULL).  Use those values in the
SWIG-generated python bindings.  EPHCOM_MAXPVCOORDS is unlikely ever
to change since we live in a universe with 3 spatial dimensions and
one time dimension, but in anticipation that EPHCOM_MAX_CNAM_LENGTH
will soon increase for future ephemerides it is good that the Python
interface is now set up to handle such a change.


------------------------------------------------------------------------
r356 | airwin | 2012-01-13 17:28:09 -0800 (Fri, 13 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py

Output cnames.dtype.

------------------------------------------------------------------------
r355 | airwin | 2012-01-12 20:45:33 -0800 (Thu, 12 Jan 2012) | 10 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Use EPHCOM_MAXCON and EPHCOM_MAXOBJECTS appropriately for initial
guesses at array dimensions rather than arbitrary large values. These
important ephcom.h macro values will always be kept at reasonable
values that accomodate the currently known ephemerides with room for
future expansion.  After all, if these values are too small for the
number of constants/values or number of objects in some future
ephemeris, then the ephcom C library would completely fail to write or
read binary ephemeris records for that ephemeris.


------------------------------------------------------------------------
r354 | airwin | 2012-01-12 20:01:26 -0800 (Thu, 12 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i

Tweak documentation concerning typemaps.

------------------------------------------------------------------------
r353 | airwin | 2012-01-12 19:58:06 -0800 (Thu, 12 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/README.python_bindings

Tweak wording concerning typemaps.

------------------------------------------------------------------------
r351 | airwin | 2012-01-12 17:07:04 -0800 (Thu, 12 Jan 2012) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/README.python_bindings
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py

Update Python bindings for output arrays from old hacked method of
overwriting pre-existing NumPy arrays that are in the argument lists
to a Python-friendly way of doing things where the output NumPy array
is created in the Python bindings with the exact shape needed and
returned in the return tuple.  The updated testeph.py shows how
to use this new output method.


------------------------------------------------------------------------
r350 | airwin | 2012-01-11 15:10:37 -0800 (Wed, 11 Jan 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Convert all trailing nulls and blanks to uniform nulls for the cnames results
determined by c_ephcom_read_constants.

Doxygen documentation improvements.

------------------------------------------------------------------------
r348 | airwin | 2012-01-09 14:54:54 -0800 (Mon, 09 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Doxygen documentation tweaks.

------------------------------------------------------------------------
r347 | airwin | 2012-01-09 14:52:58 -0800 (Mon, 09 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Improve doxygen documentation.

------------------------------------------------------------------------
r346 | airwin | 2012-01-08 18:17:49 -0800 (Sun, 08 Jan 2012) | 3 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/bindings/python/README.python_bindings

Initial commit of a file that contains a description and discussion of
the Python bindings for the ephcomc library.

------------------------------------------------------------------------
r345 | airwin | 2012-01-08 12:19:38 -0800 (Sun, 08 Jan 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt

Now that the Python interface to the ephcomc library appears to be
completely working, enable Python by default.

------------------------------------------------------------------------
r344 | airwin | 2012-01-08 12:18:40 -0800 (Sun, 08 Jan 2012) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py

Fully test the Python interface with calls to ephcom_read_constants,
ephcom_interpolate_relative, and ephcom_interpolate_list.  All results
looked good!

------------------------------------------------------------------------
r343 | airwin | 2012-01-08 12:05:08 -0800 (Sun, 08 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Complete the Python interface to the ephcomc library.

------------------------------------------------------------------------
r341 | airwin | 2012-01-08 12:01:07 -0800 (Sun, 08 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Style previous commits.

------------------------------------------------------------------------
r340 | airwin | 2012-01-07 21:59:40 -0800 (Sat, 07 Jan 2012) | 20 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Yet another new API change (in ephcom_read_constants and
ephcom_interpolate_list this time).  There are two motivations
behind these changes.

1. It is much easier to implement the Python language bindings (and
presumably other language bindings) with 2D output arrays which are
typed as double ** (or char **).  Allocating and freeing the 2D memory
that is associated with these variables is done using the new utility
routines: ephcom_Alloc2dChar, ephcom_Free2dChar, 
ephcom_Alloc2dDouble, and ephcom_Free2dDouble.

2. The use of nvalues for both input and output purposes was confusing
in ephcom_read_constants since nvalues must remain constant to free
the associated memory 2D memory.  So in the new version of
ephcom_read_constants, nvalues is passed by value, and the actual
number of indices (first index of cnames and only index of values)
that have defined values is passed back as the function return value
from ephcom_read_constants.


------------------------------------------------------------------------
r339 | airwin | 2012-01-07 16:16:55 -0800 (Sat, 07 Jan 2012) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Implement the ENABLE_f95 option.  This currently defaults to OFF since
my planned set of core ephcomc library changes will likely break the
Fortran bindings build from time to time.  I plan to change
the ENABLE_f95 default to ON once these libephcomc changes settle down,
and I have adjusted the Fortran bindings accordingly.


------------------------------------------------------------------------
r337 | airwin | 2012-01-07 15:52:42 -0800 (Sat, 07 Jan 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/bindings/python
   A /trunk/jpl_ephemerides/ephcom2/bindings/python/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/bindings/python/ephcomcmodule.i
   A /trunk/jpl_ephemerides/ephcom2/bindings/python/testeph.py
   M /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i

Initial commit of a swig-generated Python interface for ephcom2.

Note, this does not even compile yet and requires changes to
libephcomc so I have disabled this python interface by default.
Use -DENABLE_python=ON to play with it.

------------------------------------------------------------------------
r335 | airwin | 2012-01-05 16:05:31 -0800 (Thu, 05 Jan 2012) | 3 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/bindings/swig_support
   A /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/ephcomcapi.i
   A /trunk/jpl_ephemerides/ephcom2/bindings/swig_support/swig_documentation.i

Initial commit of swig support for future language bindings for the
ephcomc library.

------------------------------------------------------------------------
r334 | airwin | 2012-01-05 14:22:53 -0800 (Thu, 05 Jan 2012) | 12 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c
   M /trunk/time_ephemerides/te_gen/src/ephchebgen_main.f

Change order of arguments for all variants of ephcom_read_constants such
that nvalues comes right after cnames and values rather than being
separated with sss in between.  This is a more convenient arrangement
of arguments from the swig point of view.

This is a fundamental API change to ephcom_read_constants, but, on the
other hand, ephcom_read_constants variants are an addition to the API
compared to the API of the last release. So this "added" change to the
API not as important as other backwards-incompatible API changes that
have occurred since the last release.


------------------------------------------------------------------------
r333 | airwin | 2012-01-05 12:56:51 -0800 (Thu, 05 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Style previous commit.

------------------------------------------------------------------------
r332 | airwin | 2012-01-05 12:39:26 -0800 (Thu, 05 Jan 2012) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c

Change output format of ephemeris values from F to E to output more
significant digits for values one or more orders of magnitude smaller
than unity and eliminate numerical noise of trailing useless digits
for values one or more orders of magnitude larger than unity.

------------------------------------------------------------------------
r331 | airwin | 2012-01-05 12:35:15 -0800 (Thu, 05 Jan 2012) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Generalize ephcom_pleph to work also with EPHCOM_LUNAR_CORE,
EPHCOM_LUNAR_TE, and EPHCOM_LUNAR_VE indices.

------------------------------------------------------------------------
r330 | airwin | 2012-01-04 18:46:39 -0800 (Wed, 04 Jan 2012) | 16 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c

Generalize ephcom_ephcmp application to calculate two extra quantities:

1. maxfit = maximum absolute value of Chebyshev coefficient for each
existing body in an ephemeris.

2. maxfitdiff = maximum absolute value of difference of corresponding
Chebyshev coefficients between two ephemerides for each existing body
in these ephemerides.

Because Chebyshev polynomial basis functions have maximum and minimum
values of +/- unity, the maxfit quantity is a good measure of the
maximum size of the function being fitted, and the maxfitdiff quantity
is a good measure of the maximum difference between the fitting
functions for the given body for the two ephemerides.


------------------------------------------------------------------------
r326 | airwin | 2012-01-02 11:17:53 -0800 (Mon, 02 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

No coords->au transformation for ve for now.

------------------------------------------------------------------------
r325 | airwin | 2012-01-02 10:55:37 -0800 (Mon, 02 Jan 2012) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Do not overwrite substance of ttl[0].

Blank tail end of ttl[0] rather than ttl[1] (which had no bad effect
on ttl[1] since that was subsequently overwritten).


------------------------------------------------------------------------
r324 | airwin | 2012-01-01 20:23:03 -0800 (Sun, 01 Jan 2012) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Improve ephcom_parse_block output (and thus, the output from
the ephcom_ephcoeff application which is the only application
that calls that routine).

Generalize both ephcom_parse_block and ephcom_get_coords some more for
the case where there are more than 13 compact body indices.

Generalize for lunar core angle case a bit more although that will
remain untested until Bill Folkner provides such data.


------------------------------------------------------------------------
r323 | airwin | 2012-01-01 14:15:28 -0800 (Sun, 01 Jan 2012) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Style previous changes.

------------------------------------------------------------------------
r322 | airwin | 2012-01-01 14:12:17 -0800 (Sun, 01 Jan 2012) | 15 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h

Add lunar core object (to hold lunar core angles) in anticipation of
future needs mentioned by Bill Folkner.  Subject to further change
if I did not remember our phone conversation correctly.

Add header->ncoords[i] to keep track of number of coordinates for each
object mentioned in compact list.  Calculate this quantity
consistently with ipt in ephcom_ipt_fixup.  If the value is zero for a
particular compact index, then no Chebyshev data exists for that
compact index for the particular JPL ephemeris.

If an attempt is made to interpolate a compact-indexed object where
header->ncoords[i] <=0, then exit with the appropriate error
message.


------------------------------------------------------------------------
r321 | airwin | 2011-12-31 17:13:45 -0800 (Sat, 31 Dec 2011) | 26 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Implement binary format version 1 for the JPL binary ephemerides. The
old binary format (now denoted by version 0) was implemented both by
older versions of the ephcom software and by the JPL distributed code
(asc2eph.f and testeph.f) for writing and reading binary ephemerides.
The new binary format removes some limitations of that old format. For
example, the new format allows arbitrary numbers of constants and
ephemeris objects. This is a preliminary version of this new binary
format and may be subject to further changes as a result of on-going
discussions with Bill Folkner (who is in charge of the maintenance of
asc2eph.f and testeph.f).

This updated ephcom2 implementation reads both binary version 0 and 1,
but normally only writes binary version 1.

There were some other small changes in addition:

ephcom_readbinary_header: Instead of updating header->ncoeff if it
appears as one of the cvalue values, check consistency with the
correct value that has been previously determined.

Implement a number of documentation improvements.

Implement some small code improvements such as better variable names
and additional sanity checks.


------------------------------------------------------------------------
r320 | airwin | 2011-12-26 21:24:31 -0800 (Mon, 26 Dec 2011) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

ephcom_writebinary_header: sanity checks on size of first and second
binary header records.

Most functions in this file: Improve error messages to stderr by
always giving the function name within the error message.


------------------------------------------------------------------------
r319 | airwin | 2011-12-26 19:00:26 -0800 (Mon, 26 Dec 2011) | 9 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Documentation of binary format version 0 in ephcom_writebinary_header.

Add some code specifics for that version to avoid trouble when
the dimensions of cnam and cval are made larger in the future
to accomodate additional possibilities for binary format version > 0.

This result passed the same tests as the previous commit.


------------------------------------------------------------------------
r318 | airwin | 2011-12-26 15:49:10 -0800 (Mon, 26 Dec 2011) | 26 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Implement ascii format version 1 which differs from version 0 by having
a first line which gives the ascii_version value, and which reads value
of npt from ascii header file rather than assuming npt=13.

Temporarily set header->binary_version = 0 and header->npt = 13 for
read of header part of JPL binary ephemeris since we revert for
now to use binary format version 0.  (Later this will be
replaced by proper detection of binary version and header->npt on input
and using latest binary format on output.)

Determine ascii format on input and use the latest version of ascii
format on output.

Replace EPHCOM_COMPACT_NUMOBJECTS by header->npt for all do loop limits.

All changes tested by test_external_de405 and test_internal_de102_old
and test_external_de102_old targets as well as comparing with older
results done before all the recent set of changes.  The binary
ephemerides were identical with older results, but curiously
testeph.out (for both de405 and de102_old) differed in the numerical
noise. I attribute this change to some numerical computation for the
libephcomc API used by ephcom_testeph being done in a slightly
different order, but I have no idea what that my be.  valgrind
results were clean.


------------------------------------------------------------------------
r317 | airwin | 2011-12-18 23:58:07 -0800 (Sun, 18 Dec 2011) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c

Doxygen documentation updates for index table, but no checks have
been done yet on whether the te/ve infrastructure changes work properly
for the Fortran interface.

------------------------------------------------------------------------
r316 | airwin | 2011-12-18 23:56:22 -0800 (Sun, 18 Dec 2011) | 45 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c

Implement infrastructure support for libephcom and libephcomc to handle
time ephemeris and earth velocity/c data.  This consists of the
following changes:

1. Replace magical numerical constants by symbolic 
EPHCOM_COMPACT_* macros everywhere they are needed.  This also
includes logic changes like using compact_pv for directly
interpolated values using compact indexing scheme rather than
using coords->pv (now only used for ordinary indexing)
for this compactly indexed purpose.

2. Replace special lpt (special array to hold the ipt values for
libration) logic everywhere that is possible by the corresponding ipt
logic.  The only exception is that the internal format of the JPL
binary ephemerides still stores the ipt values corresponding to
libration in a separate area to be consistent with the historical
standard for JPL binary ephemerides.

3. Implement special static function called ephcom_ipt_fixup to
transform ipt data to standard form and to either check header->ncoeff
or else set header->ncoeff and header->ksize.  This function works
properly if some of the zeroed ipt values occur first (as will
happen with time ephemerides) and also replaces the same logic
being used over and over again in various ephcom routines that
deal with ipt.  ephcom_ipt_fixup also made task 2. above much
easier since a lot of the special lpt logic occurred here scattered
all over the code.

4. Generalize calculation of ncoords for the te and ve cases.

These infrastructure changes pass the "test_everything" C tests for
all ephemerides, and intercomparisons with those tests for the old
code.

ToDo:

1. Check Fortran interface.

2. Implement check that interpolated compact
index actually exists.

3. Check that can generate and manipulate time ephemerides.



------------------------------------------------------------------------
r315 | airwin | 2011-12-13 15:05:46 -0800 (Tue, 13 Dec 2011) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Backwards-incompatible API change such that JPL body indices always
start at 0 rather than 1.  The only exception to this change are the
Fortran subroutines pleph and dpleph which use the old offset indexing
scheme because they are designed to emulate the API of the
JPL legacy Fortran pleph and dpleph routines which also use that offset
indexing scheme.

------------------------------------------------------------------------
r314 | airwin | 2011-12-13 13:03:21 -0800 (Tue, 13 Dec 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Update the source code for the ephcom_testeph and ephcom_vtransit
applications to use the new high-level libephcomc API.  The results are
identical to the previous ones, and valgrind also gave clean results
for both applications other than the usual unfreed memory allocations. 

------------------------------------------------------------------------
r313 | airwin | 2011-12-12 22:37:50 -0800 (Mon, 12 Dec 2011) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt

Add ephcom_vtransit_test_external_de405 target to test ephcom_vtransit.

------------------------------------------------------------------------
r312 | airwin | 2011-12-12 12:35:42 -0800 (Mon, 12 Dec 2011) | 6 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt

Add flce_test_external_de405 target to run-time test the flce_testeph
executable which is implemented using the JPL Fortran legacy code,
flce_testeph.f (a copy of the main routine of the JPL Fortran legacy
testeph.f).


------------------------------------------------------------------------
r311 | airwin | 2011-12-12 12:17:12 -0800 (Mon, 12 Dec 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/flce_testeph.f (from /trunk/jpl_ephemerides/jpl_legacy_fortran/testeph.f:310)

For convenience use local copy of main programme (which I assume is in the public
domain) of JPL legacy Fortran code for ephemeris testing as the basis
for creating the flce_test target which in turn is used for testing
that legacy Fortran code can use the ephcomf library.

------------------------------------------------------------------------
r310 | airwin | 2011-12-12 10:24:03 -0800 (Mon, 12 Dec 2011) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_gfortran.def
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_mingw.def (from /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_gfortran.def:309)

Change ephcomf_gfortran.def filename to ephcomf_mingw.def to give a
better idea of the platform (the MinGW version of gfortran) that is
affected.

------------------------------------------------------------------------
r309 | airwin | 2011-12-12 10:17:40 -0800 (Mon, 12 Dec 2011) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_gfortran.def
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_ifort.def

Update *.def files for Windows platforms to reflect revised libephcomf API.

------------------------------------------------------------------------
r308 | airwin | 2011-12-11 18:04:41 -0800 (Sun, 11 Dec 2011) | 22 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h
   M /trunk/time_ephemerides/te_gen/src/tt_derivative.f
   M /trunk/time_ephemerides/te_gen/src/vdc_calc.f

Add control argument to ephcom_interpolate_relative chain of routines
that has the same function as the existing control argument for the
ephcom_interpolate_list chain of routines.

Rearrange the order of the arguments of the ephcom_interpolate_list
chain of routines so that et2 is the second argument consistent with
the existing order of the arguments for the ephcom_interpolate_relative
chain of routines.

These changes tested by a valgrind run of flce_testeph and diff of
results with previous results.  This tests the chain of
ephcom_interpolate_relative calls starting with dpleph.  I ran this
test twice --- once with the usual #undef EPHCOM_INTERPOLATE_LIST_DEBUG and once
with #define EPHCOM_INTERPOLATE_LIST_DEBUG.  For the latter case, the
chain of ephcom_interpolate_relative calls is diverted to the
chain of ephcom_interpolate_list calls.

These changes also tested by calculating TE405 (which uses the
ephcom_interpolate_list chain of routines) and comparing with prior
results.


------------------------------------------------------------------------
r307 | airwin | 2011-12-11 13:38:57 -0800 (Sun, 11 Dec 2011) | 30 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

Massive update to Doxygen documentation to make it clearer and more
consistent with actual API (except for the documentation of the
indices where we anticipate removing most of the off-by-one
inconsistencies).

As a result of this review of the argument list documentation a number
of other changes were done:

Renaming of argument variables to be more consistent with each other
for the different functions if the variable actually has the same
meaning.

double *pv ==> double pv[][6] API (and internal) change
for c_ephcom_interpolate_list in the ephcomc library code and
the ephcomfc library code that calls c_ephcom_interpolate_list.

cstrings[][7] ==> cstrings[][length + 1] argument change in
static convert_string_array within the ephcomfc library code.

Improve identification of functions which generate error messages
within the error message.

Use const attribute where appropriate in argument lists.  This is a
backwards incompatible API change.

For Fortran code use lower limit of 0 for dimensions of some of the
array arguments to be consistent with C code and because that change
reduces off-by-one index documentation issues.


------------------------------------------------------------------------
r306 | airwin | 2011-12-11 13:00:10 -0800 (Sun, 11 Dec 2011) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in

For Fortran, the file description was being split between the brief
description area and the detailed description area.  Try to beat this
by suppressing all brief descriptions (did not work) and by always
generating a detailed description from the brief description
if doxygen doesn't feel there was a detailed description.  This did
join the split file description together in the detailed area.

Do not sort any display.  This means all documentation is done in
the order of the functions in the file which I prefer.


------------------------------------------------------------------------
r305 | airwin | 2011-12-01 11:51:41 -0800 (Thu, 01 Dec 2011) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/doc/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/doc/Doxyfile.in

Change Doxygen source files from bindings/f77 to the current
bindings/f95.

------------------------------------------------------------------------
r304 | airwin | 2011-11-22 14:40:36 -0800 (Tue, 22 Nov 2011) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/gnulliver.c

Doxygen commentary whitespace adjustment to put blank after "]" in e.g.,
[INPUT ONLY].

------------------------------------------------------------------------
r303 | airwin | 2011-11-08 11:10:07 -0800 (Tue, 08 Nov 2011) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c

Style previous commit.

------------------------------------------------------------------------
r301 | airwin | 2011-11-08 09:50:16 -0800 (Tue, 08 Nov 2011) | 8 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

For both libephcomc and Fortran bindings of that library communicate
the status to the calling routine via the function return value rather
than a retcode parameter in the argument list.

This change was tested with flce_testeph which gave identical
results to previous and no valgrind issues.


------------------------------------------------------------------------
r299 | airwin | 2011-11-06 15:34:26 -0800 (Sun, 06 Nov 2011) | 13 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h

Rename fundamental routines in ephcomc.[ch], ephcomfc.[ch], and
ephcomf.f to c_ephcom_read_constants, c_ephcom_interpolate_relative,
and c_ephcom_interpolate_list (or the standard variants of those
names with "c_" prefix dropped or "7" suffix added.).

Drop pleph1 subroutine from Fortran bindings since there is not
much point in encouraging low-precision ephemeris interpolation
using new routines like this one.

Retain legacy const, pleph, and dpleph subroutines in Fortran
bindings.
    

------------------------------------------------------------------------
r298 | airwin | 2011-11-06 09:49:47 -0800 (Sun, 06 Nov 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h

Major change to the ephcomfc library. The renamed functions
CONSTANTS7, PLEPH7, and STATE7 now simply wrap c_constants, c_pleph,
and c_state in the newly created ephcomc library.


------------------------------------------------------------------------
r297 | airwin | 2011-11-06 09:37:33 -0800 (Sun, 06 Nov 2011) | 11 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h
   M /trunk/jpl_ephemerides/ephcom2/src/ephcomdll.h

The ephcomc library implements a high-level C API for the ephcom
software that provides constants and interpolated data from binary JPL
ephemerides.

This commit implements additional changes to the C source code so this library
provides good results for the (as yet uncommitted) f95 interface.

This commit also makes build-system changes to build and install this
new library.


------------------------------------------------------------------------
r294 | airwin | 2011-11-06 09:18:48 -0800 (Sun, 06 Nov 2011) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c

Style previously committed changes.

------------------------------------------------------------------------
r293 | airwin | 2011-11-05 11:21:22 -0700 (Sat, 05 Nov 2011) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h

Define and use EPHCOM_MAXCON macro rather than 400.

Sanity checks on header->ncon to not be larger than EPHCOM_MAXCON.

------------------------------------------------------------------------
r292 | airwin | 2011-10-23 14:06:50 -0700 (Sun, 23 Oct 2011) | 6 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/src/ephcomc.h (from /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h:289)

Copy bindings/f95/ephcomfc.h to src/ephcomc.h in preparation for
implementation of libephcomc, the C library whose const, pleph, and
state API will be interfaced to all ephcom language bindings (starting
with f95 for now).


------------------------------------------------------------------------
r291 | airwin | 2011-10-23 14:04:27 -0700 (Sun, 23 Oct 2011) | 5 lines
Changed paths:
   A /trunk/jpl_ephemerides/ephcom2/src/ephcomc.c (from /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c:289)

Copy bindings/f95/ephcomfc.c to src/ephcomc.c in preparation for
implementation of libephcomc, the C library whose const, pleph, and state
API will be interfaced to all ephcom language bindings (starting with
f95 for now).

------------------------------------------------------------------------
r290 | airwin | 2011-10-23 13:50:44 -0700 (Sun, 23 Oct 2011) | 5 lines
Changed paths:
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77

Move bindings/f77 to binding/f95 in preparation for turning our
traditional (i.e., f77 + extensions) Fortran bindings for ephcom into
Fortran 95 bindings for ephcom.


------------------------------------------------------------------------
r289 | airwin | 2011-10-23 13:48:05 -0700 (Sun, 23 Oct 2011) | 5 lines
Changed paths:
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/CMakeLists.txt
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf.f
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf_gfortran.def
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf_ifort.def
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.c
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.h
   D /trunk/jpl_ephemerides/ephcom2/bindings/f77/testconst.f

Move bindings/f77 to binding/f95 in preparation for turning our
traditional (i.e., f77 + extensions) Fortran bindings for ephcom into
Fortran 95 bindings for ephcom.


------------------------------------------------------------------------
r288 | airwin | 2011-10-23 13:43:59 -0700 (Sun, 23 Oct 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/CMakeLists.txt
   A /trunk/jpl_ephemerides/ephcom2/bindings/f95 (from /trunk/jpl_ephemerides/ephcom2/bindings/f77:259)
   R /trunk/jpl_ephemerides/ephcom2/bindings/f95/CMakeLists.txt (from /trunk/jpl_ephemerides/ephcom2/bindings/f77/CMakeLists.txt:284)
   R /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf.f (from /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf.f:286)
   R /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_gfortran.def (from /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf_gfortran.def:287)
   R /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomf_ifort.def (from /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf_ifort.def:287)
   R /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.c (from /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.c:286)
   R /trunk/jpl_ephemerides/ephcom2/bindings/f95/ephcomfc.h (from /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.h:282)

Move bindings/f77 to binding/f95 in preparation for turning our
traditional (i.e., f77 + extensions) Fortran bindings for ephcom into
Fortran 95 bindings for ephcom.


------------------------------------------------------------------------
r287 | airwin | 2011-10-21 15:30:33 -0700 (Fri, 21 Oct 2011) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf_gfortran.def
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf_ifort.def

Export new state1 Fortran API for the mingw/gfortran and ifort
Windows compiler cases.

------------------------------------------------------------------------
r286 | airwin | 2011-10-21 15:27:03 -0700 (Fri, 21 Oct 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf.f
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.c
   M /trunk/time_ephemerides/te_gen/src/tt_derivative.f
   M /trunk/time_ephemerides/te_gen/src/vdc_calc.f

Do the right thing with regard to nbody.  Drop all constraints on nbody
other than it must be greater than 0.  Ignore all indices greater
than MIN(nbody, EPHCOM_NUMOBJECTS).
  

------------------------------------------------------------------------
r285 | airwin | 2011-10-17 13:45:01 -0700 (Mon, 17 Oct 2011) | 23 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/src/asc2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2asc.c
   M /trunk/jpl_ephemerides/ephcom2/src/eph2eph.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcoeff.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/gnulliver.c
   M /trunk/jpl_ephemerides/ephcom2/src/gnulliver.h
   M /trunk/jpl_ephemerides/ephcom2/src/headcmp.c
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Code changes to solve the errors generated by

export CFLAGS="-O3 -fvisibility=hidden -std=c99 -pedantic -Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wnested-externs -Wconversion -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings -Werror"
export FFLAGS="-O3 -fvisibility=hidden -std=legacy -Wall -Wextra -Werror"

A lot of these fixes were done by changing implicit casts to explicit
casts, but that simply stops the warning/error messages without
addressing the concern that the casting might lose information or get
the wrong sign for the result.  However, when I did such explicit
casting, I thought hard about the size/sign of the result, and as far
as I can tell all is well with these changes.

These changes were fairly intrusive, but they do make the code more
standards-compliant and therefore less sensitive to potentially
different behaviour for C and Fortran compilers which are not gcc or
gfortran.

The revised code gave good results for the test_everything target.
But that target only tests the C part of the interface, and further
testing (e.g., with te_gen) will be required to make sure the
Fortran interface changes in ephcomfc.c are fine as well.


------------------------------------------------------------------------
r284 | airwin | 2011-10-16 11:16:28 -0700 (Sun, 16 Oct 2011) | 18 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/CMakeLists.txt
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomf.f

Improve doxygen documentation.

Implement state1 which calls the C STATE17 routine to determine
ephemeris quantities wholesale at a given time rather than as in the
dpleph1 case just one body or angle alone or one body relative to
another.

Implement a second variant of dpleph1 that calls state1 as a debugging
test of that routine.

Implement preprocessing for ephcomf.f to conditionally compile one
of the two variants of dpleph1.  Currently, the standard variant
is used which calls C code directly rather than using a call
to state1 as a method of debugging that routine.  But by changing
#undef DPLEPH1_DEBUG ==> #define DPLEPH1_DEBUG, one can use
the state1 debugging version.


------------------------------------------------------------------------
r283 | airwin | 2011-10-16 11:01:16 -0700 (Sun, 16 Oct 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.c

Improve doxygen documentation.

Add STATE17 implementation that will be called by the Fortran state1
routine.

------------------------------------------------------------------------
r282 | airwin | 2011-10-15 10:06:39 -0700 (Sat, 15 Oct 2011) | 3 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.h

Declare new STATE17 API which is designed to obtain a number of
different ephemeris results at a given time in an efficient manner. 

------------------------------------------------------------------------
r279 | airwin | 2011-09-26 11:52:29 -0700 (Mon, 26 Sep 2011) | 20 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/bindings/f77/ephcomfc.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.c
   M /trunk/jpl_ephemerides/ephcom2/src/ephcom.h
   M /trunk/jpl_ephemerides/ephcom2/src/testeph.c
   M /trunk/jpl_ephemerides/ephcom2/src/vtransit.c

Save data in static variables between calls to avoid rereading the
same block of data (if the time is not that different from the previous
requested time) and to avoid redoing redundant calculations.  This change gave
a factor of 10 speedup for the simple test of calling the Fortran dpleph
routine 1 million times with the same arguments.

Backwards-incompatible API change for libephcom to use coords->list
_which must be specified by the user before the ephcom_get_coords
call_ to control which subset of the non-compact body indices data are
interpolated. This change achieved an additional factor of three speedup
for the simple test above to the point where that test is 6 per cent
faster than the corresponding JPL Fortran test.  Note the simple test
was 30 times slower than the equivalent JPL test before these two
code optimizations.  Note also that in real-world tests the i/o
of blocks will be considerably more than the one block tested by
this test, and byteswapping of every variable in each datablock might
make the ephcom version again slower than the JPL version.



------------------------------------------------------------------------
r272 | airwin | 2011-09-22 11:58:22 -0700 (Thu, 22 Sep 2011) | 4 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/README_ephcom2.txt
   M /trunk/www/ephcom2.php

For maximum Unix generality use "find ." rather than just "find" to look
for issues.  GNU find has a default PATH of ".", but other Unix find
commands do not.

------------------------------------------------------------------------
r266 | airwin | 2011-09-22 08:32:03 -0700 (Thu, 22 Sep 2011) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt

Tweak cache documentation string for CMAKE_INSTALL_DOCDIR.

------------------------------------------------------------------------
r264 | airwin | 2011-09-14 18:21:33 -0700 (Wed, 14 Sep 2011) | 7 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CMakeLists.txt

Eliminate #*# files from tarballs that are sometimes left over from
interrupted edit sessions.  This was actually a (temporary) problem
for the ephcom-2.0.2 release.  I have tried "make package_source" with
one of these kinds of files in the source tree to insure this
particular regex pattern does the job of ignoring that #*# file.


------------------------------------------------------------------------
r262 | airwin | 2011-09-13 20:48:03 -0700 (Tue, 13 Sep 2011) | 5 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/CONCATENATED_README.release

Insert README.release for 2.0.2 at the start of
CONCATENATED_README.release to keep a historical record in reverse
chronological order of the notes for all releases in that file.


------------------------------------------------------------------------
r258 | airwin | 2011-09-13 15:05:15 -0700 (Tue, 13 Sep 2011) | 2 lines
Changed paths:
   M /trunk/jpl_ephemerides/ephcom2/ChangeLog.release

Update ChangeLog for the 2.0.2 release.

------------------------------------------------------------------------
Source: README.release, updated 2013-01-12