VieSched++
VieVS VLBI Scheduling Software
sofa.h
Go to the documentation of this file.
1 #ifndef SOFAHDEF
2 #define SOFAHDEF
3 
4 /*
5 ** - - - - - - -
6 ** s o f a . h
7 ** - - - - - - -
8 **
9 ** Prototype function declarations for SOFA library.
10 **
11 ** This file is part of the International Astronomical Union's
12 ** SOFA (Standards Of Fundamental Astronomy) software collection.
13 **
14 ** This revision: 2016 March 10
15 **
16 ** SOFA release 2017-04-20
17 **
18 ** Copyright (C) 2017 IAU SOFA Board. See notes at end.
19 */
20 
21 #include "math.h"
22 #include "sofam.h"
23 
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 /* Astronomy/Calendars */
30 int iauCal2jd( int iy, int im, int id, double *djm0, double *djm );
31 double iauEpb( double dj1, double dj2 );
32 void iauEpb2jd( double epb, double *djm0, double *djm );
33 double iauEpj( double dj1, double dj2 );
34 void iauEpj2jd( double epj, double *djm0, double *djm );
35 int iauJd2cal( double dj1, double dj2, int *iy, int *im, int *id, double *fd );
36 int iauJdcalf( int ndp, double dj1, double dj2, int iymdf[4] );
37 
38 /* Astronomy/Astrometry */
39 void iauAb( double pnat[3], double v[3], double s, double bm1, double ppr[3] );
40 void iauApcg( double date1, double date2, double ebpv[2][3], double ehp[3], iauASTROM *astrom );
41 void iauApcg13( double date1, double date2, iauASTROM *astrom );
42 void iauApci( double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s,
43  iauASTROM *astrom );
44 void iauApci13( double date1, double date2, iauASTROM *astrom, double *eo );
45 void iauApco( double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, double theta,
46  double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb,
47  iauASTROM *astrom );
48 int iauApco13( double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp,
49  double phpa, double tc, double rh, double wl, iauASTROM *astrom, double *eo );
50 void iauApcs( double date1, double date2, double pv[2][3], double ebpv[2][3], double ehp[3], iauASTROM *astrom );
51 void iauApcs13( double date1, double date2, double pv[2][3], iauASTROM *astrom );
52 void iauAper( double theta, iauASTROM *astrom );
53 void iauAper13( double ut11, double ut12, iauASTROM *astrom );
54 void iauApio( double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa,
55  double refb, iauASTROM *astrom );
56 int iauApio13( double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp,
57  double phpa, double tc, double rh, double wl, iauASTROM *astrom );
58 void iauAtci13( double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2,
59  double *ri, double *di, double *eo );
60 void iauAtciq( double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, double *ri,
61  double *di );
62 void iauAtciqn( double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, int n,
63  iauLDBODY b[], double *ri, double *di );
64 void iauAtciqz( double rc, double dc, iauASTROM *astrom, double *ri, double *di );
65 int iauAtco13( double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1,
66  double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl,
67  double *aob, double *zob, double *hob, double *dob, double *rob, double *eo );
68 void iauAtic13( double ri, double di, double date1, double date2, double *rc, double *dc, double *eo );
69 void iauAticq( double ri, double di, iauASTROM *astrom, double *rc, double *dc );
70 void iauAticqn( double ri, double di, iauASTROM *astrom, int n, iauLDBODY b[], double *rc, double *dc );
71 int iauAtio13( double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm,
72  double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob,
73  double *hob, double *dob, double *rob );
74 void iauAtioq( double ri, double di, iauASTROM *astrom, double *aob, double *zob, double *hob, double *dob,
75  double *rob );
76 int iauAtoc13( const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong,
77  double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *rc,
78  double *dc );
79 int iauAtoi13( const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong,
80  double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *ri,
81  double *di );
82 void iauAtoiq( const char *type, double ob1, double ob2, iauASTROM *astrom, double *ri, double *di );
83 void iauLd( double bm, double p[3], double q[3], double e[3], double em, double dlim, double p1[3] );
84 void iauLdn( int n, iauLDBODY b[], double ob[3], double sc[3], double sn[3] );
85 void iauLdsun( double p[3], double e[3], double em, double p1[3] );
86 void iauPmpx( double rc, double dc, double pr, double pd, double px, double rv, double pmt, double pob[3],
87  double pco[3] );
88 int iauPmsafe( double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b,
89  double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2,
90  double *rv2 );
91 void iauPvtob( double elong, double phi, double height, double xp, double yp, double sp, double theta,
92  double pv[2][3] );
93 void iauRefco( double phpa, double tc, double rh, double wl, double *refa, double *refb );
94 
95 /* Astronomy/Ephemerides */
96 int iauEpv00( double date1, double date2, double pvh[2][3], double pvb[2][3] );
97 int iauPlan94( double date1, double date2, int np, double pv[2][3] );
98 
99 /* Astronomy/FundamentalArgs */
100 double iauFad03( double t );
101 double iauFae03( double t );
102 double iauFaf03( double t );
103 double iauFaju03( double t );
104 double iauFal03( double t );
105 double iauFalp03( double t );
106 double iauFama03( double t );
107 double iauFame03( double t );
108 double iauFane03( double t );
109 double iauFaom03( double t );
110 double iauFapa03( double t );
111 double iauFasa03( double t );
112 double iauFaur03( double t );
113 double iauFave03( double t );
114 
115 /* Astronomy/PrecNutPolar */
116 void iauBi00( double *dpsibi, double *depsbi, double *dra );
117 void iauBp00( double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3] );
118 void iauBp06( double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3] );
119 void iauBpn2xy( double rbpn[3][3], double *x, double *y );
120 void iauC2i00a( double date1, double date2, double rc2i[3][3] );
121 void iauC2i00b( double date1, double date2, double rc2i[3][3] );
122 void iauC2i06a( double date1, double date2, double rc2i[3][3] );
123 void iauC2ibpn( double date1, double date2, double rbpn[3][3], double rc2i[3][3] );
124 void iauC2ixy( double date1, double date2, double x, double y, double rc2i[3][3] );
125 void iauC2ixys( double x, double y, double s, double rc2i[3][3] );
126 void iauC2t00a( double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3] );
127 void iauC2t00b( double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3] );
128 void iauC2t06a( double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3] );
129 void iauC2tcio( double rc2i[3][3], double era, double rpom[3][3], double rc2t[3][3] );
130 void iauC2teqx( double rbpn[3][3], double gst, double rpom[3][3], double rc2t[3][3] );
131 void iauC2tpe( double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp,
132  double rc2t[3][3] );
133 void iauC2txy( double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp,
134  double rc2t[3][3] );
135 double iauEo06a( double date1, double date2 );
136 double iauEors( double rnpb[3][3], double s );
137 void iauFw2m( double gamb, double phib, double psi, double eps, double r[3][3] );
138 void iauFw2xy( double gamb, double phib, double psi, double eps, double *x, double *y );
139 void iauLtp( double epj, double rp[3][3] );
140 void iauLtpb( double epj, double rpb[3][3] );
141 void iauLtpecl( double epj, double vec[3] );
142 void iauLtpequ( double epj, double veq[3] );
143 void iauNum00a( double date1, double date2, double rmatn[3][3] );
144 void iauNum00b( double date1, double date2, double rmatn[3][3] );
145 void iauNum06a( double date1, double date2, double rmatn[3][3] );
146 void iauNumat( double epsa, double dpsi, double deps, double rmatn[3][3] );
147 void iauNut00a( double date1, double date2, double *dpsi, double *deps );
148 void iauNut00b( double date1, double date2, double *dpsi, double *deps );
149 void iauNut06a( double date1, double date2, double *dpsi, double *deps );
150 void iauNut80( double date1, double date2, double *dpsi, double *deps );
151 void iauNutm80( double date1, double date2, double rmatn[3][3] );
152 double iauObl06( double date1, double date2 );
153 double iauObl80( double date1, double date2 );
154 void iauP06e( double date1, double date2, double *eps0, double *psia, double *oma, double *bpa, double *bqa,
155  double *pia, double *bpia, double *epsa, double *chia, double *za, double *zetaa, double *thetaa,
156  double *pa, double *gam, double *phi, double *psi );
157 void iauPb06( double date1, double date2, double *bzeta, double *bz, double *btheta );
158 void iauPfw06( double date1, double date2, double *gamb, double *phib, double *psib, double *epsa );
159 void iauPmat00( double date1, double date2, double rbp[3][3] );
160 void iauPmat06( double date1, double date2, double rbp[3][3] );
161 void iauPmat76( double date1, double date2, double rmatp[3][3] );
162 void iauPn00( double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3],
163  double rbp[3][3], double rn[3][3], double rbpn[3][3] );
164 void iauPn00a( double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3],
165  double rbp[3][3], double rn[3][3], double rbpn[3][3] );
166 void iauPn00b( double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3],
167  double rbp[3][3], double rn[3][3], double rbpn[3][3] );
168 void iauPn06( double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3],
169  double rbp[3][3], double rn[3][3], double rbpn[3][3] );
170 void iauPn06a( double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3],
171  double rbp[3][3], double rn[3][3], double rbpn[3][3] );
172 void iauPnm00a( double date1, double date2, double rbpn[3][3] );
173 void iauPnm00b( double date1, double date2, double rbpn[3][3] );
174 void iauPnm06a( double date1, double date2, double rnpb[3][3] );
175 void iauPnm80( double date1, double date2, double rmatpn[3][3] );
176 void iauPom00( double xp, double yp, double sp, double rpom[3][3] );
177 void iauPr00( double date1, double date2, double *dpsipr, double *depspr );
178 void iauPrec76( double date01, double date02, double date11, double date12, double *zeta, double *z, double *theta );
179 double iauS00( double date1, double date2, double x, double y );
180 double iauS00a( double date1, double date2 );
181 double iauS00b( double date1, double date2 );
182 double iauS06( double date1, double date2, double x, double y );
183 double iauS06a( double date1, double date2 );
184 double iauSp00( double date1, double date2 );
185 void iauXy06( double date1, double date2, double *x, double *y );
186 void iauXys00a( double date1, double date2, double *x, double *y, double *s );
187 void iauXys00b( double date1, double date2, double *x, double *y, double *s );
188 void iauXys06a( double date1, double date2, double *x, double *y, double *s );
189 
190 /* Astronomy/RotationAndTime */
191 double iauEe00( double date1, double date2, double epsa, double dpsi );
192 double iauEe00a( double date1, double date2 );
193 double iauEe00b( double date1, double date2 );
194 double iauEe06a( double date1, double date2 );
195 double iauEect00( double date1, double date2 );
196 double iauEqeq94( double date1, double date2 );
197 double iauEra00( double dj1, double dj2 );
198 double iauGmst00( double uta, double utb, double tta, double ttb );
199 double iauGmst06( double uta, double utb, double tta, double ttb );
200 double iauGmst82( double dj1, double dj2 );
201 double iauGst00a( double uta, double utb, double tta, double ttb );
202 double iauGst00b( double uta, double utb );
203 double iauGst06( double uta, double utb, double tta, double ttb, double rnpb[3][3] );
204 double iauGst06a( double uta, double utb, double tta, double ttb );
205 double iauGst94( double uta, double utb );
206 
207 /* Astronomy/SpaceMotion */
208 int iauPvstar( double pv[2][3], double *ra, double *dec, double *pmr, double *pmd, double *px, double *rv );
209 int iauStarpv( double ra, double dec, double pmr, double pmd, double px, double rv, double pv[2][3] );
210 
211 /* Astronomy/StarCatalogs */
212 void iauFk52h( double r5, double d5, double dr5, double dd5, double px5, double rv5, double *rh, double *dh,
213  double *drh, double *ddh, double *pxh, double *rvh );
214 void iauFk5hip( double r5h[3][3], double s5h[3] );
215 void iauFk5hz( double r5, double d5, double date1, double date2, double *rh, double *dh );
216 void iauH2fk5( double rh, double dh, double drh, double ddh, double pxh, double rvh, double *r5, double *d5,
217  double *dr5, double *dd5, double *px5, double *rv5 );
218 void iauHfk5z( double rh, double dh, double date1, double date2, double *r5, double *d5, double *dr5, double *dd5 );
219 int iauStarpm( double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b,
220  double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2,
221  double *rv2 );
222 
223 /* Astronomy/EclipticCoordinates */
224 void iauEceq06( double date1, double date2, double dl, double db, double *dr, double *dd );
225 void iauEcm06( double date1, double date2, double rm[3][3] );
226 void iauEqec06( double date1, double date2, double dr, double dd, double *dl, double *db );
227 void iauLteceq( double epj, double dl, double db, double *dr, double *dd );
228 void iauLtecm( double epj, double rm[3][3] );
229 void iauLteqec( double epj, double dr, double dd, double *dl, double *db );
230 
231 /* Astronomy/GalacticCoordinates */
232 void iauG2icrs( double dl, double db, double *dr, double *dd );
233 void iauIcrs2g( double dr, double dd, double *dl, double *db );
234 
235 /* Astronomy/GeodeticGeocentric */
236 int iauEform( int n, double *a, double *f );
237 int iauGc2gd( int n, double xyz[3], double *elong, double *phi, double *height );
238 int iauGc2gde( double a, double f, double xyz[3], double *elong, double *phi, double *height );
239 int iauGd2gc( int n, double elong, double phi, double height, double xyz[3] );
240 int iauGd2gce( double a, double f, double elong, double phi, double height, double xyz[3] );
241 
242 /* Astronomy/Timescales */
243 int iauD2dtf( const char *scale, int ndp, double d1, double d2, int *iy, int *im, int *id, int ihmsf[4] );
244 int iauDat( int iy, int im, int id, double fd, double *deltat );
245 double iauDtdb( double date1, double date2, double ut, double elong, double u, double v );
246 int iauDtf2d( const char *scale, int iy, int im, int id, int ihr, int imn, double sec, double *d1, double *d2 );
247 int iauTaitt( double tai1, double tai2, double *tt1, double *tt2 );
248 int iauTaiut1( double tai1, double tai2, double dta, double *ut11, double *ut12 );
249 int iauTaiutc( double tai1, double tai2, double *utc1, double *utc2 );
250 int iauTcbtdb( double tcb1, double tcb2, double *tdb1, double *tdb2 );
251 int iauTcgtt( double tcg1, double tcg2, double *tt1, double *tt2 );
252 int iauTdbtcb( double tdb1, double tdb2, double *tcb1, double *tcb2 );
253 int iauTdbtt( double tdb1, double tdb2, double dtr, double *tt1, double *tt2 );
254 int iauTttai( double tt1, double tt2, double *tai1, double *tai2 );
255 int iauTttcg( double tt1, double tt2, double *tcg1, double *tcg2 );
256 int iauTttdb( double tt1, double tt2, double dtr, double *tdb1, double *tdb2 );
257 int iauTtut1( double tt1, double tt2, double dt, double *ut11, double *ut12 );
258 int iauUt1tai( double ut11, double ut12, double dta, double *tai1, double *tai2 );
259 int iauUt1tt( double ut11, double ut12, double dt, double *tt1, double *tt2 );
260 int iauUt1utc( double ut11, double ut12, double dut1, double *utc1, double *utc2 );
261 int iauUtctai( double utc1, double utc2, double *tai1, double *tai2 );
262 int iauUtcut1( double utc1, double utc2, double dut1, double *ut11, double *ut12 );
263 
264 /* VectorMatrix/AngleOps */
265 void iauA2af( int ndp, double angle, char *sign, int idmsf[4] );
266 void iauA2tf( int ndp, double angle, char *sign, int ihmsf[4] );
267 int iauAf2a( char s, int ideg, int iamin, double asec, double *rad );
268 double iauAnp( double a );
269 double iauAnpm( double a );
270 void iauD2tf( int ndp, double days, char *sign, int ihmsf[4] );
271 int iauTf2a( char s, int ihour, int imin, double sec, double *rad );
272 int iauTf2d( char s, int ihour, int imin, double sec, double *days );
273 
274 /* VectorMatrix/BuildRotations */
275 void iauRx( double phi, double r[3][3] );
276 void iauRy( double theta, double r[3][3] );
277 void iauRz( double psi, double r[3][3] );
278 
279 /* VectorMatrix/CopyExtendExtract */
280 void iauCp( double p[3], double c[3] );
281 void iauCpv( double pv[2][3], double c[2][3] );
282 void iauCr( double r[3][3], double c[3][3] );
283 void iauP2pv( double p[3], double pv[2][3] );
284 void iauPv2p( double pv[2][3], double p[3] );
285 
286 /* VectorMatrix/Initialization */
287 void iauIr( double r[3][3] );
288 void iauZp( double p[3] );
289 void iauZpv( double pv[2][3] );
290 void iauZr( double r[3][3] );
291 
292 /* VectorMatrix/MatrixOps */
293 void iauRxr( double a[3][3], double b[3][3], double atb[3][3] );
294 void iauTr( double r[3][3], double rt[3][3] );
295 
296 /* VectorMatrix/MatrixVectorProducts */
297 void iauRxp( double r[3][3], double p[3], double rp[3] );
298 void iauRxpv( double r[3][3], double pv[2][3], double rpv[2][3] );
299 void iauTrxp( double r[3][3], double p[3], double trp[3] );
300 void iauTrxpv( double r[3][3], double pv[2][3], double trpv[2][3] );
301 
302 /* VectorMatrix/RotationVectors */
303 void iauRm2v( double r[3][3], double w[3] );
304 void iauRv2m( double w[3], double r[3][3] );
305 
306 /* VectorMatrix/SeparationAndAngle */
307 double iauPap( double a[3], double b[3] );
308 double iauPas( double al, double ap, double bl, double bp );
309 double iauSepp( double a[3], double b[3] );
310 double iauSeps( double al, double ap, double bl, double bp );
311 
312 /* VectorMatrix/SphericalCartesian */
313 void iauC2s( double p[3], double *theta, double *phi );
314 void iauP2s( double p[3], double *theta, double *phi, double *r );
315 void iauPv2s( double pv[2][3], double *theta, double *phi, double *r, double *td, double *pd, double *rd );
316 void iauS2c( double theta, double phi, double c[3] );
317 void iauS2p( double theta, double phi, double r, double p[3] );
318 void iauS2pv( double theta, double phi, double r, double td, double pd, double rd, double pv[2][3] );
319 
320 /* VectorMatrix/VectorOps */
321 double iauPdp( double a[3], double b[3] );
322 double iauPm( double p[3] );
323 void iauPmp( double a[3], double b[3], double amb[3] );
324 void iauPn( double p[3], double *r, double u[3] );
325 void iauPpp( double a[3], double b[3], double apb[3] );
326 void iauPpsp( double a[3], double s, double b[3], double apsb[3] );
327 void iauPvdpv( double a[2][3], double b[2][3], double adb[2] );
328 void iauPvm( double pv[2][3], double *r, double *s );
329 void iauPvmpv( double a[2][3], double b[2][3], double amb[2][3] );
330 void iauPvppv( double a[2][3], double b[2][3], double apb[2][3] );
331 void iauPvu( double dt, double pv[2][3], double upv[2][3] );
332 void iauPvup( double dt, double pv[2][3], double p[3] );
333 void iauPvxpv( double a[2][3], double b[2][3], double axb[2][3] );
334 void iauPxp( double a[3], double b[3], double axb[3] );
335 void iauS2xpv( double s1, double s2, double pv[2][3], double spv[2][3] );
336 void iauSxp( double s, double p[3], double sp[3] );
337 void iauSxpv( double s, double pv[2][3], double spv[2][3] );
338 
339 #ifdef __cplusplus
340 }
341 #endif
342 
343 #endif
344 
345 /*----------------------------------------------------------------------
346 **
347 ** Copyright (C) 2017
348 ** Standards Of Fundamental Astronomy Board
349 ** of the International Astronomical Union.
350 **
351 ** =====================
352 ** SOFA Software License
353 ** =====================
354 **
355 ** NOTICE TO USER:
356 **
357 ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND
358 ** CONDITIONS WHICH APPLY TO ITS USE.
359 **
360 ** 1. The Software is owned by the IAU SOFA Board ("SOFA").
361 **
362 ** 2. Permission is granted to anyone to use the SOFA software for any
363 ** purpose, including commercial applications, free of charge and
364 ** without payment of royalties, subject to the conditions and
365 ** restrictions listed below.
366 **
367 ** 3. You (the user) may copy and distribute SOFA source code to others,
368 ** and use and adapt its code and algorithms in your own software,
369 ** on a world-wide, royalty-free basis. That portion of your
370 ** distribution that does not consist of intact and unchanged copies
371 ** of SOFA source code files is a "derived work" that must comply
372 ** with the following requirements:
373 **
374 ** a) Your work shall be marked or carry a statement that it
375 ** (i) uses routines and computations derived by you from
376 ** software provided by SOFA under license to you; and
377 ** (ii) does not itself constitute software provided by and/or
378 ** endorsed by SOFA.
379 **
380 ** b) The source code of your derived work must contain descriptions
381 ** of how the derived work is based upon, contains and/or differs
382 ** from the original SOFA software.
383 **
384 ** c) The names of all routines in your derived work shall not
385 ** include the prefix "iau" or "sofa" or trivial modifications
386 ** thereof such as changes of case.
387 **
388 ** d) The origin of the SOFA components of your derived work must
389 ** not be misrepresented; you must not claim that you wrote the
390 ** original software, nor file a patent application for SOFA
391 ** software or algorithms embedded in the SOFA software.
392 **
393 ** e) These requirements must be reproduced intact in any source
394 ** distribution and shall apply to anyone to whom you have
395 ** granted a further right to modify the source code of your
396 ** derived work.
397 **
398 ** Note that, as originally distributed, the SOFA software is
399 ** intended to be a definitive implementation of the IAU standards,
400 ** and consequently third-party modifications are discouraged. All
401 ** variations, no matter how minor, must be explicitly marked as
402 ** such, as explained above.
403 **
404 ** 4. You shall not cause the SOFA software to be brought into
405 ** disrepute, either by misuse, or use for inappropriate tasks, or
406 ** by inappropriate modification.
407 **
408 ** 5. The SOFA software is provided "as is" and SOFA makes no warranty
409 ** as to its use or performance. SOFA does not and cannot warrant
410 ** the performance or results which the user may obtain by using the
411 ** SOFA software. SOFA makes no warranties, express or implied, as
412 ** to non-infringement of third party rights, merchantability, or
413 ** fitness for any particular purpose. In no event will SOFA be
414 ** liable to the user for any consequential, incidental, or special
415 ** damages, including any lost profits or lost savings, even if a
416 ** SOFA representative has been advised of such damages, or for any
417 ** claim by any third party.
418 **
419 ** 6. The provision of any version of the SOFA software under the terms
420 ** and conditions specified herein does not imply that future
421 ** versions will also be made available under the same terms and
422 ** conditions.
423 *
424 ** In any published work or commercial product which uses the SOFA
425 ** software directly, acknowledgement (see www.iausofa.org) is
426 ** appreciated.
427 **
428 ** Correspondence concerning SOFA software should be addressed as
429 ** follows:
430 **
431 ** By email: sofa@ukho.gov.uk
432 ** By post: IAU SOFA Center
433 ** HM Nautical Almanac Office
434 ** UK Hydrographic Office
435 ** Admiralty Way, Taunton
436 ** Somerset, TA1 2DN
437 ** United Kingdom
438 **
439 **--------------------------------------------------------------------*/
int iauStarpm(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2)
void iauPvm(double pv[2][3], double *r, double *s)
void iauPvup(double dt, double pv[2][3], double p[3])
void iauRv2m(double w[3], double r[3][3])
double iauEpb(double dj1, double dj2)
int iauTtut1(double tt1, double tt2, double dt, double *ut11, double *ut12)
int iauD2dtf(const char *scale, int ndp, double d1, double d2, int *iy, int *im, int *id, int ihmsf[4])
void iauPn00a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
double iauGst06(double uta, double utb, double tta, double ttb, double rnpb[3][3])
void iauPnm00a(double date1, double date2, double rbpn[3][3])
void iauPom00(double xp, double yp, double sp, double rpom[3][3])
void iauAtciqz(double rc, double dc, iauASTROM *astrom, double *ri, double *di)
void iauPn06(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
void iauRz(double psi, double r[3][3])
int iauTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2)
void iauFw2xy(double gamb, double phib, double psi, double eps, double *x, double *y)
int iauTcgtt(double tcg1, double tcg2, double *tt1, double *tt2)
void iauC2txy(double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp, double rc2t[3][3])
double iauObl80(double date1, double date2)
double iauEe00b(double date1, double date2)
void iauLdn(int n, iauLDBODY b[], double ob[3], double sc[3], double sn[3])
double iauEo06a(double date1, double date2)
void iauRy(double theta, double r[3][3])
void iauRm2v(double r[3][3], double w[3])
int iauPlan94(double date1, double date2, int np, double pv[2][3])
void iauC2teqx(double rbpn[3][3], double gst, double rpom[3][3], double rc2t[3][3])
void iauPvdpv(double a[2][3], double b[2][3], double adb[2])
double iauFaju03(double t)
void iauP2pv(double p[3], double pv[2][3])
double iauFae03(double t)
void iauC2i06a(double date1, double date2, double rc2i[3][3])
void iauXy06(double date1, double date2, double *x, double *y)
int iauAtio13(double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob)
double iauS06(double date1, double date2, double x, double y)
void iauNut00a(double date1, double date2, double *dpsi, double *deps)
void iauS2c(double theta, double phi, double c[3])
void iauAtci13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2, double *ri, double *di, double *eo)
void iauC2ibpn(double date1, double date2, double rbpn[3][3], double rc2i[3][3])
void iauNumat(double epsa, double dpsi, double deps, double rmatn[3][3])
void iauAtciq(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, double *ri, double *di)
int iauGd2gc(int n, double elong, double phi, double height, double xyz[3])
double iauPas(double al, double ap, double bl, double bp)
void iauPn(double p[3], double *r, double u[3])
double iauS00a(double date1, double date2)
void iauAtoiq(const char *type, double ob1, double ob2, iauASTROM *astrom, double *ri, double *di)
double iauGst00a(double uta, double utb, double tta, double ttb)
int iauGc2gde(double a, double f, double xyz[3], double *elong, double *phi, double *height)
void iauPv2p(double pv[2][3], double p[3])
void iauNutm80(double date1, double date2, double rmatn[3][3])
void iauC2i00a(double date1, double date2, double rc2i[3][3])
void iauAticq(double ri, double di, iauASTROM *astrom, double *rc, double *dc)
void iauXys00b(double date1, double date2, double *x, double *y, double *s)
void iauP2s(double p[3], double *theta, double *phi, double *r)
void iauPn00b(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
double iauPap(double a[3], double b[3])
void iauPr00(double date1, double date2, double *dpsipr, double *depspr)
void iauPmat76(double date1, double date2, double rmatp[3][3])
void iauAper(double theta, iauASTROM *astrom)
void iauLteqec(double epj, double dr, double dd, double *dl, double *db)
void iauPnm00b(double date1, double date2, double rbpn[3][3])
int iauJd2cal(double dj1, double dj2, int *iy, int *im, int *id, double *fd)
void iauPvxpv(double a[2][3], double b[2][3], double axb[2][3])
void iauCr(double r[3][3], double c[3][3])
double iauEra00(double dj1, double dj2)
void iauPvu(double dt, double pv[2][3], double upv[2][3])
void iauSxp(double s, double p[3], double sp[3])
int iauGd2gce(double a, double f, double elong, double phi, double height, double xyz[3])
double iauGmst06(double uta, double utb, double tta, double ttb)
int iauUt1tai(double ut11, double ut12, double dta, double *tai1, double *tai2)
double iauGmst00(double uta, double utb, double tta, double ttb)
void iauHfk5z(double rh, double dh, double date1, double date2, double *r5, double *d5, double *dr5, double *dd5)
double iauFasa03(double t)
double iauFaom03(double t)
int iauUtctai(double utc1, double utc2, double *tai1, double *tai2)
void iauPvppv(double a[2][3], double b[2][3], double apb[2][3])
void iauLtpb(double epj, double rpb[3][3])
void iauApcs13(double date1, double date2, double pv[2][3], iauASTROM *astrom)
double iauGmst82(double dj1, double dj2)
void iauLteceq(double epj, double dl, double db, double *dr, double *dd)
void iauAb(double pnat[3], double v[3], double s, double bm1, double ppr[3])
int iauEform(int n, double *a, double *f)
void iauCpv(double pv[2][3], double c[2][3])
void iauD2tf(int ndp, double days, char *sign, int ihmsf[4])
double iauFama03(double t)
int iauTdbtt(double tdb1, double tdb2, double dtr, double *tt1, double *tt2)
void iauBpn2xy(double rbpn[3][3], double *x, double *y)
double iauFalp03(double t)
void iauCp(double p[3], double c[3])
void iauNut00b(double date1, double date2, double *dpsi, double *deps)
double iauEe00a(double date1, double date2)
double iauEors(double rnpb[3][3], double s)
void iauPn06a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
void iauPfw06(double date1, double date2, double *gamb, double *phib, double *psib, double *epsa)
void iauEcm06(double date1, double date2, double rm[3][3])
double iauFapa03(double t)
int iauAtoc13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *rc, double *dc)
double iauEe06a(double date1, double date2)
int iauUt1utc(double ut11, double ut12, double dut1, double *utc1, double *utc2)
double iauS00b(double date1, double date2)
void iauPmp(double a[3], double b[3], double amb[3])
void iauRefco(double phpa, double tc, double rh, double wl, double *refa, double *refb)
void iauNum06a(double date1, double date2, double rmatn[3][3])
double iauSp00(double date1, double date2)
void iauApcg(double date1, double date2, double ebpv[2][3], double ehp[3], iauASTROM *astrom)
int iauUtcut1(double utc1, double utc2, double dut1, double *ut11, double *ut12)
void iauApcg13(double date1, double date2, iauASTROM *astrom)
int iauAtco13(double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob, double *eo)
int iauTttcg(double tt1, double tt2, double *tcg1, double *tcg2)
void iauAticqn(double ri, double di, iauASTROM *astrom, int n, iauLDBODY b[], double *rc, double *dc)
void iauFw2m(double gamb, double phib, double psi, double eps, double r[3][3])
double iauGst06a(double uta, double utb, double tta, double ttb)
void iauC2ixys(double x, double y, double s, double rc2i[3][3])
void iauC2tpe(double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp, double rc2t[3][3])
int iauTf2d(char s, int ihour, int imin, double sec, double *days)
void iauFk5hip(double r5h[3][3], double s5h[3])
double iauFave03(double t)
void iauS2pv(double theta, double phi, double r, double td, double pd, double rd, double pv[2][3])
void iauIr(double r[3][3])
void iauH2fk5(double rh, double dh, double drh, double ddh, double pxh, double rvh, double *r5, double *d5, double *dr5, double *dd5, double *px5, double *rv5)
void iauEceq06(double date1, double date2, double dl, double db, double *dr, double *dd)
void iauApcs(double date1, double date2, double pv[2][3], double ebpv[2][3], double ehp[3], iauASTROM *astrom)
void iauNut06a(double date1, double date2, double *dpsi, double *deps)
void iauC2i00b(double date1, double date2, double rc2i[3][3])
double iauEpj(double dj1, double dj2)
void iauPvmpv(double a[2][3], double b[2][3], double amb[2][3])
void iauApci13(double date1, double date2, iauASTROM *astrom, double *eo)
void iauFk5hz(double r5, double d5, double date1, double date2, double *rh, double *dh)
void iauFk52h(double r5, double d5, double dr5, double dd5, double px5, double rv5, double *rh, double *dh, double *drh, double *ddh, double *pxh, double *rvh)
double iauGst94(double uta, double utb)
void iauPpsp(double a[3], double s, double b[3], double apsb[3])
void iauXys00a(double date1, double date2, double *x, double *y, double *s)
void iauZp(double p[3])
void iauAtciqn(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, int n, iauLDBODY b[], double *ri, double *di)
void iauLtp(double epj, double rp[3][3])
double iauS06a(double date1, double date2)
void iauNum00a(double date1, double date2, double rmatn[3][3])
void iauRx(double phi, double r[3][3])
int iauTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2)
void iauPnm80(double date1, double date2, double rmatpn[3][3])
void iauSxpv(double s, double pv[2][3], double spv[2][3])
void iauLd(double bm, double p[3], double q[3], double e[3], double em, double dlim, double p1[3])
void iauC2t06a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3])
double iauObl06(double date1, double date2)
double iauAnp(double a)
int iauEpv00(double date1, double date2, double pvh[2][3], double pvb[2][3])
double iauEe00(double date1, double date2, double epsa, double dpsi)
int iauPvstar(double pv[2][3], double *ra, double *dec, double *pmr, double *pmd, double *px, double *rv)
int iauStarpv(double ra, double dec, double pmr, double pmd, double px, double rv, double pv[2][3])
double iauAnpm(double a)
void iauLtpequ(double epj, double veq[3])
double iauEect00(double date1, double date2)
void iauPn00(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3])
void iauZpv(double pv[2][3])
double iauSeps(double al, double ap, double bl, double bp)
void iauApci(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, iauASTROM *astrom)
void iauP06e(double date1, double date2, double *eps0, double *psia, double *oma, double *bpa, double *bqa, double *pia, double *bpia, double *epsa, double *chia, double *za, double *zetaa, double *thetaa, double *pa, double *gam, double *phi, double *psi)
double iauS00(double date1, double date2, double x, double y)
int iauTttdb(double tt1, double tt2, double dtr, double *tdb1, double *tdb2)
double iauSepp(double a[3], double b[3])
void iauC2s(double p[3], double *theta, double *phi)
void iauPmat00(double date1, double date2, double rbp[3][3])
void iauIcrs2g(double dr, double dd, double *dl, double *db)
double iauEqeq94(double date1, double date2)
Definition: sofam.h:26
double iauPdp(double a[3], double b[3])
void iauXys06a(double date1, double date2, double *x, double *y, double *s)
int iauTaiut1(double tai1, double tai2, double dta, double *ut11, double *ut12)
void iauPxp(double a[3], double b[3], double axb[3])
void iauBp00(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3])
void iauPmpx(double rc, double dc, double pr, double pd, double px, double rv, double pmt, double pob[3], double pco[3])
int iauUt1tt(double ut11, double ut12, double dt, double *tt1, double *tt2)
void iauZr(double r[3][3])
double iauFaf03(double t)
void iauAtic13(double ri, double di, double date1, double date2, double *rc, double *dc, double *eo)
void iauS2p(double theta, double phi, double r, double p[3])
void iauApio(double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, iauASTROM *astrom)
void iauRxr(double a[3][3], double b[3][3], double atb[3][3])
void iauEpb2jd(double epb, double *djm0, double *djm)
void iauG2icrs(double dl, double db, double *dr, double *dd)
void iauBi00(double *dpsibi, double *depsbi, double *dra)
int iauTf2a(char s, int ihour, int imin, double sec, double *rad)
void iauPpp(double a[3], double b[3], double apb[3])
int iauJdcalf(int ndp, double dj1, double dj2, int iymdf[4])
int iauTttai(double tt1, double tt2, double *tai1, double *tai2)
int iauGc2gd(int n, double xyz[3], double *elong, double *phi, double *height)
void iauA2af(int ndp, double angle, char *sign, int idmsf[4])
void iauPrec76(double date01, double date02, double date11, double date12, double *zeta, double *z, double *theta)
int iauApco13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom, double *eo)
int iauAtoi13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *ri, double *di)
int iauAf2a(char s, int ideg, int iamin, double asec, double *rad)
int iauDtf2d(const char *scale, int iy, int im, int id, int ihr, int imn, double sec, double *d1, double *d2)
int iauTaitt(double tai1, double tai2, double *tt1, double *tt2)
void iauLtpecl(double epj, double vec[3])
void iauRxpv(double r[3][3], double pv[2][3], double rpv[2][3])
void iauC2tcio(double rc2i[3][3], double era, double rpom[3][3], double rc2t[3][3])
double iauFal03(double t)
double iauFaur03(double t)
void iauNut80(double date1, double date2, double *dpsi, double *deps)
int iauPmsafe(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2)
void iauA2tf(int ndp, double angle, char *sign, int ihmsf[4])
double iauGst00b(double uta, double utb)
void iauEqec06(double date1, double date2, double dr, double dd, double *dl, double *db)
int iauApio13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom)
void iauPb06(double date1, double date2, double *bzeta, double *bz, double *btheta)
void iauApco(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, iauASTROM *astrom)
int iauDat(int iy, int im, int id, double fd, double *deltat)
double iauFad03(double t)
void iauAper13(double ut11, double ut12, iauASTROM *astrom)
double iauFane03(double t)
void iauNum00b(double date1, double date2, double rmatn[3][3])
void iauLdsun(double p[3], double e[3], double em, double p1[3])
void iauLtecm(double epj, double rm[3][3])
void iauPnm06a(double date1, double date2, double rnpb[3][3])
int iauTaiutc(double tai1, double tai2, double *utc1, double *utc2)
double iauFame03(double t)
void iauTrxp(double r[3][3], double p[3], double trp[3])
void iauTrxpv(double r[3][3], double pv[2][3], double trpv[2][3])
double iauPm(double p[3])
void iauC2t00a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3])
double iauDtdb(double date1, double date2, double ut, double elong, double u, double v)
int iauCal2jd(int iy, int im, int id, double *djm0, double *djm)
void iauBp06(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3])
void iauRxp(double r[3][3], double p[3], double rp[3])
void iauPmat06(double date1, double date2, double rbp[3][3])
void iauAtioq(double ri, double di, iauASTROM *astrom, double *aob, double *zob, double *hob, double *dob, double *rob)
void iauPvtob(double elong, double phi, double height, double xp, double yp, double sp, double theta, double pv[2][3])
void iauC2ixy(double date1, double date2, double x, double y, double rc2i[3][3])
void iauEpj2jd(double epj, double *djm0, double *djm)
void iauS2xpv(double s1, double s2, double pv[2][3], double spv[2][3])
void iauC2t00b(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3])
Definition: sofam.h:48
void iauTr(double r[3][3], double rt[3][3])
void iauPv2s(double pv[2][3], double *theta, double *phi, double *r, double *td, double *pd, double *rd)