text: #include "sofa.h"
  
  void iauAtciqn(double rc, double dc, double pr, double pd,
                 double px, double rv, iauASTROM *astrom,
                 int n, iauLDBODY b[], double *ri, double *di)
  /*
  **  - - - - - - - - - -
  **   i a u A t c i q n
  **  - - - - - - - - - -
  **
  **  Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed
  **  star-independent astrometry parameters plus a list of light-
  **  deflecting bodies.
  **
  **  Use of this function is appropriate when efficiency is important and
  **  where many star positions are to be transformed for one date.  The
  **  star-independent parameters can be obtained by calling one of the
  **  functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13].
  **
  **
  **  If the only light-deflecting body to be taken into account is the
  **  Sun, the iauAtciq function can be used instead.  If in addition the
  **  parallax and proper motions are zero, the iauAtciqz function can be
  **  used.
  **
  **  This function is part of the International Astronomical Union's
  **  SOFA (Standards of Fundamental Astronomy) software collection.
  **
  **  Status:  support function.
  **
  **  Given:
  **     rc,dc  double       ICRS RA,Dec at J2000.0 (radians)
  **     pr     double       RA proper motion (radians/year; Note 3)
  **     pd     double       Dec proper motion (radians/year)
  **     px     double       parallax (arcsec)
  **     rv     double       radial velocity (km/s, +ve if receding)
  **     astrom iauASTROM*   star-independent astrometry parameters:
  **      pmt    double       PM time interval (SSB, Julian years)
  **      eb     double[3]    SSB to observer (vector, au)
  **      eh     double[3]    Sun to observer (unit vector)
  **      em     double       distance from Sun to observer (au)
  **      v      double[3]    barycentric observer velocity (vector, c)
  **      bm1    double       sqrt(1-|v|^2): reciprocal of Lorenz factor
  **      bpn    double[3][3] bias-precession-nutation matrix
  **      along  double       longitude + s' (radians)
  **      xpl    double       polar motion xp wrt local meridian (radians)
  **      ypl    double       polar motion yp wrt local meridian (radians)
  **      sphi   double       sine of geodetic latitude
  **      cphi   double       cosine of geodetic latitude
  **      diurab double       magnitude of diurnal aberration vector
  **      eral   double       "local" Earth rotation angle (radians)
  **      refa   double       refraction constant A (radians)
  **      refb   double       refraction constant B (radians)
  **      n     int           number of bodies (Note 3)
  **      b     iauLDBODY[n] data for each of the n bodies (Notes 3,4):
  **       bm    double        mass of the body (solar masses, Note 5)
  **       dl    double        deflection limiter (Note 6)
  **       pv    [2][3]        barycentric PV of the body (au, au/day)
  **
  **  Returned:
  **     ri,di   double    CIRS RA,Dec (radians)
  **
  **  Notes:
  **
  **  1) Star data for an epoch other than J2000.0 (for example from the
  **     Hipparcos catalog, which has an epoch of J1991.25) will require a
  **     preliminary call to iauPmsafe before use.
  **
  **  2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt.
  **
  **  3) The struct b contains n entries, one for each body to be
  **     considered.  If n = 0, no gravitational light deflection will be
  **     applied, not even for the Sun.
  **
  **  4) The struct b should include an entry for the Sun as well as for
  **     any planet or other body to be taken into account.  The entries
  **     should be in the order in which the light passes the body.
  **
  **  5) In the entry in the b struct for body i, the mass parameter
  **     b[i].bm can, as required, be adjusted in order to allow for such
  **     effects as quadrupole field.
  **
  **  6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is
  **     the angular separation (in radians) between star and body at
  **     which limiting is applied.  As phi shrinks below the chosen
  **     threshold, the deflection is artificially reduced, reaching zero
  **     for phi = 0.   Example values suitable for a terrestrial
  **     observer, together with masses, are as follows:
  **
  **        body i     b[i].bm        b[i].dl
  **
  **        Sun        1.0            6e-6
  **        Jupiter    0.00095435     3e-9
  **        Saturn     0.00028574     3e-10
  **
  **  7) For efficiency, validation of the contents of the b array is
  **     omitted.  The supplied masses must be greater than zero, the
  **     position and velocity vectors must be right, and the deflection
  **     limiter greater than zero.
  **
  **  Called:
  **     iauPmpx      proper motion and parallax
  **     iauLdn       light deflection by n bodies
  **     iauAb        stellar aberration
  **     iauRxp       product of r-matrix and pv-vector
  **     iauC2s       p-vector to spherical
  **     iauAnp       normalize angle into range 0 to 2pi
  **
  **  This revision:   2013 October 9
  **
  **  SOFA release 2018-01-30
  **
  **  Copyright (C) 2018 IAU SOFA Board.  See notes at end.
  */
  {
     double pco[3], pnat[3], ppr[3], pi[3], w;
  
  
  /* Proper motion and parallax, giving BCRS coordinate direction. */
     iauPmpx(rc, dc, pr, pd, px, rv, astrom->pmt, astrom->eb, pco);
  
  /* Light deflection, giving BCRS natural direction. */
     iauLdn(n, b, astrom->eb, pco, pnat);
  
  /* Aberration, giving GCRS proper direction. */
     iauAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr);
  
  /* Bias-precession-nutation, giving CIRS proper direction. */
     iauRxp(astrom->bpn, ppr, pi);
  
  /* CIRS RA,Dec. */
     iauC2s(pi, &w, di);
     *ri = iauAnp(w);
  
  /* Finished. */
  
  /*----------------------------------------------------------------------
  **
  **  Copyright (C) 2018
  **  Standards Of Fundamental Astronomy Board
  **  of the International Astronomical Union.
  **
  **  =====================
  **  SOFA Software License
  **  =====================
  **
  **  NOTICE TO USER:
  **
  **  BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND
  **  CONDITIONS WHICH APPLY TO ITS USE.
  **
  **  1. The Software is owned by the IAU SOFA Board ("SOFA").
  **
  **  2. Permission is granted to anyone to use the SOFA software for any
  **     purpose, including commercial applications, free of charge and
  **     without payment of royalties, subject to the conditions and
  **     restrictions listed below.
  **
  **  3. You (the user) may copy and distribute SOFA source code to others,
  **     and use and adapt its code and algorithms in your own software,
  **     on a world-wide, royalty-free basis.  That portion of your
  **     distribution that does not consist of intact and unchanged copies
  **     of SOFA source code files is a "derived work" that must comply
  **     with the following requirements:
  **
  **     a) Your work shall be marked or carry a statement that it
  **        (i) uses routines and computations derived by you from
  **        software provided by SOFA under license to you; and
  **        (ii) does not itself constitute software provided by and/or
  **        endorsed by SOFA.
  **
  **     b) The source code of your derived work must contain descriptions
  **        of how the derived work is based upon, contains and/or differs
  **        from the original SOFA software.
  **
  **     c) The names of all routines in your derived work shall not
  **        include the prefix "iau" or "sofa" or trivial modifications
  **        thereof such as changes of case.
  **
  **     d) The origin of the SOFA components of your derived work must
  **        not be misrepresented;  you must not claim that you wrote the
  **        original software, nor file a patent application for SOFA
  **        software or algorithms embedded in the SOFA software.
  **
  **     e) These requirements must be reproduced intact in any source
  **        distribution and shall apply to anyone to whom you have
  **        granted a further right to modify the source code of your
  **        derived work.
  **
  **     Note that, as originally distributed, the SOFA software is
  **     intended to be a definitive implementation of the IAU standards,
  **     and consequently third-party modifications are discouraged.  All
  **     variations, no matter how minor, must be explicitly marked as
  **     such, as explained above.
  **
  **  4. You shall not cause the SOFA software to be brought into
  **     disrepute, either by misuse, or use for inappropriate tasks, or
  **     by inappropriate modification.
  **
  **  5. The SOFA software is provided "as is" and SOFA makes no warranty
  **     as to its use or performance.   SOFA does not and cannot warrant
  **     the performance or results which the user may obtain by using the
  **     SOFA software.  SOFA makes no warranties, express or implied, as
  **     to non-infringement of third party rights, merchantability, or
  **     fitness for any particular purpose.  In no event will SOFA be
  **     liable to the user for any consequential, incidental, or special
  **     damages, including any lost profits or lost savings, even if a
  **     SOFA representative has been advised of such damages, or for any
  **     claim by any third party.
  **
  **  6. The provision of any version of the SOFA software under the terms
  **     and conditions specified herein does not imply that future
  **     versions will also be made available under the same terms and
  **     conditions.
  *
  **  In any published work or commercial product which uses the SOFA
  **  software directly, acknowledgement (see www.iausofa.org) is
  **  appreciated.
  **
  **  Correspondence concerning SOFA software should be addressed as
  **  follows:
  **
  **      By email:  sofa@ukho.gov.uk
  **      By post:   IAU SOFA Center
  **                 HM Nautical Almanac Office
  **                 UK Hydrographic Office
  **                 Admiralty Way, Taunton
  **                 Somerset, TA1 2DN
  **                 United Kingdom
  **
  **--------------------------------------------------------------------*/
  
  }
  