Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.ALGLIB-2.5.0/ALGLIB-2.5.0/mannwhitneyu.cs @ 5229

Last change on this file since 5229 was 3839, checked in by mkommend, 14 years ago

implemented first version of LR (ticket #1012)

File size: 190.3 KB
Line 
1/*************************************************************************
2Copyright (c) 2007, Sergey Bochkanov (ALGLIB project).
3
4>>> SOURCE LICENSE >>>
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation (www.fsf.org); either version 2 of the
8License, or (at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13GNU General Public License for more details.
14
15A copy of the GNU General Public License is available at
16http://www.fsf.org/licensing/licenses
17
18>>> END OF LICENSE >>>
19*************************************************************************/
20
21using System;
22
23namespace alglib
24{
25    public class mannwhitneyu
26    {
27        /*************************************************************************
28        Mann-Whitney U-test
29
30        This test checks hypotheses about whether X  and  Y  are  samples  of  two
31        continuous distributions of the same shape  and  same  median  or  whether
32        their medians are different.
33
34        The following tests are performed:
35            * two-tailed test (null hypothesis - the medians are equal)
36            * left-tailed test (null hypothesis - the median of the  first  sample
37              is greater than or equal to the median of the second sample)
38            * right-tailed test (null hypothesis - the median of the first  sample
39              is less than or equal to the median of the second sample).
40
41        Requirements:
42            * the samples are independent
43            * X and Y are continuous distributions (or discrete distributions well-
44              approximating continuous distributions)
45            * distributions of X and Y have the  same  shape.  The  only  possible
46              difference is their position (i.e. the value of the median)
47            * the number of elements in each sample is not less than 5
48            * the scale of measurement should be ordinal, interval or ratio  (i.e.
49              the test could not be applied to nominal variables).
50
51        The test is non-parametric and doesn't require distributions to be normal.
52
53        Input parameters:
54            X   -   sample 1. Array whose index goes from 0 to N-1.
55            N   -   size of the sample. N>=5
56            Y   -   sample 2. Array whose index goes from 0 to M-1.
57            M   -   size of the sample. M>=5
58
59        Output parameters:
60            BothTails   -   p-value for two-tailed test.
61                            If BothTails is less than the given significance level
62                            the null hypothesis is rejected.
63            LeftTail    -   p-value for left-tailed test.
64                            If LeftTail is less than the given significance level,
65                            the null hypothesis is rejected.
66            RightTail   -   p-value for right-tailed test.
67                            If RightTail is less than the given significance level
68                            the null hypothesis is rejected.
69
70        To calculate p-values, special approximation is used. This method lets  us
71        calculate p-values with satisfactory  accuracy  in  interval  [0.0001, 1].
72        There is no approximation outside the [0.0001, 1] interval. Therefore,  if
73        the significance level outlies this interval, the test returns 0.0001.
74
75        Relative precision of approximation of p-value:
76
77        N          M          Max.err.   Rms.err.
78        5..10      N..10      1.4e-02    6.0e-04
79        5..10      N..100     2.2e-02    5.3e-06
80        10..15     N..15      1.0e-02    3.2e-04
81        10..15     N..100     1.0e-02    2.2e-05
82        15..100    N..100     6.1e-03    2.7e-06
83
84        For N,M>100 accuracy checks weren't put into  practice,  but  taking  into
85        account characteristics of asymptotic approximation used, precision should
86        not be sharply different from the values for interval [5, 100].
87
88          -- ALGLIB --
89             Copyright 09.04.2007 by Bochkanov Sergey
90        *************************************************************************/
91        public static void mannwhitneyutest(ref double[] x,
92            int n,
93            ref double[] y,
94            int m,
95            ref double bothtails,
96            ref double lefttail,
97            ref double righttail)
98        {
99            int i = 0;
100            int j = 0;
101            int k = 0;
102            int t = 0;
103            double tmp = 0;
104            int tmpi = 0;
105            int ns = 0;
106            double[] r = new double[0];
107            int[] c = new int[0];
108            double u = 0;
109            double p = 0;
110            double mp = 0;
111            double s = 0;
112            double sigma = 0;
113            double mu = 0;
114            int tiecount = 0;
115            int[] tiesize = new int[0];
116
117           
118            //
119            // Prepare
120            //
121            if( n<=4 | m<=4 )
122            {
123                bothtails = 1.0;
124                lefttail = 1.0;
125                righttail = 1.0;
126                return;
127            }
128            ns = n+m;
129            r = new double[ns-1+1];
130            c = new int[ns-1+1];
131            for(i=0; i<=n-1; i++)
132            {
133                r[i] = x[i];
134                c[i] = 0;
135            }
136            for(i=0; i<=m-1; i++)
137            {
138                r[n+i] = y[i];
139                c[n+i] = 1;
140            }
141           
142            //
143            // sort {R, C}
144            //
145            if( ns!=1 )
146            {
147                i = 2;
148                do
149                {
150                    t = i;
151                    while( t!=1 )
152                    {
153                        k = t/2;
154                        if( (double)(r[k-1])>=(double)(r[t-1]) )
155                        {
156                            t = 1;
157                        }
158                        else
159                        {
160                            tmp = r[k-1];
161                            r[k-1] = r[t-1];
162                            r[t-1] = tmp;
163                            tmpi = c[k-1];
164                            c[k-1] = c[t-1];
165                            c[t-1] = tmpi;
166                            t = k;
167                        }
168                    }
169                    i = i+1;
170                }
171                while( i<=ns );
172                i = ns-1;
173                do
174                {
175                    tmp = r[i];
176                    r[i] = r[0];
177                    r[0] = tmp;
178                    tmpi = c[i];
179                    c[i] = c[0];
180                    c[0] = tmpi;
181                    t = 1;
182                    while( t!=0 )
183                    {
184                        k = 2*t;
185                        if( k>i )
186                        {
187                            t = 0;
188                        }
189                        else
190                        {
191                            if( k<i )
192                            {
193                                if( (double)(r[k])>(double)(r[k-1]) )
194                                {
195                                    k = k+1;
196                                }
197                            }
198                            if( (double)(r[t-1])>=(double)(r[k-1]) )
199                            {
200                                t = 0;
201                            }
202                            else
203                            {
204                                tmp = r[k-1];
205                                r[k-1] = r[t-1];
206                                r[t-1] = tmp;
207                                tmpi = c[k-1];
208                                c[k-1] = c[t-1];
209                                c[t-1] = tmpi;
210                                t = k;
211                            }
212                        }
213                    }
214                    i = i-1;
215                }
216                while( i>=1 );
217            }
218           
219            //
220            // compute tied ranks
221            //
222            i = 0;
223            tiecount = 0;
224            tiesize = new int[ns-1+1];
225            while( i<=ns-1 )
226            {
227                j = i+1;
228                while( j<=ns-1 )
229                {
230                    if( (double)(r[j])!=(double)(r[i]) )
231                    {
232                        break;
233                    }
234                    j = j+1;
235                }
236                for(k=i; k<=j-1; k++)
237                {
238                    r[k] = 1+((double)(i+j-1))/(double)(2);
239                }
240                tiesize[tiecount] = j-i;
241                tiecount = tiecount+1;
242                i = j;
243            }
244           
245            //
246            // Compute U
247            //
248            u = 0;
249            for(i=0; i<=ns-1; i++)
250            {
251                if( c[i]==0 )
252                {
253                    u = u+r[i];
254                }
255            }
256            u = n*m+n*(n+1)/2-u;
257           
258            //
259            // Result
260            //
261            mu = (double)(n*m)/(double)(2);
262            tmp = ns*(AP.Math.Sqr(ns)-1)/12;
263            for(i=0; i<=tiecount-1; i++)
264            {
265                tmp = tmp-tiesize[i]*(AP.Math.Sqr(tiesize[i])-1)/12;
266            }
267            sigma = Math.Sqrt((double)(m*n)/(double)(ns)/(ns-1)*tmp);
268            s = (u-mu)/sigma;
269            if( (double)(s)<=(double)(0) )
270            {
271                p = Math.Exp(usigma(-((u-mu)/sigma), n, m));
272                mp = 1-Math.Exp(usigma(-((u-1-mu)/sigma), n, m));
273            }
274            else
275            {
276                mp = Math.Exp(usigma((u-mu)/sigma, n, m));
277                p = 1-Math.Exp(usigma((u+1-mu)/sigma, n, m));
278            }
279            bothtails = Math.Max(2*Math.Min(p, mp), 1.0E-4);
280            lefttail = Math.Max(mp, 1.0E-4);
281            righttail = Math.Max(p, 1.0E-4);
282        }
283
284
285        /*************************************************************************
286        Sequential Chebyshev interpolation.
287        *************************************************************************/
288        private static void ucheb(double x,
289            double c,
290            ref double tj,
291            ref double tj1,
292            ref double r)
293        {
294            double t = 0;
295
296            r = r+c*tj;
297            t = 2*x*tj1-tj;
298            tj = tj1;
299            tj1 = t;
300        }
301
302
303        /*************************************************************************
304        Three-point polynomial interpolation.
305        *************************************************************************/
306        private static double uninterpolate(double p1,
307            double p2,
308            double p3,
309            int n)
310        {
311            double result = 0;
312            double t1 = 0;
313            double t2 = 0;
314            double t3 = 0;
315            double t = 0;
316            double p12 = 0;
317            double p23 = 0;
318
319            t1 = 1.0/15.0;
320            t2 = 1.0/30.0;
321            t3 = 1.0/100.0;
322            t = 1.0/n;
323            p12 = ((t-t2)*p1+(t1-t)*p2)/(t1-t2);
324            p23 = ((t-t3)*p2+(t2-t)*p3)/(t2-t3);
325            result = ((t-t3)*p12+(t1-t)*p23)/(t1-t3);
326            return result;
327        }
328
329
330        /*************************************************************************
331        Tail(0, N1, N2)
332        *************************************************************************/
333        private static double usigma000(int n1,
334            int n2)
335        {
336            double result = 0;
337            double p1 = 0;
338            double p2 = 0;
339            double p3 = 0;
340
341            p1 = uninterpolate(-6.76984e-01, -6.83700e-01, -6.89873e-01, n2);
342            p2 = uninterpolate(-6.83700e-01, -6.87311e-01, -6.90957e-01, n2);
343            p3 = uninterpolate(-6.89873e-01, -6.90957e-01, -6.92175e-01, n2);
344            result = uninterpolate(p1, p2, p3, n1);
345            return result;
346        }
347
348
349        /*************************************************************************
350        Tail(0.75, N1, N2)
351        *************************************************************************/
352        private static double usigma075(int n1,
353            int n2)
354        {
355            double result = 0;
356            double p1 = 0;
357            double p2 = 0;
358            double p3 = 0;
359
360            p1 = uninterpolate(-1.44500e+00, -1.45906e+00, -1.47063e+00, n2);
361            p2 = uninterpolate(-1.45906e+00, -1.46856e+00, -1.47644e+00, n2);
362            p3 = uninterpolate(-1.47063e+00, -1.47644e+00, -1.48100e+00, n2);
363            result = uninterpolate(p1, p2, p3, n1);
364            return result;
365        }
366
367
368        /*************************************************************************
369        Tail(1.5, N1, N2)
370        *************************************************************************/
371        private static double usigma150(int n1,
372            int n2)
373        {
374            double result = 0;
375            double p1 = 0;
376            double p2 = 0;
377            double p3 = 0;
378
379            p1 = uninterpolate(-2.65380e+00, -2.67352e+00, -2.69011e+00, n2);
380            p2 = uninterpolate(-2.67352e+00, -2.68591e+00, -2.69659e+00, n2);
381            p3 = uninterpolate(-2.69011e+00, -2.69659e+00, -2.70192e+00, n2);
382            result = uninterpolate(p1, p2, p3, n1);
383            return result;
384        }
385
386
387        /*************************************************************************
388        Tail(2.25, N1, N2)
389        *************************************************************************/
390        private static double usigma225(int n1,
391            int n2)
392        {
393            double result = 0;
394            double p1 = 0;
395            double p2 = 0;
396            double p3 = 0;
397
398            p1 = uninterpolate(-4.41465e+00, -4.42260e+00, -4.43702e+00, n2);
399            p2 = uninterpolate(-4.42260e+00, -4.41639e+00, -4.41928e+00, n2);
400            p3 = uninterpolate(-4.43702e+00, -4.41928e+00, -4.41030e+00, n2);
401            result = uninterpolate(p1, p2, p3, n1);
402            return result;
403        }
404
405
406        /*************************************************************************
407        Tail(3.0, N1, N2)
408        *************************************************************************/
409        private static double usigma300(int n1,
410            int n2)
411        {
412            double result = 0;
413            double p1 = 0;
414            double p2 = 0;
415            double p3 = 0;
416
417            p1 = uninterpolate(-6.89839e+00, -6.83477e+00, -6.82340e+00, n2);
418            p2 = uninterpolate(-6.83477e+00, -6.74559e+00, -6.71117e+00, n2);
419            p3 = uninterpolate(-6.82340e+00, -6.71117e+00, -6.64929e+00, n2);
420            result = uninterpolate(p1, p2, p3, n1);
421            return result;
422        }
423
424
425        /*************************************************************************
426        Tail(3.33, N1, N2)
427        *************************************************************************/
428        private static double usigma333(int n1,
429            int n2)
430        {
431            double result = 0;
432            double p1 = 0;
433            double p2 = 0;
434            double p3 = 0;
435
436            p1 = uninterpolate(-8.31272e+00, -8.17096e+00, -8.13125e+00, n2);
437            p2 = uninterpolate(-8.17096e+00, -8.00156e+00, -7.93245e+00, n2);
438            p3 = uninterpolate(-8.13125e+00, -7.93245e+00, -7.82502e+00, n2);
439            result = uninterpolate(p1, p2, p3, n1);
440            return result;
441        }
442
443
444        /*************************************************************************
445        Tail(3.66, N1, N2)
446        *************************************************************************/
447        private static double usigma367(int n1,
448            int n2)
449        {
450            double result = 0;
451            double p1 = 0;
452            double p2 = 0;
453            double p3 = 0;
454
455            p1 = uninterpolate(-9.98837e+00, -9.70844e+00, -9.62087e+00, n2);
456            p2 = uninterpolate(-9.70844e+00, -9.41156e+00, -9.28998e+00, n2);
457            p3 = uninterpolate(-9.62087e+00, -9.28998e+00, -9.11686e+00, n2);
458            result = uninterpolate(p1, p2, p3, n1);
459            return result;
460        }
461
462
463        /*************************************************************************
464        Tail(4.0, N1, N2)
465        *************************************************************************/
466        private static double usigma400(int n1,
467            int n2)
468        {
469            double result = 0;
470            double p1 = 0;
471            double p2 = 0;
472            double p3 = 0;
473
474            p1 = uninterpolate(-1.20250e+01, -1.14911e+01, -1.13231e+01, n2);
475            p2 = uninterpolate(-1.14911e+01, -1.09927e+01, -1.07937e+01, n2);
476            p3 = uninterpolate(-1.13231e+01, -1.07937e+01, -1.05285e+01, n2);
477            result = uninterpolate(p1, p2, p3, n1);
478            return result;
479        }
480
481
482        /*************************************************************************
483        Tail(S, 5, 5)
484        *************************************************************************/
485        private static double utbln5n5(double s)
486        {
487            double result = 0;
488            double x = 0;
489            double tj = 0;
490            double tj1 = 0;
491
492            result = 0;
493            x = Math.Min(2*(s-0.000000e+00)/2.611165e+00-1, 1.0);
494            tj = 1;
495            tj1 = x;
496            ucheb(x, -2.596264e+00, ref tj, ref tj1, ref result);
497            ucheb(x, -2.412086e+00, ref tj, ref tj1, ref result);
498            ucheb(x, -4.858542e-01, ref tj, ref tj1, ref result);
499            ucheb(x, -5.614282e-02, ref tj, ref tj1, ref result);
500            ucheb(x, 3.372686e-03, ref tj, ref tj1, ref result);
501            ucheb(x, 8.524731e-03, ref tj, ref tj1, ref result);
502            ucheb(x, 4.435331e-03, ref tj, ref tj1, ref result);
503            ucheb(x, 1.284665e-03, ref tj, ref tj1, ref result);
504            ucheb(x, 4.184141e-03, ref tj, ref tj1, ref result);
505            ucheb(x, 5.298360e-03, ref tj, ref tj1, ref result);
506            ucheb(x, 7.447272e-04, ref tj, ref tj1, ref result);
507            ucheb(x, -3.938769e-03, ref tj, ref tj1, ref result);
508            ucheb(x, -4.276205e-03, ref tj, ref tj1, ref result);
509            ucheb(x, -1.138481e-03, ref tj, ref tj1, ref result);
510            ucheb(x, 8.684625e-04, ref tj, ref tj1, ref result);
511            ucheb(x, 1.558104e-03, ref tj, ref tj1, ref result);
512            return result;
513        }
514
515
516        /*************************************************************************
517        Tail(S, 5, 6)
518        *************************************************************************/
519        private static double utbln5n6(double s)
520        {
521            double result = 0;
522            double x = 0;
523            double tj = 0;
524            double tj1 = 0;
525
526            result = 0;
527            x = Math.Min(2*(s-0.000000e+00)/2.738613e+00-1, 1.0);
528            tj = 1;
529            tj1 = x;
530            ucheb(x, -2.810459e+00, ref tj, ref tj1, ref result);
531            ucheb(x, -2.684429e+00, ref tj, ref tj1, ref result);
532            ucheb(x, -5.712858e-01, ref tj, ref tj1, ref result);
533            ucheb(x, -8.009324e-02, ref tj, ref tj1, ref result);
534            ucheb(x, -6.644391e-03, ref tj, ref tj1, ref result);
535            ucheb(x, 6.034173e-03, ref tj, ref tj1, ref result);
536            ucheb(x, 4.953498e-03, ref tj, ref tj1, ref result);
537            ucheb(x, 3.279293e-03, ref tj, ref tj1, ref result);
538            ucheb(x, 3.563485e-03, ref tj, ref tj1, ref result);
539            ucheb(x, 4.971952e-03, ref tj, ref tj1, ref result);
540            ucheb(x, 3.506309e-03, ref tj, ref tj1, ref result);
541            ucheb(x, -1.541406e-04, ref tj, ref tj1, ref result);
542            ucheb(x, -3.283205e-03, ref tj, ref tj1, ref result);
543            ucheb(x, -3.016347e-03, ref tj, ref tj1, ref result);
544            ucheb(x, -1.221626e-03, ref tj, ref tj1, ref result);
545            ucheb(x, -1.286752e-03, ref tj, ref tj1, ref result);
546            return result;
547        }
548
549
550        /*************************************************************************
551        Tail(S, 5, 7)
552        *************************************************************************/
553        private static double utbln5n7(double s)
554        {
555            double result = 0;
556            double x = 0;
557            double tj = 0;
558            double tj1 = 0;
559
560            result = 0;
561            x = Math.Min(2*(s-0.000000e+00)/2.841993e+00-1, 1.0);
562            tj = 1;
563            tj1 = x;
564            ucheb(x, -2.994677e+00, ref tj, ref tj1, ref result);
565            ucheb(x, -2.923264e+00, ref tj, ref tj1, ref result);
566            ucheb(x, -6.506190e-01, ref tj, ref tj1, ref result);
567            ucheb(x, -1.054280e-01, ref tj, ref tj1, ref result);
568            ucheb(x, -1.794587e-02, ref tj, ref tj1, ref result);
569            ucheb(x, 1.726290e-03, ref tj, ref tj1, ref result);
570            ucheb(x, 4.534180e-03, ref tj, ref tj1, ref result);
571            ucheb(x, 4.517845e-03, ref tj, ref tj1, ref result);
572            ucheb(x, 3.904428e-03, ref tj, ref tj1, ref result);
573            ucheb(x, 3.882443e-03, ref tj, ref tj1, ref result);
574            ucheb(x, 3.482988e-03, ref tj, ref tj1, ref result);
575            ucheb(x, 2.114875e-03, ref tj, ref tj1, ref result);
576            ucheb(x, -1.515082e-04, ref tj, ref tj1, ref result);
577            ucheb(x, -1.996056e-03, ref tj, ref tj1, ref result);
578            ucheb(x, -2.293581e-03, ref tj, ref tj1, ref result);
579            ucheb(x, -2.349444e-03, ref tj, ref tj1, ref result);
580            return result;
581        }
582
583
584        /*************************************************************************
585        Tail(S, 5, 8)
586        *************************************************************************/
587        private static double utbln5n8(double s)
588        {
589            double result = 0;
590            double x = 0;
591            double tj = 0;
592            double tj1 = 0;
593
594            result = 0;
595            x = Math.Min(2*(s-0.000000e+00)/2.927700e+00-1, 1.0);
596            tj = 1;
597            tj1 = x;
598            ucheb(x, -3.155727e+00, ref tj, ref tj1, ref result);
599            ucheb(x, -3.135078e+00, ref tj, ref tj1, ref result);
600            ucheb(x, -7.247203e-01, ref tj, ref tj1, ref result);
601            ucheb(x, -1.309697e-01, ref tj, ref tj1, ref result);
602            ucheb(x, -2.993725e-02, ref tj, ref tj1, ref result);
603            ucheb(x, -3.567219e-03, ref tj, ref tj1, ref result);
604            ucheb(x, 3.383704e-03, ref tj, ref tj1, ref result);
605            ucheb(x, 5.002188e-03, ref tj, ref tj1, ref result);
606            ucheb(x, 4.487322e-03, ref tj, ref tj1, ref result);
607            ucheb(x, 3.443899e-03, ref tj, ref tj1, ref result);
608            ucheb(x, 2.688270e-03, ref tj, ref tj1, ref result);
609            ucheb(x, 2.600339e-03, ref tj, ref tj1, ref result);
610            ucheb(x, 1.874948e-03, ref tj, ref tj1, ref result);
611            ucheb(x, 1.811593e-04, ref tj, ref tj1, ref result);
612            ucheb(x, -1.072353e-03, ref tj, ref tj1, ref result);
613            ucheb(x, -2.659457e-03, ref tj, ref tj1, ref result);
614            return result;
615        }
616
617
618        /*************************************************************************
619        Tail(S, 5, 9)
620        *************************************************************************/
621        private static double utbln5n9(double s)
622        {
623            double result = 0;
624            double x = 0;
625            double tj = 0;
626            double tj1 = 0;
627
628            result = 0;
629            x = Math.Min(2*(s-0.000000e+00)/3.000000e+00-1, 1.0);
630            tj = 1;
631            tj1 = x;
632            ucheb(x, -3.298162e+00, ref tj, ref tj1, ref result);
633            ucheb(x, -3.325016e+00, ref tj, ref tj1, ref result);
634            ucheb(x, -7.939852e-01, ref tj, ref tj1, ref result);
635            ucheb(x, -1.563029e-01, ref tj, ref tj1, ref result);
636            ucheb(x, -4.222652e-02, ref tj, ref tj1, ref result);
637            ucheb(x, -9.195200e-03, ref tj, ref tj1, ref result);
638            ucheb(x, 1.445665e-03, ref tj, ref tj1, ref result);
639            ucheb(x, 5.204792e-03, ref tj, ref tj1, ref result);
640            ucheb(x, 4.775217e-03, ref tj, ref tj1, ref result);
641            ucheb(x, 3.527781e-03, ref tj, ref tj1, ref result);
642            ucheb(x, 2.221948e-03, ref tj, ref tj1, ref result);
643            ucheb(x, 2.242968e-03, ref tj, ref tj1, ref result);
644            ucheb(x, 2.607959e-03, ref tj, ref tj1, ref result);
645            ucheb(x, 1.771285e-03, ref tj, ref tj1, ref result);
646            ucheb(x, 6.694026e-04, ref tj, ref tj1, ref result);
647            ucheb(x, -1.481190e-03, ref tj, ref tj1, ref result);
648            return result;
649        }
650
651
652        /*************************************************************************
653        Tail(S, 5, 10)
654        *************************************************************************/
655        private static double utbln5n10(double s)
656        {
657            double result = 0;
658            double x = 0;
659            double tj = 0;
660            double tj1 = 0;
661
662            result = 0;
663            x = Math.Min(2*(s-0.000000e+00)/3.061862e+00-1, 1.0);
664            tj = 1;
665            tj1 = x;
666            ucheb(x, -3.425360e+00, ref tj, ref tj1, ref result);
667            ucheb(x, -3.496710e+00, ref tj, ref tj1, ref result);
668            ucheb(x, -8.587658e-01, ref tj, ref tj1, ref result);
669            ucheb(x, -1.812005e-01, ref tj, ref tj1, ref result);
670            ucheb(x, -5.427637e-02, ref tj, ref tj1, ref result);
671            ucheb(x, -1.515702e-02, ref tj, ref tj1, ref result);
672            ucheb(x, -5.406867e-04, ref tj, ref tj1, ref result);
673            ucheb(x, 4.796295e-03, ref tj, ref tj1, ref result);
674            ucheb(x, 5.237591e-03, ref tj, ref tj1, ref result);
675            ucheb(x, 3.654249e-03, ref tj, ref tj1, ref result);
676            ucheb(x, 2.181165e-03, ref tj, ref tj1, ref result);
677            ucheb(x, 2.011665e-03, ref tj, ref tj1, ref result);
678            ucheb(x, 2.417927e-03, ref tj, ref tj1, ref result);
679            ucheb(x, 2.534880e-03, ref tj, ref tj1, ref result);
680            ucheb(x, 1.791255e-03, ref tj, ref tj1, ref result);
681            ucheb(x, 1.871512e-05, ref tj, ref tj1, ref result);
682            return result;
683        }
684
685
686        /*************************************************************************
687        Tail(S, 5, 11)
688        *************************************************************************/
689        private static double utbln5n11(double s)
690        {
691            double result = 0;
692            double x = 0;
693            double tj = 0;
694            double tj1 = 0;
695
696            result = 0;
697            x = Math.Min(2*(s-0.000000e+00)/3.115427e+00-1, 1.0);
698            tj = 1;
699            tj1 = x;
700            ucheb(x, -3.539959e+00, ref tj, ref tj1, ref result);
701            ucheb(x, -3.652998e+00, ref tj, ref tj1, ref result);
702            ucheb(x, -9.196503e-01, ref tj, ref tj1, ref result);
703            ucheb(x, -2.054363e-01, ref tj, ref tj1, ref result);
704            ucheb(x, -6.618848e-02, ref tj, ref tj1, ref result);
705            ucheb(x, -2.109411e-02, ref tj, ref tj1, ref result);
706            ucheb(x, -2.786668e-03, ref tj, ref tj1, ref result);
707            ucheb(x, 4.215648e-03, ref tj, ref tj1, ref result);
708            ucheb(x, 5.484220e-03, ref tj, ref tj1, ref result);
709            ucheb(x, 3.935991e-03, ref tj, ref tj1, ref result);
710            ucheb(x, 2.396191e-03, ref tj, ref tj1, ref result);
711            ucheb(x, 1.894177e-03, ref tj, ref tj1, ref result);
712            ucheb(x, 2.206979e-03, ref tj, ref tj1, ref result);
713            ucheb(x, 2.519055e-03, ref tj, ref tj1, ref result);
714            ucheb(x, 2.210326e-03, ref tj, ref tj1, ref result);
715            ucheb(x, 1.189679e-03, ref tj, ref tj1, ref result);
716            return result;
717        }
718
719
720        /*************************************************************************
721        Tail(S, 5, 12)
722        *************************************************************************/
723        private static double utbln5n12(double s)
724        {
725            double result = 0;
726            double x = 0;
727            double tj = 0;
728            double tj1 = 0;
729
730            result = 0;
731            x = Math.Min(2*(s-0.000000e+00)/3.162278e+00-1, 1.0);
732            tj = 1;
733            tj1 = x;
734            ucheb(x, -3.644007e+00, ref tj, ref tj1, ref result);
735            ucheb(x, -3.796173e+00, ref tj, ref tj1, ref result);
736            ucheb(x, -9.771177e-01, ref tj, ref tj1, ref result);
737            ucheb(x, -2.290043e-01, ref tj, ref tj1, ref result);
738            ucheb(x, -7.794686e-02, ref tj, ref tj1, ref result);
739            ucheb(x, -2.702110e-02, ref tj, ref tj1, ref result);
740            ucheb(x, -5.185959e-03, ref tj, ref tj1, ref result);
741            ucheb(x, 3.416259e-03, ref tj, ref tj1, ref result);
742            ucheb(x, 5.592056e-03, ref tj, ref tj1, ref result);
743            ucheb(x, 4.201530e-03, ref tj, ref tj1, ref result);
744            ucheb(x, 2.754365e-03, ref tj, ref tj1, ref result);
745            ucheb(x, 1.978945e-03, ref tj, ref tj1, ref result);
746            ucheb(x, 2.012032e-03, ref tj, ref tj1, ref result);
747            ucheb(x, 2.304579e-03, ref tj, ref tj1, ref result);
748            ucheb(x, 2.100378e-03, ref tj, ref tj1, ref result);
749            ucheb(x, 1.728269e-03, ref tj, ref tj1, ref result);
750            return result;
751        }
752
753
754        /*************************************************************************
755        Tail(S, 5, 13)
756        *************************************************************************/
757        private static double utbln5n13(double s)
758        {
759            double result = 0;
760            double x = 0;
761            double tj = 0;
762            double tj1 = 0;
763
764            result = 0;
765            x = Math.Min(2*(s-0.000000e+00)/3.203616e+00-1, 1.0);
766            tj = 1;
767            tj1 = x;
768            ucheb(x, -3.739120e+00, ref tj, ref tj1, ref result);
769            ucheb(x, -3.928117e+00, ref tj, ref tj1, ref result);
770            ucheb(x, -1.031605e+00, ref tj, ref tj1, ref result);
771            ucheb(x, -2.519403e-01, ref tj, ref tj1, ref result);
772            ucheb(x, -8.962648e-02, ref tj, ref tj1, ref result);
773            ucheb(x, -3.292183e-02, ref tj, ref tj1, ref result);
774            ucheb(x, -7.809293e-03, ref tj, ref tj1, ref result);
775            ucheb(x, 2.465156e-03, ref tj, ref tj1, ref result);
776            ucheb(x, 5.456278e-03, ref tj, ref tj1, ref result);
777            ucheb(x, 4.446055e-03, ref tj, ref tj1, ref result);
778            ucheb(x, 3.109490e-03, ref tj, ref tj1, ref result);
779            ucheb(x, 2.218256e-03, ref tj, ref tj1, ref result);
780            ucheb(x, 1.941479e-03, ref tj, ref tj1, ref result);
781            ucheb(x, 2.058603e-03, ref tj, ref tj1, ref result);
782            ucheb(x, 1.824402e-03, ref tj, ref tj1, ref result);
783            ucheb(x, 1.830947e-03, ref tj, ref tj1, ref result);
784            return result;
785        }
786
787
788        /*************************************************************************
789        Tail(S, 5, 14)
790        *************************************************************************/
791        private static double utbln5n14(double s)
792        {
793            double result = 0;
794            double x = 0;
795            double tj = 0;
796            double tj1 = 0;
797
798            result = 0;
799            x = Math.Min(2*(s-0.000000e+00)/3.240370e+00-1, 1.0);
800            tj = 1;
801            tj1 = x;
802            ucheb(x, -3.826559e+00, ref tj, ref tj1, ref result);
803            ucheb(x, -4.050370e+00, ref tj, ref tj1, ref result);
804            ucheb(x, -1.083408e+00, ref tj, ref tj1, ref result);
805            ucheb(x, -2.743164e-01, ref tj, ref tj1, ref result);
806            ucheb(x, -1.012030e-01, ref tj, ref tj1, ref result);
807            ucheb(x, -3.884686e-02, ref tj, ref tj1, ref result);
808            ucheb(x, -1.059656e-02, ref tj, ref tj1, ref result);
809            ucheb(x, 1.327521e-03, ref tj, ref tj1, ref result);
810            ucheb(x, 5.134026e-03, ref tj, ref tj1, ref result);
811            ucheb(x, 4.584201e-03, ref tj, ref tj1, ref result);
812            ucheb(x, 3.440618e-03, ref tj, ref tj1, ref result);
813            ucheb(x, 2.524133e-03, ref tj, ref tj1, ref result);
814            ucheb(x, 1.990007e-03, ref tj, ref tj1, ref result);
815            ucheb(x, 1.887334e-03, ref tj, ref tj1, ref result);
816            ucheb(x, 1.534977e-03, ref tj, ref tj1, ref result);
817            ucheb(x, 1.705395e-03, ref tj, ref tj1, ref result);
818            return result;
819        }
820
821
822        /*************************************************************************
823        Tail(S, 5, 15)
824        *************************************************************************/
825        private static double utbln5n15(double s)
826        {
827            double result = 0;
828            double x = 0;
829            double tj = 0;
830            double tj1 = 0;
831
832            result = 0;
833            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
834            tj = 1;
835            tj1 = x;
836            ucheb(x, -3.851572e+00, ref tj, ref tj1, ref result);
837            ucheb(x, -4.082033e+00, ref tj, ref tj1, ref result);
838            ucheb(x, -1.095983e+00, ref tj, ref tj1, ref result);
839            ucheb(x, -2.814595e-01, ref tj, ref tj1, ref result);
840            ucheb(x, -1.073148e-01, ref tj, ref tj1, ref result);
841            ucheb(x, -4.420213e-02, ref tj, ref tj1, ref result);
842            ucheb(x, -1.517175e-02, ref tj, ref tj1, ref result);
843            ucheb(x, -2.344180e-03, ref tj, ref tj1, ref result);
844            ucheb(x, 2.371393e-03, ref tj, ref tj1, ref result);
845            ucheb(x, 2.711443e-03, ref tj, ref tj1, ref result);
846            ucheb(x, 2.228569e-03, ref tj, ref tj1, ref result);
847            ucheb(x, 1.683483e-03, ref tj, ref tj1, ref result);
848            ucheb(x, 1.267112e-03, ref tj, ref tj1, ref result);
849            ucheb(x, 1.156044e-03, ref tj, ref tj1, ref result);
850            ucheb(x, 9.131316e-04, ref tj, ref tj1, ref result);
851            ucheb(x, 1.301023e-03, ref tj, ref tj1, ref result);
852            return result;
853        }
854
855
856        /*************************************************************************
857        Tail(S, 5, 16)
858        *************************************************************************/
859        private static double utbln5n16(double s)
860        {
861            double result = 0;
862            double x = 0;
863            double tj = 0;
864            double tj1 = 0;
865
866            result = 0;
867            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
868            tj = 1;
869            tj1 = x;
870            ucheb(x, -3.852210e+00, ref tj, ref tj1, ref result);
871            ucheb(x, -4.077482e+00, ref tj, ref tj1, ref result);
872            ucheb(x, -1.091186e+00, ref tj, ref tj1, ref result);
873            ucheb(x, -2.797282e-01, ref tj, ref tj1, ref result);
874            ucheb(x, -1.084994e-01, ref tj, ref tj1, ref result);
875            ucheb(x, -4.667054e-02, ref tj, ref tj1, ref result);
876            ucheb(x, -1.843909e-02, ref tj, ref tj1, ref result);
877            ucheb(x, -5.456732e-03, ref tj, ref tj1, ref result);
878            ucheb(x, -5.039830e-04, ref tj, ref tj1, ref result);
879            ucheb(x, 4.723508e-04, ref tj, ref tj1, ref result);
880            ucheb(x, 3.940608e-04, ref tj, ref tj1, ref result);
881            ucheb(x, 1.478285e-04, ref tj, ref tj1, ref result);
882            ucheb(x, -1.649144e-04, ref tj, ref tj1, ref result);
883            ucheb(x, -4.237703e-04, ref tj, ref tj1, ref result);
884            ucheb(x, -4.707410e-04, ref tj, ref tj1, ref result);
885            ucheb(x, -1.874293e-04, ref tj, ref tj1, ref result);
886            return result;
887        }
888
889
890        /*************************************************************************
891        Tail(S, 5, 17)
892        *************************************************************************/
893        private static double utbln5n17(double s)
894        {
895            double result = 0;
896            double x = 0;
897            double tj = 0;
898            double tj1 = 0;
899
900            result = 0;
901            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
902            tj = 1;
903            tj1 = x;
904            ucheb(x, -3.851752e+00, ref tj, ref tj1, ref result);
905            ucheb(x, -4.071259e+00, ref tj, ref tj1, ref result);
906            ucheb(x, -1.084700e+00, ref tj, ref tj1, ref result);
907            ucheb(x, -2.758898e-01, ref tj, ref tj1, ref result);
908            ucheb(x, -1.073846e-01, ref tj, ref tj1, ref result);
909            ucheb(x, -4.684838e-02, ref tj, ref tj1, ref result);
910            ucheb(x, -1.964936e-02, ref tj, ref tj1, ref result);
911            ucheb(x, -6.782442e-03, ref tj, ref tj1, ref result);
912            ucheb(x, -1.956362e-03, ref tj, ref tj1, ref result);
913            ucheb(x, -5.984727e-04, ref tj, ref tj1, ref result);
914            ucheb(x, -5.196936e-04, ref tj, ref tj1, ref result);
915            ucheb(x, -5.558262e-04, ref tj, ref tj1, ref result);
916            ucheb(x, -8.690746e-04, ref tj, ref tj1, ref result);
917            ucheb(x, -1.364855e-03, ref tj, ref tj1, ref result);
918            ucheb(x, -1.401006e-03, ref tj, ref tj1, ref result);
919            ucheb(x, -1.546748e-03, ref tj, ref tj1, ref result);
920            return result;
921        }
922
923
924        /*************************************************************************
925        Tail(S, 5, 18)
926        *************************************************************************/
927        private static double utbln5n18(double s)
928        {
929            double result = 0;
930            double x = 0;
931            double tj = 0;
932            double tj1 = 0;
933
934            result = 0;
935            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
936            tj = 1;
937            tj1 = x;
938            ucheb(x, -3.850840e+00, ref tj, ref tj1, ref result);
939            ucheb(x, -4.064799e+00, ref tj, ref tj1, ref result);
940            ucheb(x, -1.077651e+00, ref tj, ref tj1, ref result);
941            ucheb(x, -2.712659e-01, ref tj, ref tj1, ref result);
942            ucheb(x, -1.049217e-01, ref tj, ref tj1, ref result);
943            ucheb(x, -4.571333e-02, ref tj, ref tj1, ref result);
944            ucheb(x, -1.929809e-02, ref tj, ref tj1, ref result);
945            ucheb(x, -6.752044e-03, ref tj, ref tj1, ref result);
946            ucheb(x, -1.949464e-03, ref tj, ref tj1, ref result);
947            ucheb(x, -3.896101e-04, ref tj, ref tj1, ref result);
948            ucheb(x, -4.614460e-05, ref tj, ref tj1, ref result);
949            ucheb(x, 1.384357e-04, ref tj, ref tj1, ref result);
950            ucheb(x, -6.489113e-05, ref tj, ref tj1, ref result);
951            ucheb(x, -6.445725e-04, ref tj, ref tj1, ref result);
952            ucheb(x, -8.945636e-04, ref tj, ref tj1, ref result);
953            ucheb(x, -1.424653e-03, ref tj, ref tj1, ref result);
954            return result;
955        }
956
957
958        /*************************************************************************
959        Tail(S, 5, 19)
960        *************************************************************************/
961        private static double utbln5n19(double s)
962        {
963            double result = 0;
964            double x = 0;
965            double tj = 0;
966            double tj1 = 0;
967
968            result = 0;
969            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
970            tj = 1;
971            tj1 = x;
972            ucheb(x, -3.850027e+00, ref tj, ref tj1, ref result);
973            ucheb(x, -4.059159e+00, ref tj, ref tj1, ref result);
974            ucheb(x, -1.071106e+00, ref tj, ref tj1, ref result);
975            ucheb(x, -2.669960e-01, ref tj, ref tj1, ref result);
976            ucheb(x, -1.022780e-01, ref tj, ref tj1, ref result);
977            ucheb(x, -4.442555e-02, ref tj, ref tj1, ref result);
978            ucheb(x, -1.851335e-02, ref tj, ref tj1, ref result);
979            ucheb(x, -6.433865e-03, ref tj, ref tj1, ref result);
980            ucheb(x, -1.514465e-03, ref tj, ref tj1, ref result);
981            ucheb(x, 1.332989e-04, ref tj, ref tj1, ref result);
982            ucheb(x, 8.606099e-04, ref tj, ref tj1, ref result);
983            ucheb(x, 1.341945e-03, ref tj, ref tj1, ref result);
984            ucheb(x, 1.402164e-03, ref tj, ref tj1, ref result);
985            ucheb(x, 1.039761e-03, ref tj, ref tj1, ref result);
986            ucheb(x, 5.512831e-04, ref tj, ref tj1, ref result);
987            ucheb(x, -3.284427e-05, ref tj, ref tj1, ref result);
988            return result;
989        }
990
991
992        /*************************************************************************
993        Tail(S, 5, 20)
994        *************************************************************************/
995        private static double utbln5n20(double s)
996        {
997            double result = 0;
998            double x = 0;
999            double tj = 0;
1000            double tj1 = 0;
1001
1002            result = 0;
1003            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1004            tj = 1;
1005            tj1 = x;
1006            ucheb(x, -3.849651e+00, ref tj, ref tj1, ref result);
1007            ucheb(x, -4.054729e+00, ref tj, ref tj1, ref result);
1008            ucheb(x, -1.065747e+00, ref tj, ref tj1, ref result);
1009            ucheb(x, -2.636243e-01, ref tj, ref tj1, ref result);
1010            ucheb(x, -1.003234e-01, ref tj, ref tj1, ref result);
1011            ucheb(x, -4.372789e-02, ref tj, ref tj1, ref result);
1012            ucheb(x, -1.831551e-02, ref tj, ref tj1, ref result);
1013            ucheb(x, -6.763090e-03, ref tj, ref tj1, ref result);
1014            ucheb(x, -1.830626e-03, ref tj, ref tj1, ref result);
1015            ucheb(x, -2.122384e-04, ref tj, ref tj1, ref result);
1016            ucheb(x, 8.108328e-04, ref tj, ref tj1, ref result);
1017            ucheb(x, 1.557983e-03, ref tj, ref tj1, ref result);
1018            ucheb(x, 1.945666e-03, ref tj, ref tj1, ref result);
1019            ucheb(x, 1.965696e-03, ref tj, ref tj1, ref result);
1020            ucheb(x, 1.493236e-03, ref tj, ref tj1, ref result);
1021            ucheb(x, 1.162591e-03, ref tj, ref tj1, ref result);
1022            return result;
1023        }
1024
1025
1026        /*************************************************************************
1027        Tail(S, 5, 21)
1028        *************************************************************************/
1029        private static double utbln5n21(double s)
1030        {
1031            double result = 0;
1032            double x = 0;
1033            double tj = 0;
1034            double tj1 = 0;
1035
1036            result = 0;
1037            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1038            tj = 1;
1039            tj1 = x;
1040            ucheb(x, -3.849649e+00, ref tj, ref tj1, ref result);
1041            ucheb(x, -4.051155e+00, ref tj, ref tj1, ref result);
1042            ucheb(x, -1.061430e+00, ref tj, ref tj1, ref result);
1043            ucheb(x, -2.608869e-01, ref tj, ref tj1, ref result);
1044            ucheb(x, -9.902788e-02, ref tj, ref tj1, ref result);
1045            ucheb(x, -4.346562e-02, ref tj, ref tj1, ref result);
1046            ucheb(x, -1.874709e-02, ref tj, ref tj1, ref result);
1047            ucheb(x, -7.682887e-03, ref tj, ref tj1, ref result);
1048            ucheb(x, -3.026206e-03, ref tj, ref tj1, ref result);
1049            ucheb(x, -1.534551e-03, ref tj, ref tj1, ref result);
1050            ucheb(x, -4.990575e-04, ref tj, ref tj1, ref result);
1051            ucheb(x, 3.713334e-04, ref tj, ref tj1, ref result);
1052            ucheb(x, 9.737011e-04, ref tj, ref tj1, ref result);
1053            ucheb(x, 1.304571e-03, ref tj, ref tj1, ref result);
1054            ucheb(x, 1.133110e-03, ref tj, ref tj1, ref result);
1055            ucheb(x, 1.123457e-03, ref tj, ref tj1, ref result);
1056            return result;
1057        }
1058
1059
1060        /*************************************************************************
1061        Tail(S, 5, 22)
1062        *************************************************************************/
1063        private static double utbln5n22(double s)
1064        {
1065            double result = 0;
1066            double x = 0;
1067            double tj = 0;
1068            double tj1 = 0;
1069
1070            result = 0;
1071            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1072            tj = 1;
1073            tj1 = x;
1074            ucheb(x, -3.849598e+00, ref tj, ref tj1, ref result);
1075            ucheb(x, -4.047605e+00, ref tj, ref tj1, ref result);
1076            ucheb(x, -1.057264e+00, ref tj, ref tj1, ref result);
1077            ucheb(x, -2.579513e-01, ref tj, ref tj1, ref result);
1078            ucheb(x, -9.749602e-02, ref tj, ref tj1, ref result);
1079            ucheb(x, -4.275137e-02, ref tj, ref tj1, ref result);
1080            ucheb(x, -1.881768e-02, ref tj, ref tj1, ref result);
1081            ucheb(x, -8.177374e-03, ref tj, ref tj1, ref result);
1082            ucheb(x, -3.981056e-03, ref tj, ref tj1, ref result);
1083            ucheb(x, -2.696290e-03, ref tj, ref tj1, ref result);
1084            ucheb(x, -1.886803e-03, ref tj, ref tj1, ref result);
1085            ucheb(x, -1.085378e-03, ref tj, ref tj1, ref result);
1086            ucheb(x, -4.675242e-04, ref tj, ref tj1, ref result);
1087            ucheb(x, -5.426367e-05, ref tj, ref tj1, ref result);
1088            ucheb(x, 1.039613e-04, ref tj, ref tj1, ref result);
1089            ucheb(x, 2.662378e-04, ref tj, ref tj1, ref result);
1090            return result;
1091        }
1092
1093
1094        /*************************************************************************
1095        Tail(S, 5, 23)
1096        *************************************************************************/
1097        private static double utbln5n23(double s)
1098        {
1099            double result = 0;
1100            double x = 0;
1101            double tj = 0;
1102            double tj1 = 0;
1103
1104            result = 0;
1105            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1106            tj = 1;
1107            tj1 = x;
1108            ucheb(x, -3.849269e+00, ref tj, ref tj1, ref result);
1109            ucheb(x, -4.043761e+00, ref tj, ref tj1, ref result);
1110            ucheb(x, -1.052735e+00, ref tj, ref tj1, ref result);
1111            ucheb(x, -2.544683e-01, ref tj, ref tj1, ref result);
1112            ucheb(x, -9.517503e-02, ref tj, ref tj1, ref result);
1113            ucheb(x, -4.112082e-02, ref tj, ref tj1, ref result);
1114            ucheb(x, -1.782070e-02, ref tj, ref tj1, ref result);
1115            ucheb(x, -7.549483e-03, ref tj, ref tj1, ref result);
1116            ucheb(x, -3.747329e-03, ref tj, ref tj1, ref result);
1117            ucheb(x, -2.694263e-03, ref tj, ref tj1, ref result);
1118            ucheb(x, -2.147141e-03, ref tj, ref tj1, ref result);
1119            ucheb(x, -1.526209e-03, ref tj, ref tj1, ref result);
1120            ucheb(x, -1.039173e-03, ref tj, ref tj1, ref result);
1121            ucheb(x, -7.235615e-04, ref tj, ref tj1, ref result);
1122            ucheb(x, -4.656546e-04, ref tj, ref tj1, ref result);
1123            ucheb(x, -3.014423e-04, ref tj, ref tj1, ref result);
1124            return result;
1125        }
1126
1127
1128        /*************************************************************************
1129        Tail(S, 5, 24)
1130        *************************************************************************/
1131        private static double utbln5n24(double s)
1132        {
1133            double result = 0;
1134            double x = 0;
1135            double tj = 0;
1136            double tj1 = 0;
1137
1138            result = 0;
1139            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1140            tj = 1;
1141            tj1 = x;
1142            ucheb(x, -3.848925e+00, ref tj, ref tj1, ref result);
1143            ucheb(x, -4.040178e+00, ref tj, ref tj1, ref result);
1144            ucheb(x, -1.048355e+00, ref tj, ref tj1, ref result);
1145            ucheb(x, -2.510198e-01, ref tj, ref tj1, ref result);
1146            ucheb(x, -9.261134e-02, ref tj, ref tj1, ref result);
1147            ucheb(x, -3.915864e-02, ref tj, ref tj1, ref result);
1148            ucheb(x, -1.627423e-02, ref tj, ref tj1, ref result);
1149            ucheb(x, -6.307345e-03, ref tj, ref tj1, ref result);
1150            ucheb(x, -2.732992e-03, ref tj, ref tj1, ref result);
1151            ucheb(x, -1.869652e-03, ref tj, ref tj1, ref result);
1152            ucheb(x, -1.494176e-03, ref tj, ref tj1, ref result);
1153            ucheb(x, -1.047533e-03, ref tj, ref tj1, ref result);
1154            ucheb(x, -7.178439e-04, ref tj, ref tj1, ref result);
1155            ucheb(x, -5.424171e-04, ref tj, ref tj1, ref result);
1156            ucheb(x, -3.829195e-04, ref tj, ref tj1, ref result);
1157            ucheb(x, -2.840810e-04, ref tj, ref tj1, ref result);
1158            return result;
1159        }
1160
1161
1162        /*************************************************************************
1163        Tail(S, 5, 25)
1164        *************************************************************************/
1165        private static double utbln5n25(double s)
1166        {
1167            double result = 0;
1168            double x = 0;
1169            double tj = 0;
1170            double tj1 = 0;
1171
1172            result = 0;
1173            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1174            tj = 1;
1175            tj1 = x;
1176            ucheb(x, -3.848937e+00, ref tj, ref tj1, ref result);
1177            ucheb(x, -4.037512e+00, ref tj, ref tj1, ref result);
1178            ucheb(x, -1.044866e+00, ref tj, ref tj1, ref result);
1179            ucheb(x, -2.483269e-01, ref tj, ref tj1, ref result);
1180            ucheb(x, -9.063682e-02, ref tj, ref tj1, ref result);
1181            ucheb(x, -3.767778e-02, ref tj, ref tj1, ref result);
1182            ucheb(x, -1.508540e-02, ref tj, ref tj1, ref result);
1183            ucheb(x, -5.332756e-03, ref tj, ref tj1, ref result);
1184            ucheb(x, -1.881511e-03, ref tj, ref tj1, ref result);
1185            ucheb(x, -1.124041e-03, ref tj, ref tj1, ref result);
1186            ucheb(x, -8.368456e-04, ref tj, ref tj1, ref result);
1187            ucheb(x, -4.930499e-04, ref tj, ref tj1, ref result);
1188            ucheb(x, -2.779630e-04, ref tj, ref tj1, ref result);
1189            ucheb(x, -2.029528e-04, ref tj, ref tj1, ref result);
1190            ucheb(x, -1.658678e-04, ref tj, ref tj1, ref result);
1191            ucheb(x, -1.289695e-04, ref tj, ref tj1, ref result);
1192            return result;
1193        }
1194
1195
1196        /*************************************************************************
1197        Tail(S, 5, 26)
1198        *************************************************************************/
1199        private static double utbln5n26(double s)
1200        {
1201            double result = 0;
1202            double x = 0;
1203            double tj = 0;
1204            double tj1 = 0;
1205
1206            result = 0;
1207            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1208            tj = 1;
1209            tj1 = x;
1210            ucheb(x, -3.849416e+00, ref tj, ref tj1, ref result);
1211            ucheb(x, -4.035915e+00, ref tj, ref tj1, ref result);
1212            ucheb(x, -1.042493e+00, ref tj, ref tj1, ref result);
1213            ucheb(x, -2.466021e-01, ref tj, ref tj1, ref result);
1214            ucheb(x, -8.956432e-02, ref tj, ref tj1, ref result);
1215            ucheb(x, -3.698914e-02, ref tj, ref tj1, ref result);
1216            ucheb(x, -1.465689e-02, ref tj, ref tj1, ref result);
1217            ucheb(x, -5.035254e-03, ref tj, ref tj1, ref result);
1218            ucheb(x, -1.674614e-03, ref tj, ref tj1, ref result);
1219            ucheb(x, -9.492734e-04, ref tj, ref tj1, ref result);
1220            ucheb(x, -7.014021e-04, ref tj, ref tj1, ref result);
1221            ucheb(x, -3.944953e-04, ref tj, ref tj1, ref result);
1222            ucheb(x, -2.255750e-04, ref tj, ref tj1, ref result);
1223            ucheb(x, -2.075841e-04, ref tj, ref tj1, ref result);
1224            ucheb(x, -1.989330e-04, ref tj, ref tj1, ref result);
1225            ucheb(x, -2.134862e-04, ref tj, ref tj1, ref result);
1226            return result;
1227        }
1228
1229
1230        /*************************************************************************
1231        Tail(S, 5, 27)
1232        *************************************************************************/
1233        private static double utbln5n27(double s)
1234        {
1235            double result = 0;
1236            double x = 0;
1237            double tj = 0;
1238            double tj1 = 0;
1239
1240            result = 0;
1241            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1242            tj = 1;
1243            tj1 = x;
1244            ucheb(x, -3.850070e+00, ref tj, ref tj1, ref result);
1245            ucheb(x, -4.034815e+00, ref tj, ref tj1, ref result);
1246            ucheb(x, -1.040650e+00, ref tj, ref tj1, ref result);
1247            ucheb(x, -2.453117e-01, ref tj, ref tj1, ref result);
1248            ucheb(x, -8.886426e-02, ref tj, ref tj1, ref result);
1249            ucheb(x, -3.661702e-02, ref tj, ref tj1, ref result);
1250            ucheb(x, -1.452346e-02, ref tj, ref tj1, ref result);
1251            ucheb(x, -5.002476e-03, ref tj, ref tj1, ref result);
1252            ucheb(x, -1.720126e-03, ref tj, ref tj1, ref result);
1253            ucheb(x, -1.001400e-03, ref tj, ref tj1, ref result);
1254            ucheb(x, -7.729826e-04, ref tj, ref tj1, ref result);
1255            ucheb(x, -4.740640e-04, ref tj, ref tj1, ref result);
1256            ucheb(x, -3.206333e-04, ref tj, ref tj1, ref result);
1257            ucheb(x, -3.366093e-04, ref tj, ref tj1, ref result);
1258            ucheb(x, -3.193471e-04, ref tj, ref tj1, ref result);
1259            ucheb(x, -3.804091e-04, ref tj, ref tj1, ref result);
1260            return result;
1261        }
1262
1263
1264        /*************************************************************************
1265        Tail(S, 5, 28)
1266        *************************************************************************/
1267        private static double utbln5n28(double s)
1268        {
1269            double result = 0;
1270            double x = 0;
1271            double tj = 0;
1272            double tj1 = 0;
1273
1274            result = 0;
1275            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1276            tj = 1;
1277            tj1 = x;
1278            ucheb(x, -3.850668e+00, ref tj, ref tj1, ref result);
1279            ucheb(x, -4.033786e+00, ref tj, ref tj1, ref result);
1280            ucheb(x, -1.038853e+00, ref tj, ref tj1, ref result);
1281            ucheb(x, -2.440281e-01, ref tj, ref tj1, ref result);
1282            ucheb(x, -8.806020e-02, ref tj, ref tj1, ref result);
1283            ucheb(x, -3.612883e-02, ref tj, ref tj1, ref result);
1284            ucheb(x, -1.420436e-02, ref tj, ref tj1, ref result);
1285            ucheb(x, -4.787982e-03, ref tj, ref tj1, ref result);
1286            ucheb(x, -1.535230e-03, ref tj, ref tj1, ref result);
1287            ucheb(x, -8.263121e-04, ref tj, ref tj1, ref result);
1288            ucheb(x, -5.849609e-04, ref tj, ref tj1, ref result);
1289            ucheb(x, -2.863967e-04, ref tj, ref tj1, ref result);
1290            ucheb(x, -1.391610e-04, ref tj, ref tj1, ref result);
1291            ucheb(x, -1.720294e-04, ref tj, ref tj1, ref result);
1292            ucheb(x, -1.952273e-04, ref tj, ref tj1, ref result);
1293            ucheb(x, -2.901413e-04, ref tj, ref tj1, ref result);
1294            return result;
1295        }
1296
1297
1298        /*************************************************************************
1299        Tail(S, 5, 29)
1300        *************************************************************************/
1301        private static double utbln5n29(double s)
1302        {
1303            double result = 0;
1304            double x = 0;
1305            double tj = 0;
1306            double tj1 = 0;
1307
1308            result = 0;
1309            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1310            tj = 1;
1311            tj1 = x;
1312            ucheb(x, -3.851217e+00, ref tj, ref tj1, ref result);
1313            ucheb(x, -4.032834e+00, ref tj, ref tj1, ref result);
1314            ucheb(x, -1.037113e+00, ref tj, ref tj1, ref result);
1315            ucheb(x, -2.427762e-01, ref tj, ref tj1, ref result);
1316            ucheb(x, -8.719146e-02, ref tj, ref tj1, ref result);
1317            ucheb(x, -3.557172e-02, ref tj, ref tj1, ref result);
1318            ucheb(x, -1.375498e-02, ref tj, ref tj1, ref result);
1319            ucheb(x, -4.452033e-03, ref tj, ref tj1, ref result);
1320            ucheb(x, -1.187516e-03, ref tj, ref tj1, ref result);
1321            ucheb(x, -4.916936e-04, ref tj, ref tj1, ref result);
1322            ucheb(x, -2.065533e-04, ref tj, ref tj1, ref result);
1323            ucheb(x, 1.067301e-04, ref tj, ref tj1, ref result);
1324            ucheb(x, 2.615824e-04, ref tj, ref tj1, ref result);
1325            ucheb(x, 2.432244e-04, ref tj, ref tj1, ref result);
1326            ucheb(x, 1.417795e-04, ref tj, ref tj1, ref result);
1327            ucheb(x, 4.710038e-05, ref tj, ref tj1, ref result);
1328            return result;
1329        }
1330
1331
1332        /*************************************************************************
1333        Tail(S, 5, 30)
1334        *************************************************************************/
1335        private static double utbln5n30(double s)
1336        {
1337            double result = 0;
1338            double x = 0;
1339            double tj = 0;
1340            double tj1 = 0;
1341
1342            result = 0;
1343            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1344            tj = 1;
1345            tj1 = x;
1346            ucheb(x, -3.851845e+00, ref tj, ref tj1, ref result);
1347            ucheb(x, -4.032148e+00, ref tj, ref tj1, ref result);
1348            ucheb(x, -1.035679e+00, ref tj, ref tj1, ref result);
1349            ucheb(x, -2.417758e-01, ref tj, ref tj1, ref result);
1350            ucheb(x, -8.655330e-02, ref tj, ref tj1, ref result);
1351            ucheb(x, -3.522132e-02, ref tj, ref tj1, ref result);
1352            ucheb(x, -1.352106e-02, ref tj, ref tj1, ref result);
1353            ucheb(x, -4.326911e-03, ref tj, ref tj1, ref result);
1354            ucheb(x, -1.064969e-03, ref tj, ref tj1, ref result);
1355            ucheb(x, -3.813321e-04, ref tj, ref tj1, ref result);
1356            ucheb(x, -5.683881e-05, ref tj, ref tj1, ref result);
1357            ucheb(x, 2.813346e-04, ref tj, ref tj1, ref result);
1358            ucheb(x, 4.627085e-04, ref tj, ref tj1, ref result);
1359            ucheb(x, 4.832107e-04, ref tj, ref tj1, ref result);
1360            ucheb(x, 3.519336e-04, ref tj, ref tj1, ref result);
1361            ucheb(x, 2.888530e-04, ref tj, ref tj1, ref result);
1362            return result;
1363        }
1364
1365
1366        /*************************************************************************
1367        Tail(S, 5, 100)
1368        *************************************************************************/
1369        private static double utbln5n100(double s)
1370        {
1371            double result = 0;
1372            double x = 0;
1373            double tj = 0;
1374            double tj1 = 0;
1375
1376            result = 0;
1377            x = Math.Min(2*(s-0.000000e+00)/3.250000e+00-1, 1.0);
1378            tj = 1;
1379            tj1 = x;
1380            ucheb(x, -3.877940e+00, ref tj, ref tj1, ref result);
1381            ucheb(x, -4.039324e+00, ref tj, ref tj1, ref result);
1382            ucheb(x, -1.022243e+00, ref tj, ref tj1, ref result);
1383            ucheb(x, -2.305825e-01, ref tj, ref tj1, ref result);
1384            ucheb(x, -7.960119e-02, ref tj, ref tj1, ref result);
1385            ucheb(x, -3.112000e-02, ref tj, ref tj1, ref result);
1386            ucheb(x, -1.138868e-02, ref tj, ref tj1, ref result);
1387            ucheb(x, -3.418164e-03, ref tj, ref tj1, ref result);
1388            ucheb(x, -9.174520e-04, ref tj, ref tj1, ref result);
1389            ucheb(x, -5.489617e-04, ref tj, ref tj1, ref result);
1390            ucheb(x, -3.878301e-04, ref tj, ref tj1, ref result);
1391            ucheb(x, -1.302233e-04, ref tj, ref tj1, ref result);
1392            ucheb(x, 1.054113e-05, ref tj, ref tj1, ref result);
1393            ucheb(x, 2.458862e-05, ref tj, ref tj1, ref result);
1394            ucheb(x, -4.186591e-06, ref tj, ref tj1, ref result);
1395            ucheb(x, -2.623412e-05, ref tj, ref tj1, ref result);
1396            return result;
1397        }
1398
1399
1400        /*************************************************************************
1401        Tail(S, 6, 6)
1402        *************************************************************************/
1403        private static double utbln6n6(double s)
1404        {
1405            double result = 0;
1406            double x = 0;
1407            double tj = 0;
1408            double tj1 = 0;
1409
1410            result = 0;
1411            x = Math.Min(2*(s-0.000000e+00)/2.882307e+00-1, 1.0);
1412            tj = 1;
1413            tj1 = x;
1414            ucheb(x, -3.054075e+00, ref tj, ref tj1, ref result);
1415            ucheb(x, -2.998804e+00, ref tj, ref tj1, ref result);
1416            ucheb(x, -6.681518e-01, ref tj, ref tj1, ref result);
1417            ucheb(x, -1.067578e-01, ref tj, ref tj1, ref result);
1418            ucheb(x, -1.709435e-02, ref tj, ref tj1, ref result);
1419            ucheb(x, 9.952661e-04, ref tj, ref tj1, ref result);
1420            ucheb(x, 3.641700e-03, ref tj, ref tj1, ref result);
1421            ucheb(x, 2.304572e-03, ref tj, ref tj1, ref result);
1422            ucheb(x, 3.336275e-03, ref tj, ref tj1, ref result);
1423            ucheb(x, 4.770385e-03, ref tj, ref tj1, ref result);
1424            ucheb(x, 5.401891e-03, ref tj, ref tj1, ref result);
1425            ucheb(x, 2.246148e-03, ref tj, ref tj1, ref result);
1426            ucheb(x, -1.442663e-03, ref tj, ref tj1, ref result);
1427            ucheb(x, -2.502866e-03, ref tj, ref tj1, ref result);
1428            ucheb(x, -2.105855e-03, ref tj, ref tj1, ref result);
1429            ucheb(x, -4.739371e-04, ref tj, ref tj1, ref result);
1430            return result;
1431        }
1432
1433
1434        /*************************************************************************
1435        Tail(S, 6, 7)
1436        *************************************************************************/
1437        private static double utbln6n7(double s)
1438        {
1439            double result = 0;
1440            double x = 0;
1441            double tj = 0;
1442            double tj1 = 0;
1443
1444            result = 0;
1445            x = Math.Min(2*(s-0.000000e+00)/3.000000e+00-1, 1.0);
1446            tj = 1;
1447            tj1 = x;
1448            ucheb(x, -3.265287e+00, ref tj, ref tj1, ref result);
1449            ucheb(x, -3.274613e+00, ref tj, ref tj1, ref result);
1450            ucheb(x, -7.582352e-01, ref tj, ref tj1, ref result);
1451            ucheb(x, -1.334293e-01, ref tj, ref tj1, ref result);
1452            ucheb(x, -2.915502e-02, ref tj, ref tj1, ref result);
1453            ucheb(x, -4.108091e-03, ref tj, ref tj1, ref result);
1454            ucheb(x, 1.546701e-03, ref tj, ref tj1, ref result);
1455            ucheb(x, 2.298827e-03, ref tj, ref tj1, ref result);
1456            ucheb(x, 2.891501e-03, ref tj, ref tj1, ref result);
1457            ucheb(x, 4.313717e-03, ref tj, ref tj1, ref result);
1458            ucheb(x, 4.989501e-03, ref tj, ref tj1, ref result);
1459            ucheb(x, 3.914594e-03, ref tj, ref tj1, ref result);
1460            ucheb(x, 1.062372e-03, ref tj, ref tj1, ref result);
1461            ucheb(x, -1.158841e-03, ref tj, ref tj1, ref result);
1462            ucheb(x, -1.596443e-03, ref tj, ref tj1, ref result);
1463            ucheb(x, -1.185662e-03, ref tj, ref tj1, ref result);
1464            return result;
1465        }
1466
1467
1468        /*************************************************************************
1469        Tail(S, 6, 8)
1470        *************************************************************************/
1471        private static double utbln6n8(double s)
1472        {
1473            double result = 0;
1474            double x = 0;
1475            double tj = 0;
1476            double tj1 = 0;
1477
1478            result = 0;
1479            x = Math.Min(2*(s-0.000000e+00)/3.098387e+00-1, 1.0);
1480            tj = 1;
1481            tj1 = x;
1482            ucheb(x, -3.450954e+00, ref tj, ref tj1, ref result);
1483            ucheb(x, -3.520462e+00, ref tj, ref tj1, ref result);
1484            ucheb(x, -8.420299e-01, ref tj, ref tj1, ref result);
1485            ucheb(x, -1.604853e-01, ref tj, ref tj1, ref result);
1486            ucheb(x, -4.165840e-02, ref tj, ref tj1, ref result);
1487            ucheb(x, -1.008756e-02, ref tj, ref tj1, ref result);
1488            ucheb(x, -6.723402e-04, ref tj, ref tj1, ref result);
1489            ucheb(x, 1.843521e-03, ref tj, ref tj1, ref result);
1490            ucheb(x, 2.883405e-03, ref tj, ref tj1, ref result);
1491            ucheb(x, 3.720980e-03, ref tj, ref tj1, ref result);
1492            ucheb(x, 4.301709e-03, ref tj, ref tj1, ref result);
1493            ucheb(x, 3.948034e-03, ref tj, ref tj1, ref result);
1494            ucheb(x, 2.776243e-03, ref tj, ref tj1, ref result);
1495            ucheb(x, 8.623736e-04, ref tj, ref tj1, ref result);
1496            ucheb(x, -3.742068e-04, ref tj, ref tj1, ref result);
1497            ucheb(x, -9.796927e-04, ref tj, ref tj1, ref result);
1498            return result;
1499        }
1500
1501
1502        /*************************************************************************
1503        Tail(S, 6, 9)
1504        *************************************************************************/
1505        private static double utbln6n9(double s)
1506        {
1507            double result = 0;
1508            double x = 0;
1509            double tj = 0;
1510            double tj1 = 0;
1511
1512            result = 0;
1513            x = Math.Min(2*(s-0.000000e+00)/3.181981e+00-1, 1.0);
1514            tj = 1;
1515            tj1 = x;
1516            ucheb(x, -3.616113e+00, ref tj, ref tj1, ref result);
1517            ucheb(x, -3.741650e+00, ref tj, ref tj1, ref result);
1518            ucheb(x, -9.204487e-01, ref tj, ref tj1, ref result);
1519            ucheb(x, -1.873068e-01, ref tj, ref tj1, ref result);
1520            ucheb(x, -5.446794e-02, ref tj, ref tj1, ref result);
1521            ucheb(x, -1.632286e-02, ref tj, ref tj1, ref result);
1522            ucheb(x, -3.266481e-03, ref tj, ref tj1, ref result);
1523            ucheb(x, 1.280067e-03, ref tj, ref tj1, ref result);
1524            ucheb(x, 2.780687e-03, ref tj, ref tj1, ref result);
1525            ucheb(x, 3.480242e-03, ref tj, ref tj1, ref result);
1526            ucheb(x, 3.592200e-03, ref tj, ref tj1, ref result);
1527            ucheb(x, 3.581019e-03, ref tj, ref tj1, ref result);
1528            ucheb(x, 3.264231e-03, ref tj, ref tj1, ref result);
1529            ucheb(x, 2.347174e-03, ref tj, ref tj1, ref result);
1530            ucheb(x, 1.167535e-03, ref tj, ref tj1, ref result);
1531            ucheb(x, -1.092185e-04, ref tj, ref tj1, ref result);
1532            return result;
1533        }
1534
1535
1536        /*************************************************************************
1537        Tail(S, 6, 10)
1538        *************************************************************************/
1539        private static double utbln6n10(double s)
1540        {
1541            double result = 0;
1542            double x = 0;
1543            double tj = 0;
1544            double tj1 = 0;
1545
1546            result = 0;
1547            x = Math.Min(2*(s-0.000000e+00)/3.253957e+00-1, 1.0);
1548            tj = 1;
1549            tj1 = x;
1550            ucheb(x, -3.764382e+00, ref tj, ref tj1, ref result);
1551            ucheb(x, -3.942366e+00, ref tj, ref tj1, ref result);
1552            ucheb(x, -9.939896e-01, ref tj, ref tj1, ref result);
1553            ucheb(x, -2.137812e-01, ref tj, ref tj1, ref result);
1554            ucheb(x, -6.720270e-02, ref tj, ref tj1, ref result);
1555            ucheb(x, -2.281070e-02, ref tj, ref tj1, ref result);
1556            ucheb(x, -5.901060e-03, ref tj, ref tj1, ref result);
1557            ucheb(x, 3.824937e-04, ref tj, ref tj1, ref result);
1558            ucheb(x, 2.802812e-03, ref tj, ref tj1, ref result);
1559            ucheb(x, 3.258132e-03, ref tj, ref tj1, ref result);
1560            ucheb(x, 3.233536e-03, ref tj, ref tj1, ref result);
1561            ucheb(x, 3.085530e-03, ref tj, ref tj1, ref result);
1562            ucheb(x, 3.212151e-03, ref tj, ref tj1, ref result);
1563            ucheb(x, 3.001329e-03, ref tj, ref tj1, ref result);
1564            ucheb(x, 2.226048e-03, ref tj, ref tj1, ref result);
1565            ucheb(x, 1.035298e-03, ref tj, ref tj1, ref result);
1566            return result;
1567        }
1568
1569
1570        /*************************************************************************
1571        Tail(S, 6, 11)
1572        *************************************************************************/
1573        private static double utbln6n11(double s)
1574        {
1575            double result = 0;
1576            double x = 0;
1577            double tj = 0;
1578            double tj1 = 0;
1579
1580            result = 0;
1581            x = Math.Min(2*(s-0.000000e+00)/3.316625e+00-1, 1.0);
1582            tj = 1;
1583            tj1 = x;
1584            ucheb(x, -3.898597e+00, ref tj, ref tj1, ref result);
1585            ucheb(x, -4.125710e+00, ref tj, ref tj1, ref result);
1586            ucheb(x, -1.063297e+00, ref tj, ref tj1, ref result);
1587            ucheb(x, -2.396852e-01, ref tj, ref tj1, ref result);
1588            ucheb(x, -7.990126e-02, ref tj, ref tj1, ref result);
1589            ucheb(x, -2.927977e-02, ref tj, ref tj1, ref result);
1590            ucheb(x, -8.726500e-03, ref tj, ref tj1, ref result);
1591            ucheb(x, -5.858745e-04, ref tj, ref tj1, ref result);
1592            ucheb(x, 2.654590e-03, ref tj, ref tj1, ref result);
1593            ucheb(x, 3.217736e-03, ref tj, ref tj1, ref result);
1594            ucheb(x, 2.989770e-03, ref tj, ref tj1, ref result);
1595            ucheb(x, 2.768493e-03, ref tj, ref tj1, ref result);
1596            ucheb(x, 2.924364e-03, ref tj, ref tj1, ref result);
1597            ucheb(x, 3.140215e-03, ref tj, ref tj1, ref result);
1598            ucheb(x, 2.647914e-03, ref tj, ref tj1, ref result);
1599            ucheb(x, 1.924802e-03, ref tj, ref tj1, ref result);
1600            return result;
1601        }
1602
1603
1604        /*************************************************************************
1605        Tail(S, 6, 12)
1606        *************************************************************************/
1607        private static double utbln6n12(double s)
1608        {
1609            double result = 0;
1610            double x = 0;
1611            double tj = 0;
1612            double tj1 = 0;
1613
1614            result = 0;
1615            x = Math.Min(2*(s-0.000000e+00)/3.371709e+00-1, 1.0);
1616            tj = 1;
1617            tj1 = x;
1618            ucheb(x, -4.020941e+00, ref tj, ref tj1, ref result);
1619            ucheb(x, -4.294250e+00, ref tj, ref tj1, ref result);
1620            ucheb(x, -1.128842e+00, ref tj, ref tj1, ref result);
1621            ucheb(x, -2.650389e-01, ref tj, ref tj1, ref result);
1622            ucheb(x, -9.248611e-02, ref tj, ref tj1, ref result);
1623            ucheb(x, -3.578510e-02, ref tj, ref tj1, ref result);
1624            ucheb(x, -1.162852e-02, ref tj, ref tj1, ref result);
1625            ucheb(x, -1.746982e-03, ref tj, ref tj1, ref result);
1626            ucheb(x, 2.454209e-03, ref tj, ref tj1, ref result);
1627            ucheb(x, 3.128042e-03, ref tj, ref tj1, ref result);
1628            ucheb(x, 2.936650e-03, ref tj, ref tj1, ref result);
1629            ucheb(x, 2.530794e-03, ref tj, ref tj1, ref result);
1630            ucheb(x, 2.665192e-03, ref tj, ref tj1, ref result);
1631            ucheb(x, 2.994144e-03, ref tj, ref tj1, ref result);
1632            ucheb(x, 2.662249e-03, ref tj, ref tj1, ref result);
1633            ucheb(x, 2.368541e-03, ref tj, ref tj1, ref result);
1634            return result;
1635        }
1636
1637
1638        /*************************************************************************
1639        Tail(S, 6, 13)
1640        *************************************************************************/
1641        private static double utbln6n13(double s)
1642        {
1643            double result = 0;
1644            double x = 0;
1645            double tj = 0;
1646            double tj1 = 0;
1647
1648            result = 0;
1649            x = Math.Min(2*(s-0.000000e+00)/3.420526e+00-1, 1.0);
1650            tj = 1;
1651            tj1 = x;
1652            ucheb(x, -4.133167e+00, ref tj, ref tj1, ref result);
1653            ucheb(x, -4.450016e+00, ref tj, ref tj1, ref result);
1654            ucheb(x, -1.191088e+00, ref tj, ref tj1, ref result);
1655            ucheb(x, -2.898220e-01, ref tj, ref tj1, ref result);
1656            ucheb(x, -1.050249e-01, ref tj, ref tj1, ref result);
1657            ucheb(x, -4.226901e-02, ref tj, ref tj1, ref result);
1658            ucheb(x, -1.471113e-02, ref tj, ref tj1, ref result);
1659            ucheb(x, -3.007470e-03, ref tj, ref tj1, ref result);
1660            ucheb(x, 2.049420e-03, ref tj, ref tj1, ref result);
1661            ucheb(x, 3.059074e-03, ref tj, ref tj1, ref result);
1662            ucheb(x, 2.881249e-03, ref tj, ref tj1, ref result);
1663            ucheb(x, 2.452780e-03, ref tj, ref tj1, ref result);
1664            ucheb(x, 2.441805e-03, ref tj, ref tj1, ref result);
1665            ucheb(x, 2.787493e-03, ref tj, ref tj1, ref result);
1666            ucheb(x, 2.483957e-03, ref tj, ref tj1, ref result);
1667            ucheb(x, 2.481590e-03, ref tj, ref tj1, ref result);
1668            return result;
1669        }
1670
1671
1672        /*************************************************************************
1673        Tail(S, 6, 14)
1674        *************************************************************************/
1675        private static double utbln6n14(double s)
1676        {
1677            double result = 0;
1678            double x = 0;
1679            double tj = 0;
1680            double tj1 = 0;
1681
1682            result = 0;
1683            x = Math.Min(2*(s-0.000000e+00)/3.450000e+00-1, 1.0);
1684            tj = 1;
1685            tj1 = x;
1686            ucheb(x, -4.201268e+00, ref tj, ref tj1, ref result);
1687            ucheb(x, -4.542568e+00, ref tj, ref tj1, ref result);
1688            ucheb(x, -1.226965e+00, ref tj, ref tj1, ref result);
1689            ucheb(x, -3.046029e-01, ref tj, ref tj1, ref result);
1690            ucheb(x, -1.136657e-01, ref tj, ref tj1, ref result);
1691            ucheb(x, -4.786757e-02, ref tj, ref tj1, ref result);
1692            ucheb(x, -1.843748e-02, ref tj, ref tj1, ref result);
1693            ucheb(x, -5.588022e-03, ref tj, ref tj1, ref result);
1694            ucheb(x, 2.253029e-04, ref tj, ref tj1, ref result);
1695            ucheb(x, 1.667188e-03, ref tj, ref tj1, ref result);
1696            ucheb(x, 1.788330e-03, ref tj, ref tj1, ref result);
1697            ucheb(x, 1.474545e-03, ref tj, ref tj1, ref result);
1698            ucheb(x, 1.540494e-03, ref tj, ref tj1, ref result);
1699            ucheb(x, 1.951188e-03, ref tj, ref tj1, ref result);
1700            ucheb(x, 1.863323e-03, ref tj, ref tj1, ref result);
1701            ucheb(x, 2.220904e-03, ref tj, ref tj1, ref result);
1702            return result;
1703        }
1704
1705
1706        /*************************************************************************
1707        Tail(S, 6, 15)
1708        *************************************************************************/
1709        private static double utbln6n15(double s)
1710        {
1711            double result = 0;
1712            double x = 0;
1713            double tj = 0;
1714            double tj1 = 0;
1715
1716            result = 0;
1717            x = Math.Min(2*(s-0.000000e+00)/3.450000e+00-1, 1.0);
1718            tj = 1;
1719            tj1 = x;
1720            ucheb(x, -4.195689e+00, ref tj, ref tj1, ref result);
1721            ucheb(x, -4.526567e+00, ref tj, ref tj1, ref result);
1722            ucheb(x, -1.213617e+00, ref tj, ref tj1, ref result);
1723            ucheb(x, -2.975035e-01, ref tj, ref tj1, ref result);
1724            ucheb(x, -1.118480e-01, ref tj, ref tj1, ref result);
1725            ucheb(x, -4.859142e-02, ref tj, ref tj1, ref result);
1726            ucheb(x, -2.083312e-02, ref tj, ref tj1, ref result);
1727            ucheb(x, -8.298720e-03, ref tj, ref tj1, ref result);
1728            ucheb(x, -2.766708e-03, ref tj, ref tj1, ref result);
1729            ucheb(x, -1.026356e-03, ref tj, ref tj1, ref result);
1730            ucheb(x, -9.093113e-04, ref tj, ref tj1, ref result);
1731            ucheb(x, -1.135168e-03, ref tj, ref tj1, ref result);
1732            ucheb(x, -1.136376e-03, ref tj, ref tj1, ref result);
1733            ucheb(x, -8.190870e-04, ref tj, ref tj1, ref result);
1734            ucheb(x, -4.435972e-04, ref tj, ref tj1, ref result);
1735            ucheb(x, 1.413129e-04, ref tj, ref tj1, ref result);
1736            return result;
1737        }
1738
1739
1740        /*************************************************************************
1741        Tail(S, 6, 30)
1742        *************************************************************************/
1743        private static double utbln6n30(double s)
1744        {
1745            double result = 0;
1746            double x = 0;
1747            double tj = 0;
1748            double tj1 = 0;
1749
1750            result = 0;
1751            x = Math.Min(2*(s-0.000000e+00)/3.450000e+00-1, 1.0);
1752            tj = 1;
1753            tj1 = x;
1754            ucheb(x, -4.166269e+00, ref tj, ref tj1, ref result);
1755            ucheb(x, -4.427399e+00, ref tj, ref tj1, ref result);
1756            ucheb(x, -1.118239e+00, ref tj, ref tj1, ref result);
1757            ucheb(x, -2.360847e-01, ref tj, ref tj1, ref result);
1758            ucheb(x, -7.745885e-02, ref tj, ref tj1, ref result);
1759            ucheb(x, -3.025041e-02, ref tj, ref tj1, ref result);
1760            ucheb(x, -1.187179e-02, ref tj, ref tj1, ref result);
1761            ucheb(x, -4.432089e-03, ref tj, ref tj1, ref result);
1762            ucheb(x, -1.408451e-03, ref tj, ref tj1, ref result);
1763            ucheb(x, -4.388774e-04, ref tj, ref tj1, ref result);
1764            ucheb(x, -2.795560e-04, ref tj, ref tj1, ref result);
1765            ucheb(x, -2.304136e-04, ref tj, ref tj1, ref result);
1766            ucheb(x, -1.258516e-04, ref tj, ref tj1, ref result);
1767            ucheb(x, -4.180236e-05, ref tj, ref tj1, ref result);
1768            ucheb(x, -4.388679e-06, ref tj, ref tj1, ref result);
1769            ucheb(x, 4.836027e-06, ref tj, ref tj1, ref result);
1770            return result;
1771        }
1772
1773
1774        /*************************************************************************
1775        Tail(S, 6, 100)
1776        *************************************************************************/
1777        private static double utbln6n100(double s)
1778        {
1779            double result = 0;
1780            double x = 0;
1781            double tj = 0;
1782            double tj1 = 0;
1783
1784            result = 0;
1785            x = Math.Min(2*(s-0.000000e+00)/3.450000e+00-1, 1.0);
1786            tj = 1;
1787            tj1 = x;
1788            ucheb(x, -4.181350e+00, ref tj, ref tj1, ref result);
1789            ucheb(x, -4.417919e+00, ref tj, ref tj1, ref result);
1790            ucheb(x, -1.094201e+00, ref tj, ref tj1, ref result);
1791            ucheb(x, -2.195883e-01, ref tj, ref tj1, ref result);
1792            ucheb(x, -6.818937e-02, ref tj, ref tj1, ref result);
1793            ucheb(x, -2.514202e-02, ref tj, ref tj1, ref result);
1794            ucheb(x, -9.125047e-03, ref tj, ref tj1, ref result);
1795            ucheb(x, -3.022148e-03, ref tj, ref tj1, ref result);
1796            ucheb(x, -7.284181e-04, ref tj, ref tj1, ref result);
1797            ucheb(x, -1.157766e-04, ref tj, ref tj1, ref result);
1798            ucheb(x, -1.023752e-04, ref tj, ref tj1, ref result);
1799            ucheb(x, -1.127985e-04, ref tj, ref tj1, ref result);
1800            ucheb(x, -5.221690e-05, ref tj, ref tj1, ref result);
1801            ucheb(x, -3.516179e-06, ref tj, ref tj1, ref result);
1802            ucheb(x, 9.501398e-06, ref tj, ref tj1, ref result);
1803            ucheb(x, 9.380220e-06, ref tj, ref tj1, ref result);
1804            return result;
1805        }
1806
1807
1808        /*************************************************************************
1809        Tail(S, 7, 7)
1810        *************************************************************************/
1811        private static double utbln7n7(double s)
1812        {
1813            double result = 0;
1814            double x = 0;
1815            double tj = 0;
1816            double tj1 = 0;
1817
1818            result = 0;
1819            x = Math.Min(2*(s-0.000000e+00)/3.130495e+00-1, 1.0);
1820            tj = 1;
1821            tj1 = x;
1822            ucheb(x, -3.501264e+00, ref tj, ref tj1, ref result);
1823            ucheb(x, -3.584790e+00, ref tj, ref tj1, ref result);
1824            ucheb(x, -8.577311e-01, ref tj, ref tj1, ref result);
1825            ucheb(x, -1.617002e-01, ref tj, ref tj1, ref result);
1826            ucheb(x, -4.145186e-02, ref tj, ref tj1, ref result);
1827            ucheb(x, -1.023462e-02, ref tj, ref tj1, ref result);
1828            ucheb(x, -1.408251e-03, ref tj, ref tj1, ref result);
1829            ucheb(x, 8.626515e-04, ref tj, ref tj1, ref result);
1830            ucheb(x, 2.072492e-03, ref tj, ref tj1, ref result);
1831            ucheb(x, 3.722926e-03, ref tj, ref tj1, ref result);
1832            ucheb(x, 5.095445e-03, ref tj, ref tj1, ref result);
1833            ucheb(x, 4.842602e-03, ref tj, ref tj1, ref result);
1834            ucheb(x, 2.751427e-03, ref tj, ref tj1, ref result);
1835            ucheb(x, 2.008927e-04, ref tj, ref tj1, ref result);
1836            ucheb(x, -9.892431e-04, ref tj, ref tj1, ref result);
1837            ucheb(x, -8.772386e-04, ref tj, ref tj1, ref result);
1838            return result;
1839        }
1840
1841
1842        /*************************************************************************
1843        Tail(S, 7, 8)
1844        *************************************************************************/
1845        private static double utbln7n8(double s)
1846        {
1847            double result = 0;
1848            double x = 0;
1849            double tj = 0;
1850            double tj1 = 0;
1851
1852            result = 0;
1853            x = Math.Min(2*(s-0.000000e+00)/3.240370e+00-1, 1.0);
1854            tj = 1;
1855            tj1 = x;
1856            ucheb(x, -3.709965e+00, ref tj, ref tj1, ref result);
1857            ucheb(x, -3.862154e+00, ref tj, ref tj1, ref result);
1858            ucheb(x, -9.504541e-01, ref tj, ref tj1, ref result);
1859            ucheb(x, -1.900195e-01, ref tj, ref tj1, ref result);
1860            ucheb(x, -5.439995e-02, ref tj, ref tj1, ref result);
1861            ucheb(x, -1.678028e-02, ref tj, ref tj1, ref result);
1862            ucheb(x, -4.485540e-03, ref tj, ref tj1, ref result);
1863            ucheb(x, -4.437047e-04, ref tj, ref tj1, ref result);
1864            ucheb(x, 1.440092e-03, ref tj, ref tj1, ref result);
1865            ucheb(x, 3.114227e-03, ref tj, ref tj1, ref result);
1866            ucheb(x, 4.516569e-03, ref tj, ref tj1, ref result);
1867            ucheb(x, 4.829457e-03, ref tj, ref tj1, ref result);
1868            ucheb(x, 3.787550e-03, ref tj, ref tj1, ref result);
1869            ucheb(x, 1.761866e-03, ref tj, ref tj1, ref result);
1870            ucheb(x, 1.991911e-04, ref tj, ref tj1, ref result);
1871            ucheb(x, -4.533481e-04, ref tj, ref tj1, ref result);
1872            return result;
1873        }
1874
1875
1876        /*************************************************************************
1877        Tail(S, 7, 9)
1878        *************************************************************************/
1879        private static double utbln7n9(double s)
1880        {
1881            double result = 0;
1882            double x = 0;
1883            double tj = 0;
1884            double tj1 = 0;
1885
1886            result = 0;
1887            x = Math.Min(2*(s-0.000000e+00)/3.334314e+00-1, 1.0);
1888            tj = 1;
1889            tj1 = x;
1890            ucheb(x, -3.896550e+00, ref tj, ref tj1, ref result);
1891            ucheb(x, -4.112671e+00, ref tj, ref tj1, ref result);
1892            ucheb(x, -1.037277e+00, ref tj, ref tj1, ref result);
1893            ucheb(x, -2.181695e-01, ref tj, ref tj1, ref result);
1894            ucheb(x, -6.765190e-02, ref tj, ref tj1, ref result);
1895            ucheb(x, -2.360116e-02, ref tj, ref tj1, ref result);
1896            ucheb(x, -7.695960e-03, ref tj, ref tj1, ref result);
1897            ucheb(x, -1.780578e-03, ref tj, ref tj1, ref result);
1898            ucheb(x, 8.963843e-04, ref tj, ref tj1, ref result);
1899            ucheb(x, 2.616148e-03, ref tj, ref tj1, ref result);
1900            ucheb(x, 3.852104e-03, ref tj, ref tj1, ref result);
1901            ucheb(x, 4.390744e-03, ref tj, ref tj1, ref result);
1902            ucheb(x, 4.014041e-03, ref tj, ref tj1, ref result);
1903            ucheb(x, 2.888101e-03, ref tj, ref tj1, ref result);
1904            ucheb(x, 1.467474e-03, ref tj, ref tj1, ref result);
1905            ucheb(x, 4.004611e-04, ref tj, ref tj1, ref result);
1906            return result;
1907        }
1908
1909
1910        /*************************************************************************
1911        Tail(S, 7, 10)
1912        *************************************************************************/
1913        private static double utbln7n10(double s)
1914        {
1915            double result = 0;
1916            double x = 0;
1917            double tj = 0;
1918            double tj1 = 0;
1919
1920            result = 0;
1921            x = Math.Min(2*(s-0.000000e+00)/3.415650e+00-1, 1.0);
1922            tj = 1;
1923            tj1 = x;
1924            ucheb(x, -4.064844e+00, ref tj, ref tj1, ref result);
1925            ucheb(x, -4.340749e+00, ref tj, ref tj1, ref result);
1926            ucheb(x, -1.118888e+00, ref tj, ref tj1, ref result);
1927            ucheb(x, -2.459730e-01, ref tj, ref tj1, ref result);
1928            ucheb(x, -8.097781e-02, ref tj, ref tj1, ref result);
1929            ucheb(x, -3.057688e-02, ref tj, ref tj1, ref result);
1930            ucheb(x, -1.097406e-02, ref tj, ref tj1, ref result);
1931            ucheb(x, -3.209262e-03, ref tj, ref tj1, ref result);
1932            ucheb(x, 4.065641e-04, ref tj, ref tj1, ref result);
1933            ucheb(x, 2.196677e-03, ref tj, ref tj1, ref result);
1934            ucheb(x, 3.313994e-03, ref tj, ref tj1, ref result);
1935            ucheb(x, 3.827157e-03, ref tj, ref tj1, ref result);
1936            ucheb(x, 3.822284e-03, ref tj, ref tj1, ref result);
1937            ucheb(x, 3.389090e-03, ref tj, ref tj1, ref result);
1938            ucheb(x, 2.340850e-03, ref tj, ref tj1, ref result);
1939            ucheb(x, 1.395172e-03, ref tj, ref tj1, ref result);
1940            return result;
1941        }
1942
1943
1944        /*************************************************************************
1945        Tail(S, 7, 11)
1946        *************************************************************************/
1947        private static double utbln7n11(double s)
1948        {
1949            double result = 0;
1950            double x = 0;
1951            double tj = 0;
1952            double tj1 = 0;
1953
1954            result = 0;
1955            x = Math.Min(2*(s-0.000000e+00)/3.486817e+00-1, 1.0);
1956            tj = 1;
1957            tj1 = x;
1958            ucheb(x, -4.217795e+00, ref tj, ref tj1, ref result);
1959            ucheb(x, -4.549783e+00, ref tj, ref tj1, ref result);
1960            ucheb(x, -1.195905e+00, ref tj, ref tj1, ref result);
1961            ucheb(x, -2.733093e-01, ref tj, ref tj1, ref result);
1962            ucheb(x, -9.428447e-02, ref tj, ref tj1, ref result);
1963            ucheb(x, -3.760093e-02, ref tj, ref tj1, ref result);
1964            ucheb(x, -1.431676e-02, ref tj, ref tj1, ref result);
1965            ucheb(x, -4.717152e-03, ref tj, ref tj1, ref result);
1966            ucheb(x, -1.032199e-04, ref tj, ref tj1, ref result);
1967            ucheb(x, 1.832423e-03, ref tj, ref tj1, ref result);
1968            ucheb(x, 2.905979e-03, ref tj, ref tj1, ref result);
1969            ucheb(x, 3.302799e-03, ref tj, ref tj1, ref result);
1970            ucheb(x, 3.464371e-03, ref tj, ref tj1, ref result);
1971            ucheb(x, 3.456211e-03, ref tj, ref tj1, ref result);
1972            ucheb(x, 2.736244e-03, ref tj, ref tj1, ref result);
1973            ucheb(x, 2.140712e-03, ref tj, ref tj1, ref result);
1974            return result;
1975        }
1976
1977
1978        /*************************************************************************
1979        Tail(S, 7, 12)
1980        *************************************************************************/
1981        private static double utbln7n12(double s)
1982        {
1983            double result = 0;
1984            double x = 0;
1985            double tj = 0;
1986            double tj1 = 0;
1987
1988            result = 0;
1989            x = Math.Min(2*(s-0.000000e+00)/3.500000e+00-1, 1.0);
1990            tj = 1;
1991            tj1 = x;
1992            ucheb(x, -4.235822e+00, ref tj, ref tj1, ref result);
1993            ucheb(x, -4.564100e+00, ref tj, ref tj1, ref result);
1994            ucheb(x, -1.190813e+00, ref tj, ref tj1, ref result);
1995            ucheb(x, -2.686546e-01, ref tj, ref tj1, ref result);
1996            ucheb(x, -9.395083e-02, ref tj, ref tj1, ref result);
1997            ucheb(x, -3.967359e-02, ref tj, ref tj1, ref result);
1998            ucheb(x, -1.747096e-02, ref tj, ref tj1, ref result);
1999            ucheb(x, -8.304144e-03, ref tj, ref tj1, ref result);
2000            ucheb(x, -3.903198e-03, ref tj, ref tj1, ref result);
2001            ucheb(x, -2.134906e-03, ref tj, ref tj1, ref result);
2002            ucheb(x, -1.175035e-03, ref tj, ref tj1, ref result);
2003            ucheb(x, -7.266224e-04, ref tj, ref tj1, ref result);
2004            ucheb(x, -1.892931e-04, ref tj, ref tj1, ref result);
2005            ucheb(x, 5.604706e-04, ref tj, ref tj1, ref result);
2006            ucheb(x, 9.070459e-04, ref tj, ref tj1, ref result);
2007            ucheb(x, 1.427010e-03, ref tj, ref tj1, ref result);
2008            return result;
2009        }
2010
2011
2012        /*************************************************************************
2013        Tail(S, 7, 13)
2014        *************************************************************************/
2015        private static double utbln7n13(double s)
2016        {
2017            double result = 0;
2018            double x = 0;
2019            double tj = 0;
2020            double tj1 = 0;
2021
2022            result = 0;
2023            x = Math.Min(2*(s-0.000000e+00)/3.500000e+00-1, 1.0);
2024            tj = 1;
2025            tj1 = x;
2026            ucheb(x, -4.222204e+00, ref tj, ref tj1, ref result);
2027            ucheb(x, -4.532300e+00, ref tj, ref tj1, ref result);
2028            ucheb(x, -1.164642e+00, ref tj, ref tj1, ref result);
2029            ucheb(x, -2.523768e-01, ref tj, ref tj1, ref result);
2030            ucheb(x, -8.531984e-02, ref tj, ref tj1, ref result);
2031            ucheb(x, -3.467857e-02, ref tj, ref tj1, ref result);
2032            ucheb(x, -1.483804e-02, ref tj, ref tj1, ref result);
2033            ucheb(x, -6.524136e-03, ref tj, ref tj1, ref result);
2034            ucheb(x, -3.077740e-03, ref tj, ref tj1, ref result);
2035            ucheb(x, -1.745218e-03, ref tj, ref tj1, ref result);
2036            ucheb(x, -1.602085e-03, ref tj, ref tj1, ref result);
2037            ucheb(x, -1.828831e-03, ref tj, ref tj1, ref result);
2038            ucheb(x, -1.994070e-03, ref tj, ref tj1, ref result);
2039            ucheb(x, -1.873879e-03, ref tj, ref tj1, ref result);
2040            ucheb(x, -1.341937e-03, ref tj, ref tj1, ref result);
2041            ucheb(x, -8.706444e-04, ref tj, ref tj1, ref result);
2042            return result;
2043        }
2044
2045
2046        /*************************************************************************
2047        Tail(S, 7, 14)
2048        *************************************************************************/
2049        private static double utbln7n14(double s)
2050        {
2051            double result = 0;
2052            double x = 0;
2053            double tj = 0;
2054            double tj1 = 0;
2055
2056            result = 0;
2057            x = Math.Min(2*(s-0.000000e+00)/3.500000e+00-1, 1.0);
2058            tj = 1;
2059            tj1 = x;
2060            ucheb(x, -4.211763e+00, ref tj, ref tj1, ref result);
2061            ucheb(x, -4.507542e+00, ref tj, ref tj1, ref result);
2062            ucheb(x, -1.143640e+00, ref tj, ref tj1, ref result);
2063            ucheb(x, -2.395755e-01, ref tj, ref tj1, ref result);
2064            ucheb(x, -7.808020e-02, ref tj, ref tj1, ref result);
2065            ucheb(x, -3.044259e-02, ref tj, ref tj1, ref result);
2066            ucheb(x, -1.182308e-02, ref tj, ref tj1, ref result);
2067            ucheb(x, -4.057325e-03, ref tj, ref tj1, ref result);
2068            ucheb(x, -5.724255e-04, ref tj, ref tj1, ref result);
2069            ucheb(x, 8.303900e-04, ref tj, ref tj1, ref result);
2070            ucheb(x, 1.113148e-03, ref tj, ref tj1, ref result);
2071            ucheb(x, 8.102514e-04, ref tj, ref tj1, ref result);
2072            ucheb(x, 3.559442e-04, ref tj, ref tj1, ref result);
2073            ucheb(x, 4.634986e-05, ref tj, ref tj1, ref result);
2074            ucheb(x, -8.776476e-05, ref tj, ref tj1, ref result);
2075            ucheb(x, 1.054489e-05, ref tj, ref tj1, ref result);
2076            return result;
2077        }
2078
2079
2080        /*************************************************************************
2081        Tail(S, 7, 15)
2082        *************************************************************************/
2083        private static double utbln7n15(double s)
2084        {
2085            double result = 0;
2086            double x = 0;
2087            double tj = 0;
2088            double tj1 = 0;
2089
2090            result = 0;
2091            x = Math.Min(2*(s-0.000000e+00)/3.500000e+00-1, 1.0);
2092            tj = 1;
2093            tj1 = x;
2094            ucheb(x, -4.204898e+00, ref tj, ref tj1, ref result);
2095            ucheb(x, -4.489960e+00, ref tj, ref tj1, ref result);
2096            ucheb(x, -1.129172e+00, ref tj, ref tj1, ref result);
2097            ucheb(x, -2.316741e-01, ref tj, ref tj1, ref result);
2098            ucheb(x, -7.506107e-02, ref tj, ref tj1, ref result);
2099            ucheb(x, -2.983676e-02, ref tj, ref tj1, ref result);
2100            ucheb(x, -1.258013e-02, ref tj, ref tj1, ref result);
2101            ucheb(x, -5.262515e-03, ref tj, ref tj1, ref result);
2102            ucheb(x, -1.984156e-03, ref tj, ref tj1, ref result);
2103            ucheb(x, -3.912108e-04, ref tj, ref tj1, ref result);
2104            ucheb(x, 8.974023e-05, ref tj, ref tj1, ref result);
2105            ucheb(x, 6.056195e-05, ref tj, ref tj1, ref result);
2106            ucheb(x, -2.090842e-04, ref tj, ref tj1, ref result);
2107            ucheb(x, -5.232620e-04, ref tj, ref tj1, ref result);
2108            ucheb(x, -5.816339e-04, ref tj, ref tj1, ref result);
2109            ucheb(x, -7.020421e-04, ref tj, ref tj1, ref result);
2110            return result;
2111        }
2112
2113
2114        /*************************************************************************
2115        Tail(S, 7, 30)
2116        *************************************************************************/
2117        private static double utbln7n30(double s)
2118        {
2119            double result = 0;
2120            double x = 0;
2121            double tj = 0;
2122            double tj1 = 0;
2123
2124            result = 0;
2125            x = Math.Min(2*(s-0.000000e+00)/3.500000e+00-1, 1.0);
2126            tj = 1;
2127            tj1 = x;
2128            ucheb(x, -4.176536e+00, ref tj, ref tj1, ref result);
2129            ucheb(x, -4.398705e+00, ref tj, ref tj1, ref result);
2130            ucheb(x, -1.045481e+00, ref tj, ref tj1, ref result);
2131            ucheb(x, -1.821982e-01, ref tj, ref tj1, ref result);
2132            ucheb(x, -4.962304e-02, ref tj, ref tj1, ref result);
2133            ucheb(x, -1.698132e-02, ref tj, ref tj1, ref result);
2134            ucheb(x, -6.062667e-03, ref tj, ref tj1, ref result);
2135            ucheb(x, -2.282353e-03, ref tj, ref tj1, ref result);
2136            ucheb(x, -8.014836e-04, ref tj, ref tj1, ref result);
2137            ucheb(x, -2.035683e-04, ref tj, ref tj1, ref result);
2138            ucheb(x, -1.004137e-05, ref tj, ref tj1, ref result);
2139            ucheb(x, 3.801453e-06, ref tj, ref tj1, ref result);
2140            ucheb(x, -1.920705e-05, ref tj, ref tj1, ref result);
2141            ucheb(x, -2.518735e-05, ref tj, ref tj1, ref result);
2142            ucheb(x, -1.821501e-05, ref tj, ref tj1, ref result);
2143            ucheb(x, -1.801008e-05, ref tj, ref tj1, ref result);
2144            return result;
2145        }
2146
2147
2148        /*************************************************************************
2149        Tail(S, 7, 100)
2150        *************************************************************************/
2151        private static double utbln7n100(double s)
2152        {
2153            double result = 0;
2154            double x = 0;
2155            double tj = 0;
2156            double tj1 = 0;
2157
2158            result = 0;
2159            x = Math.Min(2*(s-0.000000e+00)/3.500000e+00-1, 1.0);
2160            tj = 1;
2161            tj1 = x;
2162            ucheb(x, -4.188337e+00, ref tj, ref tj1, ref result);
2163            ucheb(x, -4.386949e+00, ref tj, ref tj1, ref result);
2164            ucheb(x, -1.022834e+00, ref tj, ref tj1, ref result);
2165            ucheb(x, -1.686517e-01, ref tj, ref tj1, ref result);
2166            ucheb(x, -4.323516e-02, ref tj, ref tj1, ref result);
2167            ucheb(x, -1.399392e-02, ref tj, ref tj1, ref result);
2168            ucheb(x, -4.644333e-03, ref tj, ref tj1, ref result);
2169            ucheb(x, -1.617044e-03, ref tj, ref tj1, ref result);
2170            ucheb(x, -5.031396e-04, ref tj, ref tj1, ref result);
2171            ucheb(x, -8.792066e-05, ref tj, ref tj1, ref result);
2172            ucheb(x, 2.675457e-05, ref tj, ref tj1, ref result);
2173            ucheb(x, 1.673416e-05, ref tj, ref tj1, ref result);
2174            ucheb(x, -6.258552e-06, ref tj, ref tj1, ref result);
2175            ucheb(x, -8.174214e-06, ref tj, ref tj1, ref result);
2176            ucheb(x, -3.073644e-06, ref tj, ref tj1, ref result);
2177            ucheb(x, -1.349958e-06, ref tj, ref tj1, ref result);
2178            return result;
2179        }
2180
2181
2182        /*************************************************************************
2183        Tail(S, 8, 8)
2184        *************************************************************************/
2185        private static double utbln8n8(double s)
2186        {
2187            double result = 0;
2188            double x = 0;
2189            double tj = 0;
2190            double tj1 = 0;
2191
2192            result = 0;
2193            x = Math.Min(2*(s-0.000000e+00)/3.360672e+00-1, 1.0);
2194            tj = 1;
2195            tj1 = x;
2196            ucheb(x, -3.940217e+00, ref tj, ref tj1, ref result);
2197            ucheb(x, -4.168913e+00, ref tj, ref tj1, ref result);
2198            ucheb(x, -1.051485e+00, ref tj, ref tj1, ref result);
2199            ucheb(x, -2.195325e-01, ref tj, ref tj1, ref result);
2200            ucheb(x, -6.775196e-02, ref tj, ref tj1, ref result);
2201            ucheb(x, -2.385506e-02, ref tj, ref tj1, ref result);
2202            ucheb(x, -8.244902e-03, ref tj, ref tj1, ref result);
2203            ucheb(x, -2.525632e-03, ref tj, ref tj1, ref result);
2204            ucheb(x, 2.771275e-04, ref tj, ref tj1, ref result);
2205            ucheb(x, 2.332874e-03, ref tj, ref tj1, ref result);
2206            ucheb(x, 4.079599e-03, ref tj, ref tj1, ref result);
2207            ucheb(x, 4.882551e-03, ref tj, ref tj1, ref result);
2208            ucheb(x, 4.407944e-03, ref tj, ref tj1, ref result);
2209            ucheb(x, 2.769844e-03, ref tj, ref tj1, ref result);
2210            ucheb(x, 1.062433e-03, ref tj, ref tj1, ref result);
2211            ucheb(x, 5.872535e-05, ref tj, ref tj1, ref result);
2212            return result;
2213        }
2214
2215
2216        /*************************************************************************
2217        Tail(S, 8, 9)
2218        *************************************************************************/
2219        private static double utbln8n9(double s)
2220        {
2221            double result = 0;
2222            double x = 0;
2223            double tj = 0;
2224            double tj1 = 0;
2225
2226            result = 0;
2227            x = Math.Min(2*(s-0.000000e+00)/3.464102e+00-1, 1.0);
2228            tj = 1;
2229            tj1 = x;
2230            ucheb(x, -4.147004e+00, ref tj, ref tj1, ref result);
2231            ucheb(x, -4.446939e+00, ref tj, ref tj1, ref result);
2232            ucheb(x, -1.146155e+00, ref tj, ref tj1, ref result);
2233            ucheb(x, -2.488561e-01, ref tj, ref tj1, ref result);
2234            ucheb(x, -8.144561e-02, ref tj, ref tj1, ref result);
2235            ucheb(x, -3.116917e-02, ref tj, ref tj1, ref result);
2236            ucheb(x, -1.205667e-02, ref tj, ref tj1, ref result);
2237            ucheb(x, -4.515661e-03, ref tj, ref tj1, ref result);
2238            ucheb(x, -7.618616e-04, ref tj, ref tj1, ref result);
2239            ucheb(x, 1.599011e-03, ref tj, ref tj1, ref result);
2240            ucheb(x, 3.457324e-03, ref tj, ref tj1, ref result);
2241            ucheb(x, 4.482917e-03, ref tj, ref tj1, ref result);
2242            ucheb(x, 4.488267e-03, ref tj, ref tj1, ref result);
2243            ucheb(x, 3.469823e-03, ref tj, ref tj1, ref result);
2244            ucheb(x, 1.957591e-03, ref tj, ref tj1, ref result);
2245            ucheb(x, 8.058326e-04, ref tj, ref tj1, ref result);
2246            return result;
2247        }
2248
2249
2250        /*************************************************************************
2251        Tail(S, 8, 10)
2252        *************************************************************************/
2253        private static double utbln8n10(double s)
2254        {
2255            double result = 0;
2256            double x = 0;
2257            double tj = 0;
2258            double tj1 = 0;
2259
2260            result = 0;
2261            x = Math.Min(2*(s-0.000000e+00)/3.554093e+00-1, 1.0);
2262            tj = 1;
2263            tj1 = x;
2264            ucheb(x, -4.334282e+00, ref tj, ref tj1, ref result);
2265            ucheb(x, -4.700860e+00, ref tj, ref tj1, ref result);
2266            ucheb(x, -1.235253e+00, ref tj, ref tj1, ref result);
2267            ucheb(x, -2.778489e-01, ref tj, ref tj1, ref result);
2268            ucheb(x, -9.527324e-02, ref tj, ref tj1, ref result);
2269            ucheb(x, -3.862885e-02, ref tj, ref tj1, ref result);
2270            ucheb(x, -1.589781e-02, ref tj, ref tj1, ref result);
2271            ucheb(x, -6.507355e-03, ref tj, ref tj1, ref result);
2272            ucheb(x, -1.717526e-03, ref tj, ref tj1, ref result);
2273            ucheb(x, 9.215726e-04, ref tj, ref tj1, ref result);
2274            ucheb(x, 2.848696e-03, ref tj, ref tj1, ref result);
2275            ucheb(x, 3.918854e-03, ref tj, ref tj1, ref result);
2276            ucheb(x, 4.219614e-03, ref tj, ref tj1, ref result);
2277            ucheb(x, 3.753761e-03, ref tj, ref tj1, ref result);
2278            ucheb(x, 2.573688e-03, ref tj, ref tj1, ref result);
2279            ucheb(x, 1.602177e-03, ref tj, ref tj1, ref result);
2280            return result;
2281        }
2282
2283
2284        /*************************************************************************
2285        Tail(S, 8, 11)
2286        *************************************************************************/
2287        private static double utbln8n11(double s)
2288        {
2289            double result = 0;
2290            double x = 0;
2291            double tj = 0;
2292            double tj1 = 0;
2293
2294            result = 0;
2295            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2296            tj = 1;
2297            tj1 = x;
2298            ucheb(x, -4.421882e+00, ref tj, ref tj1, ref result);
2299            ucheb(x, -4.812457e+00, ref tj, ref tj1, ref result);
2300            ucheb(x, -1.266153e+00, ref tj, ref tj1, ref result);
2301            ucheb(x, -2.849344e-01, ref tj, ref tj1, ref result);
2302            ucheb(x, -9.971527e-02, ref tj, ref tj1, ref result);
2303            ucheb(x, -4.258944e-02, ref tj, ref tj1, ref result);
2304            ucheb(x, -1.944820e-02, ref tj, ref tj1, ref result);
2305            ucheb(x, -9.894685e-03, ref tj, ref tj1, ref result);
2306            ucheb(x, -5.031836e-03, ref tj, ref tj1, ref result);
2307            ucheb(x, -2.514330e-03, ref tj, ref tj1, ref result);
2308            ucheb(x, -6.351660e-04, ref tj, ref tj1, ref result);
2309            ucheb(x, 6.206748e-04, ref tj, ref tj1, ref result);
2310            ucheb(x, 1.492600e-03, ref tj, ref tj1, ref result);
2311            ucheb(x, 2.005338e-03, ref tj, ref tj1, ref result);
2312            ucheb(x, 1.780099e-03, ref tj, ref tj1, ref result);
2313            ucheb(x, 1.673599e-03, ref tj, ref tj1, ref result);
2314            return result;
2315        }
2316
2317
2318        /*************************************************************************
2319        Tail(S, 8, 12)
2320        *************************************************************************/
2321        private static double utbln8n12(double s)
2322        {
2323            double result = 0;
2324            double x = 0;
2325            double tj = 0;
2326            double tj1 = 0;
2327
2328            result = 0;
2329            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2330            tj = 1;
2331            tj1 = x;
2332            ucheb(x, -4.398211e+00, ref tj, ref tj1, ref result);
2333            ucheb(x, -4.762214e+00, ref tj, ref tj1, ref result);
2334            ucheb(x, -1.226296e+00, ref tj, ref tj1, ref result);
2335            ucheb(x, -2.603837e-01, ref tj, ref tj1, ref result);
2336            ucheb(x, -8.643223e-02, ref tj, ref tj1, ref result);
2337            ucheb(x, -3.502438e-02, ref tj, ref tj1, ref result);
2338            ucheb(x, -1.544574e-02, ref tj, ref tj1, ref result);
2339            ucheb(x, -7.647734e-03, ref tj, ref tj1, ref result);
2340            ucheb(x, -4.442259e-03, ref tj, ref tj1, ref result);
2341            ucheb(x, -3.011484e-03, ref tj, ref tj1, ref result);
2342            ucheb(x, -2.384758e-03, ref tj, ref tj1, ref result);
2343            ucheb(x, -1.998259e-03, ref tj, ref tj1, ref result);
2344            ucheb(x, -1.659985e-03, ref tj, ref tj1, ref result);
2345            ucheb(x, -1.331046e-03, ref tj, ref tj1, ref result);
2346            ucheb(x, -8.638478e-04, ref tj, ref tj1, ref result);
2347            ucheb(x, -6.056785e-04, ref tj, ref tj1, ref result);
2348            return result;
2349        }
2350
2351
2352        /*************************************************************************
2353        Tail(S, 8, 13)
2354        *************************************************************************/
2355        private static double utbln8n13(double s)
2356        {
2357            double result = 0;
2358            double x = 0;
2359            double tj = 0;
2360            double tj1 = 0;
2361
2362            result = 0;
2363            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2364            tj = 1;
2365            tj1 = x;
2366            ucheb(x, -4.380670e+00, ref tj, ref tj1, ref result);
2367            ucheb(x, -4.724511e+00, ref tj, ref tj1, ref result);
2368            ucheb(x, -1.195851e+00, ref tj, ref tj1, ref result);
2369            ucheb(x, -2.420511e-01, ref tj, ref tj1, ref result);
2370            ucheb(x, -7.609928e-02, ref tj, ref tj1, ref result);
2371            ucheb(x, -2.893999e-02, ref tj, ref tj1, ref result);
2372            ucheb(x, -1.115919e-02, ref tj, ref tj1, ref result);
2373            ucheb(x, -4.291410e-03, ref tj, ref tj1, ref result);
2374            ucheb(x, -1.339664e-03, ref tj, ref tj1, ref result);
2375            ucheb(x, -1.801548e-04, ref tj, ref tj1, ref result);
2376            ucheb(x, 2.534710e-04, ref tj, ref tj1, ref result);
2377            ucheb(x, 2.793250e-04, ref tj, ref tj1, ref result);
2378            ucheb(x, 1.806718e-04, ref tj, ref tj1, ref result);
2379            ucheb(x, 1.384624e-04, ref tj, ref tj1, ref result);
2380            ucheb(x, 1.120582e-04, ref tj, ref tj1, ref result);
2381            ucheb(x, 2.936453e-04, ref tj, ref tj1, ref result);
2382            return result;
2383        }
2384
2385
2386        /*************************************************************************
2387        Tail(S, 8, 14)
2388        *************************************************************************/
2389        private static double utbln8n14(double s)
2390        {
2391            double result = 0;
2392            double x = 0;
2393            double tj = 0;
2394            double tj1 = 0;
2395
2396            result = 0;
2397            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2398            tj = 1;
2399            tj1 = x;
2400            ucheb(x, -4.368494e+00, ref tj, ref tj1, ref result);
2401            ucheb(x, -4.697171e+00, ref tj, ref tj1, ref result);
2402            ucheb(x, -1.174440e+00, ref tj, ref tj1, ref result);
2403            ucheb(x, -2.300621e-01, ref tj, ref tj1, ref result);
2404            ucheb(x, -7.087393e-02, ref tj, ref tj1, ref result);
2405            ucheb(x, -2.685826e-02, ref tj, ref tj1, ref result);
2406            ucheb(x, -1.085254e-02, ref tj, ref tj1, ref result);
2407            ucheb(x, -4.525658e-03, ref tj, ref tj1, ref result);
2408            ucheb(x, -1.966647e-03, ref tj, ref tj1, ref result);
2409            ucheb(x, -7.453388e-04, ref tj, ref tj1, ref result);
2410            ucheb(x, -3.826066e-04, ref tj, ref tj1, ref result);
2411            ucheb(x, -3.501958e-04, ref tj, ref tj1, ref result);
2412            ucheb(x, -5.336297e-04, ref tj, ref tj1, ref result);
2413            ucheb(x, -8.251972e-04, ref tj, ref tj1, ref result);
2414            ucheb(x, -8.118456e-04, ref tj, ref tj1, ref result);
2415            ucheb(x, -9.415959e-04, ref tj, ref tj1, ref result);
2416            return result;
2417        }
2418
2419
2420        /*************************************************************************
2421        Tail(S, 8, 15)
2422        *************************************************************************/
2423        private static double utbln8n15(double s)
2424        {
2425            double result = 0;
2426            double x = 0;
2427            double tj = 0;
2428            double tj1 = 0;
2429
2430            result = 0;
2431            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2432            tj = 1;
2433            tj1 = x;
2434            ucheb(x, -4.358397e+00, ref tj, ref tj1, ref result);
2435            ucheb(x, -4.674485e+00, ref tj, ref tj1, ref result);
2436            ucheb(x, -1.155941e+00, ref tj, ref tj1, ref result);
2437            ucheb(x, -2.195780e-01, ref tj, ref tj1, ref result);
2438            ucheb(x, -6.544830e-02, ref tj, ref tj1, ref result);
2439            ucheb(x, -2.426183e-02, ref tj, ref tj1, ref result);
2440            ucheb(x, -9.309902e-03, ref tj, ref tj1, ref result);
2441            ucheb(x, -3.650956e-03, ref tj, ref tj1, ref result);
2442            ucheb(x, -1.068874e-03, ref tj, ref tj1, ref result);
2443            ucheb(x, 1.538544e-04, ref tj, ref tj1, ref result);
2444            ucheb(x, 8.192525e-04, ref tj, ref tj1, ref result);
2445            ucheb(x, 1.073905e-03, ref tj, ref tj1, ref result);
2446            ucheb(x, 1.079673e-03, ref tj, ref tj1, ref result);
2447            ucheb(x, 9.423572e-04, ref tj, ref tj1, ref result);
2448            ucheb(x, 6.579647e-04, ref tj, ref tj1, ref result);
2449            ucheb(x, 4.765904e-04, ref tj, ref tj1, ref result);
2450            return result;
2451        }
2452
2453
2454        /*************************************************************************
2455        Tail(S, 8, 30)
2456        *************************************************************************/
2457        private static double utbln8n30(double s)
2458        {
2459            double result = 0;
2460            double x = 0;
2461            double tj = 0;
2462            double tj1 = 0;
2463
2464            result = 0;
2465            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2466            tj = 1;
2467            tj1 = x;
2468            ucheb(x, -4.318823e+00, ref tj, ref tj1, ref result);
2469            ucheb(x, -4.567159e+00, ref tj, ref tj1, ref result);
2470            ucheb(x, -1.064864e+00, ref tj, ref tj1, ref result);
2471            ucheb(x, -1.688413e-01, ref tj, ref tj1, ref result);
2472            ucheb(x, -4.153712e-02, ref tj, ref tj1, ref result);
2473            ucheb(x, -1.309389e-02, ref tj, ref tj1, ref result);
2474            ucheb(x, -4.226861e-03, ref tj, ref tj1, ref result);
2475            ucheb(x, -1.523815e-03, ref tj, ref tj1, ref result);
2476            ucheb(x, -5.780987e-04, ref tj, ref tj1, ref result);
2477            ucheb(x, -2.166866e-04, ref tj, ref tj1, ref result);
2478            ucheb(x, -6.922431e-05, ref tj, ref tj1, ref result);
2479            ucheb(x, -1.466397e-05, ref tj, ref tj1, ref result);
2480            ucheb(x, -5.690036e-06, ref tj, ref tj1, ref result);
2481            ucheb(x, -1.008185e-05, ref tj, ref tj1, ref result);
2482            ucheb(x, -9.271903e-06, ref tj, ref tj1, ref result);
2483            ucheb(x, -7.534751e-06, ref tj, ref tj1, ref result);
2484            return result;
2485        }
2486
2487
2488        /*************************************************************************
2489        Tail(S, 8, 100)
2490        *************************************************************************/
2491        private static double utbln8n100(double s)
2492        {
2493            double result = 0;
2494            double x = 0;
2495            double tj = 0;
2496            double tj1 = 0;
2497
2498            result = 0;
2499            x = Math.Min(2*(s-0.000000e+00)/3.600000e+00-1, 1.0);
2500            tj = 1;
2501            tj1 = x;
2502            ucheb(x, -4.324531e+00, ref tj, ref tj1, ref result);
2503            ucheb(x, -4.547071e+00, ref tj, ref tj1, ref result);
2504            ucheb(x, -1.038129e+00, ref tj, ref tj1, ref result);
2505            ucheb(x, -1.541549e-01, ref tj, ref tj1, ref result);
2506            ucheb(x, -3.525605e-02, ref tj, ref tj1, ref result);
2507            ucheb(x, -1.044992e-02, ref tj, ref tj1, ref result);
2508            ucheb(x, -3.085713e-03, ref tj, ref tj1, ref result);
2509            ucheb(x, -1.017871e-03, ref tj, ref tj1, ref result);
2510            ucheb(x, -3.459226e-04, ref tj, ref tj1, ref result);
2511            ucheb(x, -1.092064e-04, ref tj, ref tj1, ref result);
2512            ucheb(x, -2.024349e-05, ref tj, ref tj1, ref result);
2513            ucheb(x, 7.366347e-06, ref tj, ref tj1, ref result);
2514            ucheb(x, 6.385637e-06, ref tj, ref tj1, ref result);
2515            ucheb(x, 8.321722e-08, ref tj, ref tj1, ref result);
2516            ucheb(x, -1.439286e-06, ref tj, ref tj1, ref result);
2517            ucheb(x, -3.058079e-07, ref tj, ref tj1, ref result);
2518            return result;
2519        }
2520
2521
2522        /*************************************************************************
2523        Tail(S, 9, 9)
2524        *************************************************************************/
2525        private static double utbln9n9(double s)
2526        {
2527            double result = 0;
2528            double x = 0;
2529            double tj = 0;
2530            double tj1 = 0;
2531
2532            result = 0;
2533            x = Math.Min(2*(s-0.000000e+00)/3.576237e+00-1, 1.0);
2534            tj = 1;
2535            tj1 = x;
2536            ucheb(x, -4.372857e+00, ref tj, ref tj1, ref result);
2537            ucheb(x, -4.750859e+00, ref tj, ref tj1, ref result);
2538            ucheb(x, -1.248233e+00, ref tj, ref tj1, ref result);
2539            ucheb(x, -2.792868e-01, ref tj, ref tj1, ref result);
2540            ucheb(x, -9.559372e-02, ref tj, ref tj1, ref result);
2541            ucheb(x, -3.894941e-02, ref tj, ref tj1, ref result);
2542            ucheb(x, -1.643256e-02, ref tj, ref tj1, ref result);
2543            ucheb(x, -7.091370e-03, ref tj, ref tj1, ref result);
2544            ucheb(x, -2.285034e-03, ref tj, ref tj1, ref result);
2545            ucheb(x, 6.112997e-04, ref tj, ref tj1, ref result);
2546            ucheb(x, 2.806229e-03, ref tj, ref tj1, ref result);
2547            ucheb(x, 4.150741e-03, ref tj, ref tj1, ref result);
2548            ucheb(x, 4.509825e-03, ref tj, ref tj1, ref result);
2549            ucheb(x, 3.891051e-03, ref tj, ref tj1, ref result);
2550            ucheb(x, 2.485013e-03, ref tj, ref tj1, ref result);
2551            ucheb(x, 1.343653e-03, ref tj, ref tj1, ref result);
2552            return result;
2553        }
2554
2555
2556        /*************************************************************************
2557        Tail(S, 9, 10)
2558        *************************************************************************/
2559        private static double utbln9n10(double s)
2560        {
2561            double result = 0;
2562            double x = 0;
2563            double tj = 0;
2564            double tj1 = 0;
2565
2566            result = 0;
2567            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2568            tj = 1;
2569            tj1 = x;
2570            ucheb(x, -4.516726e+00, ref tj, ref tj1, ref result);
2571            ucheb(x, -4.939333e+00, ref tj, ref tj1, ref result);
2572            ucheb(x, -1.305046e+00, ref tj, ref tj1, ref result);
2573            ucheb(x, -2.935326e-01, ref tj, ref tj1, ref result);
2574            ucheb(x, -1.029141e-01, ref tj, ref tj1, ref result);
2575            ucheb(x, -4.420592e-02, ref tj, ref tj1, ref result);
2576            ucheb(x, -2.053140e-02, ref tj, ref tj1, ref result);
2577            ucheb(x, -1.065930e-02, ref tj, ref tj1, ref result);
2578            ucheb(x, -5.523581e-03, ref tj, ref tj1, ref result);
2579            ucheb(x, -2.544888e-03, ref tj, ref tj1, ref result);
2580            ucheb(x, -1.813741e-04, ref tj, ref tj1, ref result);
2581            ucheb(x, 1.510631e-03, ref tj, ref tj1, ref result);
2582            ucheb(x, 2.536057e-03, ref tj, ref tj1, ref result);
2583            ucheb(x, 2.833815e-03, ref tj, ref tj1, ref result);
2584            ucheb(x, 2.189692e-03, ref tj, ref tj1, ref result);
2585            ucheb(x, 1.615050e-03, ref tj, ref tj1, ref result);
2586            return result;
2587        }
2588
2589
2590        /*************************************************************************
2591        Tail(S, 9, 11)
2592        *************************************************************************/
2593        private static double utbln9n11(double s)
2594        {
2595            double result = 0;
2596            double x = 0;
2597            double tj = 0;
2598            double tj1 = 0;
2599
2600            result = 0;
2601            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2602            tj = 1;
2603            tj1 = x;
2604            ucheb(x, -4.481308e+00, ref tj, ref tj1, ref result);
2605            ucheb(x, -4.867483e+00, ref tj, ref tj1, ref result);
2606            ucheb(x, -1.249072e+00, ref tj, ref tj1, ref result);
2607            ucheb(x, -2.591790e-01, ref tj, ref tj1, ref result);
2608            ucheb(x, -8.400128e-02, ref tj, ref tj1, ref result);
2609            ucheb(x, -3.341992e-02, ref tj, ref tj1, ref result);
2610            ucheb(x, -1.463680e-02, ref tj, ref tj1, ref result);
2611            ucheb(x, -7.487211e-03, ref tj, ref tj1, ref result);
2612            ucheb(x, -4.671196e-03, ref tj, ref tj1, ref result);
2613            ucheb(x, -3.343472e-03, ref tj, ref tj1, ref result);
2614            ucheb(x, -2.544146e-03, ref tj, ref tj1, ref result);
2615            ucheb(x, -1.802335e-03, ref tj, ref tj1, ref result);
2616            ucheb(x, -1.117084e-03, ref tj, ref tj1, ref result);
2617            ucheb(x, -6.217443e-04, ref tj, ref tj1, ref result);
2618            ucheb(x, -2.858766e-04, ref tj, ref tj1, ref result);
2619            ucheb(x, -3.193687e-04, ref tj, ref tj1, ref result);
2620            return result;
2621        }
2622
2623
2624        /*************************************************************************
2625        Tail(S, 9, 12)
2626        *************************************************************************/
2627        private static double utbln9n12(double s)
2628        {
2629            double result = 0;
2630            double x = 0;
2631            double tj = 0;
2632            double tj1 = 0;
2633
2634            result = 0;
2635            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2636            tj = 1;
2637            tj1 = x;
2638            ucheb(x, -4.456776e+00, ref tj, ref tj1, ref result);
2639            ucheb(x, -4.817037e+00, ref tj, ref tj1, ref result);
2640            ucheb(x, -1.209788e+00, ref tj, ref tj1, ref result);
2641            ucheb(x, -2.362108e-01, ref tj, ref tj1, ref result);
2642            ucheb(x, -7.171356e-02, ref tj, ref tj1, ref result);
2643            ucheb(x, -2.661557e-02, ref tj, ref tj1, ref result);
2644            ucheb(x, -1.026141e-02, ref tj, ref tj1, ref result);
2645            ucheb(x, -4.361908e-03, ref tj, ref tj1, ref result);
2646            ucheb(x, -2.093885e-03, ref tj, ref tj1, ref result);
2647            ucheb(x, -1.298389e-03, ref tj, ref tj1, ref result);
2648            ucheb(x, -9.663603e-04, ref tj, ref tj1, ref result);
2649            ucheb(x, -7.768522e-04, ref tj, ref tj1, ref result);
2650            ucheb(x, -5.579015e-04, ref tj, ref tj1, ref result);
2651            ucheb(x, -2.868677e-04, ref tj, ref tj1, ref result);
2652            ucheb(x, -7.440652e-05, ref tj, ref tj1, ref result);
2653            ucheb(x, 1.523037e-04, ref tj, ref tj1, ref result);
2654            return result;
2655        }
2656
2657
2658        /*************************************************************************
2659        Tail(S, 9, 13)
2660        *************************************************************************/
2661        private static double utbln9n13(double s)
2662        {
2663            double result = 0;
2664            double x = 0;
2665            double tj = 0;
2666            double tj1 = 0;
2667
2668            result = 0;
2669            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2670            tj = 1;
2671            tj1 = x;
2672            ucheb(x, -4.438840e+00, ref tj, ref tj1, ref result);
2673            ucheb(x, -4.779308e+00, ref tj, ref tj1, ref result);
2674            ucheb(x, -1.180614e+00, ref tj, ref tj1, ref result);
2675            ucheb(x, -2.196489e-01, ref tj, ref tj1, ref result);
2676            ucheb(x, -6.346621e-02, ref tj, ref tj1, ref result);
2677            ucheb(x, -2.234857e-02, ref tj, ref tj1, ref result);
2678            ucheb(x, -7.796211e-03, ref tj, ref tj1, ref result);
2679            ucheb(x, -2.575715e-03, ref tj, ref tj1, ref result);
2680            ucheb(x, -5.525647e-04, ref tj, ref tj1, ref result);
2681            ucheb(x, 1.964651e-04, ref tj, ref tj1, ref result);
2682            ucheb(x, 4.275235e-04, ref tj, ref tj1, ref result);
2683            ucheb(x, 4.299124e-04, ref tj, ref tj1, ref result);
2684            ucheb(x, 3.397416e-04, ref tj, ref tj1, ref result);
2685            ucheb(x, 2.295781e-04, ref tj, ref tj1, ref result);
2686            ucheb(x, 1.237619e-04, ref tj, ref tj1, ref result);
2687            ucheb(x, 7.269692e-05, ref tj, ref tj1, ref result);
2688            return result;
2689        }
2690
2691
2692        /*************************************************************************
2693        Tail(S, 9, 14)
2694        *************************************************************************/
2695        private static double utbln9n14(double s)
2696        {
2697            double result = 0;
2698            double x = 0;
2699            double tj = 0;
2700            double tj1 = 0;
2701
2702            result = 0;
2703            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2704            tj = 1;
2705            tj1 = x;
2706            ucheb(x, -4.425981e+00, ref tj, ref tj1, ref result);
2707            ucheb(x, -4.751545e+00, ref tj, ref tj1, ref result);
2708            ucheb(x, -1.159543e+00, ref tj, ref tj1, ref result);
2709            ucheb(x, -2.086570e-01, ref tj, ref tj1, ref result);
2710            ucheb(x, -5.917446e-02, ref tj, ref tj1, ref result);
2711            ucheb(x, -2.120112e-02, ref tj, ref tj1, ref result);
2712            ucheb(x, -8.175519e-03, ref tj, ref tj1, ref result);
2713            ucheb(x, -3.515473e-03, ref tj, ref tj1, ref result);
2714            ucheb(x, -1.727772e-03, ref tj, ref tj1, ref result);
2715            ucheb(x, -9.070629e-04, ref tj, ref tj1, ref result);
2716            ucheb(x, -5.677569e-04, ref tj, ref tj1, ref result);
2717            ucheb(x, -3.876953e-04, ref tj, ref tj1, ref result);
2718            ucheb(x, -3.233502e-04, ref tj, ref tj1, ref result);
2719            ucheb(x, -3.508182e-04, ref tj, ref tj1, ref result);
2720            ucheb(x, -3.120389e-04, ref tj, ref tj1, ref result);
2721            ucheb(x, -3.847212e-04, ref tj, ref tj1, ref result);
2722            return result;
2723        }
2724
2725
2726        /*************************************************************************
2727        Tail(S, 9, 15)
2728        *************************************************************************/
2729        private static double utbln9n15(double s)
2730        {
2731            double result = 0;
2732            double x = 0;
2733            double tj = 0;
2734            double tj1 = 0;
2735
2736            result = 0;
2737            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2738            tj = 1;
2739            tj1 = x;
2740            ucheb(x, -4.414952e+00, ref tj, ref tj1, ref result);
2741            ucheb(x, -4.727612e+00, ref tj, ref tj1, ref result);
2742            ucheb(x, -1.140634e+00, ref tj, ref tj1, ref result);
2743            ucheb(x, -1.981231e-01, ref tj, ref tj1, ref result);
2744            ucheb(x, -5.382635e-02, ref tj, ref tj1, ref result);
2745            ucheb(x, -1.853575e-02, ref tj, ref tj1, ref result);
2746            ucheb(x, -6.571051e-03, ref tj, ref tj1, ref result);
2747            ucheb(x, -2.567625e-03, ref tj, ref tj1, ref result);
2748            ucheb(x, -9.214197e-04, ref tj, ref tj1, ref result);
2749            ucheb(x, -2.448700e-04, ref tj, ref tj1, ref result);
2750            ucheb(x, 1.712669e-04, ref tj, ref tj1, ref result);
2751            ucheb(x, 4.015050e-04, ref tj, ref tj1, ref result);
2752            ucheb(x, 5.438610e-04, ref tj, ref tj1, ref result);
2753            ucheb(x, 6.301363e-04, ref tj, ref tj1, ref result);
2754            ucheb(x, 5.309386e-04, ref tj, ref tj1, ref result);
2755            ucheb(x, 5.164772e-04, ref tj, ref tj1, ref result);
2756            return result;
2757        }
2758
2759
2760        /*************************************************************************
2761        Tail(S, 9, 30)
2762        *************************************************************************/
2763        private static double utbln9n30(double s)
2764        {
2765            double result = 0;
2766            double x = 0;
2767            double tj = 0;
2768            double tj1 = 0;
2769
2770            result = 0;
2771            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2772            tj = 1;
2773            tj1 = x;
2774            ucheb(x, -4.370720e+00, ref tj, ref tj1, ref result);
2775            ucheb(x, -4.615712e+00, ref tj, ref tj1, ref result);
2776            ucheb(x, -1.050023e+00, ref tj, ref tj1, ref result);
2777            ucheb(x, -1.504775e-01, ref tj, ref tj1, ref result);
2778            ucheb(x, -3.318265e-02, ref tj, ref tj1, ref result);
2779            ucheb(x, -9.646826e-03, ref tj, ref tj1, ref result);
2780            ucheb(x, -2.741492e-03, ref tj, ref tj1, ref result);
2781            ucheb(x, -8.735360e-04, ref tj, ref tj1, ref result);
2782            ucheb(x, -2.966911e-04, ref tj, ref tj1, ref result);
2783            ucheb(x, -1.100738e-04, ref tj, ref tj1, ref result);
2784            ucheb(x, -4.348991e-05, ref tj, ref tj1, ref result);
2785            ucheb(x, -1.527687e-05, ref tj, ref tj1, ref result);
2786            ucheb(x, -2.917286e-06, ref tj, ref tj1, ref result);
2787            ucheb(x, 3.397466e-07, ref tj, ref tj1, ref result);
2788            ucheb(x, -2.360175e-07, ref tj, ref tj1, ref result);
2789            ucheb(x, -9.892252e-07, ref tj, ref tj1, ref result);
2790            return result;
2791        }
2792
2793
2794        /*************************************************************************
2795        Tail(S, 9, 100)
2796        *************************************************************************/
2797        private static double utbln9n100(double s)
2798        {
2799            double result = 0;
2800            double x = 0;
2801            double tj = 0;
2802            double tj1 = 0;
2803
2804            result = 0;
2805            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2806            tj = 1;
2807            tj1 = x;
2808            ucheb(x, -4.372506e+00, ref tj, ref tj1, ref result);
2809            ucheb(x, -4.590966e+00, ref tj, ref tj1, ref result);
2810            ucheb(x, -1.021758e+00, ref tj, ref tj1, ref result);
2811            ucheb(x, -1.359849e-01, ref tj, ref tj1, ref result);
2812            ucheb(x, -2.755519e-02, ref tj, ref tj1, ref result);
2813            ucheb(x, -7.533166e-03, ref tj, ref tj1, ref result);
2814            ucheb(x, -1.936659e-03, ref tj, ref tj1, ref result);
2815            ucheb(x, -5.634913e-04, ref tj, ref tj1, ref result);
2816            ucheb(x, -1.730053e-04, ref tj, ref tj1, ref result);
2817            ucheb(x, -5.791845e-05, ref tj, ref tj1, ref result);
2818            ucheb(x, -2.030682e-05, ref tj, ref tj1, ref result);
2819            ucheb(x, -5.228663e-06, ref tj, ref tj1, ref result);
2820            ucheb(x, 8.631175e-07, ref tj, ref tj1, ref result);
2821            ucheb(x, 1.636749e-06, ref tj, ref tj1, ref result);
2822            ucheb(x, 4.404599e-07, ref tj, ref tj1, ref result);
2823            ucheb(x, -2.789872e-07, ref tj, ref tj1, ref result);
2824            return result;
2825        }
2826
2827
2828        /*************************************************************************
2829        Tail(S, 10, 10)
2830        *************************************************************************/
2831        private static double utbln10n10(double s)
2832        {
2833            double result = 0;
2834            double x = 0;
2835            double tj = 0;
2836            double tj1 = 0;
2837
2838            result = 0;
2839            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2840            tj = 1;
2841            tj1 = x;
2842            ucheb(x, -4.468831e+00, ref tj, ref tj1, ref result);
2843            ucheb(x, -4.844398e+00, ref tj, ref tj1, ref result);
2844            ucheb(x, -1.231728e+00, ref tj, ref tj1, ref result);
2845            ucheb(x, -2.486073e-01, ref tj, ref tj1, ref result);
2846            ucheb(x, -7.781321e-02, ref tj, ref tj1, ref result);
2847            ucheb(x, -2.971425e-02, ref tj, ref tj1, ref result);
2848            ucheb(x, -1.215371e-02, ref tj, ref tj1, ref result);
2849            ucheb(x, -5.828451e-03, ref tj, ref tj1, ref result);
2850            ucheb(x, -3.419872e-03, ref tj, ref tj1, ref result);
2851            ucheb(x, -2.430165e-03, ref tj, ref tj1, ref result);
2852            ucheb(x, -1.740363e-03, ref tj, ref tj1, ref result);
2853            ucheb(x, -1.049211e-03, ref tj, ref tj1, ref result);
2854            ucheb(x, -3.269371e-04, ref tj, ref tj1, ref result);
2855            ucheb(x, 2.211393e-04, ref tj, ref tj1, ref result);
2856            ucheb(x, 4.232314e-04, ref tj, ref tj1, ref result);
2857            ucheb(x, 3.016081e-04, ref tj, ref tj1, ref result);
2858            return result;
2859        }
2860
2861
2862        /*************************************************************************
2863        Tail(S, 10, 11)
2864        *************************************************************************/
2865        private static double utbln10n11(double s)
2866        {
2867            double result = 0;
2868            double x = 0;
2869            double tj = 0;
2870            double tj1 = 0;
2871
2872            result = 0;
2873            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2874            tj = 1;
2875            tj1 = x;
2876            ucheb(x, -4.437998e+00, ref tj, ref tj1, ref result);
2877            ucheb(x, -4.782296e+00, ref tj, ref tj1, ref result);
2878            ucheb(x, -1.184732e+00, ref tj, ref tj1, ref result);
2879            ucheb(x, -2.219585e-01, ref tj, ref tj1, ref result);
2880            ucheb(x, -6.457012e-02, ref tj, ref tj1, ref result);
2881            ucheb(x, -2.296008e-02, ref tj, ref tj1, ref result);
2882            ucheb(x, -8.481501e-03, ref tj, ref tj1, ref result);
2883            ucheb(x, -3.527940e-03, ref tj, ref tj1, ref result);
2884            ucheb(x, -1.953426e-03, ref tj, ref tj1, ref result);
2885            ucheb(x, -1.563840e-03, ref tj, ref tj1, ref result);
2886            ucheb(x, -1.574403e-03, ref tj, ref tj1, ref result);
2887            ucheb(x, -1.535775e-03, ref tj, ref tj1, ref result);
2888            ucheb(x, -1.338037e-03, ref tj, ref tj1, ref result);
2889            ucheb(x, -1.002654e-03, ref tj, ref tj1, ref result);
2890            ucheb(x, -5.852676e-04, ref tj, ref tj1, ref result);
2891            ucheb(x, -3.318132e-04, ref tj, ref tj1, ref result);
2892            return result;
2893        }
2894
2895
2896        /*************************************************************************
2897        Tail(S, 10, 12)
2898        *************************************************************************/
2899        private static double utbln10n12(double s)
2900        {
2901            double result = 0;
2902            double x = 0;
2903            double tj = 0;
2904            double tj1 = 0;
2905
2906            result = 0;
2907            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2908            tj = 1;
2909            tj1 = x;
2910            ucheb(x, -4.416082e+00, ref tj, ref tj1, ref result);
2911            ucheb(x, -4.737458e+00, ref tj, ref tj1, ref result);
2912            ucheb(x, -1.150952e+00, ref tj, ref tj1, ref result);
2913            ucheb(x, -2.036884e-01, ref tj, ref tj1, ref result);
2914            ucheb(x, -5.609030e-02, ref tj, ref tj1, ref result);
2915            ucheb(x, -1.908684e-02, ref tj, ref tj1, ref result);
2916            ucheb(x, -6.439666e-03, ref tj, ref tj1, ref result);
2917            ucheb(x, -2.162647e-03, ref tj, ref tj1, ref result);
2918            ucheb(x, -6.451601e-04, ref tj, ref tj1, ref result);
2919            ucheb(x, -2.148757e-04, ref tj, ref tj1, ref result);
2920            ucheb(x, -1.803981e-04, ref tj, ref tj1, ref result);
2921            ucheb(x, -2.731621e-04, ref tj, ref tj1, ref result);
2922            ucheb(x, -3.346903e-04, ref tj, ref tj1, ref result);
2923            ucheb(x, -3.013151e-04, ref tj, ref tj1, ref result);
2924            ucheb(x, -1.956148e-04, ref tj, ref tj1, ref result);
2925            ucheb(x, -2.438381e-05, ref tj, ref tj1, ref result);
2926            return result;
2927        }
2928
2929
2930        /*************************************************************************
2931        Tail(S, 10, 13)
2932        *************************************************************************/
2933        private static double utbln10n13(double s)
2934        {
2935            double result = 0;
2936            double x = 0;
2937            double tj = 0;
2938            double tj1 = 0;
2939
2940            result = 0;
2941            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2942            tj = 1;
2943            tj1 = x;
2944            ucheb(x, -4.399480e+00, ref tj, ref tj1, ref result);
2945            ucheb(x, -4.702863e+00, ref tj, ref tj1, ref result);
2946            ucheb(x, -1.124829e+00, ref tj, ref tj1, ref result);
2947            ucheb(x, -1.897428e-01, ref tj, ref tj1, ref result);
2948            ucheb(x, -4.979802e-02, ref tj, ref tj1, ref result);
2949            ucheb(x, -1.634368e-02, ref tj, ref tj1, ref result);
2950            ucheb(x, -5.180461e-03, ref tj, ref tj1, ref result);
2951            ucheb(x, -1.484926e-03, ref tj, ref tj1, ref result);
2952            ucheb(x, -7.864376e-05, ref tj, ref tj1, ref result);
2953            ucheb(x, 4.186576e-04, ref tj, ref tj1, ref result);
2954            ucheb(x, 5.886925e-04, ref tj, ref tj1, ref result);
2955            ucheb(x, 5.836828e-04, ref tj, ref tj1, ref result);
2956            ucheb(x, 5.074756e-04, ref tj, ref tj1, ref result);
2957            ucheb(x, 4.209547e-04, ref tj, ref tj1, ref result);
2958            ucheb(x, 2.883266e-04, ref tj, ref tj1, ref result);
2959            ucheb(x, 2.380143e-04, ref tj, ref tj1, ref result);
2960            return result;
2961        }
2962
2963
2964        /*************************************************************************
2965        Tail(S, 10, 14)
2966        *************************************************************************/
2967        private static double utbln10n14(double s)
2968        {
2969            double result = 0;
2970            double x = 0;
2971            double tj = 0;
2972            double tj1 = 0;
2973
2974            result = 0;
2975            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
2976            tj = 1;
2977            tj1 = x;
2978            ucheb(x, -4.386924e+00, ref tj, ref tj1, ref result);
2979            ucheb(x, -4.676124e+00, ref tj, ref tj1, ref result);
2980            ucheb(x, -1.104740e+00, ref tj, ref tj1, ref result);
2981            ucheb(x, -1.793826e-01, ref tj, ref tj1, ref result);
2982            ucheb(x, -4.558886e-02, ref tj, ref tj1, ref result);
2983            ucheb(x, -1.492462e-02, ref tj, ref tj1, ref result);
2984            ucheb(x, -5.052903e-03, ref tj, ref tj1, ref result);
2985            ucheb(x, -1.917782e-03, ref tj, ref tj1, ref result);
2986            ucheb(x, -7.878696e-04, ref tj, ref tj1, ref result);
2987            ucheb(x, -3.576046e-04, ref tj, ref tj1, ref result);
2988            ucheb(x, -1.764551e-04, ref tj, ref tj1, ref result);
2989            ucheb(x, -9.288778e-05, ref tj, ref tj1, ref result);
2990            ucheb(x, -4.757658e-05, ref tj, ref tj1, ref result);
2991            ucheb(x, -2.299101e-05, ref tj, ref tj1, ref result);
2992            ucheb(x, -9.265197e-06, ref tj, ref tj1, ref result);
2993            ucheb(x, -2.384503e-07, ref tj, ref tj1, ref result);
2994            return result;
2995        }
2996
2997
2998        /*************************************************************************
2999        Tail(S, 10, 15)
3000        *************************************************************************/
3001        private static double utbln10n15(double s)
3002        {
3003            double result = 0;
3004            double x = 0;
3005            double tj = 0;
3006            double tj1 = 0;
3007
3008            result = 0;
3009            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
3010            tj = 1;
3011            tj1 = x;
3012            ucheb(x, -4.376846e+00, ref tj, ref tj1, ref result);
3013            ucheb(x, -4.654247e+00, ref tj, ref tj1, ref result);
3014            ucheb(x, -1.088083e+00, ref tj, ref tj1, ref result);
3015            ucheb(x, -1.705945e-01, ref tj, ref tj1, ref result);
3016            ucheb(x, -4.169677e-02, ref tj, ref tj1, ref result);
3017            ucheb(x, -1.317213e-02, ref tj, ref tj1, ref result);
3018            ucheb(x, -4.264836e-03, ref tj, ref tj1, ref result);
3019            ucheb(x, -1.548024e-03, ref tj, ref tj1, ref result);
3020            ucheb(x, -6.633910e-04, ref tj, ref tj1, ref result);
3021            ucheb(x, -3.505621e-04, ref tj, ref tj1, ref result);
3022            ucheb(x, -2.658588e-04, ref tj, ref tj1, ref result);
3023            ucheb(x, -2.320254e-04, ref tj, ref tj1, ref result);
3024            ucheb(x, -2.175277e-04, ref tj, ref tj1, ref result);
3025            ucheb(x, -2.122317e-04, ref tj, ref tj1, ref result);
3026            ucheb(x, -1.675688e-04, ref tj, ref tj1, ref result);
3027            ucheb(x, -1.661363e-04, ref tj, ref tj1, ref result);
3028            return result;
3029        }
3030
3031
3032        /*************************************************************************
3033        Tail(S, 10, 30)
3034        *************************************************************************/
3035        private static double utbln10n30(double s)
3036        {
3037            double result = 0;
3038            double x = 0;
3039            double tj = 0;
3040            double tj1 = 0;
3041
3042            result = 0;
3043            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
3044            tj = 1;
3045            tj1 = x;
3046            ucheb(x, -4.333977e+00, ref tj, ref tj1, ref result);
3047            ucheb(x, -4.548099e+00, ref tj, ref tj1, ref result);
3048            ucheb(x, -1.004444e+00, ref tj, ref tj1, ref result);
3049            ucheb(x, -1.291014e-01, ref tj, ref tj1, ref result);
3050            ucheb(x, -2.523674e-02, ref tj, ref tj1, ref result);
3051            ucheb(x, -6.828211e-03, ref tj, ref tj1, ref result);
3052            ucheb(x, -1.716917e-03, ref tj, ref tj1, ref result);
3053            ucheb(x, -4.894256e-04, ref tj, ref tj1, ref result);
3054            ucheb(x, -1.433371e-04, ref tj, ref tj1, ref result);
3055            ucheb(x, -4.522675e-05, ref tj, ref tj1, ref result);
3056            ucheb(x, -1.764192e-05, ref tj, ref tj1, ref result);
3057            ucheb(x, -9.140235e-06, ref tj, ref tj1, ref result);
3058            ucheb(x, -5.629230e-06, ref tj, ref tj1, ref result);
3059            ucheb(x, -3.541895e-06, ref tj, ref tj1, ref result);
3060            ucheb(x, -1.944946e-06, ref tj, ref tj1, ref result);
3061            ucheb(x, -1.726360e-06, ref tj, ref tj1, ref result);
3062            return result;
3063        }
3064
3065
3066        /*************************************************************************
3067        Tail(S, 10, 100)
3068        *************************************************************************/
3069        private static double utbln10n100(double s)
3070        {
3071            double result = 0;
3072            double x = 0;
3073            double tj = 0;
3074            double tj1 = 0;
3075
3076            result = 0;
3077            x = Math.Min(2*(s-0.000000e+00)/3.650000e+00-1, 1.0);
3078            tj = 1;
3079            tj1 = x;
3080            ucheb(x, -4.334008e+00, ref tj, ref tj1, ref result);
3081            ucheb(x, -4.522316e+00, ref tj, ref tj1, ref result);
3082            ucheb(x, -9.769627e-01, ref tj, ref tj1, ref result);
3083            ucheb(x, -1.158110e-01, ref tj, ref tj1, ref result);
3084            ucheb(x, -2.053650e-02, ref tj, ref tj1, ref result);
3085            ucheb(x, -5.242235e-03, ref tj, ref tj1, ref result);
3086            ucheb(x, -1.173571e-03, ref tj, ref tj1, ref result);
3087            ucheb(x, -3.033661e-04, ref tj, ref tj1, ref result);
3088            ucheb(x, -7.824732e-05, ref tj, ref tj1, ref result);
3089            ucheb(x, -2.084420e-05, ref tj, ref tj1, ref result);
3090            ucheb(x, -6.610036e-06, ref tj, ref tj1, ref result);
3091            ucheb(x, -2.728155e-06, ref tj, ref tj1, ref result);
3092            ucheb(x, -1.217130e-06, ref tj, ref tj1, ref result);
3093            ucheb(x, -2.340966e-07, ref tj, ref tj1, ref result);
3094            ucheb(x, 2.001235e-07, ref tj, ref tj1, ref result);
3095            ucheb(x, 1.694052e-07, ref tj, ref tj1, ref result);
3096            return result;
3097        }
3098
3099
3100        /*************************************************************************
3101        Tail(S, 11, 11)
3102        *************************************************************************/
3103        private static double utbln11n11(double s)
3104        {
3105            double result = 0;
3106            double x = 0;
3107            double tj = 0;
3108            double tj1 = 0;
3109
3110            result = 0;
3111            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3112            tj = 1;
3113            tj1 = x;
3114            ucheb(x, -4.519760e+00, ref tj, ref tj1, ref result);
3115            ucheb(x, -4.880694e+00, ref tj, ref tj1, ref result);
3116            ucheb(x, -1.200698e+00, ref tj, ref tj1, ref result);
3117            ucheb(x, -2.174092e-01, ref tj, ref tj1, ref result);
3118            ucheb(x, -6.072304e-02, ref tj, ref tj1, ref result);
3119            ucheb(x, -2.054773e-02, ref tj, ref tj1, ref result);
3120            ucheb(x, -6.506613e-03, ref tj, ref tj1, ref result);
3121            ucheb(x, -1.813942e-03, ref tj, ref tj1, ref result);
3122            ucheb(x, -1.223644e-04, ref tj, ref tj1, ref result);
3123            ucheb(x, 2.417416e-04, ref tj, ref tj1, ref result);
3124            ucheb(x, 2.499166e-04, ref tj, ref tj1, ref result);
3125            ucheb(x, 1.194332e-04, ref tj, ref tj1, ref result);
3126            ucheb(x, 7.369096e-05, ref tj, ref tj1, ref result);
3127            ucheb(x, 1.968590e-04, ref tj, ref tj1, ref result);
3128            ucheb(x, 2.630532e-04, ref tj, ref tj1, ref result);
3129            ucheb(x, 5.061000e-04, ref tj, ref tj1, ref result);
3130            return result;
3131        }
3132
3133
3134        /*************************************************************************
3135        Tail(S, 11, 12)
3136        *************************************************************************/
3137        private static double utbln11n12(double s)
3138        {
3139            double result = 0;
3140            double x = 0;
3141            double tj = 0;
3142            double tj1 = 0;
3143
3144            result = 0;
3145            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3146            tj = 1;
3147            tj1 = x;
3148            ucheb(x, -4.495790e+00, ref tj, ref tj1, ref result);
3149            ucheb(x, -4.832622e+00, ref tj, ref tj1, ref result);
3150            ucheb(x, -1.165420e+00, ref tj, ref tj1, ref result);
3151            ucheb(x, -1.987306e-01, ref tj, ref tj1, ref result);
3152            ucheb(x, -5.265621e-02, ref tj, ref tj1, ref result);
3153            ucheb(x, -1.723537e-02, ref tj, ref tj1, ref result);
3154            ucheb(x, -5.347406e-03, ref tj, ref tj1, ref result);
3155            ucheb(x, -1.353464e-03, ref tj, ref tj1, ref result);
3156            ucheb(x, 6.613369e-05, ref tj, ref tj1, ref result);
3157            ucheb(x, 5.102522e-04, ref tj, ref tj1, ref result);
3158            ucheb(x, 5.237709e-04, ref tj, ref tj1, ref result);
3159            ucheb(x, 3.665652e-04, ref tj, ref tj1, ref result);
3160            ucheb(x, 1.626903e-04, ref tj, ref tj1, ref result);
3161            ucheb(x, -1.167518e-05, ref tj, ref tj1, ref result);
3162            ucheb(x, -8.564455e-05, ref tj, ref tj1, ref result);
3163            ucheb(x, -1.047320e-04, ref tj, ref tj1, ref result);
3164            return result;
3165        }
3166
3167
3168        /*************************************************************************
3169        Tail(S, 11, 13)
3170        *************************************************************************/
3171        private static double utbln11n13(double s)
3172        {
3173            double result = 0;
3174            double x = 0;
3175            double tj = 0;
3176            double tj1 = 0;
3177
3178            result = 0;
3179            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3180            tj = 1;
3181            tj1 = x;
3182            ucheb(x, -4.477880e+00, ref tj, ref tj1, ref result);
3183            ucheb(x, -4.796242e+00, ref tj, ref tj1, ref result);
3184            ucheb(x, -1.138769e+00, ref tj, ref tj1, ref result);
3185            ucheb(x, -1.851739e-01, ref tj, ref tj1, ref result);
3186            ucheb(x, -4.722104e-02, ref tj, ref tj1, ref result);
3187            ucheb(x, -1.548304e-02, ref tj, ref tj1, ref result);
3188            ucheb(x, -5.176683e-03, ref tj, ref tj1, ref result);
3189            ucheb(x, -1.817895e-03, ref tj, ref tj1, ref result);
3190            ucheb(x, -5.842451e-04, ref tj, ref tj1, ref result);
3191            ucheb(x, -8.935870e-05, ref tj, ref tj1, ref result);
3192            ucheb(x, 8.421777e-05, ref tj, ref tj1, ref result);
3193            ucheb(x, 1.238831e-04, ref tj, ref tj1, ref result);
3194            ucheb(x, 8.867026e-05, ref tj, ref tj1, ref result);
3195            ucheb(x, 1.458255e-05, ref tj, ref tj1, ref result);
3196            ucheb(x, -3.306259e-05, ref tj, ref tj1, ref result);
3197            ucheb(x, -8.961487e-05, ref tj, ref tj1, ref result);
3198            return result;
3199        }
3200
3201
3202        /*************************************************************************
3203        Tail(S, 11, 14)
3204        *************************************************************************/
3205        private static double utbln11n14(double s)
3206        {
3207            double result = 0;
3208            double x = 0;
3209            double tj = 0;
3210            double tj1 = 0;
3211
3212            result = 0;
3213            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3214            tj = 1;
3215            tj1 = x;
3216            ucheb(x, -4.463683e+00, ref tj, ref tj1, ref result);
3217            ucheb(x, -4.766969e+00, ref tj, ref tj1, ref result);
3218            ucheb(x, -1.117082e+00, ref tj, ref tj1, ref result);
3219            ucheb(x, -1.739574e-01, ref tj, ref tj1, ref result);
3220            ucheb(x, -4.238865e-02, ref tj, ref tj1, ref result);
3221            ucheb(x, -1.350306e-02, ref tj, ref tj1, ref result);
3222            ucheb(x, -4.425871e-03, ref tj, ref tj1, ref result);
3223            ucheb(x, -1.640172e-03, ref tj, ref tj1, ref result);
3224            ucheb(x, -6.660633e-04, ref tj, ref tj1, ref result);
3225            ucheb(x, -2.879883e-04, ref tj, ref tj1, ref result);
3226            ucheb(x, -1.349658e-04, ref tj, ref tj1, ref result);
3227            ucheb(x, -6.271795e-05, ref tj, ref tj1, ref result);
3228            ucheb(x, -3.304544e-05, ref tj, ref tj1, ref result);
3229            ucheb(x, -3.024201e-05, ref tj, ref tj1, ref result);
3230            ucheb(x, -2.816867e-05, ref tj, ref tj1, ref result);
3231            ucheb(x, -4.596787e-05, ref tj, ref tj1, ref result);
3232            return result;
3233        }
3234
3235
3236        /*************************************************************************
3237        Tail(S, 11, 15)
3238        *************************************************************************/
3239        private static double utbln11n15(double s)
3240        {
3241            double result = 0;
3242            double x = 0;
3243            double tj = 0;
3244            double tj1 = 0;
3245
3246            result = 0;
3247            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3248            tj = 1;
3249            tj1 = x;
3250            ucheb(x, -4.452526e+00, ref tj, ref tj1, ref result);
3251            ucheb(x, -4.743570e+00, ref tj, ref tj1, ref result);
3252            ucheb(x, -1.099705e+00, ref tj, ref tj1, ref result);
3253            ucheb(x, -1.650612e-01, ref tj, ref tj1, ref result);
3254            ucheb(x, -3.858285e-02, ref tj, ref tj1, ref result);
3255            ucheb(x, -1.187036e-02, ref tj, ref tj1, ref result);
3256            ucheb(x, -3.689241e-03, ref tj, ref tj1, ref result);
3257            ucheb(x, -1.294360e-03, ref tj, ref tj1, ref result);
3258            ucheb(x, -5.072623e-04, ref tj, ref tj1, ref result);
3259            ucheb(x, -2.278008e-04, ref tj, ref tj1, ref result);
3260            ucheb(x, -1.322382e-04, ref tj, ref tj1, ref result);
3261            ucheb(x, -9.131558e-05, ref tj, ref tj1, ref result);
3262            ucheb(x, -7.305669e-05, ref tj, ref tj1, ref result);
3263            ucheb(x, -6.825627e-05, ref tj, ref tj1, ref result);
3264            ucheb(x, -5.332689e-05, ref tj, ref tj1, ref result);
3265            ucheb(x, -6.120973e-05, ref tj, ref tj1, ref result);
3266            return result;
3267        }
3268
3269
3270        /*************************************************************************
3271        Tail(S, 11, 30)
3272        *************************************************************************/
3273        private static double utbln11n30(double s)
3274        {
3275            double result = 0;
3276            double x = 0;
3277            double tj = 0;
3278            double tj1 = 0;
3279
3280            result = 0;
3281            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3282            tj = 1;
3283            tj1 = x;
3284            ucheb(x, -4.402621e+00, ref tj, ref tj1, ref result);
3285            ucheb(x, -4.627440e+00, ref tj, ref tj1, ref result);
3286            ucheb(x, -1.011333e+00, ref tj, ref tj1, ref result);
3287            ucheb(x, -1.224126e-01, ref tj, ref tj1, ref result);
3288            ucheb(x, -2.232856e-02, ref tj, ref tj1, ref result);
3289            ucheb(x, -5.859347e-03, ref tj, ref tj1, ref result);
3290            ucheb(x, -1.377381e-03, ref tj, ref tj1, ref result);
3291            ucheb(x, -3.756709e-04, ref tj, ref tj1, ref result);
3292            ucheb(x, -1.033230e-04, ref tj, ref tj1, ref result);
3293            ucheb(x, -2.875472e-05, ref tj, ref tj1, ref result);
3294            ucheb(x, -8.608399e-06, ref tj, ref tj1, ref result);
3295            ucheb(x, -3.102943e-06, ref tj, ref tj1, ref result);
3296            ucheb(x, -1.740693e-06, ref tj, ref tj1, ref result);
3297            ucheb(x, -1.343139e-06, ref tj, ref tj1, ref result);
3298            ucheb(x, -9.196878e-07, ref tj, ref tj1, ref result);
3299            ucheb(x, -6.658062e-07, ref tj, ref tj1, ref result);
3300            return result;
3301        }
3302
3303
3304        /*************************************************************************
3305        Tail(S, 11, 100)
3306        *************************************************************************/
3307        private static double utbln11n100(double s)
3308        {
3309            double result = 0;
3310            double x = 0;
3311            double tj = 0;
3312            double tj1 = 0;
3313
3314            result = 0;
3315            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3316            tj = 1;
3317            tj1 = x;
3318            ucheb(x, -4.398795e+00, ref tj, ref tj1, ref result);
3319            ucheb(x, -4.596486e+00, ref tj, ref tj1, ref result);
3320            ucheb(x, -9.814761e-01, ref tj, ref tj1, ref result);
3321            ucheb(x, -1.085187e-01, ref tj, ref tj1, ref result);
3322            ucheb(x, -1.766529e-02, ref tj, ref tj1, ref result);
3323            ucheb(x, -4.379425e-03, ref tj, ref tj1, ref result);
3324            ucheb(x, -8.986351e-04, ref tj, ref tj1, ref result);
3325            ucheb(x, -2.214705e-04, ref tj, ref tj1, ref result);
3326            ucheb(x, -5.360075e-05, ref tj, ref tj1, ref result);
3327            ucheb(x, -1.260869e-05, ref tj, ref tj1, ref result);
3328            ucheb(x, -3.033307e-06, ref tj, ref tj1, ref result);
3329            ucheb(x, -7.727087e-07, ref tj, ref tj1, ref result);
3330            ucheb(x, -3.393883e-07, ref tj, ref tj1, ref result);
3331            ucheb(x, -2.242989e-07, ref tj, ref tj1, ref result);
3332            ucheb(x, -1.111928e-07, ref tj, ref tj1, ref result);
3333            ucheb(x, 3.898823e-09, ref tj, ref tj1, ref result);
3334            return result;
3335        }
3336
3337
3338        /*************************************************************************
3339        Tail(S, 12, 12)
3340        *************************************************************************/
3341        private static double utbln12n12(double s)
3342        {
3343            double result = 0;
3344            double x = 0;
3345            double tj = 0;
3346            double tj1 = 0;
3347
3348            result = 0;
3349            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3350            tj = 1;
3351            tj1 = x;
3352            ucheb(x, -4.472616e+00, ref tj, ref tj1, ref result);
3353            ucheb(x, -4.786627e+00, ref tj, ref tj1, ref result);
3354            ucheb(x, -1.132099e+00, ref tj, ref tj1, ref result);
3355            ucheb(x, -1.817523e-01, ref tj, ref tj1, ref result);
3356            ucheb(x, -4.570179e-02, ref tj, ref tj1, ref result);
3357            ucheb(x, -1.479511e-02, ref tj, ref tj1, ref result);
3358            ucheb(x, -4.799492e-03, ref tj, ref tj1, ref result);
3359            ucheb(x, -1.565350e-03, ref tj, ref tj1, ref result);
3360            ucheb(x, -3.530139e-04, ref tj, ref tj1, ref result);
3361            ucheb(x, 1.380132e-04, ref tj, ref tj1, ref result);
3362            ucheb(x, 3.242761e-04, ref tj, ref tj1, ref result);
3363            ucheb(x, 3.576269e-04, ref tj, ref tj1, ref result);
3364            ucheb(x, 3.018771e-04, ref tj, ref tj1, ref result);
3365            ucheb(x, 1.933911e-04, ref tj, ref tj1, ref result);
3366            ucheb(x, 9.002799e-05, ref tj, ref tj1, ref result);
3367            ucheb(x, -2.022048e-06, ref tj, ref tj1, ref result);
3368            return result;
3369        }
3370
3371
3372        /*************************************************************************
3373        Tail(S, 12, 13)
3374        *************************************************************************/
3375        private static double utbln12n13(double s)
3376        {
3377            double result = 0;
3378            double x = 0;
3379            double tj = 0;
3380            double tj1 = 0;
3381
3382            result = 0;
3383            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3384            tj = 1;
3385            tj1 = x;
3386            ucheb(x, -4.454800e+00, ref tj, ref tj1, ref result);
3387            ucheb(x, -4.750794e+00, ref tj, ref tj1, ref result);
3388            ucheb(x, -1.105988e+00, ref tj, ref tj1, ref result);
3389            ucheb(x, -1.684754e-01, ref tj, ref tj1, ref result);
3390            ucheb(x, -4.011826e-02, ref tj, ref tj1, ref result);
3391            ucheb(x, -1.262579e-02, ref tj, ref tj1, ref result);
3392            ucheb(x, -4.044492e-03, ref tj, ref tj1, ref result);
3393            ucheb(x, -1.478741e-03, ref tj, ref tj1, ref result);
3394            ucheb(x, -5.322165e-04, ref tj, ref tj1, ref result);
3395            ucheb(x, -1.621104e-04, ref tj, ref tj1, ref result);
3396            ucheb(x, 4.068753e-05, ref tj, ref tj1, ref result);
3397            ucheb(x, 1.468396e-04, ref tj, ref tj1, ref result);
3398            ucheb(x, 2.056235e-04, ref tj, ref tj1, ref result);
3399            ucheb(x, 2.327375e-04, ref tj, ref tj1, ref result);
3400            ucheb(x, 1.914877e-04, ref tj, ref tj1, ref result);
3401            ucheb(x, 1.784191e-04, ref tj, ref tj1, ref result);
3402            return result;
3403        }
3404
3405
3406        /*************************************************************************
3407        Tail(S, 12, 14)
3408        *************************************************************************/
3409        private static double utbln12n14(double s)
3410        {
3411            double result = 0;
3412            double x = 0;
3413            double tj = 0;
3414            double tj1 = 0;
3415
3416            result = 0;
3417            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3418            tj = 1;
3419            tj1 = x;
3420            ucheb(x, -4.440910e+00, ref tj, ref tj1, ref result);
3421            ucheb(x, -4.722404e+00, ref tj, ref tj1, ref result);
3422            ucheb(x, -1.085254e+00, ref tj, ref tj1, ref result);
3423            ucheb(x, -1.579439e-01, ref tj, ref tj1, ref result);
3424            ucheb(x, -3.563738e-02, ref tj, ref tj1, ref result);
3425            ucheb(x, -1.066730e-02, ref tj, ref tj1, ref result);
3426            ucheb(x, -3.129346e-03, ref tj, ref tj1, ref result);
3427            ucheb(x, -1.014531e-03, ref tj, ref tj1, ref result);
3428            ucheb(x, -3.129679e-04, ref tj, ref tj1, ref result);
3429            ucheb(x, -8.000909e-05, ref tj, ref tj1, ref result);
3430            ucheb(x, 1.996174e-05, ref tj, ref tj1, ref result);
3431            ucheb(x, 6.377924e-05, ref tj, ref tj1, ref result);
3432            ucheb(x, 8.936304e-05, ref tj, ref tj1, ref result);
3433            ucheb(x, 1.051098e-04, ref tj, ref tj1, ref result);
3434            ucheb(x, 9.025820e-05, ref tj, ref tj1, ref result);
3435            ucheb(x, 8.730585e-05, ref tj, ref tj1, ref result);
3436            return result;
3437        }
3438
3439
3440        /*************************************************************************
3441        Tail(S, 12, 15)
3442        *************************************************************************/
3443        private static double utbln12n15(double s)
3444        {
3445            double result = 0;
3446            double x = 0;
3447            double tj = 0;
3448            double tj1 = 0;
3449
3450            result = 0;
3451            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3452            tj = 1;
3453            tj1 = x;
3454            ucheb(x, -4.430123e+00, ref tj, ref tj1, ref result);
3455            ucheb(x, -4.700008e+00, ref tj, ref tj1, ref result);
3456            ucheb(x, -1.068971e+00, ref tj, ref tj1, ref result);
3457            ucheb(x, -1.499725e-01, ref tj, ref tj1, ref result);
3458            ucheb(x, -3.250897e-02, ref tj, ref tj1, ref result);
3459            ucheb(x, -9.473145e-03, ref tj, ref tj1, ref result);
3460            ucheb(x, -2.680008e-03, ref tj, ref tj1, ref result);
3461            ucheb(x, -8.483350e-04, ref tj, ref tj1, ref result);
3462            ucheb(x, -2.766992e-04, ref tj, ref tj1, ref result);
3463            ucheb(x, -9.891081e-05, ref tj, ref tj1, ref result);
3464            ucheb(x, -4.015140e-05, ref tj, ref tj1, ref result);
3465            ucheb(x, -1.977756e-05, ref tj, ref tj1, ref result);
3466            ucheb(x, -8.707414e-06, ref tj, ref tj1, ref result);
3467            ucheb(x, 1.114786e-06, ref tj, ref tj1, ref result);
3468            ucheb(x, 6.238865e-06, ref tj, ref tj1, ref result);
3469            ucheb(x, 1.381445e-05, ref tj, ref tj1, ref result);
3470            return result;
3471        }
3472
3473
3474        /*************************************************************************
3475        Tail(S, 12, 30)
3476        *************************************************************************/
3477        private static double utbln12n30(double s)
3478        {
3479            double result = 0;
3480            double x = 0;
3481            double tj = 0;
3482            double tj1 = 0;
3483
3484            result = 0;
3485            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3486            tj = 1;
3487            tj1 = x;
3488            ucheb(x, -4.380023e+00, ref tj, ref tj1, ref result);
3489            ucheb(x, -4.585782e+00, ref tj, ref tj1, ref result);
3490            ucheb(x, -9.838583e-01, ref tj, ref tj1, ref result);
3491            ucheb(x, -1.103394e-01, ref tj, ref tj1, ref result);
3492            ucheb(x, -1.834015e-02, ref tj, ref tj1, ref result);
3493            ucheb(x, -4.635212e-03, ref tj, ref tj1, ref result);
3494            ucheb(x, -9.948212e-04, ref tj, ref tj1, ref result);
3495            ucheb(x, -2.574169e-04, ref tj, ref tj1, ref result);
3496            ucheb(x, -6.747980e-05, ref tj, ref tj1, ref result);
3497            ucheb(x, -1.833672e-05, ref tj, ref tj1, ref result);
3498            ucheb(x, -5.722433e-06, ref tj, ref tj1, ref result);
3499            ucheb(x, -2.181038e-06, ref tj, ref tj1, ref result);
3500            ucheb(x, -1.206473e-06, ref tj, ref tj1, ref result);
3501            ucheb(x, -9.716003e-07, ref tj, ref tj1, ref result);
3502            ucheb(x, -7.476434e-07, ref tj, ref tj1, ref result);
3503            ucheb(x, -7.217700e-07, ref tj, ref tj1, ref result);
3504            return result;
3505        }
3506
3507
3508        /*************************************************************************
3509        Tail(S, 12, 100)
3510        *************************************************************************/
3511        private static double utbln12n100(double s)
3512        {
3513            double result = 0;
3514            double x = 0;
3515            double tj = 0;
3516            double tj1 = 0;
3517
3518            result = 0;
3519            x = Math.Min(2*(s-0.000000e+00)/3.700000e+00-1, 1.0);
3520            tj = 1;
3521            tj1 = x;
3522            ucheb(x, -4.374567e+00, ref tj, ref tj1, ref result);
3523            ucheb(x, -4.553481e+00, ref tj, ref tj1, ref result);
3524            ucheb(x, -9.541334e-01, ref tj, ref tj1, ref result);
3525            ucheb(x, -9.701907e-02, ref tj, ref tj1, ref result);
3526            ucheb(x, -1.414757e-02, ref tj, ref tj1, ref result);
3527            ucheb(x, -3.404103e-03, ref tj, ref tj1, ref result);
3528            ucheb(x, -6.234388e-04, ref tj, ref tj1, ref result);
3529            ucheb(x, -1.453762e-04, ref tj, ref tj1, ref result);
3530            ucheb(x, -3.311060e-05, ref tj, ref tj1, ref result);
3531            ucheb(x, -7.317501e-06, ref tj, ref tj1, ref result);
3532            ucheb(x, -1.713888e-06, ref tj, ref tj1, ref result);
3533            ucheb(x, -3.309583e-07, ref tj, ref tj1, ref result);
3534            ucheb(x, -4.019804e-08, ref tj, ref tj1, ref result);
3535            ucheb(x, 1.224829e-09, ref tj, ref tj1, ref result);
3536            ucheb(x, -1.349019e-08, ref tj, ref tj1, ref result);
3537            ucheb(x, -1.893302e-08, ref tj, ref tj1, ref result);
3538            return result;
3539        }
3540
3541
3542        /*************************************************************************
3543        Tail(S, 13, 13)
3544        *************************************************************************/
3545        private static double utbln13n13(double s)
3546        {
3547            double result = 0;
3548            double x = 0;
3549            double tj = 0;
3550            double tj1 = 0;
3551
3552            result = 0;
3553            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3554            tj = 1;
3555            tj1 = x;
3556            ucheb(x, -4.541046e+00, ref tj, ref tj1, ref result);
3557            ucheb(x, -4.859047e+00, ref tj, ref tj1, ref result);
3558            ucheb(x, -1.130164e+00, ref tj, ref tj1, ref result);
3559            ucheb(x, -1.689719e-01, ref tj, ref tj1, ref result);
3560            ucheb(x, -3.950693e-02, ref tj, ref tj1, ref result);
3561            ucheb(x, -1.231455e-02, ref tj, ref tj1, ref result);
3562            ucheb(x, -3.976550e-03, ref tj, ref tj1, ref result);
3563            ucheb(x, -1.538455e-03, ref tj, ref tj1, ref result);
3564            ucheb(x, -7.245603e-04, ref tj, ref tj1, ref result);
3565            ucheb(x, -4.142647e-04, ref tj, ref tj1, ref result);
3566            ucheb(x, -2.831434e-04, ref tj, ref tj1, ref result);
3567            ucheb(x, -2.032483e-04, ref tj, ref tj1, ref result);
3568            ucheb(x, -1.488405e-04, ref tj, ref tj1, ref result);
3569            ucheb(x, -1.156927e-04, ref tj, ref tj1, ref result);
3570            ucheb(x, -7.949279e-05, ref tj, ref tj1, ref result);
3571            ucheb(x, -7.532700e-05, ref tj, ref tj1, ref result);
3572            return result;
3573        }
3574
3575
3576        /*************************************************************************
3577        Tail(S, 13, 14)
3578        *************************************************************************/
3579        private static double utbln13n14(double s)
3580        {
3581            double result = 0;
3582            double x = 0;
3583            double tj = 0;
3584            double tj1 = 0;
3585
3586            result = 0;
3587            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3588            tj = 1;
3589            tj1 = x;
3590            ucheb(x, -4.525655e+00, ref tj, ref tj1, ref result);
3591            ucheb(x, -4.828341e+00, ref tj, ref tj1, ref result);
3592            ucheb(x, -1.108110e+00, ref tj, ref tj1, ref result);
3593            ucheb(x, -1.579552e-01, ref tj, ref tj1, ref result);
3594            ucheb(x, -3.488307e-02, ref tj, ref tj1, ref result);
3595            ucheb(x, -1.032328e-02, ref tj, ref tj1, ref result);
3596            ucheb(x, -2.988741e-03, ref tj, ref tj1, ref result);
3597            ucheb(x, -9.766394e-04, ref tj, ref tj1, ref result);
3598            ucheb(x, -3.388950e-04, ref tj, ref tj1, ref result);
3599            ucheb(x, -1.338179e-04, ref tj, ref tj1, ref result);
3600            ucheb(x, -6.133440e-05, ref tj, ref tj1, ref result);
3601            ucheb(x, -3.023518e-05, ref tj, ref tj1, ref result);
3602            ucheb(x, -1.110570e-05, ref tj, ref tj1, ref result);
3603            ucheb(x, 4.202332e-06, ref tj, ref tj1, ref result);
3604            ucheb(x, 1.056132e-05, ref tj, ref tj1, ref result);
3605            ucheb(x, 1.536323e-05, ref tj, ref tj1, ref result);
3606            return result;
3607        }
3608
3609
3610        /*************************************************************************
3611        Tail(S, 13, 15)
3612        *************************************************************************/
3613        private static double utbln13n15(double s)
3614        {
3615            double result = 0;
3616            double x = 0;
3617            double tj = 0;
3618            double tj1 = 0;
3619
3620            result = 0;
3621            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3622            tj = 1;
3623            tj1 = x;
3624            ucheb(x, -4.513585e+00, ref tj, ref tj1, ref result);
3625            ucheb(x, -4.803952e+00, ref tj, ref tj1, ref result);
3626            ucheb(x, -1.090686e+00, ref tj, ref tj1, ref result);
3627            ucheb(x, -1.495310e-01, ref tj, ref tj1, ref result);
3628            ucheb(x, -3.160314e-02, ref tj, ref tj1, ref result);
3629            ucheb(x, -9.073124e-03, ref tj, ref tj1, ref result);
3630            ucheb(x, -2.480313e-03, ref tj, ref tj1, ref result);
3631            ucheb(x, -7.478239e-04, ref tj, ref tj1, ref result);
3632            ucheb(x, -2.140914e-04, ref tj, ref tj1, ref result);
3633            ucheb(x, -5.311541e-05, ref tj, ref tj1, ref result);
3634            ucheb(x, -2.677105e-06, ref tj, ref tj1, ref result);
3635            ucheb(x, 1.115464e-05, ref tj, ref tj1, ref result);
3636            ucheb(x, 1.578563e-05, ref tj, ref tj1, ref result);
3637            ucheb(x, 2.044604e-05, ref tj, ref tj1, ref result);
3638            ucheb(x, 1.888939e-05, ref tj, ref tj1, ref result);
3639            ucheb(x, 2.395644e-05, ref tj, ref tj1, ref result);
3640            return result;
3641        }
3642
3643
3644        /*************************************************************************
3645        Tail(S, 13, 30)
3646        *************************************************************************/
3647        private static double utbln13n30(double s)
3648        {
3649            double result = 0;
3650            double x = 0;
3651            double tj = 0;
3652            double tj1 = 0;
3653
3654            result = 0;
3655            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3656            tj = 1;
3657            tj1 = x;
3658            ucheb(x, -4.455999e+00, ref tj, ref tj1, ref result);
3659            ucheb(x, -4.678434e+00, ref tj, ref tj1, ref result);
3660            ucheb(x, -9.995491e-01, ref tj, ref tj1, ref result);
3661            ucheb(x, -1.078100e-01, ref tj, ref tj1, ref result);
3662            ucheb(x, -1.705220e-02, ref tj, ref tj1, ref result);
3663            ucheb(x, -4.258739e-03, ref tj, ref tj1, ref result);
3664            ucheb(x, -8.671526e-04, ref tj, ref tj1, ref result);
3665            ucheb(x, -2.185458e-04, ref tj, ref tj1, ref result);
3666            ucheb(x, -5.507764e-05, ref tj, ref tj1, ref result);
3667            ucheb(x, -1.411446e-05, ref tj, ref tj1, ref result);
3668            ucheb(x, -4.044355e-06, ref tj, ref tj1, ref result);
3669            ucheb(x, -1.285765e-06, ref tj, ref tj1, ref result);
3670            ucheb(x, -5.345282e-07, ref tj, ref tj1, ref result);
3671            ucheb(x, -3.066940e-07, ref tj, ref tj1, ref result);
3672            ucheb(x, -1.962037e-07, ref tj, ref tj1, ref result);
3673            ucheb(x, -1.723644e-07, ref tj, ref tj1, ref result);
3674            return result;
3675        }
3676
3677
3678        /*************************************************************************
3679        Tail(S, 13, 100)
3680        *************************************************************************/
3681        private static double utbln13n100(double s)
3682        {
3683            double result = 0;
3684            double x = 0;
3685            double tj = 0;
3686            double tj1 = 0;
3687
3688            result = 0;
3689            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3690            tj = 1;
3691            tj1 = x;
3692            ucheb(x, -4.446787e+00, ref tj, ref tj1, ref result);
3693            ucheb(x, -4.640804e+00, ref tj, ref tj1, ref result);
3694            ucheb(x, -9.671552e-01, ref tj, ref tj1, ref result);
3695            ucheb(x, -9.364990e-02, ref tj, ref tj1, ref result);
3696            ucheb(x, -1.274444e-02, ref tj, ref tj1, ref result);
3697            ucheb(x, -3.047440e-03, ref tj, ref tj1, ref result);
3698            ucheb(x, -5.161439e-04, ref tj, ref tj1, ref result);
3699            ucheb(x, -1.171729e-04, ref tj, ref tj1, ref result);
3700            ucheb(x, -2.562171e-05, ref tj, ref tj1, ref result);
3701            ucheb(x, -5.359762e-06, ref tj, ref tj1, ref result);
3702            ucheb(x, -1.275494e-06, ref tj, ref tj1, ref result);
3703            ucheb(x, -2.747635e-07, ref tj, ref tj1, ref result);
3704            ucheb(x, -5.700292e-08, ref tj, ref tj1, ref result);
3705            ucheb(x, -2.565559e-09, ref tj, ref tj1, ref result);
3706            ucheb(x, 5.005396e-09, ref tj, ref tj1, ref result);
3707            ucheb(x, 3.335794e-09, ref tj, ref tj1, ref result);
3708            return result;
3709        }
3710
3711
3712        /*************************************************************************
3713        Tail(S, 14, 14)
3714        *************************************************************************/
3715        private static double utbln14n14(double s)
3716        {
3717            double result = 0;
3718            double x = 0;
3719            double tj = 0;
3720            double tj1 = 0;
3721
3722            result = 0;
3723            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3724            tj = 1;
3725            tj1 = x;
3726            ucheb(x, -4.510624e+00, ref tj, ref tj1, ref result);
3727            ucheb(x, -4.798584e+00, ref tj, ref tj1, ref result);
3728            ucheb(x, -1.087107e+00, ref tj, ref tj1, ref result);
3729            ucheb(x, -1.478532e-01, ref tj, ref tj1, ref result);
3730            ucheb(x, -3.098050e-02, ref tj, ref tj1, ref result);
3731            ucheb(x, -8.855986e-03, ref tj, ref tj1, ref result);
3732            ucheb(x, -2.409083e-03, ref tj, ref tj1, ref result);
3733            ucheb(x, -7.299536e-04, ref tj, ref tj1, ref result);
3734            ucheb(x, -2.176177e-04, ref tj, ref tj1, ref result);
3735            ucheb(x, -6.479417e-05, ref tj, ref tj1, ref result);
3736            ucheb(x, -1.812761e-05, ref tj, ref tj1, ref result);
3737            ucheb(x, -5.225872e-06, ref tj, ref tj1, ref result);
3738            ucheb(x, 4.516521e-07, ref tj, ref tj1, ref result);
3739            ucheb(x, 6.730551e-06, ref tj, ref tj1, ref result);
3740            ucheb(x, 9.237563e-06, ref tj, ref tj1, ref result);
3741            ucheb(x, 1.611820e-05, ref tj, ref tj1, ref result);
3742            return result;
3743        }
3744
3745
3746        /*************************************************************************
3747        Tail(S, 14, 15)
3748        *************************************************************************/
3749        private static double utbln14n15(double s)
3750        {
3751            double result = 0;
3752            double x = 0;
3753            double tj = 0;
3754            double tj1 = 0;
3755
3756            result = 0;
3757            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3758            tj = 1;
3759            tj1 = x;
3760            ucheb(x, -4.498681e+00, ref tj, ref tj1, ref result);
3761            ucheb(x, -4.774668e+00, ref tj, ref tj1, ref result);
3762            ucheb(x, -1.070267e+00, ref tj, ref tj1, ref result);
3763            ucheb(x, -1.399348e-01, ref tj, ref tj1, ref result);
3764            ucheb(x, -2.807239e-02, ref tj, ref tj1, ref result);
3765            ucheb(x, -7.845763e-03, ref tj, ref tj1, ref result);
3766            ucheb(x, -2.071773e-03, ref tj, ref tj1, ref result);
3767            ucheb(x, -6.261698e-04, ref tj, ref tj1, ref result);
3768            ucheb(x, -2.011695e-04, ref tj, ref tj1, ref result);
3769            ucheb(x, -7.305946e-05, ref tj, ref tj1, ref result);
3770            ucheb(x, -3.879295e-05, ref tj, ref tj1, ref result);
3771            ucheb(x, -2.999439e-05, ref tj, ref tj1, ref result);
3772            ucheb(x, -2.904438e-05, ref tj, ref tj1, ref result);
3773            ucheb(x, -2.944986e-05, ref tj, ref tj1, ref result);
3774            ucheb(x, -2.373908e-05, ref tj, ref tj1, ref result);
3775            ucheb(x, -2.140794e-05, ref tj, ref tj1, ref result);
3776            return result;
3777        }
3778
3779
3780        /*************************************************************************
3781        Tail(S, 14, 30)
3782        *************************************************************************/
3783        private static double utbln14n30(double s)
3784        {
3785            double result = 0;
3786            double x = 0;
3787            double tj = 0;
3788            double tj1 = 0;
3789
3790            result = 0;
3791            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3792            tj = 1;
3793            tj1 = x;
3794            ucheb(x, -4.440378e+00, ref tj, ref tj1, ref result);
3795            ucheb(x, -4.649587e+00, ref tj, ref tj1, ref result);
3796            ucheb(x, -9.807829e-01, ref tj, ref tj1, ref result);
3797            ucheb(x, -9.989753e-02, ref tj, ref tj1, ref result);
3798            ucheb(x, -1.463646e-02, ref tj, ref tj1, ref result);
3799            ucheb(x, -3.586580e-03, ref tj, ref tj1, ref result);
3800            ucheb(x, -6.745917e-04, ref tj, ref tj1, ref result);
3801            ucheb(x, -1.635398e-04, ref tj, ref tj1, ref result);
3802            ucheb(x, -3.923172e-05, ref tj, ref tj1, ref result);
3803            ucheb(x, -9.446699e-06, ref tj, ref tj1, ref result);
3804            ucheb(x, -2.613892e-06, ref tj, ref tj1, ref result);
3805            ucheb(x, -8.214073e-07, ref tj, ref tj1, ref result);
3806            ucheb(x, -3.651683e-07, ref tj, ref tj1, ref result);
3807            ucheb(x, -2.272777e-07, ref tj, ref tj1, ref result);
3808            ucheb(x, -1.464988e-07, ref tj, ref tj1, ref result);
3809            ucheb(x, -1.109803e-07, ref tj, ref tj1, ref result);
3810            return result;
3811        }
3812
3813
3814        /*************************************************************************
3815        Tail(S, 14, 100)
3816        *************************************************************************/
3817        private static double utbln14n100(double s)
3818        {
3819            double result = 0;
3820            double x = 0;
3821            double tj = 0;
3822            double tj1 = 0;
3823
3824            result = 0;
3825            x = Math.Min(2*(s-0.000000e+00)/3.750000e+00-1, 1.0);
3826            tj = 1;
3827            tj1 = x;
3828            ucheb(x, -4.429701e+00, ref tj, ref tj1, ref result);
3829            ucheb(x, -4.610577e+00, ref tj, ref tj1, ref result);
3830            ucheb(x, -9.482675e-01, ref tj, ref tj1, ref result);
3831            ucheb(x, -8.605550e-02, ref tj, ref tj1, ref result);
3832            ucheb(x, -1.062151e-02, ref tj, ref tj1, ref result);
3833            ucheb(x, -2.525154e-03, ref tj, ref tj1, ref result);
3834            ucheb(x, -3.835983e-04, ref tj, ref tj1, ref result);
3835            ucheb(x, -8.411440e-05, ref tj, ref tj1, ref result);
3836            ucheb(x, -1.744901e-05, ref tj, ref tj1, ref result);
3837            ucheb(x, -3.318850e-06, ref tj, ref tj1, ref result);
3838            ucheb(x, -7.692100e-07, ref tj, ref tj1, ref result);
3839            ucheb(x, -1.536270e-07, ref tj, ref tj1, ref result);
3840            ucheb(x, -3.705888e-08, ref tj, ref tj1, ref result);
3841            ucheb(x, -7.999599e-09, ref tj, ref tj1, ref result);
3842            ucheb(x, -2.908395e-09, ref tj, ref tj1, ref result);
3843            ucheb(x, 1.546923e-09, ref tj, ref tj1, ref result);
3844            return result;
3845        }
3846
3847
3848        /*************************************************************************
3849        Tail(S, N1, N2)
3850        *************************************************************************/
3851        private static double usigma(double s,
3852            int n1,
3853            int n2)
3854        {
3855            double result = 0;
3856            double f0 = 0;
3857            double f1 = 0;
3858            double f2 = 0;
3859            double f3 = 0;
3860            double f4 = 0;
3861            double s0 = 0;
3862            double s1 = 0;
3863            double s2 = 0;
3864            double s3 = 0;
3865            double s4 = 0;
3866
3867           
3868            //
3869            // N1=5, N2 = 5, 6, 7, ...
3870            //
3871            if( Math.Min(n1, n2)==5 )
3872            {
3873                if( Math.Max(n1, n2)==5 )
3874                {
3875                    result = utbln5n5(s);
3876                }
3877                if( Math.Max(n1, n2)==6 )
3878                {
3879                    result = utbln5n6(s);
3880                }
3881                if( Math.Max(n1, n2)==7 )
3882                {
3883                    result = utbln5n7(s);
3884                }
3885                if( Math.Max(n1, n2)==8 )
3886                {
3887                    result = utbln5n8(s);
3888                }
3889                if( Math.Max(n1, n2)==9 )
3890                {
3891                    result = utbln5n9(s);
3892                }
3893                if( Math.Max(n1, n2)==10 )
3894                {
3895                    result = utbln5n10(s);
3896                }
3897                if( Math.Max(n1, n2)==11 )
3898                {
3899                    result = utbln5n11(s);
3900                }
3901                if( Math.Max(n1, n2)==12 )
3902                {
3903                    result = utbln5n12(s);
3904                }
3905                if( Math.Max(n1, n2)==13 )
3906                {
3907                    result = utbln5n13(s);
3908                }
3909                if( Math.Max(n1, n2)==14 )
3910                {
3911                    result = utbln5n14(s);
3912                }
3913                if( Math.Max(n1, n2)==15 )
3914                {
3915                    result = utbln5n15(s);
3916                }
3917                if( Math.Max(n1, n2)==16 )
3918                {
3919                    result = utbln5n16(s);
3920                }
3921                if( Math.Max(n1, n2)==17 )
3922                {
3923                    result = utbln5n17(s);
3924                }
3925                if( Math.Max(n1, n2)==18 )
3926                {
3927                    result = utbln5n18(s);
3928                }
3929                if( Math.Max(n1, n2)==19 )
3930                {
3931                    result = utbln5n19(s);
3932                }
3933                if( Math.Max(n1, n2)==20 )
3934                {
3935                    result = utbln5n20(s);
3936                }
3937                if( Math.Max(n1, n2)==21 )
3938                {
3939                    result = utbln5n21(s);
3940                }
3941                if( Math.Max(n1, n2)==22 )
3942                {
3943                    result = utbln5n22(s);
3944                }
3945                if( Math.Max(n1, n2)==23 )
3946                {
3947                    result = utbln5n23(s);
3948                }
3949                if( Math.Max(n1, n2)==24 )
3950                {
3951                    result = utbln5n24(s);
3952                }
3953                if( Math.Max(n1, n2)==25 )
3954                {
3955                    result = utbln5n25(s);
3956                }
3957                if( Math.Max(n1, n2)==26 )
3958                {
3959                    result = utbln5n26(s);
3960                }
3961                if( Math.Max(n1, n2)==27 )
3962                {
3963                    result = utbln5n27(s);
3964                }
3965                if( Math.Max(n1, n2)==28 )
3966                {
3967                    result = utbln5n28(s);
3968                }
3969                if( Math.Max(n1, n2)==29 )
3970                {
3971                    result = utbln5n29(s);
3972                }
3973                if( Math.Max(n1, n2)>29 )
3974                {
3975                    f0 = utbln5n15(s);
3976                    f1 = utbln5n30(s);
3977                    f2 = utbln5n100(s);
3978                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
3979                }
3980                return result;
3981            }
3982           
3983            //
3984            // N1=6, N2 = 6, 7, 8, ...
3985            //
3986            if( Math.Min(n1, n2)==6 )
3987            {
3988                if( Math.Max(n1, n2)==6 )
3989                {
3990                    result = utbln6n6(s);
3991                }
3992                if( Math.Max(n1, n2)==7 )
3993                {
3994                    result = utbln6n7(s);
3995                }
3996                if( Math.Max(n1, n2)==8 )
3997                {
3998                    result = utbln6n8(s);
3999                }
4000                if( Math.Max(n1, n2)==9 )
4001                {
4002                    result = utbln6n9(s);
4003                }
4004                if( Math.Max(n1, n2)==10 )
4005                {
4006                    result = utbln6n10(s);
4007                }
4008                if( Math.Max(n1, n2)==11 )
4009                {
4010                    result = utbln6n11(s);
4011                }
4012                if( Math.Max(n1, n2)==12 )
4013                {
4014                    result = utbln6n12(s);
4015                }
4016                if( Math.Max(n1, n2)==13 )
4017                {
4018                    result = utbln6n13(s);
4019                }
4020                if( Math.Max(n1, n2)==14 )
4021                {
4022                    result = utbln6n14(s);
4023                }
4024                if( Math.Max(n1, n2)==15 )
4025                {
4026                    result = utbln6n15(s);
4027                }
4028                if( Math.Max(n1, n2)>15 )
4029                {
4030                    f0 = utbln6n15(s);
4031                    f1 = utbln6n30(s);
4032                    f2 = utbln6n100(s);
4033                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4034                }
4035                return result;
4036            }
4037           
4038            //
4039            // N1=7, N2 = 7, 8, ...
4040            //
4041            if( Math.Min(n1, n2)==7 )
4042            {
4043                if( Math.Max(n1, n2)==7 )
4044                {
4045                    result = utbln7n7(s);
4046                }
4047                if( Math.Max(n1, n2)==8 )
4048                {
4049                    result = utbln7n8(s);
4050                }
4051                if( Math.Max(n1, n2)==9 )
4052                {
4053                    result = utbln7n9(s);
4054                }
4055                if( Math.Max(n1, n2)==10 )
4056                {
4057                    result = utbln7n10(s);
4058                }
4059                if( Math.Max(n1, n2)==11 )
4060                {
4061                    result = utbln7n11(s);
4062                }
4063                if( Math.Max(n1, n2)==12 )
4064                {
4065                    result = utbln7n12(s);
4066                }
4067                if( Math.Max(n1, n2)==13 )
4068                {
4069                    result = utbln7n13(s);
4070                }
4071                if( Math.Max(n1, n2)==14 )
4072                {
4073                    result = utbln7n14(s);
4074                }
4075                if( Math.Max(n1, n2)==15 )
4076                {
4077                    result = utbln7n15(s);
4078                }
4079                if( Math.Max(n1, n2)>15 )
4080                {
4081                    f0 = utbln7n15(s);
4082                    f1 = utbln7n30(s);
4083                    f2 = utbln7n100(s);
4084                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4085                }
4086                return result;
4087            }
4088           
4089            //
4090            // N1=8, N2 = 8, 9, 10, ...
4091            //
4092            if( Math.Min(n1, n2)==8 )
4093            {
4094                if( Math.Max(n1, n2)==8 )
4095                {
4096                    result = utbln8n8(s);
4097                }
4098                if( Math.Max(n1, n2)==9 )
4099                {
4100                    result = utbln8n9(s);
4101                }
4102                if( Math.Max(n1, n2)==10 )
4103                {
4104                    result = utbln8n10(s);
4105                }
4106                if( Math.Max(n1, n2)==11 )
4107                {
4108                    result = utbln8n11(s);
4109                }
4110                if( Math.Max(n1, n2)==12 )
4111                {
4112                    result = utbln8n12(s);
4113                }
4114                if( Math.Max(n1, n2)==13 )
4115                {
4116                    result = utbln8n13(s);
4117                }
4118                if( Math.Max(n1, n2)==14 )
4119                {
4120                    result = utbln8n14(s);
4121                }
4122                if( Math.Max(n1, n2)==15 )
4123                {
4124                    result = utbln8n15(s);
4125                }
4126                if( Math.Max(n1, n2)>15 )
4127                {
4128                    f0 = utbln8n15(s);
4129                    f1 = utbln8n30(s);
4130                    f2 = utbln8n100(s);
4131                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4132                }
4133                return result;
4134            }
4135           
4136            //
4137            // N1=9, N2 = 9, 10, ...
4138            //
4139            if( Math.Min(n1, n2)==9 )
4140            {
4141                if( Math.Max(n1, n2)==9 )
4142                {
4143                    result = utbln9n9(s);
4144                }
4145                if( Math.Max(n1, n2)==10 )
4146                {
4147                    result = utbln9n10(s);
4148                }
4149                if( Math.Max(n1, n2)==11 )
4150                {
4151                    result = utbln9n11(s);
4152                }
4153                if( Math.Max(n1, n2)==12 )
4154                {
4155                    result = utbln9n12(s);
4156                }
4157                if( Math.Max(n1, n2)==13 )
4158                {
4159                    result = utbln9n13(s);
4160                }
4161                if( Math.Max(n1, n2)==14 )
4162                {
4163                    result = utbln9n14(s);
4164                }
4165                if( Math.Max(n1, n2)==15 )
4166                {
4167                    result = utbln9n15(s);
4168                }
4169                if( Math.Max(n1, n2)>15 )
4170                {
4171                    f0 = utbln9n15(s);
4172                    f1 = utbln9n30(s);
4173                    f2 = utbln9n100(s);
4174                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4175                }
4176                return result;
4177            }
4178           
4179            //
4180            // N1=10, N2 = 10, 11, ...
4181            //
4182            if( Math.Min(n1, n2)==10 )
4183            {
4184                if( Math.Max(n1, n2)==10 )
4185                {
4186                    result = utbln10n10(s);
4187                }
4188                if( Math.Max(n1, n2)==11 )
4189                {
4190                    result = utbln10n11(s);
4191                }
4192                if( Math.Max(n1, n2)==12 )
4193                {
4194                    result = utbln10n12(s);
4195                }
4196                if( Math.Max(n1, n2)==13 )
4197                {
4198                    result = utbln10n13(s);
4199                }
4200                if( Math.Max(n1, n2)==14 )
4201                {
4202                    result = utbln10n14(s);
4203                }
4204                if( Math.Max(n1, n2)==15 )
4205                {
4206                    result = utbln10n15(s);
4207                }
4208                if( Math.Max(n1, n2)>15 )
4209                {
4210                    f0 = utbln10n15(s);
4211                    f1 = utbln10n30(s);
4212                    f2 = utbln10n100(s);
4213                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4214                }
4215                return result;
4216            }
4217           
4218            //
4219            // N1=11, N2 = 11, 12, ...
4220            //
4221            if( Math.Min(n1, n2)==11 )
4222            {
4223                if( Math.Max(n1, n2)==11 )
4224                {
4225                    result = utbln11n11(s);
4226                }
4227                if( Math.Max(n1, n2)==12 )
4228                {
4229                    result = utbln11n12(s);
4230                }
4231                if( Math.Max(n1, n2)==13 )
4232                {
4233                    result = utbln11n13(s);
4234                }
4235                if( Math.Max(n1, n2)==14 )
4236                {
4237                    result = utbln11n14(s);
4238                }
4239                if( Math.Max(n1, n2)==15 )
4240                {
4241                    result = utbln11n15(s);
4242                }
4243                if( Math.Max(n1, n2)>15 )
4244                {
4245                    f0 = utbln11n15(s);
4246                    f1 = utbln11n30(s);
4247                    f2 = utbln11n100(s);
4248                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4249                }
4250                return result;
4251            }
4252           
4253            //
4254            // N1=12, N2 = 12, 13, ...
4255            //
4256            if( Math.Min(n1, n2)==12 )
4257            {
4258                if( Math.Max(n1, n2)==12 )
4259                {
4260                    result = utbln12n12(s);
4261                }
4262                if( Math.Max(n1, n2)==13 )
4263                {
4264                    result = utbln12n13(s);
4265                }
4266                if( Math.Max(n1, n2)==14 )
4267                {
4268                    result = utbln12n14(s);
4269                }
4270                if( Math.Max(n1, n2)==15 )
4271                {
4272                    result = utbln12n15(s);
4273                }
4274                if( Math.Max(n1, n2)>15 )
4275                {
4276                    f0 = utbln12n15(s);
4277                    f1 = utbln12n30(s);
4278                    f2 = utbln12n100(s);
4279                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4280                }
4281                return result;
4282            }
4283           
4284            //
4285            // N1=13, N2 = 13, 14, ...
4286            //
4287            if( Math.Min(n1, n2)==13 )
4288            {
4289                if( Math.Max(n1, n2)==13 )
4290                {
4291                    result = utbln13n13(s);
4292                }
4293                if( Math.Max(n1, n2)==14 )
4294                {
4295                    result = utbln13n14(s);
4296                }
4297                if( Math.Max(n1, n2)==15 )
4298                {
4299                    result = utbln13n15(s);
4300                }
4301                if( Math.Max(n1, n2)>15 )
4302                {
4303                    f0 = utbln13n15(s);
4304                    f1 = utbln13n30(s);
4305                    f2 = utbln13n100(s);
4306                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4307                }
4308                return result;
4309            }
4310           
4311            //
4312            // N1=14, N2 = 14, 15, ...
4313            //
4314            if( Math.Min(n1, n2)==14 )
4315            {
4316                if( Math.Max(n1, n2)==14 )
4317                {
4318                    result = utbln14n14(s);
4319                }
4320                if( Math.Max(n1, n2)==15 )
4321                {
4322                    result = utbln14n15(s);
4323                }
4324                if( Math.Max(n1, n2)>15 )
4325                {
4326                    f0 = utbln14n15(s);
4327                    f1 = utbln14n30(s);
4328                    f2 = utbln14n100(s);
4329                    result = uninterpolate(f0, f1, f2, Math.Max(n1, n2));
4330                }
4331                return result;
4332            }
4333           
4334            //
4335            // N1 >= 15, N2 >= 15
4336            //
4337            if( (double)(s)>(double)(4) )
4338            {
4339                s = 4;
4340            }
4341            if( (double)(s)<(double)(3) )
4342            {
4343                s0 = 0.000000e+00;
4344                f0 = usigma000(n1, n2);
4345                s1 = 7.500000e-01;
4346                f1 = usigma075(n1, n2);
4347                s2 = 1.500000e+00;
4348                f2 = usigma150(n1, n2);
4349                s3 = 2.250000e+00;
4350                f3 = usigma225(n1, n2);
4351                s4 = 3.000000e+00;
4352                f4 = usigma300(n1, n2);
4353                f1 = ((s-s0)*f1-(s-s1)*f0)/(s1-s0);
4354                f2 = ((s-s0)*f2-(s-s2)*f0)/(s2-s0);
4355                f3 = ((s-s0)*f3-(s-s3)*f0)/(s3-s0);
4356                f4 = ((s-s0)*f4-(s-s4)*f0)/(s4-s0);
4357                f2 = ((s-s1)*f2-(s-s2)*f1)/(s2-s1);
4358                f3 = ((s-s1)*f3-(s-s3)*f1)/(s3-s1);
4359                f4 = ((s-s1)*f4-(s-s4)*f1)/(s4-s1);
4360                f3 = ((s-s2)*f3-(s-s3)*f2)/(s3-s2);
4361                f4 = ((s-s2)*f4-(s-s4)*f2)/(s4-s2);
4362                f4 = ((s-s3)*f4-(s-s4)*f3)/(s4-s3);
4363                result = f4;
4364            }
4365            else
4366            {
4367                s0 = 3.000000e+00;
4368                f0 = usigma300(n1, n2);
4369                s1 = 3.333333e+00;
4370                f1 = usigma333(n1, n2);
4371                s2 = 3.666667e+00;
4372                f2 = usigma367(n1, n2);
4373                s3 = 4.000000e+00;
4374                f3 = usigma400(n1, n2);
4375                f1 = ((s-s0)*f1-(s-s1)*f0)/(s1-s0);
4376                f2 = ((s-s0)*f2-(s-s2)*f0)/(s2-s0);
4377                f3 = ((s-s0)*f3-(s-s3)*f0)/(s3-s0);
4378                f2 = ((s-s1)*f2-(s-s2)*f1)/(s2-s1);
4379                f3 = ((s-s1)*f3-(s-s3)*f1)/(s3-s1);
4380                f3 = ((s-s2)*f3-(s-s3)*f2)/(s3-s2);
4381                result = f3;
4382            }
4383            return result;
4384        }
4385    }
4386}
Note: See TracBrowser for help on using the repository browser.