This file is indexed.

/usr/share/gnudatalanguage/astrolib/sunpos.pro is in gdl-astrolib 2018.02.16+dfsg-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
PRO sunpos, jd, ra, dec, longmed, oblt, RADIAN = radian
;+
; NAME:
;       SUNPOS
; PURPOSE:
;       To compute the RA and Dec of the Sun at a given date.
;
; CALLING SEQUENCE:
;       SUNPOS, jd, ra, dec, [elong, obliquity, /RADIAN ]
; INPUTS:
;       jd    - The Julian date of the day (and time), scalar or vector
;               usually double precision
; OUTPUTS:
;       ra    - The right ascension of the sun at that date in DEGREES
;               double precision, same number of elements as jd
;       dec   - The declination of the sun at that date in DEGREES
;
; OPTIONAL OUTPUTS:
;       elong - Ecliptic longitude of the sun at that date in DEGREES.
;       obliquity - the obliquity of the ecliptic, in DEGREES
;
; OPTIONAL INPUT KEYWORD:
;       /RADIAN - If this keyword is set and non-zero, then all output variables 
;               are given in Radians rather than Degrees
;
; NOTES:
;       Patrick Wallace (Rutherford Appleton Laboratory, UK) has tested the
;       accuracy of a C adaptation of the sunpos.pro code and found the 
;       following results.   From 1900-2100 SUNPOS  gave 7.3 arcsec maximum 
;       error, 2.6 arcsec RMS.  Over the shorter interval 1950-2050 the figures
;       were 6.4 arcsec max, 2.2 arcsec RMS.  
;
;       The returned RA and Dec are in the given date's equinox.
;
;       Procedure was extensively revised in May 1996, and the new calling
;       sequence is incompatible with the old one.
; METHOD:
;       Uses a truncated version of Newcomb's Sun.    Adapted from the IDL
;       routine SUN_POS by CD Pike, which was adapted from a FORTRAN routine
;       by B. Emerson (RGO).
; EXAMPLE:
;       (1) Find the apparent RA and Dec of the Sun on May 1, 1982
;       
;       IDL> jdcnv, 1982, 5, 1,0 ,jd      ;Find Julian date jd = 2445090.5   
;       IDL> sunpos, jd, ra, dec
;       IDL> print,adstring(ra,dec,2)
;                02 31 32.61  +14 54 34.9
;
;       The Astronomical Almanac gives 02 31 32.58 +14 54 34.9 so the error
;               in SUNPOS for this case is < 0.5".      
;
;       (2) Find the apparent RA and Dec of the Sun for every day in 1997
;
;       IDL> jdcnv, 1997,1,1,0, jd                ;Julian date on Jan 1, 1997
;       IDL> sunpos, jd+ dindgen(365), ra, dec    ;RA and Dec for each day 
;
; MODIFICATION HISTORY:
;       Written by Michael R. Greason, STX, 28 October 1988.
;       Accept vector arguments, W. Landsman     April,1989
;       Eliminated negative right ascensions.  MRG, Hughes STX, 6 May 1992.
;       Rewritten using the 1993 Almanac.  Keywords added.  MRG, HSTX, 
;               10 February 1994.
;       Major rewrite, improved accuracy, always return values in degrees
;       W. Landsman  May, 1996 
;       Added /RADIAN keyword,    W. Landsman       August, 1997
;       Converted to IDL V5.0   W. Landsman   September 1997
;-
 On_error,2
 compile_opt idl2
;                       Check arguments.
 if N_params() LT 3 then begin 
     print, 'Syntax - SUNPOS, jd, ra, dec, [elong, obliquity, /RADIAN] '
     print, 'Inputs  -  jd (Julian date)'
     print, 'Outputs - Apparent RA and Dec, longitude, & obliquity'
     print, 'All angles in DEGREES unless /RADIAN is set'
     return
 endif

 dtor = !DPI/180.0d       ;(degrees to radian, double precision)

;  form time in Julian centuries from 1900.0

 t = (jd - 2415020.0d)/36525.0d0

