summaryrefslogtreecommitdiffstats
path: root/ast/pal/palDjcal.c
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-11-02 19:16:17 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-11-02 19:16:17 (GMT)
commit293057bdd882685f8ddad66bf77196a5853b08da (patch)
tree22c02c3808f490432f5f785c8bb665438169662b /ast/pal/palDjcal.c
parent87f20cbc44f8f6b53c00c37f89bc134a1f4cf29e (diff)
parentd26ed8388f100a12996c0b92a98040ef2ba7fa8e (diff)
downloadblt-293057bdd882685f8ddad66bf77196a5853b08da.zip
blt-293057bdd882685f8ddad66bf77196a5853b08da.tar.gz
blt-293057bdd882685f8ddad66bf77196a5853b08da.tar.bz2
Merge commit 'd26ed8388f100a12996c0b92a98040ef2ba7fa8e' as 'ast'
Diffstat (limited to 'ast/pal/palDjcal.c')
-rw-r--r--ast/pal/palDjcal.c97
1 files changed, 97 insertions, 0 deletions
diff --git a/ast/pal/palDjcal.c b/ast/pal/palDjcal.c
new file mode 100644
index 0000000..b6aac9e
--- /dev/null
+++ b/ast/pal/palDjcal.c
@@ -0,0 +1,97 @@
+/*
+*+
+* Name:
+* palDjcal
+
+* Purpose:
+* Modified Julian Date to Gregorian Calendar
+
+* Language:
+* Starlink ANSI C
+
+* Type of Module:
+* Library routine
+
+* Invocation:
+* void palDjcal ( int ndp, double djm, int iymdf[4], int *j );
+
+* Arguments:
+* ndp = int (Given)
+* Number of decimal places of days in fraction.
+* djm = double (Given)
+* Modified Julian Date (JD-2400000.5)
+* iymdf[4] = int[] (Returned)
+* Year, month, day, fraction in Gregorian calendar.
+* j = status (Returned)
+* 0 = OK. See eraJd2cal for other values.
+
+* Description:
+* Modified Julian Date to Gregorian Calendar, expressed
+* in a form convenient for formatting messages (namely
+* rounded to a specified precision, and with the fields
+* stored in a single array)
+
+* Authors:
+* PTW: Pat Wallace (STFC)
+* TIMJ: Tim Jenness (JAC, Hawaii)
+* {enter_new_authors_here}
+
+* History:
+* 2012-02-10 (TIMJ):
+* Initial version with documentation taken from Fortran SLA
+* Adapted with permission from the Fortran SLALIB library.
+* {enter_further_changes_here}
+
+* Notes:
+* - Uses eraJd2cal
+
+* Copyright:
+* Copyright (C) 2004 Patrick T. Wallace
+* Copyright (C) 2012 Science and Technology Facilities Council.
+* All Rights Reserved.
+
+* Licence:
+* This program is free software: you can redistribute it and/or
+* modify it under the terms of the GNU Lesser General Public
+* License as published by the Free Software Foundation, either
+* version 3 of the License, or (at your option) any later
+* version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General
+* License along with this program. If not, see
+* <http://www.gnu.org/licenses/>.
+
+* Bugs:
+* {note_any_bugs_here}
+*-
+*/
+
+#include <math.h>
+
+#include "pal.h"
+#include "palmac.h"
+#include "pal1sofa.h"
+
+void palDjcal ( int ndp, double djm, int iymdf[4], int *j ) {
+ double frac = 0.0;
+ double nfd;
+
+ *j = eraJd2cal( PAL__MJD0, djm, &(iymdf[0]),
+ &(iymdf[1]), &(iymdf[2]),
+ &frac);
+
+ /* Convert ndp to a power of 10 */
+ nfd = pow( 10., (double)ndp );
+
+ /* Multiply the fraction */
+ frac *= nfd;
+
+ /* and now we want to round to the nearest integer */
+ iymdf[3] = (int)DNINT(frac);
+
+}