00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef SLALIBHDEF
00019 #define SLALIBHDEF
00020
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024
00025 #include <math.h>
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 void slaAddet ( double rm, double dm, double eq, double *rc, double *dc );
00040
00041 void slaAfin ( char *string, int *iptr, float *a, int *j );
00042
00043 double slaAirmas ( double zd );
00044
00045 void slaAltaz ( double ha, double dec, double phi,
00046 double *az, double *azd, double *azdd,
00047 double *el, double *eld, double *eldd,
00048 double *pa, double *pad, double *padd );
00049
00050 void slaAmp ( double ra, double da, double date, double eq,
00051 double *rm, double *dm );
00052
00053 void slaAmpqk ( double ra, double da, double amprms[21],
00054 double *rm, double *dm );
00055
00056 void slaAop ( double rap, double dap, double date, double dut,
00057 double elongm, double phim, double hm, double xp,
00058 double yp, double tdk, double pmb, double rh,
00059 double wl, double tlr,
00060 double *aob, double *zob, double *hob,
00061 double *dob, double *rob );
00062
00063 void slaAoppa ( double date, double dut, double elongm, double phim,
00064 double hm, double xp, double yp, double tdk, double pmb,
00065 double rh, double wl, double tlr, double aoprms[14] );
00066
00067 void slaAoppat ( double date, double aoprms[14] );
00068
00069 void slaAopqk ( double rap, double dap, double aoprms[14],
00070 double *aob, double *zob, double *hob,
00071 double *dob, double *rob );
00072
00073 void slaAtmdsp ( double tdk, double pmb, double rh, double wl1,
00074 double a1, double b1, double wl2, double *a2, double *b2 );
00075
00076 void slaAv2m ( float axvec[3], float rmat[3][3] );
00077
00078 float slaBear ( float a1, float b1, float a2, float b2 );
00079
00080 void slaCaf2r ( int ideg, int iamin, float asec, float *rad, int *j );
00081
00082 void slaCaldj ( int iy, int im, int id, double *djm, int *j );
00083
00084 void slaCalyd ( int iy, int im, int id, int *ny, int *nd, int *j );
00085
00086 void slaCc2s ( float v[3], float *a, float *b );
00087
00088 void slaCc62s ( float v[6], float *a, float *b, float *r,
00089 float *ad, float *bd, float *rd );
00090
00091 void slaCd2tf ( int ndp, float days, char *sign, int ihmsf[4] );
00092
00093 void slaCldj ( int iy, int im, int id, double *djm, int *j );
00094
00095 void slaClyd ( int iy, int im, int id, int *ny, int *nd, int *jstat );
00096
00097 void slaCombn ( int nsel, int ncand, int list[], int *j );
00098
00099 void slaCr2af ( int ndp, float angle, char *sign, int idmsf[4] );
00100
00101 void slaCr2tf ( int ndp, float angle, char *sign, int ihmsf[4] );
00102
00103 void slaCs2c ( float a, float b, float v[3] );
00104
00105 void slaCs2c6 ( float a, float b, float r, float ad,
00106 float bd, float rd, float v[6] );
00107
00108 void slaCtf2d ( int ihour, int imin, float sec, float *days, int *j );
00109
00110 void slaCtf2r ( int ihour, int imin, float sec, float *rad, int *j );
00111
00112 void slaDaf2r ( int ideg, int iamin, double asec, double *rad, int *j );
00113
00114 void slaDafin ( char *string, int *iptr, double *a, int *j );
00115
00116 double slaDat ( double dju );
00117
00118 void slaDav2m ( double axvec[3], double rmat[3][3] );
00119
00120 double slaDbear ( double a1, double b1, double a2, double b2 );
00121
00122 void slaDbjin ( char *string, int *nstrt,
00123 double *dreslt, int *jf1, int *jf2 );
00124
00125 void slaDc62s ( double v[6], double *a, double *b, double *r,
00126 double *ad, double *bd, double *rd );
00127
00128 void slaDcc2s ( double v[3], double *a, double *b );
00129
00130 void slaDcmpf ( double coeffs[6], double *xz, double *yz, double *xs,
00131 double *ys, double *perp, double *orient );
00132
00133 void slaDcs2c ( double a, double b, double v[3] );
00134
00135 void slaDd2tf ( int ndp, double days, char *sign, int ihmsf[4] );
00136
00137 void slaDe2h ( double ha, double dec, double phi,
00138 double *az, double *el );
00139
00140 void slaDeuler ( char *order, double phi, double theta, double psi,
00141 double rmat[3][3] );
00142
00143 void slaDfltin ( char *string, int *nstrt, double *dreslt, int *jflag );
00144
00145 void slaDh2e ( double az, double el, double phi, double *ha, double *dec);
00146
00147 void slaDimxv ( double dm[3][3], double va[3], double vb[3] );
00148
00149 void slaDjcal ( int ndp, double djm, int iymdf[4], int *j );
00150
00151 void slaDjcl ( double djm, int *iy, int *im, int *id, double *fd, int *j );
00152
00153 void slaDm2av ( double rmat[3][3], double axvec[3] );
00154
00155 void slaDmat ( int n, double *a, double *y, double *d, int *jf, int *iw );
00156
00157 void slaDmoon ( double date, double pv[6] );
00158
00159 void slaDmxm ( double a[3][3], double b[3][3], double c[3][3] );
00160
00161 void slaDmxv ( double dm[3][3], double va[3], double vb[3] );
00162
00163 double slaDpav ( double v1[3], double v2[3] );
00164
00165 void slaDr2af ( int ndp, double angle, char *sign, int idmsf[4] );
00166
00167 void slaDr2tf ( int ndp, double angle, char *sign, int ihmsf[4] );
00168
00169 double slaDrange ( double angle );
00170
00171 double slaDranrm ( double angle );
00172
00173 void slaDs2c6 ( double a, double b, double r, double ad, double bd,
00174 double rd, double v[6] );
00175
00176 void slaDs2tp ( double ra, double dec, double raz, double decz,
00177 double *xi, double *eta, int *j );
00178
00179 double slaDsep ( double a1, double b1, double a2, double b2 );
00180
00181 double slaDsepv ( double v1[3], double v2[3] );
00182
00183 double slaDt ( double epoch );
00184
00185 void slaDtf2d ( int ihour, int imin, double sec, double *days, int *j );
00186
00187 void slaDtf2r ( int ihour, int imin, double sec, double *rad, int *j );
00188
00189 void slaDtp2s ( double xi, double eta, double raz, double decz,
00190 double *ra, double *dec );
00191
00192 void slaDtp2v ( double xi, double eta, double v0[3], double v[3] );
00193
00194 void slaDtps2c ( double xi, double eta, double ra, double dec,
00195 double *raz1, double *decz1,
00196 double *raz2, double *decz2, int *n );
00197
00198 void slaDtpv2c ( double xi, double eta, double v[3],
00199 double v01[3], double v02[3], int *n );
00200
00201 double slaDtt ( double dju );
00202
00203 void slaDv2tp ( double v[3], double v0[3], double *xi, double *eta, int *j );
00204
00205 double slaDvdv ( double va[3], double vb[3] );
00206
00207 void slaDvn ( double v[3], double uv[3], double *vm );
00208
00209 void slaDvxv ( double va[3], double vb[3], double vc[3] );
00210
00211 void slaE2h ( float ha, float dec, float phi, float *az, float *el );
00212
00213 void slaEarth ( int iy, int id, float fd, float posvel[6] );
00214
00215 void slaEcleq ( double dl, double db, double date, double *dr, double *dd );
00216
00217 void slaEcmat ( double date, double rmat[3][3] );
00218
00219 void slaEcor ( float rm, float dm, int iy, int id, float fd,
00220 float *rv, float *tl );
00221
00222 void slaEg50 ( double dr, double dd, double *dl, double *db );
00223
00224 void slaEl2ue ( double date, int jform, double epoch, double orbinc,
00225 double anode, double perih, double aorq, double e,
00226 double aorl, double dm, double u[], int *jstat );
00227
00228 double slaEpb ( double date );
00229
00230 double slaEpb2d ( double epb );
00231
00232 double slaEpco ( char k0, char k, double e );
00233
00234 double slaEpj ( double date );
00235
00236 double slaEpj2d ( double epj );
00237
00238 void slaEqecl ( double dr, double dd, double date, double *dl, double *db );
00239
00240 double slaEqeqx ( double date );
00241
00242 void slaEqgal ( double dr, double dd, double *dl, double *db );
00243
00244 void slaEtrms ( double ep, double ev[3] );
00245
00246 void slaEuler ( char *order, float phi, float theta, float psi,
00247 float rmat[3][3] );
00248
00249 void slaEvp ( double date, double deqx,
00250 double dvb[3], double dpb[3],
00251 double dvh[3], double dph[3] );
00252
00253 void slaFitxy ( int itype, int np, double xye[][2], double xym[][2],
00254 double coeffs[6], int *j );
00255
00256 void slaFk425 ( double r1950, double d1950, double dr1950,
00257 double dd1950, double p1950, double v1950,
00258 double *r2000, double *d2000, double *dr2000,
00259 double *dd2000, double *p2000, double *v2000 );
00260
00261 void slaFk45z ( double r1950, double d1950, double bepoch,
00262 double *r2000, double *d2000 );
00263
00264 void slaFk524 ( double r2000, double d2000, double dr2000,
00265 double dd2000, double p2000, double v2000,
00266 double *r1950, double *d1950, double *dr1950,
00267 double *dd1950, double *p1950, double *v1950 );
00268
00269 void slaFk52h ( double r5, double d5, double dr5, double dd5,
00270 double *dr, double *dh, double *drh, double *ddh );
00271
00272 void slaFk54z ( double r2000, double d2000, double bepoch,
00273 double *r1950, double *d1950,
00274 double *dr1950, double *dd1950 );
00275
00276 void slaFk5hz ( double r5, double d5, double epoch,
00277 double *rh, double *dh );
00278
00279 void slaFlotin ( char *string, int *nstrt, float *reslt, int *jflag );
00280
00281 void slaGaleq ( double dl, double db, double *dr, double *dd );
00282
00283 void slaGalsup ( double dl, double db, double *dsl, double *dsb );
00284
00285 void slaGe50 ( double dl, double db, double *dr, double *dd );
00286
00287 void slaGeoc ( double p, double h, double *r, double *z );
00288
00289 double slaGmst ( double ut1 );
00290
00291 double slaGmsta ( double date, double ut1 );
00292
00293 void slaH2e ( float az, float el, float phi, float *ha, float *dec );
00294
00295 void slaH2fk5 ( double dr, double dh, double drh, double ddh,
00296 double *r5, double *d5, double *dr5, double *dd5 );
00297
00298 void slaHfk5z ( double rh, double dh, double epoch,
00299 double *r5, double *d5, double *dr5, double *dd5 );
00300
00301 void slaImxv ( float rm[3][3], float va[3], float vb[3] );
00302
00303 void slaIntin ( char *string, int *nstrt, long *ireslt, int *jflag );
00304
00305 void slaInvf ( double fwds[6], double bkwds[6], int *j );
00306
00307 void slaKbj ( int jb, double e, char *k, int *j );
00308
00309 void slaM2av ( float rmat[3][3], float axvec[3] );
00310
00311 void slaMap ( double rm, double dm, double pr, double pd,
00312 double px, double rv, double eq, double date,
00313 double *ra, double *da );
00314
00315 void slaMappa ( double eq, double date, double amprms[21] );
00316
00317 void slaMapqk ( double rm, double dm, double pr, double pd,
00318 double px, double rv, double amprms[21],
00319 double *ra, double *da );
00320
00321 void slaMapqkz ( double rm, double dm, double amprms[21],
00322 double *ra, double *da );
00323
00324 void slaMoon ( int iy, int id, float fd, float posvel[6] );
00325
00326 void slaMxm ( float a[3][3], float b[3][3], float c[3][3] );
00327
00328 void slaMxv ( float rm[3][3], float va[3], float vb[3] );
00329
00330 void slaNut ( double date, double rmatn[3][3] );
00331
00332 void slaNutc ( double date, double *dpsi, double *deps, double *eps0 );
00333
00334 void slaOap ( char *type, double ob1, double ob2, double date,
00335 double dut, double elongm, double phim, double hm,
00336 double xp, double yp, double tdk, double pmb,
00337 double rh, double wl, double tlr,
00338 double *rap, double *dap );
00339
00340 void slaOapqk ( char *type, double ob1, double ob2, double aoprms[14],
00341 double *rap, double *dap );
00342
00343 void slaObs ( int n, char *c, char *name, double *w, double *p, double *h );
00344
00345 double slaPa ( double ha, double dec, double phi );
00346
00347 double slaPav ( float v1[3], float v2[3] );
00348
00349 void slaPcd ( double disco, double *x, double *y );
00350
00351 void slaPda2h ( double p, double d, double a,
00352 double *h1, int *j1, double *h2, int *j2 );
00353
00354 void slaPdq2h ( double p, double d, double q,
00355 double *h1, int *j1, double *h2, int *j2 );
00356
00357 void slaPermut ( int n, int istate[], int iorder[], int *j );
00358
00359 void slaPertel (int jform, double date0, double date1,
00360 double epoch0, double orbi0, double anode0,
00361 double perih0, double aorq0, double e0, double am0,
00362 double *epoch1, double *orbi1, double *anode1,
00363 double *perih1, double *aorq1, double *e1, double *am1,
00364 int *jstat );
00365
00366 void slaPertue ( double date, double u[], int *jstat );
00367
00368 void slaPlanel ( double date, int jform, double epoch, double orbinc,
00369 double anode, double perih, double aorq, double e,
00370 double aorl, double dm, double pv[6], int *jstat );
00371
00372 void slaPlanet ( double date, int np, double pv[6], int *j );
00373
00374 void slaPlante ( double date, double elong, double phi, int jform,
00375 double epoch, double orbinc, double anode, double perih,
00376 double aorq, double e, double aorl, double dm,
00377 double *ra, double *dec, double *r, int *jstat );
00378
00379 void slaPm ( double r0, double d0, double pr, double pd,
00380 double px, double rv, double ep0, double ep1,
00381 double *r1, double *d1 );
00382
00383 void slaPolmo ( double elongm, double phim, double xp, double yp,
00384 double *elong, double *phi, double *daz );
00385
00386 void slaPrebn ( double bep0, double bep1, double rmatp[3][3] );
00387
00388 void slaPrec ( double ep0, double ep1, double rmatp[3][3] );
00389
00390 void slaPrecl ( double ep0, double ep1, double rmatp[3][3] );
00391
00392 void slaPreces ( char sys[3], double ep0, double ep1,
00393 double *ra, double *dc );
00394
00395 void slaPrenut ( double epoch, double date, double rmatpn[3][3] );
00396
00397 void slaPv2el ( double pv[], double date, double pmass, int jformr,
00398 int *jform, double *epoch, double *orbinc,
00399 double *anode, double *perih, double *aorq, double *e,
00400 double *aorl, double *dm, int *jstat );
00401
00402 void slaPv2ue ( double pv[], double date, double pmass,
00403 double u[], int *jstat );
00404
00405 void slaPvobs ( double p, double h, double stl, double pv[6] );
00406
00407 void slaPxy ( int np, double xye[][2], double xym[][2],
00408 double coeffs[6],
00409 double xyp[][2], double *xrms, double *yrms, double *rrms );
00410
00411 float slaRange ( float angle );
00412
00413 float slaRanorm ( float angle );
00414
00415 double slaRcc ( double tdb, double ut1, double wl, double u, double v );
00416
00417 void slaRdplan ( double date, int np, double elong, double phi,
00418 double *ra, double *dec, double *diam );
00419
00420 void slaRefco ( double hm, double tdk, double pmb, double rh,
00421 double wl, double phi, double tlr, double eps,
00422 double *refa, double *refb );
00423
00424 void slaRefcoq ( double tdk, double pmb, double rh, double wl,
00425 double *refa, double *refb );
00426
00427 void slaRefro ( double zobs, double hm, double tdk, double pmb,
00428 double rh, double wl, double phi, double tlr, double eps,
00429 double *ref );
00430
00431 void slaRefv ( double vu[3], double refa, double refb, double vr[3] );
00432
00433 void slaRefz ( double zu, double refa, double refb, double *zr );
00434
00435 float slaRverot ( float phi, float ra, float da, float st );
00436
00437 float slaRvgalc ( float r2000, float d2000 );
00438
00439 float slaRvlg ( float r2000, float d2000 );
00440
00441 float slaRvlsrd ( float r2000, float d2000 );
00442
00443 float slaRvlsrk ( float r2000, float d2000 );
00444
00445 void slaS2tp ( float ra, float dec, float raz, float decz,
00446 float *xi, float *eta, int *j );
00447
00448 float slaSep ( float a1, float b1, float a2, float b2 );
00449
00450 float slaSepv ( float v1[3], float v2[3] );
00451
00452 void slaSmat ( int n, float *a, float *y, float *d, int *jf, int *iw );
00453
00454 void slaSubet ( double rc, double dc, double eq,
00455 double *rm, double *dm );
00456
00457 void slaSupgal ( double dsl, double dsb, double *dl, double *db );
00458
00459 void slaSvd ( int m, int n, int mp, int np,
00460 double *a, double *w, double *v, double *work,
00461 int *jstat );
00462
00463 void slaSvdcov ( int n, int np, int nc,
00464 double *w, double *v, double *work, double *cvm );
00465
00466 void slaSvdsol ( int m, int n, int mp, int np,
00467 double *b, double *u, double *w, double *v,
00468 double *work, double *x );
00469
00470 void slaTp2s ( float xi, float eta, float raz, float decz,
00471 float *ra, float *dec );
00472
00473 void slaTp2v ( float xi, float eta, float v0[3], float v[3] );
00474
00475 void slaTps2c ( float xi, float eta, float ra, float dec,
00476 float *raz1, float *decz1,
00477 float *raz2, float *decz2, int *n );
00478
00479 void slaTpv2c ( float xi, float eta, float v[3],
00480 float v01[3], float v02[3], int *n );
00481
00482 void slaUe2el ( double u[], int jformr,
00483 int *jform, double *epoch, double *orbinc,
00484 double *anode, double *perih, double *aorq, double *e,
00485 double *aorl, double *dm, int *jstat );
00486
00487 void slaUe2pv ( double date, double u[], double pv[], int *jstat );
00488
00489 void slaUnpcd ( double disco, double *x, double *y );
00490
00491 void slaV2tp ( float v[3], float v0[3], float *xi, float *eta, int *j );
00492
00493 float slaVdv ( float va[3], float vb[3] );
00494
00495 void slaVn ( float v[3], float uv[3], float *vm );
00496
00497 void slaVxv ( float va[3], float vb[3], float vc[3] );
00498
00499 void slaXy2xy ( double x1, double y1, double coeffs[6],
00500 double *x2, double *y2 );
00501
00502 double slaZd ( double ha, double dec, double phi );
00503
00504 #ifdef __cplusplus
00505 }
00506 #endif
00507
00508 #endif