View Javadoc

1   /*
2    * $Id$
3    * 
4    * 
5    * Created on 26 Jan 2010 by Paul Harrison (paul.harrison@manchester.ac.uk)
6    *
7    * Adapted from official SOFA C implementation http://www.iausofa.org/
8    *
9    *
10   */ 
11  
12  package org.jastronomy.jsofa;
13  
14  
15  
16  
17  import static org.jastronomy.jsofa.JSOFA.*;
18  import static org.junit.Assert.*;
19  
20  import org.jastronomy.jsofa.JSOFA.CatalogCoords;
21  import org.jastronomy.jsofa.JSOFA.SphericalCoordinate;
22  import org.jastronomy.jsofa.JSOFAException;
23  import org.jastronomy.jsofa.JSOFAIllegalParameter;
24  import org.jastronomy.jsofa.JSOFAInternalError;
25  import org.junit.Before;
26  import org.junit.BeforeClass;
27  import org.junit.Test;
28  
29  import static java.lang.Math.*;
30  
31  public class JSOFATest {
32  
33      private static boolean verbose;
34  
35      @BeforeClass
36      public static void setUpBeforeClass() throws Exception {
37      }
38  
39      @Before
40      public void setUp() throws Exception {
41      }
42  
43      @Test
44      public void testversion() throws JSOFAIllegalParameter 
45      {
46          assertEquals("sofa release", "2023-10-11", SOFA_RELEASE);
47          assertEquals("sofa revision", "19", SOFA_REVISION);
48          assertEquals("lastleap second", jauCal2jd(2017,1,1), lastLeapSecondDate());        
49          assertEquals("last confirmation of leapsecond data", jauCal2jd(2026,01,28), latestConfirmedNoLeapSecondChange);
50          assertEquals("Jsofa release",  System.getProperty("SOFAVERSION"), JSOFA_RELEASE); // check that the correct version is being released - system properly set from POM
51          
52          
53      }
54  
55      /*
56      **
57      **  Validate the JSOFA C functions.
58      **
59      **  Each JSOFA function is tested to some useful but not exhaustive
60      **  level.  Successful completion is signalled by an absence of
61      **  output messages.  Failure of a given function or group of functions
62      **  results in error messages.
63      **
64      **  All messages go to stdout.
65      **
66      **  This revision:  2010 January 18
67      **
68      **  JSOFA release 2009-12-31
69      **
70      **  Copyright (C) 2009 IAU SOFA Review Board.  See notes at end.
71      */
72  
73      /**
74      **
75      **  Validate an integer result.
76      **
77      **  Internal function used by t_sofa_c program.
78      **
79      **  Given:
80      **     ival     int          value computed by function under test
81      **     ivalok   int          correct value
82      **     func     char[]       name of function under test
83      **     test     char[]       name of individual test
84      **
85      **  Given and returned:
86      **     status   int          set to FALSE if test fails
87      **
88      **  This revision:  2009 November 4
89      */
90      private void viv(int ival, int ivalok, String func, String test)
91     {
92         if (ival != ivalok) {
93            System.err.printf("%s failed: %s want %d got %d\n",
94                   func, test, ivalok, ival);
95         } else if (verbose) {
96            System.out.printf("%s passed: %s want %d got %d\n",
97                          func, test, ivalok, ival);
98         }
99         assertEquals(func+" "+test, ivalok, ival);
100        return;
101     }
102 
103     /**
104     **
105     **  Validate a double result.
106     **
107     **  Internal function used by t_sofa_c program.
108     **
109     **  Given:
110     **     val      double       value computed by function under test
111     **     valok    double       expected value
112     **     dval     double       maximum allowable error
113     **     func     char[]       name of function under test
114     **     test     char[]       name of individual test
115     **
116     **  Given and returned:
117     **     status   int          set to FALSE if test fails
118     **
119     **  This revision:  2008 June 8
120     */
121     private void vvd(double val, double valok, double dval,
122             String func, String test)
123     {
124        double a, f;   /* absolute and fractional error */
125 
126 
127        a = val - valok;
128        f = abs(valok / a);
129        String msg = String.format("%s: %s want %.20g got %.20g (1/%.3g)\n",
130                  func, test, valok, val, f); 
131        if (verbose && abs(a) <= dval) {
132           System.out.println("passed: " + msg);
133        }
134        assertTrue(msg, abs(a) <= dval);
135        return;
136     }
137 
138     @Test
139     public void t_a2af()
140     /**
141     **
142     **  Test jauA2af function.
143     **
144     **  Returned:
145     **     status    int         TRUE = success, FALSE = fail
146     **
147     **  Called:  jauA2af, viv
148     **
149     **  This revision:  2008 November 30
150     */
151     {
152        int idmsf[] = new int[4];
153        char s;
154 
155 
156        s = jauA2af(4, 2.345, idmsf);
157 
158        viv(s, '+', "jauA2af", "s");
159 
160        viv(idmsf[0],  134, "jauA2af", "0");
161        viv(idmsf[1],   21, "jauA2af", "1");
162        viv(idmsf[2],   30, "jauA2af", "2");
163        viv(idmsf[3], 9706, "jauA2af", "3");
164 
165     }
166 
167     @Test
168     public void t_a2tf()
169     /**
170     **
171     **  Test jauA2tf function.
172     **
173     **  Returned:
174     **     status    int         TRUE = success, FALSE = fail
175     **
176     **  Called:  jauA2tf, viv
177     **
178     **  This revision:  2008 November 30
179     */
180     {
181        int ihmsf[] = new int[4];
182        char s;
183 
184 //TODO here if we increase this to 9dp then will see the rounding error caused by 32 bit int in java
185 // see https://github.com/Javastro/jsofa/issues/12
186        s = jauA2tf(4, -3.01234, ihmsf);
187 
188        viv((int)s, '-', "jauA2tf", "s");
189 
190        viv(ihmsf[0],   11, "jauA2tf", "0");
191        viv(ihmsf[1],   30, "jauA2tf", "1");
192        viv(ihmsf[2],   22, "jauA2tf", "2");
193        viv(ihmsf[3], 6484, "jauA2tf", "3");
194        //       viv(ihmsf[3], 648400000, "jauA2tf", "3"); this should be achievable with 64 bit ints
195 
196     }
197 
198    @Test
199    public void t_a2tf2()
200    /**
201     **
202     **  Test jauA2tf function.
203     **
204     **  Returned:
205     **     status    int         TRUE = success, FALSE = fail
206     **
207     **  Called:  jauA2tf, viv
208     **
209     **  This revision:  2008 November 30
210     */
211    {
212       int ihmsf[] = new int[4];
213       char s;
214 
215 
216       s = jauA2af(9, 89.26410897*DD2R, ihmsf);
217 
218       viv((int)s, '+', "jauA2tf", "s");
219 
220       viv(ihmsf[0],   89, "jauA2tf", "0");
221       viv(ihmsf[1],   15, "jauA2tf", "1");
222       viv(ihmsf[2],   50, "jauA2tf", "2");
223       viv(ihmsf[3], 792292000, "jauA2tf", "3");
224 
225    }
226 
227 
228    @Test
229     public void t_anp()
230     /**
231     **
232     **  Test jauAnp function.
233     **
234     **  Returned:
235     **     status    int         TRUE = success, FALSE = fail
236     **
237     **  Called:  jauAnp, vvd
238     **
239     **  This revision:  2008 November 30
240     */
241     {
242        vvd(jauAnp(-0.1), 6.183185307179586477, 1e-12, "jauAnp", "");
243     }
244 
245     @Test
246     public void t_anpm()
247     /**
248     **
249     **  Test jauAnpm function.
250     **
251     **  Returned:
252     **     status    int         TRUE = success, FALSE = fail
253     **
254     **  Called:  jauAnpm, vvd
255     **
256     **  This revision:  2008 November 30
257     */
258     {
259        vvd(jauAnpm(-4.0), 2.283185307179586477, 1e-12, "jauAnpm", "");
260     }
261 
262     @Test
263     public void t_bi00()
264     /**
265     **
266     **  Test jauBi00 function.
267     **
268     **  Returned:
269     **     status    int         TRUE = success, FALSE = fail
270     **
271     **  Called:  jauBi00, vvd
272     **
273     **  This revision:  2009 November 4
274     */
275     {
276 
277        FrameBias ret = jauBi00();
278 
279        vvd(ret.dpsibi, -0.2025309152835086613e-6, 1e-12,"jauBi00", "dpsibi");
280        vvd(ret.depsbi, -0.3306041454222147847e-7, 1e-12,"jauBi00", "depsbi");
281        vvd(ret.dra, -0.7078279744199225506e-7, 1e-12,"jauBi00", "dra");
282     }
283 
284     @Test
285     public void t_bp00()
286     /**
287     **
288     **  Test jauBp00 function.
289     **
290     **  Returned:
291     **     status    int         TRUE = success, FALSE = fail
292     **
293     **  Called:  jauBp00, vvd
294     **
295     **  This revision:  2008 November 28
296     */
297     {
298        double rb[][] = new double[3][3], rp[][] = new double[3][3], rbp[][] = new double[3][3];
299 
300 
301        jauBp00(2400000.5, 50123.9999, rb, rp, rbp);
302 
303        vvd(rb[0][0], 0.9999999999999942498, 1e-12,"jauBp00", "rb11");
304        vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16,"jauBp00", "rb12");
305        vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16,"jauBp00", "rb13");
306        vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16,"jauBp00", "rb21");
307        vvd(rb[1][1], 0.9999999999999969484, 1e-12,"jauBp00", "rb22");
308        vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16,"jauBp00", "rb23");
309        vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16,"jauBp00", "rb31");
310        vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16,"jauBp00", "rb32");
311        vvd(rb[2][2], 0.9999999999999962084, 1e-12,"jauBp00", "rb33");
312 
313        vvd(rp[0][0], 0.9999995504864048241, 1e-12,"jauBp00", "rp11");
314        vvd(rp[0][1], 0.8696113836207084411e-3, 1e-14,"jauBp00", "rp12");
315        vvd(rp[0][2], 0.3778928813389333402e-3, 1e-14,"jauBp00", "rp13");
316        vvd(rp[1][0], -0.8696113818227265968e-3, 1e-14,"jauBp00", "rp21");
317        vvd(rp[1][1], 0.9999996218879365258, 1e-12,"jauBp00", "rp22");
318        vvd(rp[1][2], -0.1690679263009242066e-6, 1e-14,"jauBp00", "rp23");
319        vvd(rp[2][0], -0.3778928854764695214e-3, 1e-14,"jauBp00", "rp31");
320        vvd(rp[2][1], -0.1595521004195286491e-6, 1e-14,"jauBp00", "rp32");
321        vvd(rp[2][2], 0.9999999285984682756, 1e-12,"jauBp00", "rp33");
322 
323        vvd(rbp[0][0], 0.9999995505175087260, 1e-12,"jauBp00", "rbp11");
324        vvd(rbp[0][1], 0.8695405883617884705e-3, 1e-14,"jauBp00", "rbp12");
325        vvd(rbp[0][2], 0.3779734722239007105e-3, 1e-14,"jauBp00", "rbp13");
326        vvd(rbp[1][0], -0.8695405990410863719e-3, 1e-14,"jauBp00", "rbp21");
327        vvd(rbp[1][1], 0.9999996219494925900, 1e-12,"jauBp00", "rbp22");
328        vvd(rbp[1][2], -0.1360775820404982209e-6, 1e-14,"jauBp00", "rbp23");
329        vvd(rbp[2][0], -0.3779734476558184991e-3, 1e-14,"jauBp00", "rbp31");
330        vvd(rbp[2][1], -0.1925857585832024058e-6, 1e-14,"jauBp00", "rbp32");
331        vvd(rbp[2][2], 0.9999999285680153377, 1e-12,"jauBp00", "rbp33");
332     }
333 
334     @Test
335     public void t_bp06()
336     /**
337     **
338     **  Test jauBp06 function.
339     **
340     **  Returned:
341     **     status    int         TRUE = success, FALSE = fail
342     **
343     **  Called:  jauBp06, vvd
344     **
345     **  This revision:  2008 November 28
346     */
347     {
348        double rb[][] = new double[3][3], rp[][] = new double[3][3], rbp[][] = new double[3][3];
349 
350 
351        jauBp06(2400000.5, 50123.9999, rb, rp, rbp);
352 
353        vvd(rb[0][0], 0.9999999999999942497, 1e-12,"jauBp06", "rb11");
354        vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14,"jauBp06", "rb12");
355        vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14,"jauBp06", "rb13");
356        vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14,"jauBp06", "rb21");
357        vvd(rb[1][1], 0.9999999999999969484, 1e-12,"jauBp06", "rb22");
358        vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14,"jauBp06", "rb23");
359        vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14,"jauBp06", "rb31");
360        vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14,"jauBp06", "rb32");
361        vvd(rb[2][2], 0.9999999999999962084, 1e-12,"jauBp06", "rb33");
362 
363        vvd(rp[0][0], 0.9999995504864960278, 1e-12,"jauBp06", "rp11");
364        vvd(rp[0][1], 0.8696112578855404832e-3, 1e-14,"jauBp06", "rp12");
365        vvd(rp[0][2], 0.3778929293341390127e-3, 1e-14,"jauBp06", "rp13");
366        vvd(rp[1][0], -0.8696112560510186244e-3, 1e-14,"jauBp06", "rp21");
367        vvd(rp[1][1], 0.9999996218880458820, 1e-12,"jauBp06", "rp22");
368        vvd(rp[1][2], -0.1691646168941896285e-6, 1e-14,"jauBp06", "rp23");
369        vvd(rp[2][0], -0.3778929335557603418e-3, 1e-14,"jauBp06", "rp31");
370        vvd(rp[2][1], -0.1594554040786495076e-6, 1e-14,"jauBp06", "rp32");
371        vvd(rp[2][2], 0.9999999285984501222, 1e-12,"jauBp06", "rp33");
372 
373        vvd(rbp[0][0], 0.9999995505176007047, 1e-12,"jauBp06", "rbp11");
374        vvd(rbp[0][1], 0.8695404617348208406e-3, 1e-14,"jauBp06", "rbp12");
375        vvd(rbp[0][2], 0.3779735201865589104e-3, 1e-14,"jauBp06", "rbp13");
376        vvd(rbp[1][0], -0.8695404723772031414e-3, 1e-14,"jauBp06", "rbp21");
377        vvd(rbp[1][1], 0.9999996219496027161, 1e-12,"jauBp06", "rbp22");
378        vvd(rbp[1][2], -0.1361752497080270143e-6, 1e-14,"jauBp06", "rbp23");
379        vvd(rbp[2][0], -0.3779734957034089490e-3, 1e-14,"jauBp06", "rbp31");
380        vvd(rbp[2][1], -0.1924880847894457113e-6, 1e-14,"jauBp06", "rbp32");
381        vvd(rbp[2][2], 0.9999999285679971958, 1e-12,"jauBp06", "rbp33");
382     }
383 
384     @Test
385     public void t_bpn2xy()
386     /**
387     **
388     **  Test jauBpn2xy function.
389     **
390     **  Returned:
391     **     status    int         TRUE = success, FALSE = fail
392     **
393     **  Called:  jauBpn2xy, vvd
394     **
395     **  This revision:  2008 May 26
396     */
397     {
398        double rbpn[][] = new double[3][3];
399 
400 
401        rbpn[0][0] =  9.999962358680738e-1;
402        rbpn[0][1] = -2.516417057665452e-3;
403        rbpn[0][2] = -1.093569785342370e-3;
404 
405        rbpn[1][0] =  2.516462370370876e-3;
406        rbpn[1][1] =  9.999968329010883e-1;
407        rbpn[1][2] =  4.006159587358310e-5;
408 
409        rbpn[2][0] =  1.093465510215479e-3;
410        rbpn[2][1] = -4.281337229063151e-5;
411        rbpn[2][2] =  9.999994012499173e-1;
412 
413        CelestialIntermediatePole ret = jauBpn2xy(rbpn);
414 
415        vvd(ret.x,  1.093465510215479e-3, 1e-12, "jauBpn2xy", "x");
416        vvd(ret.y, -4.281337229063151e-5, 1e-12, "jauBpn2xy", "y");
417 
418     }
419 
420     @Test
421     public void t_c2i00a()
422     /**
423     **
424     **  Test jauC2i00a function.
425     **
426     **  Returned:
427     **     status    int         TRUE = success, FALSE = fail
428     **
429     **  Called:  jauC2i00a, vvd
430     **
431     **  This revision:  2008 November 28
432     */
433     {
434        double rc2i[][];
435 
436 
437        rc2i = jauC2i00a(2400000.5, 53736.0);
438 
439        vvd(rc2i[0][0], 0.9999998323037165557, 1e-12,"jauC2i00a", "11");
440        vvd(rc2i[0][1], 0.5581526348992140183e-9, 1e-12,"jauC2i00a", "12");
441        vvd(rc2i[0][2], -0.5791308477073443415e-3, 1e-12,"jauC2i00a", "13");
442 
443        vvd(rc2i[1][0], -0.2384266227870752452e-7, 1e-12,"jauC2i00a", "21");
444        vvd(rc2i[1][1], 0.9999999991917405258, 1e-12,"jauC2i00a", "22");
445        vvd(rc2i[1][2], -0.4020594955028209745e-4, 1e-12,"jauC2i00a", "23");
446 
447        vvd(rc2i[2][0], 0.5791308472168152904e-3, 1e-12,"jauC2i00a", "31");
448        vvd(rc2i[2][1], 0.4020595661591500259e-4, 1e-12,"jauC2i00a", "32");
449        vvd(rc2i[2][2], 0.9999998314954572304, 1e-12,"jauC2i00a", "33");
450 
451     }
452 
453     @Test
454     public void t_c2i00b()
455     /**
456     **
457     **  Test jauC2i00b function.
458     **
459     **  Returned:
460     **     status    int         TRUE = success, FALSE = fail
461     **
462     **  Called:  jauC2i00b, vvd
463     **
464     **  This revision:  2008 November 28
465     */
466     {
467        double rc2i[][] = new double[3][3];
468 
469 
470        rc2i = jauC2i00b(2400000.5, 53736.0 );
471 
472        vvd(rc2i[0][0], 0.9999998323040954356, 1e-12,"jauC2i00b", "11");
473        vvd(rc2i[0][1], 0.5581526349131823372e-9, 1e-12,"jauC2i00b", "12");
474        vvd(rc2i[0][2], -0.5791301934855394005e-3, 1e-12,"jauC2i00b", "13");
475 
476        vvd(rc2i[1][0], -0.2384239285499175543e-7, 1e-12,"jauC2i00b", "21");
477        vvd(rc2i[1][1], 0.9999999991917574043, 1e-12,"jauC2i00b", "22");
478        vvd(rc2i[1][2], -0.4020552974819030066e-4, 1e-12,"jauC2i00b", "23");
479 
480        vvd(rc2i[2][0], 0.5791301929950208873e-3, 1e-12,"jauC2i00b", "31");
481        vvd(rc2i[2][1], 0.4020553681373720832e-4, 1e-12,"jauC2i00b", "32");
482        vvd(rc2i[2][2], 0.9999998314958529887, 1e-12,"jauC2i00b", "33");
483 
484     }
485 
486     @Test
487     public void t_c2i06a()
488     /**
489     **
490     **  Test jauC2i06a function.
491     **
492     **  Returned:
493     **     status    int         TRUE = success, FALSE = fail
494     **
495     **  Called:  jauC2i06a, vvd
496     **
497     **  This revision:  2008 November 28
498     */
499     {
500        double rc2i[][] = new double[3][3];
501 
502 
503        rc2i = jauC2i06a(2400000.5, 53736.0);
504 
505        vvd(rc2i[0][0], 0.9999998323037159379, 1e-12,"jauC2i06a", "11");
506        vvd(rc2i[0][1], 0.5581121329587613787e-9, 1e-12,"jauC2i06a", "12");
507        vvd(rc2i[0][2], -0.5791308487740529749e-3, 1e-12,"jauC2i06a", "13");
508 
509        vvd(rc2i[1][0], -0.2384253169452306581e-7, 1e-12,"jauC2i06a", "21");
510        vvd(rc2i[1][1], 0.9999999991917467827, 1e-12,"jauC2i06a", "22");
511        vvd(rc2i[1][2], -0.4020579392895682558e-4, 1e-12,"jauC2i06a", "23");
512 
513        vvd(rc2i[2][0], 0.5791308482835292617e-3, 1e-12,"jauC2i06a", "31");
514        vvd(rc2i[2][1], 0.4020580099454020310e-4, 1e-12,"jauC2i06a", "32");
515        vvd(rc2i[2][2], 0.9999998314954628695, 1e-12,"jauC2i06a", "33");
516 
517     }
518 
519     @Test
520     public void t_c2ibpn()
521     /**
522     **
523     **  Test jauC2ibpn function.
524     **
525     **  Returned:
526     **     status    int         TRUE = success, FALSE = fail
527     **
528     **  Called:  jauC2ibpn, vvd
529     **
530     **  This revision:  2008 November 28
531     */
532     {
533        double rbpn[][] = new double[3][3], rc2i[][] = new double[3][3];
534 
535 
536        rbpn[0][0] =  9.999962358680738e-1;
537        rbpn[0][1] = -2.516417057665452e-3;
538        rbpn[0][2] = -1.093569785342370e-3;
539 
540        rbpn[1][0] =  2.516462370370876e-3;
541        rbpn[1][1] =  9.999968329010883e-1;
542        rbpn[1][2] =  4.006159587358310e-5;
543 
544        rbpn[2][0] =  1.093465510215479e-3;
545        rbpn[2][1] = -4.281337229063151e-5;
546        rbpn[2][2] =  9.999994012499173e-1;
547 
548        rc2i = jauC2ibpn(2400000.5, 50123.9999, rbpn );
549 
550        vvd(rc2i[0][0], 0.9999994021664089977, 1e-12,"jauC2ibpn", "11");
551        vvd(rc2i[0][1], -0.3869195948017503664e-8, 1e-12,"jauC2ibpn", "12");
552        vvd(rc2i[0][2], -0.1093465511383285076e-2, 1e-12,"jauC2ibpn", "13");
553 
554        vvd(rc2i[1][0], 0.5068413965715446111e-7, 1e-12,"jauC2ibpn", "21");
555        vvd(rc2i[1][1], 0.9999999990835075686, 1e-12,"jauC2ibpn", "22");
556        vvd(rc2i[1][2], 0.4281334246452708915e-4, 1e-12,"jauC2ibpn", "23");
557 
558        vvd(rc2i[2][0], 0.1093465510215479000e-2, 1e-12,"jauC2ibpn", "31");
559        vvd(rc2i[2][1], -0.4281337229063151000e-4, 1e-12,"jauC2ibpn", "32");
560        vvd(rc2i[2][2], 0.9999994012499173103, 1e-12,"jauC2ibpn", "33");
561 
562     }
563 
564     @Test
565     public void t_c2ixy()
566     /**
567     **
568     **  Test jauC2ixy function.
569     **
570     **  Returned:
571     **     status    int         TRUE = success, FALSE = fail
572     **
573     **  Called:  jauC2ixy, vvd
574     **
575     **  This revision:  2008 November 28
576     */
577     {
578        double x, y, rc2i[][] = new double[3][3];
579 
580 
581        x = 0.5791308486706011000e-3;
582        y = 0.4020579816732961219e-4;
583 
584        rc2i = jauC2ixy(2400000.5, 53736, x, y);
585 
586        vvd(rc2i[0][0], 0.9999998323037157138, 1e-12,"jauC2ixy", "11");
587        vvd(rc2i[0][1], 0.5581526349032241205e-9, 1e-12,"jauC2ixy", "12");
588        vvd(rc2i[0][2], -0.5791308491611263745e-3, 1e-12,"jauC2ixy", "13");
589 
590        vvd(rc2i[1][0], -0.2384257057469842953e-7, 1e-12,"jauC2ixy", "21");
591        vvd(rc2i[1][1], 0.9999999991917468964, 1e-12,"jauC2ixy", "22");
592        vvd(rc2i[1][2], -0.4020579110172324363e-4, 1e-12,"jauC2ixy", "23");
593 
594        vvd(rc2i[2][0], 0.5791308486706011000e-3, 1e-12,"jauC2ixy", "31");
595        vvd(rc2i[2][1], 0.4020579816732961219e-4, 1e-12,"jauC2ixy", "32");
596        vvd(rc2i[2][2], 0.9999998314954627590, 1e-12,"jauC2ixy", "33");
597 
598     }
599 
600     @Test
601     public void t_c2ixys()
602     /**
603     **
604     **  Test jauC2ixys function.
605     **
606     **  Returned:
607     **     status    int         TRUE = success, FALSE = fail
608     **
609     **  Called:  jauC2ixys, vvd
610     **
611     **  This revision:  2008 November 28
612     */
613     {
614        double x, y, s, rc2i[][] = new double[3][3];
615 
616 
617        x =  0.5791308486706011000e-3;
618        y =  0.4020579816732961219e-4;
619        s = -0.1220040848472271978e-7;
620 
621        rc2i = jauC2ixys(x, y, s);
622 
623        vvd(rc2i[0][0], 0.9999998323037157138, 1e-12,"jauC2ixys", "11");
624        vvd(rc2i[0][1], 0.5581984869168499149e-9, 1e-12,"jauC2ixys", "12");
625        vvd(rc2i[0][2], -0.5791308491611282180e-3, 1e-12,"jauC2ixys", "13");
626 
627        vvd(rc2i[1][0], -0.2384261642670440317e-7, 1e-12,"jauC2ixys", "21");
628        vvd(rc2i[1][1], 0.9999999991917468964, 1e-12,"jauC2ixys", "22");
629        vvd(rc2i[1][2], -0.4020579110169668931e-4, 1e-12,"jauC2ixys", "23");
630 
631        vvd(rc2i[2][0], 0.5791308486706011000e-3, 1e-12,"jauC2ixys", "31");
632        vvd(rc2i[2][1], 0.4020579816732961219e-4, 1e-12,"jauC2ixys", "32");
633        vvd(rc2i[2][2], 0.9999998314954627590, 1e-12,"jauC2ixys", "33");
634 
635     }
636 
637     @Test
638     public void t_c2s()
639     /**
640     **
641     **  Test jauC2s function.
642     **
643     **  Returned:
644     **     status    int         TRUE = success, FALSE = fail
645     **
646     **  Called:  jauC2s, vvd
647     **
648     **  This revision:  2008 May 27
649     */
650     {
651        double p[] = new double[3];
652 
653 
654        p[0] = 100.0;
655        p[1] = -50.0;
656        p[2] =  25.0;
657 
658        SphericalCoordinate ret = jauC2s(p);
659 
660        vvd(ret.alpha, -0.4636476090008061162, 1e-14, "jauC2s", "theta");
661        vvd(ret.delta, 0.2199879773954594463, 1e-14, "jauC2s", "phi");
662 
663     }
664 
665     @Test
666     public void t_c2t00a()
667     /**
668     **
669     **  Test jauC2t00a function.
670     **
671     **  Returned:
672     **     status    int         TRUE = success, FALSE = fail
673     **
674     **  Called:  jauC2t00a, vvd
675     **
676     **  This revision:  2008 November 28
677     */
678     {
679        double tta, ttb, uta, utb, xp, yp, rc2t[][] = new double[3][3];
680 
681 
682        tta = 2400000.5;
683        uta = 2400000.5;
684        ttb = 53736.0;
685        utb = 53736.0;
686        xp = 2.55060238e-7;
687        yp = 1.860359247e-6;
688 
689        rc2t = jauC2t00a(tta, ttb, uta, utb, xp, yp);
690 
691        vvd(rc2t[0][0], -0.1810332128307182668, 1e-12,"jauC2t00a", "11");
692        vvd(rc2t[0][1], 0.9834769806938457836, 1e-12,"jauC2t00a", "12");
693        vvd(rc2t[0][2], 0.6555535638688341725e-4, 1e-12,"jauC2t00a", "13");
694 
695        vvd(rc2t[1][0], -0.9834768134135984552, 1e-12,"jauC2t00a", "21");
696        vvd(rc2t[1][1], -0.1810332203649520727, 1e-12,"jauC2t00a", "22");
697        vvd(rc2t[1][2], 0.5749801116141056317e-3, 1e-12,"jauC2t00a", "23");
698 
699        vvd(rc2t[2][0], 0.5773474014081406921e-3, 1e-12,"jauC2t00a", "31");
700        vvd(rc2t[2][1], 0.3961832391770163647e-4, 1e-12,"jauC2t00a", "32");
701        vvd(rc2t[2][2], 0.9999998325501692289, 1e-12,"jauC2t00a", "33");
702 
703     }
704 
705     @Test
706     public void t_c2t00b()
707     /**
708     **
709     **  Test jauC2t00b function.
710     **
711     **  Returned:
712     **     status    int         TRUE = success, FALSE = fail
713     **
714     **  Called:  jauC2t00b, vvd
715     **
716     **  This revision:  2008 November 28
717     */
718     {
719        double tta, ttb, uta, utb, xp, yp, rc2t[][] = new double[3][3];
720 
721 
722        tta = 2400000.5;
723        uta = 2400000.5;
724        ttb = 53736.0;
725        utb = 53736.0;
726        xp = 2.55060238e-7;
727        yp = 1.860359247e-6;
728 
729        rc2t = jauC2t00b(tta, ttb, uta, utb, xp, yp);
730 
731        vvd(rc2t[0][0], -0.1810332128439678965, 1e-12,"jauC2t00b", "11");
732        vvd(rc2t[0][1], 0.9834769806913872359, 1e-12,"jauC2t00b", "12");
733        vvd(rc2t[0][2], 0.6555565082458415611e-4, 1e-12,"jauC2t00b", "13");
734 
735        vvd(rc2t[1][0], -0.9834768134115435923, 1e-12,"jauC2t00b", "21");
736        vvd(rc2t[1][1], -0.1810332203784001946, 1e-12,"jauC2t00b", "22");
737        vvd(rc2t[1][2], 0.5749793922030017230e-3, 1e-12,"jauC2t00b", "23");
738 
739        vvd(rc2t[2][0], 0.5773467471863534901e-3, 1e-12,"jauC2t00b", "31");
740        vvd(rc2t[2][1], 0.3961790411549945020e-4, 1e-12,"jauC2t00b", "32");
741        vvd(rc2t[2][2], 0.9999998325505635738, 1e-12,"jauC2t00b", "33");
742 
743     }
744 
745     @Test
746     public void t_c2t06a()
747     /**
748     **
749     **  Test jauC2t06a function.
750     **
751     **  Returned:
752     **     status    int         TRUE = success, FALSE = fail
753     **
754     **  Called:  jauC2t06a, vvd
755     **
756     **  This revision:  2008 November 28
757     */
758     {
759        double tta, ttb, uta, utb, xp, yp, rc2t[][] = new double[3][3];
760 
761 
762        tta = 2400000.5;
763        uta = 2400000.5;
764        ttb = 53736.0;
765        utb = 53736.0;
766        xp = 2.55060238e-7;
767        yp = 1.860359247e-6;
768 
769        rc2t = jauC2t06a(tta, ttb, uta, utb, xp, yp);
770 
771        vvd(rc2t[0][0], -0.1810332128305897282, 1e-12,"jauC2t06a", "11");
772        vvd(rc2t[0][1], 0.9834769806938592296, 1e-12,"jauC2t06a", "12");
773        vvd(rc2t[0][2], 0.6555550962998436505e-4, 1e-12,"jauC2t06a", "13");
774 
775        vvd(rc2t[1][0], -0.9834768134136214897, 1e-12,"jauC2t06a", "21");
776        vvd(rc2t[1][1], -0.1810332203649130832, 1e-12,"jauC2t06a", "22");
777        vvd(rc2t[1][2], 0.5749800844905594110e-3, 1e-12,"jauC2t06a", "23");
778 
779        vvd(rc2t[2][0], 0.5773474024748545878e-3, 1e-12,"jauC2t06a", "31");
780        vvd(rc2t[2][1], 0.3961816829632690581e-4, 1e-12,"jauC2t06a", "32");
781        vvd(rc2t[2][2], 0.9999998325501747785, 1e-12,"jauC2t06a", "33");
782 
783     }
784 
785     @Test
786     public void t_c2tcio()
787     /**
788     **
789     **  Test jauC2tcio function.
790     **
791     **  Returned:
792     **     status    int         TRUE = success, FALSE = fail
793     **
794     **  Called:  jauC2tcio, vvd
795     **
796     **  This revision:  2008 November 28
797     */
798     {
799        double rc2i[][] = new double[3][3], era, rpom[][] = new double[3][3], rc2t[][] = new double[3][3];
800 
801 
802        rc2i[0][0] =  0.9999998323037164738;
803        rc2i[0][1] =  0.5581526271714303683e-9;
804        rc2i[0][2] = -0.5791308477073443903e-3;
805 
806        rc2i[1][0] = -0.2384266227524722273e-7;
807        rc2i[1][1] =  0.9999999991917404296;
808        rc2i[1][2] = -0.4020594955030704125e-4;
809 
810        rc2i[2][0] =  0.5791308472168153320e-3;
811        rc2i[2][1] =  0.4020595661593994396e-4;
812        rc2i[2][2] =  0.9999998314954572365;
813 
814        era = 1.75283325530307;
815 
816        rpom[0][0] =  0.9999999999999674705;
817        rpom[0][1] = -0.1367174580728847031e-10;
818        rpom[0][2] =  0.2550602379999972723e-6;
819 
820        rpom[1][0] =  0.1414624947957029721e-10;
821        rpom[1][1] =  0.9999999999982694954;
822        rpom[1][2] = -0.1860359246998866338e-5;
823 
824        rpom[2][0] = -0.2550602379741215275e-6;
825        rpom[2][1] =  0.1860359247002413923e-5;
826        rpom[2][2] =  0.9999999999982369658;
827 
828 
829        rc2t = jauC2tcio(rc2i, era, rpom);
830 
831        vvd(rc2t[0][0], -0.1810332128307110439, 1e-12,"jauC2tcio", "11");
832        vvd(rc2t[0][1], 0.9834769806938470149, 1e-12,"jauC2tcio", "12");
833        vvd(rc2t[0][2], 0.6555535638685466874e-4, 1e-12,"jauC2tcio", "13");
834 
835        vvd(rc2t[1][0], -0.9834768134135996657, 1e-12,"jauC2tcio", "21");
836        vvd(rc2t[1][1], -0.1810332203649448367, 1e-12,"jauC2tcio", "22");
837        vvd(rc2t[1][2], 0.5749801116141106528e-3, 1e-12,"jauC2tcio", "23");
838 
839        vvd(rc2t[2][0], 0.5773474014081407076e-3, 1e-12,"jauC2tcio", "31");
840        vvd(rc2t[2][1], 0.3961832391772658944e-4, 1e-12,"jauC2tcio", "32");
841        vvd(rc2t[2][2], 0.9999998325501691969, 1e-12,"jauC2tcio", "33");
842 
843     }
844 
845     @Test
846     public void t_c2teqx()
847     /**
848     **
849     **  Test jauC2teqx function.
850     **
851     **  Returned:
852     **     status    int         TRUE = success, FALSE = fail
853     **
854     **  Called:  jauC2teqx, vvd
855     **
856     **  This revision:  2008 November 28
857     */
858     {
859        double rbpn[][] = new double[3][3], gst, rpom[][] = new double[3][3], rc2t[][] = new double[3][3];
860 
861 
862        rbpn[0][0] =  0.9999989440476103608;
863        rbpn[0][1] = -0.1332881761240011518e-2;
864        rbpn[0][2] = -0.5790767434730085097e-3;
865 
866        rbpn[1][0] =  0.1332858254308954453e-2;
867        rbpn[1][1] =  0.9999991109044505944;
868        rbpn[1][2] = -0.4097782710401555759e-4;
869 
870        rbpn[2][0] =  0.5791308472168153320e-3;
871        rbpn[2][1] =  0.4020595661593994396e-4;
872        rbpn[2][2] =  0.9999998314954572365;
873 
874        gst = 1.754166138040730516;
875 
876        rpom[0][0] =  0.9999999999999674705;
877        rpom[0][1] = -0.1367174580728847031e-10;
878        rpom[0][2] =  0.2550602379999972723e-6;
879 
880        rpom[1][0] =  0.1414624947957029721e-10;
881        rpom[1][1] =  0.9999999999982694954;
882        rpom[1][2] = -0.1860359246998866338e-5;
883 
884        rpom[2][0] = -0.2550602379741215275e-6;
885        rpom[2][1] =  0.1860359247002413923e-5;
886        rpom[2][2] =  0.9999999999982369658;
887 
888        rc2t = jauC2teqx(rbpn, gst, rpom);
889 
890        vvd(rc2t[0][0], -0.1810332128528685730, 1e-12,"jauC2teqx", "11");
891        vvd(rc2t[0][1], 0.9834769806897685071, 1e-12,"jauC2teqx", "12");
892        vvd(rc2t[0][2], 0.6555535639982634449e-4, 1e-12,"jauC2teqx", "13");
893 
894        vvd(rc2t[1][0], -0.9834768134095211257, 1e-12,"jauC2teqx", "21");
895        vvd(rc2t[1][1], -0.1810332203871023800, 1e-12,"jauC2teqx", "22");
896        vvd(rc2t[1][2], 0.5749801116126438962e-3, 1e-12,"jauC2teqx", "23");
897 
898        vvd(rc2t[2][0], 0.5773474014081539467e-3, 1e-12,"jauC2teqx", "31");
899        vvd(rc2t[2][1], 0.3961832391768640871e-4, 1e-12,"jauC2teqx", "32");
900        vvd(rc2t[2][2], 0.9999998325501691969, 1e-12,"jauC2teqx", "33");
901 
902     }
903 
904     @Test
905     public void t_c2tpe()
906     /**
907     **
908     **  Test jauC2tpe function.
909     **
910     **  Returned:
911     **     status    int         TRUE = success, FALSE = fail
912     **
913     **  Called:  jauC2tpe, vvd
914     **
915     **  This revision:  2008 November 28
916     */
917     {
918        double tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t[][] = new double[3][3];
919 
920 
921        tta = 2400000.5;
922        uta = 2400000.5;
923        ttb = 53736.0;
924        utb = 53736.0;
925        deps =  0.4090789763356509900;
926        dpsi = -0.9630909107115582393e-5;
927        xp = 2.55060238e-7;
928        yp = 1.860359247e-6;
929 
930        rc2t = jauC2tpe(tta, ttb, uta, utb, dpsi, deps, xp, yp);
931 
932        vvd(rc2t[0][0], -0.1813677995763029394, 1e-12,"jauC2tpe", "11");
933        vvd(rc2t[0][1], 0.9023482206891683275, 1e-12,"jauC2tpe", "12");
934        vvd(rc2t[0][2], -0.3909902938641085751, 1e-12,"jauC2tpe", "13");
935 
936        vvd(rc2t[1][0], -0.9834147641476804807, 1e-12,"jauC2tpe", "21");
937        vvd(rc2t[1][1], -0.1659883635434995121, 1e-12,"jauC2tpe", "22");
938        vvd(rc2t[1][2], 0.7309763898042819705e-1, 1e-12,"jauC2tpe", "23");
939 
940        vvd(rc2t[2][0], 0.1059685430673215247e-2, 1e-12,"jauC2tpe", "31");
941        vvd(rc2t[2][1], 0.3977631855605078674, 1e-12,"jauC2tpe", "32");
942        vvd(rc2t[2][2], 0.9174875068792735362, 1e-12,"jauC2tpe", "33");
943 
944     }
945 
946     @Test
947     public void t_c2txy()
948     /**
949     **
950     **  Test jauC2txy function.
951     **
952     **  Returned:
953     **     status    int         TRUE = success, FALSE = fail
954     **
955     **  Called:  jauC2txy, vvd
956     **
957     **  This revision:  2008 November 28
958     */
959     {
960        double tta, ttb, uta, utb, x, y, xp, yp, rc2t[][] = new double[3][3];
961 
962 
963        tta = 2400000.5;
964        uta = 2400000.5;
965        ttb = 53736.0;
966        utb = 53736.0;
967        x = 0.5791308486706011000e-3;
968        y = 0.4020579816732961219e-4;
969        xp = 2.55060238e-7;
970        yp = 1.860359247e-6;
971 
972        rc2t = jauC2txy(tta, ttb, uta, utb, x, y, xp, yp);
973 
974        vvd(rc2t[0][0], -0.1810332128306279253, 1e-12,"jauC2txy", "11");
975        vvd(rc2t[0][1], 0.9834769806938520084, 1e-12,"jauC2txy", "12");
976        vvd(rc2t[0][2], 0.6555551248057665829e-4, 1e-12,"jauC2txy", "13");
977 
978        vvd(rc2t[1][0], -0.9834768134136142314, 1e-12,"jauC2txy", "21");
979        vvd(rc2t[1][1], -0.1810332203649529312, 1e-12,"jauC2txy", "22");
980        vvd(rc2t[1][2], 0.5749800843594139912e-3, 1e-12,"jauC2txy", "23");
981 
982        vvd(rc2t[2][0], 0.5773474028619264494e-3, 1e-12,"jauC2txy", "31");
983        vvd(rc2t[2][1], 0.3961816546911624260e-4, 1e-12,"jauC2txy", "32");
984        vvd(rc2t[2][2], 0.9999998325501746670, 1e-12,"jauC2txy", "33");
985 
986     }
987 
988     @Test
989     public void t_cal2jd()
990     /**
991     **
992     **  Test jauCal2jd function.
993     **
994     **  Returned:
995     **     status    int         TRUE = success, FALSE = fail
996     **
997     **  Called:  jauCal2jd, vvd, viv
998     **
999     **  This revision:  2008 May 27
1000     */
1001     {
1002 
1003 
1004        try {
1005         JulianDate jd = jauCal2jd(2003, 06, 01);
1006 
1007            vvd(jd.djm0, 2400000.5, 0.0, "jauCal2jd", "djm0");
1008            vvd(jd.djm1,    52791.0, 0.0, "jauCal2jd", "djm");
1009     } catch (JSOFAIllegalParameter e) {
1010         fail("jauCal2jd should not throw execption");
1011     }
1012 
1013      //  viv(j, 0, "jauCal2jd", "j");
1014 
1015     }
1016 
1017     @Test
1018     public void t_cp()
1019     /**
1020     **
1021     **  Test jauCp function.
1022     **
1023     **  Returned:
1024     **     status    int         TRUE = success, FALSE = fail
1025     **
1026     **  Called:  jauCp, vvd
1027     **
1028     **  This revision:  2008 November 30
1029     */
1030     {
1031        double p[] = new double[3], c[] = new double[3];
1032 
1033 
1034        p[0] =  0.3;
1035        p[1] =  1.2;
1036        p[2] = -2.5;
1037 
1038        jauCp(p, c);
1039 
1040        vvd(c[0],  0.3, 0.0, "jauCp", "1");
1041        vvd(c[1],  1.2, 0.0, "jauCp", "2");
1042        vvd(c[2], -2.5, 0.0, "jauCp", "3");
1043     }
1044 
1045     @Test
1046     public void t_cpv()
1047     /**
1048     **
1049     **  Test jauCpv function.
1050     **
1051     **  Returned:
1052     **     status    int         TRUE = success, FALSE = fail
1053     **
1054     **  Called:  jauCpv, vvd
1055     **
1056     **  This revision:  2008 May 25
1057     */
1058     {
1059        double pv[][] = new double[2][3], c[][] = new double[2][3];
1060 
1061 
1062        pv[0][0] =  0.3;
1063        pv[0][1] =  1.2;
1064        pv[0][2] = -2.5;
1065 
1066        pv[1][0] = -0.5;
1067        pv[1][1] =  3.1;
1068        pv[1][2] =  0.9;
1069 
1070        jauCpv(pv, c);
1071 
1072        vvd(c[0][0],  0.3, 0.0, "jauCpv", "p1");
1073        vvd(c[0][1],  1.2, 0.0, "jauCpv", "p2");
1074        vvd(c[0][2], -2.5, 0.0, "jauCpv", "p3");
1075 
1076        vvd(c[1][0], -0.5, 0.0, "jauCpv", "v1");
1077        vvd(c[1][1],  3.1, 0.0, "jauCpv", "v2");
1078        vvd(c[1][2],  0.9, 0.0, "jauCpv", "v3");
1079 
1080     }
1081 
1082     @Test
1083     public void t_cr()
1084     /**
1085     **
1086     **  Test jauCr function.
1087     **
1088     **  Returned:
1089     **     status    int         TRUE = success, FALSE = fail
1090     **
1091     **  Called:  jauCr, vvd
1092     **
1093     **  This revision:  2008 November 30
1094     */
1095     {
1096        double r[][] = new double[3][3], c[][] = new double[3][3];
1097 
1098 
1099        r[0][0] = 2.0;
1100        r[0][1] = 3.0;
1101        r[0][2] = 2.0;
1102 
1103        r[1][0] = 3.0;
1104        r[1][1] = 2.0;
1105        r[1][2] = 3.0;
1106 
1107        r[2][0] = 3.0;
1108        r[2][1] = 4.0;
1109        r[2][2] = 5.0;
1110 
1111        jauCr(r, c);
1112 
1113        vvd(c[0][0], 2.0, 0.0, "jauCr", "11");
1114        vvd(c[0][1], 3.0, 0.0, "jauCr", "12");
1115        vvd(c[0][2], 2.0, 0.0, "jauCr", "13");
1116 
1117        vvd(c[1][0], 3.0, 0.0, "jauCr", "21");
1118        vvd(c[1][1], 2.0, 0.0, "jauCr", "22");
1119        vvd(c[1][2], 3.0, 0.0, "jauCr", "23");
1120 
1121        vvd(c[2][0], 3.0, 0.0, "jauCr", "31");
1122        vvd(c[2][1], 4.0, 0.0, "jauCr", "32");
1123        vvd(c[2][2], 5.0, 0.0, "jauCr", "33");
1124     }
1125 
1126     @Test
1127     public void t_d2tf()
1128     /**
1129     **
1130     **  Test jauD2tf function.
1131     **
1132     **  Returned:
1133     **     status    int         TRUE = success, FALSE = fail
1134     **
1135     **  Called:  jauD2tf, viv, vvd
1136     **
1137     **  This revision:  2008 November 30
1138     */
1139     {
1140        int ihmsf[] = new int[4];
1141        char s;
1142 
1143 
1144        s = jauD2tf(9, -0.987654320601852, ihmsf);
1145 
1146        viv((int)s, '-', "jauD2tf", "s");
1147 
1148        viv(ihmsf[0], 23, "jauD2tf", "0");
1149        viv(ihmsf[1], 42, "jauD2tf", "1");
1150        viv(ihmsf[2], 13, "jauD2tf", "2");
1151        viv(ihmsf[3], 333300000, "jauD2tf", "3");
1152 
1153     }
1154 
1155     @Test
1156     public void t_dat()
1157     /**
1158     **
1159     **  Test jauDat function.
1160     **
1161     **  Returned:
1162     **     status    int         TRUE = success, FALSE = fail
1163     **
1164     **  Called:  jauDat, vvd, viv
1165     **
1166     **  This revision:  2008 November 29
1167     */
1168     {
1169        double deltat;
1170       int nls = leapSeconds.length;
1171       viv(nls, 42, "jauDat", "number of leap second entries");
1172       viv(leapSeconds[nls-1].iyear, 2017, "jauDat", "year of last leap second");
1173       viv(leapSeconds[nls-1].month, 1, "jauDat", "month of last leap second");
1174        try {
1175            deltat = jauDat(2003, 6, 1, 0.0);
1176 
1177            vvd(deltat, 32.0, 0.0, "jauDat", "d1");
1178        } catch (Exception e) {
1179            fail("jauDat j1");
1180        }
1181 
1182        try {
1183            deltat = jauDat(2008, 1, 17, 0.0);
1184 
1185            vvd(deltat, 33.0, 0.0, "jauDat", "d2");
1186        } catch (Exception e) {
1187            fail("jauDat j2");
1188        }
1189 
1190        try {
1191            deltat = jauDat(2017, 9, 1, 0.0 );
1192            vvd(deltat, 37.0, 0.0, "jauDat", "d3");
1193 
1194        } catch (Exception e) {
1195            fail("jauDat j3");
1196        }
1197        
1198     }
1199 
1200     @Test
1201     public void t_dtdb()
1202     /**
1203     **
1204     **  Test jauDtdb function.
1205     **
1206     **  Returned:
1207     **     status    int         TRUE = success, FALSE = fail
1208     **
1209     **  Called:  jauDtdb, vvd
1210     **
1211     **  This revision:  2008 November 28
1212     */
1213     {
1214        double dtdb;
1215 
1216 
1217        dtdb = jauDtdb(2448939.5, 0.123, 0.76543, 5.0123, 5525.242, 3190.0);
1218 
1219        vvd(dtdb, -0.1280368005936998991e-2, 1e-15, "jauDtdb", "");
1220 
1221     }
1222 
1223     @Test
1224     public void t_ee00()
1225     /**
1226     **
1227     **  Test jauEe00 function.
1228     **
1229     **  Returned:
1230     **     status    int         TRUE = success, FALSE = fail
1231     **
1232     **  Called:  jauEe00, vvd
1233     **
1234     **  This revision:  2008 November 28
1235     */
1236     {
1237        double epsa, dpsi, ee;
1238 
1239 
1240        epsa =  0.4090789763356509900;
1241        dpsi = -0.9630909107115582393e-5;
1242 
1243        ee = jauEe00(2400000.5, 53736.0, epsa, dpsi);
1244 
1245        vvd(ee, -0.8834193235367965479e-5, 1e-18, "jauEe00", "");
1246 
1247     }
1248 
1249     @Test
1250     public void t_ee00a()
1251     /**
1252     **
1253     **  Test jauEe00a function.
1254     **
1255     **  Returned:
1256     **     status    int         TRUE = success, FALSE = fail
1257     **
1258     **  Called:  jauEe00a, vvd
1259     **
1260     **  This revision:  2008 November 28
1261     */
1262     {
1263        double ee;
1264 
1265 
1266        ee = jauEe00a(2400000.5, 53736.0);
1267 
1268        vvd(ee, -0.8834192459222588227e-5, 1e-18, "jauEe00a", "");
1269 
1270     }
1271 
1272     @Test
1273     public void t_ee00b()
1274     /**
1275     **
1276     **  Test jauEe00b function.
1277     **
1278     **  Returned:
1279     **     status    int         TRUE = success, FALSE = fail
1280     **
1281     **  Called:  jauEe00b, vvd
1282     **
1283     **  This revision:  2008 November 28
1284     */
1285     {
1286        double ee;
1287 
1288 
1289        ee = jauEe00b(2400000.5, 53736.0);
1290 
1291        vvd(ee, -0.8835700060003032831e-5, 1e-18, "jauEe00b", "");
1292 
1293     }
1294 
1295     @Test
1296     public void t_ee06a()
1297     /**
1298     **
1299     **  Test jauEe06a function.
1300     **
1301     **  Returned:
1302     **     status    int         TRUE = success, FALSE = fail
1303     **
1304     **  Called:  jauEe06a, vvd
1305     **
1306     **  This revision:  2008 November 28
1307     */
1308     {
1309        double ee;
1310 
1311 
1312        ee = jauEe06a(2400000.5, 53736.0);
1313 
1314        vvd(ee, -0.8834195072043790156e-5, 1e-15, "jauEe06a", "");
1315     }
1316 
1317     @Test
1318     public void t_eect00()
1319     /**
1320     **
1321     **  Test jauEect00 function.
1322     **
1323     **  Returned:
1324     **     status    int         TRUE = success, FALSE = fail
1325     **
1326     **  Called:  jauEect00, vvd
1327     **
1328     **  This revision:  2008 November 28
1329     */
1330     {
1331        double eect;
1332 
1333 
1334        eect = jauEect00(2400000.5, 53736.0);
1335 
1336        vvd(eect, 0.2046085004885125264e-8, 1e-20, "jauEect00", "");
1337 
1338     }
1339 
1340     @Test
1341     public void t_eform()
1342     /**
1343     **
1344     **  Test jauEform function.
1345     **
1346     **  Returned:
1347     **     status    int         TRUE = success, FALSE = fail
1348     **
1349     **  Called:  jauEform, viv, vvd
1350     **
1351     **  This revision:  2010 January 18
1352     */
1353     {
1354         ReferenceEllipsoid ef;
1355 
1356         try {
1357             ef = jauEform( 0 );
1358             fail("jauEform should throw exception for illegal identifier");
1359         } catch (JSOFAIllegalParameter e) {
1360         }
1361 
1362 
1363         try {
1364             ef = jauEform( 1 );
1365 
1366             vvd(ef.a, 6378137.0, 1e-10, "jauEform", "a");
1367             vvd(ef.f, 0.0033528106647474807, 1e-18, "jauEform", "f");
1368 
1369             ef = jauEform( 2 );
1370 
1371             vvd(ef.a, 6378137.0, 1e-10, "jauEform", "a");
1372             vvd(ef.f, 0.0033528106811823189, 1e-18, "jauEform", "f");
1373 
1374             ef = jauEform( 3 );
1375 
1376             vvd(ef.a, 6378135.0, 1e-10, "jauEform", "a");
1377             vvd(ef.f, 0.0033527794541675049, 1e-18, "jauEform", "f");
1378         } catch (JSOFAIllegalParameter e) {
1379             fail("jauEform should not throw exception for legal identifier");
1380         }
1381 
1382         try {
1383             ef = jauEform( 4 );
1384             fail("jauEform should throw exception for illegal identifier");
1385         } catch (JSOFAIllegalParameter e) {
1386 
1387         }
1388     }
1389 
1390     @Test
1391     public void t_eo06a()
1392     /**
1393     **
1394     **  Test jauEo06a function.
1395     **
1396     **  Returned:
1397     **     status    int         TRUE = success, FALSE = fail
1398     **
1399     **  Called:  jauEo06a, vvd
1400     **
1401     **  This revision:  2008 November 28
1402     */
1403     {
1404        double eo;
1405 
1406 
1407        eo = jauEo06a(2400000.5, 53736.0);
1408 
1409        vvd(eo, -0.1332882371941833644e-2, 1e-15, "jauEo06a", "");
1410 
1411     }
1412 
1413     @Test
1414     public void t_eors()
1415     /**
1416     **
1417     **  Test jauEors function.
1418     **
1419     **  Returned:
1420     **     status    int         TRUE = success, FALSE = fail
1421     **
1422     **  Called:  jauEors, vvd
1423     **
1424     **  This revision:  2008 November 28
1425     */
1426     {
1427        double rnpb[][] = new double[3][3], s, eo;
1428 
1429 
1430        rnpb[0][0] =  0.9999989440476103608;
1431        rnpb[0][1] = -0.1332881761240011518e-2;
1432        rnpb[0][2] = -0.5790767434730085097e-3;
1433 
1434        rnpb[1][0] =  0.1332858254308954453e-2;
1435        rnpb[1][1] =  0.9999991109044505944;
1436        rnpb[1][2] = -0.4097782710401555759e-4;
1437 
1438        rnpb[2][0] =  0.5791308472168153320e-3;
1439        rnpb[2][1] =  0.4020595661593994396e-4;
1440        rnpb[2][2] =  0.9999998314954572365;
1441 
1442        s = -0.1220040848472271978e-7;
1443 
1444        eo = jauEors(rnpb, s);
1445 
1446        vvd(eo, -0.1332882715130744606e-2, 1e-14, "jauEors", "");
1447 
1448     }
1449 
1450     @Test
1451     public void t_epb()
1452     /**
1453     **
1454     **  Test jauEpb function.
1455     **
1456     **  Returned:
1457     **     status    int         TRUE = success, FALSE = fail
1458     **
1459     **  Called:  jauEpb, vvd
1460     **
1461     **  This revision:  2008 May 27
1462     */
1463     {
1464        double epb;
1465 
1466 
1467        epb = jauEpb(2415019.8135, 30103.18648);
1468 
1469        vvd(epb, 1982.418424159278580, 1e-12, "jauEpb", "");
1470 
1471     }
1472 
1473     @Test
1474     public void t_epb2jd()
1475     /**
1476     **
1477     **  Test jauEpb2jd function.
1478     **
1479     **  Returned:
1480     **     status    int         TRUE = success, FALSE = fail
1481     **
1482     **  Called:  jauEpb2jd, vvd
1483     **
1484     **  This revision:  2008 November 29
1485     */
1486     {
1487        double epb;
1488 
1489 
1490        epb = 1957.3;
1491 
1492        JulianDate jd = jauEpb2jd(epb);
1493 
1494        vvd(jd.djm0, 2400000.5, 1e-9, "jauEpb2jd", "djm0");
1495        vvd(jd.djm1, 35948.1915101513, 1e-9, "jauEpb2jd", "mjd");
1496 
1497     }
1498 
1499     @Test
1500     public void t_epj()
1501     /**
1502     **
1503     **  Test jauEpj function.
1504     **
1505     **  Returned:
1506     **     status    int         TRUE = success, FALSE = fail
1507     **
1508     **  Called:  jauEpj, vvd
1509     **
1510     **  This revision:  2008 May 27
1511     */
1512     {
1513        double epj;
1514 
1515 
1516        epj = jauEpj(2451545, -7392.5);
1517 
1518        vvd(epj, 1979.760438056125941, 1e-12, "jauEpj", "");
1519 
1520     }
1521 
1522     @Test
1523     public void t_epj2jd()
1524     /**
1525     **
1526     **  Test jauEpj2jd function.
1527     **
1528     **  Returned:
1529     **     status    int         TRUE = success, FALSE = fail
1530     **
1531     **  Called:  jauEpj2jd, vvd
1532     **
1533     **  This revision:  2008 November 29
1534     */
1535     {
1536        double epj;
1537 
1538 
1539        epj = 1996.8;
1540 
1541        JulianDate jd = jauEpj2jd(epj);
1542 
1543        vvd(jd.djm0, 2400000.5, 1e-9, "jauEpj2jd", "djm0");
1544        vvd(jd.djm1,    50375.7, 1e-9, "jauEpj2jd", "mjd");
1545 
1546     }
1547 
1548     @Test
1549     public void t_epv00()
1550     /**
1551     **
1552     **  Test jauEpv00 function.
1553     **
1554     **  Returned:
1555     **     status    int         TRUE = success, FALSE = fail
1556     **
1557     **  Called: jauEpv00, vvd, viv
1558     **
1559     **  This revision:  2008 November 28
1560     */
1561     {
1562        double pvh[][] = new double[2][3], pvb[][] = new double[2][3];
1563     
1564 
1565 
1566        int j = jauEpv00(2400000.5, 53411.52501161, pvh, pvb);
1567 
1568        vvd(pvh[0][0], -0.7757238809297706813, 1e-14,
1569            "jauEpv00", "ph(x)");
1570        vvd(pvh[0][1], 0.5598052241363340596, 1e-14,
1571            "jauEpv00", "ph(y)");
1572        vvd(pvh[0][2], 0.2426998466481686993, 1e-14,
1573            "jauEpv00", "ph(z)");
1574 
1575        vvd(pvh[1][0], -0.1091891824147313846e-1, 1e-15,
1576            "jauEpv00", "vh(x)");
1577        vvd(pvh[1][1], -0.1247187268440845008e-1, 1e-15,
1578            "jauEpv00", "vh(y)");
1579        vvd(pvh[1][2], -0.5407569418065039061e-2, 1e-15,
1580            "jauEpv00", "vh(z)");
1581 
1582        vvd(pvb[0][0], -0.7714104440491111971, 1e-14,
1583            "jauEpv00", "pb(x)");
1584        vvd(pvb[0][1], 0.5598412061824171323, 1e-14,
1585            "jauEpv00", "pb(y)");
1586        vvd(pvb[0][2], 0.2425996277722452400, 1e-14,
1587            "jauEpv00", "pb(z)");
1588 
1589        vvd(pvb[1][0], -0.1091874268116823295e-1, 1e-15,
1590            "jauEpv00", "vb(x)");
1591        vvd(pvb[1][1], -0.1246525461732861538e-1, 1e-15,
1592            "jauEpv00", "vb(y)");
1593        vvd(pvb[1][2], -0.5404773180966231279e-2, 1e-15,
1594            "jauEpv00", "vb(z)");
1595 
1596        viv(j, 0, "jauEpv00", "j");
1597 
1598     }
1599 
1600     @Test
1601     public void t_eqeq94()
1602     /**
1603     **
1604     **  Test jauEqeq94 function.
1605     **
1606     **  Returned:
1607     **     status    int         TRUE = success, FALSE = fail
1608     **
1609     **  Called:  jauEqeq94, vvd
1610     **
1611     **  This revision:  2008 November 28
1612     */
1613     {
1614        double eqeq;
1615 
1616 
1617        eqeq = jauEqeq94(2400000.5, 41234.0);
1618 
1619        vvd(eqeq, 0.5357758254609256894e-4, 1e-17, "jauEqeq94", "");
1620 
1621     }
1622 
1623     @Test
1624     public void t_era00()
1625     /**
1626     **
1627     **  Test jauEra00 function.
1628     **
1629     **  Returned:
1630     **     status    int         TRUE = success, FALSE = fail
1631     **
1632     **  Called:  jauEra00, vvd
1633     **
1634     **  This revision:  2008 May 26
1635     */
1636     {
1637        double era00;
1638 
1639 
1640        era00 = jauEra00(2400000.5, 54388.0);
1641 
1642        vvd(era00, 0.4022837240028158102, 1e-12, "jauEra00", "");
1643 
1644     }
1645 
1646     @Test
1647     public void t_fad03()
1648     /**
1649     **
1650     **  Test jauFad03 function.
1651     **
1652     **  Returned:
1653     **     status    int         TRUE = success, FALSE = fail
1654     **
1655     **  Called:  jauFad03, vvd
1656     **
1657     **  This revision:  2008 May 22
1658     */
1659     {
1660        vvd(jauFad03(0.80), 1.946709205396925672, 1e-12,
1661            "jauFad03", "");
1662     }
1663 
1664     @Test
1665     public void t_fae03()
1666     /**
1667     **
1668     **  Test jauFae03 function.
1669     **
1670     **  Returned:
1671     **     status    int         TRUE = success, FALSE = fail
1672     **
1673     **  Called:  jauFae03, vvd
1674     **
1675     **  This revision:  2008 May 22
1676     */
1677     {
1678        vvd(jauFae03(0.80), 1.744713738913081846, 1e-12,
1679            "jauFae03", "");
1680     }
1681 
1682     @Test
1683     public void t_faf03()
1684     /**
1685     **
1686     **  Test jauFaf03 function.
1687     **
1688     **  Returned:
1689     **     status    int         TRUE = success, FALSE = fail
1690     **
1691     **  Called:  jauFaf03, vvd
1692     **
1693     **  This revision:  2008 May 22
1694     */
1695     {
1696        vvd(jauFaf03(0.80), 0.2597711366745499518, 1e-12,
1697            "jauFaf03", "");
1698     }
1699 
1700     @Test
1701     public void t_faju03()
1702     /**
1703     **
1704     **  Test jauFaju03 function.
1705     **
1706     **  Returned:
1707     **     status    int         TRUE = success, FALSE = fail
1708     **
1709     **  Called:  jauFaju03, vvd
1710     **
1711     **  This revision:  2008 May 22
1712     */
1713     {
1714        vvd(jauFaju03(0.80), 5.275711665202481138, 1e-12,
1715            "jauFaju03", "");
1716     }
1717 
1718     @Test
1719     public void t_fal03()
1720     /**
1721     **
1722     **  Test jauFal03 function.
1723     **
1724     **  Returned:
1725     **     status    int         TRUE = success, FALSE = fail
1726     **
1727     **  Called:  jauFal03, vvd
1728     **
1729     **  This revision:  2008 May 22
1730     */
1731     {
1732        vvd(jauFal03(0.80), 5.132369751108684150, 1e-12,
1733            "jauFal03", "");
1734     }
1735 
1736     @Test
1737     public void t_falp03()
1738     /**
1739     **
1740     **  Test jauFalp03 function.
1741     **
1742     **  Returned:
1743     **     status    int         TRUE = success, FALSE = fail
1744     **
1745     **  Called:  jauFalp03, vvd
1746     **
1747     **  This revision:  2008 May 22
1748     */
1749     {
1750        vvd(jauFalp03(0.80), 6.226797973505507345, 1e-12,
1751           "jauFalp03", "");
1752     }
1753 
1754     @Test
1755     public void t_fama03()
1756     /**
1757     **
1758     **  Test jauFama03 function.
1759     **
1760     **  Returned:
1761     **     status    int         TRUE = success, FALSE = fail
1762     **
1763     **  Called:  jauFama03, vvd
1764     **
1765     **  This revision:  2008 May 22
1766     */
1767     {
1768        vvd(jauFama03(0.80), 3.275506840277781492, 1e-12,
1769            "jauFama03", "");
1770     }
1771 
1772     @Test
1773     public void t_fame03()
1774     /**
1775     **
1776     **  Test jauFame03 function.
1777     **
1778     **  Returned:
1779     **     status    int         TRUE = success, FALSE = fail
1780     **
1781     **  Called:  jauFame03, vvd
1782     **
1783     **  This revision:  2008 May 22
1784     */
1785     {
1786        vvd(jauFame03(0.80), 5.417338184297289661, 1e-12,
1787            "jauFame03", "");
1788     }
1789 
1790     @Test
1791     public void t_fane03()
1792     /**
1793     **
1794     **  Test jauFane03 function.
1795     **
1796     **  Returned:
1797     **     status    int         TRUE = success, FALSE = fail
1798     **
1799     **  Called:  jauFane03, vvd
1800     **
1801     **  This revision:  2008 May 22
1802     */
1803     {
1804        vvd(jauFane03(0.80), 2.079343830860413523, 1e-12,
1805            "jauFane03", "");
1806     }
1807 
1808     @Test
1809     public void t_faom03()
1810     /**
1811     **
1812     **  Test jauFaom03 function.
1813     **
1814     **  Returned:
1815     **     status    int         TRUE = success, FALSE = fail
1816     **
1817     **  Called:  jauFaom03, vvd
1818     **
1819     **  This revision:  2008 May 22
1820     */
1821     {
1822        vvd(jauFaom03(0.80), -5.973618440951302183, 1e-12,
1823            "jauFaom03", "");
1824     }
1825 
1826     @Test
1827     public void t_fapa03()
1828     /**
1829     **
1830     **  Test jauFapa03 function.
1831     **
1832     **  Returned:
1833     **     status    int         TRUE = success, FALSE = fail
1834     **
1835     **  Called:  jauFapa03, vvd
1836     **
1837     **  This revision:  2008 November 28
1838     */
1839     {
1840        vvd(jauFapa03(0.80), 0.1950884762240000000e-1, 1e-12,
1841            "jauFapa03", "");
1842     }
1843 
1844     @Test
1845     public void t_fasa03()
1846     /**
1847     **
1848     **  Test jauFasa03 function.
1849     **
1850     **  Returned:
1851     **     status    int         TRUE = success, FALSE = fail
1852     **
1853     **  Called:  jauFasa03, vvd
1854     **
1855     **  This revision:  2008 May 22
1856     */
1857     {
1858        vvd(jauFasa03(0.80), 5.371574539440827046, 1e-12,
1859            "jauFasa03", "");
1860     }
1861 
1862     @Test
1863     public void t_faur03()
1864     /**
1865     **
1866     **  Test jauFaur03 function.
1867     **
1868     **  Returned:
1869     **     status    int         TRUE = success, FALSE = fail
1870     **
1871     **  Called:  jauFaur03, vvd
1872     **
1873     **  This revision:  2008 May 22
1874     */
1875     {
1876        vvd(jauFaur03(0.80), 5.180636450180413523, 1e-12,
1877            "jauFaur03", "");
1878     }
1879 
1880     @Test
1881     public void t_fave03()
1882     /**
1883     **
1884     **  Test jauFave03 function.
1885     **
1886     **  Returned:
1887     **     status    int         TRUE = success, FALSE = fail
1888     **
1889     **  Called:  jauFave03, vvd
1890     **
1891     **  This revision:  2008 May 22
1892     */
1893     {
1894        vvd(jauFave03(0.80), 3.424900460533758000, 1e-12,
1895            "jauFave03", "");
1896     }
1897 
1898     @Test
1899     public void t_fk52h()
1900     /**
1901     **
1902     **  Test jauFk52h function.
1903     **
1904     **  Returned:
1905     **     status    int         TRUE = success, FALSE = fail
1906     **
1907     **  Called:  jauFk52h, vvd
1908     **
1909     **  This revision:  2009 November 6
1910     */
1911     {
1912        double r5, d5, dr5, dd5, px5, rv5;
1913 
1914 
1915        r5  =  1.76779433;
1916        d5  = -0.2917517103;
1917        dr5 = -1.91851572e-7;
1918        dd5 = -5.8468475e-6;
1919        px5 =  0.379210;
1920        rv5 = -7.6;
1921 
1922       CatalogCoords cat = jauFk52h(r5, d5, dr5, dd5, px5, rv5);
1923 
1924        vvd(cat.pos.alpha, 1.767794226299947632, 1e-14,"jauFk52h", "ra");
1925        vvd(cat.pos.delta,  -0.2917516070530391757, 1e-14,"jauFk52h", "dec");
1926        vvd(cat.pm.alpha, -0.1961874125605721270e-6,1e-19,"jauFk52h", "dr5");
1927        vvd(cat.pm.delta, -0.58459905176693911e-5, 1e-19,"jauFk52h", "dd5");
1928        vvd(cat.px,  0.37921, 1e-14,"jauFk52h", "px");
1929        vvd(cat.rv, -7.6000000940000254, 1e-11,"jauFk52h", "rv");
1930 
1931     }
1932 
1933     @Test
1934     public void t_fk5hip()
1935     /**
1936     **
1937     **  Test jauFk5hip function.
1938     **
1939     **  Returned:
1940     **     status    int         TRUE = success, FALSE = fail
1941     **
1942     **  Called:  jauFk5hip, vvd
1943     **
1944     **  This revision:  2008 November 30
1945     */
1946     {
1947        double r5h[][] = new double[3][3], s5h[] = new double[3];
1948 
1949 
1950        jauFk5hip(r5h, s5h);
1951 
1952        vvd(r5h[0][0], 0.9999999999999928638, 1e-14,"jauFk5hip", "11");
1953        vvd(r5h[0][1], 0.1110223351022919694e-6, 1e-17,"jauFk5hip", "12");
1954        vvd(r5h[0][2], 0.4411803962536558154e-7, 1e-17,"jauFk5hip", "13");
1955        vvd(r5h[1][0], -0.1110223308458746430e-6, 1e-17,"jauFk5hip", "21");
1956        vvd(r5h[1][1], 0.9999999999999891830, 1e-14,"jauFk5hip", "22");
1957        vvd(r5h[1][2], -0.9647792498984142358e-7, 1e-17,"jauFk5hip", "23");
1958        vvd(r5h[2][0], -0.4411805033656962252e-7, 1e-17,"jauFk5hip", "31");
1959        vvd(r5h[2][1], 0.9647792009175314354e-7, 1e-17,"jauFk5hip", "32");
1960        vvd(r5h[2][2], 0.9999999999999943728, 1e-14,"jauFk5hip", "33");
1961        vvd(s5h[0], -0.1454441043328607981e-8, 1e-17,"jauFk5hip", "s1");
1962        vvd(s5h[1], 0.2908882086657215962e-8, 1e-17,"jauFk5hip", "s2");
1963        vvd(s5h[2], 0.3393695767766751955e-8, 1e-17,"jauFk5hip", "s3");
1964 
1965     }
1966 
1967     @Test
1968     public void t_fk5hz()
1969     /**
1970     **
1971     **  Test jauFk5hz function.
1972     **
1973     **  Returned:
1974     **     status    int         TRUE = success, FALSE = fail
1975     **
1976     **  Called:  jauFk5hz, vvd
1977     **
1978     **  This revision:  2008 May 26
1979     */
1980     {
1981        double r5, d5;
1982 
1983 
1984        r5 =  1.76779433;
1985        d5 = -0.2917517103;
1986 
1987        SphericalCoordinate pos = jauFk5hz(r5, d5, 2400000.5, 54479.0);
1988 
1989        vvd(pos.alpha,  1.767794191464423978, 1e-12, "jauFk5hz", "ra");
1990        vvd(pos.delta, -0.2917516001679884419, 1e-12, "jauFk5hz", "dec");
1991 
1992     }
1993 
1994     @Test
1995     public void t_fw2m()
1996     /**
1997     **
1998     **  Test jauFw2m function.
1999     **
2000     **  Returned:
2001     **     status    int         TRUE = success, FALSE = fail
2002     **
2003     **  Called:  jauFw2m, vvd
2004     **
2005     **  This revision:  2008 November 30
2006     */
2007     {
2008        double gamb, phib, psi, eps, r[][] = new double[3][3];
2009 
2010 
2011        gamb = -0.2243387670997992368e-5;
2012        phib =  0.4091014602391312982;
2013        psi  = -0.9501954178013015092e-3;
2014        eps  =  0.4091014316587367472;
2015 
2016        r = jauFw2m(gamb, phib, psi, eps);
2017 
2018        vvd(r[0][0], 0.9999995505176007047, 1e-12,"jauFw2m", "11");
2019        vvd(r[0][1], 0.8695404617348192957e-3, 1e-12,"jauFw2m", "12");
2020        vvd(r[0][2], 0.3779735201865582571e-3, 1e-12,"jauFw2m", "13");
2021 
2022        vvd(r[1][0], -0.8695404723772016038e-3, 1e-12,"jauFw2m", "21");
2023        vvd(r[1][1], 0.9999996219496027161, 1e-12,"jauFw2m", "22");
2024        vvd(r[1][2], -0.1361752496887100026e-6, 1e-12,"jauFw2m", "23");
2025 
2026        vvd(r[2][0], -0.3779734957034082790e-3, 1e-12,"jauFw2m", "31");
2027        vvd(r[2][1], -0.1924880848087615651e-6, 1e-12,"jauFw2m", "32");
2028        vvd(r[2][2], 0.9999999285679971958, 1e-12,"jauFw2m", "33");
2029 
2030     }
2031 
2032     @Test
2033     public void t_fw2xy()
2034     /**
2035     **
2036     **  Test jauFw2xy function.
2037     **
2038     **  Returned:
2039     **     status    int         TRUE = success, FALSE = fail
2040     **
2041     **  Called:  jauFw2xy, vvd
2042     **
2043     **  This revision:  2008 November 28
2044     */
2045     {
2046        double gamb, phib, psi, eps;
2047 
2048 
2049        gamb = -0.2243387670997992368e-5;
2050        phib =  0.4091014602391312982;
2051        psi  = -0.9501954178013015092e-3;
2052        eps  =  0.4091014316587367472;
2053 
2054        CelestialIntermediatePole cip = jauFw2xy(gamb, phib, psi, eps);
2055 
2056        vvd(cip.x, -0.3779734957034082790e-3, 1e-14, "jauFw2xy", "x");
2057        vvd(cip.y, -0.1924880848087615651e-6, 1e-14, "jauFw2xy", "y");
2058 
2059     }
2060 
2061     @Test
2062     public void t_gc2gd()
2063     /**
2064     **
2065     **  Test jauGc2gd function.
2066     **
2067     **  Returned:
2068     **     status    int         TRUE = success, FALSE = fail
2069     **
2070     **  Called:  jauGc2gd, viv, vvd
2071     **
2072     **  This revision:  2009 November 8
2073     */
2074     {
2075         double xyz[] = {2e6, 3e6, 5.244e6};
2076         GeodeticCoord geo;
2077         try {
2078             geo = jauGc2gd( 0, xyz);
2079             fail("jauGc2gd should thow exception for illegal parameter");
2080         } catch (JSOFAIllegalParameter e1) {
2081 
2082         }
2083         try {
2084             geo = jauGc2gd( 1, xyz );
2085 
2086             vvd(geo.elong, 0.98279372324732907, 1e-14, "jauGc2gd", "e1");
2087             vvd(geo.phi, 0.97160184819075459, 1e-14, "jauGc2gd", "p1");
2088             vvd(geo.height, 331.41724614260599, 1e-8, "jauGc2gd", "h1");
2089 
2090             geo = jauGc2gd( 2, xyz );
2091             vvd(geo.elong, 0.98279372324732907, 1e-14, "jauGc2gd", "e2");
2092             vvd(geo.phi, 0.97160184820607853, 1e-14, "jauGc2gd", "p2");
2093             vvd(geo.height, 331.41731754844348, 1e-8, "jauGc2gd", "h2");
2094             
2095             geo = jauGc2gd( 3, xyz );
2096             vvd(geo.elong, 0.98279372324732907, 1e-14, "jauGc2gd", "e3");
2097             vvd(geo.phi, 0.97160181811015119, 1e-14, "jauGc2gd", "p3");
2098             vvd(geo.height, 333.27707261303181, 1e-8, "jauGc2gd", "h3");
2099             
2100         } catch (JSOFAIllegalParameter e1) {
2101             fail("jauGc2gd should not thow exception for legal parameter");
2102         }
2103 
2104         try {
2105             geo = jauGc2gd( 4, xyz );
2106             fail("jauGc2gd should thow exception for illegal parameter");
2107         } catch (JSOFAIllegalParameter e1) {
2108         }
2109 
2110      }
2111 
2112     @Test
2113     public void t_gc2gde()
2114     /**
2115     **
2116     **  Test jauGc2gde function.
2117     **
2118     **  Returned:
2119     **     status    int         TRUE = success, FALSE = fail
2120     **
2121     **  Called:  jauGc2gde, viv, vvd
2122     **
2123     **  This revision:  2009 November 8
2124     */
2125     {
2126         double a = 6378136.0, f = 0.0033528;
2127         double xyz[] = {2e6, 3e6, 5.244e6};
2128 
2129         try {
2130             GeodeticCoord geo = jauGc2gde( a, f, xyz);
2131 
2132             vvd(geo.elong, 0.98279372324732907, 1e-14, "jauGc2gde", "e");
2133             vvd(geo.phi, 0.97160183775704115, 1e-14, "jauGc2gde", "p");
2134             vvd(geo.height, 332.36862495764397, 1e-8, "jauGc2gde", "h");
2135         } catch (JSOFAIllegalParameter e1) {
2136             fail("jauGc2gde should not thow exception for legal parameter");
2137 
2138         }
2139     }
2140 
2141     @Test
2142     public void t_gd2gc()
2143     /**
2144     **
2145     **  Test jauGd2gc function.
2146     **
2147     **  Returned:
2148     **     status    int         TRUE = success, FALSE = fail
2149     **
2150     **  Called:  jauGd2gc, viv, vvd
2151     **
2152     **  This revision:  2009 November 6
2153     */
2154     {
2155         double e = 3.1, p = -0.5, h = 2500.0;
2156         double xyz[] = new double[3];
2157 
2158         try {
2159             xyz = jauGd2gc( 0, e, p, h );
2160 
2161             fail("jauGd2gc should thow exception for illegal parameter");
2162         } catch (JSOFAIllegalParameter e1) {
2163             // expected behaviour
2164 
2165         } catch (JSOFAInternalError e1) {
2166             fail("jauGd2gc should thow exception for illegal parameter");
2167         }
2168 
2169         try {
2170             xyz = jauGd2gc( 1, e, p, h );
2171 
2172 
2173             vvd(xyz[0], -5599000.5577049947, 1e-7, "jauGd2gc", "0/1");
2174             vvd(xyz[1], 233011.67223479203, 1e-7, "jauGd2gc", "1/1");
2175             vvd(xyz[2], -3040909.4706983363, 1e-7, "jauGd2gc", "2/1");
2176 
2177             xyz = jauGd2gc( 2, e, p, h);
2178 
2179             vvd(xyz[0], -5599000.5577260984, 1e-7, "jauGd2gc", "0/2");
2180             vvd(xyz[1], 233011.6722356703, 1e-7, "jauGd2gc", "1/2");
2181             vvd(xyz[2], -3040909.4706095476, 1e-7, "jauGd2gc", "2/2");
2182             
2183             xyz = jauGd2gc( 3, e, p, h);
2184             vvd(xyz[0], -5598998.7626301490, 1e-7, "jauGd2gc", "0/3");
2185             vvd(xyz[1], 233011.5975297822, 1e-7, "jauGd2gc", "1/3");
2186             vvd(xyz[2], -3040908.6861467111, 1e-7, "jauGd2gc", "2/3");
2187             
2188         } catch (JSOFAException e1) {
2189             fail("jauGd2gc should not thow exception ");
2190         }
2191 
2192         try {
2193             xyz = jauGd2gc( 4, e, p, h );
2194             fail("jauGd2gc should thow exception for illegal parameter");
2195         } catch (JSOFAIllegalParameter e1) {
2196             //expected behaviour
2197         } catch (JSOFAInternalError e1) {
2198             fail("jauGd2gc should thow exception for illegal parameter");
2199         }
2200     }
2201 
2202     @Test
2203     public void t_gd2gce() throws JSOFAInternalError
2204     /**
2205     **
2206     **  Test jauGd2gce function.
2207     **
2208     **  Returned:
2209     **     status    int         TRUE = success, FALSE = fail
2210     **
2211     **  Called:  jauGd2gce, viv, vvd
2212     **
2213     **  This revision:  2009 November 6
2214     */
2215     {
2216        double a = 6378136.0, f = 0.0033528;
2217        double e = 3.1, p = -0.5, h = 2500.0;
2218        double xyz[] = new double[3];
2219 
2220        xyz = jauGd2gce( a, f, e, p, h );
2221 
2222        vvd(xyz[0], -5598999.6665116328, 1e-7, "jauGd2gce", "0");
2223        vvd(xyz[1], 233011.63514630572, 1e-7, "jauGd2gce", "1");
2224        vvd(xyz[2], -3040909.0517314132, 1e-7, "jauGd2gce", "2");
2225     }
2226 
2227     @Test
2228     public void t_gmst00()
2229     /**
2230     **
2231     **  Test jauGmst00 function.
2232     **
2233     **  Returned:
2234     **     status    int         TRUE = success, FALSE = fail
2235     **
2236     **  Called:  jauGmst00, vvd
2237     **
2238     **  This revision:  2008 May 26
2239     */
2240     {
2241        double theta;
2242 
2243 
2244        theta = jauGmst00(2400000.5, 53736.0, 2400000.5, 53736.0);
2245 
2246        vvd(theta, 1.754174972210740592, 1e-12, "jauGmst00", "");
2247 
2248     }
2249 
2250     @Test
2251     public void t_gmst06()
2252     /**
2253     **
2254     **  Test jauGmst06 function.
2255     **
2256     **  Returned:
2257     **     status    int         TRUE = success, FALSE = fail
2258     **
2259     **  Called:  jauGmst06, vvd
2260     **
2261     **  This revision:  2008 May 26
2262     */
2263     {
2264        double theta;
2265 
2266 
2267        theta = jauGmst06(2400000.5, 53736.0, 2400000.5, 53736.0);
2268 
2269        vvd(theta, 1.754174971870091203, 1e-12, "jauGmst06", "");
2270 
2271     }
2272 
2273     @Test
2274     public void t_gmst82()
2275     /**
2276     **
2277     **  Test jauGmst82 function.
2278     **
2279     **  Returned:
2280     **     status    int         TRUE = success, FALSE = fail
2281     **
2282     **  Called:  jauGmst82, vvd
2283     **
2284     **  This revision:  2008 May 26
2285     */
2286     {
2287        double theta;
2288 
2289 
2290        theta = jauGmst82(2400000.5, 53736.0);
2291 
2292        vvd(theta, 1.754174981860675096, 1e-12, "jauGmst82", "");
2293 
2294     }
2295 
2296     @Test
2297     public void t_gst00a()
2298     /**
2299     **
2300     **  Test jauGst00a function.
2301     **
2302     **  Returned:
2303     **     status    int         TRUE = success, FALSE = fail
2304     **
2305     **  Called:  jauGst00a, vvd
2306     **
2307     **  This revision:  2008 May 26
2308     */
2309     {
2310        double theta;
2311 
2312 
2313        theta = jauGst00a(2400000.5, 53736.0, 2400000.5, 53736.0);
2314 
2315        vvd(theta, 1.754166138018281369, 1e-12, "jauGst00a", "");
2316 
2317     }
2318 
2319     @Test
2320     public void t_gst00b()
2321     /**
2322     **
2323     **  Test jauGst00b function.
2324     **
2325     **  Returned:
2326     **     status    int         TRUE = success, FALSE = fail
2327     **
2328     **  Called:  jauGst00b, vvd
2329     **
2330     **  This revision:  2008 May 26
2331     */
2332     {
2333        double theta;
2334 
2335 
2336        theta = jauGst00b(2400000.5, 53736.0);
2337 
2338        vvd(theta, 1.754166136510680589, 1e-12, "jauGst00b", "");
2339 
2340     }
2341 
2342     @Test
2343     public void t_gst06()
2344     /**
2345     **
2346     **  Test jauGst06 function.
2347     **
2348     **  Returned:
2349     **     status    int         TRUE = success, FALSE = fail
2350     **
2351     **  Called:  jauGst06, vvd
2352     **
2353     **  This revision:  2008 November 28
2354     */
2355     {
2356        double rnpb[][] = new double[3][3], theta;
2357 
2358 
2359        rnpb[0][0] =  0.9999989440476103608;
2360        rnpb[0][1] = -0.1332881761240011518e-2;
2361        rnpb[0][2] = -0.5790767434730085097e-3;
2362 
2363        rnpb[1][0] =  0.1332858254308954453e-2;
2364        rnpb[1][1] =  0.9999991109044505944;
2365        rnpb[1][2] = -0.4097782710401555759e-4;
2366 
2367        rnpb[2][0] =  0.5791308472168153320e-3;
2368        rnpb[2][1] =  0.4020595661593994396e-4;
2369        rnpb[2][2] =  0.9999998314954572365;
2370 
2371        theta = jauGst06(2400000.5, 53736.0, 2400000.5, 53736.0, rnpb);
2372 
2373        vvd(theta, 1.754166138018167568, 1e-12, "jauGst06", "");
2374 
2375     }
2376 
2377     @Test
2378     public void t_gst06a()
2379     /**
2380     **
2381     **  Test jauGst06a function.
2382     **
2383     **  Returned:
2384     **     status    int         TRUE = success, FALSE = fail
2385     **
2386     **  Called:  jauGst06a, vvd
2387     **
2388     **  This revision:  2008 May 26
2389     */
2390     {
2391        double theta;
2392 
2393 
2394        theta = jauGst06a(2400000.5, 53736.0, 2400000.5, 53736.0);
2395 
2396        vvd(theta, 1.754166137675019159, 1e-12, "jauGst06a", "");
2397 
2398     }
2399 
2400     @Test
2401     public void t_gst94()
2402     /**
2403     **
2404     **  Test jauGst94 function.
2405     **
2406     **  Returned:
2407     **     status    int         TRUE = success, FALSE = fail
2408     **
2409     **  Called:  jauGst94, vvd
2410     **
2411     **  This revision:  2008 May 26
2412     */
2413     {
2414        double theta;
2415 
2416 
2417        theta = jauGst94(2400000.5, 53736.0);
2418 
2419        vvd(theta, 1.754166136020645203, 1e-12, "jauGst94", "");
2420 
2421     }
2422 
2423     @Test
2424     public void t_h2fk5()
2425     /**
2426     **
2427     **  Test jauH2fk5 function.
2428     **
2429     **  Returned:
2430     **     status    int         TRUE = success, FALSE = fail
2431     **
2432     **  Called:  jauH2fk5, vvd
2433     **
2434     **  This revision:  2009 November 6
2435     */
2436     {
2437        double rh, dh, drh, ddh, pxh, rvh;
2438 
2439 
2440        rh  =  1.767794352;
2441        dh  = -0.2917512594;
2442        drh = -2.76413026e-6;
2443        ddh = -5.92994449e-6;
2444        pxh =  0.379210;
2445        rvh = -7.6;
2446 
2447        CatalogCoords cat = jauH2fk5(rh, dh, drh, ddh, pxh, rvh);
2448 
2449        vvd(cat.pos.alpha, 1.767794455700065506, 1e-13,"jauH2fk5", "ra");
2450        vvd(cat.pos.delta, -0.2917513626469638890, 1e-13,"jauH2fk5", "dec");
2451        vvd(cat.pm.alpha, -0.27597945024511204e-5, 1e-18,"jauH2fk5", "dr5");
2452        vvd(cat.pm.delta, -0.59308014093262838e-5, 1e-18,"jauH2fk5", "dd5");
2453        vvd(cat.px, 0.37921, 1e-13,"jauH2fk5", "px");
2454        vvd(cat.rv, -7.6000001309071126, 2e-11,"jauH2fk5", "rv"); //NB have relaxed the precision slightly to get this test to pass cf official release
2455 
2456     }
2457 
2458     @Test
2459     public void t_hfk5z()
2460     /**
2461     **
2462     **  Test jauHfk5z function.
2463     **
2464     **  Returned:
2465     **     status    int         TRUE = success, FALSE = fail
2466     **
2467     **  Called:  jauHfk5z, vvd
2468     **
2469     **  This revision:  2008 November 29
2470     */
2471     {
2472        double rh, dh;
2473 
2474 
2475 
2476        rh =  1.767794352;
2477        dh = -0.2917512594;
2478 
2479        CatalogCoords cat = jauHfk5z(rh, dh, 2400000.5, 54479.0);
2480 
2481        vvd(cat.pos.alpha, 1.767794490535581026, 1e-13,"jauHfk5z", "ra");
2482        vvd(cat.pos.delta, -0.2917513695320114258, 1e-14,"jauHfk5z", "dec");
2483        vvd(cat.pm.alpha, 0.4335890983539243029e-8, 1e-22,"jauHfk5z", "dr5");
2484        vvd(cat.pm.delta, -0.8569648841237745902e-9, 1e-23,"jauHfk5z", "dd5");
2485 
2486     }
2487 
2488     @Test
2489     public void t_ir()
2490     /**
2491     **
2492     **  Test jauIr function.
2493     **
2494     **  Returned:
2495     **     status    int         TRUE = success, FALSE = fail
2496     **
2497     **  Called:  jauIr, vvd
2498     **
2499     **  This revision:  2008 November 30
2500     */
2501     {
2502        double r[][] = new double[3][3];
2503 
2504 
2505        r[0][0] = 2.0;
2506        r[0][1] = 3.0;
2507        r[0][2] = 2.0;
2508 
2509        r[1][0] = 3.0;
2510        r[1][1] = 2.0;
2511        r[1][2] = 3.0;
2512 
2513        r[2][0] = 3.0;
2514        r[2][1] = 4.0;
2515        r[2][2] = 5.0;
2516 
2517        jauIr(r);
2518 
2519        vvd(r[0][0], 1.0, 0.0, "jauIr", "11");
2520        vvd(r[0][1], 0.0, 0.0, "jauIr", "12");
2521        vvd(r[0][2], 0.0, 0.0, "jauIr", "13");
2522 
2523        vvd(r[1][0], 0.0, 0.0, "jauIr", "21");
2524        vvd(r[1][1], 1.0, 0.0, "jauIr", "22");
2525        vvd(r[1][2], 0.0, 0.0, "jauIr", "23");
2526 
2527        vvd(r[2][0], 0.0, 0.0, "jauIr", "31");
2528        vvd(r[2][1], 0.0, 0.0, "jauIr", "32");
2529        vvd(r[2][2], 1.0, 0.0, "jauIr", "33");
2530 
2531     }
2532 
2533     @Test
2534     public void t_jd2cal() throws JSOFAIllegalParameter
2535     /**
2536     **
2537     **  Test jauJd2cal function.
2538     **
2539     **  Returned:
2540     **     status    int         TRUE = success, FALSE = fail
2541     **
2542     **  Called:  jauJd2cal, viv, vvd
2543     **
2544     **  This revision:  2008 November 29
2545     */
2546     {
2547        double dj1, dj2;
2548 
2549 
2550        dj1 = 2400000.5;
2551        dj2 = 50123.9999;
2552 
2553        Calendar cal = jauJd2cal(dj1, dj2);
2554 
2555        viv(cal.iy, 1996, "jauJd2cal", "y");
2556        viv(cal.im, 2, "jauJd2cal", "m");
2557        viv(cal.id, 10, "jauJd2cal", "d");
2558        vvd(cal.fd, 0.9999, 1e-7, "jauJd2cal", "fd");
2559 //FIXME should test j when   jauJd2cal returns status     viv(j, 0, "jauJd2cal", "j");
2560 
2561     }
2562 
2563     @Test
2564     public void t_jdcalf()
2565     /**
2566     **
2567     **  Test jauJdcalf function.
2568     **
2569     **  Returned:
2570     **     status    int         TRUE = success, FALSE = fail
2571     **
2572     **  Called:  jauJdcalf, viv
2573     **
2574     **  This revision:  2008 May 26
2575     */
2576     {
2577        double dj1, dj2;
2578        int iydmf[] = new int[4], j;
2579 
2580 
2581        dj1 = 2400000.5;
2582        dj2 = 50123.9999;
2583 
2584        j = jauJdcalf(4, dj1, dj2, iydmf);
2585 
2586        viv(iydmf[0], 1996, "jauJdcalf", "y");
2587        viv(iydmf[1], 2, "jauJdcalf", "m");
2588        viv(iydmf[2], 10, "jauJdcalf", "d");
2589        viv(iydmf[3], 9999, "jauJdcalf", "f");
2590 
2591        viv(j, 0, "jauJdcalf", "j");
2592 
2593     }
2594 
2595     @Test
2596     public void t_num00a()
2597     /**
2598     **
2599     **  Test jauNum00a function.
2600     **
2601     **  Returned:
2602     **     status    int         TRUE = success, FALSE = fail
2603     **
2604     **  Called:  jauNum00a, vvd
2605     **
2606     **  This revision:  2008 November 28
2607     */
2608     {
2609        double rmatn[][] = new double[3][3];
2610 
2611 
2612        rmatn = jauNum00a(2400000.5, 53736.0);
2613 
2614        vvd(rmatn[0][0], 0.9999999999536227949, 1e-12,"jauNum00a", "11");
2615        vvd(rmatn[0][1], 0.8836238544090873336e-5, 1e-12,"jauNum00a", "12");
2616        vvd(rmatn[0][2], 0.3830835237722400669e-5, 1e-12,"jauNum00a", "13");
2617 
2618        vvd(rmatn[1][0], -0.8836082880798569274e-5, 1e-12,"jauNum00a", "21");
2619        vvd(rmatn[1][1], 0.9999999991354655028, 1e-12,"jauNum00a", "22");
2620        vvd(rmatn[1][2], -0.4063240865362499850e-4, 1e-12,"jauNum00a", "23");
2621 
2622        vvd(rmatn[2][0], -0.3831194272065995866e-5, 1e-12,"jauNum00a", "31");
2623        vvd(rmatn[2][1], 0.4063237480216291775e-4, 1e-12,"jauNum00a", "32");
2624        vvd(rmatn[2][2], 0.9999999991671660338, 1e-12,"jauNum00a", "33");
2625 
2626     }
2627 
2628     @Test
2629     public void t_num00b()
2630     /**
2631     **
2632     **  Test jauNum00b function.
2633     **
2634     **  Returned:
2635     **     status    int         TRUE = success, FALSE = fail
2636     **
2637     **  Called:  jauNum00b, vvd
2638     **
2639     **  This revision:  2008 November 28
2640     */
2641     {
2642         double rmatn[][] = new double[3][3];
2643 
2644         rmatn = jauNum00b(2400000.5, 53736);
2645 
2646        vvd(rmatn[0][0], 0.9999999999536069682, 1e-12,"jauNum00b", "11");
2647        vvd(rmatn[0][1], 0.8837746144871248011e-5, 1e-12,"jauNum00b", "12");
2648        vvd(rmatn[0][2], 0.3831488838252202945e-5, 1e-12,"jauNum00b", "13");
2649 
2650        vvd(rmatn[1][0], -0.8837590456632304720e-5, 1e-12,"jauNum00b", "21");
2651        vvd(rmatn[1][1], 0.9999999991354692733, 1e-12,"jauNum00b", "22");
2652        vvd(rmatn[1][2], -0.4063198798559591654e-4, 1e-12,"jauNum00b", "23");
2653 
2654        vvd(rmatn[2][0], -0.3831847930134941271e-5, 1e-12,"jauNum00b", "31");
2655        vvd(rmatn[2][1], 0.4063195412258168380e-4, 1e-12,"jauNum00b", "32");
2656        vvd(rmatn[2][2], 0.9999999991671806225, 1e-12,"jauNum00b", "33");
2657 
2658     }
2659 
2660     @Test
2661     public void t_num06a()
2662     /**
2663     **
2664     **  Test jauNum06a function.
2665     **
2666     **  Returned:
2667     **     status    int         TRUE = success, FALSE = fail
2668     **
2669     **  Called:  jauNum06a, vvd
2670     **
2671     **  This revision:  2008 November 28
2672     */
2673     {
2674         double rmatn[][] = new double[3][3];
2675 
2676         rmatn = jauNum06a(2400000.5, 53736);
2677 
2678        vvd(rmatn[0][0], 0.9999999999536227668, 1e-12,"jauNum06a", "11");
2679        vvd(rmatn[0][1], 0.8836241998111535233e-5, 1e-12,"jauNum06a", "12");
2680        vvd(rmatn[0][2], 0.3830834608415287707e-5, 1e-12,"jauNum06a", "13");
2681 
2682        vvd(rmatn[1][0], -0.8836086334870740138e-5, 1e-12,"jauNum06a", "21");
2683        vvd(rmatn[1][1], 0.9999999991354657474, 1e-12,"jauNum06a", "22");
2684        vvd(rmatn[1][2], -0.4063240188248455065e-4, 1e-12,"jauNum06a", "23");
2685 
2686        vvd(rmatn[2][0], -0.3831193642839398128e-5, 1e-12,"jauNum06a", "31");
2687        vvd(rmatn[2][1], 0.4063236803101479770e-4, 1e-12,"jauNum06a", "32");
2688        vvd(rmatn[2][2], 0.9999999991671663114, 1e-12,"jauNum06a", "33");
2689 
2690     }
2691 
2692     @Test
2693     public void t_numat()
2694     /**
2695     **
2696     **  Test jauNumat function.
2697     **
2698     **  Returned:
2699     **     status    int         TRUE = success, FALSE = fail
2700     **
2701     **  Called:  jauNumat, vvd
2702     **
2703     **  This revision:  2008 November 28
2704     */
2705     {
2706        double epsa, dpsi, deps, rmatn[][] = new double[3][3];
2707 
2708 
2709        epsa =  0.4090789763356509900;
2710        dpsi = -0.9630909107115582393e-5;
2711        deps =  0.4063239174001678826e-4;
2712 
2713        rmatn = jauNumat(epsa, dpsi, deps);
2714 
2715        vvd(rmatn[0][0], 0.9999999999536227949, 1e-12,"jauNumat", "11");
2716        vvd(rmatn[0][1], 0.8836239320236250577e-5, 1e-12,"jauNumat", "12");
2717        vvd(rmatn[0][2], 0.3830833447458251908e-5, 1e-12,"jauNumat", "13");
2718 
2719        vvd(rmatn[1][0], -0.8836083657016688588e-5, 1e-12,"jauNumat", "21");
2720        vvd(rmatn[1][1], 0.9999999991354654959, 1e-12,"jauNumat", "22");
2721        vvd(rmatn[1][2], -0.4063240865361857698e-4, 1e-12,"jauNumat", "23");
2722 
2723        vvd(rmatn[2][0], -0.3831192481833385226e-5, 1e-12,"jauNumat", "31");
2724        vvd(rmatn[2][1], 0.4063237480216934159e-4, 1e-12,"jauNumat", "32");
2725        vvd(rmatn[2][2], 0.9999999991671660407, 1e-12,"jauNumat", "33");
2726 
2727     }
2728 
2729     @Test
2730     public void t_nut00a()
2731     /**
2732     **
2733     **  Test jauNut00a function.
2734     **
2735     **  Returned:
2736     **     status    int         TRUE = success, FALSE = fail
2737     **
2738     **  Called:  jauNut00a, vvd
2739     **
2740     **  This revision:  2008 November 28
2741     */
2742     {
2743 
2744 
2745        NutationTerms nut = jauNut00a(2400000.5, 53736.0);
2746 
2747        vvd(nut.dpsi, -0.9630909107115518431e-5, 1e-13,"jauNut00a", "dpsi");
2748        vvd(nut.deps,  0.4063239174001678710e-4, 1e-13,"jauNut00a", "deps");
2749 
2750     }
2751 
2752     @Test
2753     public void t_nut00b()
2754     /**
2755     **
2756     **  Test jauNut00b function.
2757     **
2758     **  Returned:
2759     **     status    int         TRUE = success, FALSE = fail
2760     **
2761     **  Called:  jauNut00b, vvd
2762     **
2763     **  This revision:  2008 November 28
2764     */
2765     {
2766  
2767 
2768        NutationTerms nut = jauNut00b(2400000.5, 53736.0);
2769 
2770        vvd(nut.dpsi, -0.9632552291148362783e-5, 1e-13,"jauNut00b", "dpsi");
2771        vvd(nut.deps,  0.4063197106621159367e-4, 1e-13,"jauNut00b", "deps");
2772 
2773     }
2774 
2775     @Test
2776     public void t_nut06a()
2777     /**
2778     **
2779     **  Test jauNut06a function.
2780     **
2781     **  Returned:
2782     **     status    int         TRUE = success, FALSE = fail
2783     **
2784     **  Called:  jauNut06a, vvd
2785     **
2786     **  This revision:  2008 November 28
2787     */
2788     {
2789 
2790        NutationTerms nut = jauNut06a(2400000.5, 53736.0);
2791 
2792        vvd(nut.dpsi, -0.9630912025820308797e-5, 1e-13,"jauNut06a", "dpsi");
2793        vvd(nut.deps,  0.4063238496887249798e-4, 1e-13,"jauNut06a", "deps");
2794 
2795     }
2796 
2797     @Test
2798     public void t_nut80()
2799     /**
2800     **
2801     **  Test jauNut80 function.
2802     **
2803     **  Returned:
2804     **     status    int         TRUE = success, FALSE = fail
2805     **
2806     **  Called:  jauNut80, vvd
2807     **
2808     **  This revision:  2008 November 28
2809     */
2810     {
2811 
2812        NutationTerms nut = jauNut80(2400000.5, 53736.0);
2813 
2814        vvd(nut.dpsi, -0.9643658353226563966e-5, 1e-13,"jauNut80", "dpsi");
2815        vvd(nut.deps,  0.4060051006879713322e-4, 1e-13,"jauNut80", "deps");
2816 
2817     }
2818 
2819     @Test
2820     public void t_nutm80()
2821     /**
2822     **
2823     **  Test jauNutm80 function.
2824     **
2825     **  Returned:
2826     **     status    int         TRUE = success, FALSE = fail
2827     **
2828     **  Called:  jauNutm80, vvd
2829     **
2830     **  This revision:  2008 November 30
2831     */
2832     {
2833        double rmatn[][] = new double[3][3];
2834 
2835 
2836        rmatn = jauNutm80(2400000.5, 53736.0);
2837 
2838        vvd(rmatn[0][0], 0.9999999999534999268, 1e-12,"jauNutm80", "11");
2839        vvd(rmatn[0][1], 0.8847935789636432161e-5, 1e-12,"jauNutm80", "12");
2840        vvd(rmatn[0][2], 0.3835906502164019142e-5, 1e-12,"jauNutm80", "13");
2841 
2842        vvd(rmatn[1][0], -0.8847780042583435924e-5, 1e-12,"jauNutm80", "21");
2843        vvd(rmatn[1][1], 0.9999999991366569963, 1e-12,"jauNutm80", "22");
2844        vvd(rmatn[1][2], -0.4060052702727130809e-4, 1e-12,"jauNutm80", "23");
2845 
2846        vvd(rmatn[2][0], -0.3836265729708478796e-5, 1e-12,"jauNutm80", "31");
2847        vvd(rmatn[2][1], 0.4060049308612638555e-4, 1e-12,"jauNutm80", "32");
2848        vvd(rmatn[2][2], 0.9999999991684415129, 1e-12,"jauNutm80", "33");
2849 
2850     }
2851 
2852     @Test
2853     public void t_obl06()
2854     /**
2855     **
2856     **  Test jauObl06 function.
2857     **
2858     **  Returned:
2859     **     status    int         TRUE = success, FALSE = fail
2860     **
2861     **  Called:  jauObl06, vvd
2862     **
2863     **  This revision:  2008 November 29
2864     */
2865     {
2866        vvd(jauObl06(2400000.5, 54388.0), 0.4090749229387258204, 1e-14,
2867            "jauObl06", "");
2868     }
2869 
2870     @Test
2871     public void t_obl80()
2872     /**
2873     **
2874     **  Test jauObl80 function.
2875     **
2876     **  Returned:
2877     **     status    int         TRUE = success, FALSE = fail
2878     **
2879     **  Called:  jauObl80, vvd
2880     **
2881     **  This revision:  2008 November 29
2882     */
2883     {
2884        double eps0;
2885 
2886 
2887        eps0 = jauObl80(2400000.5, 54388.0);
2888 
2889        vvd(eps0, 0.4090751347643816218, 1e-14, "jauObl80", "");
2890 
2891     }
2892 
2893     @Test
2894     public void t_p06e()
2895     /**
2896     **
2897     **  Test jauP06e function.
2898     **
2899     **  Returned:
2900     **     status    int         TRUE = success, FALSE = fail
2901     **
2902     **  Called:  jauP06e, vvd
2903     **
2904     **  This revision:  2008 November 28
2905     */
2906     {
2907 
2908 
2909        PrecessionAngles pa = jauP06e(2400000.5, 52541.0);
2910 
2911        vvd(pa.eps0, 0.4090926006005828715, 1e-14,"jauP06e", "eps0");
2912        vvd(pa.psia, 0.6664369630191613431e-3, 1e-14,"jauP06e", "psia");
2913        vvd(pa.oma , 0.4090925973783255982, 1e-14,"jauP06e", "oma");
2914        vvd(pa.bpa, 0.5561149371265209445e-6, 1e-14,"jauP06e", "bpa");
2915        vvd(pa.bqa, -0.6191517193290621270e-5, 1e-14,"jauP06e", "bqa");
2916        vvd(pa.pia, 0.6216441751884382923e-5, 1e-14,"jauP06e", "pia");
2917        vvd(pa.bpia, 3.052014180023779882, 1e-14,"jauP06e", "bpia");
2918        vvd(pa.epsa, 0.4090864054922431688, 1e-14,"jauP06e", "epsa");
2919        vvd(pa.chia, 0.1387703379530915364e-5, 1e-14,"jauP06e", "chia");
2920        vvd(pa.za, 0.2921789846651790546e-3, 1e-14,"jauP06e", "za");
2921        vvd(pa.zetaa, 0.3178773290332009310e-3, 1e-14,"jauP06e", "zetaa");
2922        vvd(pa.thetaa, 0.2650932701657497181e-3, 1e-14,"jauP06e", "thetaa");
2923        vvd(pa.pa, 0.6651637681381016288e-3, 1e-14,"jauP06e", "pa");
2924        vvd(pa.gam, 0.1398077115963754987e-5, 1e-14,"jauP06e", "gam");
2925        vvd(pa.phi, 0.4090864090837462602, 1e-14,"jauP06e", "phi");
2926        vvd(pa.psi, 0.6664464807480920325e-3, 1e-14,"jauP06e", "psi");
2927 
2928     }
2929 
2930     @Test
2931     public void t_p2pv()
2932     /**
2933     **
2934     **  Test jauP2pv function.
2935     **
2936     **  Returned:
2937     **     status    int         TRUE = success, FALSE = fail
2938     **
2939     **  Called:  jauP2pv, vvd
2940     **
2941     **  This revision:  2008 May 26
2942     */
2943     {
2944        double p[] = new double[3], pv[][]=new double[2][3];
2945 
2946 
2947        p[0] = 0.25;
2948        p[1] = 1.2;
2949        p[2] = 3.0;
2950 
2951        pv[0][0] =  0.3;
2952        pv[0][1] =  1.2;
2953        pv[0][2] = -2.5;
2954 
2955        pv[1][0] = -0.5;
2956        pv[1][1] =  3.1;
2957        pv[1][2] =  0.9;
2958 
2959        pv = jauP2pv(p);
2960 
2961        vvd(pv[0][0], 0.25, 0.0, "jauP2pv", "p1");
2962        vvd(pv[0][1], 1.2,  0.0, "jauP2pv", "p2");
2963        vvd(pv[0][2], 3.0,  0.0, "jauP2pv", "p3");
2964 
2965        vvd(pv[1][0], 0.0,  0.0, "jauP2pv", "v1");
2966        vvd(pv[1][1], 0.0,  0.0, "jauP2pv", "v2");
2967        vvd(pv[1][2], 0.0,  0.0, "jauP2pv", "v3");
2968 
2969     }
2970 
2971     @Test
2972     public void t_p2s()
2973     /**
2974     **
2975     **  Test jauP2s function.
2976     **
2977     **  Returned:
2978     **     status    int         TRUE = success, FALSE = fail
2979     **
2980     **  Called:  jauP2s, vvd
2981     **
2982     **  This revision:  2008 November 29
2983     */
2984     {
2985        double p[] = new double[3];
2986 
2987 
2988        p[0] = 100.0;
2989        p[1] = -50.0;
2990        p[2] =  25.0;
2991 
2992        SphericalPosition co = jauP2s(p);
2993 
2994        vvd(co.theta, -0.4636476090008061162, 1e-12, "jauP2s", "theta");
2995        vvd(co.phi, 0.2199879773954594463, 1e-12, "jauP2s", "phi");
2996        vvd(co.r, 114.5643923738960002, 1e-9, "jauP2s", "r");
2997 
2998     }
2999 
3000     @Test
3001     public void t_pap()
3002     /**
3003     **
3004     **  Test jauPap function.
3005     **
3006     **  Returned:
3007     **     status    int         TRUE = success, FALSE = fail
3008     **
3009     **  Called:  jauPap, vvd
3010     **
3011     **  This revision:  2008 May 25
3012     */
3013     {
3014        double a[] = new double[3], b[] = new double[3], theta;
3015 
3016 
3017        a[0] =  1.0;
3018        a[1] =  0.1;
3019        a[2] =  0.2;
3020 
3021        b[0] = -3.0;
3022        b[1] = 1e-3;
3023        b[2] =  0.2;
3024 
3025        theta = jauPap(a, b);
3026 
3027        vvd(theta, 0.3671514267841113674, 1e-12, "jauPap", "");
3028 
3029     }
3030 
3031     @Test
3032     public void t_pas()
3033     /**
3034     **
3035     **  Test jauPas function.
3036     **
3037     **  Returned:
3038     **     status    int         TRUE = success, FALSE = fail
3039     **
3040     **  Called:  jauPas, vvd
3041     **
3042     **  This revision:  2008 May 25
3043     */
3044     {
3045        double al, ap, bl, bp, theta;
3046 
3047 
3048        al =  1.0;
3049        ap =  0.1;
3050        bl =  0.2;
3051        bp = -1.0;
3052 
3053        theta = jauPas(al, ap, bl, bp);
3054 
3055        vvd(theta, -2.724544922932270424, 1e-12, "jauPas", "");
3056 
3057     }
3058 
3059     @Test
3060     public void t_pb06()
3061     /**
3062     **
3063     **  Test jauPb06 function.
3064     **
3065     **  Returned:
3066     **     status    int         TRUE = success, FALSE = fail
3067     **
3068     **  Called:  jauPb06, vvd
3069     **
3070     **  This revision:  2008 November 28
3071     */
3072     {
3073 
3074        EulerAngles an = jauPb06(2400000.5, 50123.9999);
3075 
3076        vvd(an.zeta, -0.5092634016326478238e-3, 1e-12,"jauPb06", "bzeta");
3077        vvd(an.z, -0.3602772060566044413e-3, 1e-12,"jauPb06", "bz");
3078        vvd(an.theta, -0.3779735537167811177e-3, 1e-12,"jauPb06", "btheta");
3079 
3080     }
3081 
3082     @Test
3083     public void t_pdp()
3084     /**
3085     **
3086     **  Test jauPdp function.
3087     **
3088     **  Returned:
3089     **     status    int         TRUE = success, FALSE = fail
3090     **
3091     **  Called:  jauPdp, vvd
3092     **
3093     **  This revision:  2008 November 30
3094     */
3095     {
3096        double a[] = new double[3], b[] = new double[3], adb;
3097 
3098 
3099        a[0] = 2.0;
3100        a[1] = 2.0;
3101        a[2] = 3.0;
3102 
3103        b[0] = 1.0;
3104        b[1] = 3.0;
3105        b[2] = 4.0;
3106 
3107        adb = jauPdp(a, b);
3108 
3109        vvd(adb, 20, 1e-12, "jauPdp", "");
3110 
3111     }
3112 
3113     @Test
3114     public void t_pfw06()
3115     /**
3116     **
3117     **  Test jauPfw06 function.
3118     **
3119     **  Returned:
3120     **     status    int         TRUE = success, FALSE = fail
3121     **
3122     **  Called:  jauPfw06, vvd
3123     **
3124     **  This revision:  2008 November 30
3125     */
3126     {
3127 
3128 
3129        FWPrecessionAngles fw = jauPfw06(2400000.5, 50123.9999);
3130 
3131        vvd(fw.gamb, -0.2243387670997995690e-5, 1e-16,"jauPfw06", "gamb");
3132        vvd(fw.phib,  0.4091014602391312808, 1e-12,"jauPfw06", "phib");
3133        vvd(fw.psib, -0.9501954178013031895e-3, 1e-14,"jauPfw06", "psib");
3134        vvd(fw.epsa,  0.4091014316587367491, 1e-12,"jauPfw06", "epsa");
3135 
3136     }
3137 
3138     @Test
3139     public void t_plan94()
3140     /**
3141     **
3142     **  Test jauPlan94 function.
3143     **
3144     **  Returned:
3145     **     status    int         TRUE = success, FALSE = fail
3146     **
3147     **  Called:  jauPlan94, VVD, VIV
3148     **
3149     **  This revision:  2008 November 28
3150     */
3151     {
3152         double pv[][];
3153 
3154 
3155 
3156         try {
3157             pv = jauPlan94(2400000.5, 1e6, 0);
3158             fail("did not throw all the illegal argument for bad planet number");
3159         } catch (JSOFAIllegalParameter e) {
3160             // do nothing
3161         }
3162 
3163         try {
3164             pv = jauPlan94(2400000.5, 1e6, 10);
3165             fail("did not throw all the illegal argument for bad planet number");
3166         } catch (JSOFAIllegalParameter e) {
3167             // do nothing
3168         }
3169 
3170         try {
3171             pv = jauPlan94(2400000.5, -320000, 3);
3172 
3173             vvd(pv[0][0], 0.9308038666832975759, 1e-11,"jauPlan94", "x 3");
3174             vvd(pv[0][1], 0.3258319040261346000, 1e-11,"jauPlan94", "y 3");
3175             vvd(pv[0][2], 0.1422794544481140560, 1e-11,"jauPlan94", "z 3");
3176 
3177             vvd(pv[1][0], -0.6429458958255170006e-2, 1e-11,"jauPlan94", "xd 3");
3178             vvd(pv[1][1], 0.1468570657704237764e-1, 1e-11,"jauPlan94", "yd 3");
3179             vvd(pv[1][2], 0.6406996426270981189e-2, 1e-11,"jauPlan94", "zd 3");
3180 
3181 
3182             pv = jauPlan94(2400000.5, 43999.9, 1);
3183 
3184             vvd(pv[0][0], 0.2945293959257430832, 1e-11,"jauPlan94", "x 4");
3185             vvd(pv[0][1], -0.2452204176601049596, 1e-11,"jauPlan94", "y 4");
3186             vvd(pv[0][2], -0.1615427700571978153, 1e-11,"jauPlan94", "z 4");
3187 
3188             vvd(pv[1][0], 0.1413867871404614441e-1, 1e-11,"jauPlan94", "xd 4");
3189             vvd(pv[1][1], 0.1946548301104706582e-1, 1e-11,"jauPlan94", "yd 4");
3190             vvd(pv[1][2], 0.8929809783898904786e-2, 1e-11,"jauPlan94", "zd 4");
3191         } catch (JSOFAIllegalParameter e) {
3192             fail("legal call threw exception");
3193         }
3194 
3195 
3196     }
3197 
3198     @Test
3199     public void t_pmat00()
3200     /**
3201     **
3202     **  Test jauPmat00 function.
3203     **
3204     **  Returned:
3205     **     status    int         TRUE = success, FALSE = fail
3206     **
3207     **  Called:  jauPmat00, vvd
3208     **
3209     **  This revision:  2008 November 29
3210     */
3211     {
3212        double rbp[][] = new double[3][3];
3213 
3214 
3215        rbp = jauPmat00(2400000.5, 50123.9999);
3216 
3217        vvd(rbp[0][0], 0.9999995505175087260, 1e-12,"jauPmat00", "11");
3218        vvd(rbp[0][1], 0.8695405883617884705e-3, 1e-14,"jauPmat00", "12");
3219        vvd(rbp[0][2], 0.3779734722239007105e-3, 1e-14,"jauPmat00", "13");
3220 
3221        vvd(rbp[1][0], -0.8695405990410863719e-3, 1e-14,"jauPmat00", "21");
3222        vvd(rbp[1][1], 0.9999996219494925900, 1e-12,"jauPmat00", "22");
3223        vvd(rbp[1][2], -0.1360775820404982209e-6, 1e-14,"jauPmat00", "23");
3224 
3225        vvd(rbp[2][0], -0.3779734476558184991e-3, 1e-14,"jauPmat00", "31");
3226        vvd(rbp[2][1], -0.1925857585832024058e-6, 1e-14,"jauPmat00", "32");
3227        vvd(rbp[2][2], 0.9999999285680153377, 1e-12,"jauPmat00", "33");
3228 
3229     }
3230 
3231     @Test
3232     public void t_pmat06()
3233     /**
3234     **
3235     **  Test jauPmat06 function.
3236     **
3237     **  Returned:
3238     **     status    int         TRUE = success, FALSE = fail
3239     **
3240     **  Called:  jauPmat06, vvd
3241     **
3242     **  This revision:  2008 November 30
3243     */
3244     {
3245        double rbp[][] = new double[3][3];
3246 
3247 
3248        rbp = jauPmat06(2400000.5, 50123.9999);
3249 
3250        vvd(rbp[0][0], 0.9999995505176007047, 1e-12,"jauPmat06", "11");
3251        vvd(rbp[0][1], 0.8695404617348208406e-3, 1e-14,"jauPmat06", "12");
3252        vvd(rbp[0][2], 0.3779735201865589104e-3, 1e-14,"jauPmat06", "13");
3253 
3254        vvd(rbp[1][0], -0.8695404723772031414e-3, 1e-14,"jauPmat06", "21");
3255        vvd(rbp[1][1], 0.9999996219496027161, 1e-12,"jauPmat06", "22");
3256        vvd(rbp[1][2], -0.1361752497080270143e-6, 1e-14,"jauPmat06", "23");
3257 
3258        vvd(rbp[2][0], -0.3779734957034089490e-3, 1e-14,"jauPmat06", "31");
3259        vvd(rbp[2][1], -0.1924880847894457113e-6, 1e-14,"jauPmat06", "32");
3260        vvd(rbp[2][2], 0.9999999285679971958, 1e-12,"jauPmat06", "33");
3261 
3262     }
3263 
3264     @Test
3265     public void t_pmat76()
3266     /**
3267     **
3268     **  Test jauPmat76 function.
3269     **
3270     **  Returned:
3271     **     status    int         TRUE = success, FALSE = fail
3272     **
3273     **  Called:  jauPmat76, vvd
3274     **
3275     **  This revision:  2008 November 28
3276     */
3277     {
3278        double rmatp[][] = new double[3][3];
3279 
3280 
3281        rmatp = jauPmat76(2400000.5, 50123.9999);
3282 
3283        vvd(rmatp[0][0], 0.9999995504328350733, 1e-12,"jauPmat76", "11");
3284        vvd(rmatp[0][1], 0.8696632209480960785e-3, 1e-14,"jauPmat76", "12");
3285        vvd(rmatp[0][2], 0.3779153474959888345e-3, 1e-14,"jauPmat76", "13");
3286 
3287        vvd(rmatp[1][0], -0.8696632209485112192e-3, 1e-14,"jauPmat76", "21");
3288        vvd(rmatp[1][1], 0.9999996218428560614, 1e-12,"jauPmat76", "22");
3289        vvd(rmatp[1][2], -0.1643284776111886407e-6, 1e-14,"jauPmat76", "23");
3290 
3291        vvd(rmatp[2][0], -0.3779153474950335077e-3, 1e-14,"jauPmat76", "31");
3292        vvd(rmatp[2][1], -0.1643306746147366896e-6, 1e-14,"jauPmat76", "32");
3293        vvd(rmatp[2][2], 0.9999999285899790119, 1e-12,"jauPmat76", "33");
3294 
3295     }
3296 
3297     @Test
3298     public void t_pm()
3299     /**
3300     **
3301     **  Test jauPm function.
3302     **
3303     **  Returned:
3304     **     status    int         TRUE = success, FALSE = fail
3305     **
3306     **  Called:  jauPm, vvd
3307     **
3308     **  This revision:  2008 November 30
3309     */
3310     {
3311        double p[] = new double[3], r;
3312 
3313 
3314        p[0] =  0.3;
3315        p[1] =  1.2;
3316        p[2] = -2.5;
3317 
3318        r = jauPm(p);
3319 
3320        vvd(r, 2.789265136196270604, 1e-12, "jauPm", "");
3321 
3322     }
3323 
3324     @Test
3325     public void t_pmp()
3326     /**
3327     **
3328     **  Test jauPmp function.
3329     **
3330     **  Returned:
3331     **     status    int         TRUE = success, FALSE = fail
3332     **
3333     **  Called:  jauPmp, vvd
3334     **
3335     **  This revision:  2008 November 30
3336     */
3337     {
3338        double a[] = new double[3], b[] = new double[3], amb[] = new double[3];
3339 
3340 
3341        a[0] = 2.0;
3342        a[1] = 2.0;
3343        a[2] = 3.0;
3344 
3345        b[0] = 1.0;
3346        b[1] = 3.0;
3347        b[2] = 4.0;
3348 
3349        amb = jauPmp(a, b);
3350 
3351        vvd(amb[0],  1.0, 1e-12, "jauPmp", "0");
3352        vvd(amb[1], -1.0, 1e-12, "jauPmp", "1");
3353        vvd(amb[2], -1.0, 1e-12, "jauPmp", "2");
3354 
3355     }
3356 
3357     @Test
3358     public void t_pn()
3359     /**
3360     **
3361     **  Test jauPn function.
3362     **
3363     **  Returned:
3364     **     status    int         TRUE = success, FALSE = fail
3365     **
3366     **  Called:  jauPn, vvd
3367     **
3368     **  This revision:  2008 November 30
3369     */
3370     {
3371        double p[] = new double[3];
3372 
3373 
3374        p[0] =  0.3;
3375        p[1] =  1.2;
3376        p[2] = -2.5;
3377 
3378        NormalizedVector mv = jauPn(p);
3379 
3380        vvd(mv.r, 2.789265136196270604, 1e-12, "jauPn", "r");
3381 
3382        vvd(mv.u[0], 0.1075552109073112058, 1e-12, "jauPn", "u1");
3383        vvd(mv.u[1], 0.4302208436292448232, 1e-12, "jauPn", "u2");
3384        vvd(mv.u[2], -0.8962934242275933816, 1e-12, "jauPn", "u3");
3385 
3386     }
3387 
3388     @Test
3389     public void t_pn00()
3390     /**
3391     **
3392     **  Test jauPn00 function.
3393     **
3394     **  Returned:
3395     **     status    int         TRUE = success, FALSE = fail
3396     **
3397     **  Called:  jauPn00, vvd
3398     **
3399     **  This revision:  2008 November 28
3400     */
3401     {
3402        double dpsi, deps;
3403 
3404        dpsi = -0.9632552291149335877e-5;
3405        deps =  0.4063197106621141414e-4;
3406 
3407        PrecessionNutation pn = jauPn00(2400000.5, 53736.0, dpsi, deps);
3408 
3409        vvd(pn.epsa, 0.4090791789404229916, 1e-12, "jauPn00", "epsa");
3410 
3411        vvd(pn.rb[0][0], 0.9999999999999942498, 1e-12,"jauPn00", "rb11");
3412        vvd(pn.rb[0][1], -0.7078279744199196626e-7, 1e-18,"jauPn00", "rb12");
3413        vvd(pn.rb[0][2], 0.8056217146976134152e-7, 1e-18,"jauPn00", "rb13");
3414 
3415        vvd(pn.rb[1][0], 0.7078279477857337206e-7, 1e-18,"jauPn00", "rb21");
3416        vvd(pn.rb[1][1], 0.9999999999999969484, 1e-12,"jauPn00", "rb22");
3417        vvd(pn.rb[1][2], 0.3306041454222136517e-7, 1e-18,"jauPn00", "rb23");
3418 
3419        vvd(pn.rb[2][0], -0.8056217380986972157e-7, 1e-18,"jauPn00", "rb31");
3420        vvd(pn.rb[2][1], -0.3306040883980552500e-7, 1e-18,"jauPn00", "rb32");
3421        vvd(pn.rb[2][2], 0.9999999999999962084, 1e-12,"jauPn00", "rb33");
3422 
3423        vvd(pn.rp[0][0], 0.9999989300532289018, 1e-12,"jauPn00", "rp11");
3424        vvd(pn.rp[0][1], -0.1341647226791824349e-2, 1e-14,"jauPn00", "rp12");
3425        vvd(pn.rp[0][2], -0.5829880927190296547e-3, 1e-14,"jauPn00", "rp13");
3426 
3427        vvd(pn.rp[1][0], 0.1341647231069759008e-2, 1e-14,"jauPn00", "rp21");
3428        vvd(pn.rp[1][1], 0.9999990999908750433, 1e-12,"jauPn00", "rp22");
3429        vvd(pn.rp[1][2], -0.3837444441583715468e-6, 1e-14,"jauPn00", "rp23");
3430 
3431        vvd(pn.rp[2][0], 0.5829880828740957684e-3, 1e-14,"jauPn00", "rp31");
3432        vvd(pn.rp[2][1], -0.3984203267708834759e-6, 1e-14,"jauPn00", "rp32");
3433        vvd(pn.rp[2][2], 0.9999998300623538046, 1e-12,"jauPn00", "rp33");
3434 
3435        vvd(pn.rbp[0][0], 0.9999989300052243993, 1e-12,"jauPn00", "rbp11");
3436        vvd(pn.rbp[0][1], -0.1341717990239703727e-2, 1e-14,"jauPn00", "rbp12");
3437        vvd(pn.rbp[0][2], -0.5829075749891684053e-3, 1e-14,"jauPn00", "rbp13");
3438 
3439        vvd(pn.rbp[1][0], 0.1341718013831739992e-2, 1e-14,"jauPn00", "rbp21");
3440        vvd(pn.rbp[1][1], 0.9999990998959191343, 1e-12,"jauPn00", "rbp22");
3441        vvd(pn.rbp[1][2], -0.3505759733565421170e-6, 1e-14,"jauPn00", "rbp23");
3442 
3443        vvd(pn.rbp[2][0], 0.5829075206857717883e-3, 1e-14,"jauPn00", "rbp31");
3444        vvd(pn.rbp[2][1], -0.4315219955198608970e-6, 1e-14,"jauPn00", "rbp32");
3445        vvd(pn.rbp[2][2], 0.9999998301093036269, 1e-12,"jauPn00", "rbp33");
3446 
3447        vvd(pn.rn[0][0], 0.9999999999536069682, 1e-12,"jauPn00", "rn11");
3448        vvd(pn.rn[0][1], 0.8837746144872140812e-5, 1e-16,"jauPn00", "rn12");
3449        vvd(pn.rn[0][2], 0.3831488838252590008e-5, 1e-16,"jauPn00", "rn13");
3450 
3451        vvd(pn.rn[1][0], -0.8837590456633197506e-5, 1e-16,"jauPn00", "rn21");
3452        vvd(pn.rn[1][1], 0.9999999991354692733, 1e-12,"jauPn00", "rn22");
3453        vvd(pn.rn[1][2], -0.4063198798559573702e-4, 1e-16,"jauPn00", "rn23");
3454 
3455        vvd(pn.rn[2][0], -0.3831847930135328368e-5, 1e-16,"jauPn00", "rn31");
3456        vvd(pn.rn[2][1], 0.4063195412258150427e-4, 1e-16,"jauPn00", "rn32");
3457        vvd(pn.rn[2][2], 0.9999999991671806225, 1e-12,"jauPn00", "rn33");
3458 
3459        vvd(pn.rbpn[0][0], 0.9999989440499982806, 1e-12,"jauPn00", "rbpn11");
3460        vvd(pn.rbpn[0][1], -0.1332880253640848301e-2, 1e-14,"jauPn00", "rbpn12");
3461        vvd(pn.rbpn[0][2], -0.5790760898731087295e-3, 1e-14,"jauPn00", "rbpn13");
3462 
3463        vvd(pn.rbpn[1][0], 0.1332856746979948745e-2, 1e-14,"jauPn00", "rbpn21");
3464        vvd(pn.rbpn[1][1], 0.9999991109064768883, 1e-12,"jauPn00", "rbpn22");
3465        vvd(pn.rbpn[1][2], -0.4097740555723063806e-4, 1e-14,"jauPn00", "rbpn23");
3466 
3467        vvd(pn.rbpn[2][0], 0.5791301929950205000e-3, 1e-14,"jauPn00", "rbpn31");
3468        vvd(pn.rbpn[2][1], 0.4020553681373702931e-4, 1e-14,"jauPn00", "rbpn32");
3469        vvd(pn.rbpn[2][2], 0.9999998314958529887, 1e-12,"jauPn00", "rbpn33");
3470 
3471     }
3472 
3473     @Test
3474     public void t_pn00a()
3475     /**
3476     **
3477     **  Test jauPn00a function.
3478     **
3479     **  Returned:
3480     **     status    int         TRUE = success, FALSE = fail
3481     **
3482     **  Called:  jauPn00a, vvd
3483     **
3484     **  This revision:  2008 November 28
3485     */
3486     {
3487 
3488 
3489        PrecessionNutation pn = jauPn00a(2400000.5, 53736.0);
3490                
3491 
3492        vvd(pn.nut.dpsi, -0.9630909107115518431e-5, 1e-12,"jauPn00a", "dpsi");
3493        vvd(pn.nut.deps,  0.4063239174001678710e-4, 1e-12,"jauPn00a", "deps");
3494        vvd(pn.epsa,  0.4090791789404229916, 1e-12, "jauPn00a", "epsa");
3495 
3496        vvd(pn.rb[0][0], 0.9999999999999942498, 1e-12,"jauPn00a", "rb11");
3497        vvd(pn.rb[0][1], -0.7078279744199196626e-7, 1e-16,"jauPn00a", "rb12");
3498        vvd(pn.rb[0][2], 0.8056217146976134152e-7, 1e-16,"jauPn00a", "rb13");
3499 
3500        vvd(pn.rb[1][0], 0.7078279477857337206e-7, 1e-16,"jauPn00a", "rb21");
3501        vvd(pn.rb[1][1], 0.9999999999999969484, 1e-12,"jauPn00a", "rb22");
3502        vvd(pn.rb[1][2], 0.3306041454222136517e-7, 1e-16,"jauPn00a", "rb23");
3503 
3504        vvd(pn.rb[2][0], -0.8056217380986972157e-7, 1e-16,"jauPn00a", "rb31");
3505        vvd(pn.rb[2][1], -0.3306040883980552500e-7, 1e-16,"jauPn00a", "rb32");
3506        vvd(pn.rb[2][2], 0.9999999999999962084, 1e-12,"jauPn00a", "rb33");
3507 
3508        vvd(pn.rp[0][0], 0.9999989300532289018, 1e-12,"jauPn00a", "rp11");
3509        vvd(pn.rp[0][1], -0.1341647226791824349e-2, 1e-14,"jauPn00a", "rp12");
3510        vvd(pn.rp[0][2], -0.5829880927190296547e-3, 1e-14,"jauPn00a", "rp13");
3511 
3512        vvd(pn.rp[1][0], 0.1341647231069759008e-2, 1e-14,"jauPn00a", "rp21");
3513        vvd(pn.rp[1][1], 0.9999990999908750433, 1e-12,"jauPn00a", "rp22");
3514        vvd(pn.rp[1][2], -0.3837444441583715468e-6, 1e-14,"jauPn00a", "rp23");
3515 
3516        vvd(pn.rp[2][0], 0.5829880828740957684e-3, 1e-14,"jauPn00a", "rp31");
3517        vvd(pn.rp[2][1], -0.3984203267708834759e-6, 1e-14,"jauPn00a", "rp32");
3518        vvd(pn.rp[2][2], 0.9999998300623538046, 1e-12,"jauPn00a", "rp33");
3519 
3520        vvd(pn.rbp[0][0], 0.9999989300052243993, 1e-12,"jauPn00a", "rbp11");
3521        vvd(pn.rbp[0][1], -0.1341717990239703727e-2, 1e-14,"jauPn00a", "rbp12");
3522        vvd(pn.rbp[0][2], -0.5829075749891684053e-3, 1e-14,"jauPn00a", "rbp13");
3523 
3524        vvd(pn.rbp[1][0], 0.1341718013831739992e-2, 1e-14,"jauPn00a", "rbp21");
3525        vvd(pn.rbp[1][1], 0.9999990998959191343, 1e-12,"jauPn00a", "rbp22");
3526        vvd(pn.rbp[1][2], -0.3505759733565421170e-6, 1e-14,"jauPn00a", "rbp23");
3527 
3528        vvd(pn.rbp[2][0], 0.5829075206857717883e-3, 1e-14,"jauPn00a", "rbp31");
3529        vvd(pn.rbp[2][1], -0.4315219955198608970e-6, 1e-14,"jauPn00a", "rbp32");
3530        vvd(pn.rbp[2][2], 0.9999998301093036269, 1e-12,"jauPn00a", "rbp33");
3531 
3532        vvd(pn.rn[0][0], 0.9999999999536227949, 1e-12,"jauPn00a", "rn11");
3533        vvd(pn.rn[0][1], 0.8836238544090873336e-5, 1e-14,"jauPn00a", "rn12");
3534        vvd(pn.rn[0][2], 0.3830835237722400669e-5, 1e-14,"jauPn00a", "rn13");
3535 
3536        vvd(pn.rn[1][0], -0.8836082880798569274e-5, 1e-14,"jauPn00a", "rn21");
3537        vvd(pn.rn[1][1], 0.9999999991354655028, 1e-12,"jauPn00a", "rn22");
3538        vvd(pn.rn[1][2], -0.4063240865362499850e-4, 1e-14,"jauPn00a", "rn23");
3539 
3540        vvd(pn.rn[2][0], -0.3831194272065995866e-5, 1e-14,"jauPn00a", "rn31");
3541        vvd(pn.rn[2][1], 0.4063237480216291775e-4, 1e-14,"jauPn00a", "rn32");
3542        vvd(pn.rn[2][2], 0.9999999991671660338, 1e-12,"jauPn00a", "rn33");
3543 
3544        vvd(pn.rbpn[0][0], 0.9999989440476103435, 1e-12,"jauPn00a", "rbpn11");
3545        vvd(pn.rbpn[0][1], -0.1332881761240011763e-2, 1e-14,"jauPn00a", "rbpn12");
3546        vvd(pn.rbpn[0][2], -0.5790767434730085751e-3, 1e-14,"jauPn00a", "rbpn13");
3547 
3548        vvd(pn.rbpn[1][0], 0.1332858254308954658e-2, 1e-14,"jauPn00a", "rbpn21");
3549        vvd(pn.rbpn[1][1], 0.9999991109044505577, 1e-12,"jauPn00a", "rbpn22");
3550        vvd(pn.rbpn[1][2], -0.4097782710396580452e-4, 1e-14,"jauPn00a", "rbpn23");
3551 
3552        vvd(pn.rbpn[2][0], 0.5791308472168152904e-3, 1e-14,"jauPn00a", "rbpn31");
3553        vvd(pn.rbpn[2][1], 0.4020595661591500259e-4, 1e-14,"jauPn00a", "rbpn32");
3554        vvd(pn.rbpn[2][2], 0.9999998314954572304, 1e-12,"jauPn00a", "rbpn33");
3555 
3556     }
3557 
3558     @Test
3559     public void t_pn00b()
3560     /**
3561     **
3562     **  Test jauPn00b function.
3563     **
3564     **  Returned:
3565     **     status    int         TRUE = success, FALSE = fail
3566     **
3567     **  Called:  jauPn00b, vvd
3568     **
3569     **  This revision:  2008 November 28
3570     */
3571     {
3572 
3573        PrecessionNutation pn = jauPn00b(2400000.5, 53736.0);
3574 
3575        vvd(pn.nut.dpsi, -0.9632552291148362783e-5, 1e-12,"jauPn00b", "dpsi");
3576        vvd(pn.nut.deps,  0.4063197106621159367e-4, 1e-12,"jauPn00b", "deps");
3577        vvd(pn.epsa,  0.4090791789404229916, 1e-12, "jauPn00b", "epsa");
3578 
3579        vvd(pn.rb[0][0], 0.9999999999999942498, 1e-12,"jauPn00b", "rb11");
3580        vvd(pn.rb[0][1], -0.7078279744199196626e-7, 1e-16,"jauPn00b", "rb12");
3581        vvd(pn.rb[0][2], 0.8056217146976134152e-7, 1e-16,"jauPn00b", "rb13");
3582 
3583        vvd(pn.rb[1][0], 0.7078279477857337206e-7, 1e-16,"jauPn00b", "rb21");
3584        vvd(pn.rb[1][1], 0.9999999999999969484, 1e-12,"jauPn00b", "rb22");
3585        vvd(pn.rb[1][2], 0.3306041454222136517e-7, 1e-16,"jauPn00b", "rb23");
3586 
3587        vvd(pn.rb[2][0], -0.8056217380986972157e-7, 1e-16,"jauPn00b", "rb31");
3588        vvd(pn.rb[2][1], -0.3306040883980552500e-7, 1e-16,"jauPn00b", "rb32");
3589        vvd(pn.rb[2][2], 0.9999999999999962084, 1e-12,"jauPn00b", "rb33");
3590 
3591        vvd(pn.rp[0][0], 0.9999989300532289018, 1e-12,"jauPn00b", "rp11");
3592        vvd(pn.rp[0][1], -0.1341647226791824349e-2, 1e-14,"jauPn00b", "rp12");
3593        vvd(pn.rp[0][2], -0.5829880927190296547e-3, 1e-14,"jauPn00b", "rp13");
3594 
3595        vvd(pn.rp[1][0], 0.1341647231069759008e-2, 1e-14,"jauPn00b", "rp21");
3596        vvd(pn.rp[1][1], 0.9999990999908750433, 1e-12,"jauPn00b", "rp22");
3597        vvd(pn.rp[1][2], -0.3837444441583715468e-6, 1e-14,"jauPn00b", "rp23");
3598 
3599        vvd(pn.rp[2][0], 0.5829880828740957684e-3, 1e-14,"jauPn00b", "rp31");
3600        vvd(pn.rp[2][1], -0.3984203267708834759e-6, 1e-14,"jauPn00b", "rp32");
3601        vvd(pn.rp[2][2], 0.9999998300623538046, 1e-12,"jauPn00b", "rp33");
3602 
3603        vvd(pn.rbp[0][0], 0.9999989300052243993, 1e-12,"jauPn00b", "rbp11");
3604        vvd(pn.rbp[0][1], -0.1341717990239703727e-2, 1e-14,"jauPn00b", "rbp12");
3605        vvd(pn.rbp[0][2], -0.5829075749891684053e-3, 1e-14,"jauPn00b", "rbp13");
3606 
3607        vvd(pn.rbp[1][0], 0.1341718013831739992e-2, 1e-14,"jauPn00b", "rbp21");
3608        vvd(pn.rbp[1][1], 0.9999990998959191343, 1e-12,"jauPn00b", "rbp22");
3609        vvd(pn.rbp[1][2], -0.3505759733565421170e-6, 1e-14,"jauPn00b", "rbp23");
3610 
3611        vvd(pn.rbp[2][0], 0.5829075206857717883e-3, 1e-14,"jauPn00b", "rbp31");
3612        vvd(pn.rbp[2][1], -0.4315219955198608970e-6, 1e-14,"jauPn00b", "rbp32");
3613        vvd(pn.rbp[2][2], 0.9999998301093036269, 1e-12,"jauPn00b", "rbp33");
3614 
3615        vvd(pn.rn[0][0], 0.9999999999536069682, 1e-12,"jauPn00b", "rn11");
3616        vvd(pn.rn[0][1], 0.8837746144871248011e-5, 1e-14,"jauPn00b", "rn12");
3617        vvd(pn.rn[0][2], 0.3831488838252202945e-5, 1e-14,"jauPn00b", "rn13");
3618 
3619        vvd(pn.rn[1][0], -0.8837590456632304720e-5, 1e-14,"jauPn00b", "rn21");
3620        vvd(pn.rn[1][1], 0.9999999991354692733, 1e-12,"jauPn00b", "rn22");
3621        vvd(pn.rn[1][2], -0.4063198798559591654e-4, 1e-14,"jauPn00b", "rn23");
3622 
3623        vvd(pn.rn[2][0], -0.3831847930134941271e-5, 1e-14,"jauPn00b", "rn31");
3624        vvd(pn.rn[2][1], 0.4063195412258168380e-4, 1e-14,"jauPn00b", "rn32");
3625        vvd(pn.rn[2][2], 0.9999999991671806225, 1e-12,"jauPn00b", "rn33");
3626 
3627        vvd(pn.rbpn[0][0], 0.9999989440499982806, 1e-12,"jauPn00b", "rbpn11");
3628        vvd(pn.rbpn[0][1], -0.1332880253640849194e-2, 1e-14,"jauPn00b", "rbpn12");
3629        vvd(pn.rbpn[0][2], -0.5790760898731091166e-3, 1e-14,"jauPn00b", "rbpn13");
3630 
3631        vvd(pn.rbpn[1][0], 0.1332856746979949638e-2, 1e-14,"jauPn00b", "rbpn21");
3632        vvd(pn.rbpn[1][1], 0.9999991109064768883, 1e-12,"jauPn00b", "rbpn22");
3633        vvd(pn.rbpn[1][2], -0.4097740555723081811e-4, 1e-14,"jauPn00b", "rbpn23");
3634 
3635        vvd(pn.rbpn[2][0], 0.5791301929950208873e-3, 1e-14,"jauPn00b", "rbpn31");
3636        vvd(pn.rbpn[2][1], 0.4020553681373720832e-4, 1e-14,"jauPn00b", "rbpn32");
3637        vvd(pn.rbpn[2][2], 0.9999998314958529887, 1e-12,"jauPn00b", "rbpn33");
3638 
3639     }
3640 
3641     @Test
3642     public void t_pn06a()
3643     /**
3644     **
3645     **  Test jauPn06a function.
3646     **
3647     **  Returned:
3648     **     status    int         TRUE = success, FALSE = fail
3649     **
3650     **  Called:  jauPn06a, vvd
3651     **
3652     **  This revision:  2008 November 28
3653     */
3654     {
3655  
3656 
3657        PrecessionNutation pn = jauPn06a(2400000.5, 53736.0);
3658 
3659        vvd(pn.nut.dpsi, -0.9630912025820308797e-5, 1e-12,"jauPn06a", "dpsi");
3660        vvd(pn.nut.deps,  0.4063238496887249798e-4, 1e-12,"jauPn06a", "deps");
3661        vvd(pn.epsa,  0.4090789763356509926, 1e-12, "jauPn06a", "epsa");
3662 
3663        vvd(pn.rb[0][0], 0.9999999999999942497, 1e-12,"jauPn06a", "rb11");
3664        vvd(pn.rb[0][1], -0.7078368960971557145e-7, 1e-14,"jauPn06a", "rb12");
3665        vvd(pn.rb[0][2], 0.8056213977613185606e-7, 1e-14,"jauPn06a", "rb13");
3666 
3667        vvd(pn.rb[1][0], 0.7078368694637674333e-7, 1e-14,"jauPn06a", "rb21");
3668        vvd(pn.rb[1][1], 0.9999999999999969484, 1e-12,"jauPn06a", "rb22");
3669        vvd(pn.rb[1][2], 0.3305943742989134124e-7, 1e-14,"jauPn06a", "rb23");
3670 
3671        vvd(pn.rb[2][0], -0.8056214211620056792e-7, 1e-14,"jauPn06a", "rb31");
3672        vvd(pn.rb[2][1], -0.3305943172740586950e-7, 1e-14,"jauPn06a", "rb32");
3673        vvd(pn.rb[2][2], 0.9999999999999962084, 1e-12,"jauPn06a", "rb33");
3674 
3675        vvd(pn.rp[0][0], 0.9999989300536854831, 1e-12,"jauPn06a", "rp11");
3676        vvd(pn.rp[0][1], -0.1341646886204443795e-2, 1e-14,"jauPn06a", "rp12");
3677        vvd(pn.rp[0][2], -0.5829880933488627759e-3, 1e-14,"jauPn06a", "rp13");
3678 
3679        vvd(pn.rp[1][0], 0.1341646890569782183e-2, 1e-14,"jauPn06a", "rp21");
3680        vvd(pn.rp[1][1], 0.9999990999913319321, 1e-12,"jauPn06a", "rp22");
3681        vvd(pn.rp[1][2], -0.3835944216374477457e-6, 1e-14,"jauPn06a", "rp23");
3682 
3683        vvd(pn.rp[2][0], 0.5829880833027867368e-3, 1e-14,"jauPn06a", "rp31");
3684        vvd(pn.rp[2][1], -0.3985701514686976112e-6, 1e-14,"jauPn06a", "rp32");
3685        vvd(pn.rp[2][2], 0.9999998300623534950, 1e-12,"jauPn06a", "rp33");
3686 
3687        vvd(pn.rbp[0][0], 0.9999989300056797893, 1e-12,"jauPn06a", "rbp11");
3688        vvd(pn.rbp[0][1], -0.1341717650545059598e-2, 1e-14,"jauPn06a", "rbp12");
3689        vvd(pn.rbp[0][2], -0.5829075756493728856e-3, 1e-14,"jauPn06a", "rbp13");
3690 
3691        vvd(pn.rbp[1][0], 0.1341717674223918101e-2, 1e-14,"jauPn06a", "rbp21");
3692        vvd(pn.rbp[1][1], 0.9999990998963748448, 1e-12,"jauPn06a", "rbp22");
3693        vvd(pn.rbp[1][2], -0.3504269280170069029e-6, 1e-14,"jauPn06a", "rbp23");
3694 
3695        vvd(pn.rbp[2][0], 0.5829075211461454599e-3, 1e-14,"jauPn06a", "rbp31");
3696        vvd(pn.rbp[2][1], -0.4316708436255949093e-6, 1e-14,"jauPn06a", "rbp32");
3697        vvd(pn.rbp[2][2], 0.9999998301093032943, 1e-12,"jauPn06a", "rbp33");
3698 
3699        vvd(pn.rn[0][0], 0.9999999999536227668, 1e-12,"jauPn06a", "rn11");
3700        vvd(pn.rn[0][1], 0.8836241998111535233e-5, 1e-14,"jauPn06a", "rn12");
3701        vvd(pn.rn[0][2], 0.3830834608415287707e-5, 1e-14,"jauPn06a", "rn13");
3702 
3703        vvd(pn.rn[1][0], -0.8836086334870740138e-5, 1e-14,"jauPn06a", "rn21");
3704        vvd(pn.rn[1][1], 0.9999999991354657474, 1e-12,"jauPn06a", "rn22");
3705        vvd(pn.rn[1][2], -0.4063240188248455065e-4, 1e-14,"jauPn06a", "rn23");
3706 
3707        vvd(pn.rn[2][0], -0.3831193642839398128e-5, 1e-14,"jauPn06a", "rn31");
3708        vvd(pn.rn[2][1], 0.4063236803101479770e-4, 1e-14,"jauPn06a", "rn32");
3709        vvd(pn.rn[2][2], 0.9999999991671663114, 1e-12,"jauPn06a", "rn33");
3710 
3711        vvd(pn.rbpn[0][0], 0.9999989440480669738, 1e-12,"jauPn06a", "rbpn11");
3712        vvd(pn.rbpn[0][1], -0.1332881418091915973e-2, 1e-14,"jauPn06a", "rbpn12");
3713        vvd(pn.rbpn[0][2], -0.5790767447612042565e-3, 1e-14,"jauPn06a", "rbpn13");
3714 
3715        vvd(pn.rbpn[1][0], 0.1332857911250989133e-2, 1e-14,"jauPn06a", "rbpn21");
3716        vvd(pn.rbpn[1][1], 0.9999991109049141908, 1e-12,"jauPn06a", "rbpn22");
3717        vvd(pn.rbpn[1][2], -0.4097767128546784878e-4, 1e-14,"jauPn06a", "rbpn23");
3718 
3719        vvd(pn.rbpn[2][0], 0.5791308482835292617e-3, 1e-14,"jauPn06a", "rbpn31");
3720        vvd(pn.rbpn[2][1], 0.4020580099454020310e-4, 1e-14,"jauPn06a", "rbpn32");
3721        vvd(pn.rbpn[2][2], 0.9999998314954628695, 1e-12,"jauPn06a", "rbpn33");
3722 
3723     }
3724 
3725     @Test
3726     public void t_pn06()
3727     /**
3728     **
3729     **  Test jauPn06 function.
3730     **
3731     **  Returned:
3732     **     status    int         TRUE = success, FALSE = fail
3733     **
3734     **  Called:  jauPn06, vvd
3735     **
3736     **  This revision:  2008 November 28
3737     */
3738     {
3739        double dpsi, deps;
3740 
3741        dpsi = -0.9632552291149335877e-5;
3742        deps =  0.4063197106621141414e-4;
3743 
3744        PrecessionNutation pn = jauPn06(2400000.5, 53736.0, dpsi, deps);
3745 
3746        vvd(pn.epsa, 0.4090789763356509926, 1e-12, "jauPn06", "epsa");
3747 
3748        vvd(pn.rb[0][0], 0.9999999999999942497, 1e-12,"jauPn06", "rb11");
3749        vvd(pn.rb[0][1], -0.7078368960971557145e-7, 1e-14,"jauPn06", "rb12");
3750        vvd(pn.rb[0][2], 0.8056213977613185606e-7, 1e-14,"jauPn06", "rb13");
3751 
3752        vvd(pn.rb[1][0], 0.7078368694637674333e-7, 1e-14,"jauPn06", "rb21");
3753        vvd(pn.rb[1][1], 0.9999999999999969484, 1e-12,"jauPn06", "rb22");
3754        vvd(pn.rb[1][2], 0.3305943742989134124e-7, 1e-14,"jauPn06", "rb23");
3755 
3756        vvd(pn.rb[2][0], -0.8056214211620056792e-7, 1e-14,"jauPn06", "rb31");
3757        vvd(pn.rb[2][1], -0.3305943172740586950e-7, 1e-14,"jauPn06", "rb32");
3758        vvd(pn.rb[2][2], 0.9999999999999962084, 1e-12,"jauPn06", "rb33");
3759 
3760        vvd(pn.rp[0][0], 0.9999989300536854831, 1e-12,"jauPn06", "rp11");
3761        vvd(pn.rp[0][1], -0.1341646886204443795e-2, 1e-14,"jauPn06", "rp12");
3762        vvd(pn.rp[0][2], -0.5829880933488627759e-3, 1e-14,"jauPn06", "rp13");
3763 
3764        vvd(pn.rp[1][0], 0.1341646890569782183e-2, 1e-14,"jauPn06", "rp21");
3765        vvd(pn.rp[1][1], 0.9999990999913319321, 1e-12,"jauPn06", "rp22");
3766        vvd(pn.rp[1][2], -0.3835944216374477457e-6, 1e-14,"jauPn06", "rp23");
3767 
3768        vvd(pn.rp[2][0], 0.5829880833027867368e-3, 1e-14,"jauPn06", "rp31");
3769        vvd(pn.rp[2][1], -0.3985701514686976112e-6, 1e-14,"jauPn06", "rp32");
3770        vvd(pn.rp[2][2], 0.9999998300623534950, 1e-12,"jauPn06", "rp33");
3771 
3772        vvd(pn.rbp[0][0], 0.9999989300056797893, 1e-12,"jauPn06", "rbp11");
3773        vvd(pn.rbp[0][1], -0.1341717650545059598e-2, 1e-14,"jauPn06", "rbp12");
3774        vvd(pn.rbp[0][2], -0.5829075756493728856e-3, 1e-14,"jauPn06", "rbp13");
3775 
3776        vvd(pn.rbp[1][0], 0.1341717674223918101e-2, 1e-14,"jauPn06", "rbp21");
3777        vvd(pn.rbp[1][1], 0.9999990998963748448, 1e-12,"jauPn06", "rbp22");
3778        vvd(pn.rbp[1][2], -0.3504269280170069029e-6, 1e-14,"jauPn06", "rbp23");
3779 
3780        vvd(pn.rbp[2][0], 0.5829075211461454599e-3, 1e-14,"jauPn06", "rbp31");
3781        vvd(pn.rbp[2][1], -0.4316708436255949093e-6, 1e-14,"jauPn06", "rbp32");
3782        vvd(pn.rbp[2][2], 0.9999998301093032943, 1e-12,"jauPn06", "rbp33");
3783 
3784        vvd(pn.rn[0][0], 0.9999999999536069682, 1e-12,"jauPn06", "rn11");
3785        vvd(pn.rn[0][1], 0.8837746921149881914e-5, 1e-14,"jauPn06", "rn12");
3786        vvd(pn.rn[0][2], 0.3831487047682968703e-5, 1e-14,"jauPn06", "rn13");
3787 
3788        vvd(pn.rn[1][0], -0.8837591232983692340e-5, 1e-14,"jauPn06", "rn21");
3789        vvd(pn.rn[1][1], 0.9999999991354692664, 1e-12,"jauPn06", "rn22");
3790        vvd(pn.rn[1][2], -0.4063198798558931215e-4, 1e-14,"jauPn06", "rn23");
3791 
3792        vvd(pn.rn[2][0], -0.3831846139597250235e-5, 1e-14,"jauPn06", "rn31");
3793        vvd(pn.rn[2][1], 0.4063195412258792914e-4, 1e-14,"jauPn06", "rn32");
3794        vvd(pn.rn[2][2], 0.9999999991671806293, 1e-12,"jauPn06", "rn33");
3795 
3796        vvd(pn.rbpn[0][0], 0.9999989440504506688, 1e-12,"jauPn06", "rbpn11");
3797        vvd(pn.rbpn[0][1], -0.1332879913170492655e-2, 1e-14,"jauPn06", "rbpn12");
3798        vvd(pn.rbpn[0][2], -0.5790760923225655753e-3, 1e-14,"jauPn06", "rbpn13");
3799 
3800        vvd(pn.rbpn[1][0], 0.1332856406595754748e-2, 1e-14,"jauPn06", "rbpn21");
3801        vvd(pn.rbpn[1][1], 0.9999991109069366795, 1e-12,"jauPn06", "rbpn22");
3802        vvd(pn.rbpn[1][2], -0.4097725651142641812e-4, 1e-14,"jauPn06", "rbpn23");
3803 
3804        vvd(pn.rbpn[2][0], 0.5791301952321296716e-3, 1e-14,"jauPn06", "rbpn31");
3805        vvd(pn.rbpn[2][1], 0.4020538796195230577e-4, 1e-14,"jauPn06", "rbpn32");
3806        vvd(pn.rbpn[2][2], 0.9999998314958576778, 1e-12,"jauPn06", "rbpn33");
3807 
3808     }
3809 
3810     @Test
3811     public void t_pnm00a()
3812     /**
3813     **
3814     **  Test jauPnm00a function.
3815     **
3816     **  Returned:
3817     **     status    int         TRUE = success, FALSE = fail
3818     **
3819     **  Called:  jauPnm00a, vvd
3820     **
3821     **  This revision:  2008 November 28
3822     */
3823     {
3824        double rbpn[][] = new double[3][3];
3825 
3826 
3827        rbpn = jauPnm00a(2400000.5, 50123.9999);
3828 
3829        vvd(rbpn[0][0], 0.9999995832793134257, 1e-12,"jauPnm00a", "11");
3830        vvd(rbpn[0][1], 0.8372384254137809439e-3, 1e-14,"jauPnm00a", "12");
3831        vvd(rbpn[0][2], 0.3639684306407150645e-3, 1e-14,"jauPnm00a", "13");
3832 
3833        vvd(rbpn[1][0], -0.8372535226570394543e-3, 1e-14,"jauPnm00a", "21");
3834        vvd(rbpn[1][1], 0.9999996486491582471, 1e-12,"jauPnm00a", "22");
3835        vvd(rbpn[1][2], 0.4132915262664072381e-4, 1e-14,"jauPnm00a", "23");
3836 
3837        vvd(rbpn[2][0], -0.3639337004054317729e-3, 1e-14,"jauPnm00a", "31");
3838        vvd(rbpn[2][1], -0.4163386925461775873e-4, 1e-14,"jauPnm00a", "32");
3839        vvd(rbpn[2][2], 0.9999999329094390695, 1e-12,"jauPnm00a", "33");
3840 
3841     }
3842 
3843     @Test
3844     public void t_pnm00b()
3845     /**
3846     **
3847     **  Test jauPnm00b function.
3848     **
3849     **  Returned:
3850     **     status    int         TRUE = success, FALSE = fail
3851     **
3852     **  Called:  jauPnm00b, vvd
3853     **
3854     **  This revision:  2008 November 28
3855     */
3856     {
3857        double rbpn[][] = new double[3][3];
3858 
3859 
3860        rbpn = jauPnm00b(2400000.5, 50123.9999);
3861 
3862        vvd(rbpn[0][0], 0.9999995832776208280, 1e-12,"jauPnm00b", "11");
3863        vvd(rbpn[0][1], 0.8372401264429654837e-3, 1e-14,"jauPnm00b", "12");
3864        vvd(rbpn[0][2], 0.3639691681450271771e-3, 1e-14,"jauPnm00b", "13");
3865 
3866        vvd(rbpn[1][0], -0.8372552234147137424e-3, 1e-14,"jauPnm00b", "21");
3867        vvd(rbpn[1][1], 0.9999996486477686123, 1e-12,"jauPnm00b", "22");
3868        vvd(rbpn[1][2], 0.4132832190946052890e-4, 1e-14,"jauPnm00b", "23");
3869 
3870        vvd(rbpn[2][0], -0.3639344385341866407e-3, 1e-14,"jauPnm00b", "31");
3871        vvd(rbpn[2][1], -0.4163303977421522785e-4, 1e-14,"jauPnm00b", "32");
3872        vvd(rbpn[2][2], 0.9999999329092049734, 1e-12,"jauPnm00b", "33");
3873 
3874     }
3875 
3876     @Test
3877     public void t_pnm06a()
3878     /**
3879     **
3880     **  Test jauPnm06a function.
3881     **
3882     **  Returned:
3883     **     status    int         TRUE = success, FALSE = fail
3884     **
3885     **  Called:  jauPnm06a, vvd
3886     **
3887     **  This revision:  2008 November 28
3888     */
3889     {
3890        double rbpn[][] = new double[3][3];
3891 
3892 
3893        rbpn = jauPnm06a(2400000.5, 50123.9999);
3894 
3895        vvd(rbpn[0][0], 0.9999995832794205484, 1e-12,"jauPnm06a", "11");
3896        vvd(rbpn[0][1], 0.8372382772630962111e-3, 1e-14,"jauPnm06a", "12");
3897        vvd(rbpn[0][2], 0.3639684771140623099e-3, 1e-14,"jauPnm06a", "13");
3898 
3899        vvd(rbpn[1][0], -0.8372533744743683605e-3, 1e-14,"jauPnm06a", "21");
3900        vvd(rbpn[1][1], 0.9999996486492861646, 1e-12,"jauPnm06a", "22");
3901        vvd(rbpn[1][2], 0.4132905944611019498e-4, 1e-14,"jauPnm06a", "23");
3902 
3903        vvd(rbpn[2][0], -0.3639337469629464969e-3, 1e-14,"jauPnm06a", "31");
3904        vvd(rbpn[2][1], -0.4163377605910663999e-4, 1e-14,"jauPnm06a", "32");
3905        vvd(rbpn[2][2], 0.9999999329094260057, 1e-12,"jauPnm06a", "33");
3906 
3907     }
3908 
3909     @Test
3910     public void t_pnm80()
3911     /**
3912     **
3913     **  Test jauPnm80 function.
3914     **
3915     **  Returned:
3916     **     status    int         TRUE = success, FALSE = fail
3917     **
3918     **  Called:  jauPnm80, vvd
3919     **
3920     **  This revision:  2008 November 28
3921     */
3922     {
3923        double rmatpn[][] = new double[3][3];
3924 
3925 
3926        rmatpn = jauPnm80(2400000.5, 50123.9999);
3927 
3928        vvd(rmatpn[0][0], 0.9999995831934611169, 1e-12,"jauPnm80", "11");
3929        vvd(rmatpn[0][1], 0.8373654045728124011e-3, 1e-14,"jauPnm80", "12");
3930        vvd(rmatpn[0][2], 0.3639121916933106191e-3, 1e-14,"jauPnm80", "13");
3931 
3932        vvd(rmatpn[1][0], -0.8373804896118301316e-3, 1e-14,"jauPnm80", "21");
3933        vvd(rmatpn[1][1], 0.9999996485439674092, 1e-12,"jauPnm80", "22");
3934        vvd(rmatpn[1][2], 0.4130202510421549752e-4, 1e-14,"jauPnm80", "23");
3935 
3936        vvd(rmatpn[2][0], -0.3638774789072144473e-3, 1e-14,"jauPnm80", "31");
3937        vvd(rmatpn[2][1], -0.4160674085851722359e-4, 1e-14,"jauPnm80", "32");
3938        vvd(rmatpn[2][2], 0.9999999329310274805, 1e-12,"jauPnm80", "33");
3939 
3940     }
3941 
3942     @Test
3943     public void t_pom00()
3944     /**
3945     **
3946     **  Test jauPom00 function.
3947     **
3948     **  Returned:
3949     **     status    int         TRUE = success, FALSE = fail
3950     **
3951     **  Called:  jauPom00, vvd
3952     **
3953     **  This revision:  2008 November 28
3954     */
3955     {
3956        double xp, yp, sp, rpom[][] = new double[3][3];
3957 
3958 
3959        xp =  2.55060238e-7;
3960        yp =  1.860359247e-6;
3961        sp = -0.1367174580728891460e-10;
3962 
3963        rpom = jauPom00(xp, yp, sp);
3964 
3965        vvd(rpom[0][0], 0.9999999999999674721, 1e-12,"jauPom00", "11");
3966        vvd(rpom[0][1], -0.1367174580728846989e-10, 1e-16,"jauPom00", "12");
3967        vvd(rpom[0][2], 0.2550602379999972345e-6, 1e-16,"jauPom00", "13");
3968 
3969        vvd(rpom[1][0], 0.1414624947957029801e-10, 1e-16,"jauPom00", "21");
3970        vvd(rpom[1][1], 0.9999999999982695317, 1e-12,"jauPom00", "22");
3971        vvd(rpom[1][2], -0.1860359246998866389e-5, 1e-16,"jauPom00", "23");
3972 
3973        vvd(rpom[2][0], -0.2550602379741215021e-6, 1e-16,"jauPom00", "31");
3974        vvd(rpom[2][1], 0.1860359247002414021e-5, 1e-16,"jauPom00", "32");
3975        vvd(rpom[2][2], 0.9999999999982370039, 1e-12,"jauPom00", "33");
3976        
3977        double vec[]= {0,0,1};
3978        double vec2[] = jauRxp(rpom,vec);
3979        for (double d : vec2) {
3980         System.out.println(d);
3981     }
3982 
3983     }
3984 
3985     @Test
3986     public void t_ppp()
3987     /**
3988     **
3989     **  Test jauPpp function.
3990     **
3991     **  Returned:
3992     **     status    int         TRUE = success, FALSE = fail
3993     **
3994     **  Called:  jauPpp, vvd
3995     **
3996     **  This revision:  2008 November 30
3997     */
3998     {
3999        double a[] = new double[3], b[] = new double[3], apb[] = new double[3];
4000 
4001 
4002        a[0] = 2.0;
4003        a[1] = 2.0;
4004        a[2] = 3.0;
4005 
4006        b[0] = 1.0;
4007        b[1] = 3.0;
4008        b[2] = 4.0;
4009 
4010        apb = jauPpp(a, b);
4011 
4012        vvd(apb[0], 3.0, 1e-12, "jauPpp", "0");
4013        vvd(apb[1], 5.0, 1e-12, "jauPpp", "1");
4014        vvd(apb[2], 7.0, 1e-12, "jauPpp", "2");
4015 
4016     }
4017 
4018     @Test
4019     public void t_ppsp()
4020     /**
4021     **
4022     **  Test jauPpsp function.
4023     **
4024     **  Returned:
4025     **     status    int         TRUE = success, FALSE = fail
4026     **
4027     **  Called:  jauPpsp, vvd
4028     **
4029     **  This revision:  2008 November 30
4030     */
4031     {
4032        double a[] = new double[3], s, b[] = new double[3], apsb[] = new double[3];
4033 
4034 
4035        a[0] = 2.0;
4036        a[1] = 2.0;
4037        a[2] = 3.0;
4038 
4039        s = 5.0;
4040 
4041        b[0] = 1.0;
4042        b[1] = 3.0;
4043        b[2] = 4.0;
4044 
4045        apsb = jauPpsp(a, s, b);
4046 
4047        vvd(apsb[0], 7.0, 1e-12, "jauPpsp", "0");
4048        vvd(apsb[1], 17.0, 1e-12, "jauPpsp", "1");
4049        vvd(apsb[2], 23.0, 1e-12, "jauPpsp", "2");
4050 
4051     }
4052 
4053     @Test
4054     public void t_pr00()
4055     /**
4056     **
4057     **  Test jauPr00 function.
4058     **
4059     **  Returned:
4060     **     status    int         TRUE = success, FALSE = fail
4061     **
4062     **  Called:  jauPr00, vvd
4063     **
4064     **  This revision:  2008 November 28
4065     */
4066     {
4067        PrecessionDeltaTerms nut = jauPr00(2400000.5, 53736);
4068 
4069        vvd(nut.dpsipr, -0.8716465172668347629e-7, 1e-22,"jauPr00", "dpsipr");
4070        vvd(nut.depspr, -0.7342018386722813087e-8, 1e-22,"jauPr00", "depspr");
4071 
4072     }
4073 
4074     @Test
4075     public void t_prec76()
4076     /**
4077     **
4078     **  Test jauPrec76 function.
4079     **
4080     **  Returned:
4081     **     status    int         TRUE = success, FALSE = fail
4082     **
4083     **  Called:  jauPrec76, vvd
4084     **
4085     **  This revision:  2008 November 28
4086     */
4087     {
4088        double ep01, ep02, ep11, ep12;
4089 
4090 
4091        ep01 = 2400000.5;
4092        ep02 = 33282.0;
4093        ep11 = 2400000.5;
4094        ep12 = 51544.0;
4095 
4096        EulerAngles an = jauPrec76(ep01, ep02, ep11, ep12);
4097 
4098        vvd(an.zeta,  0.5588961642000161243e-2, 1e-12,"jauPrec76", "zeta");
4099        vvd(an.z,     0.5589922365870680624e-2, 1e-12,"jauPrec76", "z");
4100        vvd(an.theta, 0.4858945471687296760e-2, 1e-12,"jauPrec76", "theta");
4101 
4102     }
4103 
4104     @Test
4105     public void t_pv2p()
4106     /**
4107     **
4108     **  Test jauPv2p function.
4109     **
4110     **  Returned:
4111     **     status    int         TRUE = success, FALSE = fail
4112     **
4113     **  Called:  jauPv2p, vvd
4114     **
4115     **  This revision:  2008 November 30
4116     */
4117     {
4118        double pv[][] = new double[2][3], p[] = new double[3];
4119 
4120 
4121        pv[0][0] =  0.3;
4122        pv[0][1] =  1.2;
4123        pv[0][2] = -2.5;
4124 
4125        pv[1][0] = -0.5;
4126        pv[1][1] =  3.1;
4127        pv[1][2] =  0.9;
4128 
4129        p = jauPv2p(pv);
4130 
4131        vvd(p[0],  0.3, 0.0, "jauPv2p", "1");
4132        vvd(p[1],  1.2, 0.0, "jauPv2p", "2");
4133        vvd(p[2], -2.5, 0.0, "jauPv2p", "3");
4134 
4135     }
4136 
4137     @Test
4138     public void t_pv2s()
4139     /**
4140     **
4141     **  Test jauPv2s function.
4142     **
4143     **  Returned:
4144     **     status    int         TRUE = success, FALSE = fail
4145     **
4146     **  Called:  jauPv2s, vvd
4147     **
4148     **  This revision:  2008 November 28
4149     */
4150     {
4151        double pv[][] = new double[2][3];
4152 
4153 
4154        pv[0][0] = -0.4514964673880165;
4155        pv[0][1] =  0.03093394277342585;
4156        pv[0][2] =  0.05594668105108779;
4157 
4158        pv[1][0] =  1.292270850663260e-5;
4159        pv[1][1] =  2.652814182060692e-6;
4160        pv[1][2] =  2.568431853930293e-6;
4161 
4162        SphericalPositionVelocity pvs = jauPv2s(pv);
4163 
4164        vvd(pvs.pos.theta, 3.073185307179586515, 1e-12, "jauPv2s", "theta");
4165        vvd(pvs.pos.phi, 0.1229999999999999992, 1e-12, "jauPv2s", "phi");
4166        vvd(pvs.pos.r, 0.4559999999999999757, 1e-12, "jauPv2s", "r");
4167        vvd(pvs.vel.theta, -0.7800000000000000364e-5, 1e-16, "jauPv2s", "td");
4168        vvd(pvs.vel.phi, 0.9010000000000001639e-5, 1e-16, "jauPv2s", "pd");
4169        vvd(pvs.vel.r, -0.1229999999999999832e-4, 1e-16, "jauPv2s", "rd");
4170 
4171     }
4172 
4173     @Test
4174     public void t_pvdpv()
4175     /**
4176     **
4177     **  Test jauPvdpv function.
4178     **
4179     **  Returned:
4180     **     status    int         TRUE = success, FALSE = fail
4181     **
4182     **  Called:  jauPvdpv, vvd
4183     **
4184     **  This revision:  2008 November 30
4185     */
4186     {
4187        double a[][] = new double[2][3], b[][] = new double[2][3], adb[] = new double[2];
4188 
4189 
4190        a[0][0] = 2.0;
4191        a[0][1] = 2.0;
4192        a[0][2] = 3.0;
4193 
4194        a[1][0] = 6.0;
4195        a[1][1] = 0.0;
4196        a[1][2] = 4.0;
4197 
4198        b[0][0] = 1.0;
4199        b[0][1] = 3.0;
4200        b[0][2] = 4.0;
4201 
4202        b[1][0] = 0.0;
4203        b[1][1] = 2.0;
4204        b[1][2] = 8.0;
4205 
4206        adb = jauPvdpv(a, b);
4207 
4208        vvd(adb[0], 20.0, 1e-12, "jauPvdpv", "1");
4209        vvd(adb[1], 50.0, 1e-12, "jauPvdpv", "2");
4210 
4211     }
4212 
4213     @Test
4214     public void t_pvm()
4215     /**
4216     **
4217     **  Test jauPvm function.
4218     **
4219     **  Returned:
4220     **     status    int         TRUE = success, FALSE = fail
4221     **
4222     **  Called:  jauPvm, vvd
4223     **
4224     **  This revision:  2008 May 25
4225     */
4226     {
4227        double pv[][] = new double[2][3];
4228 
4229 
4230        pv[0][0] =  0.3;
4231        pv[0][1] =  1.2;
4232        pv[0][2] = -2.5;
4233 
4234        pv[1][0] =  0.45;
4235        pv[1][1] = -0.25;
4236        pv[1][2] =  1.1;
4237 
4238        PVModulus ret = jauPvm(pv);
4239 
4240        vvd(ret.r, 2.789265136196270604, 1e-12, "jauPvm", "r");
4241        vvd(ret.s, 1.214495780149111922, 1e-12, "jauPvm", "s");
4242 
4243     }
4244 
4245     @Test
4246     public void t_pvmpv()
4247     /**
4248     **
4249     **  Test jauPvmpv function.
4250     **
4251     **  Returned:
4252     **     status    int         TRUE = success, FALSE = fail
4253     **
4254     **  Called:  jauPvmpv, vvd
4255     **
4256     **  This revision:  2008 November 30
4257     */
4258     {
4259        double a[][] = new double[2][3], b[][] = new double[2][3], amb[][] = new double[2][3];
4260 
4261 
4262        a[0][0] = 2.0;
4263        a[0][1] = 2.0;
4264        a[0][2] = 3.0;
4265 
4266        a[1][0] = 5.0;
4267        a[1][1] = 6.0;
4268        a[1][2] = 3.0;
4269 
4270        b[0][0] = 1.0;
4271        b[0][1] = 3.0;
4272        b[0][2] = 4.0;
4273 
4274        b[1][0] = 3.0;
4275        b[1][1] = 2.0;
4276        b[1][2] = 1.0;
4277 
4278        amb = jauPvmpv(a, b);
4279 
4280        vvd(amb[0][0],  1.0, 1e-12, "jauPvmpv", "11");
4281        vvd(amb[0][1], -1.0, 1e-12, "jauPvmpv", "21");
4282        vvd(amb[0][2], -1.0, 1e-12, "jauPvmpv", "31");
4283 
4284        vvd(amb[1][0],  2.0, 1e-12, "jauPvmpv", "12");
4285        vvd(amb[1][1],  4.0, 1e-12, "jauPvmpv", "22");
4286        vvd(amb[1][2],  2.0, 1e-12, "jauPvmpv", "32");
4287 
4288     }
4289 
4290     @Test
4291     public void t_pvppv()
4292     /**
4293     **
4294     **  Test jauPvppv function.
4295     **
4296     **  Returned:
4297     **     status    int         TRUE = success, FALSE = fail
4298     **
4299     **  Called:  jauPvppv, vvd
4300     **
4301     **  This revision:  2008 November 30
4302     */
4303     {
4304        double a[][] = new double[2][3], b[][] = new double[2][3], apb[][] = new double[2][3];
4305 
4306 
4307        a[0][0] = 2.0;
4308        a[0][1] = 2.0;
4309        a[0][2] = 3.0;
4310 
4311        a[1][0] = 5.0;
4312        a[1][1] = 6.0;
4313        a[1][2] = 3.0;
4314 
4315        b[0][0] = 1.0;
4316        b[0][1] = 3.0;
4317        b[0][2] = 4.0;
4318 
4319        b[1][0] = 3.0;
4320        b[1][1] = 2.0;
4321        b[1][2] = 1.0;
4322 
4323        apb = jauPvppv(a, b);
4324 
4325        vvd(apb[0][0], 3.0, 1e-12, "jauPvppv", "p1");
4326        vvd(apb[0][1], 5.0, 1e-12, "jauPvppv", "p2");
4327        vvd(apb[0][2], 7.0, 1e-12, "jauPvppv", "p3");
4328 
4329        vvd(apb[1][0], 8.0, 1e-12, "jauPvppv", "v1");
4330        vvd(apb[1][1], 8.0, 1e-12, "jauPvppv", "v2");
4331        vvd(apb[1][2], 4.0, 1e-12, "jauPvppv", "v3");
4332 
4333     }
4334 
4335     @Test
4336     public void t_pvstar()
4337     /**
4338     **
4339     **  Test jauPvstar function.
4340     **
4341     **  Returned:
4342     **     status    int         TRUE = success, FALSE = fail
4343     **
4344     **  Called:  jauPvstar, vvd, viv
4345     **
4346     **  This revision:  2009 November 6
4347     */
4348     {
4349        double pv[][] = new double[2][3];
4350 
4351 
4352        pv[0][0] =  126668.5912743160601;
4353        pv[0][1] =  2136.792716839935195;
4354        pv[0][2] = -245251.2339876830091;
4355 
4356        pv[1][0] = -0.4051854035740712739e-2;
4357        pv[1][1] = -0.6253919754866173866e-2;
4358        pv[1][2] =  0.1189353719774107189e-1;
4359 
4360        try {
4361            CatalogCoords cat = jauPvstar(pv);
4362 
4363            vvd(cat.pos.alpha, 0.1686756e-1, 1e-12, "jauPvstar", "ra");
4364            vvd(cat.pos.delta, -1.093989828, 1e-12, "jauPvstar", "dec");
4365            vvd(cat.pm.alpha, -0.1783235160000472788e-4, 1e-16, "jauPvstar", "pmr");
4366            vvd(cat.pm.delta, 0.2336024047000619347e-5, 1e-16, "jauPvstar", "pmd");
4367            vvd(cat.px, 0.74723, 1e-12, "jauPvstar", "px");
4368            vvd(cat.rv, -21.60000010107306010, 1e-11, "jauPvstar", "rv");
4369        } catch (JSOFAInternalError e) {
4370            fail(" internal exception");
4371        }
4372 
4373 
4374     }
4375 
4376     @Test
4377     public void t_pvu()
4378     /**
4379     **
4380     **  Test jauPvu function.
4381     **
4382     **  Returned:
4383     **     status    int         TRUE = success, FALSE = fail
4384     **
4385     **  Called:  jauPvu, vvd
4386     **
4387     **  This revision:  2008 November 30
4388     */
4389     {
4390        double pv[][] = new double[2][3], upv[][] = new double[2][3];
4391 
4392 
4393        pv[0][0] =  126668.5912743160734;
4394        pv[0][1] =  2136.792716839935565;
4395        pv[0][2] = -245251.2339876830229;
4396 
4397        pv[1][0] = -0.4051854035740713039e-2;
4398        pv[1][1] = -0.6253919754866175788e-2;
4399        pv[1][2] =  0.1189353719774107615e-1;
4400 
4401        upv = jauPvu(2920.0, pv);
4402 
4403        vvd(upv[0][0], 126656.7598605317105, 1e-6,"jauPvu", "p1");
4404        vvd(upv[0][1], 2118.531271155726332, 1e-8,"jauPvu", "p2");
4405        vvd(upv[0][2], -245216.5048590656190, 1e-6,"jauPvu", "p3");
4406 
4407        vvd(upv[1][0], -0.4051854035740713039e-2, 1e-12,"jauPvu", "v1");
4408        vvd(upv[1][1], -0.6253919754866175788e-2, 1e-12,"jauPvu", "v2");
4409        vvd(upv[1][2], 0.1189353719774107615e-1, 1e-12,"jauPvu", "v3");
4410 
4411     }
4412 
4413     @Test
4414     public void t_pvup()
4415     /**
4416     **
4417     **  Test jauPvup function.
4418     **
4419     **  Returned:
4420     **     status    int         TRUE = success, FALSE = fail
4421     **
4422     **  Called:  jauPvup, vvd
4423     **
4424     **  This revision:  2008 November 30
4425     */
4426     {
4427        double pv[][] = new double[2][3], p[] = new double[3];
4428 
4429 
4430        pv[0][0] =  126668.5912743160734;
4431        pv[0][1] =  2136.792716839935565;
4432        pv[0][2] = -245251.2339876830229;
4433 
4434        pv[1][0] = -0.4051854035740713039e-2;
4435        pv[1][1] = -0.6253919754866175788e-2;
4436        pv[1][2] =  0.1189353719774107615e-1;
4437 
4438        p = jauPvup(2920.0, pv);
4439 
4440        vvd(p[0],  126656.7598605317105,   1e-12, "jauPvup", "1");
4441        vvd(p[1],    2118.531271155726332, 1e-12, "jauPvup", "2");
4442        vvd(p[2], -245216.5048590656190,   1e-12, "jauPvup", "3");
4443 
4444     }
4445 
4446     @Test
4447     public void t_pvxpv()
4448     /**
4449     **
4450     **  Test jauPvxpv function.
4451     **
4452     **  Returned:
4453     **     status    int         TRUE = success, FALSE = fail
4454     **
4455     **  Called:  jauPvxpv, vvd
4456     **
4457     **  This revision:  2008 November 30
4458     */
4459     {
4460        double a[][] = new double[2][3], b[][] = new double[2][3], axb[][] = new double[2][3];
4461 
4462 
4463        a[0][0] = 2.0;
4464        a[0][1] = 2.0;
4465        a[0][2] = 3.0;
4466 
4467        a[1][0] = 6.0;
4468        a[1][1] = 0.0;
4469        a[1][2] = 4.0;
4470 
4471        b[0][0] = 1.0;
4472        b[0][1] = 3.0;
4473        b[0][2] = 4.0;
4474 
4475        b[1][0] = 0.0;
4476        b[1][1] = 2.0;
4477        b[1][2] = 8.0;
4478 
4479        axb = jauPvxpv(a, b);
4480 
4481        vvd(axb[0][0],  -1.0, 1e-12, "jauPvxpv", "p1");
4482        vvd(axb[0][1],  -5.0, 1e-12, "jauPvxpv", "p2");
4483        vvd(axb[0][2],   4.0, 1e-12, "jauPvxpv", "p3");
4484 
4485        vvd(axb[1][0],  -2.0, 1e-12, "jauPvxpv", "v1");
4486        vvd(axb[1][1], -36.0, 1e-12, "jauPvxpv", "v2");
4487        vvd(axb[1][2],  22.0, 1e-12, "jauPvxpv", "v3");
4488 
4489     }
4490 
4491     @Test
4492     public void t_pxp()
4493     /**
4494     **
4495     **  Test jauPxp function.
4496     **
4497     **  Returned:
4498     **     status    int         TRUE = success, FALSE = fail
4499     **
4500     **  Called:  jauPxp, vvd
4501     **
4502     **  This revision:  2008 November 30
4503     */
4504     {
4505        double a[] = new double[3], b[] = new double[3], axb[] = new double[3];
4506 
4507 
4508        a[0] = 2.0;
4509        a[1] = 2.0;
4510        a[2] = 3.0;
4511 
4512        b[0] = 1.0;
4513        b[1] = 3.0;
4514        b[2] = 4.0;
4515 
4516        axb = jauPxp(a, b);
4517 
4518        vvd(axb[0], -1.0, 1e-12, "jauPxp", "1");
4519        vvd(axb[1], -5.0, 1e-12, "jauPxp", "2");
4520        vvd(axb[2],  4.0, 1e-12, "jauPxp", "3");
4521 
4522     }
4523 
4524     @Test
4525     public void t_rm2v()
4526     /**
4527     **
4528     **  Test jauRm2v function.
4529     **
4530     **  Returned:
4531     **     status    int         TRUE = success, FALSE = fail
4532     **
4533     **  Called:  jauRm2v, vvd
4534     **
4535     **  This revision:  2008 November 30
4536     */
4537     {
4538        double r[][] = new double[3][3], w[] = new double[3];
4539 
4540 
4541        r[0][0] =  0.00;
4542        r[0][1] = -0.80;
4543        r[0][2] = -0.60;
4544 
4545        r[1][0] =  0.80;
4546        r[1][1] = -0.36;
4547        r[1][2] =  0.48;
4548 
4549        r[2][0] =  0.60;
4550        r[2][1] =  0.48;
4551        r[2][2] = -0.64;
4552 
4553        w = jauRm2v(r);
4554 
4555        vvd(w[0],  0.0,                  1e-12, "jauRm2v", "1");
4556        vvd(w[1],  1.413716694115406957, 1e-12, "jauRm2v", "2");
4557        vvd(w[2], -1.884955592153875943, 1e-12, "jauRm2v", "3");
4558 
4559     }
4560 
4561     @Test
4562     public void t_rv2m()
4563     /**
4564     **
4565     **  Test jauRv2m function.
4566     **
4567     **  Returned:
4568     **     status    int         TRUE = success, FALSE = fail
4569     **
4570     **  Called:  jauRv2m, vvd
4571     **
4572     **  This revision:  2008 May 27
4573     */
4574     {
4575        double w[] = new double[3], r[][] = new double[3][3];
4576 
4577 
4578        w[0] =  0.0;
4579        w[1] =  1.41371669;
4580        w[2] = -1.88495559;
4581 
4582        r = jauRv2m(w);
4583 
4584        vvd(r[0][0], -0.7071067782221119905, 1e-14, "jauRv2m", "11");
4585        vvd(r[0][1], -0.5656854276809129651, 1e-14, "jauRv2m", "12");
4586        vvd(r[0][2], -0.4242640700104211225, 1e-14, "jauRv2m", "13");
4587 
4588        vvd(r[1][0],  0.5656854276809129651, 1e-14, "jauRv2m", "21");
4589        vvd(r[1][1], -0.0925483394532274246, 1e-14, "jauRv2m", "22");
4590        vvd(r[1][2], -0.8194112531408833269, 1e-14, "jauRv2m", "23");
4591 
4592        vvd(r[2][0],  0.4242640700104211225, 1e-14, "jauRv2m", "31");
4593        vvd(r[2][1], -0.8194112531408833269, 1e-14, "jauRv2m", "32");
4594        vvd(r[2][2],  0.3854415612311154341, 1e-14, "jauRv2m", "33");
4595 
4596     }
4597 
4598     @Test
4599     public void t_rx()
4600     /**
4601     **
4602     **  Test jauRx function.
4603     **
4604     **  Returned:
4605     **     status    int         TRUE = success, FALSE = fail
4606     **
4607     **  Called:  jauRx, vvd
4608     **
4609     **  This revision:  2008 November 30
4610     */
4611     {
4612        double phi, r[][] = new double[3][3];
4613 
4614 
4615        phi = 0.3456789;
4616 
4617        r[0][0] = 2.0;
4618        r[0][1] = 3.0;
4619        r[0][2] = 2.0;
4620 
4621        r[1][0] = 3.0;
4622        r[1][1] = 2.0;
4623        r[1][2] = 3.0;
4624 
4625        r[2][0] = 3.0;
4626        r[2][1] = 4.0;
4627        r[2][2] = 5.0;
4628 
4629        jauRx(phi, r);
4630 
4631        vvd(r[0][0], 2.0, 0.0, "jauRx", "11");
4632        vvd(r[0][1], 3.0, 0.0, "jauRx", "12");
4633        vvd(r[0][2], 2.0, 0.0, "jauRx", "13");
4634 
4635        vvd(r[1][0], 3.839043388235612460, 1e-12, "jauRx", "21");
4636        vvd(r[1][1], 3.237033249594111899, 1e-12, "jauRx", "22");
4637        vvd(r[1][2], 4.516714379005982719, 1e-12, "jauRx", "23");
4638 
4639        vvd(r[2][0], 1.806030415924501684, 1e-12, "jauRx", "31");
4640        vvd(r[2][1], 3.085711545336372503, 1e-12, "jauRx", "32");
4641        vvd(r[2][2], 3.687721683977873065, 1e-12, "jauRx", "33");
4642 
4643     }
4644 
4645     @Test
4646     public void t_rxp()
4647     /**
4648     **
4649     **  Test jauRxp function.
4650     **
4651     **  Returned:
4652     **     status    int         TRUE = success, FALSE = fail
4653     **
4654     **  Called:  jauRxp, vvd
4655     **
4656     **  This revision:  2008 November 30
4657     */
4658     {
4659        double r[][] = new double[3][3], p[] = new double[3], rp[] = new double[3];
4660 
4661 
4662        r[0][0] = 2.0;
4663        r[0][1] = 3.0;
4664        r[0][2] = 2.0;
4665 
4666        r[1][0] = 3.0;
4667        r[1][1] = 2.0;
4668        r[1][2] = 3.0;
4669 
4670        r[2][0] = 3.0;
4671        r[2][1] = 4.0;
4672        r[2][2] = 5.0;
4673 
4674        p[0] = 0.2;
4675        p[1] = 1.5;
4676        p[2] = 0.1;
4677 
4678        rp = jauRxp(r, p);
4679 
4680        vvd(rp[0], 5.1, 1e-12, "jauRxp", "1");
4681        vvd(rp[1], 3.9, 1e-12, "jauRxp", "2");
4682        vvd(rp[2], 7.1, 1e-12, "jauRxp", "3");
4683 
4684     }
4685 
4686     @Test
4687     public void t_rxpv()
4688     /**
4689     **
4690     **  Test jauRxpv function.
4691     **
4692     **  Returned:
4693     **     status    int         TRUE = success, FALSE = fail
4694     **
4695     **  Called:  jauRxpv, vvd
4696     **
4697     **  This revision:  2008 November 30
4698     */
4699     {
4700        double r[][] = new double[3][3], pv[][] = new double[2][3], rpv[][] = new double[2][3];
4701 
4702 
4703        r[0][0] = 2.0;
4704        r[0][1] = 3.0;
4705        r[0][2] = 2.0;
4706 
4707        r[1][0] = 3.0;
4708        r[1][1] = 2.0;
4709        r[1][2] = 3.0;
4710 
4711        r[2][0] = 3.0;
4712        r[2][1] = 4.0;
4713        r[2][2] = 5.0;
4714 
4715        pv[0][0] = 0.2;
4716        pv[0][1] = 1.5;
4717        pv[0][2] = 0.1;
4718 
4719        pv[1][0] = 1.5;
4720        pv[1][1] = 0.2;
4721        pv[1][2] = 0.1;
4722 
4723        rpv = jauRxpv(r, pv);
4724 
4725        vvd(rpv[0][0], 5.1, 1e-12, "jauRxpv", "11");
4726        vvd(rpv[1][0], 3.8, 1e-12, "jauRxpv", "12");
4727 
4728        vvd(rpv[0][1], 3.9, 1e-12, "jauRxpv", "21");
4729        vvd(rpv[1][1], 5.2, 1e-12, "jauRxpv", "22");
4730 
4731        vvd(rpv[0][2], 7.1, 1e-12, "jauRxpv", "31");
4732        vvd(rpv[1][2], 5.8, 1e-12, "jauRxpv", "32");
4733 
4734     }
4735 
4736     @Test
4737     public void t_rxr()
4738     /**
4739     **
4740     **  Test jauRxr function.
4741     **
4742     **  Returned:
4743     **     status    int         TRUE = success, FALSE = fail
4744     **
4745     **  Called:  jauRxr, vvd
4746     **
4747     **  This revision:  2008 November 30
4748     */
4749     {
4750        double a[][] = new double[3][3], b[][] = new double[3][3], atb[][] = new double[3][3];
4751 
4752 
4753        a[0][0] = 2.0;
4754        a[0][1] = 3.0;
4755        a[0][2] = 2.0;
4756 
4757        a[1][0] = 3.0;
4758        a[1][1] = 2.0;
4759        a[1][2] = 3.0;
4760 
4761        a[2][0] = 3.0;
4762        a[2][1] = 4.0;
4763        a[2][2] = 5.0;
4764 
4765        b[0][0] = 1.0;
4766        b[0][1] = 2.0;
4767        b[0][2] = 2.0;
4768 
4769        b[1][0] = 4.0;
4770        b[1][1] = 1.0;
4771        b[1][2] = 1.0;
4772 
4773        b[2][0] = 3.0;
4774        b[2][1] = 0.0;
4775        b[2][2] = 1.0;
4776 
4777        atb = jauRxr(a, b);
4778 
4779        vvd(atb[0][0], 20.0, 1e-12, "jauRxr", "11");
4780        vvd(atb[0][1],  7.0, 1e-12, "jauRxr", "12");
4781        vvd(atb[0][2],  9.0, 1e-12, "jauRxr", "13");
4782 
4783        vvd(atb[1][0], 20.0, 1e-12, "jauRxr", "21");
4784        vvd(atb[1][1],  8.0, 1e-12, "jauRxr", "22");
4785        vvd(atb[1][2], 11.0, 1e-12, "jauRxr", "23");
4786 
4787        vvd(atb[2][0], 34.0, 1e-12, "jauRxr", "31");
4788        vvd(atb[2][1], 10.0, 1e-12, "jauRxr", "32");
4789        vvd(atb[2][2], 15.0, 1e-12, "jauRxr", "33");
4790 
4791     }
4792 
4793     @Test
4794     public void t_ry()
4795     /**
4796     **
4797     **  Test jauRy function.
4798     **
4799     **  Returned:
4800     **     status    int         TRUE = success, FALSE = fail
4801     **
4802     **  Called:  jauRy, vvd
4803     **
4804     **  This revision:  2008 November 30
4805     */
4806     {
4807        double theta, r[][] = new double[3][3];
4808 
4809 
4810        theta = 0.3456789;
4811 
4812        r[0][0] = 2.0;
4813        r[0][1] = 3.0;
4814        r[0][2] = 2.0;
4815 
4816        r[1][0] = 3.0;
4817        r[1][1] = 2.0;
4818        r[1][2] = 3.0;
4819 
4820        r[2][0] = 3.0;
4821        r[2][1] = 4.0;
4822        r[2][2] = 5.0;
4823 
4824        jauRy(theta, r);
4825 
4826        vvd(r[0][0], 0.8651847818978159930, 1e-12, "jauRy", "11");
4827        vvd(r[0][1], 1.467194920539316554, 1e-12, "jauRy", "12");
4828        vvd(r[0][2], 0.1875137911274457342, 1e-12, "jauRy", "13");
4829 
4830        vvd(r[1][0], 3, 1e-12, "jauRy", "21");
4831        vvd(r[1][1], 2, 1e-12, "jauRy", "22");
4832        vvd(r[1][2], 3, 1e-12, "jauRy", "23");
4833 
4834        vvd(r[2][0], 3.500207892850427330, 1e-12, "jauRy", "31");
4835        vvd(r[2][1], 4.779889022262298150, 1e-12, "jauRy", "32");
4836        vvd(r[2][2], 5.381899160903798712, 1e-12, "jauRy", "33");
4837 
4838     }
4839 
4840     @Test
4841     public void t_rz()
4842     /**
4843     **
4844     **  Test jauRz function.
4845     **
4846     **  Returned:
4847     **     status    int         TRUE = success, FALSE = fail
4848     **
4849     **  Called:  jauRz, vvd
4850     **
4851     **  This revision:  2008 November 30
4852     */
4853     {
4854        double psi, r[][] = new double[3][3];
4855 
4856 
4857        psi = 0.3456789;
4858 
4859        r[0][0] = 2.0;
4860        r[0][1] = 3.0;
4861        r[0][2] = 2.0;
4862 
4863        r[1][0] = 3.0;
4864        r[1][1] = 2.0;
4865        r[1][2] = 3.0;
4866 
4867        r[2][0] = 3.0;
4868        r[2][1] = 4.0;
4869        r[2][2] = 5.0;
4870 
4871        jauRz(psi, r);
4872 
4873        vvd(r[0][0], 2.898197754208926769, 1e-12, "jauRz", "11");
4874        vvd(r[0][1], 3.500207892850427330, 1e-12, "jauRz", "12");
4875        vvd(r[0][2], 2.898197754208926769, 1e-12, "jauRz", "13");
4876 
4877        vvd(r[1][0], 2.144865911309686813, 1e-12, "jauRz", "21");
4878        vvd(r[1][1], 0.865184781897815993, 1e-12, "jauRz", "22");
4879        vvd(r[1][2], 2.144865911309686813, 1e-12, "jauRz", "23");
4880 
4881        vvd(r[2][0], 3.0, 1e-12, "jauRz", "31");
4882        vvd(r[2][1], 4.0, 1e-12, "jauRz", "32");
4883        vvd(r[2][2], 5.0, 1e-12, "jauRz", "33");
4884 
4885     }
4886 
4887     @Test
4888     public void t_s00a()
4889     /**
4890     **
4891     **  Test jauS00a function.
4892     **
4893     **  Returned:
4894     **     status    int         TRUE = success, FALSE = fail
4895     **
4896     **  Called:  jauS00a, vvd
4897     **
4898     **  This revision:  2008 November 28
4899     */
4900     {
4901        double s;
4902 
4903 
4904        s = jauS00a(2400000.5, 52541.0);
4905 
4906        vvd(s, -0.1340684448919163584e-7, 1e-18, "jauS00a", "");
4907 
4908     }
4909 
4910     @Test
4911     public void t_s00b()
4912     /**
4913     **
4914     **  Test jauS00b function.
4915     **
4916     **  Returned:
4917     **     status    int         TRUE = success, FALSE = fail
4918     **
4919     **  Called:  jauS00b, vvd
4920     **
4921     **  This revision:  2008 November 28
4922     */
4923     {
4924        double s;
4925 
4926 
4927        s = jauS00b(2400000.5, 52541.0);
4928 
4929        vvd(s, -0.1340695782951026584e-7, 1e-18, "jauS00b", "");
4930 
4931     }
4932 
4933     @Test
4934     public void t_s00()
4935     /**
4936     **
4937     **  Test jauS00 function.
4938     **
4939     **  Returned:
4940     **     status    int         TRUE = success, FALSE = fail
4941     **
4942     **  Called:  jauS00, vvd
4943     **
4944     **  This revision:  2008 November 28
4945     */
4946     {
4947        double x, y, s;
4948 
4949 
4950        x = 0.5791308486706011000e-3;
4951        y = 0.4020579816732961219e-4;
4952 
4953        s = jauS00(2400000.5, 53736.0, x, y);
4954 
4955        vvd(s, -0.1220036263270905693e-7, 1e-18, "jauS00", "");
4956 
4957     }
4958 
4959     @Test
4960     public void t_s06a()
4961     /**
4962     **
4963     **  Test jauS06a function.
4964     **
4965     **  Returned:
4966     **     status    int         TRUE = success, FALSE = fail
4967     **
4968     **  Called:  jauS06a, vvd
4969     **
4970     **  This revision:  2008 November 28
4971     */
4972     {
4973        double s;
4974 
4975 
4976        s = jauS06a(2400000.5, 52541.0);
4977 
4978        vvd(s, -0.1340680437291812383e-7, 1e-18, "jauS06a", "");
4979 
4980     }
4981 
4982     @Test
4983     public void t_s06()
4984     /**
4985     **
4986     **  Test jauS06 function.
4987     **
4988     **  Returned:
4989     **     status    int         TRUE = success, FALSE = fail
4990     **
4991     **  Called:  jauS06, vvd
4992     **
4993     **  This revision:  2008 November 28
4994     */
4995     {
4996        double x, y, s;
4997 
4998 
4999        x = 0.5791308486706011000e-3;
5000        y = 0.4020579816732961219e-4;
5001 
5002        s = jauS06(2400000.5, 53736.0, x, y);
5003 
5004        vvd(s, -0.1220032213076463117e-7, 1e-18, "jauS06", "");
5005 
5006     }
5007 
5008     @Test
5009     public void t_s2c()
5010     /**
5011     **
5012     **  Test jauS2c function.
5013     **
5014     **  Returned:
5015     **     status    int         TRUE = success, FALSE = fail
5016     **
5017     **  Called:  jauS2c, vvd
5018     **
5019     **  This revision:  2008 November 30
5020     */
5021     {
5022        double c[] = new double[3];
5023 
5024 
5025        c = jauS2c(3.0123, -0.999);
5026 
5027        vvd(c[0], -0.5366267667260523906, 1e-12, "jauS2c", "1");
5028        vvd(c[1],  0.0697711109765145365, 1e-12, "jauS2c", "2");
5029        vvd(c[2], -0.8409302618566214041, 1e-12, "jauS2c", "3");
5030 
5031     }
5032 
5033     @Test
5034     public void t_s2p()
5035     /**
5036     **
5037     **  Test jauS2p function.
5038     **
5039     **  Returned:
5040     **     status    int         TRUE = success, FALSE = fail
5041     **
5042     **  Called:  jauS2p, vvd
5043     **
5044     **  This revision:  2008 May 25
5045     */
5046     {
5047        double p[] = new double[3];
5048 
5049 
5050        p = jauS2p(-3.21, 0.123, 0.456);
5051 
5052        vvd(p[0], -0.4514964673880165228, 1e-12, "jauS2p", "x");
5053        vvd(p[1],  0.0309339427734258688, 1e-12, "jauS2p", "y");
5054        vvd(p[2],  0.0559466810510877933, 1e-12, "jauS2p", "z");
5055 
5056     }
5057 
5058     @Test
5059     public void t_s2pv()
5060     /**
5061     **
5062     **  Test jauS2pv function.
5063     **
5064     **  Returned:
5065     **     status    int         TRUE = success, FALSE = fail
5066     **
5067     **  Called:  jauS2pv, vvd
5068     **
5069     **  This revision:  2008 November 28
5070     */
5071     {
5072        double pv[][] = new double[2][3];
5073 
5074 
5075        pv = jauS2pv(-3.21, 0.123, 0.456, -7.8e-6, 9.01e-6, -1.23e-5);
5076 
5077        vvd(pv[0][0], -0.4514964673880165228, 1e-12, "jauS2pv", "x");
5078        vvd(pv[0][1],  0.0309339427734258688, 1e-12, "jauS2pv", "y");
5079        vvd(pv[0][2],  0.0559466810510877933, 1e-12, "jauS2pv", "z");
5080 
5081        vvd(pv[1][0],  0.1292270850663260170e-4, 1e-16,"jauS2pv", "vx");
5082        vvd(pv[1][1],  0.2652814182060691422e-5, 1e-16,"jauS2pv", "vy");
5083        vvd(pv[1][2],  0.2568431853930292259e-5, 1e-16,"jauS2pv", "vz");
5084 
5085     }
5086 
5087     @Test
5088     public void t_s2xpv()
5089     /**
5090     **
5091     **  Test jauS2xpv function.
5092     **
5093     **  Returned:
5094     **     status    int         TRUE = success, FALSE = fail
5095     **
5096     **  Called:  jauS2xpv, vvd
5097     **
5098     **  This revision:  2008 November 30
5099     */
5100     {
5101        double s1, s2, pv[][] = new double[2][3], spv[][]= new double[2][3];
5102 
5103 
5104        s1 = 2.0;
5105        s2 = 3.0;
5106 
5107        pv[0][0] =  0.3;
5108        pv[0][1] =  1.2;
5109        pv[0][2] = -2.5;
5110 
5111        pv[1][0] =  0.5;
5112        pv[1][1] =  2.3;
5113        pv[1][2] = -0.4;
5114 
5115        spv = jauS2xpv(s1, s2, pv);
5116 
5117        vvd(spv[0][0],  0.6, 1e-12, "jauS2xpv", "p1");
5118        vvd(spv[0][1],  2.4, 1e-12, "jauS2xpv", "p2");
5119        vvd(spv[0][2], -5.0, 1e-12, "jauS2xpv", "p3");
5120 
5121        vvd(spv[1][0],  1.5, 1e-12, "jauS2xpv", "v1");
5122        vvd(spv[1][1],  6.9, 1e-12, "jauS2xpv", "v2");
5123        vvd(spv[1][2], -1.2, 1e-12, "jauS2xpv", "v3");
5124 
5125     }
5126 
5127     @Test
5128     public void t_sepp()
5129     /**
5130     **
5131     **  Test jauSepp function.
5132     **
5133     **  Returned:
5134     **     status    int         TRUE = success, FALSE = fail
5135     **
5136     **  Called:  jauSepp, vvd
5137     **
5138     **  This revision:  2008 November 29
5139     */
5140     {
5141        double a[] = new double[3], b[] = new double[3], s;
5142 
5143 
5144        a[0] =  1.0;
5145        a[1] =  0.1;
5146        a[2] =  0.2;
5147 
5148        b[0] = -3.0;
5149        b[1] =  1e-3;
5150        b[2] =  0.2;
5151 
5152        s = jauSepp(a, b);
5153 
5154        vvd(s, 2.860391919024660768, 1e-12, "jauSepp", "");
5155 
5156     }
5157 
5158     @Test
5159     public void t_seps()
5160     /**
5161     **
5162     **  Test jauSeps function.
5163     **
5164     **  Returned:
5165     **     status    int         TRUE = success, FALSE = fail
5166     **
5167     **  Called:  jauSeps, vvd
5168     **
5169     **  This revision:  2008 May 22
5170     */
5171     {
5172        double al, ap, bl, bp, s;
5173 
5174 
5175        al =  1.0;
5176        ap =  0.1;
5177 
5178        bl =  0.2;
5179        bp = -3.0;
5180 
5181        s = jauSeps(al, ap, bl, bp);
5182 
5183        vvd(s, 2.346722016996998842, 1e-14, "jauSeps", "");
5184 
5185     }
5186 
5187     @Test
5188     public void t_sp00()
5189     /**
5190     **
5191     **  Test jauSp00 function.
5192     **
5193     **  Returned:
5194     **     status    int         TRUE = success, FALSE = fail
5195     **
5196     **  Called:  jauSp00, vvd
5197     **
5198     **  This revision:  2008 May 25
5199     */
5200     {
5201        vvd(jauSp00(2400000.5, 52541.0),
5202            -0.6216698469981019309e-11, 1e-12, "jauSp00", "");
5203 
5204     }
5205 
5206     @Test
5207     public void t_starpm()
5208     /**
5209     **
5210     **  Test jauStarpm function.
5211     **
5212     **  Returned:
5213     **     status    int         TRUE = success, FALSE = fail
5214     **
5215     **  Called:  jauStarpm, vvd, viv
5216     **
5217     **  This revision:  2008 November 30
5218     */
5219     {
5220        double ra1, dec1, pmr1, pmd1, px1, rv1;
5221 
5222        ra1 =   0.01686756;
5223        dec1 = -1.093989828;
5224        pmr1 = -1.78323516e-5;
5225        pmd1 =  2.336024047e-6;
5226        px1 =   0.74723;
5227        rv1 = -21.6;
5228 
5229        try {
5230            CatalogCoords cat = jauStarpm(ra1, dec1, pmr1, pmd1, px1, rv1,
5231                    2400000.5, 50083.0, 2400000.5, 53736.0 );
5232 
5233            vvd(cat.pos.alpha, 0.01668919069414256149, 1e-13,"jauStarpm", "ra");
5234            vvd(cat.pos.delta, -1.093966454217127897, 1e-13,"jauStarpm", "dec");
5235            vvd(cat.pm.alpha, -0.1783662682153176524e-4, 1e-17,"jauStarpm", "pmr");
5236            vvd(cat.pm.delta, 0.2338092915983989595e-5, 1e-17,"jauStarpm", "pmd");
5237            vvd(cat.px, 0.7473533835317719243, 1e-13,"jauStarpm", "px");
5238            vvd(cat.rv, -21.59905170476417175, 1e-11,"jauStarpm", "rv");
5239        } catch (JSOFAInternalError e) {
5240 
5241            e.printStackTrace();
5242            fail("jauStarpm threw exception");
5243        }
5244 
5245  
5246 
5247     }
5248 
5249     @Test
5250     public void t_starpv()
5251     /**
5252     **
5253     **  Test jauStarpv function.
5254     **
5255     **  Returned:
5256     **     status    int         TRUE = success, FALSE = fail
5257     **
5258     **  Called:  jauStarpv, vvd, viv
5259     **
5260     **  This revision:  2008 November 30
5261     */
5262     {
5263        double ra, dec, pmr, pmd, px, rv, pv[][] = new double[2][3];
5264     
5265 
5266 
5267        ra =   0.01686756;
5268        dec = -1.093989828;
5269        pmr = -1.78323516e-5;
5270        pmd =  2.336024047e-6;
5271        px =   0.74723;
5272        rv = -21.6;
5273 
5274        int j = jauStarpv(ra, dec, pmr, pmd, px, rv, pv);
5275 
5276        vvd(pv[0][0], 126668.5912743160601, 1e-10,"jauStarpv", "11");
5277        vvd(pv[0][1], 2136.792716839935195, 1e-12,"jauStarpv", "12");
5278        vvd(pv[0][2], -245251.2339876830091, 1e-10,"jauStarpv", "13");
5279 
5280        vvd(pv[1][0], -0.4051854008955659551e-2, 1e-13,"jauStarpv", "21");
5281        vvd(pv[1][1], -0.6253919754414777970e-2, 1e-15,"jauStarpv", "22");
5282        vvd(pv[1][2], 0.1189353714588109341e-1, 1e-13,"jauStarpv", "23");
5283 
5284        viv(j, 0, "jauStarpv", "j");
5285 
5286     }
5287 
5288     @Test
5289     public void t_sxp()
5290     /**
5291     **
5292     **  Test jauSxp function.
5293     **
5294     **  Returned:
5295     **     status    int         TRUE = success, FALSE = fail
5296     **
5297     **  Called:  jauSxp, vvd
5298     **
5299     **  This revision:  2008 November 30
5300     */
5301     {
5302        double s, p[] = new double[3], sp[] = new double[3];
5303 
5304 
5305        s = 2.0;
5306 
5307        p[0] =  0.3;
5308        p[1] =  1.2;
5309        p[2] = -2.5;
5310 
5311        sp = jauSxp(s, p);
5312 
5313        vvd(sp[0],  0.6, 0.0, "jauSxp", "1");
5314        vvd(sp[1],  2.4, 0.0, "jauSxp", "2");
5315        vvd(sp[2], -5.0, 0.0, "jauSxp", "3");
5316 
5317     }
5318 
5319 
5320     @Test
5321     public void t_sxpv()
5322     /**
5323     **
5324     **  Test jauSxpv function.
5325     **
5326     **  Returned:
5327     **     status    int         TRUE = success, FALSE = fail
5328     **
5329     **  Called:  jauSxpv, vvd
5330     **
5331     **  This revision:  2008 November 30
5332     */
5333     {
5334        double s, pv[][] = new double[2][3], spv[][] = new double[2][3];
5335 
5336 
5337        s = 2.0;
5338 
5339        pv[0][0] =  0.3;
5340        pv[0][1] =  1.2;
5341        pv[0][2] = -2.5;
5342 
5343        pv[1][0] =  0.5;
5344        pv[1][1] =  3.2;
5345        pv[1][2] = -0.7;
5346 
5347        spv = jauSxpv(s, pv);
5348 
5349        vvd(spv[0][0],  0.6, 0.0, "jauSxpv", "p1");
5350        vvd(spv[0][1],  2.4, 0.0, "jauSxpv", "p2");
5351        vvd(spv[0][2], -5.0, 0.0, "jauSxpv", "p3");
5352 
5353        vvd(spv[1][0],  1.0, 0.0, "jauSxpv", "v1");
5354        vvd(spv[1][1],  6.4, 0.0, "jauSxpv", "v2");
5355        vvd(spv[1][2], -1.4, 0.0, "jauSxpv", "v3");
5356 
5357     }
5358 
5359     @Test
5360      public void t_taitt()
5361     /**
5362     **
5363     **  Test jauTaitt function.
5364     **
5365     **  Returned:
5366     **     status    int         TRUE = success, FALSE = fail
5367     **
5368     **  Called:  jauTaitt, vvd, viv
5369     **
5370     **  This revision:  2010 September 7
5371     */
5372     {
5373        JulianDate jd = jauTaitt(2453750.5, 0.892482639);
5374 
5375        vvd(jd.djm0, 2453750.5, 1e-6, "jauTaitt", "t1");
5376        vvd(jd.djm1, 0.892855139, 1e-12, "jauTaitt", "t2");
5377 
5378     }
5379 
5380      @Test
5381      public void t_taiut1()
5382     /**
5383     **
5384     **  Test jauTaiut1 function.
5385     **
5386     **  Returned:
5387     **     status    int         TRUE = success, FALSE = fail
5388     **
5389     **  Called:  jauTaiut1, vvd, viv
5390     **
5391     **  This revision:  2010 September 7
5392     */
5393     {
5394        JulianDate jd = jauTaiut1(2453750.5, 0.892482639, -32.6659);
5395 
5396        vvd(jd.djm0, 2453750.5, 1e-6, "jauTaiut1", "u1");
5397        vvd(jd.djm1, 0.8921045614537037037, 1e-12, "jauTaiut1", "u2");
5398 
5399     }
5400 
5401      @Test
5402      public void t_taiutc() throws JSOFAIllegalParameter, JSOFAInternalError
5403     /**
5404     **
5405     **  Test jauTaiutc function.
5406     **
5407     **  Returned:
5408     **     status    LOGICAL     TRUE = success, FALSE = fail
5409     **
5410     **  Called:  jauTaiutc, vvd, viv
5411     **
5412     **  This revision:  2010 September 7
5413     */
5414     {
5415        JulianDate jd = jauTaiutc(2453750.5, 0.892482639);
5416 
5417        vvd(jd.djm0, 2453750.5, 1e-6, "jauTaiutc", "u1");
5418        vvd(jd.djm1, 0.8921006945555555556, 1e-12, "jauTaiutc", "u2");
5419  
5420     }
5421 
5422      @Test
5423      public void t_tcbtdb()
5424     /**
5425     **
5426     **  Test jauTcbtdb function.
5427     **
5428     **  Returned:
5429     **     status    int         TRUE = success, FALSE = fail
5430     **
5431     **  Called:  jauTcbtdb, vvd, viv
5432     **
5433     **  This revision:  2010 September 6
5434     */
5435     {
5436        JulianDate jd = jauTcbtdb(2453750.5, 0.893019599);
5437 
5438        vvd(jd.djm0, 2453750.5, 1e-6, "jauTcbtdb", "b1");
5439        vvd(jd.djm1, 0.8928551362746343397, 1e-12, "jauTcbtdb", "b2");
5440 
5441     }
5442 
5443      @Test
5444      public void t_tcgtt()
5445     /**
5446     **
5447     **  Test jauTcgtt function.
5448     **
5449     **  Returned:
5450     **     status    int         TRUE = success, FALSE = fail
5451     **
5452     **  Called:  jauTcgtt, vvd, viv
5453     **
5454     **  This revision:  2010 September g
5455     */
5456     {
5457        JulianDate jd = jauTcgtt(2453750.5, 0.892862531);
5458 
5459        vvd(jd.djm0, 2453750.5, 1e-6, "jauTcgtt", "t1");
5460        vvd(jd.djm1, 0.8928551387488816828, 1e-12, "jauTcgtt", "t2");
5461 
5462     }
5463      @Test
5464      public void t_tdbtcb()
5465     /**
5466     **
5467     **  Test jauTdbtcb function.
5468     **
5469     **  Returned:
5470     **     status    int         TRUE = success, FALSE = fail
5471     **
5472     **  Called:  jauTdbtcb, vvd, viv
5473     **
5474     **  This revision:  2010 September 6
5475     */
5476     {
5477        JulianDate jd = jauTdbtcb(2453750.5, 0.892855137);
5478 
5479        vvd( jd.djm0, 2453750.5, 1e-6, "jauTdbtcb", "b1");
5480        vvd( jd.djm1, 0.8930195997253656716, 1e-12, "jauTdbtcb", "b2");
5481 
5482     }
5483 
5484      @Test
5485      public void t_tdbtt()
5486     /**
5487     **
5488     **  Test jauTdbtt function.
5489     **
5490     **  Returned:
5491     **     status    int         TRUE = success, FALSE = fail
5492     **
5493     **  Called:  jauTdbtt, vvd, viv
5494     **
5495     **  This revision:  2010 September 7
5496     */
5497     {
5498        JulianDate jd = jauTdbtt(2453750.5, 0.892855137, -0.000201);
5499 
5500        vvd(jd.djm0, 2453750.5, 1e-6, "jauTdbtt", "t1");
5501        vvd(jd.djm1, 0.8928551393263888889, 1e-12, "jauTdbtt", "t2");
5502 
5503     }
5504 
5505 //     void t_tf2a()
5506 //    /*
5507 //    **  - - - - - - -
5508 //    **   t _ t f 2 a
5509 //    **  - - - - - - -
5510 //    **
5511 //    **  Test jauTf2a function.
5512 //    **
5513 //    **  Returned:
5514 //    **     status    int         TRUE = success, FALSE = fail
5515 //    **
5516 //    **  Called:  jauTf2a, vvd, viv
5517 //    **
5518 //    **  This revision:  2010 September 7
5519 //    */
5520 //    {
5521 //       double a;
5522 //    
5523 //
5524 //
5525 //       j = jauTf2a('+', 4, 58, 20.2, a);
5526 //
5527 //       vvd(a, 1.301739278189537429, 1e-12, "jauTf2a", "a");
5528 //       viv(j, 0, "jauTf2a", "j");
5529 //
5530 //    }
5531 //
5532 //     void t_tf2d()
5533 //    /*
5534 //    **  - - - - - - -
5535 //    **   t _ t f 2 d
5536 //    **  - - - - - - -
5537 //    **
5538 //    **  Test jauTf2d function.
5539 //    **
5540 //    **  Returned:
5541 //    **     status    int         TRUE = success, FALSE = fail
5542 //    **
5543 //    **  Called:  jauTf2d, vvd, viv
5544 //    **
5545 //    **  This revision:  2010 September 7
5546 //    */
5547 //    {
5548 //       double d;
5549 //    
5550 //
5551 //
5552 //       j = jauTf2d(' ', 23, 55, 10.9, d);
5553 //
5554 //       vvd(d, 0.9966539351851851852, 1e-12, "jauTf2d", "d");
5555 //       viv(j, 0, "jauTf2d", "j");
5556 //
5557 //    }
5558    
5559     
5560     
5561     @Test
5562     public void t_tr()
5563     /**
5564     **
5565     **  Test jauTr function.
5566     **
5567     **  Returned:
5568     **     status    int         TRUE = success, FALSE = fail
5569     **
5570     **  Called:  jauTr, vvd
5571     **
5572     **  This revision:  2008 November 30
5573     */
5574     {
5575        double r[][] = new double[3][3], rt[][] = new double[3][3];
5576 
5577 
5578        r[0][0] = 2.0;
5579        r[0][1] = 3.0;
5580        r[0][2] = 2.0;
5581 
5582        r[1][0] = 3.0;
5583        r[1][1] = 2.0;
5584        r[1][2] = 3.0;
5585 
5586        r[2][0] = 3.0;
5587        r[2][1] = 4.0;
5588        r[2][2] = 5.0;
5589 
5590        rt = jauTr(r);
5591 
5592        vvd(rt[0][0], 2.0, 0.0, "jauTr", "11");
5593        vvd(rt[0][1], 3.0, 0.0, "jauTr", "12");
5594        vvd(rt[0][2], 3.0, 0.0, "jauTr", "13");
5595 
5596        vvd(rt[1][0], 3.0, 0.0, "jauTr", "21");
5597        vvd(rt[1][1], 2.0, 0.0, "jauTr", "22");
5598        vvd(rt[1][2], 4.0, 0.0, "jauTr", "23");
5599 
5600        vvd(rt[2][0], 2.0, 0.0, "jauTr", "31");
5601        vvd(rt[2][1], 3.0, 0.0, "jauTr", "32");
5602        vvd(rt[2][2], 5.0, 0.0, "jauTr", "33");
5603 
5604     }
5605 
5606     @Test
5607     public void t_trxp()
5608     /**
5609     **
5610     **  Test jauTrxp function.
5611     **
5612     **  Returned:
5613     **     status    int         TRUE = success, FALSE = fail
5614     **
5615     **  Called:  jauTrxp, vvd
5616     **
5617     **  This revision:  2008 November 30
5618     */
5619     {
5620        double r[][] = new double[3][3], p[] = new double[3], trp[] = new double[3];
5621 
5622 
5623        r[0][0] = 2.0;
5624        r[0][1] = 3.0;
5625        r[0][2] = 2.0;
5626 
5627        r[1][0] = 3.0;
5628        r[1][1] = 2.0;
5629        r[1][2] = 3.0;
5630 
5631        r[2][0] = 3.0;
5632        r[2][1] = 4.0;
5633        r[2][2] = 5.0;
5634 
5635        p[0] = 0.2;
5636        p[1] = 1.5;
5637        p[2] = 0.1;
5638 
5639        trp = jauTrxp(r, p);
5640 
5641        vvd(trp[0], 5.2, 1e-12, "jauTrxp", "1");
5642        vvd(trp[1], 4.0, 1e-12, "jauTrxp", "2");
5643        vvd(trp[2], 5.4, 1e-12, "jauTrxp", "3");
5644 
5645     }
5646 
5647     @Test
5648     public void t_trxpv()
5649     /**
5650     **
5651     **  Test jauTrxpv function.
5652     **
5653     **  Returned:
5654     **     status    int         TRUE = success, FALSE = fail
5655     **
5656     **  Called:  jauTrxpv, vvd
5657     **
5658     **  This revision:  2008 November 30
5659     */
5660     {
5661        double r[][] = new double[3][3], pv[][] = new double[2][3], trpv[][] = new double[2][3];
5662 
5663 
5664        r[0][0] = 2.0;
5665        r[0][1] = 3.0;
5666        r[0][2] = 2.0;
5667 
5668        r[1][0] = 3.0;
5669        r[1][1] = 2.0;
5670        r[1][2] = 3.0;
5671 
5672        r[2][0] = 3.0;
5673        r[2][1] = 4.0;
5674        r[2][2] = 5.0;
5675 
5676        pv[0][0] = 0.2;
5677        pv[0][1] = 1.5;
5678        pv[0][2] = 0.1;
5679 
5680        pv[1][0] = 1.5;
5681        pv[1][1] = 0.2;
5682        pv[1][2] = 0.1;
5683 
5684        trpv = jauTrxpv(r, pv);
5685 
5686        vvd(trpv[0][0], 5.2, 1e-12, "jauTrxpv", "p1");
5687        vvd(trpv[0][1], 4.0, 1e-12, "jauTrxpv", "p1");
5688        vvd(trpv[0][2], 5.4, 1e-12, "jauTrxpv", "p1");
5689 
5690        vvd(trpv[1][0], 3.9, 1e-12, "jauTrxpv", "v1");
5691        vvd(trpv[1][1], 5.3, 1e-12, "jauTrxpv", "v2");
5692        vvd(trpv[1][2], 4.1, 1e-12, "jauTrxpv", "v3");
5693 
5694     }
5695     
5696     @Test
5697     public void t_tttai()
5698     /**
5699     **
5700     **  Test jauTttai function.
5701     **
5702     **  Returned:
5703     **     status    int         TRUE = success, FALSE = fail
5704     **
5705     **  Called:  jauTttai, vvd, viv
5706     **
5707     **  This revision:  2010 September 7
5708     */
5709     {
5710 
5711 
5712 
5713        JulianDate jd = jauTttai(2453750.5, 0.892482639);
5714 
5715        vvd(jd.djm0, 2453750.5, 1e-6, "jauTttai", "a1");
5716        vvd(jd.djm1, 0.892110139, 1e-12, "jauTttai", "a2");
5717        
5718 
5719     }
5720 
5721     @Test
5722     public void t_tttcg()
5723     /**
5724     **
5725     **  Test jauTttcg function.
5726     **
5727     **  Returned:
5728     **     status    int         TRUE = success, FALSE = fail
5729     **
5730     **  Called:  jauTttcg, vvd, viv
5731     **
5732     **  This revision:  2010 September 7
5733     */
5734     {
5735 
5736        JulianDate jd = jauTttcg(2453750.5, 0.892482639);
5737 
5738        vvd( jd.djm0, 2453750.5, 1e-6, "jauTttcg", "g1");
5739        vvd( jd.djm1, 0.8924900312508587113, 1e-12, "jauTttcg", "g2");
5740 
5741     }
5742 
5743     @Test
5744     public void t_tttdb()
5745     /**
5746     **
5747     **  Test jauTttdb function.
5748     **
5749     **  Returned:
5750     **     status    int         TRUE = success, FALSE = fail
5751     **
5752     **  Called:  jauTttdb, vvd, viv
5753     **
5754     **  This revision:  2010 September 7
5755     */
5756     {
5757 
5758        JulianDate jd = jauTttdb(2453750.5, 0.892855139, -0.000201);
5759 
5760        vvd(jd.djm0, 2453750.5, 1e-6, "jauTttdb", "b1");
5761        vvd(jd.djm1, 0.8928551366736111111, 1e-12, "jauTttdb", "b2");
5762       
5763 
5764     }
5765 
5766     @Test
5767     public void t_ttut1()
5768     /**
5769     **
5770     **  Test jauTtut1 function.
5771     **
5772     **  Returned:
5773     **     status    int         TRUE = success, FALSE = fail
5774     **
5775     **  Called:  jauTtut1, vvd, viv
5776     **
5777     **  This revision:  2010 September 7
5778     */
5779     {
5780        JulianDate jd = jauTtut1(2453750.5, 0.892855139, 64.8499);
5781 
5782        vvd(jd.djm0, 2453750.5, 1e-6, "jauTtut1", "u1");
5783        vvd(jd.djm1, 0.8921045614537037037, 1e-12, "jauTtut1", "u2");
5784 
5785     }
5786 
5787     @Test
5788     public void t_ut1tai()
5789     /**
5790     **
5791     **  Test jauUt1tai function.
5792     **
5793     **  Returned:
5794     **     status    int         TRUE = success, FALSE = fail
5795     **
5796     **  Called:  jauUt1tai, vvd, viv
5797     **
5798     **  This revision:  2010 September 7
5799     */
5800     {
5801 
5802 
5803        JulianDate jd = jauUt1tai(2453750.5, 0.892104561, -32.6659);
5804 
5805        vvd(jd.djm0, 2453750.5, 1e-6, "jauUt1tai", "a1");
5806        vvd(jd.djm1, 0.8924826385462962963, 1e-12, "jauUt1tai", "a2");
5807 
5808     }
5809 
5810     @Test
5811     public void t_ut1tt()
5812     /**
5813     **
5814     **  Test jauUt1tt function.
5815     **
5816     **  Returned:
5817     **     status    int         TRUE = success, FALSE = fail
5818     **
5819     **  Called:  jauUt1tt, vvd, viv
5820     **
5821     **  This revision:  2010 September 7
5822     */
5823     {
5824        JulianDate jd = jauUt1tt(2453750.5, 0.892104561, 64.8499);
5825 
5826        vvd(jd.djm0, 2453750.5, 1e-6, "jauUt1tt", "t1");
5827        vvd(jd.djm1, 0.8928551385462962963, 1e-12, "jauUt1tt", "t2");
5828 
5829     }
5830 
5831     @Test
5832     public void t_ut1utc() throws JSOFAIllegalParameter, JSOFAInternalError
5833     /**
5834     **
5835     **  Test jauUt1utc function.
5836     **
5837     **  Returned:
5838     **     status    int         TRUE = success, FALSE = fail
5839     **
5840     **  Called:  jauUt1utc, vvd, viv
5841     **
5842     **  This revision:  2010 September 7
5843     */
5844     {
5845        JulianDate jd = jauUt1utc(2453750.5, 0.892104561, 0.3341);
5846 
5847        vvd(jd.djm0, 2453750.5, 1e-6, "jauUt1utc", "u1");
5848        vvd(jd.djm1, 0.8921006941018518519, 1e-12, "jauUt1utc", "u2");
5849       
5850 
5851     }
5852 
5853     @Test
5854     public void t_utctai() throws JSOFAIllegalParameter, JSOFAInternalError
5855     /**
5856     **
5857     **  Test jauUtctai function.
5858     **
5859     **  Returned:
5860     **     status    int         TRUE = success, FALSE = fail
5861     **
5862     **  Called:  jauUtctai, vvd, viv
5863     **
5864     **  This revision:  2010 September 7
5865     */
5866     {
5867 
5868 
5869        JulianDate jd = jauUtctai(2453750.5, 0.892100694);
5870 
5871        vvd(jd.djm0, 2453750.5, 1e-6, "jauUtctai", "u1");
5872        vvd(jd.djm1, 0.8924826384444444444, 1e-12, "jauUtctai", "u2");
5873 
5874     }
5875 
5876     @Test
5877     public void t_utcut1() throws JSOFAIllegalParameter, JSOFAInternalError
5878     /**
5879     **
5880     **  Test jauUtcut1 function.
5881     **
5882     **  Returned:
5883     **     status    int         TRUE = success, FALSE = fail
5884     **
5885     **  Called:  jauUtcut1, vvd, viv
5886     **
5887     **  This revision:  2010 September 7
5888     */
5889     {
5890        JulianDate jd = jauUtcut1(2453750.5, 0.892100694, 0.3341);
5891 
5892        vvd(jd.djm0, 2453750.5, 1e-6, "jauUtcut1", "u1");
5893        vvd(jd.djm1, 0.8921045608981481481, 1e-12, "jauUtcut1", "u2");
5894 
5895     }
5896 
5897     @Test
5898     public void t_xy06()
5899     /**
5900     **
5901     **  Test jauXy06 function.
5902     **
5903     **  Returned:
5904     **     status    int         TRUE = success, FALSE = fail
5905     **
5906     **  Called:  jauXy06, vvd
5907     **
5908     **  This revision:  2008 November 28
5909     */
5910     {
5911 
5912        CelestialIntermediatePole cip = jauXy06(2400000.5, 53736.0);
5913 
5914        vvd(cip.x, 0.5791308486706010975e-3, 1e-15, "jauXy06", "x");
5915        vvd(cip.y, 0.4020579816732958141e-4, 1e-16, "jauXy06", "y");
5916 
5917     }
5918 
5919     @Test
5920     public void t_xys00a()
5921     /**
5922     **
5923     **  Test jauXys00a function.
5924     **
5925     **  Returned:
5926     **     status    int         TRUE = success, FALSE = fail
5927     **
5928     **  Called:  jauXys00a, vvd
5929     **
5930     **  This revision:  2008 November 28
5931     */
5932     {
5933 
5934        ICRFrame fr = jauXys00a(2400000.5, 53736.0);
5935 
5936        vvd(fr.cip.x,  0.5791308472168152904e-3, 1e-14, "jauXys00a", "x");
5937        vvd(fr.cip.y,  0.4020595661591500259e-4, 1e-15, "jauXys00a", "y");
5938        vvd(fr.s, -0.1220040848471549623e-7, 1e-18, "jauXys00a", "s");
5939 
5940     }
5941 
5942     @Test
5943     public void t_xys00b()
5944     /**
5945     **
5946     **  Test jauXys00b function.
5947     **
5948     **  Returned:
5949     **     status    int         TRUE = success, FALSE = fail
5950     **
5951     **  Called:  jauXys00b, vvd
5952     **
5953     **  This revision:  2008 November 28
5954     */
5955     {
5956 
5957 
5958        ICRFrame fr = jauXys00b(2400000.5, 53736.0);
5959 
5960        vvd(fr.cip.x,  0.5791301929950208873e-3, 1e-14, "jauXys00b", "x");
5961        vvd(fr.cip.y,  0.4020553681373720832e-4, 1e-15, "jauXys00b", "y");
5962        vvd(fr.s, -0.1220027377285083189e-7, 1e-18, "jauXys00b", "s");
5963 
5964     }
5965 
5966     @Test
5967     public void t_xys06a()
5968     /**
5969     **
5970     **  Test jauXys06a function.
5971     **
5972     **  Returned:
5973     **     status    int         TRUE = success, FALSE = fail
5974     **
5975     **  Called:  jauXys06a, vvd
5976     **
5977     **  This revision:  2008 November 28
5978     */
5979     {
5980       
5981        ICRFrame fr = jauXys06a(2400000.5, 53736.0);
5982 
5983        vvd(fr.cip.x,  0.5791308482835292617e-3, 1e-14, "jauXys06a", "x");
5984        vvd(fr.cip.y,  0.4020580099454020310e-4, 1e-15, "jauXys06a", "y");
5985        vvd(fr.s, -0.1220032294164579896e-7, 1e-18, "jauXys06a", "s");
5986 
5987     }
5988 
5989     @Test
5990     public void t_zp()
5991     /**
5992     **
5993     **  Test jauZp function.
5994     **
5995     **  Returned:
5996     **     status    int         TRUE = success, FALSE = fail
5997     **
5998     **  Called:  jauZp, vvd
5999     **
6000     **  This revision:  2008 November 30
6001     */
6002     {
6003        double p[] = new double[3];
6004 
6005 
6006        p[0] =  0.3;
6007        p[1] =  1.2;
6008        p[2] = -2.5;
6009 
6010        jauZp(p);
6011 
6012        vvd(p[0], 0.0, 0.0, "jauZp", "1");
6013        vvd(p[1], 0.0, 0.0, "jauZp", "2");
6014        vvd(p[2], 0.0, 0.0, "jauZp", "3");
6015 
6016     }
6017 
6018     @Test
6019     public void t_zpv()
6020     /**
6021     **
6022     **  Test jauZpv function.
6023     **
6024     **  Returned:
6025     **     status    int         TRUE = success, FALSE = fail
6026     **
6027     **  Called:  jauZpv, vvd
6028     **
6029     **  This revision:  2008 May 25
6030     */
6031     {
6032        double pv[][] = new double[2][3];
6033 
6034 
6035        pv[0][0] =  0.3;
6036        pv[0][1] =  1.2;
6037        pv[0][2] = -2.5;
6038 
6039        pv[1][0] = -0.5;
6040        pv[1][1] =  3.1;
6041        pv[1][2] =  0.9;
6042 
6043        jauZpv(pv);
6044 
6045        vvd(pv[0][0], 0.0, 0.0, "jauZpv", "p1");
6046        vvd(pv[0][1], 0.0, 0.0, "jauZpv", "p2");
6047        vvd(pv[0][2], 0.0, 0.0, "jauZpv", "p3");
6048 
6049        vvd(pv[1][0], 0.0, 0.0, "jauZpv", "v1");
6050        vvd(pv[1][1], 0.0, 0.0, "jauZpv", "v2");
6051        vvd(pv[1][2], 0.0, 0.0, "jauZpv", "v3");
6052 
6053     }
6054 
6055     @Test
6056     public void t_zr()
6057     /**
6058     **
6059     **  Test jauZr function.
6060     **
6061     **  Returned:
6062     **     status    int         TRUE = success, FALSE = fail
6063     **
6064     **  Called:  jauZr, vvd
6065     **
6066     **  This revision:  2008 November 30
6067     */
6068     {
6069        double r[][] = new double[3][3];
6070 
6071 
6072        r[0][0] = 2.0;
6073        r[1][0] = 3.0;
6074        r[2][0] = 2.0;
6075 
6076        r[0][1] = 3.0;
6077        r[1][1] = 2.0;
6078        r[2][1] = 3.0;
6079 
6080        r[0][2] = 3.0;
6081        r[1][2] = 4.0;
6082        r[2][2] = 5.0;
6083 
6084        jauZr(r);
6085 
6086        vvd(r[0][0], 0.0, 0.0, "jauZr", "00");
6087        vvd(r[1][0], 0.0, 0.0, "jauZr", "01");
6088        vvd(r[2][0], 0.0, 0.0, "jauZr", "02");
6089 
6090        vvd(r[0][1], 0.0, 0.0, "jauZr", "10");
6091        vvd(r[1][1], 0.0, 0.0, "jauZr", "11");
6092        vvd(r[2][1], 0.0, 0.0, "jauZr", "12");
6093 
6094        vvd(r[0][2], 0.0, 0.0, "jauZr", "20");
6095        vvd(r[1][2], 0.0, 0.0, "jauZr", "21");
6096        vvd(r[2][2], 0.0, 0.0, "jauZr", "22");
6097 
6098     }
6099 
6100     
6101     // additions for 20131202
6102     
6103     @Test
6104 public void t_apcg()
6105     /**
6106     **
6107     **  Test jauApcg function.
6108     **
6109     **  Returned:
6110     **     status    int         FALSE = success, TRUE = fail
6111     **
6112     **  Called:  jauApcg, vvd
6113     **
6114     **  This revision:  2013 October 3
6115     */
6116     {
6117        double date1, date2, ebpv[][] = new double[2][3], ehp[] = new double[3];
6118        Astrom astrom = new Astrom();
6119 
6120 
6121        date1 = 2456165.5;
6122        date2 = 0.401182685;
6123        ebpv[0][0] =  0.901310875;
6124        ebpv[0][1] = -0.417402664;
6125        ebpv[0][2] = -0.180982288;
6126        ebpv[1][0] =  0.00742727954;
6127        ebpv[1][1] =  0.0140507459;
6128        ebpv[1][2] =  0.00609045792;
6129        ehp[0] =  0.903358544;
6130        ehp[1] = -0.415395237;
6131        ehp[2] = -0.180084014;
6132 
6133        jauApcg(date1, date2, ebpv, ehp, astrom);
6134 
6135        vvd(astrom.pmt, 12.65133794027378508, 1e-11,
6136                        "jauApcg", "pmt");
6137        vvd(astrom.eb[0], 0.901310875, 1e-12,
6138                          "jauApcg", "eb(1)");
6139        vvd(astrom.eb[1], -0.417402664, 1e-12,
6140                          "jauApcg", "eb(2)");
6141        vvd(astrom.eb[2], -0.180982288, 1e-12,
6142                          "jauApcg", "eb(3)");
6143        vvd(astrom.eh[0], 0.8940025429324143045, 1e-12,
6144                          "jauApcg", "eh(1)");
6145        vvd(astrom.eh[1], -0.4110930268679817955, 1e-12,
6146                          "jauApcg", "eh(2)");
6147        vvd(astrom.eh[2], -0.1782189004872870264, 1e-12,
6148                          "jauApcg", "eh(3)");
6149        vvd(astrom.em, 1.010465295811013146, 1e-12,
6150                       "jauApcg", "em");
6151        vvd(astrom.v[0], 0.4289638913597693554e-4, 1e-16,
6152                         "jauApcg", "v(1)");
6153        vvd(astrom.v[1], 0.8115034051581320575e-4, 1e-16,
6154                         "jauApcg", "v(2)");
6155        vvd(astrom.v[2], 0.3517555136380563427e-4, 1e-16,
6156                         "jauApcg", "v(3)");
6157        vvd(astrom.bm1, 0.9999999951686012981, 1e-12,
6158                        "jauApcg", "bm1");
6159        vvd(astrom.bpn[0][0], 1.0, 0.0,
6160                              "jauApcg", "bpn(1,1)");
6161        vvd(astrom.bpn[1][0], 0.0, 0.0,
6162                              "jauApcg", "bpn(2,1)");
6163        vvd(astrom.bpn[2][0], 0.0, 0.0,
6164                              "jauApcg", "bpn(3,1)");
6165        vvd(astrom.bpn[0][1], 0.0, 0.0,
6166                              "jauApcg", "bpn(1,2)");
6167        vvd(astrom.bpn[1][1], 1.0, 0.0,
6168                              "jauApcg", "bpn(2,2)");
6169        vvd(astrom.bpn[2][1], 0.0, 0.0,
6170                              "jauApcg", "bpn(3,2)");
6171        vvd(astrom.bpn[0][2], 0.0, 0.0,
6172                              "jauApcg", "bpn(1,3)");
6173        vvd(astrom.bpn[1][2], 0.0, 0.0,
6174                              "jauApcg", "bpn(2,3)");
6175        vvd(astrom.bpn[2][2], 1.0, 0.0,
6176                              "jauApcg", "bpn(3,3)");
6177 
6178     }
6179 
6180     @Test
6181     public void t_ab()
6182     /**
6183     **
6184     **  Test jauAb function.
6185     **
6186     **  Returned:
6187     **     status    int         FALSE = success, TRUE = fail
6188     **
6189     **  Called:  jauAb, vvd
6190     **
6191     **  This revision:  2013 October 1
6192     */
6193     {
6194        double pnat[] = new double[3], v[] = new double[3], s, bm1, ppr[];
6195 
6196 
6197        pnat[0] = -0.76321968546737951;
6198        pnat[1] = -0.60869453983060384;
6199        pnat[2] = -0.21676408580639883;
6200        v[0] =  2.1044018893653786e-5;
6201        v[1] = -8.9108923304429319e-5;
6202        v[2] = -3.8633714797716569e-5;
6203        s = 0.99980921395708788;
6204        bm1 = 0.99999999506209258;
6205 
6206        ppr = jauAb(pnat, v, s, bm1);
6207 
6208        vvd(ppr[0], -0.7631631094219556269, 1e-12, "jauAb", "1");
6209        vvd(ppr[1], -0.6087553082505590832, 1e-12, "jauAb", "2");
6210        vvd(ppr[2], -0.2167926269368471279, 1e-12, "jauAb", "3");
6211 
6212     }
6213 
6214     @Test
6215     public void t_apcg13()
6216     /**
6217     **
6218     **  Test jauApcg13 function.
6219     **
6220     **  Returned:
6221     **     status    int         FALSE = success, TRUE = fail
6222     **
6223     **  Called:  jauApcg13, vvd
6224     **
6225     **  This revision:  2013 October 3
6226     */
6227     {
6228        double date1, date2;
6229        Astrom astrom = new Astrom();
6230 
6231 
6232        date1 = 2456165.5;
6233        date2 = 0.401182685;
6234 
6235        jauApcg13(date1, date2, astrom);
6236 
6237        vvd(astrom.pmt, 12.65133794027378508, 1e-11,
6238                        "jauApcg13", "pmt");
6239        vvd(astrom.eb[0], 0.9013108747340644755, 1e-12,
6240                        "jauApcg13", "eb(1)");
6241        vvd(astrom.eb[1], -0.4174026640406119957, 1e-12,
6242                        "jauApcg13", "eb(2)");
6243        vvd(astrom.eb[2], -0.1809822877867817771, 1e-12,
6244                        "jauApcg13", "eb(3)");
6245        vvd(astrom.eh[0], 0.8940025429255499549, 1e-12,
6246                        "jauApcg13", "eh(1)");
6247        vvd(astrom.eh[1], -0.4110930268331896318, 1e-12,
6248                        "jauApcg13", "eh(2)");
6249        vvd(astrom.eh[2], -0.1782189006019749850, 1e-12,
6250                        "jauApcg13", "eh(3)");
6251        vvd(astrom.em, 1.010465295964664178, 1e-12,
6252                        "jauApcg13", "em");
6253        vvd(astrom.v[0], 0.4289638912941341125e-4, 1e-16,
6254                        "jauApcg13", "v(1)");
6255        vvd(astrom.v[1], 0.8115034032405042132e-4, 1e-16,
6256                        "jauApcg13", "v(2)");
6257        vvd(astrom.v[2], 0.3517555135536470279e-4, 1e-16,
6258                        "jauApcg13", "v(3)");
6259        vvd(astrom.bm1, 0.9999999951686013142, 1e-12,
6260                        "jauApcg13", "bm1");
6261        vvd(astrom.bpn[0][0], 1.0, 0.0,
6262                              "jauApcg13", "bpn(1,1)");
6263        vvd(astrom.bpn[1][0], 0.0, 0.0,
6264                              "jauApcg13", "bpn(2,1)");
6265        vvd(astrom.bpn[2][0], 0.0, 0.0,
6266                              "jauApcg13", "bpn(3,1)");
6267        vvd(astrom.bpn[0][1], 0.0, 0.0,
6268                              "jauApcg13", "bpn(1,2)");
6269        vvd(astrom.bpn[1][1], 1.0, 0.0,
6270                              "jauApcg13", "bpn(2,2)");
6271        vvd(astrom.bpn[2][1], 0.0, 0.0,
6272                              "jauApcg13", "bpn(3,2)");
6273        vvd(astrom.bpn[0][2], 0.0, 0.0,
6274                              "jauApcg13", "bpn(1,3)");
6275        vvd(astrom.bpn[1][2], 0.0, 0.0,
6276                              "jauApcg13", "bpn(2,3)");
6277        vvd(astrom.bpn[2][2], 1.0, 0.0,
6278                              "jauApcg13", "bpn(3,3)");
6279 
6280     }
6281     @Test
6282     public void t_apci()
6283     /**
6284     **
6285     **  Test jauApci function.
6286     **
6287     **  Returned:
6288     **     status    int         FALSE = success, TRUE = fail
6289     **
6290     **  Called:  jauApci, vvd
6291     **
6292     **  This revision:  2013 October 3
6293     */
6294     {
6295        double date1, date2, ebpv[][] = new double[2][3], ehp[] = new double[3], x, y, s;
6296        Astrom astrom = new Astrom() ;
6297 
6298 
6299        date1 = 2456165.5;
6300        date2 = 0.401182685;
6301        ebpv[0][0] =  0.901310875;
6302        ebpv[0][1] = -0.417402664;
6303        ebpv[0][2] = -0.180982288;
6304        ebpv[1][0] =  0.00742727954;
6305        ebpv[1][1] =  0.0140507459;
6306        ebpv[1][2] =  0.00609045792;
6307        ehp[0] =  0.903358544;
6308        ehp[1] = -0.415395237;
6309        ehp[2] = -0.180084014;
6310        x =  0.0013122272;
6311        y = -2.92808623e-5;
6312        s =  3.05749468e-8;
6313 
6314        jauApci(date1, date2, ebpv, ehp, x, y, s, astrom);
6315 
6316        vvd(astrom.pmt, 12.65133794027378508, 1e-11,
6317                        "jauApci", "pmt");
6318        vvd(astrom.eb[0], 0.901310875, 1e-12,
6319                          "jauApci", "eb(1)");
6320        vvd(astrom.eb[1], -0.417402664, 1e-12,
6321                          "jauApci", "eb(2)");
6322        vvd(astrom.eb[2], -0.180982288, 1e-12,
6323                          "jauApci", "eb(3)");
6324        vvd(astrom.eh[0], 0.8940025429324143045, 1e-12,
6325                          "jauApci", "eh(1)");
6326        vvd(astrom.eh[1], -0.4110930268679817955, 1e-12,
6327                          "jauApci", "eh(2)");
6328        vvd(astrom.eh[2], -0.1782189004872870264, 1e-12,
6329                          "jauApci", "eh(3)");
6330        vvd(astrom.em, 1.010465295811013146, 1e-12,
6331                       "jauApci", "em");
6332        vvd(astrom.v[0], 0.4289638913597693554e-4, 1e-16,
6333                         "jauApci", "v(1)");
6334        vvd(astrom.v[1], 0.8115034051581320575e-4, 1e-16,
6335                         "jauApci", "v(2)");
6336        vvd(astrom.v[2], 0.3517555136380563427e-4, 1e-16,
6337                         "jauApci", "v(3)");
6338        vvd(astrom.bm1, 0.9999999951686012981, 1e-12,
6339                        "jauApci", "bm1");
6340        vvd(astrom.bpn[0][0], 0.9999991390295159156, 1e-12,
6341                              "jauApci", "bpn(1,1)");
6342        vvd(astrom.bpn[1][0], 0.4978650072505016932e-7, 1e-12,
6343                              "jauApci", "bpn(2,1)");
6344        vvd(astrom.bpn[2][0], 0.1312227200000000000e-2, 1e-12,
6345                              "jauApci", "bpn(3,1)");
6346        vvd(astrom.bpn[0][1], -0.1136336653771609630e-7, 1e-12,
6347                              "jauApci", "bpn(1,2)");
6348        vvd(astrom.bpn[1][1], 0.9999999995713154868, 1e-12,
6349                              "jauApci", "bpn(2,2)");
6350        vvd(astrom.bpn[2][1], -0.2928086230000000000e-4, 1e-12,
6351                              "jauApci", "bpn(3,2)");
6352        vvd(astrom.bpn[0][2], -0.1312227200895260194e-2, 1e-12,
6353                              "jauApci", "bpn(1,3)");
6354        vvd(astrom.bpn[1][2], 0.2928082217872315680e-4, 1e-12,
6355                              "jauApci", "bpn(2,3)");
6356        vvd(astrom.bpn[2][2], 0.9999991386008323373, 1e-12,
6357                              "jauApci", "bpn(3,3)");
6358 
6359     }
6360     
6361     @Test
6362     public void t_apci13()
6363     /**
6364     **
6365     **  Test jauApci13 function.
6366     **
6367     **  Returned:
6368     **     status    int         FALSE = success, TRUE = fail
6369     **
6370     **  Called:  jauApci13, vvd
6371     **
6372     **  This revision:  2013 October 3
6373     */
6374     {
6375        double date1, date2, eo;
6376        Astrom astrom = new Astrom() ;
6377 
6378 
6379        date1 = 2456165.5;
6380        date2 = 0.401182685;
6381 
6382        eo = jauApci13(date1, date2, astrom);
6383 
6384        vvd(astrom.pmt, 12.65133794027378508, 1e-11,
6385                        "jauApci13", "pmt");
6386        vvd(astrom.eb[0], 0.9013108747340644755, 1e-12,
6387                          "jauApci13", "eb(1)");
6388        vvd(astrom.eb[1], -0.4174026640406119957, 1e-12,
6389                          "jauApci13", "eb(2)");
6390        vvd(astrom.eb[2], -0.1809822877867817771, 1e-12,
6391                          "jauApci13", "eb(3)");
6392        vvd(astrom.eh[0], 0.8940025429255499549, 1e-12,
6393                          "jauApci13", "eh(1)");
6394        vvd(astrom.eh[1], -0.4110930268331896318, 1e-12,
6395                          "jauApci13", "eh(2)");
6396        vvd(astrom.eh[2], -0.1782189006019749850, 1e-12,
6397                          "jauApci13", "eh(3)");
6398        vvd(astrom.em, 1.010465295964664178, 1e-12,
6399                       "jauApci13", "em");
6400        vvd(astrom.v[0], 0.4289638912941341125e-4, 1e-16,
6401                         "jauApci13", "v(1)");
6402        vvd(astrom.v[1], 0.8115034032405042132e-4, 1e-16,
6403                         "jauApci13", "v(2)");
6404        vvd(astrom.v[2], 0.3517555135536470279e-4, 1e-16,
6405                         "jauApci13", "v(3)");
6406        vvd(astrom.bm1, 0.9999999951686013142, 1e-12,
6407                        "jauApci13", "bm1");
6408        vvd(astrom.bpn[0][0], 0.9999992060376761710, 1e-12,
6409                              "jauApci13", "bpn(1,1)");
6410        vvd(astrom.bpn[1][0], 0.4124244860106037157e-7, 1e-12,
6411                              "jauApci13", "bpn(2,1)");
6412        vvd(astrom.bpn[2][0], 0.1260128571051709670e-2, 1e-12,
6413                              "jauApci13", "bpn(3,1)");
6414        vvd(astrom.bpn[0][1], -0.1282291987222130690e-7, 1e-12,
6415                              "jauApci13", "bpn(1,2)");
6416        vvd(astrom.bpn[1][1], 0.9999999997456835325, 1e-12,
6417                              "jauApci13", "bpn(2,2)");
6418        vvd(astrom.bpn[2][1], -0.2255288829420524935e-4, 1e-12,
6419                              "jauApci13", "bpn(3,2)");
6420        vvd(astrom.bpn[0][2], -0.1260128571661374559e-2, 1e-12,
6421                              "jauApci13", "bpn(1,3)");
6422        vvd(astrom.bpn[1][2], 0.2255285422953395494e-4, 1e-12,
6423                              "jauApci13", "bpn(2,3)");
6424        vvd(astrom.bpn[2][2], 0.9999992057833604343, 1e-12,
6425                              "jauApci13", "bpn(3,3)");
6426        vvd(eo, -0.2900618712657375647e-2, 1e-12,
6427                "jauApci13", "eo");
6428 
6429     } 
6430     
6431     @Test
6432     public void t_apco() throws JSOFAIllegalParameter, JSOFAInternalError
6433     /**
6434     **
6435     **  Test jauApco function.
6436     **
6437     **  Returned:
6438     **     status    int         FALSE = success, TRUE = fail
6439     **
6440     **  Called:  jauApco, vvd
6441     **
6442     **  This revision:  2013 October 3
6443     */
6444     {
6445        double date1, date2, ebpv[][] = new double[2][3], ehp[] = new double[3], x, y, s,
6446               theta, elong, phi, hm, xp, yp, sp, refa, refb;
6447        Astrom astrom = new Astrom() ;
6448 
6449 
6450        date1 = 2456384.5;
6451        date2 = 0.970031644;
6452        ebpv[0][0] = -0.974170438;
6453        ebpv[0][1] = -0.211520082;
6454        ebpv[0][2] = -0.0917583024;
6455        ebpv[1][0] = 0.00364365824;
6456        ebpv[1][1] = -0.0154287319;
6457        ebpv[1][2] = -0.00668922024;
6458        ehp[0] = -0.973458265;
6459        ehp[1] = -0.209215307;
6460        ehp[2] = -0.0906996477;
6461        x = 0.0013122272;
6462        y = -2.92808623e-5;
6463        s = 3.05749468e-8;
6464        theta = 3.14540971;
6465        elong = -0.527800806;
6466        phi = -1.2345856;
6467        hm = 2738.0;
6468        xp = 2.47230737e-7;
6469        yp = 1.82640464e-6;
6470        sp = -3.01974337e-11;
6471        refa = 0.000201418779;
6472        refb = -2.36140831e-7;
6473 
6474        jauApco(date1, date2, ebpv, ehp, x, y, s,
6475                theta, elong, phi, hm, xp, yp, sp,
6476                refa, refb, astrom);
6477 
6478        vvd(astrom.pmt, 13.25248468622587269, 1e-11,
6479                        "jauApco", "pmt");
6480        vvd(astrom.eb[0], -0.9741827110630322720, 1e-12,
6481                          "jauApco", "eb(1)");
6482        vvd(astrom.eb[1], -0.2115130190135344832, 1e-12,
6483                          "jauApco", "eb(2)");
6484        vvd(astrom.eb[2], -0.09179840186949532298, 1e-12,
6485                          "jauApco", "eb(3)");
6486        vvd(astrom.eh[0], -0.9736425571689739035, 1e-12,
6487                          "jauApco", "eh(1)");
6488        vvd(astrom.eh[1], -0.2092452125849330936, 1e-12,
6489                          "jauApco", "eh(2)");
6490        vvd(astrom.eh[2], -0.09075578152243272599, 1e-12,
6491                          "jauApco", "eh(3)");
6492        vvd(astrom.em, 0.9998233241709957653, 1e-12,
6493                       "jauApco", "em");
6494        vvd(astrom.v[0], 0.2078704992916728762e-4, 1e-16,
6495                         "jauApco", "v(1)");
6496        vvd(astrom.v[1], -0.8955360107151952319e-4, 1e-16,
6497                         "jauApco", "v(2)");
6498        vvd(astrom.v[2], -0.3863338994288951082e-4, 1e-16,
6499                         "jauApco", "v(3)");
6500        vvd(astrom.bm1, 0.9999999950277561236, 1e-12,
6501                        "jauApco", "bm1");
6502        vvd(astrom.bpn[0][0], 0.9999991390295159156, 1e-12,
6503                              "jauApco", "bpn(1,1)");
6504        vvd(astrom.bpn[1][0], 0.4978650072505016932e-7, 1e-12,
6505                              "jauApco", "bpn(2,1)");
6506        vvd(astrom.bpn[2][0], 0.1312227200000000000e-2, 1e-12,
6507                              "jauApco", "bpn(3,1)");
6508        vvd(astrom.bpn[0][1], -0.1136336653771609630e-7, 1e-12,
6509                              "jauApco", "bpn(1,2)");
6510        vvd(astrom.bpn[1][1], 0.9999999995713154868, 1e-12,
6511                              "jauApco", "bpn(2,2)");
6512        vvd(astrom.bpn[2][1], -0.2928086230000000000e-4, 1e-12,
6513                              "jauApco", "bpn(3,2)");
6514        vvd(astrom.bpn[0][2], -0.1312227200895260194e-2, 1e-12,
6515                              "jauApco", "bpn(1,3)");
6516        vvd(astrom.bpn[1][2], 0.2928082217872315680e-4, 1e-12,
6517                              "jauApco", "bpn(2,3)");
6518        vvd(astrom.bpn[2][2], 0.9999991386008323373, 1e-12,
6519                              "jauApco", "bpn(3,3)");
6520        vvd(astrom.along, -0.5278008060295995734, 1e-12,
6521                          "jauApco", "along");
6522        vvd(astrom.xpl, 0.1133427418130752958e-5, 1e-17,
6523                        "jauApco", "xpl");
6524        vvd(astrom.ypl, 0.1453347595780646207e-5, 1e-17,
6525                        "jauApco", "ypl");
6526        vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
6527                         "jauApco", "sphi");
6528        vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
6529                         "jauApco", "cphi");
6530        vvd(astrom.diurab, 0, 0,
6531                           "jauApco", "diurab");
6532        vvd(astrom.eral, 2.617608903970400427, 1e-12,
6533                         "jauApco", "eral");
6534        vvd(astrom.refa, 0.2014187790000000000e-3, 1e-15,
6535                         "jauApco", "refa");
6536        vvd(astrom.refb, -0.2361408310000000000e-6, 1e-18,
6537                         "jauApco", "refb");
6538 
6539     }
6540     
6541 
6542 
6543 @Test
6544     public void t_apco13() throws JSOFAIllegalParameter, JSOFAInternalError
6545 /**
6546 **  Test jauApco13 function.
6547 **
6548 **  Returned:
6549 **     status    int         FALSE = success, TRUE = fail
6550 **
6551 **  Called:  jauApco13, vvd, viv
6552 **
6553 **  This revision:  2013 October 4
6554 */
6555 {
6556    double utc1, utc2, dut1, elong, phi, hm, xp, yp,
6557           phpa, tc, rh, wl, eo;
6558    Astrom astrom = new Astrom() ;
6559 
6560 
6561    utc1 = 2456384.5;
6562    utc2 = 0.969254051;
6563    dut1 = 0.1550675;
6564    elong = -0.527800806;
6565    phi = -1.2345856;
6566    hm = 2738.0;
6567    xp = 2.47230737e-7;
6568    yp = 1.82640464e-6;
6569    phpa = 731.0;
6570    tc = 12.8;
6571    rh = 0.59;
6572    wl = 0.55;
6573 
6574    eo = jauApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
6575                  phpa, tc, rh, wl, astrom);
6576 
6577    vvd(astrom.pmt, 13.25248468622475727, 1e-11,
6578                    "jauApco13", "pmt");
6579    vvd(astrom.eb[0], -0.9741827107320875162, 1e-12,
6580                    "jauApco13", "eb(1)");
6581    vvd(astrom.eb[1], -0.2115130190489716682, 1e-12,
6582                      "jauApco13", "eb(2)");
6583    vvd(astrom.eb[2], -0.09179840189496755339, 1e-12,
6584                      "jauApco13", "eb(3)");
6585    vvd(astrom.eh[0], -0.9736425572586935247, 1e-12,
6586                      "jauApco13", "eh(1)");
6587    vvd(astrom.eh[1], -0.2092452121603336166, 1e-12,
6588                      "jauApco13", "eh(2)");
6589    vvd(astrom.eh[2], -0.09075578153885665295, 1e-12,
6590                      "jauApco13", "eh(3)");
6591    vvd(astrom.em, 0.9998233240913898141, 1e-12,
6592                   "jauApco13", "em");
6593    vvd(astrom.v[0], 0.2078704994520489246e-4, 1e-16,
6594                     "jauApco13", "v(1)");
6595    vvd(astrom.v[1], -0.8955360133238868938e-4, 1e-16,
6596                     "jauApco13", "v(2)");
6597    vvd(astrom.v[2], -0.3863338993055887398e-4, 1e-16,
6598                     "jauApco13", "v(3)");
6599    vvd(astrom.bm1, 0.9999999950277561004, 1e-12,
6600                    "jauApco13", "bm1");
6601    vvd(astrom.bpn[0][0], 0.9999991390295147999, 1e-12,
6602                          "jauApco13", "bpn(1,1)");
6603    vvd(astrom.bpn[1][0], 0.4978650075315529277e-7, 1e-12,
6604                          "jauApco13", "bpn(2,1)");
6605    vvd(astrom.bpn[2][0], 0.001312227200850293372, 1e-12,
6606                          "jauApco13", "bpn(3,1)");
6607    vvd(astrom.bpn[0][1], -0.1136336652812486604e-7, 1e-12,
6608                          "jauApco13", "bpn(1,2)");
6609    vvd(astrom.bpn[1][1], 0.9999999995713154865, 1e-12,
6610                          "jauApco13", "bpn(2,2)");
6611    vvd(astrom.bpn[2][1], -0.2928086230975367296e-4, 1e-12,
6612                          "jauApco13", "bpn(3,2)");
6613    vvd(astrom.bpn[0][2], -0.001312227201745553566, 1e-12,
6614                          "jauApco13", "bpn(1,3)");
6615    vvd(astrom.bpn[1][2], 0.2928082218847679162e-4, 1e-12,
6616                          "jauApco13", "bpn(2,3)");
6617    vvd(astrom.bpn[2][2], 0.9999991386008312212, 1e-12,
6618                          "jauApco13", "bpn(3,3)");
6619    vvd(astrom.along, -0.5278008060295995733, 1e-12,
6620                      "jauApco13", "along");
6621    vvd(astrom.xpl, 0.1133427418130752958e-5, 1e-17,
6622                    "jauApco13", "xpl");
6623    vvd(astrom.ypl, 0.1453347595780646207e-5, 1e-17,
6624                    "jauApco13", "ypl");
6625    vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
6626                     "jauApco13", "sphi");
6627    vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
6628                     "jauApco13", "cphi");
6629    vvd(astrom.diurab, 0, 0,
6630                       "jauApco13", "diurab");
6631    vvd(astrom.eral, 2.617608909189664000, 1e-12,
6632                     "jauApco13", "eral");
6633    vvd(astrom.refa, 0.2014187785940396921e-3, 1e-15,
6634                     "jauApco13", "refa");
6635    vvd(astrom.refb, -0.2361408314943696227e-6, 1e-18,
6636                     "jauApco13", "refb");
6637    vvd(eo, -0.003020548354802412839, 1e-14,
6638            "jauApco13", "eo");
6639 
6640 }
6641 
6642 @Test
6643     public void t_apcs()
6644 /**
6645 **  Test jauApcs function.
6646 **
6647 **  Returned:
6648 **     status    int         FALSE = success, TRUE = fail
6649 **
6650 **  Called:  jauApcs, vvd
6651 **
6652 **  This revision:  2013 October 3
6653 */
6654 {
6655    double date1, date2, pv[][] = new double[2][3], ebpv[][] = new double[2][3], ehp[] = new double[3];
6656    Astrom astrom = new Astrom() ;
6657 
6658 
6659    date1 = 2456384.5;
6660    date2 = 0.970031644;
6661    pv[0][0] = -1836024.09;
6662    pv[0][1] = 1056607.72;
6663    pv[0][2] = -5998795.26;
6664    pv[1][0] = -77.0361767;
6665    pv[1][1] = -133.310856;
6666    pv[1][2] = 0.0971855934;
6667    ebpv[0][0] = -0.974170438;
6668    ebpv[0][1] = -0.211520082;
6669    ebpv[0][2] = -0.0917583024;
6670    ebpv[1][0] = 0.00364365824;
6671    ebpv[1][1] = -0.0154287319;
6672    ebpv[1][2] = -0.00668922024;
6673    ehp[0] = -0.973458265;
6674    ehp[1] = -0.209215307;
6675    ehp[2] = -0.0906996477;
6676 
6677    jauApcs(date1, date2, pv, ebpv, ehp, astrom);
6678 
6679    vvd(astrom.pmt, 13.25248468622587269, 1e-11,
6680                    "jauApcs", "pmt");
6681    vvd(astrom.eb[0], -0.9741827110629881886, 1e-12,
6682                      "jauApcs", "eb(1)");
6683    vvd(astrom.eb[1], -0.2115130190136415986, 1e-12,
6684                      "jauApcs", "eb(2)");
6685    vvd(astrom.eb[2], -0.09179840186954412099, 1e-12,
6686                      "jauApcs", "eb(3)");
6687    vvd(astrom.eh[0], -0.9736425571689454706, 1e-12,
6688                      "jauApcs", "eh(1)");
6689    vvd(astrom.eh[1], -0.2092452125850435930, 1e-12,
6690                      "jauApcs", "eh(2)");
6691    vvd(astrom.eh[2], -0.09075578152248299218, 1e-12,
6692                      "jauApcs", "eh(3)");
6693    vvd(astrom.em, 0.9998233241709796859, 1e-12,
6694                   "jauApcs", "em");
6695    vvd(astrom.v[0], 0.2078704993282685510e-4, 1e-16,
6696                     "jauApcs", "v(1)");
6697    vvd(astrom.v[1], -0.8955360106989405683e-4, 1e-16,
6698                     "jauApcs", "v(2)");
6699    vvd(astrom.v[2], -0.3863338994289409097e-4, 1e-16,
6700                     "jauApcs", "v(3)");
6701    vvd(astrom.bm1, 0.9999999950277561237, 1e-12,
6702                    "jauApcs", "bm1");
6703    vvd(astrom.bpn[0][0], 1, 0,
6704                          "jauApcs", "bpn(1,1)");
6705    vvd(astrom.bpn[1][0], 0, 0,
6706                          "jauApcs", "bpn(2,1)");
6707    vvd(astrom.bpn[2][0], 0, 0,
6708                          "jauApcs", "bpn(3,1)");
6709    vvd(astrom.bpn[0][1], 0, 0,
6710                          "jauApcs", "bpn(1,2)");
6711    vvd(astrom.bpn[1][1], 1, 0,
6712                          "jauApcs", "bpn(2,2)");
6713    vvd(astrom.bpn[2][1], 0, 0,
6714                          "jauApcs", "bpn(3,2)");
6715    vvd(astrom.bpn[0][2], 0, 0,
6716                          "jauApcs", "bpn(1,3)");
6717    vvd(astrom.bpn[1][2], 0, 0,
6718                          "jauApcs", "bpn(2,3)");
6719    vvd(astrom.bpn[2][2], 1, 0,
6720                          "jauApcs", "bpn(3,3)");
6721 
6722 }
6723 
6724 @Test
6725     public void t_apcs13()
6726 /**
6727 **  Test jauApcs13 function.
6728 **
6729 **  Returned:
6730 **     status    int         FALSE = success, TRUE = fail
6731 **
6732 **  Called:  jauApcs13, vvd
6733 **
6734 **  This revision:  2013 October 3
6735 */
6736 {
6737    double date1, date2, pv[][] = new double[2][3];
6738    Astrom astrom = new Astrom() ;
6739 
6740 
6741    date1 = 2456165.5;
6742    date2 = 0.401182685;
6743    pv[0][0] = -6241497.16;
6744    pv[0][1] = 401346.896;
6745    pv[0][2] = -1251136.04;
6746    pv[1][0] = -29.264597;
6747    pv[1][1] = -455.021831;
6748    pv[1][2] = 0.0266151194;
6749 
6750    jauApcs13(date1, date2, pv, astrom);
6751 
6752    vvd(astrom.pmt, 12.65133794027378508, 1e-11,
6753                    "jauApcs13", "pmt");
6754    vvd(astrom.eb[0], 0.9012691529025250644, 1e-12,
6755                      "jauApcs13", "eb(1)");
6756    vvd(astrom.eb[1], -0.4173999812023194317, 1e-12,
6757                      "jauApcs13", "eb(2)");
6758    vvd(astrom.eb[2], -0.1809906511146429670, 1e-12,
6759                      "jauApcs13", "eb(3)");
6760    vvd(astrom.eh[0], 0.8939939101760130792, 1e-12,
6761                      "jauApcs13", "eh(1)");
6762    vvd(astrom.eh[1], -0.4111053891734021478, 1e-12,
6763                      "jauApcs13", "eh(2)");
6764    vvd(astrom.eh[2], -0.1782336880636997374, 1e-12,
6765                      "jauApcs13", "eh(3)");
6766    vvd(astrom.em, 1.010428384373491095, 1e-12,
6767                   "jauApcs13", "em");
6768    vvd(astrom.v[0], 0.4279877294121697570e-4, 1e-16,
6769                     "jauApcs13", "v(1)");
6770    vvd(astrom.v[1], 0.7963255087052120678e-4, 1e-16,
6771                     "jauApcs13", "v(2)");
6772    vvd(astrom.v[2], 0.3517564013384691531e-4, 1e-16,
6773                     "jauApcs13", "v(3)");
6774    vvd(astrom.bm1, 0.9999999952947980978, 1e-12,
6775                    "jauApcs13", "bm1");
6776    vvd(astrom.bpn[0][0], 1, 0,
6777                          "jauApcs13", "bpn(1,1)");
6778    vvd(astrom.bpn[1][0], 0, 0,
6779                          "jauApcs13", "bpn(2,1)");
6780    vvd(astrom.bpn[2][0], 0, 0,
6781                          "jauApcs13", "bpn(3,1)");
6782    vvd(astrom.bpn[0][1], 0, 0,
6783                          "jauApcs13", "bpn(1,2)");
6784    vvd(astrom.bpn[1][1], 1, 0,
6785                          "jauApcs13", "bpn(2,2)");
6786    vvd(astrom.bpn[2][1], 0, 0,
6787                          "jauApcs13", "bpn(3,2)");
6788    vvd(astrom.bpn[0][2], 0, 0,
6789                          "jauApcs13", "bpn(1,3)");
6790    vvd(astrom.bpn[1][2], 0, 0,
6791                          "jauApcs13", "bpn(2,3)");
6792    vvd(astrom.bpn[2][2], 1, 0,
6793                          "jauApcs13", "bpn(3,3)");
6794 
6795 }
6796 @Test
6797     public void t_aper()
6798 /*
6799 **  Test jauAper function.
6800 *
6801 **  Returned:
6802 **     status    int         FALSE = success, TRUE = fail
6803 *
6804 **  Called:  jauAper, vvd
6805 *
6806 **  This revision:  2013 October 3
6807 */
6808 {
6809    double theta;
6810    Astrom astrom = new Astrom() ;
6811 
6812 
6813    astrom.along = 1.234;
6814    theta = 5.678;
6815 
6816    jauAper(theta, astrom);
6817 
6818    vvd(astrom.eral, 6.912000000000000000, 1e-12,
6819                     "jauAper", "pmt");
6820 
6821 }
6822 @Test
6823     public void t_aper13()
6824 /**
6825 **  Test jauAper13 function.
6826 **
6827 **  Returned:
6828 **     status    int         FALSE = success, TRUE = fail
6829 **
6830 **  Called:  jauAper13, vvd
6831 **
6832 **  This revision:  2013 October 3
6833 */
6834 {
6835    double ut11, ut12;
6836    Astrom astrom = new Astrom() ;
6837 
6838 
6839    astrom.along = 1.234;
6840    ut11 = 2456165.5;
6841    ut12 = 0.401182685;
6842 
6843    jauAper13(ut11, ut12, astrom);
6844 
6845    vvd(astrom.eral, 3.316236661789694933, 1e-12,
6846                     "jauAper13", "pmt");
6847 
6848 }
6849 @Test
6850     public void t_apio() throws JSOFAIllegalParameter, JSOFAInternalError
6851 /**
6852 **  Test jauApio function.
6853 **
6854 **  Returned:
6855 **     status    int         FALSE = success, TRUE = fail
6856 **
6857 **  Called:  jauApio, vvd
6858 **
6859 **  This revision:  2013 October 3
6860 */
6861 {
6862    double sp, theta, elong, phi, hm, xp, yp, refa, refb;
6863    Astrom astrom = new Astrom() ;
6864 
6865 
6866    sp = -3.01974337e-11;
6867    theta = 3.14540971;
6868    elong = -0.527800806;
6869    phi = -1.2345856;
6870    hm = 2738.0;
6871    xp = 2.47230737e-7;
6872    yp = 1.82640464e-6;
6873    refa = 0.000201418779;
6874    refb = -2.36140831e-7;
6875 
6876    jauApio(sp, theta, elong, phi, hm, xp, yp, refa, refb, astrom);
6877 
6878    vvd(astrom.along, -0.5278008060295995734, 1e-12,
6879                      "jauApio", "along");
6880    vvd(astrom.xpl, 0.1133427418130752958e-5, 1e-17,
6881                    "jauApio", "xpl");
6882    vvd(astrom.ypl, 0.1453347595780646207e-5, 1e-17,
6883                    "jauApio", "ypl");
6884    vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
6885                     "jauApio", "sphi");
6886    vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
6887                     "jauApio", "cphi");
6888    vvd(astrom.diurab, 0.5135843661699913529e-6, 1e-12,
6889                       "jauApio", "diurab");
6890    vvd(astrom.eral, 2.617608903970400427, 1e-12,
6891                     "jauApio", "eral");
6892    vvd(astrom.refa, 0.2014187790000000000e-3, 1e-15,
6893                     "jauApio", "refa");
6894    vvd(astrom.refb, -0.2361408310000000000e-6, 1e-18,
6895                     "jauApio", "refb");
6896 
6897 }
6898 
6899 @Test
6900     public void t_apio13() throws JSOFAIllegalParameter, JSOFAInternalError
6901 /**
6902 **  Test jauApio13 function.
6903 **
6904 **  Returned:
6905 **     status    int         FALSE = success, TRUE = fail
6906 **
6907 **  Called:  jauApio13, vvd, viv
6908 **
6909 **  This revision:  2013 October 4
6910 */
6911 {
6912    double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl;
6913 
6914    Astrom astrom = new Astrom() ;
6915 
6916 
6917    utc1 = 2456384.5;
6918    utc2 = 0.969254051;
6919    dut1 = 0.1550675;
6920    elong = -0.527800806;
6921    phi = -1.2345856;
6922    hm = 2738.0;
6923    xp = 2.47230737e-7;
6924    yp = 1.82640464e-6;
6925    phpa = 731.0;
6926    tc = 12.8;
6927    rh = 0.59;
6928    wl = 0.55;
6929 
6930    jauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
6931                  phpa, tc, rh, wl, astrom);
6932 
6933    vvd(astrom.along,  -0.5278008060295995733, 1e-12,
6934                      "jauApio13", "along");
6935    vvd(astrom.xpl, 0.1133427418130752958e-5, 1e-17,
6936                    "jauApio13", "xpl");
6937    vvd(astrom.ypl, 0.1453347595780646207e-5, 1e-17,
6938                    "jauApio13", "ypl");
6939    vvd(astrom.sphi, -0.9440115679003211329, 1e-12,
6940                     "jauApio13", "sphi");
6941    vvd(astrom.cphi, 0.3299123514971474711, 1e-12,
6942                     "jauApio13", "cphi");
6943    vvd(astrom.diurab, 0.5135843661699913529e-6, 1e-12,
6944                       "jauApio13", "diurab");
6945    vvd(astrom.eral, 2.617608909189664000, 1e-12,
6946                     "jauApio13", "eral");
6947    vvd(astrom.refa, 0.2014187785940396921e-3, 1e-15,
6948                     "jauApio13", "refa");
6949    vvd(astrom.refb, -0.2361408314943696227e-6, 1e-18,
6950                     "jauApio13", "refb");
6951 
6952 }
6953 
6954 @Test
6955     public void t_atci13()
6956 /**
6957 **  Test jauAtci13 function.
6958 **
6959 **  Returned:
6960 **     status    int         FALSE = success, TRUE = fail
6961 **
6962 **  Called:  jauAtci13, vvd
6963 **
6964 **  This revision:  2013 October 3
6965 */
6966 {
6967    double rc, dc, pr, pd, px, rv, date1, date2;
6968 
6969 
6970    rc = 2.71;
6971    dc = 0.174;
6972    pr = 1e-5;
6973    pd = 5e-6;
6974    px = 0.1;
6975    rv = 55.0;
6976    date1 = 2456165.5;
6977    date2 = 0.401182685;
6978 
6979    SphericalCoordinateEO coe = jauAtci13(rc, dc, pr, pd, px, rv, date1, date2);
6980 
6981    vvd(coe.pos.alpha, 2.710121572968696744, 1e-12,
6982            "jauAtci13", "ri");
6983    vvd(coe.pos.delta, 0.1729371367219539137, 1e-12,
6984            "jauAtci13", "di");
6985    vvd(coe.eo, -0.002900618712657375647, 1e-14,
6986            "jauAtci13", "eo");
6987 
6988 }
6989 
6990 @Test
6991     public void t_atciq()
6992 /**
6993 **  Test jauAtciq function.
6994 **
6995 **  Returned:
6996 **     status    int         FALSE = success, TRUE = fail
6997 **
6998 **  Called:  jauApci13, jauAtciq, vvd
6999 **
7000 **  This revision:  2013 October 3
7001 */
7002 {
7003    double date1, date2, rc, dc, pr, pd, px, rv;
7004    Astrom astrom = new Astrom() ;
7005 
7006    date1 = 2456165.5;
7007    date2 = 0.401182685;
7008    jauApci13(date1, date2, astrom);
7009    rc = 2.71;
7010    dc = 0.174;
7011    pr = 1e-5;
7012    pd = 5e-6;
7013    px = 0.1;
7014    rv = 55.0;
7015 
7016    SphericalCoordinate co = jauAtciq(rc, dc, pr, pd, px, rv, astrom);
7017 
7018    vvd(co.alpha, 2.710121572968696744, 1e-12, "jauAtciq", "ri");
7019    vvd(co.delta, 0.1729371367219539137, 1e-12, "jauAtciq", "di");
7020 
7021 }
7022 
7023 
7024 
7025 @Test
7026     public void t_atciqn()
7027 /**
7028 **  Test jauAtciqn function.
7029 **
7030 **  Returned:
7031 **     status    int         FALSE = success, TRUE = fail
7032 **
7033 **  Called:  jauApci13, jauAtciqn, vvd
7034 **
7035 **  This revision:  2013 October 3
7036 */
7037 {
7038    Ldbody b[] = {new Ldbody(),new Ldbody(),new Ldbody()};
7039    double date1, date2, rc, dc, pr, pd, px, rv;
7040    Astrom astrom = new Astrom() ;
7041 
7042    date1 = 2456165.5;
7043    date2 = 0.401182685;
7044    jauApci13(date1, date2, astrom);
7045    rc = 2.71;
7046    dc = 0.174;
7047    pr = 1e-5;
7048    pd = 5e-6;
7049    px = 0.1;
7050    rv = 55.0;
7051    b[0].bm = 0.00028574;
7052    b[0].dl = 3e-10;
7053    b[0].pv[0][0] = -7.81014427;
7054    b[0].pv[0][1] = -5.60956681;
7055    b[0].pv[0][2] = -1.98079819;
7056    b[0].pv[1][0] =  0.0030723249;
7057    b[0].pv[1][1] = -0.00406995477;
7058    b[0].pv[1][2] = -0.00181335842;
7059    b[1].bm = 0.00095435;
7060    b[1].dl = 3e-9;
7061    b[1].pv[0][0] =  0.738098796;
7062    b[1].pv[0][1] =  4.63658692;
7063    b[1].pv[0][2] =  1.9693136;
7064    b[1].pv[1][0] = -0.00755816922;
7065    b[1].pv[1][1] =  0.00126913722;
7066    b[1].pv[1][2] =  0.000727999001;
7067    b[2].bm = 1.0;
7068    b[2].dl = 6e-6;
7069    b[2].pv[0][0] = -0.000712174377;
7070    b[2].pv[0][1] = -0.00230478303;
7071    b[2].pv[0][2] = -0.00105865966;
7072    b[2].pv[1][0] =  6.29235213e-6;
7073    b[2].pv[1][1] = -3.30888387e-7;
7074    b[2].pv[1][2] = -2.96486623e-7;
7075 
7076    SphericalCoordinate co = jauAtciqn( rc, dc, pr, pd, px, rv, astrom, 3, b);
7077 
7078    vvd(co.alpha, 2.710122008104983335, 1e-12, "jauAtciqn", "ri");
7079    vvd(co.delta, 0.1729371916492767821, 1e-12, "jauAtciqn", "di");
7080 
7081 }
7082 @Test
7083     public void t_atciqz()
7084 /**
7085 **  Test jauAtciqz function.
7086 **
7087 **  Returned:
7088 **     status    int         FALSE = success, TRUE = fail
7089 **
7090 **  Called:  jauApci13, jauAtciqz, vvd
7091 **
7092 **  This revision:  2013 October 3
7093 */
7094 {
7095    double date1, date2, rc, dc;
7096    Astrom astrom = new Astrom() ;
7097 
7098 
7099    date1 = 2456165.5;
7100    date2 = 0.401182685;
7101    jauApci13(date1, date2, astrom);
7102    rc = 2.71;
7103    dc = 0.174;
7104 
7105    SphericalCoordinate co = jauAtciqz(rc, dc, astrom);
7106 
7107    vvd(co.alpha, 2.709994899247256984, 1e-12, "jauAtciqz", "ri");
7108    vvd(co.delta, 0.1728740720984931891, 1e-12, "jauAtciqz", "di");
7109 
7110 }
7111 
7112 @Test
7113     public void t_atco13() throws JSOFAIllegalParameter, JSOFAInternalError
7114 /**
7115 **  Test jauAtco13 function.
7116 **
7117 **  Returned:
7118 **     status    int         FALSE = success, TRUE = fail
7119 **
7120 **  Called:  jauAtco13, vvd, viv
7121 **
7122 **  This revision:  2013 October 4
7123 */
7124 {
7125    double rc, dc, pr, pd, px, rv, utc1, utc2, dut1,
7126           elong, phi, hm, xp, yp, phpa, tc, rh, wl
7127         ;
7128 
7129 
7130    rc = 2.71;
7131    dc = 0.174;
7132    pr = 1e-5;
7133    pd = 5e-6;
7134    px = 0.1;
7135    rv = 55.0;
7136    utc1 = 2456384.5;
7137    utc2 = 0.969254051;
7138    dut1 = 0.1550675;
7139    elong = -0.527800806;
7140    phi = -1.2345856;
7141    hm = 2738.0;
7142    xp = 2.47230737e-7;
7143    yp = 1.82640464e-6;
7144    phpa = 731.0;
7145    tc = 12.8;
7146    rh = 0.59;
7147    wl = 0.55;
7148 
7149    ObservedPositionEO ope = jauAtco13(rc, dc, pr, pd, px, rv,
7150                  utc1, utc2, dut1, elong, phi, hm, xp, yp,
7151                  phpa, tc, rh, wl);
7152 
7153    vvd(ope.op.aob, 0.9251774485485515207e-1, 1e-12, "jauAtco13", "aob");
7154    vvd(ope.op.zob, 1.407661405256499357, 1e-12, "jauAtco13", "zob");
7155    vvd(ope.op.hob, -0.9265154431529724692e-1, 1e-12, "jauAtco13", "hob");
7156    vvd(ope.op.dob, 0.1716626560072526200, 1e-12, "jauAtco13", "dob");
7157    vvd(ope.op.rob, 2.710260453504961012, 1e-12, "jauAtco13", "rob");
7158    vvd(ope.eo, -0.003020548354802412839, 1e-14, "jauAtco13", "eo");
7159 
7160 }
7161 
7162 @Test
7163     public void t_atic13()
7164 /**
7165 **  Test jauAtic13 function.
7166 **
7167 **  Returned:
7168 **     status    int         FALSE = success, TRUE = fail
7169 **
7170 **  Called:  jauAtic13, vvd
7171 **
7172 **  This revision:  2013 October 3
7173 */
7174 {
7175    double ri, di, date1, date2;
7176 
7177 
7178    ri = 2.710121572969038991;
7179    di = 0.1729371367218230438;
7180    date1 = 2456165.5;
7181    date2 = 0.401182685;
7182 
7183    SphericalCoordinateEO oe = jauAtic13(ri, di, date1, date2);
7184 
7185    vvd(oe.pos.alpha, 2.710126504531716819, 1e-12, "jauAtic13", "rc");
7186    vvd(oe.pos.delta, 0.1740632537627034482, 1e-12, "jauAtic13", "dc");
7187    vvd(oe.eo, -0.002900618712657375647, 1e-14, "jauAtic13", "eo");
7188 
7189 }
7190 
7191 @Test
7192     public void t_aticq()
7193 /**
7194 **  Test jauAticq function.
7195 **
7196 **  Returned:
7197 **     status    int         FALSE = success, TRUE = fail
7198 **
7199 **  Called:  jauApci13, jauAticq, vvd
7200 **
7201 **  This revision:  2013 October 3
7202 */
7203 {
7204    double date1, date2, ri, di;
7205    Astrom astrom = new Astrom() ;
7206 
7207 
7208    date1 = 2456165.5;
7209    date2 = 0.401182685;
7210    jauApci13(date1, date2, astrom);
7211    ri = 2.710121572969038991;
7212    di = 0.1729371367218230438;
7213 
7214    SphericalCoordinate co = jauAticq(ri, di, astrom);
7215 
7216    vvd(co.alpha, 2.710126504531716819, 1e-12, "jauAticq", "rc");
7217    vvd(co.delta, 0.1740632537627034482, 1e-12, "jauAticq", "dc");
7218 
7219 }
7220 
7221 @Test
7222     public void t_aticqn()
7223 /**
7224 **  Test jauAticqn function.
7225 **
7226 **  Returned:
7227 **     status    int         FALSE = success, TRUE = fail
7228 **
7229 **  Called:  jauApci13, jauAticqn, vvd
7230 **
7231 **  This revision:  2013 October 3
7232 */
7233 {
7234    double date1, date2, ri, di;
7235    Ldbody b[] = {new Ldbody(),new Ldbody(),new Ldbody()};
7236    Astrom astrom = new Astrom() ;
7237 
7238 
7239    date1 = 2456165.5;
7240    date2 = 0.401182685;
7241    jauApci13(date1, date2, astrom);
7242    ri = 2.709994899247599271;
7243    di = 0.1728740720983623469;
7244    b[0].bm = 0.00028574;
7245    b[0].dl = 3e-10;
7246    b[0].pv[0][0] = -7.81014427;
7247    b[0].pv[0][1] = -5.60956681;
7248    b[0].pv[0][2] = -1.98079819;
7249    b[0].pv[1][0] =  0.0030723249;
7250    b[0].pv[1][1] = -0.00406995477;
7251    b[0].pv[1][2] = -0.00181335842;
7252    b[1].bm = 0.00095435;
7253    b[1].dl = 3e-9;
7254    b[1].pv[0][0] =  0.738098796;
7255    b[1].pv[0][1] =  4.63658692;
7256    b[1].pv[0][2] =  1.9693136;
7257    b[1].pv[1][0] = -0.00755816922;
7258    b[1].pv[1][1] =  0.00126913722;
7259    b[1].pv[1][2] =  0.000727999001;
7260    b[2].bm = 1.0;
7261    b[2].dl = 6e-6;
7262    b[2].pv[0][0] = -0.000712174377;
7263    b[2].pv[0][1] = -0.00230478303;
7264    b[2].pv[0][2] = -0.00105865966;
7265    b[2].pv[1][0] =  6.29235213e-6;
7266    b[2].pv[1][1] = -3.30888387e-7;
7267    b[2].pv[1][2] = -2.96486623e-7;
7268 
7269    SphericalCoordinate co = jauAticqn(ri, di, astrom, 3, b);
7270 
7271    vvd(co.alpha, 2.709999575033027333, 1e-12, "jauAtciqn", "rc");
7272    vvd(co.delta, 0.1739999656316469990, 1e-12, "jauAtciqn", "dc");
7273 
7274 }
7275 
7276 @Test
7277     public void t_atio13() throws JSOFAIllegalParameter, JSOFAInternalError
7278 /**
7279 **  Test jauAtio13 function.
7280 **
7281 **  Returned:
7282 **     status    int         FALSE = success, TRUE = fail
7283 **
7284 **  Called:  jauAtio13, vvd, viv
7285 **
7286 **  This revision:  2013 October 3
7287 */
7288 {
7289    double ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp,
7290           phpa, tc, rh, wl;
7291 
7292 
7293 
7294    ri = 2.710121572969038991;
7295    di = 0.1729371367218230438;
7296    utc1 = 2456384.5;
7297    utc2 = 0.969254051;
7298    dut1 = 0.1550675;
7299    elong = -0.527800806;
7300    phi = -1.2345856;
7301    hm = 2738.0;
7302    xp = 2.47230737e-7;
7303    yp = 1.82640464e-6;
7304    phpa = 731.0;
7305    tc = 12.8;
7306    rh = 0.59;
7307    wl = 0.55;
7308 
7309    ObservedPosition o = jauAtio13(ri, di, utc1, utc2, dut1, elong, phi, hm,
7310                  xp, yp, phpa, tc, rh, wl
7311                  );
7312 
7313    vvd(o.aob, 0.9233952224895122499e-1, 1e-12, "jauAtio13", "aob");
7314    vvd(o.zob, 1.407758704513549991, 1e-12, "jauAtio13", "zob");
7315    vvd(o.hob, -0.9247619879881698140e-1, 1e-12, "jauAtio13", "hob");
7316    vvd(o.dob, 0.1717653435756234676, 1e-12, "jauAtio13", "dob");
7317    vvd(o.rob, 2.710085107988480746, 1e-12, "jauAtio13", "rob");
7318 
7319 }
7320 
7321 @Test
7322     public void t_atioq() throws JSOFAIllegalParameter, JSOFAInternalError
7323 /**
7324 **  Test jauAtioq function.
7325 **
7326 **  Returned:
7327 **     status    int         FALSE = success, TRUE = fail
7328 **
7329 **  Called:  jauApio13, jauAtioq, vvd, viv
7330 **
7331 **  This revision:  2013 October 4
7332 */
7333 {
7334    double utc1, utc2, dut1, elong, phi, hm, xp, yp,
7335           phpa, tc, rh, wl, ri, di;
7336    Astrom astrom = new Astrom() ;
7337 
7338 
7339    utc1 = 2456384.5;
7340    utc2 = 0.969254051;
7341    dut1 = 0.1550675;
7342    elong = -0.527800806;
7343    phi = -1.2345856;
7344    hm = 2738.0;
7345    xp = 2.47230737e-7;
7346    yp = 1.82640464e-6;
7347    phpa = 731.0;
7348    tc = 12.8;
7349    rh = 0.59;
7350    wl = 0.55;
7351    jauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
7352                     phpa, tc, rh, wl, astrom);
7353    ri = 2.710121572969038991;
7354    di = 0.1729371367218230438;
7355 
7356    ObservedPosition o = jauAtioq(ri, di, astrom);
7357 
7358    vvd(o.aob, 0.9233952224895122499e-1, 1e-12, "jauAtioq", "aob");
7359    vvd(o.zob, 1.407758704513549991, 1e-12, "jauAtioq", "zob");
7360    vvd(o.hob, -0.9247619879881698140e-1, 1e-12, "jauAtioq", "hob");
7361    vvd(o.dob, 0.1717653435756234676, 1e-12, "jauAtioq", "dob");
7362    vvd(o.rob, 2.710085107988480746, 1e-12, "jauAtioq", "rob");
7363 
7364 }
7365 
7366 @Test
7367     public void t_atoc13() throws JSOFAIllegalParameter, JSOFAInternalError
7368 /**
7369 **  Test jauAtoc13 function.
7370 **
7371 **  Returned:
7372 **     status    int         FALSE = success, TRUE = fail
7373 **
7374 **  Called:  jauAtoc13, vvd, viv
7375 **
7376 **  This revision:  2013 October 3
7377 */
7378 {
7379    double utc1, utc2, dut1,
7380           elong, phi, hm, xp, yp, phpa, tc, rh, wl,
7381           ob1, ob2;
7382 
7383 
7384    utc1 = 2456384.5;
7385    utc2 = 0.969254051;
7386    dut1 = 0.1550675;
7387    elong = -0.527800806;
7388    phi = -1.2345856;
7389    hm = 2738.0;
7390    xp = 2.47230737e-7;
7391    yp = 1.82640464e-6;
7392    phpa = 731.0;
7393    tc = 12.8;
7394    rh = 0.59;
7395    wl = 0.55;
7396 
7397    ob1 = 2.710085107986886201;
7398    ob2 = 0.1717653435758265198;
7399    SphericalCoordinate oc = jauAtoc13 ( "R", ob1, ob2, utc1, utc2, dut1,
7400                    elong, phi, hm, xp, yp, phpa, tc, rh, wl
7401                    );
7402    vvd(oc.alpha, 2.709956744659136129, 1e-12, "jauAtoc13", "R/rc");
7403    vvd(oc.delta, 0.1741696500898471362, 1e-12, "jauAtoc13", "R/dc");
7404 
7405    ob1 = -0.09247619879782006106;
7406    ob2 = 0.1717653435758265198;
7407    oc = jauAtoc13 ( "H", ob1, ob2, utc1, utc2, dut1,
7408                    elong, phi, hm, xp, yp, phpa, tc, rh, wl);
7409    vvd(oc.alpha, 2.709956744659734086, 1e-12, "jauAtoc13", "H/rc");
7410    vvd(oc.delta, 0.1741696500898471362, 1e-12, "jauAtoc13", "H/dc");
7411 
7412    ob1 = 0.09233952224794989993;
7413    ob2 = 1.407758704513722461;
7414    oc = jauAtoc13 ( "A", ob1, ob2, utc1, utc2, dut1,
7415                    elong, phi, hm, xp, yp, phpa, tc, rh, wl);
7416    vvd(oc.alpha, 2.709956744659734086, 1e-12, "jauAtoc13", "A/rc");
7417    vvd(oc.delta, 0.1741696500898471366, 1e-12, "jauAtoc13", "A/dc");
7418 
7419 }
7420 
7421 @Test
7422 public void t_atoi13() throws JSOFAIllegalParameter, JSOFAInternalError
7423 /**
7424 **  Test jauAtoi13 function.
7425 **
7426 **  Returned:
7427 **     status    int         FALSE = success, TRUE = fail
7428 **
7429 **  Called:  jauAtoi13, vvd, viv
7430 **
7431 **  This revision:  2013 October 3
7432 */
7433 {
7434    double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl,
7435           ob1, ob2;
7436 
7437 
7438 
7439    utc1 = 2456384.5;
7440    utc2 = 0.969254051;
7441    dut1 = 0.1550675;
7442    elong = -0.527800806;
7443    phi = -1.2345856;
7444    hm = 2738.0;
7445    xp = 2.47230737e-7;
7446    yp = 1.82640464e-6;
7447    phpa = 731.0;
7448    tc = 12.8;
7449    rh = 0.59;
7450    wl = 0.55;
7451 
7452    ob1 = 2.710085107986886201;
7453    ob2 = 0.1717653435758265198;
7454    SphericalCoordinate co = jauAtoi13( "R", ob1, ob2, utc1, utc2, dut1,
7455                    elong, phi, hm, xp, yp, phpa, tc, rh, wl);
7456    vvd(co.alpha, 2.710121574447540810, 1e-12, "jauAtoi13", "R/ri");
7457    vvd(co.delta, 0.1729371839116608778, 1e-12, "jauAtoi13", "R/di");
7458 
7459    ob1 = -0.09247619879782006106;
7460    ob2 = 0.1717653435758265198;
7461    co = jauAtoi13( "H", ob1, ob2, utc1, utc2, dut1,
7462                    elong, phi, hm, xp, yp, phpa, tc, rh, wl);
7463    vvd(co.alpha, 2.710121574448138676, 1e-12, "jauAtoi13", "H/ri");
7464    vvd(co.delta, 0.1729371839116608778, 1e-12, "jauAtoi13", "H/di");
7465 
7466    ob1 = 0.09233952224794989993;
7467    ob2 = 1.407758704513722461;
7468    co = jauAtoi13( "A", ob1, ob2, utc1, utc2, dut1,
7469                    elong, phi, hm, xp, yp, phpa, tc, rh, wl);
7470    vvd(co.alpha, 2.710121574448138676, 1e-12, "jauAtoi13", "A/ri");
7471    vvd(co.delta, 0.1729371839116608781, 1e-12, "jauAtoi13", "A/di");
7472 
7473 }
7474 
7475 @Test
7476     public void t_atoiq() throws JSOFAIllegalParameter, JSOFAInternalError
7477 /*
7478 **  Test jauAtoiq function.
7479 *
7480 **  Returned:
7481 **     status    int         FALSE = success, TRUE = fail
7482 *
7483 **  Called:  jauApio13, jauAtoiq, vvd
7484 *
7485 **  This revision:  2013 October 4
7486 */
7487 {
7488    double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl,
7489           ob1, ob2;
7490    Astrom astrom = new Astrom() ;
7491 
7492 
7493    utc1 = 2456384.5;
7494    utc2 = 0.969254051;
7495    dut1 = 0.1550675;
7496    elong = -0.527800806;
7497    phi = -1.2345856;
7498    hm = 2738.0;
7499    xp = 2.47230737e-7;
7500    yp = 1.82640464e-6;
7501    phpa = 731.0;
7502    tc = 12.8;
7503    rh = 0.59;
7504    wl = 0.55;
7505    jauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp,
7506                     phpa, tc, rh, wl, astrom);
7507 
7508    ob1 = 2.710085107986886201;
7509    ob2 = 0.1717653435758265198;
7510    SphericalCoordinate co = jauAtoiq("R", ob1, ob2, astrom);
7511    vvd(co.alpha, 2.710121574447540810, 1e-12,
7512            "jauAtoiq", "R/ri");
7513    vvd(co.delta, 0.17293718391166087785, 1e-12,
7514            "jauAtoiq", "R/di");
7515 
7516    ob1 = -0.09247619879782006106;
7517    ob2 = 0.1717653435758265198;
7518    co = jauAtoiq("H", ob1, ob2, astrom);
7519    vvd(co.alpha, 2.710121574448138676, 1e-12,
7520            "jauAtoiq", "H/ri");
7521    vvd(co.delta, 0.1729371839116608778, 1e-12,
7522            "jauAtoiq", "H/di");
7523 
7524    ob1 = 0.09233952224794989993;
7525    ob2 = 1.407758704513722461;
7526    co = jauAtoiq("A", ob1, ob2, astrom);
7527    vvd(co.alpha, 2.710121574448138676, 1e-12,
7528            "jauAtoiq", "A/ri");
7529    vvd(co.delta, 0.1729371839116608781, 1e-12,
7530            "jauAtoiq", "A/di");
7531 
7532 }
7533 
7534 @Test
7535     public void t_ld()
7536 /**
7537 **  Test jauLd function.
7538 **
7539 **  Returned:
7540 **     status    int         FALSE = success, TRUE = fail
7541 **
7542 **  Called:  jauLd, vvd
7543 *
7544 **  This revision:  2013 October 2
7545 */
7546 {
7547    double bm, p[] = new double[3], q[] = new double[3], e[] = new double[3], em, dlim, p1[];
7548 
7549 
7550    bm = 0.00028574;
7551    p[0] = -0.763276255;
7552    p[1] = -0.608633767;
7553    p[2] = -0.216735543;
7554    q[0] = -0.763276255;
7555    q[1] = -0.608633767;
7556    q[2] = -0.216735543;
7557    e[0] = 0.76700421;
7558    e[1] = 0.605629598;
7559    e[2] = 0.211937094;
7560    em = 8.91276983;
7561    dlim = 3e-10;
7562 
7563    p1 = jauLd(bm, p, q, e, em, dlim);
7564 
7565    vvd(p1[0], -0.7632762548968159627, 1e-12,
7566                "jauLd", "1");
7567    vvd(p1[1], -0.6086337670823762701, 1e-12,
7568                "jauLd", "2");
7569    vvd(p1[2], -0.2167355431320546947, 1e-12,
7570                "jauLd", "3");
7571 
7572 }
7573 
7574 @Test
7575     public void t_ldn()
7576 /**
7577 **  - - - - - -
7578 **   t _ l d n
7579 **  - - - - - -
7580 **
7581 **  Test jauLdn function.
7582 **
7583 **  Returned:
7584 **     status    int         FALSE = success, TRUE = fail
7585 **
7586 **  Called:  jauLdn, vvd
7587 **
7588 **  This revision:  2013 October 2
7589 */
7590 {
7591    int n;
7592    Ldbody b[] = {new Ldbody(),new Ldbody(),new Ldbody()};
7593    double ob[] = new double[3], sc[] = new double[3], sn[];
7594 
7595 
7596    n = 3;
7597    b[0].bm = 0.00028574;
7598    b[0].dl = 3e-10;
7599    b[0].pv[0][0] = -7.81014427;
7600    b[0].pv[0][1] = -5.60956681;
7601    b[0].pv[0][2] = -1.98079819;
7602    b[0].pv[1][0] =  0.0030723249;
7603    b[0].pv[1][1] = -0.00406995477;
7604    b[0].pv[1][2] = -0.00181335842;
7605    b[1].bm = 0.00095435;
7606    b[1].dl = 3e-9;
7607    b[1].pv[0][0] =  0.738098796;
7608    b[1].pv[0][1] =  4.63658692;
7609    b[1].pv[0][2] =  1.9693136;
7610    b[1].pv[1][0] = -0.00755816922;
7611    b[1].pv[1][1] =  0.00126913722;
7612    b[1].pv[1][2] =  0.000727999001;
7613    b[2].bm = 1.0;
7614    b[2].dl = 6e-6;
7615    b[2].pv[0][0] = -0.000712174377;
7616    b[2].pv[0][1] = -0.00230478303;
7617    b[2].pv[0][2] = -0.00105865966;
7618    b[2].pv[1][0] =  6.29235213e-6;
7619    b[2].pv[1][1] = -3.30888387e-7;
7620    b[2].pv[1][2] = -2.96486623e-7;
7621    ob[0] =  -0.974170437;
7622    ob[1] =  -0.2115201;
7623    ob[2] =  -0.0917583114;
7624    sc[0] =  -0.763276255;
7625    sc[1] =  -0.608633767;
7626    sc[2] =  -0.216735543;
7627 
7628    sn = jauLdn(n, b, ob, sc);
7629 
7630    vvd(sn[0], -0.7632762579693333866, 1e-12,
7631                "jauLdn", "1");
7632    vvd(sn[1], -0.6086337636093002660, 1e-12,
7633                "jauLdn", "2");
7634    vvd(sn[2], -0.2167355420646328159, 1e-12,
7635                "jauLdn", "3");
7636 
7637 }
7638 
7639 @Test
7640     public void t_ldsun()
7641 /**
7642 **  Test jauLdsun function.
7643 **
7644 **  Returned:
7645 **     status    int         FALSE = success, TRUE = fail
7646 **
7647 **  Called:  jauLdsun, vvd
7648 **
7649 **  This revision:  2013 October 2
7650 */
7651 {
7652    double p[] = new double[3], e[] = new double[3], em, p1[];
7653 
7654 
7655    p[0] = -0.763276255;
7656    p[1] = -0.608633767;
7657    p[2] = -0.216735543;
7658    e[0] = -0.973644023;
7659    e[1] = -0.20925523;
7660    e[2] = -0.0907169552;
7661    em = 0.999809214;
7662 
7663    p1 = jauLdsun(p, e, em);
7664 
7665    vvd(p1[0], -0.7632762580731413169, 1e-12,
7666                "jauLdsun", "1");
7667    vvd(p1[1], -0.6086337635262647900, 1e-12,
7668                "jauLdsun", "2");
7669    vvd(p1[2], -0.2167355419322321302, 1e-12,
7670                "jauLdsun", "3");
7671 
7672 }
7673 @Test
7674     public void t_pmpx()
7675 /**
7676 **  Test jauPmpx function.
7677 **
7678 **  Returned:
7679 **     status    int         FALSE = success, TRUE = fail
7680 **
7681 **  Called:  jauPmpx, vvd
7682 **
7683 **  This revision:  2013 October 2
7684 */
7685 {
7686    double rc, dc, pr, pd, px, rv, pmt, pob[] = new double[3], pco[];
7687 
7688 
7689    rc = 1.234;
7690    dc = 0.789;
7691    pr = 1e-5;
7692    pd = -2e-5;
7693    px = 1e-2;
7694    rv = 10.0;
7695    pmt = 8.75;
7696    pob[0] = 0.9;
7697    pob[1] = 0.4;
7698    pob[2] = 0.1;
7699 
7700    pco = jauPmpx(rc, dc, pr, pd, px, rv, pmt, pob);
7701 
7702    vvd(pco[0], 0.2328137623960308438, 1e-12,
7703                "jauPmpx", "1");
7704    vvd(pco[1], 0.6651097085397855328, 1e-12,
7705                "jauPmpx", "2");
7706    vvd(pco[2], 0.7095257765896359837, 1e-12,
7707                "jauPmpx", "3");
7708 
7709 }
7710 
7711 @Test
7712     public void t_pmsafe() throws JSOFAInternalError
7713 /**
7714 **  Test jauPmsafe function.
7715 **
7716 **  Returned:
7717 **     status    int         FALSE = success, TRUE = fail
7718 **
7719 **  Called:  jauPmsafe, vvd, viv
7720 **
7721 **  This revision:  2013 October 2
7722 */
7723 {
7724    double ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b;
7725 
7726 
7727    ra1 = 1.234;
7728    dec1 = 0.789;
7729    pmr1 = 1e-5;
7730    pmd1 = -2e-5;
7731    px1 = 1e-2;
7732    rv1 = 10.0;
7733    ep1a = 2400000.5;
7734    ep1b = 48348.5625;
7735    ep2a = 2400000.5;
7736    ep2b = 51544.5;
7737 
7738    CatalogCoords cc = jauPmsafe(ra1, dec1, pmr1, pmd1, px1, rv1,
7739                  ep1a, ep1b, ep2a, ep2b
7740                  );
7741 
7742    vvd(cc.pos.alpha, 1.234087484501017061, 1e-12,
7743             "jauPmsafe", "ra2");
7744    vvd(cc.pos.delta, 0.7888249982450468567, 1e-12,
7745             "jauPmsafe", "dec2");
7746    vvd(cc.pm.alpha, 0.9996457663586073988e-5, 1e-12,
7747              "jauPmsafe", "pmr2");
7748    vvd(cc.pm.delta, -0.2000040085106754565e-4, 1e-16,
7749              "jauPmsafe", "pmd2");
7750    vvd(cc.px, 0.9999997295356830666e-2, 1e-12,
7751             "jauPmsafe", "px2");
7752    vvd(cc.rv, 10.38468380293920069, 1e-10,
7753             "jauPmsafe", "rv2");
7754 
7755 }
7756 
7757 
7758 @Test
7759     public void t_pvtob() throws JSOFAIllegalParameter, JSOFAInternalError
7760 /**
7761 **  Test jauPvtob function.
7762 **
7763 **  Returned:
7764 **     status    int         FALSE = success, TRUE = fail
7765 **
7766 **  Called:  jauPvtob, vvd
7767 **
7768 **  This revision:  2013 October 2
7769 */
7770 {
7771    double elong, phi, hm, xp, yp, sp, theta, pv[][];
7772 
7773 
7774    elong = 2.0;
7775    phi = 0.5;
7776    hm = 3000.0;
7777    xp = 1e-6;
7778    yp = -0.5e-6;
7779    sp = 1e-8;
7780    theta = 5.0;
7781 
7782    pv = jauPvtob(elong, phi, hm, xp, yp, sp, theta);
7783 
7784    vvd(pv[0][0], 4225081.367071159207, 1e-5,
7785                  "jauPvtob", "p(1)");
7786    vvd(pv[0][1], 3681943.215856198144, 1e-5,
7787                  "jauPvtob", "p(2)");
7788    vvd(pv[0][2], 3041149.399241260785, 1e-5,
7789                  "jauPvtob", "p(3)");
7790    vvd(pv[1][0], -268.4915389365998787, 1e-9,
7791                  "jauPvtob", "v(1)");
7792    vvd(pv[1][1], 308.0977983288903123, 1e-9,
7793                  "jauPvtob", "v(2)");
7794    vvd(pv[1][2], 0, 0,
7795                  "jauPvtob", "v(3)");
7796 
7797 }
7798 
7799 @Test
7800     public void t_refco()
7801 /**
7802 **  Test jauRefco function.
7803 **
7804 **  Returned:
7805 **     status    int         FALSE = success, TRUE = fail
7806 **
7807 **  Called:  jauRefco, vvd
7808 **
7809 **  This revision:  2013 October 2
7810 */
7811 {
7812    double phpa, tc, rh, wl;
7813 
7814 
7815    phpa = 800.0;
7816    tc = 10.0;
7817    rh = 0.9;
7818    wl = 0.4;
7819 
7820    RefCos ref = jauRefco(phpa, tc, rh, wl);
7821 
7822    vvd(ref.a, 0.2264949956241415009e-3, 1e-15,
7823              "jauRefco", "refa");
7824    vvd(ref.b, -0.2598658261729343970e-6, 1e-18,
7825              "jauRefco", "refb");
7826 
7827 }
7828 
7829 
7830 @Test
7831 public void t_d2dtf() throws JSOFAIllegalParameter, JSOFAInternalError
7832 /**
7833 **  Test jauD2dtf function.
7834 **
7835 **  Returned:
7836 **     status    int         FALSE = success, TRUE = fail
7837 **
7838 **  Called:  jauD2dtf, viv
7839 **
7840 **  This revision:  2013 August 7
7841 */
7842 {
7843 
7844    CalendarHMS c = jauD2dtf("UTC", 5, 2400000.5, 49533.99999);
7845 
7846    viv(c.iy, 1994, "jauD2dtf", "y");
7847    viv(c.im, 6, "jauD2dtf", "mo");
7848    viv(c.id, 30, "jauD2dtf", "d");
7849    viv(c.ihmsf[0], 23, "jauD2dtf", "h");
7850    viv(c.ihmsf[1], 59, "jauD2dtf", "m");
7851    viv(c.ihmsf[2], 60, "jauD2dtf", "s");
7852    viv(c.ihmsf[3], 13599, "jauD2dtf", "f");
7853 
7854 }
7855 
7856 
7857 
7858 /**
7859 **  - - - - - - - -
7860 **   t _ d t f 2 d
7861 **  - - - - - - - -
7862 **
7863 **  Test jauDtf2d function.
7864 **
7865 **  Returned:
7866 **     status    int         FALSE = success, TRUE = fail
7867 **
7868 **  Called:  jauDtf2d, vvd, viv
7869 **
7870 **  This revision:  2013 August 7
7871  * @throws JSOFAInternalError 
7872  * @throws JSOFAIllegalParameter 
7873 */
7874 @Test
7875 public void t_dtf2d() throws JSOFAIllegalParameter, JSOFAInternalError
7876 {
7877 
7878    JulianDate jd = jauDtf2d("UTC", 1994, 6, 30, 23, 59, 60.13599);
7879 
7880    vvd(jd.djm0+jd.djm1, 2449534.49999, 1e-6, "jauDtf2d", "u");
7881 
7882 }
7883 
7884 
7885 /**
7886 **
7887 **  Test jauG2icrs function.
7888 **
7889 **  Called:  jauG2icrs, vvd
7890 **
7891 **  This revision:  2015 March 02
7892 */
7893 @Test
7894 public void t_g2icrs()
7895 {
7896    double dl, db;
7897    SphericalCoordinate co;
7898 
7899 
7900    dl =  5.5850536063818546461558105;
7901    db = -0.7853981633974483096156608;
7902    co = jauG2icrs(dl, db);
7903    vvd(co.alpha,  5.9338074302227188048671, 1e-14, "jauG2icrs", "Ra");
7904    vvd(co.delta, -1.1784870613579944551541, 1e-14, "jauG2icrs", "Dec");
7905  }
7906 
7907 /**
7908 **
7909 **  Test jauIcrs2g function.
7910 **
7911 **  Called:  jauIcrs2g, vvd
7912 **
7913 **  This revision:  2015 March 02
7914 */
7915 @Test
7916 public void t_icrs2g()
7917 {
7918    double dr, dd;
7919 
7920    dr =  5.9338074302227188048671087;
7921    dd = -1.1784870613579944551540570;
7922    SphericalCoordinate co = jauIcrs2g (dr, dd);
7923    vvd(co.alpha,  5.5850536063818546461558, 1e-14, "jauIcrs2g", "L");
7924    vvd(co.delta, -0.7853981633974483096157, 1e-14, "jauIcrs2g", "B");
7925  }
7926 
7927 /**
7928 **
7929 **  Test jauEceq06 function.
7930 **
7931 **  Returned:
7932 **     status    int         FALSE = success, TRUE = fail
7933 **
7934 **  Called:  jauEceq06, vvd
7935 **
7936 **  This revision:  2016 March 12
7937 */
7938 @Test
7939 public void t_eceq06()
7940 {
7941    double date1, date2, dl, db;
7942 
7943 
7944    date1 = 2456165.5;
7945    date2 = 0.401182685;
7946    dl = 5.1;
7947    db = -0.9;
7948 
7949    SphericalCoordinate co = jauEceq06(date1, date2, dl, db);
7950 
7951    vvd(co.alpha, 5.533459733613627767, 1e-14, "jauEceq06", "dr");
7952    vvd(co.delta, -1.246542932554480576, 1e-14, "jauEceq06", "dd");
7953 
7954 }
7955 
7956 /**
7957 **
7958 **  Test jauEcm06 function.
7959 **
7960 **  Returned:
7961 **     status    int         FALSE = success, TRUE = fail
7962 **
7963 **  Called:  jauEcm06, vvd
7964 **
7965 **  This revision:  2016 March 12
7966 */
7967 @Test
7968 public void t_ecm06()
7969 {
7970    double date1, date2;
7971 
7972 
7973    date1 = 2456165.5;
7974    date2 = 0.401182685;
7975 
7976    double rm[][] = jauEcm06(date1, date2);
7977 
7978    vvd(rm[0][0], 0.9999952427708701137, 1e-14,
7979        "jauEcm06", "rm11");
7980    vvd(rm[0][1], -0.2829062057663042347e-2, 1e-14,
7981        "jauEcm06", "rm12");
7982    vvd(rm[0][2], -0.1229163741100017629e-2, 1e-14,
7983        "jauEcm06", "rm13");
7984    vvd(rm[1][0], 0.3084546876908653562e-2, 1e-14,
7985        "jauEcm06", "rm21");
7986    vvd(rm[1][1], 0.9174891871550392514, 1e-14,
7987        "jauEcm06", "rm22");
7988    vvd(rm[1][2], 0.3977487611849338124, 1e-14,
7989        "jauEcm06", "rm23");
7990    vvd(rm[2][0], 0.2488512951527405928e-5, 1e-14,
7991        "jauEcm06", "rm31");
7992    vvd(rm[2][1], -0.3977506604161195467, 1e-14,
7993        "jauEcm06", "rm32");
7994    vvd(rm[2][2], 0.9174935488232863071, 1e-14,
7995        "jauEcm06", "rm33");
7996 
7997 }
7998 
7999 /**
8000 **
8001 **  Test jauEqec06 function.
8002 **
8003 **  Returned:
8004 **     status    int         FALSE = success, TRUE = fail
8005 **
8006 **  Called:  jauEqec06, vvd
8007 **
8008 **  This revision:  2016 March 12
8009 */
8010 @Test
8011 public void t_eqec06()
8012 {
8013    double date1, date2, dr, dd;
8014 
8015 
8016    date1 = 1234.5;
8017    date2 = 2440000.5;
8018    dr = 1.234;
8019    dd = 0.987;
8020 
8021    SphericalCoordinate co = jauEqec06(date1, date2, dr, dd);
8022 
8023    vvd(co.alpha, 1.342509918994654619, 1e-14, "jauEqec06", "dl");
8024    vvd(co.delta, 0.5926215259704608132, 1e-14, "jauEqec06", "db");
8025 
8026 }
8027 /**
8028 **  Test jauLteceq function.
8029 **
8030 **  Returned:
8031 **     status    int         FALSE = success, TRUE = fail
8032 **
8033 **  Called:  jauLteceq, vvd
8034 **
8035 **  This revision:  2016 March 12
8036 */
8037 @Test
8038 public void t_lteceq()
8039 {
8040    double epj, dl, db;
8041 
8042 
8043    epj = 2500.0;
8044    dl = 1.5;
8045    db = 0.6;
8046 
8047    SphericalCoordinate co = jauLteceq(epj, dl, db);
8048 
8049    vvd(co.alpha, 1.275156021861921167, 1e-14, "jauLteceq", "dr");
8050    vvd(co.delta, 0.9966573543519204791, 1e-14, "jauLteceq", "dd");
8051 
8052 }
8053 
8054 /**
8055 **  Test jauLtecm function.
8056 **
8057 **  Returned:
8058 **     status    int         FALSE = success, TRUE = fail
8059 **
8060 **  Called:  jauLtecm, vvd
8061 **
8062 **  This revision:  2016 March 12
8063 */
8064 @Test
8065 public void t_ltecm()
8066 {
8067    double epj;
8068 
8069 
8070    epj = -3000.0;
8071 
8072    double rm[][] =jauLtecm(epj);
8073 
8074    vvd(rm[0][0], 0.3564105644859788825, 1e-14,
8075        "jauLtecm", "rm11");
8076    vvd(rm[0][1], 0.8530575738617682284, 1e-14,
8077        "jauLtecm", "rm12");
8078    vvd(rm[0][2], 0.3811355207795060435, 1e-14,
8079        "jauLtecm", "rm13");
8080    vvd(rm[1][0], -0.9343283469640709942, 1e-14,
8081        "jauLtecm", "rm21");
8082    vvd(rm[1][1], 0.3247830597681745976, 1e-14,
8083        "jauLtecm", "rm22");
8084    vvd(rm[1][2], 0.1467872751535940865, 1e-14,
8085        "jauLtecm", "rm23");
8086    vvd(rm[2][0], 0.1431636191201167793e-2, 1e-14,
8087        "jauLtecm", "rm31");
8088    vvd(rm[2][1], -0.4084222566960599342, 1e-14,
8089        "jauLtecm", "rm32");
8090    vvd(rm[2][2], 0.9127919865189030899, 1e-14,
8091        "jauLtecm", "rm33");
8092 
8093 }
8094 
8095 /**
8096 **
8097 **  Test jauLteqec function.
8098 **
8099 **  Returned:
8100 **     status    int         FALSE = success, TRUE = fail
8101 **
8102 **  Called:  jauLteqec, vvd
8103 **
8104 **  This revision:  2016 March 12
8105 */
8106 @Test
8107 public void t_lteqec()
8108 {
8109    double epj, dr, dd;
8110 
8111 
8112    epj = -1500.0;
8113    dr = 1.234;
8114    dd = 0.987;
8115 
8116    SphericalCoordinate co = jauLteqec(epj, dr, dd);
8117 
8118    vvd(co.alpha, 0.5039483649047114859, 1e-14, "jauLteqec", "dl");
8119    vvd(co.delta, 0.5848534459726224882, 1e-14, "jauLteqec", "db");
8120 
8121 }
8122 
8123 /**
8124 **  Test jauLtp function.
8125 **
8126 **  Returned:
8127 **     status    int         FALSE = success, TRUE = fail
8128 **
8129 **  Called:  jauLtp, vvd
8130 **
8131 **  This revision:  2016 March 12
8132 */
8133 @Test
8134 public void t_ltp()
8135 {
8136    double epj;
8137 
8138 
8139    epj = 1666.666;
8140 
8141    double rp[][] = jauLtp(epj);
8142 
8143    vvd(rp[0][0], 0.9967044141159213819, 1e-14,
8144        "jauLtp", "rp11");
8145    vvd(rp[0][1], 0.7437801893193210840e-1, 1e-14,
8146        "jauLtp", "rp12");
8147    vvd(rp[0][2], 0.3237624409345603401e-1, 1e-14,
8148        "jauLtp", "rp13");
8149    vvd(rp[1][0], -0.7437802731819618167e-1, 1e-14,
8150        "jauLtp", "rp21");
8151    vvd(rp[1][1], 0.9972293894454533070, 1e-14,
8152        "jauLtp", "rp22");
8153    vvd(rp[1][2], -0.1205768842723593346e-2, 1e-14,
8154        "jauLtp", "rp23");
8155    vvd(rp[2][0], -0.3237622482766575399e-1, 1e-14,
8156        "jauLtp", "rp31");
8157    vvd(rp[2][1], -0.1206286039697609008e-2, 1e-14,
8158        "jauLtp", "rp32");
8159    vvd(rp[2][2], 0.9994750246704010914, 1e-14,
8160        "jauLtp", "rp33");
8161 
8162 }
8163 
8164 /**
8165 **  Test jauLtpb function.
8166 **
8167 **  Returned:
8168 **     status    int         FALSE = success, TRUE = fail
8169 **
8170 **  Called:  jauLtpb, vvd
8171 **
8172 **  This revision:  2016 March 12
8173 */
8174 @Test
8175 public void t_ltpb()
8176 {
8177    double epj ;
8178 
8179 
8180    epj = 1666.666;
8181 
8182    double rpb[][] = jauLtpb(epj);
8183 
8184    vvd(rpb[0][0], 0.9967044167723271851, 1e-14,
8185        "jauLtpb", "rpb11");
8186    vvd(rpb[0][1], 0.7437794731203340345e-1, 1e-14,
8187        "jauLtpb", "rpb12");
8188    vvd(rpb[0][2], 0.3237632684841625547e-1, 1e-14,
8189        "jauLtpb", "rpb13");
8190    vvd(rpb[1][0], -0.7437795663437177152e-1, 1e-14,
8191        "jauLtpb", "rpb21");
8192    vvd(rpb[1][1], 0.9972293947500013666, 1e-14,
8193        "jauLtpb", "rpb22");
8194    vvd(rpb[1][2], -0.1205741865911243235e-2, 1e-14,
8195        "jauLtpb", "rpb23");
8196    vvd(rpb[2][0], -0.3237630543224664992e-1, 1e-14,
8197        "jauLtpb", "rpb31");
8198    vvd(rpb[2][1], -0.1206316791076485295e-2, 1e-14,
8199        "jauLtpb", "rpb32");
8200    vvd(rpb[2][2], 0.9994750220222438819, 1e-14,
8201        "jauLtpb", "rpb33");
8202 
8203 }
8204 
8205 /**
8206 **  Test jauLtpecl function.
8207 **
8208 **  Returned:
8209 **     status    int         FALSE = success, TRUE = fail
8210 **
8211 **  Called:  jauLtpecl, vvd
8212 **
8213 **  This revision:  2016 March 12
8214 */
8215 @Test
8216 public void t_ltpecl()
8217 {
8218    double epj;
8219 
8220 
8221    epj = -1500.0;
8222 
8223    double vec[] = jauLtpecl(epj);
8224 
8225    vvd(vec[0], 0.4768625676477096525e-3, 1e-14,
8226        "jauLtpecl", "vec1");
8227    vvd(vec[1], -0.4052259533091875112, 1e-14,
8228        "jauLtpecl", "vec2");
8229    vvd(vec[2], 0.9142164401096448012, 1e-14,
8230        "jauLtpecl", "vec3");
8231 
8232 }
8233 
8234 /**
8235 **
8236 **  Test jauLtpequ function.
8237 **
8238 **  Returned:
8239 **     status    int         FALSE = success, TRUE = fail
8240 **
8241 **  Called:  jauLtpequ, vvd
8242 **
8243 **  This revision:  2016 March 12
8244 */
8245 @Test
8246 public void t_ltpequ()
8247 {
8248    double epj;
8249    epj = -2500.0;
8250 
8251    double veq[] = jauLtpequ(epj);
8252 
8253    vvd(veq[0], -0.3586652560237326659, 1e-14,
8254        "jauLtpequ", "veq1");
8255    vvd(veq[1], -0.1996978910771128475, 1e-14,
8256        "jauLtpequ", "veq2");
8257    vvd(veq[2], 0.9118552442250819624, 1e-14,
8258        "jauLtpequ", "veq3");
8259 
8260 }
8261 
8262 /**
8263 **  - - - - - - - -
8264 **   t _ a e 2 h d
8265 **  - - - - - - - -
8266 **
8267 **  Test iauAe2hd function.
8268 **
8269 **  Returned:
8270 **     status    int         FALSE = success, TRUE = fail
8271 **
8272 **  Called:  iauAe2hd and vvd
8273 **
8274 **  This revision:  2017 October 21
8275 */
8276 @Test
8277 public void t_ae2hd()
8278 {
8279    double a, e, p;
8280 
8281 
8282    a = 5.5;
8283    e = 1.1;
8284    p = 0.7;
8285 
8286   EquatorialCoordinate ec = jauAe2hd(a, e, p);
8287 
8288    vvd(ec.ha, 0.5933291115507309663, 1e-14, "jauAe2hd", "h");
8289    vvd(ec.dec, 0.9613934761647817620, 1e-14, "jauAe2hd", "d");
8290 
8291 }
8292 
8293 
8294 
8295 public void t_hd2ae()
8296 /*
8297 **  - - - - - - - -
8298 **   t _ h d 2 a e
8299 **  - - - - - - - -
8300 **
8301 **  Test jauHd2ae function.
8302 **
8303 **  Returned:
8304 **     status    int         FALSE = success, TRUE = fail
8305 **
8306 **  Called:  jauHd2ae and vvd
8307 **
8308 **  This revision:  2017 October 21
8309 */
8310 {
8311    double h, d, p;
8312 
8313 
8314    h = 1.1;
8315    d = 1.2;
8316    p = 0.3;
8317 
8318    HorizonCoordinate hc = jauHd2ae(h, d, p);
8319 
8320    vvd(hc.az, 5.916889243730066194, 1e-13, "jauHd2ae", "a");
8321    vvd(hc.el, 0.4472186304990486228, 1e-14, "jauHd2ae", "e");
8322 
8323 }
8324 
8325 /**
8326 **  - - - - - - - -
8327 **   t _ h d 2 p a
8328 **  - - - - - - - -
8329 **
8330 **  Test jauHd2pa function.
8331 **
8332 **  Returned:
8333 **     status    int         FALSE = success, TRUE = fail
8334 **
8335 **  Called:  jauHd2pa and vvd
8336 **
8337 **  This revision:  2017 October 21
8338 */
8339 @Test
8340 public void t_hd2pa()
8341 {
8342    double h, d, p, q;
8343 
8344 
8345    h = 1.1;
8346    d = 1.2;
8347    p = 0.3;
8348 
8349    q = jauHd2pa(h, d, p);
8350 
8351    vvd(q, 1.906227428001995580, 1e-13, "jauHd2pa", "q");
8352 
8353 }
8354 
8355 /**
8356 **  - - - - - - - -
8357 **   t _ t p o r s
8358 **  - - - - - - - -
8359 **
8360 **  Test jauTpors function.
8361 **
8362 **  Returned:
8363 **     status    int         FALSE = success, TRUE = fail
8364 **
8365 **  Called:  jauTpors, vvd, viv
8366 **
8367 **  This revision:  2017 October 21
8368 */
8369 @Test
8370 public void t_tpors()
8371 {
8372    double xi, eta, ra, dec;
8373 
8374 
8375    xi = -0.03;
8376    eta = 0.07;
8377    ra = 1.3;
8378    dec = 1.5;
8379 
8380    TangentPointSolution tps = jauTpors(xi, eta, ra, dec);
8381 
8382    vvd(tps.sol1.alpha, 1.736621577783208748, 1e-13, "jauTpors", "az1");
8383    vvd(tps.sol1.delta, 1.436736561844090323, 1e-13, "jauTpors", "bz1");
8384 
8385    vvd(tps.sol2.alpha, 4.004971075806584490, 1e-13, "jauTpors", "az2");
8386    vvd(tps.sol2.delta, 1.565084088476417917, 1e-13, "jauTpors", "bz2");
8387 
8388    viv(tps.nsolutions, 2, "jauTpors", "n");
8389 
8390 }
8391 
8392 /*
8393 **  - - - - - - - -
8394 **   t _ t p o r v
8395 **  - - - - - - - -
8396 **
8397 **  Test jauTporv function.
8398 **
8399 **  Returned:
8400 **     status    int         FALSE = success, TRUE = fail
8401 **
8402 **  Called:  jauTporv, jauS2c, vvd, viv
8403 **
8404 **  This revision:  2017 October 21
8405 */
8406 @Test
8407 public void t_tporv()
8408 {
8409    double xi, eta, ra, dec, v[] = new double[3];
8410 
8411 
8412    xi = -0.03;
8413    eta = 0.07;
8414    ra = 1.3;
8415    dec = 1.5;
8416    v = jauS2c(ra, dec);
8417 
8418    TangentPointDirectionCosines tpc = jauTporv(xi, eta, v);
8419 
8420    vvd(tpc.dc1[0], -0.02206252822366888610, 1e-15,
8421        "jauTporv", "x1");
8422    vvd(tpc.dc1[1], 0.1318251060359645016, 1e-14,
8423        "jauTporv", "y1");
8424    vvd(tpc.dc1[2], 0.9910274397144543895, 1e-14,
8425        "jauTporv", "z1");
8426 
8427    vvd(tpc.dc2[0], -0.003712211763801968173, 1e-16,
8428        "jauTporv", "x2");
8429    vvd(tpc.dc2[1], -0.004341519956299836813, 1e-16,
8430        "jauTporv", "y2");
8431    vvd(tpc.dc2[2], 0.9999836852110587012, 1e-14,
8432        "jauTporv", "z2");
8433 
8434    viv(tpc.nsolution, 2, "jauTporv", "n");
8435 
8436 }
8437 
8438 /**
8439 **  - - - - - - - -
8440 **   t _ t p s t s
8441 **  - - - - - - - -
8442 **
8443 **  Test jauTpsts function.
8444 **
8445 **  Returned:
8446 **     status    int         FALSE = success, TRUE = fail
8447 **
8448 **  Called:  jauTpsts, vvd
8449 **
8450 **  This revision:  2017 October 21
8451 */
8452 @Test
8453 public void t_tpsts()
8454 {
8455    double xi, eta, raz, decz;
8456 
8457 
8458    xi = -0.03;
8459    eta = 0.07;
8460    raz = 2.3;
8461    decz = 1.5;
8462 
8463    SphericalCoordinate sc = jauTpsts(xi, eta, raz, decz);
8464 
8465    vvd(sc.alpha, 0.7596127167359629775, 1e-14, "jauTpsts", "ra");
8466    vvd(sc.delta, 1.540864645109263028, 1e-13, "jauTpsts", "dec");
8467 
8468 }
8469 
8470 /**
8471 **  - - - - - - - -
8472 **   t _ t p s t v
8473 **  - - - - - - - -
8474 **
8475 **  Test jauTpstv function.
8476 **
8477 **  Returned:
8478 **     status    int         FALSE = success, TRUE = fail
8479 **
8480 **  Called:  jauTpstv, jauS2c, vvd
8481 **
8482 **  This revision:  2017 October 21
8483 */
8484 @Test
8485 public void t_tpstv()
8486 {
8487    double xi, eta, raz, decz, vz[], v[];
8488 
8489 
8490    xi = -0.03;
8491    eta = 0.07;
8492    raz = 2.3;
8493    decz = 1.5;
8494    vz = jauS2c(raz, decz);
8495 
8496    v = jauTpstv(xi, eta, vz);
8497 
8498    vvd(v[0], 0.02170030454907376677, 1e-15, "jauTpstv", "x");
8499    vvd(v[1], 0.02060909590535367447, 1e-15, "jauTpstv", "y");
8500    vvd(v[2], 0.9995520806583523804, 1e-14, "jauTpstv", "z");
8501 
8502 }
8503 
8504 /*
8505 **  - - - - - - - -
8506 **   t _ t p x e s
8507 **  - - - - - - - -
8508 **
8509 **  Test jauTpxes function.
8510 **
8511 **  Returned:
8512 **     status    int         FALSE = success, TRUE = fail
8513 **
8514 **  Called:  jauTpxes, vvd, viv
8515 **
8516 **  This revision:  2017 October 21
8517 */
8518 @Test
8519 public void t_tpxes()
8520 {
8521    double ra, dec, raz, decz;
8522 
8523 
8524    ra = 1.3;
8525    dec = 1.55;
8526    raz = 2.3;
8527    decz = 1.5;
8528 
8529    TangentPlaneCoordinate tpc = jauTpxes(ra, dec, raz, decz);
8530 
8531    vvd(tpc.xi, -0.01753200983236980595, 1e-15, "jauTpxes", "xi");
8532    vvd(tpc.eta, 0.05962940005778712891, 1e-15, "jauTpxes", "eta");
8533 
8534    viv(tpc.status, 0, "jauTpxes", "j");
8535 
8536 }
8537 
8538 /**
8539 **  - - - - - - - -
8540 **   t _ t p x e v
8541 **  - - - - - - - -
8542 **
8543 **  Test jauTpxev function.
8544 **
8545 **  Returned:
8546 **     status    int         FALSE = success, TRUE = fail
8547 **
8548 **  Called:  jauTpxev, jauS2c, vvd
8549 **
8550 **  This revision:  2017 October 21
8551 */
8552 @Test
8553 public void t_tpxev()
8554 {
8555    double ra, dec, raz, decz, v[], vz[];
8556 
8557 
8558    ra = 1.3;
8559    dec = 1.55;
8560    raz = 2.3;
8561    decz = 1.5;
8562    v = jauS2c(ra, dec);
8563    vz = jauS2c(raz, decz);
8564 
8565    TangentPlaneCoordinate tpc = jauTpxev(v, vz);
8566 
8567    vvd(tpc.xi, -0.01753200983236980595, 1e-15, "jauTpxev", "xi");
8568    vvd(tpc.eta, 0.05962940005778712891, 1e-15, "jauTpxev", "eta");
8569 
8570    viv(tpc.status, 0, "jauTpxev", "j");
8571 
8572    
8573 }
8574 /**
8575 **  - - - - - - - -
8576 **   t _ f k 4 2 5
8577 **  - - - - - - - -
8578 **
8579 **  Test iauFk425 function.
8580 **
8581 **  Returned:
8582 **     status    int         FALSE = success, TRUE = fail
8583 **
8584 **  Called:  iauFk425, vvd
8585 **
8586 **  This revision:  2018 December 6
8587 */
8588 @Test
8589 public void t_fk425()
8590 {
8591    double r1950, d1950, dr1950, dd1950, p1950, v1950;
8592 
8593 
8594    r1950 = 0.07626899753879587532;
8595    d1950 = -1.137405378399605780;
8596    dr1950 = 0.1973749217849087460e-4;
8597    dd1950 = 0.5659714913272723189e-5;
8598    p1950 = 0.134;
8599    v1950 = 8.7;
8600 
8601    CatalogCoords c = jauFk425(r1950, d1950, dr1950, dd1950, p1950, v1950);
8602 
8603    vvd(c.pos.alpha, 0.08757989933556446040, 1e-14,
8604        "iauFk425", "r2000");
8605    vvd(c.pos.delta, -1.132279113042091895, 1e-12,
8606        "iauFk425", "d2000");
8607    vvd(c.pm.alpha, 0.1953670614474396139e-4, 1e-17,
8608        "iauFk425", "dr2000");
8609    vvd(c.pm.delta, 0.5637686678659640164e-5, 1e-18,
8610        "iauFk425", "dd2000");
8611    vvd(c.px, 0.1339919950582767871, 1e-13, "iauFk425", "p2000");
8612    vvd(c.rv, 8.736999669183529069, 1e-12, "iauFk425", "v2000");
8613 
8614 }
8615 
8616 /**
8617 **  - - - - - - - -
8618 **   t _ f k 4 5 z
8619 **  - - - - - - - -
8620 **
8621 **  Test iauFk45z function.
8622 **
8623 **  Returned:
8624 **     status    int         FALSE = success, TRUE = fail
8625 **
8626 **  Called:  iauFk45z, vvd
8627 **
8628 **  This revision:  2018 December 6
8629 */
8630 @Test
8631 public void t_fk45z()
8632 {
8633    double r1950, d1950, bepoch;
8634 
8635 
8636    r1950 = 0.01602284975382960982;
8637    d1950 = -0.1164347929099906024;
8638    bepoch = 1954.677617625256806;
8639 
8640    SphericalCoordinate r = jauFk45z(r1950, d1950, bepoch);
8641 
8642    vvd(r.alpha, 0.02719295911606862303, 1e-15,
8643        "iauFk45z", "r2000");
8644    vvd(r.delta, -0.1115766001565926892, 1e-13,
8645        "iauFk45z", "d2000");
8646 
8647 }
8648 
8649 /**
8650 **  - - - - - - - -
8651 **   t _ f k 5 2 4
8652 **  - - - - - - - -
8653 **
8654 **  Test iauFk524 function.
8655 **
8656 **  Returned:
8657 **     status    int         FALSE = success, TRUE = fail
8658 **
8659 **  Called:  iauFk524, vvd
8660 **
8661 **  This revision:  2018 December 6
8662 */
8663 @Test
8664 public void t_fk524()
8665 {
8666    double r2000, d2000, dr2000, dd2000, p2000, v2000;
8667 
8668 
8669    r2000 = 0.8723503576487275595;
8670    d2000 = -0.7517076365138887672;
8671    dr2000 = 0.2019447755430472323e-4;
8672    dd2000 = 0.3541563940505160433e-5;
8673    p2000 = 0.1559;
8674    v2000 = 86.87;
8675 
8676    CatalogCoords r = jauFk524(r2000, d2000, dr2000, dd2000, p2000, v2000);
8677 
8678    vvd(r.pos.alpha, 0.8636359659799603487, 1e-13,
8679        "iauFk524", "r1950");
8680    vvd(r.pos.delta, -0.7550281733160843059, 1e-13,
8681        "iauFk524", "d1950");
8682    vvd(r.pm.alpha, 0.2023628192747172486e-4, 1e-17,
8683        "iauFk524", "dr1950");
8684    vvd(r.pm.delta, 0.3624459754935334718e-5, 1e-18,
8685        "iauFk524", "dd1950");
8686    vvd(r.px, 0.1560079963299390241, 1e-13,
8687        "iauFk524", "p1950");
8688    vvd(r.rv, 86.79606353469163751, 1e-11, "iauFk524", "v1950");
8689 
8690 }
8691 
8692 /**
8693 **  - - - - - - - -
8694 **   t _ f k 5 4 z
8695 **  - - - - - - - -
8696 **
8697 **  Test iauFk54z function.
8698 **
8699 **  Returned:
8700 **     status    int         FALSE = success, TRUE = fail
8701 **
8702 **  Called:  iauFk54z, vvd
8703 **
8704 **  This revision:  2018 December 6
8705 */
8706 @Test
8707 public void t_fk54z()
8708 {
8709    double r2000, d2000, bepoch;
8710 
8711 
8712    r2000 = 0.02719026625066316119;
8713    d2000 = -0.1115815170738754813;
8714    bepoch = 1954.677308160316374;
8715 
8716    CatalogCoords r = jauFk54z(r2000, d2000, bepoch);
8717 
8718    vvd(r.pos.alpha, 0.01602015588390065476, 1e-14,
8719        "iauFk54z", "r1950");
8720    vvd(r.pos.delta, -0.1164397101110765346, 1e-13,
8721        "iauFk54z", "d1950");
8722    vvd(r.pm.alpha, -0.1175712648471090704e-7, 1e-20,
8723        "iauFk54z", "dr1950");
8724    vvd(r.pm.delta, 0.2108109051316431056e-7, 1e-20,
8725        "iauFk54z", "dd1950");
8726    vvd(r.px, 0, 1e-13,
8727        "iauFk54z", "p1950");
8728    vvd(r.rv, 0, 1e-11, "iauFk54z", "v1950");
8729 
8730 
8731 }
8732 
8733 /**
8734 **  - - - - - - - - -
8735 **   t _ a t c c 1 3
8736 **  - - - - - - - - -
8737 **
8738 **  Test iauAtcc13 function.
8739 **
8740 **  Returned:
8741 **     status    int         FALSE = success, TRUE = fail
8742 **
8743 **  Called:  iauAtcc13, vvd
8744 **
8745 **  This revision:  2021 April 18
8746 */
8747 @Test
8748 public void t_atcc13()
8749 {
8750    double rc, dc, pr, pd, px, rv, date1, date2;
8751 
8752 
8753    rc = 2.71;
8754    dc = 0.174;
8755    pr = 1e-5;
8756    pd = 5e-6;
8757    px = 0.1;
8758    rv = 55.0;
8759    date1 = 2456165.5;
8760    date2 = 0.401182685;
8761 
8762    SphericalCoordinate co = jauAtcc13(rc, dc, pr, pd, px, rv, date1, date2);
8763 
8764    vvd(co.alpha,  2.710126504531372384, 1e-12,
8765            "iauAtcc13", "ra");
8766    vvd(co.delta, 0.1740632537628350152, 1e-12,
8767            "iauAtcc13", "da");
8768 
8769 }
8770 
8771 /**
8772 **  - - - - - - - -
8773 **   t _ a t c c q
8774 **  - - - - - - - -
8775 **
8776 **  Test iauAtccq function.
8777 **
8778 **  Returned:
8779 **     status    int         FALSE = success, TRUE = fail
8780 **
8781 **  Called:  iauApci13, iauAtccq, vvd
8782 **
8783 **  This revision:  2021 April 18
8784 */
8785 @Test
8786 public  void t_atccq()
8787 {
8788    double date1, date2, eo, rc, dc, pr, pd, px, rv;
8789    Astrom astrom = new Astrom();
8790 
8791    date1 = 2456165.5;
8792    date2 = 0.401182685;
8793    eo = jauApci13(date1, date2, astrom);
8794    rc = 2.71;
8795    dc = 0.174;
8796    pr = 1e-5;
8797    pd = 5e-6;
8798    px = 0.1;
8799    rv = 55.0;
8800 
8801    SphericalCoordinate co = jauAtccq(rc, dc, pr, pd, px, rv, astrom);
8802 
8803    vvd(co.alpha, 2.710126504531372384, 1e-12, "iauAtccq", "ra");
8804    vvd(co.delta, 0.1740632537628350152, 1e-12, "iauAtccq", "da");
8805 
8806 }
8807 
8808 /**
8809 **  - - - - - - - - -
8810 **   t _ m o o n 9 8
8811 **  - - - - - - - - -
8812 **
8813 **  Test iauMoon98 function.
8814 **
8815 **  Returned:
8816 **     status    int         FALSE = success, TRUE = fail
8817 **
8818 **  Called:  iauMoon98, vvd, viv
8819 **
8820 **  This revision:  2021 April 12
8821 */
8822 @Test
8823 public void t_moon98()
8824 {
8825    double pv[][] = jauMoon98(2400000.5, 43999.9);
8826 
8827    vvd(pv[0][0], -0.2601295959971044180e-2, 1e-11,
8828        "iauMoon98", "x 4");
8829    vvd(pv[0][1], 0.6139750944302742189e-3, 1e-11,
8830        "iauMoon98", "y 4");
8831    vvd(pv[0][2], 0.2640794528229828909e-3, 1e-11,
8832        "iauMoon98", "z 4");
8833 
8834    vvd(pv[1][0], -0.1244321506649895021e-3, 1e-11,
8835        "iauMoon98", "xd 4");
8836    vvd(pv[1][1], -0.5219076942678119398e-3, 1e-11,
8837        "iauMoon98", "yd 4");
8838    vvd(pv[1][2], -0.1716132214378462047e-3, 1e-11,
8839        "iauMoon98", "zd 4");
8840 
8841 }
8842 //end of tests
8843 }
8844 
8845 /*
8846  * Copyright © 2018 Paul Harrison, University of Manchester.
8847  * 
8848  * This JSOFA software is derived from the official C release of the "Standards Of Fundamental Astronomy" (SOFA) library 
8849  * of the International Astronomical Union. The intention is to reproduce the functionality and algorithms of 
8850  * the official SOFA library in a pure Java form.
8851  * 
8852  * The responsibility for the maintenance and supply of the JSOFA library lies with the author (not the IAU SOFA Board), 
8853  * However, The JSOFA software is provided "as is" and the author makes no warranty as to its use or performance. 
8854  * The author does not and cannot warrant the performance or results which the user may obtain by using the JSOFA software. 
8855  * The author makes no warranties, express or implied, as to non-infringement of third party rights, merchantability,
8856  * or fitness for any particular purpose. In no event will the author be liable to the user for any consequential, 
8857  * incidental, or special damages, including any lost profits or lost savings, even if the author has been advised
8858  * of such damages, or for any claim by any third party.
8859  * 
8860  * Other conditions of the original license (reproduced below) are carried over as applicable.
8861  */
8862 
8863 /*----------------------------------------------------------------------
8864 **
8865 **  Copyright (C) 2018
8866 **  Standards Of Fundamental Astronomy Board
8867 **  of the International Astronomical Union.
8868 **
8869 **  =====================
8870 **  SOFA Software License
8871 **  =====================
8872 **
8873 **  NOTICE TO USER:
8874 **
8875 **  BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING TERMS AND CONDITIONS
8876 **  WHICH APPLY TO ITS USE.
8877 **
8878 **  1. The Software is owned by the IAU SOFA Board ("SOFA").
8879 **
8880 **  2. Permission is granted to anyone to use the SOFA software for any
8881 **     purpose, including commercial applications, free of charge and
8882 **     without payment of royalties, subject to the conditions and
8883 **     restrictions listed below.
8884 **
8885 **  3. You (the user) may copy and distribute SOFA source code to others,
8886 **     and use and adapt its code and algorithms in your own software,
8887 **     on a world-wide, royalty-free basis.  That portion of your
8888 **     distribution that does not consist of intact and unchanged copies
8889 **     of SOFA source code files is a "derived work" that must comply
8890 **     with the following requirements:
8891 **
8892 **     a) Your work shall be marked or carry a statement that it
8893 **        (i) uses routines and computations derived by you from
8894 **        software provided by SOFA under license to you; and
8895 **        (ii) does not itself constitute software provided by and/or
8896 **        endorsed by SOFA.
8897 **
8898 **     b) The source code of your derived work must contain descriptions
8899 **        of how the derived work is based upon, contains and/or differs
8900 **        from the original SOFA software.
8901 **
8902 **     c) The name(s) of all routine(s) in your derived work shall not
8903 **        include the prefix "iau".
8904 **
8905 **     d) The origin of the SOFA components of your derived work must
8906 **        not be misrepresented;  you must not claim that you wrote the
8907 **        original software, nor file a patent application for SOFA
8908 **        software or algorithms embedded in the SOFA software.
8909 **
8910 **     e) These requirements must be reproduced intact in any source
8911 **        distribution and shall apply to anyone to whom you have
8912 **        granted a further right to modify the source code of your
8913 **        derived work.
8914 **
8915 **     Note that, as originally distributed, the SOFA software is
8916 **     intended to be a definitive implementation of the IAU standards,
8917 **     and consequently third-party modifications are discouraged.  All
8918 **     variations, no matter how minor, must be explicitly marked as
8919 **     such, as explained above.
8920 **
8921 **  4. In any published work or commercial products which includes
8922 **     results achieved by using the SOFA software, you shall
8923 **     acknowledge that the SOFA software was used in obtaining those
8924 **     results.
8925 **
8926 **  5. You shall not cause the SOFA software to be brought into
8927 **     disrepute, either by misuse, or use for inappropriate tasks, or
8928 **     by inappropriate modification.
8929 **
8930 **  6. The SOFA software is provided "as is" and SOFA makes no warranty
8931 **     as to its use or performance.   SOFA does not and cannot warrant
8932 **     the performance or results which the user may obtain by using the
8933 **     SOFA software.  SOFA makes no warranties, express or implied, as
8934 **     to non-infringement of third party rights, merchantability, or
8935 **     fitness for any particular purpose.  In no event will SOFA be
8936 **     liable to the user for any consequential, incidental, or special
8937 **     damages, including any lost profits or lost savings, even if a
8938 **     SOFA representative has been advised of such damages, or for any
8939 **     claim by any third party.
8940 **
8941 **  7. The provision of any version of the SOFA software under the terms
8942 **     and conditions specified herein does not imply that future
8943 **     versions will also be made available under the same terms and
8944 **     conditions.
8945 **
8946 **  Correspondence concerning SOFA software should be addressed as
8947 **  follows:
8948 **
8949 **      By email:  sofa@ukho.gov.uk
8950 **      By post:   IAU SOFA Center
8951 **                 HM Nautical Almanac Office
8952 **                 UK Hydrographic Office
8953 **                 Admiralty Way, Taunton
8954 **                 Somerset, TA1 2DN
8955 **                 United Kingdom
8956 **
8957 **--------------------------------------------------------------------*/
8958 
8959 
8960 /*
8961  * $Log$
8962  */