;  form sun's mean longitude

 l = (279.696678d0+((36000.768925d0*t) mod 360.0d0))*3600.0d0

;  allow for ellipticity of the orbit (equation of centre)
;  using the Earth's mean anomaly ME

 me = 358.475844d0 + ((35999.049750D0*t) mod 360.0d0)
 ellcor  = (6910.1d0 - 17.2D0*t)*sin(me*dtor) + 72.3D0*sin(2.0D0*me*dtor)
 l = l + ellcor

; allow for the Venus perturbations using the mean anomaly of Venus MV

 mv = 212.603219d0 + ((58517.803875d0*t) mod 360.0d0) 
 vencorr = 4.8D0 * cos((299.1017d0 + mv - me)*dtor) + $
          5.5D0 * cos((148.3133d0 +  2.0D0 * mv  -  2.0D0 * me )*dtor) + $
          2.5D0 * cos((315.9433d0 +  2.0D0 * mv  -  3.0D0 * me )*dtor) + $
          1.6D0 * cos((345.2533d0 +  3.0D0 * mv  -  4.0D0 * me )*dtor) + $
          1.0D0 * cos((318.15d0   +  3.0D0 * mv  -  5.0D0 * me )*dtor)
l = l + vencorr

;  Allow for the Mars perturbations using the mean anomaly of Mars MM

 mm = 319.529425d0  +  (( 19139.858500d0 * t)  mod  360.0d0 )
 marscorr = 2.0d0 * cos((343.8883d0 -  2.0d0 * mm  +  2.0d0 * me)*dtor ) + $
            1.8D0 * cos((200.4017d0 -  2.0d0 * mm  + me) * dtor)
 l = l + marscorr

; Allow for the Jupiter perturbations using the mean anomaly of
; Jupiter MJ

 mj = 225.328328d0  +  (( 3034.6920239d0 * t)  mod  360.0d0 )
 jupcorr = 7.2d0 * cos(( 179.5317d0 - mj + me )*dtor) + $
          2.6d0 * cos((263.2167d0  -  MJ ) *dtor) + $
          2.7d0 * cos(( 87.1450d0  -  2.0d0 * mj  +  2.0D0 * me ) *dtor) + $
          1.6d0 * cos((109.4933d0  -  2.0d0 * mj  +  me ) *dtor)
 l = l + jupcorr

; Allow for the Moons perturbations using the mean elongation of
; the Moon from the Sun D

 d = 350.7376814d0  + (( 445267.11422d0 * t)  mod  360.0d0 )
 mooncorr  = 6.5d0 * sin(d*dtor)
 l = l + mooncorr

; Allow for long period terms

 longterm  = + 6.4d0 * sin(( 231.19d0  +  20.20d0 * t )*dtor)
 l  =    l + longterm
 l  =  ( l + 2592000.0d0)  mod  1296000.0d0 
 longmed = l/3600.0d0

; Allow for Aberration

 l  =  l - 20.5d0

; Allow for Nutation using the longitude of the Moons mean node OMEGA

 omega = 259.183275d0 - (( 1934.142008d0 * t ) mod 360.0d0 )
 l  =  l - 17.2d0 * sin(omega*dtor)

; Form the True Obliquity

 oblt  = 23.452294d0 - 0.0130125d0*t + (9.2d0*cos(omega*dtor))/3600.0d0

; Form Right Ascension and Declination

 l = l/3600.0d0
 ra  = atan( sin(l*dtor) * cos(oblt*dtor) , cos(l*dtor) )

 neg = where(ra LT 0.0d0, Nneg) 
 if Nneg GT 0 then ra[neg] = ra[neg] + 2.0d*!DPI

 dec = asin(sin(l*dtor) * sin(oblt*dtor))
 
 if keyword_set(RADIAN) then begin
        oblt = oblt*dtor 
        longmed = longmed*dtor
 endif else begin
        ra = ra/dtor
        dec = dec/dtor
 endelse
 end