Print

Print


I have had a quick look at DS9 SLA usage and it's not very extensive.
See notes at the end of the email. There seem to be two completely
different versions of wcscon.c from Doug Mink's wcstools. slasubs.c is
what it looks like: unobfuscated C code from SLA from around 1993. Not
sure what licence Doug Mink got from Pat on those but they are
definitely the standard unobfuscated SLA/C code rather than clean-room
ports from the Fortran. I haven't looked to see how the rewrites of
slaPreces differ from slaPreces. I can't actually see anywhere where
wcstools calls that SLA code though unless there are some C
preprocessor shenanigans on naming.

The only code in DS9 that seems to be calling SLA is funtools but that
has its own unobfuscated copies of the two SLA functions that it uses.

I'm left wondering about the sla/ directory in DS9.

So to conclude (and I haven't tried building DS9 without the SLA directory):

 - funtools has its own copies of slaDsep and slaDcs2c without any
attribution to Pat (but it is identical to Pat's C code [trying not to
contaminate my clean-room by looking at the SLA C code in our TCS])
 - wcstools has unobfuscated C code attributed to Pat but doesn't seem
to use them (they aren't listed in the makefile). Given that they
aren't in the full wcstools distribution either I'm guessing that they
have been left in wcssubs by mistake and should really be removed from
the distribution.
 - DS9 has a sla/ directory with 67 obfuscated yet GPL versions of SLA
routines (with attribution).

So I'm wondering if
  a) Pat wants to send a note to the author of funtools
  b) DS9 will build without the sla/ routines

Also, Doug Mink seems to think that Pat worked at Cambridge University
(according to the readme) and is happy to list all the licenses
involved except the licence for SLA. wcssubs needs to just remove the
SLA code completely rather than shipping the unobfuscated version it
doesn't use.

-- 
Tim Jenness


wcssubs-3.8.4/slasubs.c
9:/*  slaDcs2c (a, b, v): Spherical coordinates to direction cosines.
10: *  slaDcc2s (v, a, b):  Direction cosines to spherical coordinates.
11: *  slaDmxv (dm, va, vb): vector vb = matrix dm * vector va
12: *  slaImxv (rm, va, vb): vector vb = (inverse of matrix rm) * vector va
13: *  slaDranrm (angle):  Normalize angle into range 0-2 pi.
14: *  slaDrange (angle):  Normalize angle into range +/- pi.
15: *  slaDeuler (order, phi, theta, psi, rmat)
21:slaDcs2c (a, b, v)
49:slaDcc2s (v, a, b)
87:slaDmxv (dm, va, vb)
120:void slaDimxv (dm, va, vb)
174:double slaDranrm (angle)
198:slaDrange (angle)
227:slaDeuler (order, phi, theta, psi, rmat)

wcssubs-3.8.4/wcscon.c
1900:**  Based on slaPreces(), P.T.Wallace   Starlink   22 December 1993
1948:**  Based on slaPreces(), P.T.Wallace   Starlink   22 December 1993
2002:**  Based on slaPrebn() by P.T.Wallace   Starlink   30 October 1993
2046:**  Based on slaPrec(), P.T.Wallace   Starlink   31 October 1993


funtools-1.4.5/funcone.c
97:slaDcs2c(double a, double b, double v[3])
99:static void slaDcs2c(a, b, v)
114:slaDsep(double a1, double b1, double a2, double b2)
116:static double slaDsep(a1, b1, a2, b2)
126:   slaDcs2c ( a1, b1, v1 );
127:   slaDcs2c ( a2, b2, v2 );
200:  if ( slaDsep(r1, d1, r2, d2) <= radius )

funtools-1.4.5/search.c
18:double	 slaDsep();
354:	if ( slaDsep(r1, d1, r2, d2) <= radius ) return 1;
1061:void slaDcs2c ( double a, double b, double v[3] )
1071:double slaDsep ( double a1, double b1, double a2, double b2 )
1076:   slaDcs2c ( a1, b1, v1 );
1077:   slaDcs2c ( a2, b2, v2 );

funtools-1.4.5/wcs/wcscon.c
1899:**  Based on slaPreces(), P.T.Wallace   Starlink   22 December 1993
1976:**  Based on slaPrebn() by P.T.Wallace   Starlink   30 October 1993
2020:**  Based on slaPrec(), P.T.Wallace   Starlink   31 October 1993
2062:**  Based on slaPreces(), P.T.Wallace   Starlink   22 December 1993
2117:**  Based on slaPreces(), P.T.Wallace   Starlink   22 December 1993
2168:**  Based on slaPrec(), P.T.Wallace   Starlink   31 October 1993