source: branches/stable/GDE/RAxML/models.c

Last change on this file was 10409, checked in by aboeckma, 11 years ago

Updated raxml to current version

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 176.6 KB
Line 
1/*  RAxML-VI-HPC (version 2.2) a program for sequential and parallel estimation of phylogenetic trees
2 *  Copyright August 2006 by Alexandros Stamatakis
3 *
4 *  Partially derived from
5 *  fastDNAml, a program for estimation of phylogenetic trees from sequences by Gary J. Olsen
6 * 
7 *  and
8 *
9 *  Programs of the PHYLIP package by Joe Felsenstein.
10 *
11 *  This program is free software; you may redistribute it and/or modify its
12 *  under the terms of the GNU General Public License as published by the Free
13 *  Software Foundation; either version 2 of the License, or (at your option)
14 *  any later version.
15 *
16 *  This program is distributed in the hope that it will be useful, but
17 *  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 *  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19 *  for more details.
20 *
21 *
22 *  For any other enquiries send an Email to Alexandros Stamatakis
23 *  Alexandros.Stamatakis@epfl.ch
24 *
25 *  When publishing work that is based on the results from RAxML-VI-HPC please cite:
26 *
27 *  Alexandros Stamatakis:"RAxML-VI-HPC: maximum likelihood-based phylogenetic analyses with thousands
28 *  of taxa and mixed models".
29 *  Bioinformatics 2006; doi: 10.1093/bioinformatics/btl446
30 */
31
32#ifndef WIN32
33#include <sys/times.h>
34#include <sys/types.h>
35#include <sys/time.h>
36#include <unistd.h>
37#endif
38
39#include <math.h>
40#include <time.h>
41#include <stdlib.h>
42#include <stdio.h>
43#include <ctype.h>
44#include <string.h>
45
46#include "axml.h"
47
48extern int optimizeRatesInvocations;
49extern int optimizeRateCategoryInvocations;
50extern int optimizeAlphaInvocations;
51extern int optimizeTTRatioInvocations;
52extern int optimizeInvarInvocations;
53
54extern const unsigned int bitVectorSecondary[256];
55extern const unsigned int bitVector32[33];
56extern const unsigned int bitVectorAA[23];
57extern const unsigned int bitVectorIdentity[256];
58
59extern const partitionLengths pLengths[MAX_MODEL];
60
61#ifdef _USE_PTHREADS
62extern volatile int NumberOfThreads;
63#endif
64
65
66extern char *protModels[NUM_PROT_MODELS];
67
68
69
70static void smoothFreqs(const int n, double *pfreqs, double *dst, pInfo *partitionData)
71{
72  int 
73    countScale = 0, 
74    l,
75    loopCounter = 0; 
76 
77
78  /*
79    for(l = 0; l < n; l++)
80    if(pfreqs[l] < FREQ_MIN)
81      countScale++;
82  */
83
84  for(l = 0; l < n; l++)
85    if(pfreqs[l] == 0.0)
86      countScale++;
87
88  if(countScale > 0)
89    {       
90      while(countScale > 0)
91        {
92          double correction = 0.0;
93          double factor = 1.0;
94         
95          for(l = 0; l < n; l++)
96            {
97              if(pfreqs[l] == 0.0)               
98                correction += FREQ_MIN;                           
99              else
100                if(pfreqs[l] < FREQ_MIN)                   
101                  {
102                    correction += (FREQ_MIN - pfreqs[l]);
103                    factor -= (FREQ_MIN - pfreqs[l]);
104                  }
105            }                               
106         
107          countScale = 0;
108         
109          for(l = 0; l < n; l++)
110            {               
111              if(pfreqs[l] >= FREQ_MIN)               
112                pfreqs[l] = pfreqs[l] - (pfreqs[l] * correction * factor);     
113              else
114                pfreqs[l] = FREQ_MIN;
115             
116              if(pfreqs[l] < FREQ_MIN)
117                countScale++;
118            }
119          assert(loopCounter < 100);
120          loopCounter++;
121        }                   
122    }
123
124  for(l = 0; l < n; l++)
125    dst[l] = pfreqs[l];
126
127 
128  if(partitionData->nonGTR)
129    {
130      int k;
131
132      assert(partitionData->dataType == SECONDARY_DATA_7 || partitionData->dataType == SECONDARY_DATA_6 || partitionData->dataType == SECONDARY_DATA);
133       
134      for(l = 0; l < n; l++)
135        {
136          int count = 1;       
137         
138          for(k = 0; k < n; k++)
139            {
140              if(k != l && partitionData->frequencyGrouping[l] == partitionData->frequencyGrouping[k])
141                {
142                  count++;
143                  dst[l] += pfreqs[k];
144                }
145            }
146          dst[l] /= ((double)count);
147        }           
148     } 
149}
150           
151
152static void genericBaseFrequencies(tree *tr, const int numFreqs, rawdata *rdta, cruncheddata *cdta, int lower, int upper, int model, boolean smoothFrequencies,
153                                   const unsigned int *bitMask)
154{
155  double 
156    wj, 
157    acc,
158    pfreqs[64], 
159    sumf[64],   
160    temp[64];
161 
162  int     
163    i, 
164    j, 
165    k, 
166    l;
167
168  unsigned char  *yptr; 
169         
170  for(l = 0; l < numFreqs; l++)     
171    pfreqs[l] = 1.0 / ((double)numFreqs);
172         
173  for (k = 1; k <= 8; k++) 
174    {                                                   
175      for(l = 0; l < numFreqs; l++)
176        sumf[l] = 0.0;
177             
178      for (i = 0; i < rdta->numsp; i++) 
179        {               
180          yptr =  &(rdta->y0[((size_t)i) * ((size_t)tr->originalCrunchedLength)]);
181         
182          for(j = lower; j < upper; j++) 
183            {
184              unsigned int code = bitMask[yptr[j]];
185              assert(code >= 1);
186             
187              for(l = 0; l < numFreqs; l++)
188                {
189                  if((code >> l) & 1)
190                    temp[l] = pfreqs[l];
191                  else
192                    temp[l] = 0.0;
193                }                             
194             
195              for(l = 0, acc = 0.0; l < numFreqs; l++)
196                {
197                  if(temp[l] != 0.0)
198                    acc += temp[l];
199                }
200             
201              wj = ((double)cdta->aliaswgt[j]) / acc;
202             
203              for(l = 0; l < numFreqs; l++)
204                {
205                  if(temp[l] != 0.0)               
206                    sumf[l] += wj * temp[l];                                                                                               
207                }
208            }
209        }                     
210     
211      for(l = 0, acc = 0.0; l < numFreqs; l++)
212        {
213          if(sumf[l] != 0.0)
214            acc += sumf[l];
215        }
216             
217      for(l = 0; l < numFreqs; l++)
218        pfreqs[l] = sumf[l] / acc;           
219    }
220 
221  if(smoothFrequencies)         
222    smoothFreqs(numFreqs, pfreqs,  tr->partitionData[model].frequencies, &(tr->partitionData[model]));     
223  else   
224    {
225      boolean
226        zeroFreq = FALSE;
227
228      char 
229        typeOfData[1024];
230
231      getDataTypeString(tr, model, typeOfData); 
232
233      for(l = 0; l < numFreqs; l++)
234        {
235          if(pfreqs[l] == 0.0)
236            {
237              printBothOpen("Empirical base frequency for state number %d is equal to zero in %s data partition %s\n", l, typeOfData, tr->partitionData[model].partitionName);
238              printBothOpen("Since this is probably not what you want to do, RAxML will soon exit.\n\n");
239              zeroFreq = TRUE;
240            }
241        }
242
243      if(zeroFreq)
244        exit(-1);
245
246      for(l = 0; l < numFreqs; l++)
247        {
248          assert(pfreqs[l] > 0.0);
249          tr->partitionData[model].frequencies[l] = pfreqs[l];
250        }     
251    } 
252 
253}
254
255
256
257
258
259
260
261
262static void baseFrequenciesGTR(rawdata *rdta, cruncheddata *cdta, tree *tr)
263{ 
264  int 
265    model,
266    lower,
267    upper,
268    states;
269
270  for(model = 0; model < tr->NumberOfModels; model++)
271    {     
272      lower = tr->partitionData[model].lower;
273      upper = tr->partitionData[model].upper;           
274      states = tr->partitionData[model].states;
275       
276      switch(tr->partitionData[model].dataType)
277        {
278        case GENERIC_32:
279          switch(tr->multiStateModel)
280            {
281            case ORDERED_MULTI_STATE:
282            case MK_MULTI_STATE:           
283              {       
284                int i;
285                double 
286                  freq = 1.0 / (double)states,
287                  acc = 0.0;
288
289                for(i = 0; i < states; i++)
290                  {
291                    acc += freq;
292                    tr->partitionData[model].frequencies[i] = freq;
293                    /*printf("%f \n", freq);*/
294                  }
295                /*printf("Frequency Deviation: %1.60f\n", acc);*/
296              }
297              break;
298             case GTR_MULTI_STATE:
299              genericBaseFrequencies(tr, states, rdta, cdta, lower, upper, model, TRUE,
300                                     bitVector32);
301              break;
302            default:
303              assert(0);
304            }
305          break;
306        case GENERIC_64:         
307          assert(0);
308          break;
309        case SECONDARY_DATA_6:
310        case SECONDARY_DATA_7:
311        case SECONDARY_DATA:
312        case AA_DATA:
313        case DNA_DATA:
314        case BINARY_DATA:
315          genericBaseFrequencies(tr, states, rdta, cdta, lower, upper, model, 
316                                 getSmoothFreqs(tr->partitionData[model].dataType),
317                                 getBitVector(tr->partitionData[model].dataType));               
318          break;       
319        default:
320          assert(0);     
321        }     
322    }
323 
324  return;
325}
326
327static void putWAG(double *ext_initialRates)
328{ 
329  double
330    scaler,
331    q[20][20],
332    daa[400];
333
334  int 
335    i,
336    j,
337    r;
338
339  daa[ 1*20+ 0] =  55.15710; daa[ 2*20+ 0] =  50.98480; daa[ 2*20+ 1] =  63.53460; 
340  daa[ 3*20+ 0] =  73.89980; daa[ 3*20+ 1] =  14.73040; daa[ 3*20+ 2] = 542.94200; 
341  daa[ 4*20+ 0] = 102.70400; daa[ 4*20+ 1] =  52.81910; daa[ 4*20+ 2] =  26.52560; 
342  daa[ 4*20+ 3] =   3.02949; daa[ 5*20+ 0] =  90.85980; daa[ 5*20+ 1] = 303.55000; 
343  daa[ 5*20+ 2] = 154.36400; daa[ 5*20+ 3] =  61.67830; daa[ 5*20+ 4] =   9.88179; 
344  daa[ 6*20+ 0] = 158.28500; daa[ 6*20+ 1] =  43.91570; daa[ 6*20+ 2] =  94.71980; 
345  daa[ 6*20+ 3] = 617.41600; daa[ 6*20+ 4] =   2.13520; daa[ 6*20+ 5] = 546.94700; 
346  daa[ 7*20+ 0] = 141.67200; daa[ 7*20+ 1] =  58.46650; daa[ 7*20+ 2] = 112.55600; 
347  daa[ 7*20+ 3] =  86.55840; daa[ 7*20+ 4] =  30.66740; daa[ 7*20+ 5] =  33.00520; 
348  daa[ 7*20+ 6] =  56.77170; daa[ 8*20+ 0] =  31.69540; daa[ 8*20+ 1] = 213.71500; 
349  daa[ 8*20+ 2] = 395.62900; daa[ 8*20+ 3] =  93.06760; daa[ 8*20+ 4] =  24.89720; 
350  daa[ 8*20+ 5] = 429.41100; daa[ 8*20+ 6] =  57.00250; daa[ 8*20+ 7] =  24.94100; 
351  daa[ 9*20+ 0] =  19.33350; daa[ 9*20+ 1] =  18.69790; daa[ 9*20+ 2] =  55.42360; 
352  daa[ 9*20+ 3] =   3.94370; daa[ 9*20+ 4] =  17.01350; daa[ 9*20+ 5] =  11.39170; 
353  daa[ 9*20+ 6] =  12.73950; daa[ 9*20+ 7] =   3.04501; daa[ 9*20+ 8] =  13.81900; 
354  daa[10*20+ 0] =  39.79150; daa[10*20+ 1] =  49.76710; daa[10*20+ 2] =  13.15280; 
355  daa[10*20+ 3] =   8.48047; daa[10*20+ 4] =  38.42870; daa[10*20+ 5] =  86.94890; 
356  daa[10*20+ 6] =  15.42630; daa[10*20+ 7] =   6.13037; daa[10*20+ 8] =  49.94620; 
357  daa[10*20+ 9] = 317.09700; daa[11*20+ 0] =  90.62650; daa[11*20+ 1] = 535.14200; 
358  daa[11*20+ 2] = 301.20100; daa[11*20+ 3] =  47.98550; daa[11*20+ 4] =   7.40339; 
359  daa[11*20+ 5] = 389.49000; daa[11*20+ 6] = 258.44300; daa[11*20+ 7] =  37.35580; 
360  daa[11*20+ 8] =  89.04320; daa[11*20+ 9] =  32.38320; daa[11*20+10] =  25.75550; 
361  daa[12*20+ 0] =  89.34960; daa[12*20+ 1] =  68.31620; daa[12*20+ 2] =  19.82210; 
362  daa[12*20+ 3] =  10.37540; daa[12*20+ 4] =  39.04820; daa[12*20+ 5] = 154.52600; 
363  daa[12*20+ 6] =  31.51240; daa[12*20+ 7] =  17.41000; daa[12*20+ 8] =  40.41410; 
364  daa[12*20+ 9] = 425.74600; daa[12*20+10] = 485.40200; daa[12*20+11] =  93.42760; 
365  daa[13*20+ 0] =  21.04940; daa[13*20+ 1] =  10.27110; daa[13*20+ 2] =   9.61621; 
366  daa[13*20+ 3] =   4.67304; daa[13*20+ 4] =  39.80200; daa[13*20+ 5] =   9.99208; 
367  daa[13*20+ 6] =   8.11339; daa[13*20+ 7] =   4.99310; daa[13*20+ 8] =  67.93710; 
368  daa[13*20+ 9] = 105.94700; daa[13*20+10] = 211.51700; daa[13*20+11] =   8.88360; 
369  daa[13*20+12] = 119.06300; daa[14*20+ 0] = 143.85500; daa[14*20+ 1] =  67.94890; 
370  daa[14*20+ 2] =  19.50810; daa[14*20+ 3] =  42.39840; daa[14*20+ 4] =  10.94040; 
371  daa[14*20+ 5] =  93.33720; daa[14*20+ 6] =  68.23550; daa[14*20+ 7] =  24.35700; 
372  daa[14*20+ 8] =  69.61980; daa[14*20+ 9] =   9.99288; daa[14*20+10] =  41.58440; 
373  daa[14*20+11] =  55.68960; daa[14*20+12] =  17.13290; daa[14*20+13] =  16.14440; 
374  daa[15*20+ 0] = 337.07900; daa[15*20+ 1] = 122.41900; daa[15*20+ 2] = 397.42300; 
375  daa[15*20+ 3] = 107.17600; daa[15*20+ 4] = 140.76600; daa[15*20+ 5] = 102.88700; 
376  daa[15*20+ 6] =  70.49390; daa[15*20+ 7] = 134.18200; daa[15*20+ 8] =  74.01690; 
377  daa[15*20+ 9] =  31.94400; daa[15*20+10] =  34.47390; daa[15*20+11] =  96.71300; 
378  daa[15*20+12] =  49.39050; daa[15*20+13] =  54.59310; daa[15*20+14] = 161.32800; 
379  daa[16*20+ 0] = 212.11100; daa[16*20+ 1] =  55.44130; daa[16*20+ 2] = 203.00600; 
380  daa[16*20+ 3] =  37.48660; daa[16*20+ 4] =  51.29840; daa[16*20+ 5] =  85.79280; 
381  daa[16*20+ 6] =  82.27650; daa[16*20+ 7] =  22.58330; daa[16*20+ 8] =  47.33070; 
382  daa[16*20+ 9] = 145.81600; daa[16*20+10] =  32.66220; daa[16*20+11] = 138.69800; 
383  daa[16*20+12] = 151.61200; daa[16*20+13] =  17.19030; daa[16*20+14] =  79.53840; 
384  daa[16*20+15] = 437.80200; daa[17*20+ 0] =  11.31330; daa[17*20+ 1] = 116.39200; 
385  daa[17*20+ 2] =   7.19167; daa[17*20+ 3] =  12.97670; daa[17*20+ 4] =  71.70700; 
386  daa[17*20+ 5] =  21.57370; daa[17*20+ 6] =  15.65570; daa[17*20+ 7] =  33.69830; 
387  daa[17*20+ 8] =  26.25690; daa[17*20+ 9] =  21.24830; daa[17*20+10] =  66.53090; 
388  daa[17*20+11] =  13.75050; daa[17*20+12] =  51.57060; daa[17*20+13] = 152.96400; 
389  daa[17*20+14] =  13.94050; daa[17*20+15] =  52.37420; daa[17*20+16] =  11.08640; 
390  daa[18*20+ 0] =  24.07350; daa[18*20+ 1] =  38.15330; daa[18*20+ 2] = 108.60000; 
391  daa[18*20+ 3] =  32.57110; daa[18*20+ 4] =  54.38330; daa[18*20+ 5] =  22.77100; 
392  daa[18*20+ 6] =  19.63030; daa[18*20+ 7] =  10.36040; daa[18*20+ 8] = 387.34400; 
393  daa[18*20+ 9] =  42.01700; daa[18*20+10] =  39.86180; daa[18*20+11] =  13.32640; 
394  daa[18*20+12] =  42.84370; daa[18*20+13] = 645.42800; daa[18*20+14] =  21.60460; 
395  daa[18*20+15] =  78.69930; daa[18*20+16] =  29.11480; daa[18*20+17] = 248.53900; 
396  daa[19*20+ 0] = 200.60100; daa[19*20+ 1] =  25.18490; daa[19*20+ 2] =  19.62460; 
397  daa[19*20+ 3] =  15.23350; daa[19*20+ 4] = 100.21400; daa[19*20+ 5] =  30.12810; 
398  daa[19*20+ 6] =  58.87310; daa[19*20+ 7] =  18.72470; daa[19*20+ 8] =  11.83580; 
399  daa[19*20+ 9] = 782.13000; daa[19*20+10] = 180.03400; daa[19*20+11] =  30.54340; 
400  daa[19*20+12] = 205.84500; daa[19*20+13] =  64.98920; daa[19*20+14] =  31.48870; 
401  daa[19*20+15] =  23.27390; daa[19*20+16] = 138.82300; daa[19*20+17] =  36.53690; 
402  daa[19*20+18] =  31.47300; 
403
404  for(i = 0; i < 20; i++)
405    for(j = 0; j < 20; j++)
406      q[i][j] = 0.0;
407
408  for (i=0; i<20; i++) 
409    for (j=0; j<i; j++)               
410      daa[j*20+i] = daa[i*20+j];
411
412  for(i = 0; i < 19; i++)
413    for(j = i + 1; j < 20; j++)     
414      q[i][j] = daa[i * 20 + j];
415
416 
417  /*
418    for (i=0; i<20; i++)
419    {
420      for (j=0; j<20; j++)
421        printf("%1.2f ", q[i][j]);
422      printf("\n");
423    }
424    printf("\n");
425
426    printf("%f\n", q[18][19]);
427  */
428
429  scaler = 1.0 / q[18][19];
430
431 
432
433  for(i = 0; i < 19; i++)
434    for(j = i + 1; j < 20; j++)     
435      q[i][j] *= scaler;
436
437  for(i = 0, r = 0; i < 19; i++)         
438    for(j = i + 1; j < 20; j++)     
439      ext_initialRates[r++] = q[i][j];           
440     
441  /*
442    for (i=0; i<20; i++)
443    {
444      for (j=0; j<20; j++)
445        printf("%1.2f ", q[i][j]);
446      printf("\n");
447    }
448    printf("\n");
449  */
450
451}
452
453static void initProtMat(double f[20], int proteinMatrix, double *ext_initialRates, int model, tree *tr, int lg4_index)
454{ 
455  double q[20][20];
456  double daa[400], max, temp;
457  int i, j, r;
458  double *initialRates = ext_initialRates;
459  double scaler;
460
461  {
462    switch(proteinMatrix)
463      {
464        case PROT_FILE:
465          memcpy(daa, tr->partitionData[model].externalAAMatrix,         400 * sizeof(double));
466          memcpy(f,   &(tr->partitionData[model].externalAAMatrix[400]), 20  * sizeof(double));
467          break;
468        case DAYHOFF:
469          {     
470            daa[ 1*20+ 0] =   27.00; daa[ 2*20+ 0] =   98.00; daa[ 2*20+ 1] =   32.00; daa[ 3*20+ 0] =  120.00;
471            daa[ 3*20+ 1] =    0.00; daa[ 3*20+ 2] =  905.00; daa[ 4*20+ 0] =   36.00; daa[ 4*20+ 1] =   23.00;
472            daa[ 4*20+ 2] =    0.00; daa[ 4*20+ 3] =    0.00; daa[ 5*20+ 0] =   89.00; daa[ 5*20+ 1] =  246.00;
473            daa[ 5*20+ 2] =  103.00; daa[ 5*20+ 3] =  134.00; daa[ 5*20+ 4] =    0.00; daa[ 6*20+ 0] =  198.00;
474            daa[ 6*20+ 1] =    1.00; daa[ 6*20+ 2] =  148.00; daa[ 6*20+ 3] = 1153.00; daa[ 6*20+ 4] =    0.00;
475            daa[ 6*20+ 5] =  716.00; daa[ 7*20+ 0] =  240.00; daa[ 7*20+ 1] =    9.00; daa[ 7*20+ 2] =  139.00;
476            daa[ 7*20+ 3] =  125.00; daa[ 7*20+ 4] =   11.00; daa[ 7*20+ 5] =   28.00; daa[ 7*20+ 6] =   81.00;
477            daa[ 8*20+ 0] =   23.00; daa[ 8*20+ 1] =  240.00; daa[ 8*20+ 2] =  535.00; daa[ 8*20+ 3] =   86.00;
478            daa[ 8*20+ 4] =   28.00; daa[ 8*20+ 5] =  606.00; daa[ 8*20+ 6] =   43.00; daa[ 8*20+ 7] =   10.00;
479            daa[ 9*20+ 0] =   65.00; daa[ 9*20+ 1] =   64.00; daa[ 9*20+ 2] =   77.00; daa[ 9*20+ 3] =   24.00;
480            daa[ 9*20+ 4] =   44.00; daa[ 9*20+ 5] =   18.00; daa[ 9*20+ 6] =   61.00; daa[ 9*20+ 7] =    0.00;
481            daa[ 9*20+ 8] =    7.00; daa[10*20+ 0] =   41.00; daa[10*20+ 1] =   15.00; daa[10*20+ 2] =   34.00;
482            daa[10*20+ 3] =    0.00; daa[10*20+ 4] =    0.00; daa[10*20+ 5] =   73.00; daa[10*20+ 6] =   11.00;
483            daa[10*20+ 7] =    7.00; daa[10*20+ 8] =   44.00; daa[10*20+ 9] =  257.00; daa[11*20+ 0] =   26.00;
484            daa[11*20+ 1] =  464.00; daa[11*20+ 2] =  318.00; daa[11*20+ 3] =   71.00; daa[11*20+ 4] =    0.00;
485            daa[11*20+ 5] =  153.00; daa[11*20+ 6] =   83.00; daa[11*20+ 7] =   27.00; daa[11*20+ 8] =   26.00;
486            daa[11*20+ 9] =   46.00; daa[11*20+10] =   18.00; daa[12*20+ 0] =   72.00; daa[12*20+ 1] =   90.00;
487            daa[12*20+ 2] =    1.00; daa[12*20+ 3] =    0.00; daa[12*20+ 4] =    0.00; daa[12*20+ 5] =  114.00;
488            daa[12*20+ 6] =   30.00; daa[12*20+ 7] =   17.00; daa[12*20+ 8] =    0.00; daa[12*20+ 9] =  336.00;
489            daa[12*20+10] =  527.00; daa[12*20+11] =  243.00; daa[13*20+ 0] =   18.00; daa[13*20+ 1] =   14.00;
490            daa[13*20+ 2] =   14.00; daa[13*20+ 3] =    0.00; daa[13*20+ 4] =    0.00; daa[13*20+ 5] =    0.00;
491            daa[13*20+ 6] =    0.00; daa[13*20+ 7] =   15.00; daa[13*20+ 8] =   48.00; daa[13*20+ 9] =  196.00;
492            daa[13*20+10] =  157.00; daa[13*20+11] =    0.00; daa[13*20+12] =   92.00; daa[14*20+ 0] =  250.00;
493            daa[14*20+ 1] =  103.00; daa[14*20+ 2] =   42.00; daa[14*20+ 3] =   13.00; daa[14*20+ 4] =   19.00;
494            daa[14*20+ 5] =  153.00; daa[14*20+ 6] =   51.00; daa[14*20+ 7] =   34.00; daa[14*20+ 8] =   94.00;
495            daa[14*20+ 9] =   12.00; daa[14*20+10] =   32.00; daa[14*20+11] =   33.00; daa[14*20+12] =   17.00;
496            daa[14*20+13] =   11.00; daa[15*20+ 0] =  409.00; daa[15*20+ 1] =  154.00; daa[15*20+ 2] =  495.00;
497            daa[15*20+ 3] =   95.00; daa[15*20+ 4] =  161.00; daa[15*20+ 5] =   56.00; daa[15*20+ 6] =   79.00;
498            daa[15*20+ 7] =  234.00; daa[15*20+ 8] =   35.00; daa[15*20+ 9] =   24.00; daa[15*20+10] =   17.00;
499            daa[15*20+11] =   96.00; daa[15*20+12] =   62.00; daa[15*20+13] =   46.00; daa[15*20+14] =  245.00;
500            daa[16*20+ 0] =  371.00; daa[16*20+ 1] =   26.00; daa[16*20+ 2] =  229.00; daa[16*20+ 3] =   66.00;
501            daa[16*20+ 4] =   16.00; daa[16*20+ 5] =   53.00; daa[16*20+ 6] =   34.00; daa[16*20+ 7] =   30.00;
502            daa[16*20+ 8] =   22.00; daa[16*20+ 9] =  192.00; daa[16*20+10] =   33.00; daa[16*20+11] =  136.00;
503            daa[16*20+12] =  104.00; daa[16*20+13] =   13.00; daa[16*20+14] =   78.00; daa[16*20+15] =  550.00;
504            daa[17*20+ 0] =    0.00; daa[17*20+ 1] =  201.00; daa[17*20+ 2] =   23.00; daa[17*20+ 3] =    0.00;
505            daa[17*20+ 4] =    0.00; daa[17*20+ 5] =    0.00; daa[17*20+ 6] =    0.00; daa[17*20+ 7] =    0.00;
506            daa[17*20+ 8] =   27.00; daa[17*20+ 9] =    0.00; daa[17*20+10] =   46.00; daa[17*20+11] =    0.00;
507            daa[17*20+12] =    0.00; daa[17*20+13] =   76.00; daa[17*20+14] =    0.00; daa[17*20+15] =   75.00;
508            daa[17*20+16] =    0.00; daa[18*20+ 0] =   24.00; daa[18*20+ 1] =    8.00; daa[18*20+ 2] =   95.00;
509            daa[18*20+ 3] =    0.00; daa[18*20+ 4] =   96.00; daa[18*20+ 5] =    0.00; daa[18*20+ 6] =   22.00;
510            daa[18*20+ 7] =    0.00; daa[18*20+ 8] =  127.00; daa[18*20+ 9] =   37.00; daa[18*20+10] =   28.00;
511            daa[18*20+11] =   13.00; daa[18*20+12] =    0.00; daa[18*20+13] =  698.00; daa[18*20+14] =    0.00;
512            daa[18*20+15] =   34.00; daa[18*20+16] =   42.00; daa[18*20+17] =   61.00; daa[19*20+ 0] =  208.00;
513            daa[19*20+ 1] =   24.00; daa[19*20+ 2] =   15.00; daa[19*20+ 3] =   18.00; daa[19*20+ 4] =   49.00;
514            daa[19*20+ 5] =   35.00; daa[19*20+ 6] =   37.00; daa[19*20+ 7] =   54.00; daa[19*20+ 8] =   44.00;
515            daa[19*20+ 9] =  889.00; daa[19*20+10] =  175.00; daa[19*20+11] =   10.00; daa[19*20+12] =  258.00;
516            daa[19*20+13] =   12.00; daa[19*20+14] =   48.00; daa[19*20+15] =   30.00; daa[19*20+16] =  157.00;
517            daa[19*20+17] =    0.00; daa[19*20+18] =   28.00;               
518
519
520            f[ 0] = 0.087000; f[ 1] = 0.041000; f[ 2] = 0.040000; f[ 3] = 0.047000;
521            f[ 4] = 0.034000; f[ 5] = 0.038000; f[ 6] = 0.050000; f[ 7] = 0.089000;
522            f[ 8] = 0.034000; f[ 9] = 0.037000; f[10] = 0.085000; f[11] = 0.080000;
523            f[12] = 0.014000; f[13] = 0.040000; f[14] = 0.051000; f[15] = 0.070000;
524            f[16] = 0.058000; f[17] = 0.011000; f[18] = 0.030000; f[19] = 0.064000;
525          }
526          break;
527        case DCMUT:
528          {     
529            daa[ 1*20+ 0] =   26.78280; daa[ 2*20+ 0] =   98.44740; daa[ 2*20+ 1] =   32.70590; daa[ 3*20+ 0] =  119.98050; 
530            daa[ 3*20+ 1] =    0.00000; daa[ 3*20+ 2] =  893.15150; daa[ 4*20+ 0] =   36.00160; daa[ 4*20+ 1] =   23.23740; 
531            daa[ 4*20+ 2] =    0.00000; daa[ 4*20+ 3] =    0.00000; daa[ 5*20+ 0] =   88.77530; daa[ 5*20+ 1] =  243.99390; 
532            daa[ 5*20+ 2] =  102.85090; daa[ 5*20+ 3] =  134.85510; daa[ 5*20+ 4] =    0.00000; daa[ 6*20+ 0] =  196.11670; 
533            daa[ 6*20+ 1] =    0.00000; daa[ 6*20+ 2] =  149.34090; daa[ 6*20+ 3] = 1138.86590; daa[ 6*20+ 4] =    0.00000; 
534            daa[ 6*20+ 5] =  708.60220; daa[ 7*20+ 0] =  238.61110; daa[ 7*20+ 1] =    8.77910; daa[ 7*20+ 2] =  138.53520; 
535            daa[ 7*20+ 3] =  124.09810; daa[ 7*20+ 4] =   10.72780; daa[ 7*20+ 5] =   28.15810; daa[ 7*20+ 6] =   81.19070; 
536            daa[ 8*20+ 0] =   22.81160; daa[ 8*20+ 1] =  238.31480; daa[ 8*20+ 2] =  529.00240; daa[ 8*20+ 3] =   86.82410; 
537            daa[ 8*20+ 4] =   28.27290; daa[ 8*20+ 5] =  601.16130; daa[ 8*20+ 6] =   43.94690; daa[ 8*20+ 7] =   10.68020; 
538            daa[ 9*20+ 0] =   65.34160; daa[ 9*20+ 1] =   63.26290; daa[ 9*20+ 2] =   76.80240; daa[ 9*20+ 3] =   23.92480; 
539            daa[ 9*20+ 4] =   43.80740; daa[ 9*20+ 5] =   18.03930; daa[ 9*20+ 6] =   60.95260; daa[ 9*20+ 7] =    0.00000; 
540            daa[ 9*20+ 8] =    7.69810; daa[10*20+ 0] =   40.64310; daa[10*20+ 1] =   15.49240; daa[10*20+ 2] =   34.11130; 
541            daa[10*20+ 3] =    0.00000; daa[10*20+ 4] =    0.00000; daa[10*20+ 5] =   73.07720; daa[10*20+ 6] =   11.28800; 
542            daa[10*20+ 7] =    7.15140; daa[10*20+ 8] =   44.35040; daa[10*20+ 9] =  255.66850; daa[11*20+ 0] =   25.86350; 
543            daa[11*20+ 1] =  461.01240; daa[11*20+ 2] =  314.83710; daa[11*20+ 3] =   71.69130; daa[11*20+ 4] =    0.00000; 
544            daa[11*20+ 5] =  151.90780; daa[11*20+ 6] =   83.00780; daa[11*20+ 7] =   26.76830; daa[11*20+ 8] =   27.04750; 
545            daa[11*20+ 9] =   46.08570; daa[11*20+10] =   18.06290; daa[12*20+ 0] =   71.78400; daa[12*20+ 1] =   89.63210; 
546            daa[12*20+ 2] =    0.00000; daa[12*20+ 3] =    0.00000; daa[12*20+ 4] =    0.00000; daa[12*20+ 5] =  112.74990; 
547            daa[12*20+ 6] =   30.48030; daa[12*20+ 7] =   17.03720; daa[12*20+ 8] =    0.00000; daa[12*20+ 9] =  333.27320; 
548            daa[12*20+10] =  523.01150; daa[12*20+11] =  241.17390; daa[13*20+ 0] =   18.36410; daa[13*20+ 1] =   13.69060; 
549            daa[13*20+ 2] =   13.85030; daa[13*20+ 3] =    0.00000; daa[13*20+ 4] =    0.00000; daa[13*20+ 5] =    0.00000; 
550            daa[13*20+ 6] =    0.00000; daa[13*20+ 7] =   15.34780; daa[13*20+ 8] =   47.59270; daa[13*20+ 9] =  195.19510; 
551            daa[13*20+10] =  156.51600; daa[13*20+11] =    0.00000; daa[13*20+12] =   92.18600; daa[14*20+ 0] =  248.59200; 
552            daa[14*20+ 1] =  102.83130; daa[14*20+ 2] =   41.92440; daa[14*20+ 3] =   13.39400; daa[14*20+ 4] =   18.75500; 
553            daa[14*20+ 5] =  152.61880; daa[14*20+ 6] =   50.70030; daa[14*20+ 7] =   34.71530; daa[14*20+ 8] =   93.37090; 
554            daa[14*20+ 9] =   11.91520; daa[14*20+10] =   31.62580; daa[14*20+11] =   33.54190; daa[14*20+12] =   17.02050; 
555            daa[14*20+13] =   11.05060; daa[15*20+ 0] =  405.18700; daa[15*20+ 1] =  153.15900; daa[15*20+ 2] =  488.58920; 
556            daa[15*20+ 3] =   95.60970; daa[15*20+ 4] =  159.83560; daa[15*20+ 5] =   56.18280; daa[15*20+ 6] =   79.39990; 
557            daa[15*20+ 7] =  232.22430; daa[15*20+ 8] =   35.36430; daa[15*20+ 9] =   24.79550; daa[15*20+10] =   17.14320; 
558            daa[15*20+11] =   95.45570; daa[15*20+12] =   61.99510; daa[15*20+13] =   45.99010; daa[15*20+14] =  242.72020; 
559            daa[16*20+ 0] =  368.03650; daa[16*20+ 1] =   26.57450; daa[16*20+ 2] =  227.16970; daa[16*20+ 3] =   66.09300; 
560            daa[16*20+ 4] =   16.23660; daa[16*20+ 5] =   52.56510; daa[16*20+ 6] =   34.01560; daa[16*20+ 7] =   30.66620; 
561            daa[16*20+ 8] =   22.63330; daa[16*20+ 9] =  190.07390; daa[16*20+10] =   33.10900; daa[16*20+11] =  135.05990; 
562            daa[16*20+12] =  103.15340; daa[16*20+13] =   13.66550; daa[16*20+14] =   78.28570; daa[16*20+15] =  543.66740; 
563            daa[17*20+ 0] =    0.00000; daa[17*20+ 1] =  200.13750; daa[17*20+ 2] =   22.49680; daa[17*20+ 3] =    0.00000; 
564            daa[17*20+ 4] =    0.00000; daa[17*20+ 5] =    0.00000; daa[17*20+ 6] =    0.00000; daa[17*20+ 7] =    0.00000; 
565            daa[17*20+ 8] =   27.05640; daa[17*20+ 9] =    0.00000; daa[17*20+10] =   46.17760; daa[17*20+11] =    0.00000; 
566            daa[17*20+12] =    0.00000; daa[17*20+13] =   76.23540; daa[17*20+14] =    0.00000; daa[17*20+15] =   74.08190; 
567            daa[17*20+16] =    0.00000; daa[18*20+ 0] =   24.41390; daa[18*20+ 1] =    7.80120; daa[18*20+ 2] =   94.69400; 
568            daa[18*20+ 3] =    0.00000; daa[18*20+ 4] =   95.31640; daa[18*20+ 5] =    0.00000; daa[18*20+ 6] =   21.47170; 
569            daa[18*20+ 7] =    0.00000; daa[18*20+ 8] =  126.54000; daa[18*20+ 9] =   37.48340; daa[18*20+10] =   28.65720; 
570            daa[18*20+11] =   13.21420; daa[18*20+12] =    0.00000; daa[18*20+13] =  695.26290; daa[18*20+14] =    0.00000; 
571            daa[18*20+15] =   33.62890; daa[18*20+16] =   41.78390; daa[18*20+17] =   60.80700; daa[19*20+ 0] =  205.95640; 
572            daa[19*20+ 1] =   24.03680; daa[19*20+ 2] =   15.80670; daa[19*20+ 3] =   17.83160; daa[19*20+ 4] =   48.46780; 
573            daa[19*20+ 5] =   34.69830; daa[19*20+ 6] =   36.72500; daa[19*20+ 7] =   53.81650; daa[19*20+ 8] =   43.87150; 
574            daa[19*20+ 9] =  881.00380; daa[19*20+10] =  174.51560; daa[19*20+11] =   10.38500; daa[19*20+12] =  256.59550; 
575            daa[19*20+13] =   12.36060; daa[19*20+14] =   48.50260; daa[19*20+15] =   30.38360; daa[19*20+16] =  156.19970; 
576            daa[19*20+17] =    0.00000; daa[19*20+18] =   27.93790;               
577
578            f[ 0] = 0.08700; f[ 1] = 0.04100; f[ 2] = 0.04000; f[ 3] = 0.04700;
579            f[ 4] = 0.03300; f[ 5] = 0.03800; f[ 6] = 0.04900; f[ 7] = 0.08900;
580            f[ 8] = 0.03400; f[ 9] = 0.03700; f[10] = 0.08500; f[11] = 0.08000;
581            f[12] = 0.01500; f[13] = 0.04000; f[14] = 0.05200; f[15] = 0.06900;
582            f[16] = 0.05900; f[17] = 0.01000; f[18] = 0.03000; f[19] = 0.06500;
583
584          }
585          break;
586        case JTT:
587          {
588            daa[ 1*20+ 0] =   58.00; daa[ 2*20+ 0] =   54.00; daa[ 2*20+ 1] =   45.00; daa[ 3*20+ 0] =   81.00;
589            daa[ 3*20+ 1] =   16.00; daa[ 3*20+ 2] =  528.00; daa[ 4*20+ 0] =   56.00; daa[ 4*20+ 1] =  113.00;
590            daa[ 4*20+ 2] =   34.00; daa[ 4*20+ 3] =   10.00; daa[ 5*20+ 0] =   57.00; daa[ 5*20+ 1] =  310.00;
591            daa[ 5*20+ 2] =   86.00; daa[ 5*20+ 3] =   49.00; daa[ 5*20+ 4] =    9.00; daa[ 6*20+ 0] =  105.00;
592            daa[ 6*20+ 1] =   29.00; daa[ 6*20+ 2] =   58.00; daa[ 6*20+ 3] =  767.00; daa[ 6*20+ 4] =    5.00;
593            daa[ 6*20+ 5] =  323.00; daa[ 7*20+ 0] =  179.00; daa[ 7*20+ 1] =  137.00; daa[ 7*20+ 2] =   81.00;
594            daa[ 7*20+ 3] =  130.00; daa[ 7*20+ 4] =   59.00; daa[ 7*20+ 5] =   26.00; daa[ 7*20+ 6] =  119.00;
595            daa[ 8*20+ 0] =   27.00; daa[ 8*20+ 1] =  328.00; daa[ 8*20+ 2] =  391.00; daa[ 8*20+ 3] =  112.00;
596            daa[ 8*20+ 4] =   69.00; daa[ 8*20+ 5] =  597.00; daa[ 8*20+ 6] =   26.00; daa[ 8*20+ 7] =   23.00;
597            daa[ 9*20+ 0] =   36.00; daa[ 9*20+ 1] =   22.00; daa[ 9*20+ 2] =   47.00; daa[ 9*20+ 3] =   11.00;
598            daa[ 9*20+ 4] =   17.00; daa[ 9*20+ 5] =    9.00; daa[ 9*20+ 6] =   12.00; daa[ 9*20+ 7] =    6.00;
599            daa[ 9*20+ 8] =   16.00; daa[10*20+ 0] =   30.00; daa[10*20+ 1] =   38.00; daa[10*20+ 2] =   12.00;
600            daa[10*20+ 3] =    7.00; daa[10*20+ 4] =   23.00; daa[10*20+ 5] =   72.00; daa[10*20+ 6] =    9.00;
601            daa[10*20+ 7] =    6.00; daa[10*20+ 8] =   56.00; daa[10*20+ 9] =  229.00; daa[11*20+ 0] =   35.00;
602            daa[11*20+ 1] =  646.00; daa[11*20+ 2] =  263.00; daa[11*20+ 3] =   26.00; daa[11*20+ 4] =    7.00;
603            daa[11*20+ 5] =  292.00; daa[11*20+ 6] =  181.00; daa[11*20+ 7] =   27.00; daa[11*20+ 8] =   45.00;
604            daa[11*20+ 9] =   21.00; daa[11*20+10] =   14.00; daa[12*20+ 0] =   54.00; daa[12*20+ 1] =   44.00;
605            daa[12*20+ 2] =   30.00; daa[12*20+ 3] =   15.00; daa[12*20+ 4] =   31.00; daa[12*20+ 5] =   43.00;
606            daa[12*20+ 6] =   18.00; daa[12*20+ 7] =   14.00; daa[12*20+ 8] =   33.00; daa[12*20+ 9] =  479.00;
607            daa[12*20+10] =  388.00; daa[12*20+11] =   65.00; daa[13*20+ 0] =   15.00; daa[13*20+ 1] =    5.00;
608            daa[13*20+ 2] =   10.00; daa[13*20+ 3] =    4.00; daa[13*20+ 4] =   78.00; daa[13*20+ 5] =    4.00;
609            daa[13*20+ 6] =    5.00; daa[13*20+ 7] =    5.00; daa[13*20+ 8] =   40.00; daa[13*20+ 9] =   89.00;
610            daa[13*20+10] =  248.00; daa[13*20+11] =    4.00; daa[13*20+12] =   43.00; daa[14*20+ 0] =  194.00;
611            daa[14*20+ 1] =   74.00; daa[14*20+ 2] =   15.00; daa[14*20+ 3] =   15.00; daa[14*20+ 4] =   14.00;
612            daa[14*20+ 5] =  164.00; daa[14*20+ 6] =   18.00; daa[14*20+ 7] =   24.00; daa[14*20+ 8] =  115.00;
613            daa[14*20+ 9] =   10.00; daa[14*20+10] =  102.00; daa[14*20+11] =   21.00; daa[14*20+12] =   16.00;
614            daa[14*20+13] =   17.00; daa[15*20+ 0] =  378.00; daa[15*20+ 1] =  101.00; daa[15*20+ 2] =  503.00;
615            daa[15*20+ 3] =   59.00; daa[15*20+ 4] =  223.00; daa[15*20+ 5] =   53.00; daa[15*20+ 6] =   30.00;
616            daa[15*20+ 7] =  201.00; daa[15*20+ 8] =   73.00; daa[15*20+ 9] =   40.00; daa[15*20+10] =   59.00;
617            daa[15*20+11] =   47.00; daa[15*20+12] =   29.00; daa[15*20+13] =   92.00; daa[15*20+14] =  285.00;
618            daa[16*20+ 0] =  475.00; daa[16*20+ 1] =   64.00; daa[16*20+ 2] =  232.00; daa[16*20+ 3] =   38.00;
619            daa[16*20+ 4] =   42.00; daa[16*20+ 5] =   51.00; daa[16*20+ 6] =   32.00; daa[16*20+ 7] =   33.00;
620            daa[16*20+ 8] =   46.00; daa[16*20+ 9] =  245.00; daa[16*20+10] =   25.00; daa[16*20+11] =  103.00;
621            daa[16*20+12] =  226.00; daa[16*20+13] =   12.00; daa[16*20+14] =  118.00; daa[16*20+15] =  477.00;
622            daa[17*20+ 0] =    9.00; daa[17*20+ 1] =  126.00; daa[17*20+ 2] =    8.00; daa[17*20+ 3] =    4.00;
623            daa[17*20+ 4] =  115.00; daa[17*20+ 5] =   18.00; daa[17*20+ 6] =   10.00; daa[17*20+ 7] =   55.00;
624            daa[17*20+ 8] =    8.00; daa[17*20+ 9] =    9.00; daa[17*20+10] =   52.00; daa[17*20+11] =   10.00;
625            daa[17*20+12] =   24.00; daa[17*20+13] =   53.00; daa[17*20+14] =    6.00; daa[17*20+15] =   35.00;
626            daa[17*20+16] =   12.00; daa[18*20+ 0] =   11.00; daa[18*20+ 1] =   20.00; daa[18*20+ 2] =   70.00;
627            daa[18*20+ 3] =   46.00; daa[18*20+ 4] =  209.00; daa[18*20+ 5] =   24.00; daa[18*20+ 6] =    7.00;
628            daa[18*20+ 7] =    8.00; daa[18*20+ 8] =  573.00; daa[18*20+ 9] =   32.00; daa[18*20+10] =   24.00;
629            daa[18*20+11] =    8.00; daa[18*20+12] =   18.00; daa[18*20+13] =  536.00; daa[18*20+14] =   10.00;
630            daa[18*20+15] =   63.00; daa[18*20+16] =   21.00; daa[18*20+17] =   71.00; daa[19*20+ 0] =  298.00;
631            daa[19*20+ 1] =   17.00; daa[19*20+ 2] =   16.00; daa[19*20+ 3] =   31.00; daa[19*20+ 4] =   62.00;
632            daa[19*20+ 5] =   20.00; daa[19*20+ 6] =   45.00; daa[19*20+ 7] =   47.00; daa[19*20+ 8] =   11.00;
633            daa[19*20+ 9] =  961.00; daa[19*20+10] =  180.00; daa[19*20+11] =   14.00; daa[19*20+12] =  323.00;
634            daa[19*20+13] =   62.00; daa[19*20+14] =   23.00; daa[19*20+15] =   38.00; daa[19*20+16] =  112.00;
635            daa[19*20+17] =   25.00; daa[19*20+18] =   16.00;
636                   
637            f[ 0] = 0.07700; f[ 1] = 0.05200; f[ 2] = 0.04200; f[ 3] = 0.05100;
638            f[ 4] = 0.02000; f[ 5] = 0.04100; f[ 6] = 0.06200; f[ 7] = 0.07300;
639            f[ 8] = 0.02300; f[ 9] = 0.05400; f[10] = 0.09200; f[11] = 0.05900;
640            f[12] = 0.02400; f[13] = 0.04000; f[14] = 0.05100; f[15] = 0.06900;
641            f[16] = 0.05800; f[17] = 0.01400; f[18] = 0.03200; f[19] = 0.06600;
642          }
643          break;
644        case  MTREV:
645          {
646            daa[ 1*20+ 0] =   23.18; daa[ 2*20+ 0] =   26.95; daa[ 2*20+ 1] =   13.24; daa[ 3*20+ 0] =   17.67;
647            daa[ 3*20+ 1] =    1.90; daa[ 3*20+ 2] =  794.38; daa[ 4*20+ 0] =   59.93; daa[ 4*20+ 1] =  103.33;
648            daa[ 4*20+ 2] =   58.94; daa[ 4*20+ 3] =    1.90; daa[ 5*20+ 0] =    1.90; daa[ 5*20+ 1] =  220.99;
649            daa[ 5*20+ 2] =  173.56; daa[ 5*20+ 3] =   55.28; daa[ 5*20+ 4] =   75.24; daa[ 6*20+ 0] =    9.77;
650            daa[ 6*20+ 1] =    1.90; daa[ 6*20+ 2] =   63.05; daa[ 6*20+ 3] =  583.55; daa[ 6*20+ 4] =    1.90;
651            daa[ 6*20+ 5] =  313.56; daa[ 7*20+ 0] =  120.71; daa[ 7*20+ 1] =   23.03; daa[ 7*20+ 2] =   53.30;
652            daa[ 7*20+ 3] =   56.77; daa[ 7*20+ 4] =   30.71; daa[ 7*20+ 5] =    6.75; daa[ 7*20+ 6] =   28.28;
653            daa[ 8*20+ 0] =   13.90; daa[ 8*20+ 1] =  165.23; daa[ 8*20+ 2] =  496.13; daa[ 8*20+ 3] =  113.99;
654            daa[ 8*20+ 4] =  141.49; daa[ 8*20+ 5] =  582.40; daa[ 8*20+ 6] =   49.12; daa[ 8*20+ 7] =    1.90;
655            daa[ 9*20+ 0] =   96.49; daa[ 9*20+ 1] =    1.90; daa[ 9*20+ 2] =   27.10; daa[ 9*20+ 3] =    4.34;
656            daa[ 9*20+ 4] =   62.73; daa[ 9*20+ 5] =    8.34; daa[ 9*20+ 6] =    3.31; daa[ 9*20+ 7] =    5.98;
657            daa[ 9*20+ 8] =   12.26; daa[10*20+ 0] =   25.46; daa[10*20+ 1] =   15.58; daa[10*20+ 2] =   15.16;
658            daa[10*20+ 3] =    1.90; daa[10*20+ 4] =   25.65; daa[10*20+ 5] =   39.70; daa[10*20+ 6] =    1.90;
659            daa[10*20+ 7] =    2.41; daa[10*20+ 8] =   11.49; daa[10*20+ 9] =  329.09; daa[11*20+ 0] =    8.36;
660            daa[11*20+ 1] =  141.40; daa[11*20+ 2] =  608.70; daa[11*20+ 3] =    2.31; daa[11*20+ 4] =    1.90;
661            daa[11*20+ 5] =  465.58; daa[11*20+ 6] =  313.86; daa[11*20+ 7] =   22.73; daa[11*20+ 8] =  127.67;
662            daa[11*20+ 9] =   19.57; daa[11*20+10] =   14.88; daa[12*20+ 0] =  141.88; daa[12*20+ 1] =    1.90;
663            daa[12*20+ 2] =   65.41; daa[12*20+ 3] =    1.90; daa[12*20+ 4] =    6.18; daa[12*20+ 5] =   47.37;
664            daa[12*20+ 6] =    1.90; daa[12*20+ 7] =    1.90; daa[12*20+ 8] =   11.97; daa[12*20+ 9] =  517.98;
665            daa[12*20+10] =  537.53; daa[12*20+11] =   91.37; daa[13*20+ 0] =    6.37; daa[13*20+ 1] =    4.69;
666            daa[13*20+ 2] =   15.20; daa[13*20+ 3] =    4.98; daa[13*20+ 4] =   70.80; daa[13*20+ 5] =   19.11;
667            daa[13*20+ 6] =    2.67; daa[13*20+ 7] =    1.90; daa[13*20+ 8] =   48.16; daa[13*20+ 9] =   84.67;
668            daa[13*20+10] =  216.06; daa[13*20+11] =    6.44; daa[13*20+12] =   90.82; daa[14*20+ 0] =   54.31;
669            daa[14*20+ 1] =   23.64; daa[14*20+ 2] =   73.31; daa[14*20+ 3] =   13.43; daa[14*20+ 4] =   31.26;
670            daa[14*20+ 5] =  137.29; daa[14*20+ 6] =   12.83; daa[14*20+ 7] =    1.90; daa[14*20+ 8] =   60.97;
671            daa[14*20+ 9] =   20.63; daa[14*20+10] =   40.10; daa[14*20+11] =   50.10; daa[14*20+12] =   18.84;
672            daa[14*20+13] =   17.31; daa[15*20+ 0] =  387.86; daa[15*20+ 1] =    6.04; daa[15*20+ 2] =  494.39;
673            daa[15*20+ 3] =   69.02; daa[15*20+ 4] =  277.05; daa[15*20+ 5] =   54.11; daa[15*20+ 6] =   54.71;
674            daa[15*20+ 7] =  125.93; daa[15*20+ 8] =   77.46; daa[15*20+ 9] =   47.70; daa[15*20+10] =   73.61;
675            daa[15*20+11] =  105.79; daa[15*20+12] =  111.16; daa[15*20+13] =   64.29; daa[15*20+14] =  169.90;
676            daa[16*20+ 0] =  480.72; daa[16*20+ 1] =    2.08; daa[16*20+ 2] =  238.46; daa[16*20+ 3] =   28.01;
677            daa[16*20+ 4] =  179.97; daa[16*20+ 5] =   94.93; daa[16*20+ 6] =   14.82; daa[16*20+ 7] =   11.17;
678            daa[16*20+ 8] =   44.78; daa[16*20+ 9] =  368.43; daa[16*20+10] =  126.40; daa[16*20+11] =  136.33;
679            daa[16*20+12] =  528.17; daa[16*20+13] =   33.85; daa[16*20+14] =  128.22; daa[16*20+15] =  597.21;
680            daa[17*20+ 0] =    1.90; daa[17*20+ 1] =   21.95; daa[17*20+ 2] =   10.68; daa[17*20+ 3] =   19.86;
681            daa[17*20+ 4] =   33.60; daa[17*20+ 5] =    1.90; daa[17*20+ 6] =    1.90; daa[17*20+ 7] =   10.92;
682            daa[17*20+ 8] =    7.08; daa[17*20+ 9] =    1.90; daa[17*20+10] =   32.44; daa[17*20+11] =   24.00;
683            daa[17*20+12] =   21.71; daa[17*20+13] =    7.84; daa[17*20+14] =    4.21; daa[17*20+15] =   38.58;
684            daa[17*20+16] =    9.99; daa[18*20+ 0] =    6.48; daa[18*20+ 1] =    1.90; daa[18*20+ 2] =  191.36;
685            daa[18*20+ 3] =   21.21; daa[18*20+ 4] =  254.77; daa[18*20+ 5] =   38.82; daa[18*20+ 6] =   13.12;
686            daa[18*20+ 7] =    3.21; daa[18*20+ 8] =  670.14; daa[18*20+ 9] =   25.01; daa[18*20+10] =   44.15;
687            daa[18*20+11] =   51.17; daa[18*20+12] =   39.96; daa[18*20+13] =  465.58; daa[18*20+14] =   16.21;
688            daa[18*20+15] =   64.92; daa[18*20+16] =   38.73; daa[18*20+17] =   26.25; daa[19*20+ 0] =  195.06;
689            daa[19*20+ 1] =    7.64; daa[19*20+ 2] =    1.90; daa[19*20+ 3] =    1.90; daa[19*20+ 4] =    1.90;
690            daa[19*20+ 5] =   19.00; daa[19*20+ 6] =   21.14; daa[19*20+ 7] =    2.53; daa[19*20+ 8] =    1.90;
691            daa[19*20+ 9] = 1222.94; daa[19*20+10] =   91.67; daa[19*20+11] =    1.90; daa[19*20+12] =  387.54;
692            daa[19*20+13] =    6.35; daa[19*20+14] =    8.23; daa[19*20+15] =    1.90; daa[19*20+16] =  204.54;
693            daa[19*20+17] =    5.37; daa[19*20+18] =    1.90;
694           
695           
696            f[ 0] = 0.072000; f[ 1] = 0.019000; f[ 2] = 0.039000; f[ 3] = 0.019000;
697            f[ 4] = 0.006000; f[ 5] = 0.025000; f[ 6] = 0.024000; f[ 7] = 0.056000;
698            f[ 8] = 0.028000; f[ 9] = 0.088000; f[10] = 0.169000; f[11] = 0.023000;
699            f[12] = 0.054000; f[13] = 0.061000; f[14] = 0.054000; f[15] = 0.072000;
700            f[16] = 0.086000; f[17] = 0.029000; f[18] = 0.033000; f[19] = 0.043000;
701          }
702          break;
703        case WAG:
704          {
705            daa[ 1*20+ 0] =  55.15710; daa[ 2*20+ 0] =  50.98480; daa[ 2*20+ 1] =  63.53460; 
706            daa[ 3*20+ 0] =  73.89980; daa[ 3*20+ 1] =  14.73040; daa[ 3*20+ 2] = 542.94200; 
707            daa[ 4*20+ 0] = 102.70400; daa[ 4*20+ 1] =  52.81910; daa[ 4*20+ 2] =  26.52560; 
708            daa[ 4*20+ 3] =   3.02949; daa[ 5*20+ 0] =  90.85980; daa[ 5*20+ 1] = 303.55000; 
709            daa[ 5*20+ 2] = 154.36400; daa[ 5*20+ 3] =  61.67830; daa[ 5*20+ 4] =   9.88179; 
710            daa[ 6*20+ 0] = 158.28500; daa[ 6*20+ 1] =  43.91570; daa[ 6*20+ 2] =  94.71980; 
711            daa[ 6*20+ 3] = 617.41600; daa[ 6*20+ 4] =   2.13520; daa[ 6*20+ 5] = 546.94700; 
712            daa[ 7*20+ 0] = 141.67200; daa[ 7*20+ 1] =  58.46650; daa[ 7*20+ 2] = 112.55600; 
713            daa[ 7*20+ 3] =  86.55840; daa[ 7*20+ 4] =  30.66740; daa[ 7*20+ 5] =  33.00520; 
714            daa[ 7*20+ 6] =  56.77170; daa[ 8*20+ 0] =  31.69540; daa[ 8*20+ 1] = 213.71500; 
715            daa[ 8*20+ 2] = 395.62900; daa[ 8*20+ 3] =  93.06760; daa[ 8*20+ 4] =  24.89720; 
716            daa[ 8*20+ 5] = 429.41100; daa[ 8*20+ 6] =  57.00250; daa[ 8*20+ 7] =  24.94100; 
717            daa[ 9*20+ 0] =  19.33350; daa[ 9*20+ 1] =  18.69790; daa[ 9*20+ 2] =  55.42360; 
718            daa[ 9*20+ 3] =   3.94370; daa[ 9*20+ 4] =  17.01350; daa[ 9*20+ 5] =  11.39170; 
719            daa[ 9*20+ 6] =  12.73950; daa[ 9*20+ 7] =   3.04501; daa[ 9*20+ 8] =  13.81900; 
720            daa[10*20+ 0] =  39.79150; daa[10*20+ 1] =  49.76710; daa[10*20+ 2] =  13.15280; 
721            daa[10*20+ 3] =   8.48047; daa[10*20+ 4] =  38.42870; daa[10*20+ 5] =  86.94890; 
722            daa[10*20+ 6] =  15.42630; daa[10*20+ 7] =   6.13037; daa[10*20+ 8] =  49.94620; 
723            daa[10*20+ 9] = 317.09700; daa[11*20+ 0] =  90.62650; daa[11*20+ 1] = 535.14200; 
724            daa[11*20+ 2] = 301.20100; daa[11*20+ 3] =  47.98550; daa[11*20+ 4] =   7.40339; 
725            daa[11*20+ 5] = 389.49000; daa[11*20+ 6] = 258.44300; daa[11*20+ 7] =  37.35580; 
726            daa[11*20+ 8] =  89.04320; daa[11*20+ 9] =  32.38320; daa[11*20+10] =  25.75550; 
727            daa[12*20+ 0] =  89.34960; daa[12*20+ 1] =  68.31620; daa[12*20+ 2] =  19.82210; 
728            daa[12*20+ 3] =  10.37540; daa[12*20+ 4] =  39.04820; daa[12*20+ 5] = 154.52600; 
729            daa[12*20+ 6] =  31.51240; daa[12*20+ 7] =  17.41000; daa[12*20+ 8] =  40.41410; 
730            daa[12*20+ 9] = 425.74600; daa[12*20+10] = 485.40200; daa[12*20+11] =  93.42760; 
731            daa[13*20+ 0] =  21.04940; daa[13*20+ 1] =  10.27110; daa[13*20+ 2] =   9.61621; 
732            daa[13*20+ 3] =   4.67304; daa[13*20+ 4] =  39.80200; daa[13*20+ 5] =   9.99208; 
733            daa[13*20+ 6] =   8.11339; daa[13*20+ 7] =   4.99310; daa[13*20+ 8] =  67.93710; 
734            daa[13*20+ 9] = 105.94700; daa[13*20+10] = 211.51700; daa[13*20+11] =   8.88360; 
735            daa[13*20+12] = 119.06300; daa[14*20+ 0] = 143.85500; daa[14*20+ 1] =  67.94890; 
736            daa[14*20+ 2] =  19.50810; daa[14*20+ 3] =  42.39840; daa[14*20+ 4] =  10.94040; 
737            daa[14*20+ 5] =  93.33720; daa[14*20+ 6] =  68.23550; daa[14*20+ 7] =  24.35700; 
738            daa[14*20+ 8] =  69.61980; daa[14*20+ 9] =   9.99288; daa[14*20+10] =  41.58440; 
739            daa[14*20+11] =  55.68960; daa[14*20+12] =  17.13290; daa[14*20+13] =  16.14440; 
740            daa[15*20+ 0] = 337.07900; daa[15*20+ 1] = 122.41900; daa[15*20+ 2] = 397.42300; 
741            daa[15*20+ 3] = 107.17600; daa[15*20+ 4] = 140.76600; daa[15*20+ 5] = 102.88700; 
742            daa[15*20+ 6] =  70.49390; daa[15*20+ 7] = 134.18200; daa[15*20+ 8] =  74.01690; 
743            daa[15*20+ 9] =  31.94400; daa[15*20+10] =  34.47390; daa[15*20+11] =  96.71300; 
744            daa[15*20+12] =  49.39050; daa[15*20+13] =  54.59310; daa[15*20+14] = 161.32800; 
745            daa[16*20+ 0] = 212.11100; daa[16*20+ 1] =  55.44130; daa[16*20+ 2] = 203.00600; 
746            daa[16*20+ 3] =  37.48660; daa[16*20+ 4] =  51.29840; daa[16*20+ 5] =  85.79280; 
747            daa[16*20+ 6] =  82.27650; daa[16*20+ 7] =  22.58330; daa[16*20+ 8] =  47.33070; 
748            daa[16*20+ 9] = 145.81600; daa[16*20+10] =  32.66220; daa[16*20+11] = 138.69800; 
749            daa[16*20+12] = 151.61200; daa[16*20+13] =  17.19030; daa[16*20+14] =  79.53840; 
750            daa[16*20+15] = 437.80200; daa[17*20+ 0] =  11.31330; daa[17*20+ 1] = 116.39200; 
751            daa[17*20+ 2] =   7.19167; daa[17*20+ 3] =  12.97670; daa[17*20+ 4] =  71.70700; 
752            daa[17*20+ 5] =  21.57370; daa[17*20+ 6] =  15.65570; daa[17*20+ 7] =  33.69830; 
753            daa[17*20+ 8] =  26.25690; daa[17*20+ 9] =  21.24830; daa[17*20+10] =  66.53090; 
754            daa[17*20+11] =  13.75050; daa[17*20+12] =  51.57060; daa[17*20+13] = 152.96400; 
755            daa[17*20+14] =  13.94050; daa[17*20+15] =  52.37420; daa[17*20+16] =  11.08640; 
756            daa[18*20+ 0] =  24.07350; daa[18*20+ 1] =  38.15330; daa[18*20+ 2] = 108.60000; 
757            daa[18*20+ 3] =  32.57110; daa[18*20+ 4] =  54.38330; daa[18*20+ 5] =  22.77100; 
758            daa[18*20+ 6] =  19.63030; daa[18*20+ 7] =  10.36040; daa[18*20+ 8] = 387.34400; 
759            daa[18*20+ 9] =  42.01700; daa[18*20+10] =  39.86180; daa[18*20+11] =  13.32640; 
760            daa[18*20+12] =  42.84370; daa[18*20+13] = 645.42800; daa[18*20+14] =  21.60460; 
761            daa[18*20+15] =  78.69930; daa[18*20+16] =  29.11480; daa[18*20+17] = 248.53900; 
762            daa[19*20+ 0] = 200.60100; daa[19*20+ 1] =  25.18490; daa[19*20+ 2] =  19.62460; 
763            daa[19*20+ 3] =  15.23350; daa[19*20+ 4] = 100.21400; daa[19*20+ 5] =  30.12810; 
764            daa[19*20+ 6] =  58.87310; daa[19*20+ 7] =  18.72470; daa[19*20+ 8] =  11.83580; 
765            daa[19*20+ 9] = 782.13000; daa[19*20+10] = 180.03400; daa[19*20+11] =  30.54340; 
766            daa[19*20+12] = 205.84500; daa[19*20+13] =  64.98920; daa[19*20+14] =  31.48870; 
767            daa[19*20+15] =  23.27390; daa[19*20+16] = 138.82300; daa[19*20+17] =  36.53690; 
768            daa[19*20+18] =  31.47300; 
769                   
770            f[0]  = 0.08700; f[1]  = 0.04400; f[2]  = 0.03900; f[3]  = 0.05700;
771            f[4]  = 0.01900; f[5]  = 0.03700; f[6]  = 0.05800; f[7]  = 0.08300;
772            f[8]  = 0.02400; f[9]  = 0.04900; f[10] = 0.08600; f[11] = 0.06200;
773            f[12] = 0.02000; f[13] = 0.03800; f[14] = 0.04600; f[15] = 0.07000;
774            f[16] = 0.06100; f[17] = 0.01400; f[18] = 0.03500; f[19] = 0.07100;   
775          }
776          break;
777        case RTREV:
778          {
779            daa[1*20+0]= 34;         daa[2*20+0]= 51;         daa[2*20+1]= 35;         daa[3*20+0]= 10;         
780            daa[3*20+1]= 30;         daa[3*20+2]= 384;        daa[4*20+0]= 439;        daa[4*20+1]= 92;         
781            daa[4*20+2]= 128;        daa[4*20+3]= 1;          daa[5*20+0]= 32;         daa[5*20+1]= 221;       
782            daa[5*20+2]= 236;        daa[5*20+3]= 78;         daa[5*20+4]= 70;         daa[6*20+0]= 81;         
783            daa[6*20+1]= 10;         daa[6*20+2]= 79;         daa[6*20+3]= 542;        daa[6*20+4]= 1;         
784            daa[6*20+5]= 372;        daa[7*20+0]= 135;        daa[7*20+1]= 41;         daa[7*20+2]= 94;         
785            daa[7*20+3]= 61;         daa[7*20+4]= 48;         daa[7*20+5]= 18;         daa[7*20+6]= 70;         
786            daa[8*20+0]= 30;         daa[8*20+1]= 90;         daa[8*20+2]= 320;        daa[8*20+3]= 91;         
787            daa[8*20+4]= 124;        daa[8*20+5]= 387;        daa[8*20+6]= 34;         daa[8*20+7]= 68;         
788            daa[9*20+0]= 1;          daa[9*20+1]= 24;         daa[9*20+2]= 35;         daa[9*20+3]= 1;         
789            daa[9*20+4]= 104;        daa[9*20+5]= 33;         daa[9*20+6]= 1;          daa[9*20+7]= 1;         
790            daa[9*20+8]= 34;         daa[10*20+0]= 45;        daa[10*20+1]= 18;        daa[10*20+2]= 15;       
791            daa[10*20+3]= 5;         daa[10*20+4]= 110;       daa[10*20+5]= 54;        daa[10*20+6]= 21;       
792            daa[10*20+7]= 3;         daa[10*20+8]= 51;        daa[10*20+9]= 385;       daa[11*20+0]= 38;       
793            daa[11*20+1]= 593;       daa[11*20+2]= 123;       daa[11*20+3]= 20;        daa[11*20+4]= 16;       
794            daa[11*20+5]= 309;       daa[11*20+6]= 141;       daa[11*20+7]= 30;        daa[11*20+8]= 76;       
795            daa[11*20+9]= 34;        daa[11*20+10]= 23;       daa[12*20+0]= 235;       daa[12*20+1]= 57;       
796            daa[12*20+2]= 1;         daa[12*20+3]= 1;         daa[12*20+4]= 156;       daa[12*20+5]= 158;       
797            daa[12*20+6]= 1;         daa[12*20+7]= 37;        daa[12*20+8]= 116;       daa[12*20+9]= 375;       
798            daa[12*20+10]= 581;      daa[12*20+11]= 134;      daa[13*20+0]= 1;         daa[13*20+1]= 7;         
799            daa[13*20+2]= 49;        daa[13*20+3]= 1;         daa[13*20+4]= 70;        daa[13*20+5]= 1;         
800            daa[13*20+6]= 1;         daa[13*20+7]= 7;         daa[13*20+8]= 141;       daa[13*20+9]= 64;       
801            daa[13*20+10]= 179;      daa[13*20+11]= 14;       daa[13*20+12]= 247;      daa[14*20+0]= 97;       
802            daa[14*20+1]= 24;        daa[14*20+2]= 33;        daa[14*20+3]= 55;        daa[14*20+4]= 1;         
803            daa[14*20+5]= 68;        daa[14*20+6]= 52;        daa[14*20+7]= 17;        daa[14*20+8]= 44;       
804            daa[14*20+9]= 10;        daa[14*20+10]= 22;       daa[14*20+11]= 43;       daa[14*20+12]= 1;       
805            daa[14*20+13]= 11;       daa[15*20+0]= 460;       daa[15*20+1]= 102;       daa[15*20+2]= 294;       
806            daa[15*20+3]= 136;       daa[15*20+4]= 75;        daa[15*20+5]= 225;       daa[15*20+6]= 95;       
807            daa[15*20+7]= 152;       daa[15*20+8]= 183;       daa[15*20+9]= 4;         daa[15*20+10]= 24;       
808            daa[15*20+11]= 77;       daa[15*20+12]= 1;        daa[15*20+13]= 20;       daa[15*20+14]= 134;     
809            daa[16*20+0]= 258;       daa[16*20+1]= 64;        daa[16*20+2]= 148;       daa[16*20+3]= 55;       
810            daa[16*20+4]= 117;       daa[16*20+5]= 146;       daa[16*20+6]= 82;        daa[16*20+7]= 7;         
811            daa[16*20+8]= 49;        daa[16*20+9]= 72;        daa[16*20+10]= 25;       daa[16*20+11]= 110;     
812            daa[16*20+12]= 131;      daa[16*20+13]= 69;       daa[16*20+14]= 62;       daa[16*20+15]= 671;     
813            daa[17*20+0]= 5;         daa[17*20+1]= 13;        daa[17*20+2]= 16;        daa[17*20+3]= 1;         
814            daa[17*20+4]= 55;        daa[17*20+5]= 10;        daa[17*20+6]= 17;        daa[17*20+7]= 23;       
815            daa[17*20+8]= 48;        daa[17*20+9]= 39;        daa[17*20+10]= 47;       daa[17*20+11]= 6;       
816            daa[17*20+12]= 111;      daa[17*20+13]= 182;      daa[17*20+14]= 9;        daa[17*20+15]= 14;       
817            daa[17*20+16]= 1;        daa[18*20+0]= 55;        daa[18*20+1]= 47;        daa[18*20+2]= 28;       
818            daa[18*20+3]= 1;         daa[18*20+4]= 131;       daa[18*20+5]= 45;        daa[18*20+6]= 1;         
819            daa[18*20+7]= 21;        daa[18*20+8]= 307;       daa[18*20+9]= 26;        daa[18*20+10]= 64;       
820            daa[18*20+11]= 1;        daa[18*20+12]= 74;       daa[18*20+13]= 1017;     daa[18*20+14]= 14;       
821            daa[18*20+15]= 31;       daa[18*20+16]= 34;       daa[18*20+17]= 176;      daa[19*20+0]= 197;       
822            daa[19*20+1]= 29;        daa[19*20+2]= 21;        daa[19*20+3]= 6;         daa[19*20+4]= 295;       
823            daa[19*20+5]= 36;        daa[19*20+6]= 35;        daa[19*20+7]= 3;         daa[19*20+8]= 1;         
824            daa[19*20+9]= 1048;      daa[19*20+10]= 112;      daa[19*20+11]= 19;       daa[19*20+12]= 236;     
825            daa[19*20+13]= 92;       daa[19*20+14]= 25;       daa[19*20+15]= 39;       daa[19*20+16]= 196;     
826            daa[19*20+17]= 26;       daa[19*20+18]= 59;       
827           
828            f[0]= 0.0646;           f[1]= 0.0453;           f[2]= 0.0376;           f[3]= 0.0422;           
829            f[4]= 0.0114;           f[5]= 0.0606;           f[6]= 0.0607;           f[7]= 0.0639;           
830            f[8]= 0.0273;           f[9]= 0.0679;           f[10]= 0.1018;          f[11]= 0.0751;         
831            f[12]= 0.015;           f[13]= 0.0287;          f[14]= 0.0681;          f[15]= 0.0488;         
832            f[16]= 0.0622;          f[17]= 0.0251;          f[18]= 0.0318;          f[19]= 0.0619;                 
833          }
834          break;
835        case CPREV:
836          {
837            daa[1*20+0]= 105;        daa[2*20+0]= 227;        daa[2*20+1]= 357;        daa[3*20+0]= 175;       
838            daa[3*20+1]= 43;         daa[3*20+2]= 4435;       daa[4*20+0]= 669;        daa[4*20+1]= 823;       
839            daa[4*20+2]= 538;        daa[4*20+3]= 10;         daa[5*20+0]= 157;        daa[5*20+1]= 1745;       
840            daa[5*20+2]= 768;        daa[5*20+3]= 400;        daa[5*20+4]= 10;         daa[6*20+0]= 499;       
841            daa[6*20+1]= 152;        daa[6*20+2]= 1055;       daa[6*20+3]= 3691;       daa[6*20+4]= 10;         
842            daa[6*20+5]= 3122;       daa[7*20+0]= 665;        daa[7*20+1]= 243;        daa[7*20+2]= 653;       
843            daa[7*20+3]= 431;        daa[7*20+4]= 303;        daa[7*20+5]= 133;        daa[7*20+6]= 379;       
844            daa[8*20+0]= 66;         daa[8*20+1]= 715;        daa[8*20+2]= 1405;       daa[8*20+3]= 331;       
845            daa[8*20+4]= 441;        daa[8*20+5]= 1269;       daa[8*20+6]= 162;        daa[8*20+7]= 19;         
846            daa[9*20+0]= 145;        daa[9*20+1]= 136;        daa[9*20+2]= 168;        daa[9*20+3]= 10;         
847            daa[9*20+4]= 280;        daa[9*20+5]= 92;         daa[9*20+6]= 148;        daa[9*20+7]= 40;         
848            daa[9*20+8]= 29;         daa[10*20+0]= 197;       daa[10*20+1]= 203;       daa[10*20+2]= 113;       
849            daa[10*20+3]= 10;        daa[10*20+4]= 396;       daa[10*20+5]= 286;       daa[10*20+6]= 82;       
850            daa[10*20+7]= 20;        daa[10*20+8]= 66;        daa[10*20+9]= 1745;      daa[11*20+0]= 236;       
851            daa[11*20+1]= 4482;      daa[11*20+2]= 2430;      daa[11*20+3]= 412;       daa[11*20+4]= 48;       
852            daa[11*20+5]= 3313;      daa[11*20+6]= 2629;      daa[11*20+7]= 263;       daa[11*20+8]= 305;       
853            daa[11*20+9]= 345;       daa[11*20+10]= 218;      daa[12*20+0]= 185;       daa[12*20+1]= 125;       
854            daa[12*20+2]= 61;        daa[12*20+3]= 47;        daa[12*20+4]= 159;       daa[12*20+5]= 202;       
855            daa[12*20+6]= 113;       daa[12*20+7]= 21;        daa[12*20+8]= 10;        daa[12*20+9]= 1772;     
856            daa[12*20+10]= 1351;     daa[12*20+11]= 193;      daa[13*20+0]= 68;        daa[13*20+1]= 53;       
857            daa[13*20+2]= 97;        daa[13*20+3]= 22;        daa[13*20+4]= 726;       daa[13*20+5]= 10;       
858            daa[13*20+6]= 145;       daa[13*20+7]= 25;        daa[13*20+8]= 127;       daa[13*20+9]= 454;       
859            daa[13*20+10]= 1268;     daa[13*20+11]= 72;       daa[13*20+12]= 327;      daa[14*20+0]= 490;       
860            daa[14*20+1]= 87;        daa[14*20+2]= 173;       daa[14*20+3]= 170;       daa[14*20+4]= 285;       
861            daa[14*20+5]= 323;       daa[14*20+6]= 185;       daa[14*20+7]= 28;        daa[14*20+8]= 152;       
862            daa[14*20+9]= 117;       daa[14*20+10]= 219;      daa[14*20+11]= 302;      daa[14*20+12]= 100;     
863            daa[14*20+13]= 43;       daa[15*20+0]= 2440;      daa[15*20+1]= 385;       daa[15*20+2]= 2085;     
864            daa[15*20+3]= 590;       daa[15*20+4]= 2331;      daa[15*20+5]= 396;       daa[15*20+6]= 568;       
865            daa[15*20+7]= 691;       daa[15*20+8]= 303;       daa[15*20+9]= 216;       daa[15*20+10]= 516;     
866            daa[15*20+11]= 868;      daa[15*20+12]= 93;       daa[15*20+13]= 487;      daa[15*20+14]= 1202;     
867            daa[16*20+0]= 1340;      daa[16*20+1]= 314;       daa[16*20+2]= 1393;      daa[16*20+3]= 266;       
868            daa[16*20+4]= 576;       daa[16*20+5]= 241;       daa[16*20+6]= 369;       daa[16*20+7]= 92;       
869            daa[16*20+8]= 32;        daa[16*20+9]= 1040;      daa[16*20+10]= 156;      daa[16*20+11]= 918;     
870            daa[16*20+12]= 645;      daa[16*20+13]= 148;      daa[16*20+14]= 260;      daa[16*20+15]= 2151;     
871            daa[17*20+0]= 14;        daa[17*20+1]= 230;       daa[17*20+2]= 40;        daa[17*20+3]= 18;       
872            daa[17*20+4]= 435;       daa[17*20+5]= 53;        daa[17*20+6]= 63;        daa[17*20+7]= 82;       
873            daa[17*20+8]= 69;        daa[17*20+9]= 42;        daa[17*20+10]= 159;      daa[17*20+11]= 10;       
874            daa[17*20+12]= 86;       daa[17*20+13]= 468;      daa[17*20+14]= 49;       daa[17*20+15]= 73;       
875            daa[17*20+16]= 29;       daa[18*20+0]= 56;        daa[18*20+1]= 323;       daa[18*20+2]= 754;       
876            daa[18*20+3]= 281;       daa[18*20+4]= 1466;      daa[18*20+5]= 391;       daa[18*20+6]= 142;       
877            daa[18*20+7]= 10;        daa[18*20+8]= 1971;      daa[18*20+9]= 89;        daa[18*20+10]= 189;     
878            daa[18*20+11]= 247;      daa[18*20+12]= 215;      daa[18*20+13]= 2370;     daa[18*20+14]= 97;       
879            daa[18*20+15]= 522;      daa[18*20+16]= 71;       daa[18*20+17]= 346;      daa[19*20+0]= 968;       
880            daa[19*20+1]= 92;        daa[19*20+2]= 83;        daa[19*20+3]= 75;        daa[19*20+4]= 592;       
881            daa[19*20+5]= 54;        daa[19*20+6]= 200;       daa[19*20+7]= 91;        daa[19*20+8]= 25;       
882            daa[19*20+9]= 4797;      daa[19*20+10]= 865;      daa[19*20+11]= 249;      daa[19*20+12]= 475;     
883            daa[19*20+13]= 317;      daa[19*20+14]= 122;      daa[19*20+15]= 167;      daa[19*20+16]= 760;     
884            daa[19*20+17]= 10;       daa[19*20+18]= 119;     
885           
886            f[0]= 0.076;            f[1]= 0.062;            f[2]= 0.041;            f[3]= 0.037;           
887            f[4]= 0.009;            f[5]= 0.038;            f[6]= 0.049;            f[7]= 0.084;           
888            f[8]= 0.025;            f[9]= 0.081;            f[10]= 0.101;           f[11]= 0.05;           
889            f[12]= 0.022;           f[13]= 0.051;           f[14]= 0.043;           f[15]= 0.062;           
890            f[16]= 0.054;           f[17]= 0.018;           f[18]= 0.031;           f[19]= 0.066; 
891          }
892          break;
893        case VT:
894          {
895            /*
896              daa[1*20+0]= 0.233108;   daa[2*20+0]= 0.199097;   daa[2*20+1]= 0.210797;   daa[3*20+0]= 0.265145;   
897              daa[3*20+1]= 0.105191;   daa[3*20+2]= 0.883422;   daa[4*20+0]= 0.227333;   daa[4*20+1]= 0.031726;   
898              daa[4*20+2]= 0.027495;   daa[4*20+3]= 0.010313;   daa[5*20+0]= 0.310084;   daa[5*20+1]= 0.493763;   
899              daa[5*20+2]= 0.2757;     daa[5*20+3]= 0.205842;   daa[5*20+4]= 0.004315;   daa[6*20+0]= 0.567957;   
900              daa[6*20+1]= 0.25524;    daa[6*20+2]= 0.270417;   daa[6*20+3]= 1.599461;   daa[6*20+4]= 0.005321;   
901              daa[6*20+5]= 0.960976;   daa[7*20+0]= 0.876213;   daa[7*20+1]= 0.156945;   daa[7*20+2]= 0.362028;   
902              daa[7*20+3]= 0.311718;   daa[7*20+4]= 0.050876;   daa[7*20+5]= 0.12866;    daa[7*20+6]= 0.250447;   
903              daa[8*20+0]= 0.078692;   daa[8*20+1]= 0.213164;   daa[8*20+2]= 0.290006;   daa[8*20+3]= 0.134252;   
904              daa[8*20+4]= 0.016695;   daa[8*20+5]= 0.315521;   daa[8*20+6]= 0.104458;   daa[8*20+7]= 0.058131;   
905              daa[9*20+0]= 0.222972;   daa[9*20+1]= 0.08151;    daa[9*20+2]= 0.087225;   daa[9*20+3]= 0.01172;   
906              daa[9*20+4]= 0.046398;   daa[9*20+5]= 0.054602;   daa[9*20+6]= 0.046589;   daa[9*20+7]= 0.051089;   
907              daa[9*20+8]= 0.020039;   daa[10*20+0]= 0.42463;   daa[10*20+1]= 0.192364;  daa[10*20+2]= 0.069245; 
908              daa[10*20+3]= 0.060863;  daa[10*20+4]= 0.091709;  daa[10*20+5]= 0.24353;   daa[10*20+6]= 0.151924; 
909              daa[10*20+7]= 0.087056;  daa[10*20+8]= 0.103552;  daa[10*20+9]= 2.08989;   daa[11*20+0]= 0.393245; 
910              daa[11*20+1]= 1.755838;  daa[11*20+2]= 0.50306;   daa[11*20+3]= 0.261101;  daa[11*20+4]= 0.004067; 
911              daa[11*20+5]= 0.738208;  daa[11*20+6]= 0.88863;   daa[11*20+7]= 0.193243;  daa[11*20+8]= 0.153323; 
912              daa[11*20+9]= 0.093181;  daa[11*20+10]= 0.201204; daa[12*20+0]= 0.21155;   daa[12*20+1]= 0.08793;   
913              daa[12*20+2]= 0.05742;   daa[12*20+3]= 0.012182;  daa[12*20+4]= 0.02369;   daa[12*20+5]= 0.120801; 
914              daa[12*20+6]= 0.058643;  daa[12*20+7]= 0.04656;   daa[12*20+8]= 0.021157;  daa[12*20+9]= 0.493845; 
915              daa[12*20+10]= 1.105667; daa[12*20+11]= 0.096474; daa[13*20+0]= 0.116646;  daa[13*20+1]= 0.042569; 
916              daa[13*20+2]= 0.039769;  daa[13*20+3]= 0.016577;  daa[13*20+4]= 0.051127;  daa[13*20+5]= 0.026235; 
917              daa[13*20+6]= 0.028168;  daa[13*20+7]= 0.050143;  daa[13*20+8]= 0.079807;  daa[13*20+9]= 0.32102;   
918              daa[13*20+10]= 0.946499; daa[13*20+11]= 0.038261; daa[13*20+12]= 0.173052; daa[14*20+0]= 0.399143; 
919              daa[14*20+1]= 0.12848;   daa[14*20+2]= 0.083956;  daa[14*20+3]= 0.160063;  daa[14*20+4]= 0.011137; 
920              daa[14*20+5]= 0.15657;   daa[14*20+6]= 0.205134;  daa[14*20+7]= 0.124492;  daa[14*20+8]= 0.078892; 
921              daa[14*20+9]= 0.054797;  daa[14*20+10]= 0.169784; daa[14*20+11]= 0.212302; daa[14*20+12]= 0.010363;
922              daa[14*20+13]= 0.042564; daa[15*20+0]= 1.817198;  daa[15*20+1]= 0.292327;  daa[15*20+2]= 0.847049; 
923              daa[15*20+3]= 0.461519;  daa[15*20+4]= 0.17527;   daa[15*20+5]= 0.358017;  daa[15*20+6]= 0.406035; 
924              daa[15*20+7]= 0.612843;  daa[15*20+8]= 0.167406;  daa[15*20+9]= 0.081567;  daa[15*20+10]= 0.214977;
925              daa[15*20+11]= 0.400072; daa[15*20+12]= 0.090515; daa[15*20+13]= 0.138119; daa[15*20+14]= 0.430431;
926              daa[16*20+0]= 0.877877;  daa[16*20+1]= 0.204109;  daa[16*20+2]= 0.471268;  daa[16*20+3]= 0.178197; 
927              daa[16*20+4]= 0.079511;  daa[16*20+5]= 0.248992;  daa[16*20+6]= 0.321028;  daa[16*20+7]= 0.136266; 
928              daa[16*20+8]= 0.101117;  daa[16*20+9]= 0.376588;  daa[16*20+10]= 0.243227; daa[16*20+11]= 0.446646;
929              daa[16*20+12]= 0.184609; daa[16*20+13]= 0.08587;  daa[16*20+14]= 0.207143; daa[16*20+15]= 1.767766;
930              daa[17*20+0]= 0.030309;  daa[17*20+1]= 0.046417;  daa[17*20+2]= 0.010459;  daa[17*20+3]= 0.011393; 
931              daa[17*20+4]= 0.007732;  daa[17*20+5]= 0.021248;  daa[17*20+6]= 0.018844;  daa[17*20+7]= 0.02399;   
932              daa[17*20+8]= 0.020009;  daa[17*20+9]= 0.034954;  daa[17*20+10]= 0.083439; daa[17*20+11]= 0.023321;
933              daa[17*20+12]= 0.022019; daa[17*20+13]= 0.12805;  daa[17*20+14]= 0.014584; daa[17*20+15]= 0.035933;
934              daa[17*20+16]= 0.020437; daa[18*20+0]= 0.087061;  daa[18*20+1]= 0.09701;   daa[18*20+2]= 0.093268; 
935              daa[18*20+3]= 0.051664;  daa[18*20+4]= 0.042823;  daa[18*20+5]= 0.062544;  daa[18*20+6]= 0.0552;   
936              daa[18*20+7]= 0.037568;  daa[18*20+8]= 0.286027;  daa[18*20+9]= 0.086237;  daa[18*20+10]= 0.189842;
937              daa[18*20+11]= 0.068689; daa[18*20+12]= 0.073223; daa[18*20+13]= 0.898663; daa[18*20+14]= 0.032043;
938              daa[18*20+15]= 0.121979; daa[18*20+16]= 0.094617; daa[18*20+17]= 0.124746; daa[19*20+0]= 1.230985; 
939              daa[19*20+1]= 0.113146;  daa[19*20+2]= 0.049824;  daa[19*20+3]= 0.048769;  daa[19*20+4]= 0.163831; 
940              daa[19*20+5]= 0.112027;  daa[19*20+6]= 0.205868;  daa[19*20+7]= 0.082579;  daa[19*20+8]= 0.068575; 
941              daa[19*20+9]= 3.65443;   daa[19*20+10]= 1.337571; daa[19*20+11]= 0.144587; daa[19*20+12]= 0.307309;
942              daa[19*20+13]= 0.247329; daa[19*20+14]= 0.129315; daa[19*20+15]= 0.1277;   daa[19*20+16]= 0.740372;
943              daa[19*20+17]= 0.022134; daa[19*20+18]= 0.125733;                     
944             
945              f[0]  = 0.07900;         f[1]= 0.05100;        f[2]  = 0.04200;         f[3]= 0.05300;         
946              f[4]  = 0.01500;         f[5]= 0.03700;        f[6]  = 0.06200;         f[7]= 0.07100;         
947              f[8]  = 0.02300;         f[9]= 0.06200;        f[10] = 0.09600;        f[11]= 0.05700;       
948              f[12] = 0.02400;        f[13]= 0.04300;        f[14] = 0.04400;        f[15]= 0.06400;       
949              f[16] = 0.05600;        f[17]= 0.01300;        f[18] = 0.03500;        f[19]= 0.07300;
950            */
951
952            daa[1*20+0]=   1.2412691067876198;
953            daa[2*20+0]=   1.2184237953498958;
954            daa[2*20+1]=   1.5720770753326880;
955            daa[3*20+0]=   1.3759368509441177;
956            daa[3*20+1]=   0.7550654439001206;
957            daa[3*20+2]=   7.8584219153689405;
958            daa[4*20+0]=   2.4731223087544874;
959            daa[4*20+1]=   1.4414262567428417;
960            daa[4*20+2]=   0.9784679122774127;
961            daa[4*20+3]=   0.2272488448121475;
962            daa[5*20+0]=   2.2155167805137470;
963            daa[5*20+1]=   5.5120819705248678;
964            daa[5*20+2]=   3.0143201670924822;
965            daa[5*20+3]=   1.6562495638176040;
966            daa[5*20+4]=   0.4587469126746136;
967            daa[6*20+0]=   2.3379911207495061;
968            daa[6*20+1]=   1.3542404860613146;
969            daa[6*20+2]=   2.0093434778398112;
970            daa[6*20+3]=   9.6883451875685065;
971            daa[6*20+4]=   0.4519167943192672;
972            daa[6*20+5]=   6.8124601839937675;
973            daa[7*20+0]=   3.3386555146457697;
974            daa[7*20+1]=   1.3121700301622004;
975            daa[7*20+2]=   2.4117632898861809;
976            daa[7*20+3]=   1.9142079025990228;
977            daa[7*20+4]=   1.1034605684472507;
978            daa[7*20+5]=   0.8776110594765502;
979            daa[7*20+6]=   1.3860121390169038;
980            daa[8*20+0]=   0.9615841926910841;
981            daa[8*20+1]=   4.9238668283945266;
982            daa[8*20+2]=   6.1974384977884114;
983            daa[8*20+3]=   2.1459640610133781;
984            daa[8*20+4]=   1.5196756759380692;
985            daa[8*20+5]=   7.9943228564946525;
986            daa[8*20+6]=   1.6360079688522375;
987            daa[8*20+7]=   0.8561248973045037;
988            daa[9*20+0]=   0.8908203061925510;
989            daa[9*20+1]=   0.4323005487925516;
990            daa[9*20+2]=   0.9179291175331520;
991            daa[9*20+3]=   0.2161660372725585;
992            daa[9*20+4]=   0.9126668032539315;
993            daa[9*20+5]=   0.4882733432879921;
994            daa[9*20+6]=   0.4035497929633328;
995            daa[9*20+7]=   0.2888075033037488;
996            daa[9*20+8]=   0.5787937115407940;
997            daa[10*20+0]=  1.0778497408764076;
998            daa[10*20+1]=  0.8386701149158265;
999            daa[10*20+2]=  0.4098311270816011;
1000            daa[10*20+3]=  0.3574207468998517;
1001            daa[10*20+4]=  1.4081315998413697;
1002            daa[10*20+5]=  1.3318097154194044;
1003            daa[10*20+6]=  0.5610717242294755;
1004            daa[10*20+7]=  0.3578662395745526;
1005            daa[10*20+8]=  1.0765007949562073;
1006            daa[10*20+9]=  6.0019110258426362;
1007            daa[11*20+0]=  1.4932055816372476;
1008            daa[11*20+1]=  10.017330817366002;
1009            daa[11*20+2]=  4.4034547578962568;
1010            daa[11*20+3]=  1.4521790561663968;
1011            daa[11*20+4]=  0.3371091785647479;
1012            daa[11*20+5]=  6.0519085243118811;
1013            daa[11*20+6]=  4.3290086529582830;
1014            daa[11*20+7]=  0.8945563662345198;
1015            daa[11*20+8]=  1.8085136096039203;
1016            daa[11*20+9]=  0.6244297525127139;
1017            daa[11*20+10]= 0.5642322882556321;
1018            daa[12*20+0]=  1.9006455961717605;
1019            daa[12*20+1]=  1.2488638689609959;
1020            daa[12*20+2]=  0.9378803706165143;
1021            daa[12*20+3]=  0.4075239926000898;
1022            daa[12*20+4]=  1.2213054800811556;
1023            daa[12*20+5]=  1.9106190827629084;
1024            daa[12*20+6]=  0.7471936218068498;
1025            daa[12*20+7]=  0.5954812791740037;
1026            daa[12*20+8]=  1.3808291710019667;
1027            daa[12*20+9]=  6.7597899772045418;
1028            daa[12*20+10]= 8.0327792947421148;
1029            daa[12*20+11]= 1.7129670976916258;
1030            daa[13*20+0]=  0.6883439026872615;
1031            daa[13*20+1]=  0.4224945197276290;
1032            daa[13*20+2]=  0.5044944273324311;
1033            daa[13*20+3]=  0.1675129724559251;
1034            daa[13*20+4]=  1.6953951980808002;
1035            daa[13*20+5]=  0.3573432522499545;
1036            daa[13*20+6]=  0.2317194387691585;
1037            daa[13*20+7]=  0.3693722640980460;
1038            daa[13*20+8]=  1.3629765501081097;
1039            daa[13*20+9]=  2.2864286949316077;
1040            daa[13*20+10]= 4.3611548063555778;
1041            daa[13*20+11]= 0.3910559903834828;
1042            daa[13*20+12]= 2.3201373546296349;
1043            daa[14*20+0]=  2.7355620089953550;
1044            daa[14*20+1]=  1.3091837782420783;
1045            daa[14*20+2]=  0.7103720531974738;
1046            daa[14*20+3]=  1.0714605979577547;
1047            daa[14*20+4]=  0.4326227078645523;
1048            daa[14*20+5]=  2.3019177728300728;
1049            daa[14*20+6]=  1.5132807416252063;
1050            daa[14*20+7]=  0.7744933618134962;
1051            daa[14*20+8]=  1.8370555852070649;
1052            daa[14*20+9]=  0.4811402387911145;
1053            daa[14*20+10]= 1.0084320519837335;
1054            daa[14*20+11]= 1.3918935593582853;
1055            daa[14*20+12]= 0.4953193808676289;
1056            daa[14*20+13]= 0.3746821107962129;
1057            daa[15*20+0]=  6.4208961859142883;
1058            daa[15*20+1]=  1.9202994262316166;
1059            daa[15*20+2]=  6.1234512396801764;
1060            daa[15*20+3]=  2.2161944596741829;
1061            daa[15*20+4]=  3.6366815408744255;
1062            daa[15*20+5]=  2.3193703643237220;
1063            daa[15*20+6]=  1.8273535587773553;
1064            daa[15*20+7]=  3.0637776193717610;
1065            daa[15*20+8]=  1.9699895187387506;
1066            daa[15*20+9]=  0.6047491507504744;
1067            daa[15*20+10]= 0.8953754669269811;
1068            daa[15*20+11]= 1.9776630140912268;
1069            daa[15*20+12]= 1.0657482318076852;
1070            daa[15*20+13]= 1.1079144700606407;
1071            daa[15*20+14]= 3.5465914843628927;
1072            daa[16*20+0]=  5.2892514169776437;
1073            daa[16*20+1]=  1.3363401740560601;
1074            daa[16*20+2]=  3.8852506105922231;
1075            daa[16*20+3]=  1.5066839872944762;
1076            daa[16*20+4]=  1.7557065205837685;
1077            daa[16*20+5]=  2.1576510103471440;
1078            daa[16*20+6]=  1.5839981708584689;
1079            daa[16*20+7]=  0.7147489676267383;
1080            daa[16*20+8]=  1.6136654573285647;
1081            daa[16*20+9]=  2.6344778384442731;
1082            daa[16*20+10]= 1.0192004372506540;
1083            daa[16*20+11]= 2.5513781312660280;
1084            daa[16*20+12]= 3.3628488360462363;
1085            daa[16*20+13]= 0.6882725908872254;
1086            daa[16*20+14]= 1.9485376673137556;
1087            daa[16*20+15]= 8.8479984061248178;
1088            daa[17*20+0]=  0.5488578478106930;
1089            daa[17*20+1]=  1.5170142153962840;
1090            daa[17*20+2]=  0.1808525752605976;
1091            daa[17*20+3]=  0.2496584188151770;
1092            daa[17*20+4]=  1.6275179891253113;
1093            daa[17*20+5]=  0.8959082681546182;
1094            daa[17*20+6]=  0.4198391148111098;
1095            daa[17*20+7]=  0.9349753595598769;
1096            daa[17*20+8]=  0.6301954684360302;
1097            daa[17*20+9]=  0.5604648274060783;
1098            daa[17*20+10]= 1.5183114434679339;
1099            daa[17*20+11]= 0.5851920879490173;
1100            daa[17*20+12]= 1.4680478689711018;
1101            daa[17*20+13]= 3.3448437239772266;
1102            daa[17*20+14]= 0.4326058001438786;
1103            daa[17*20+15]= 0.6791126595939816;
1104            daa[17*20+16]= 0.4514203099376473;
1105            daa[18*20+0]=  0.5411769916657778;
1106            daa[18*20+1]=  0.8912614404565405;
1107            daa[18*20+2]=  1.0894926581511342;
1108            daa[18*20+3]=  0.7447620891784513;
1109            daa[18*20+4]=  2.1579775140421025;
1110            daa[18*20+5]=  0.9183596801412757;
1111            daa[18*20+6]=  0.5818111331782764;
1112            daa[18*20+7]=  0.3374467649724478;
1113            daa[18*20+8]=  7.7587442309146040;
1114            daa[18*20+9]=  0.8626796044156272;
1115            daa[18*20+10]= 1.2452243224541324;
1116            daa[18*20+11]= 0.7835447533710449;
1117            daa[18*20+12]= 1.0899165770956820;
1118            daa[18*20+13]= 10.384852333133459;
1119            daa[18*20+14]= 0.4819109019647465;
1120            daa[18*20+15]= 0.9547229305958682;
1121            daa[18*20+16]= 0.8564314184691215;
1122            daa[18*20+17]= 4.5377235790405388;
1123            daa[19*20+0]=  4.6501894691803214;
1124            daa[19*20+1]=  0.7807017855806767;
1125            daa[19*20+2]=  0.4586061981719967;
1126            daa[19*20+3]=  0.4594535241660911;
1127            daa[19*20+4]=  2.2627456996290891;
1128            daa[19*20+5]=  0.6366932501396869;
1129            daa[19*20+6]=  0.8940572875547330;
1130            daa[19*20+7]=  0.6193321034173915;
1131            daa[19*20+8]=  0.5333220944030346;
1132            daa[19*20+9]=  14.872933461519061;
1133            daa[19*20+10]= 3.5458093276667237;
1134            daa[19*20+11]= 0.7801080335991272;
1135            daa[19*20+12]= 4.0584577156753401;
1136            daa[19*20+13]= 1.7039730522675411;
1137            daa[19*20+14]= 0.5985498912985666;
1138            daa[19*20+15]= 0.9305232113028208;
1139            daa[19*20+16]= 3.4242218450865543;
1140            daa[19*20+17]= 0.5658969249032649;
1141            daa[19*20+18]= 1.0000000000000000;
1142           
1143            f[0]=  0.0770764620135024;
1144            f[1]=  0.0500819370772208;
1145            f[2]=  0.0462377395993731;
1146            f[3]=  0.0537929860758246;
1147            f[4]=  0.0144533387583345;
1148            f[5]=  0.0408923608974345;
1149            f[6]=  0.0633579339160905;
1150            f[7]=  0.0655672355884439;
1151            f[8]=  0.0218802687005936;
1152            f[9]=  0.0591969699027449;
1153            f[10]= 0.0976461276528445;
1154            f[11]= 0.0592079410822730;
1155            f[12]= 0.0220695876653368;
1156            f[13]= 0.0413508521834260;
1157            f[14]= 0.0476871596856874;
1158            f[15]= 0.0707295165111524;
1159            f[16]= 0.0567759161524817;
1160            f[17]= 0.0127019797647213;
1161            f[18]= 0.0323746050281867;
1162            f[19]= 0.0669190817443274;
1163          }
1164          break;
1165        case BLOSUM62:
1166          {
1167            daa[1*20+0]= 0.735790389698;  daa[2*20+0]= 0.485391055466;  daa[2*20+1]= 1.297446705134; 
1168            daa[3*20+0]= 0.543161820899; 
1169            daa[3*20+1]= 0.500964408555;  daa[3*20+2]= 3.180100048216;  daa[4*20+0]= 1.45999531047;   
1170            daa[4*20+1]= 0.227826574209; 
1171            daa[4*20+2]= 0.397358949897;  daa[4*20+3]= 0.240836614802;  daa[5*20+0]= 1.199705704602; 
1172            daa[5*20+1]= 3.020833610064; 
1173            daa[5*20+2]= 1.839216146992;  daa[5*20+3]= 1.190945703396;  daa[5*20+4]= 0.32980150463;   
1174            daa[6*20+0]= 1.1709490428;   
1175            daa[6*20+1]= 1.36057419042;   daa[6*20+2]= 1.24048850864;   daa[6*20+3]= 3.761625208368; 
1176            daa[6*20+4]= 0.140748891814; 
1177            daa[6*20+5]= 5.528919177928;  daa[7*20+0]= 1.95588357496;   daa[7*20+1]= 0.418763308518; 
1178            daa[7*20+2]= 1.355872344485; 
1179            daa[7*20+3]= 0.798473248968;  daa[7*20+4]= 0.418203192284;  daa[7*20+5]= 0.609846305383; 
1180            daa[7*20+6]= 0.423579992176; 
1181            daa[8*20+0]= 0.716241444998;  daa[8*20+1]= 1.456141166336;  daa[8*20+2]= 2.414501434208; 
1182            daa[8*20+3]= 0.778142664022; 
1183            daa[8*20+4]= 0.354058109831;  daa[8*20+5]= 2.43534113114;   daa[8*20+6]= 1.626891056982; 
1184            daa[8*20+7]= 0.539859124954; 
1185            daa[9*20+0]= 0.605899003687;  daa[9*20+1]= 0.232036445142;  daa[9*20+2]= 0.283017326278; 
1186            daa[9*20+3]= 0.418555732462; 
1187            daa[9*20+4]= 0.774894022794;  daa[9*20+5]= 0.236202451204;  daa[9*20+6]= 0.186848046932; 
1188            daa[9*20+7]= 0.189296292376; 
1189            daa[9*20+8]= 0.252718447885;  daa[10*20+0]= 0.800016530518; daa[10*20+1]= 0.622711669692; 
1190            daa[10*20+2]= 0.211888159615; 
1191            daa[10*20+3]= 0.218131577594; daa[10*20+4]= 0.831842640142; daa[10*20+5]= 0.580737093181; 
1192            daa[10*20+6]= 0.372625175087; 
1193            daa[10*20+7]= 0.217721159236; daa[10*20+8]= 0.348072209797; daa[10*20+9]= 3.890963773304; 
1194            daa[11*20+0]= 1.295201266783; 
1195            daa[11*20+1]= 5.411115141489; daa[11*20+2]= 1.593137043457; daa[11*20+3]= 1.032447924952; 
1196            daa[11*20+4]= 0.285078800906; 
1197            daa[11*20+5]= 3.945277674515; daa[11*20+6]= 2.802427151679; daa[11*20+7]= 0.752042440303; 
1198            daa[11*20+8]= 1.022507035889; 
1199            daa[11*20+9]= 0.406193586642; daa[11*20+10]= 0.445570274261;daa[12*20+0]= 1.253758266664; 
1200            daa[12*20+1]= 0.983692987457; 
1201            daa[12*20+2]= 0.648441278787; daa[12*20+3]= 0.222621897958; daa[12*20+4]= 0.76768882348; 
1202            daa[12*20+5]= 2.494896077113; 
1203            daa[12*20+6]= 0.55541539747;  daa[12*20+7]= 0.459436173579; daa[12*20+8]= 0.984311525359; 
1204            daa[12*20+9]= 3.364797763104; 
1205            daa[12*20+10]= 6.030559379572;daa[12*20+11]= 1.073061184332;daa[13*20+0]= 0.492964679748; 
1206            daa[13*20+1]= 0.371644693209; 
1207            daa[13*20+2]= 0.354861249223; daa[13*20+3]= 0.281730694207; daa[13*20+4]= 0.441337471187; 
1208            daa[13*20+5]= 0.14435695975; 
1209            daa[13*20+6]= 0.291409084165; daa[13*20+7]= 0.368166464453; daa[13*20+8]= 0.714533703928; 
1210            daa[13*20+9]= 1.517359325954; 
1211            daa[13*20+10]= 2.064839703237;daa[13*20+11]= 0.266924750511;daa[13*20+12]= 1.77385516883; 
1212            daa[14*20+0]= 1.173275900924; 
1213            daa[14*20+1]= 0.448133661718; daa[14*20+2]= 0.494887043702; daa[14*20+3]= 0.730628272998; 
1214            daa[14*20+4]= 0.356008498769; 
1215            daa[14*20+5]= 0.858570575674; daa[14*20+6]= 0.926563934846; daa[14*20+7]= 0.504086599527; daa[14*20+8]= 0.527007339151; 
1216            daa[14*20+9]= 0.388355409206; daa[14*20+10]= 0.374555687471;daa[14*20+11]= 1.047383450722;daa[14*20+12]= 0.454123625103;
1217            daa[14*20+13]= 0.233597909629;daa[15*20+0]= 4.325092687057; daa[15*20+1]= 1.12278310421;  daa[15*20+2]= 2.904101656456; 
1218            daa[15*20+3]= 1.582754142065; daa[15*20+4]= 1.197188415094; daa[15*20+5]= 1.934870924596; daa[15*20+6]= 1.769893238937; 
1219            daa[15*20+7]= 1.509326253224; daa[15*20+8]= 1.11702976291;  daa[15*20+9]= 0.35754441246;  daa[15*20+10]= 0.352969184527;
1220            daa[15*20+11]= 1.752165917819;daa[15*20+12]= 0.918723415746;daa[15*20+13]= 0.540027644824;daa[15*20+14]= 1.169129577716;
1221            daa[16*20+0]= 1.729178019485; daa[16*20+1]= 0.914665954563; daa[16*20+2]= 1.898173634533; daa[16*20+3]= 0.934187509431; 
1222            daa[16*20+4]= 1.119831358516; daa[16*20+5]= 1.277480294596; daa[16*20+6]= 1.071097236007; daa[16*20+7]= 0.641436011405; 
1223            daa[16*20+8]= 0.585407090225; daa[16*20+9]= 1.17909119726;  daa[16*20+10]= 0.915259857694;daa[16*20+11]= 1.303875200799;
1224            daa[16*20+12]= 1.488548053722;daa[16*20+13]= 0.488206118793;daa[16*20+14]= 1.005451683149;daa[16*20+15]= 5.15155629227; 
1225            daa[17*20+0]= 0.465839367725; daa[17*20+1]= 0.426382310122; daa[17*20+2]= 0.191482046247; daa[17*20+3]= 0.145345046279; 
1226            daa[17*20+4]= 0.527664418872; daa[17*20+5]= 0.758653808642; daa[17*20+6]= 0.407635648938; daa[17*20+7]= 0.508358924638; 
1227            daa[17*20+8]= 0.30124860078;  daa[17*20+9]= 0.34198578754;  daa[17*20+10]= 0.6914746346;  daa[17*20+11]= 0.332243040634;
1228            daa[17*20+12]= 0.888101098152;daa[17*20+13]= 2.074324893497;daa[17*20+14]= 0.252214830027;daa[17*20+15]= 0.387925622098;
1229            daa[17*20+16]= 0.513128126891;daa[18*20+0]= 0.718206697586; daa[18*20+1]= 0.720517441216; daa[18*20+2]= 0.538222519037; 
1230            daa[18*20+3]= 0.261422208965; daa[18*20+4]= 0.470237733696; daa[18*20+5]= 0.95898974285;  daa[18*20+6]= 0.596719300346; 
1231            daa[18*20+7]= 0.308055737035; daa[18*20+8]= 4.218953969389; daa[18*20+9]= 0.674617093228; daa[18*20+10]= 0.811245856323;
1232            daa[18*20+11]= 0.7179934869;  daa[18*20+12]= 0.951682162246;daa[18*20+13]= 6.747260430801;daa[18*20+14]= 0.369405319355;
1233            daa[18*20+15]= 0.796751520761;daa[18*20+16]= 0.801010243199;daa[18*20+17]= 4.054419006558;daa[19*20+0]= 2.187774522005; 
1234            daa[19*20+1]= 0.438388343772; daa[19*20+2]= 0.312858797993; daa[19*20+3]= 0.258129289418; daa[19*20+4]= 1.116352478606; 
1235            daa[19*20+5]= 0.530785790125; daa[19*20+6]= 0.524253846338; daa[19*20+7]= 0.25334079019;  daa[19*20+8]= 0.20155597175; 
1236            daa[19*20+9]= 8.311839405458; daa[19*20+10]= 2.231405688913;daa[19*20+11]= 0.498138475304;daa[19*20+12]= 2.575850755315;
1237            daa[19*20+13]= 0.838119610178;daa[19*20+14]= 0.496908410676;daa[19*20+15]= 0.561925457442;daa[19*20+16]= 2.253074051176;
1238            daa[19*20+17]= 0.266508731426;daa[19*20+18]= 1;             
1239           
1240            f[0]= 0.074;                 f[1]= 0.052;                 f[2]= 0.045;                 f[3]= 0.054;                 
1241            f[4]= 0.025;                 f[5]= 0.034;                 f[6]= 0.054;                 f[7]= 0.074;                 
1242            f[8]= 0.026;                 f[9]= 0.068;                 f[10]= 0.099;                f[11]= 0.058;               
1243            f[12]= 0.025;                f[13]= 0.047;                f[14]= 0.039;                f[15]= 0.057;               
1244            f[16]= 0.051;                f[17]= 0.013;                f[18]= 0.032;                f[19]= 0.073;
1245          }
1246          break;
1247        case MTMAM:
1248          {
1249            daa[1*20+0]= 32;              daa[2*20+0]= 2;    daa[2*20+1]= 4;               daa[3*20+0]= 11;
1250            daa[3*20+1]= 0;               daa[3*20+2]= 864;  daa[4*20+0]= 0;               daa[4*20+1]= 186;
1251            daa[4*20+2]= 0;               daa[4*20+3]= 0;    daa[5*20+0]= 0;               daa[5*20+1]= 246;
1252            daa[5*20+2]= 8;               daa[5*20+3]= 49;   daa[5*20+4]= 0;               daa[6*20+0]= 0;
1253            daa[6*20+1]= 0;               daa[6*20+2]= 0;    daa[6*20+3]= 569;             daa[6*20+4]= 0;
1254            daa[6*20+5]= 274;             daa[7*20+0]= 78;   daa[7*20+1]= 18;              daa[7*20+2]= 47;
1255            daa[7*20+3]= 79;              daa[7*20+4]= 0;    daa[7*20+5]= 0;               daa[7*20+6]= 22;
1256            daa[8*20+0]= 8;               daa[8*20+1]= 232;  daa[8*20+2]= 458;             daa[8*20+3]= 11;
1257            daa[8*20+4]= 305;             daa[8*20+5]= 550;  daa[8*20+6]= 22;              daa[8*20+7]= 0;
1258            daa[9*20+0]= 75;              daa[9*20+1]= 0;    daa[9*20+2]= 19;              daa[9*20+3]= 0;
1259            daa[9*20+4]= 41;              daa[9*20+5]= 0;    daa[9*20+6]= 0;               daa[9*20+7]= 0;
1260            daa[9*20+8]= 0;               daa[10*20+0]= 21;  daa[10*20+1]= 6;              daa[10*20+2]= 0;
1261            daa[10*20+3]= 0;              daa[10*20+4]= 27;  daa[10*20+5]= 20;             daa[10*20+6]= 0;
1262            daa[10*20+7]= 0;              daa[10*20+8]= 26;  daa[10*20+9]= 232;            daa[11*20+0]= 0;
1263            daa[11*20+1]= 50;             daa[11*20+2]= 408; daa[11*20+3]= 0;              daa[11*20+4]= 0;
1264            daa[11*20+5]= 242;            daa[11*20+6]= 215; daa[11*20+7]= 0;              daa[11*20+8]= 0;
1265            daa[11*20+9]= 6;              daa[11*20+10]= 4;  daa[12*20+0]= 76;             daa[12*20+1]= 0;
1266            daa[12*20+2]= 21;             daa[12*20+3]= 0;   daa[12*20+4]= 0;              daa[12*20+5]= 22;
1267            daa[12*20+6]= 0;              daa[12*20+7]= 0;   daa[12*20+8]= 0;              daa[12*20+9]= 378;
1268            daa[12*20+10]= 609;           daa[12*20+11]= 59; daa[13*20+0]= 0;              daa[13*20+1]= 0;
1269            daa[13*20+2]= 6;              daa[13*20+3]= 5;   daa[13*20+4]= 7;              daa[13*20+5]= 0;
1270            daa[13*20+6]= 0;              daa[13*20+7]= 0;   daa[13*20+8]= 0;              daa[13*20+9]= 57;
1271            daa[13*20+10]= 246;           daa[13*20+11]= 0;  daa[13*20+12]= 11;            daa[14*20+0]= 53;
1272            daa[14*20+1]= 9;              daa[14*20+2]= 33;  daa[14*20+3]= 2;              daa[14*20+4]= 0;
1273            daa[14*20+5]= 51;             daa[14*20+6]= 0;   daa[14*20+7]= 0;              daa[14*20+8]= 53;
1274            daa[14*20+9]= 5;              daa[14*20+10]= 43; daa[14*20+11]= 18;            daa[14*20+12]= 0;
1275            daa[14*20+13]= 17;            daa[15*20+0]= 342; daa[15*20+1]= 3;              daa[15*20+2]= 446;
1276            daa[15*20+3]= 16;             daa[15*20+4]= 347; daa[15*20+5]= 30;             daa[15*20+6]= 21;
1277            daa[15*20+7]= 112;            daa[15*20+8]= 20;  daa[15*20+9]= 0;              daa[15*20+10]= 74;
1278            daa[15*20+11]= 65;            daa[15*20+12]= 47; daa[15*20+13]= 90;            daa[15*20+14]= 202;
1279            daa[16*20+0]= 681;            daa[16*20+1]= 0;   daa[16*20+2]= 110;            daa[16*20+3]= 0;
1280            daa[16*20+4]= 114;            daa[16*20+5]= 0;   daa[16*20+6]= 4;              daa[16*20+7]= 0;
1281            daa[16*20+8]= 1;              daa[16*20+9]= 360; daa[16*20+10]= 34;            daa[16*20+11]= 50;
1282            daa[16*20+12]= 691;           daa[16*20+13]= 8;  daa[16*20+14]= 78;            daa[16*20+15]= 614;
1283            daa[17*20+0]= 5;              daa[17*20+1]= 16;  daa[17*20+2]= 6;              daa[17*20+3]= 0;
1284            daa[17*20+4]= 65;             daa[17*20+5]= 0;   daa[17*20+6]= 0;              daa[17*20+7]= 0;
1285            daa[17*20+8]= 0;              daa[17*20+9]= 0;   daa[17*20+10]= 12;            daa[17*20+11]= 0;
1286            daa[17*20+12]= 13;            daa[17*20+13]= 0;  daa[17*20+14]= 7;             daa[17*20+15]= 17;
1287            daa[17*20+16]= 0;             daa[18*20+0]= 0;   daa[18*20+1]= 0;              daa[18*20+2]= 156;
1288            daa[18*20+3]= 0;              daa[18*20+4]= 530; daa[18*20+5]= 54;             daa[18*20+6]= 0;
1289            daa[18*20+7]= 1;              daa[18*20+8]= 1525;daa[18*20+9]= 16;             daa[18*20+10]= 25;
1290            daa[18*20+11]= 67;            daa[18*20+12]= 0;  daa[18*20+13]= 682;           daa[18*20+14]= 8;
1291            daa[18*20+15]= 107;           daa[18*20+16]= 0;  daa[18*20+17]= 14;            daa[19*20+0]= 398;
1292            daa[19*20+1]= 0;              daa[19*20+2]= 0;   daa[19*20+3]= 10;             daa[19*20+4]= 0;
1293            daa[19*20+5]= 33;             daa[19*20+6]= 20;  daa[19*20+7]= 5;              daa[19*20+8]= 0;
1294            daa[19*20+9]= 2220;           daa[19*20+10]= 100;daa[19*20+11]= 0;             daa[19*20+12]= 832;
1295            daa[19*20+13]= 6;             daa[19*20+14]= 0;  daa[19*20+15]= 0;             daa[19*20+16]= 237;
1296            daa[19*20+17]= 0;             daa[19*20+18]= 0;       
1297           
1298            f[0]= 0.06920;  f[1]=  0.01840;  f[2]= 0.04000;  f[3]= 0.018600;
1299            f[4]= 0.00650;  f[5]=  0.02380;  f[6]= 0.02360;  f[7]= 0.055700;
1300            f[8]= 0.02770;  f[9]=  0.09050;  f[10]=0.16750;  f[11]= 0.02210;
1301            f[12]=0.05610;  f[13]= 0.06110;  f[14]=0.05360;  f[15]= 0.07250;
1302            f[16]=0.08700;  f[17]= 0.02930;  f[18]=0.03400;  f[19]= 0.04280;
1303          }
1304          break;
1305        case LG:
1306          {
1307            daa[1*20+0] = 0.425093;
1308
1309            daa[2*20+0] = 0.276818; daa[2*20+1] = 0.751878;
1310
1311            daa[3*20+0] = 0.395144; daa[3*20+1] = 0.123954; daa[3*20+2] = 5.076149;
1312           
1313            daa[4*20+0] = 2.489084; daa[4*20+1] = 0.534551; daa[4*20+2] = 0.528768; daa[4*20+3] = 0.062556;
1314                                                                 
1315            daa[5*20+0] = 0.969894; daa[5*20+1] = 2.807908; daa[5*20+2] = 1.695752; daa[5*20+3] = 0.523386; daa[5*20+4] = 0.084808;
1316
1317            daa[6*20+0] = 1.038545; daa[6*20+1] = 0.363970; daa[6*20+2] = 0.541712; daa[6*20+3] = 5.243870; daa[6*20+4] = 0.003499; daa[6*20+5] = 4.128591;
1318
1319            daa[7*20+0] = 2.066040; daa[7*20+1] = 0.390192; daa[7*20+2] = 1.437645; daa[7*20+3] = 0.844926; daa[7*20+4] = 0.569265; daa[7*20+5] = 0.267959; daa[7*20+6] = 0.348847;
1320 
1321            daa[8*20+0] = 0.358858; daa[8*20+1] = 2.426601; daa[8*20+2] = 4.509238; daa[8*20+3] = 0.927114; daa[8*20+4] = 0.640543; daa[8*20+5] = 4.813505; daa[8*20+6] = 0.423881; 
1322            daa[8*20+7] = 0.311484;
1323
1324            daa[9*20+0] = 0.149830; daa[9*20+1] = 0.126991; daa[9*20+2] = 0.191503; daa[9*20+3] = 0.010690; daa[9*20+4] = 0.320627; daa[9*20+5] = 0.072854; daa[9*20+6] = 0.044265; 
1325            daa[9*20+7] = 0.008705; daa[9*20+8] = 0.108882; 
1326
1327            daa[10*20+0] = 0.395337; daa[10*20+1] = 0.301848; daa[10*20+2] = 0.068427; daa[10*20+3] = 0.015076; daa[10*20+4] = 0.594007; daa[10*20+5] = 0.582457; daa[10*20+6] = 0.069673; 
1328            daa[10*20+7] = 0.044261; daa[10*20+8] = 0.366317; daa[10*20+9] = 4.145067 ;
1329
1330            daa[11*20+0] = 0.536518; daa[11*20+1] = 6.326067; daa[11*20+2] = 2.145078; daa[11*20+3] = 0.282959; daa[11*20+4] = 0.013266; daa[11*20+5] = 3.234294; daa[11*20+6] = 1.807177; 
1331            daa[11*20+7] = 0.296636; daa[11*20+8] = 0.697264; daa[11*20+9] = 0.159069; daa[11*20+10] = 0.137500;
1332
1333
1334            daa[12*20+0] = 1.124035; daa[12*20+1] = 0.484133; daa[12*20+2] = 0.371004; daa[12*20+3] = 0.025548; daa[12*20+4] = 0.893680; daa[12*20+5] = 1.672569; daa[12*20+6] = 0.173735; 
1335            daa[12*20+7] = 0.139538; daa[12*20+8] = 0.442472; daa[12*20+9] = 4.273607; daa[12*20+10] = 6.312358; daa[12*20+11] = 0.656604;
1336
1337            daa[13*20+0] = 0.253701; daa[13*20+1] = 0.052722;daa[13*20+2] = 0.089525; daa[13*20+3] = 0.017416; daa[13*20+4] = 1.105251; daa[13*20+5] = 0.035855; daa[13*20+6] = 0.018811; 
1338            daa[13*20+7] = 0.089586; daa[13*20+8] = 0.682139; daa[13*20+9] = 1.112727; daa[13*20+10] = 2.592692; daa[13*20+11] = 0.023918; daa[13*20+12] = 1.798853;
1339
1340            daa[14*20+0] = 1.177651; daa[14*20+1] = 0.332533;daa[14*20+2] = 0.161787; daa[14*20+3] = 0.394456; daa[14*20+4] = 0.075382; daa[14*20+5] = 0.624294; daa[14*20+6] = 0.419409; 
1341            daa[14*20+7] = 0.196961; daa[14*20+8] = 0.508851; daa[14*20+9] = 0.078281; daa[14*20+10] = 0.249060; daa[14*20+11] = 0.390322; daa[14*20+12] = 0.099849; 
1342            daa[14*20+13] = 0.094464;
1343 
1344            daa[15*20+0] = 4.727182; daa[15*20+1] = 0.858151;daa[15*20+2] = 4.008358; daa[15*20+3] = 1.240275; daa[15*20+4] = 2.784478; daa[15*20+5] = 1.223828; daa[15*20+6] = 0.611973; 
1345            daa[15*20+7] = 1.739990; daa[15*20+8] = 0.990012; daa[15*20+9] = 0.064105; daa[15*20+10] = 0.182287; daa[15*20+11] = 0.748683; daa[15*20+12] = 0.346960; 
1346            daa[15*20+13] = 0.361819; daa[15*20+14] = 1.338132;
1347 
1348            daa[16*20+0] = 2.139501; daa[16*20+1] = 0.578987;daa[16*20+2] = 2.000679; daa[16*20+3] = 0.425860; daa[16*20+4] = 1.143480; daa[16*20+5] = 1.080136; daa[16*20+6] = 0.604545; 
1349            daa[16*20+7] = 0.129836; daa[16*20+8] = 0.584262; daa[16*20+9] = 1.033739; daa[16*20+10] = 0.302936; daa[16*20+11] = 1.136863; daa[16*20+12] = 2.020366; 
1350            daa[16*20+13] = 0.165001; daa[16*20+14] = 0.571468; daa[16*20+15] = 6.472279;
1351
1352            daa[17*20+0] = 0.180717; daa[17*20+1] = 0.593607;daa[17*20+2] = 0.045376; daa[17*20+3] = 0.029890; daa[17*20+4] = 0.670128; daa[17*20+5] = 0.236199; daa[17*20+6] = 0.077852; 
1353            daa[17*20+7] = 0.268491; daa[17*20+8] = 0.597054; daa[17*20+9] = 0.111660; daa[17*20+10] = 0.619632; daa[17*20+11] = 0.049906; daa[17*20+12] = 0.696175; 
1354            daa[17*20+13] = 2.457121; daa[17*20+14] = 0.095131; daa[17*20+15] = 0.248862; daa[17*20+16] = 0.140825;
1355
1356            daa[18*20+0] = 0.218959; daa[18*20+1] = 0.314440;daa[18*20+2] = 0.612025; daa[18*20+3] = 0.135107; daa[18*20+4] = 1.165532; daa[18*20+5] = 0.257336; daa[18*20+6] = 0.120037; 
1357            daa[18*20+7] = 0.054679; daa[18*20+8] = 5.306834; daa[18*20+9] = 0.232523; daa[18*20+10] = 0.299648; daa[18*20+11] = 0.131932; daa[18*20+12] = 0.481306; 
1358            daa[18*20+13] = 7.803902; daa[18*20+14] = 0.089613; daa[18*20+15] = 0.400547; daa[18*20+16] = 0.245841; daa[18*20+17] = 3.151815;
1359
1360            daa[19*20+0] = 2.547870; daa[19*20+1] = 0.170887;daa[19*20+2] = 0.083688; daa[19*20+3] = 0.037967; daa[19*20+4] = 1.959291; daa[19*20+5] = 0.210332; daa[19*20+6] = 0.245034; 
1361            daa[19*20+7] = 0.076701; daa[19*20+8] = 0.119013; daa[19*20+9] = 10.649107; daa[19*20+10] = 1.702745; daa[19*20+11] = 0.185202; daa[19*20+12] = 1.898718; 
1362            daa[19*20+13] = 0.654683; daa[19*20+14] = 0.296501; daa[19*20+15] = 0.098369; daa[19*20+16] = 2.188158; daa[19*20+17] = 0.189510; daa[19*20+18] = 0.249313;
1363           
1364            f[0] = 0.07906;
1365            f[1] = 0.05594; 
1366            f[2] = 0.04198; 
1367            f[3] = 0.05305; 
1368            f[4] = 0.01294; 
1369            f[5] = 0.04077; 
1370            f[6] = 0.07158; 
1371            f[7] = 0.05734; 
1372            f[8] = 0.02235; 
1373            f[9] = 0.06216; 
1374            f[10] = 0.09908; 
1375            f[11] = 0.06460; 
1376            f[12] = 0.02295; 
1377            f[13] = 0.04230; 
1378            f[14] = 0.04404; 
1379            f[15] = 0.06120; 
1380            f[16] = 0.05329; 
1381            f[17] = 0.01207; 
1382            f[18] = 0.03415; 
1383            f[19] = 0.06915;       
1384          }       
1385          break;
1386        case MTART:
1387          {
1388           
1389
1390            daa[1*20+0]=   0.2;
1391            daa[2*20+0]=   0.2;
1392           daa[2*20+1]=   0.2;
1393           daa[3*20+0]=   1;
1394           daa[3*20+1]=   4;
1395           daa[3*20+2]=   500;
1396           daa[4*20+0]=   254;
1397           daa[4*20+1]=   36;
1398           daa[4*20+2]=   98;
1399           daa[4*20+3]=   11;
1400           daa[5*20+0]=   0.2;
1401           daa[5*20+1]=   154;
1402           daa[5*20+2]=   262;
1403           daa[5*20+3]=   0.2;
1404           daa[5*20+4]=   0.2;
1405           daa[6*20+0]=   0.2;
1406           daa[6*20+1]=   0.2;
1407           daa[6*20+2]=   183;
1408           daa[6*20+3]=   862;
1409           daa[6*20+4]=   0.2;
1410           daa[6*20+5]=   262;
1411           daa[7*20+0]=   200;
1412           daa[7*20+1]=   0.2;
1413           daa[7*20+2]=   121;
1414           daa[7*20+3]=   12;
1415           daa[7*20+4]=   81;
1416           daa[7*20+5]=   3;
1417           daa[7*20+6]=   44;
1418           daa[8*20+0]=   0.2;
1419           daa[8*20+1]=   41;
1420           daa[8*20+2]=   180;
1421           daa[8*20+3]=   0.2;
1422           daa[8*20+4]=   12;
1423           daa[8*20+5]=   314;
1424           daa[8*20+6]=   15;
1425           daa[8*20+7]=   0.2;
1426           daa[9*20+0]=   26;
1427           daa[9*20+1]=   2;
1428           daa[9*20+2]=   21;
1429           daa[9*20+3]=   7;
1430           daa[9*20+4]=   63;
1431           daa[9*20+5]=   11;
1432           daa[9*20+6]=   7;
1433           daa[9*20+7]=   3;
1434           daa[9*20+8]=   0.2;
1435           daa[10*20+0]=  4;
1436           daa[10*20+1]=  2;
1437           daa[10*20+2]=  13;
1438           daa[10*20+3]=  1;
1439           daa[10*20+4]=  79;
1440           daa[10*20+5]=  16;
1441           daa[10*20+6]=  2;
1442           daa[10*20+7]=  1;
1443           daa[10*20+8]=  6;
1444           daa[10*20+9]=  515;
1445           daa[11*20+0]=  0.2;
1446           daa[11*20+1]=  209;
1447           daa[11*20+2]=  467;
1448           daa[11*20+3]=  2;
1449           daa[11*20+4]=  0.2;
1450           daa[11*20+5]=  349;
1451           daa[11*20+6]=  106;
1452           daa[11*20+7]=  0.2;
1453           daa[11*20+8]=  0.2;
1454           daa[11*20+9]=  3;
1455           daa[11*20+10]= 4;
1456           daa[12*20+0]=  121;
1457           daa[12*20+1]=  5;
1458           daa[12*20+2]=  79;
1459           daa[12*20+3]=  0.2;
1460           daa[12*20+4]=  312;
1461           daa[12*20+5]=  67;
1462           daa[12*20+6]=  0.2;
1463           daa[12*20+7]=  56;
1464           daa[12*20+8]=  0.2;
1465           daa[12*20+9]=  515;
1466           daa[12*20+10]= 885;
1467           daa[12*20+11]= 106;
1468           daa[13*20+0]=  13;
1469           daa[13*20+1]=  5;
1470           daa[13*20+2]=  20;
1471           daa[13*20+3]=  0.2;
1472           daa[13*20+4]=  184;
1473           daa[13*20+5]=  0.2;
1474           daa[13*20+6]=  0.2;
1475           daa[13*20+7]=  1;
1476           daa[13*20+8]=  14;
1477           daa[13*20+9]=  118;
1478           daa[13*20+10]= 263;
1479           daa[13*20+11]= 11;
1480           daa[13*20+12]= 322;
1481           daa[14*20+0]=  49;
1482           daa[14*20+1]=  0.2;
1483           daa[14*20+2]=  17;
1484           daa[14*20+3]=  0.2;
1485           daa[14*20+4]=  0.2;
1486           daa[14*20+5]=  39;
1487           daa[14*20+6]=  8;
1488           daa[14*20+7]=  0.2;
1489           daa[14*20+8]=  1;
1490           daa[14*20+9]=  0.2;
1491           daa[14*20+10]= 12;
1492           daa[14*20+11]= 17;
1493           daa[14*20+12]= 5;
1494           daa[14*20+13]= 15;
1495           daa[15*20+0]=  673;
1496           daa[15*20+1]=  3;
1497           daa[15*20+2]=  398;
1498           daa[15*20+3]=  44;
1499           daa[15*20+4]=  664;
1500           daa[15*20+5]=  52;
1501           daa[15*20+6]=  31;
1502           daa[15*20+7]=  226;
1503           daa[15*20+8]=  11;
1504           daa[15*20+9]=  7;
1505           daa[15*20+10]= 8;
1506           daa[15*20+11]= 144;
1507           daa[15*20+12]= 112;
1508           daa[15*20+13]= 36;
1509           daa[15*20+14]= 87;
1510           daa[16*20+0]=  244;
1511           daa[16*20+1]=  0.2;
1512           daa[16*20+2]=  166;
1513           daa[16*20+3]=  0.2;
1514           daa[16*20+4]=  183;
1515           daa[16*20+5]=  44;
1516           daa[16*20+6]=  43;
1517           daa[16*20+7]=  0.2;
1518           daa[16*20+8]=  19;
1519           daa[16*20+9]=  204;
1520           daa[16*20+10]= 48;
1521           daa[16*20+11]= 70;
1522           daa[16*20+12]= 289;
1523           daa[16*20+13]= 14;
1524           daa[16*20+14]= 47;
1525           daa[16*20+15]= 660;
1526           daa[17*20+0]=  0.2;
1527           daa[17*20+1]=  0.2;
1528           daa[17*20+2]=  8;
1529           daa[17*20+3]=  0.2;
1530           daa[17*20+4]=  22;
1531           daa[17*20+5]=  7;
1532           daa[17*20+6]=  11;
1533           daa[17*20+7]=  2;
1534           daa[17*20+8]=  0.2;
1535           daa[17*20+9]=  0.2;
1536           daa[17*20+10]= 21;
1537           daa[17*20+11]= 16;
1538           daa[17*20+12]= 71;
1539           daa[17*20+13]= 54;
1540           daa[17*20+14]= 0.2;
1541           daa[17*20+15]= 2;
1542           daa[17*20+16]= 0.2;
1543           daa[18*20+0]=  1;
1544           daa[18*20+1]=  4;
1545           daa[18*20+2]=  251;
1546           daa[18*20+3]=  0.2;
1547           daa[18*20+4]=  72;
1548           daa[18*20+5]=  87;
1549           daa[18*20+6]=  8;
1550           daa[18*20+7]=  9;
1551           daa[18*20+8]=  191;
1552           daa[18*20+9]=  12;
1553           daa[18*20+10]= 20;
1554           daa[18*20+11]= 117;
1555           daa[18*20+12]= 71;
1556           daa[18*20+13]= 792;
1557           daa[18*20+14]= 18;
1558           daa[18*20+15]= 30;
1559           daa[18*20+16]= 46;
1560           daa[18*20+17]= 38;
1561           daa[19*20+0]=  340;
1562           daa[19*20+1]=  0.2;
1563           daa[19*20+2]=  23;
1564           daa[19*20+3]=  0.2;
1565           daa[19*20+4]=  350;
1566           daa[19*20+5]=  0.2;
1567           daa[19*20+6]=  14;
1568           daa[19*20+7]=  3;
1569           daa[19*20+8]=  0.2;
1570           daa[19*20+9]=  1855;
1571           daa[19*20+10]= 85;
1572           daa[19*20+11]= 26;
1573           daa[19*20+12]= 281;
1574           daa[19*20+13]= 52;
1575           daa[19*20+14]= 32;
1576           daa[19*20+15]= 61;
1577           daa[19*20+16]= 544;
1578           daa[19*20+17]= 0.2;
1579           daa[19*20+18]= 2;
1580           
1581           f[0]=  0.054116;
1582           f[1]=  0.018227;
1583           f[2]=  0.039903;
1584           f[3]=  0.020160;
1585           f[4]=  0.009709;
1586           f[5]=  0.018781;
1587           f[6]=  0.024289;
1588           f[7]=  0.068183;
1589           f[8]=  0.024518;
1590           f[9]=  0.092638;
1591           f[10]= 0.148658;
1592           f[11]= 0.021718;
1593           f[12]= 0.061453;
1594           f[13]= 0.088668;
1595           f[14]= 0.041826;
1596           f[15]= 0.091030;
1597           f[16]= 0.049194;
1598           f[17]= 0.029786;
1599           f[18]= 0.039443;
1600           f[19]= 0.057700;
1601          }
1602          break;
1603        case MTZOA:
1604          {
1605           daa[1*20+0]=   3.3;
1606           daa[2*20+0]=   1.7;
1607           daa[2*20+1]=   33.6;
1608           daa[3*20+0]=   16.1;
1609           daa[3*20+1]=   3.2;
1610           daa[3*20+2]=   617.0;
1611           daa[4*20+0]=   272.5;
1612           daa[4*20+1]=   61.1;
1613           daa[4*20+2]=   94.6;
1614           daa[4*20+3]=   9.5;
1615           daa[5*20+0]=   7.3;
1616           daa[5*20+1]=   231.0;
1617           daa[5*20+2]=   190.3;
1618           daa[5*20+3]=   19.3;
1619           daa[5*20+4]=   49.1;
1620           daa[6*20+0]=   17.1;
1621           daa[6*20+1]=   6.4;
1622           daa[6*20+2]=   174.0;
1623           daa[6*20+3]=   883.6;
1624           daa[6*20+4]=   3.4;
1625           daa[6*20+5]=   349.4;
1626           daa[7*20+0]=   289.3;
1627           daa[7*20+1]=   7.2;
1628           daa[7*20+2]=   99.3;
1629           daa[7*20+3]=   26.0;
1630           daa[7*20+4]=   82.4;
1631           daa[7*20+5]=   8.9;
1632           daa[7*20+6]=   43.1;
1633           daa[8*20+0]=   2.3;
1634           daa[8*20+1]=   61.7;
1635           daa[8*20+2]=   228.9;
1636           daa[8*20+3]=   55.6;
1637           daa[8*20+4]=   37.5;
1638           daa[8*20+5]=   421.8;
1639           daa[8*20+6]=   14.9;
1640           daa[8*20+7]=   7.4;
1641           daa[9*20+0]=   33.2;
1642           daa[9*20+1]=   0.2;
1643           daa[9*20+2]=   24.3;
1644           daa[9*20+3]=   1.5;
1645           daa[9*20+4]=   48.8;
1646           daa[9*20+5]=   0.2;
1647           daa[9*20+6]=   7.3;
1648           daa[9*20+7]=   3.4;
1649           daa[9*20+8]=   1.6;
1650           daa[10*20+0]=  15.6;
1651           daa[10*20+1]=  4.1;
1652           daa[10*20+2]=  7.9;
1653           daa[10*20+3]=  0.5;
1654           daa[10*20+4]=  59.7;
1655           daa[10*20+5]=  23.0;
1656           daa[10*20+6]=  1.0;
1657           daa[10*20+7]=  3.5;
1658           daa[10*20+8]=  6.6;
1659           daa[10*20+9]=  425.2;
1660           daa[11*20+0]=  0.2;
1661           daa[11*20+1]=  292.3;
1662           daa[11*20+2]=  413.4;
1663           daa[11*20+3]=  0.2;
1664           daa[11*20+4]=  0.2;
1665           daa[11*20+5]=  334.0;
1666           daa[11*20+6]=  163.2;
1667           daa[11*20+7]=  10.1;
1668           daa[11*20+8]=  23.9;
1669           daa[11*20+9]=  8.4;
1670           daa[11*20+10]= 6.7;
1671           daa[12*20+0]=  136.5;
1672           daa[12*20+1]=  3.8;
1673           daa[12*20+2]=  73.7;
1674           daa[12*20+3]=  0.2;
1675           daa[12*20+4]=  264.8;
1676           daa[12*20+5]=  83.9;
1677           daa[12*20+6]=  0.2;
1678           daa[12*20+7]=  52.2;
1679           daa[12*20+8]=  7.1;
1680           daa[12*20+9]=  449.7;
1681           daa[12*20+10]= 636.3;
1682           daa[12*20+11]= 83.0;
1683           daa[13*20+0]=  26.5;
1684           daa[13*20+1]=  0.2;
1685           daa[13*20+2]=  12.9;
1686           daa[13*20+3]=  2.0;
1687           daa[13*20+4]=  167.8;
1688           daa[13*20+5]=  9.5;
1689           daa[13*20+6]=  0.2;
1690           daa[13*20+7]=  5.8;
1691           daa[13*20+8]=  13.1;
1692           daa[13*20+9]=  90.3;
1693           daa[13*20+10]= 234.2;
1694           daa[13*20+11]= 16.3;
1695           daa[13*20+12]= 215.6;
1696           daa[14*20+0]=  61.8;
1697           daa[14*20+1]=  7.5;
1698           daa[14*20+2]=  22.6;
1699           daa[14*20+3]=  0.2;
1700           daa[14*20+4]=  8.1;
1701           daa[14*20+5]=  52.2;
1702           daa[14*20+6]=  20.6;
1703           daa[14*20+7]=  1.3;
1704           daa[14*20+8]=  15.6;
1705           daa[14*20+9]=  2.6;
1706           daa[14*20+10]= 11.4;
1707           daa[14*20+11]= 24.3;
1708           daa[14*20+12]= 5.4;
1709           daa[14*20+13]= 10.5;
1710           daa[15*20+0]=  644.9;
1711           daa[15*20+1]=  11.8;
1712           daa[15*20+2]=  420.2;
1713           daa[15*20+3]=  51.4;
1714           daa[15*20+4]=  656.3;
1715           daa[15*20+5]=  96.4;
1716           daa[15*20+6]=  38.4;
1717           daa[15*20+7]=  257.1;
1718           daa[15*20+8]=  23.1;
1719           daa[15*20+9]=  7.2;
1720           daa[15*20+10]= 15.2;
1721           daa[15*20+11]= 144.9;
1722           daa[15*20+12]= 95.3;
1723           daa[15*20+13]= 32.2;
1724           daa[15*20+14]= 79.7;
1725           daa[16*20+0]=  378.1;
1726           daa[16*20+1]=  3.2;
1727           daa[16*20+2]=  184.6;
1728           daa[16*20+3]=  2.3;
1729           daa[16*20+4]=  199.0;
1730           daa[16*20+5]=  39.4;
1731           daa[16*20+6]=  34.5;
1732           daa[16*20+7]=  5.2;
1733           daa[16*20+8]=  19.4;
1734           daa[16*20+9]=  222.3;
1735           daa[16*20+10]= 50.0;
1736           daa[16*20+11]= 75.5;
1737           daa[16*20+12]= 305.1;
1738           daa[16*20+13]= 19.3;
1739           daa[16*20+14]= 56.9;
1740           daa[16*20+15]= 666.3;
1741           daa[17*20+0]=  3.1;
1742           daa[17*20+1]=  16.9;
1743           daa[17*20+2]=  6.4;
1744           daa[17*20+3]=  0.2;
1745           daa[17*20+4]=  36.1;
1746           daa[17*20+5]=  6.1;
1747           daa[17*20+6]=  3.5;
1748           daa[17*20+7]=  12.3;
1749           daa[17*20+8]=  4.5;
1750           daa[17*20+9]=  9.7;
1751           daa[17*20+10]= 27.2;
1752           daa[17*20+11]= 6.6;
1753           daa[17*20+12]= 48.7;
1754           daa[17*20+13]= 58.2;
1755           daa[17*20+14]= 1.3;
1756           daa[17*20+15]= 10.3;
1757           daa[17*20+16]= 3.6;
1758           daa[18*20+0]=  2.1;
1759           daa[18*20+1]=  13.8;
1760           daa[18*20+2]=  141.6;
1761           daa[18*20+3]=  13.9;
1762           daa[18*20+4]=  76.7;
1763           daa[18*20+5]=  52.3;
1764           daa[18*20+6]=  10.0;
1765           daa[18*20+7]=  4.3;
1766           daa[18*20+8]=  266.5;
1767           daa[18*20+9]=  13.1;
1768           daa[18*20+10]= 5.7;
1769           daa[18*20+11]= 45.0;
1770           daa[18*20+12]= 41.4;
1771           daa[18*20+13]= 590.5;
1772           daa[18*20+14]= 4.2;
1773           daa[18*20+15]= 29.7;
1774           daa[18*20+16]= 29.0;
1775           daa[18*20+17]= 79.8;
1776           daa[19*20+0]=  321.9;
1777           daa[19*20+1]=  5.1;
1778           daa[19*20+2]=  7.1;
1779           daa[19*20+3]=  3.7;
1780           daa[19*20+4]=  243.8;
1781           daa[19*20+5]=  9.0;
1782           daa[19*20+6]=  16.3;
1783           daa[19*20+7]=  23.7;
1784           daa[19*20+8]=  0.3;
1785           daa[19*20+9]=  1710.6;
1786           daa[19*20+10]= 126.1;
1787           daa[19*20+11]= 11.1;
1788           daa[19*20+12]= 279.6;
1789           daa[19*20+13]= 59.6;
1790           daa[19*20+14]= 17.9;
1791           daa[19*20+15]= 49.5;
1792           daa[19*20+16]= 396.4;
1793           daa[19*20+17]= 13.7;
1794           daa[19*20+18]= 15.6;
1795           
1796           f[0]=  0.069;
1797           f[1]=  0.021;
1798           f[2]=  0.030;
1799           f[3]=  0.020;
1800           f[4]=  0.010;
1801           f[5]=  0.019;
1802           f[6]=  0.025;
1803           f[7]=  0.072;
1804           f[8]=  0.027;
1805           f[9]=  0.085;
1806           f[10]= 0.157;
1807           f[11]= 0.019;
1808           f[12]= 0.051;
1809           f[13]= 0.082;
1810           f[14]= 0.045;
1811           f[15]= 0.081;
1812           f[16]= 0.056;
1813           f[17]= 0.028;
1814           f[18]= 0.037;
1815           f[19]= 0.066;
1816          }
1817          break;
1818        case PMB:
1819          {
1820           daa[1*20+0]=   0.674995699;
1821           daa[2*20+0]=   0.589645178;
1822           daa[2*20+1]=   1.189067034;
1823           daa[3*20+0]=   0.462499504;
1824           daa[3*20+1]=   0.605460903;
1825           daa[3*20+2]=   3.573373315;
1826           daa[4*20+0]=   1.065445546;
1827           daa[4*20+1]=   0.31444833;
1828           daa[4*20+2]=   0.589852457;
1829           daa[4*20+3]=   0.246951424;
1830           daa[5*20+0]=   1.111766964;
1831           daa[5*20+1]=   2.967840934;
1832           daa[5*20+2]=   2.299755865;
1833           daa[5*20+3]=   1.686058219;
1834           daa[5*20+4]=   0.245163782;
1835           daa[6*20+0]=   1.046334652;
1836           daa[6*20+1]=   1.201770702;
1837           daa[6*20+2]=   1.277836748;
1838           daa[6*20+3]=   4.399995525;
1839           daa[6*20+4]=   0.091071867;
1840           daa[6*20+5]=   4.15967899;
1841           daa[7*20+0]=   1.587964372;
1842           daa[7*20+1]=   0.523770553;
1843           daa[7*20+2]=   1.374854049;
1844           daa[7*20+3]=   0.734992057;
1845           daa[7*20+4]=   0.31706632;
1846           daa[7*20+5]=   0.596789898;
1847           daa[7*20+6]=   0.463812837;
1848           daa[8*20+0]=   0.580830874;
1849           daa[8*20+1]=   1.457127446;
1850           daa[8*20+2]=   2.283037894;
1851           daa[8*20+3]=   0.839348444;
1852           daa[8*20+4]=   0.411543728;
1853           daa[8*20+5]=   1.812173605;
1854           daa[8*20+6]=   0.877842609;
1855           daa[8*20+7]=   0.476331437;
1856           daa[9*20+0]=   0.464590585;
1857           daa[9*20+1]=   0.35964586;
1858           daa[9*20+2]=   0.426069419;
1859           daa[9*20+3]=   0.266775558;
1860           daa[9*20+4]=   0.417547309;
1861           daa[9*20+5]=   0.315256838;
1862           daa[9*20+6]=   0.30421529;
1863           daa[9*20+7]=   0.180198883;
1864           daa[9*20+8]=   0.285186418;
1865           daa[10*20+0]=  0.804404505;
1866           daa[10*20+1]=  0.520701585;
1867           daa[10*20+2]=  0.41009447;
1868           daa[10*20+3]=  0.269124919;
1869           daa[10*20+4]=  0.450795211;
1870           daa[10*20+5]=  0.625792937;
1871           daa[10*20+6]=  0.32078471;
1872           daa[10*20+7]=  0.259854426;
1873           daa[10*20+8]=  0.363981358;
1874           daa[10*20+9]=  4.162454693;
1875           daa[11*20+0]=  0.831998835;
1876           daa[11*20+1]=  4.956476453;
1877           daa[11*20+2]=  2.037575629;
1878           daa[11*20+3]=  1.114178954;
1879           daa[11*20+4]=  0.274163536;
1880           daa[11*20+5]=  3.521346591;
1881           daa[11*20+6]=  2.415974716;
1882           daa[11*20+7]=  0.581001076;
1883           daa[11*20+8]=  0.985885486;
1884           daa[11*20+9]=  0.374784947;
1885           daa[11*20+10]= 0.498011337;
1886           daa[12*20+0]=  1.546725076;
1887           daa[12*20+1]=  0.81346254;
1888           daa[12*20+2]=  0.737846301;
1889           daa[12*20+3]=  0.341932741;
1890           daa[12*20+4]=  0.618614612;
1891           daa[12*20+5]=  2.067388546;
1892           daa[12*20+6]=  0.531773639;
1893           daa[12*20+7]=  0.465349326;
1894           daa[12*20+8]=  0.380925433;
1895           daa[12*20+9]=  3.65807012;
1896           daa[12*20+10]= 5.002338375;
1897           daa[12*20+11]= 0.661095832;
1898           daa[13*20+0]=  0.546169219;
1899           daa[13*20+1]=  0.303437244;
1900           daa[13*20+2]=  0.425193716;
1901           daa[13*20+3]=  0.219005213;
1902           daa[13*20+4]=  0.669206193;
1903           daa[13*20+5]=  0.406042546;
1904           daa[13*20+6]=  0.224154698;
1905           daa[13*20+7]=  0.35402891;
1906           daa[13*20+8]=  0.576231691;
1907           daa[13*20+9]=  1.495264661;
1908           daa[13*20+10]= 2.392638293;
1909           daa[13*20+11]= 0.269496317;
1910           daa[13*20+12]= 2.306919847;
1911           daa[14*20+0]=  1.241586045;
1912           daa[14*20+1]=  0.65577338;
1913           daa[14*20+2]=  0.711495595;
1914           daa[14*20+3]=  0.775624818;
1915           daa[14*20+4]=  0.198679914;
1916           daa[14*20+5]=  0.850116543;
1917           daa[14*20+6]=  0.794584081;
1918           daa[14*20+7]=  0.588254139;
1919           daa[14*20+8]=  0.456058589;
1920           daa[14*20+9]=  0.366232942;
1921           daa[14*20+10]= 0.430073179;
1922           daa[14*20+11]= 1.036079005;
1923           daa[14*20+12]= 0.337502282;
1924           daa[14*20+13]= 0.481144863;
1925           daa[15*20+0]=  3.452308792;
1926           daa[15*20+1]=  0.910144334;
1927           daa[15*20+2]=  2.572577221;
1928           daa[15*20+3]=  1.440896785;
1929           daa[15*20+4]=  0.99870098;
1930           daa[15*20+5]=  1.348272505;
1931           daa[15*20+6]=  1.205509425;
1932           daa[15*20+7]=  1.402122097;
1933           daa[15*20+8]=  0.799966711;
1934           daa[15*20+9]=  0.530641901;
1935           daa[15*20+10]= 0.402471997;
1936           daa[15*20+11]= 1.234648153;
1937           daa[15*20+12]= 0.945453716;
1938           daa[15*20+13]= 0.613230817;
1939           daa[15*20+14]= 1.217683028;
1940           daa[16*20+0]=  1.751412803;
1941           daa[16*20+1]=  0.89517149;
1942           daa[16*20+2]=  1.823161023;
1943           daa[16*20+3]=  0.994227284;
1944           daa[16*20+4]=  0.847312432;
1945           daa[16*20+5]=  1.320626678;
1946           daa[16*20+6]=  0.949599791;
1947           daa[16*20+7]=  0.542185658;
1948           daa[16*20+8]=  0.83039281;
1949           daa[16*20+9]=  1.114132523;
1950           daa[16*20+10]= 0.779827336;
1951           daa[16*20+11]= 1.290709079;
1952           daa[16*20+12]= 1.551488041;
1953           daa[16*20+13]= 0.718895136;
1954           daa[16*20+14]= 0.780913179;
1955           daa[16*20+15]= 4.448982584;
1956           daa[17*20+0]=  0.35011051;
1957           daa[17*20+1]=  0.618778365;
1958           daa[17*20+2]=  0.422407388;
1959           daa[17*20+3]=  0.362495245;
1960           daa[17*20+4]=  0.445669347;
1961           daa[17*20+5]=  0.72038474;
1962           daa[17*20+6]=  0.261258229;
1963           daa[17*20+7]=  0.37874827;
1964           daa[17*20+8]=  0.72436751;
1965           daa[17*20+9]=  0.516260502;
1966           daa[17*20+10]= 0.794797115;
1967           daa[17*20+11]= 0.43340962;
1968           daa[17*20+12]= 0.768395107;
1969           daa[17*20+13]= 3.29519344;
1970           daa[17*20+14]= 0.499869138;
1971           daa[17*20+15]= 0.496334956;
1972           daa[17*20+16]= 0.38372361;
1973           daa[18*20+0]=  0.573154753;
1974           daa[18*20+1]=  0.628599063;
1975           daa[18*20+2]=  0.720013799;
1976           daa[18*20+3]=  0.436220437;
1977           daa[18*20+4]=  0.55626163;
1978           daa[18*20+5]=  0.728970584;
1979           daa[18*20+6]=  0.50720003;
1980           daa[18*20+7]=  0.284727562;
1981           daa[18*20+8]=  2.210952064;
1982           daa[18*20+9]=  0.570562395;
1983           daa[18*20+10]= 0.811019594;
1984           daa[18*20+11]= 0.664884513;
1985           daa[18*20+12]= 0.93253606;
1986           daa[18*20+13]= 5.894735673;
1987           daa[18*20+14]= 0.433748126;
1988           daa[18*20+15]= 0.593795813;
1989           daa[18*20+16]= 0.523549536;
1990           daa[18*20+17]= 2.996248013;
1991           daa[19*20+0]=  2.063050067;
1992           daa[19*20+1]=  0.388680158;
1993           daa[19*20+2]=  0.474418852;
1994           daa[19*20+3]=  0.275658381;
1995           daa[19*20+4]=  0.998911631;
1996           daa[19*20+5]=  0.634408285;
1997           daa[19*20+6]=  0.527640634;
1998           daa[19*20+7]=  0.314700907;
1999           daa[19*20+8]=  0.305792277;
2000           daa[19*20+9]=  8.002789424;
2001           daa[19*20+10]= 2.113077156;
2002           daa[19*20+11]= 0.526184203;
2003           daa[19*20+12]= 1.737356217;
2004           daa[19*20+13]= 0.983844803;
2005           daa[19*20+14]= 0.551333603;
2006           daa[19*20+15]= 0.507506011;
2007           daa[19*20+16]= 1.89965079;
2008           daa[19*20+17]= 0.429570747;
2009           daa[19*20+18]= 0.716795463;
2010           
2011           f[0]=  0.076;
2012           f[1]=  0.054;
2013           f[2]=  0.038;
2014           f[3]=  0.045;
2015           f[4]=  0.028;
2016           f[5]=  0.034;
2017           f[6]=  0.053;
2018           f[7]=  0.078;
2019           f[8]=  0.030;
2020           f[9]=  0.060;
2021           f[10]= 0.096;
2022           f[11]= 0.052;
2023           f[12]= 0.022;
2024           f[13]= 0.045;
2025           f[14]= 0.042;
2026           f[15]= 0.068;
2027           f[16]= 0.056;
2028           f[17]= 0.016;
2029           f[18]= 0.036;
2030           f[19]= 0.071;
2031          }
2032          break;
2033        case HIVB:
2034          {
2035           daa[1*20+0]=   0.30750700;
2036           daa[2*20+0]=   0.00500000;
2037           daa[2*20+1]=   0.29554300;
2038           daa[3*20+0]=   1.45504000;
2039           daa[3*20+1]=   0.00500000;
2040           daa[3*20+2]=   17.66120000;
2041           daa[4*20+0]=   0.12375800;
2042           daa[4*20+1]=   0.35172100;
2043           daa[4*20+2]=   0.08606420;
2044           daa[4*20+3]=   0.00500000;
2045           daa[5*20+0]=   0.05511280;
2046           daa[5*20+1]=   3.42150000;
2047           daa[5*20+2]=   0.67205200;
2048           daa[5*20+3]=   0.00500000;
2049           daa[5*20+4]=   0.00500000;
2050           daa[6*20+0]=   1.48135000;
2051           daa[6*20+1]=   0.07492180;
2052           daa[6*20+2]=   0.07926330;
2053           daa[6*20+3]=   10.58720000;
2054           daa[6*20+4]=   0.00500000;
2055           daa[6*20+5]=   2.56020000;
2056           daa[7*20+0]=   2.13536000;
2057           daa[7*20+1]=   3.65345000;
2058           daa[7*20+2]=   0.32340100;
2059           daa[7*20+3]=   2.83806000;
2060           daa[7*20+4]=   0.89787100;
2061           daa[7*20+5]=   0.06191370;
2062           daa[7*20+6]=   3.92775000;
2063           daa[8*20+0]=   0.08476130;
2064           daa[8*20+1]=   9.04044000;
2065           daa[8*20+2]=   7.64585000;
2066           daa[8*20+3]=   1.91690000;
2067           daa[8*20+4]=   0.24007300;
2068           daa[8*20+5]=   7.05545000;
2069           daa[8*20+6]=   0.11974000;
2070           daa[8*20+7]=   0.00500000;
2071           daa[9*20+0]=   0.00500000;
2072           daa[9*20+1]=   0.67728900;
2073           daa[9*20+2]=   0.68056500;
2074           daa[9*20+3]=   0.01767920;
2075           daa[9*20+4]=   0.00500000;
2076           daa[9*20+5]=   0.00500000;
2077           daa[9*20+6]=   0.00609079;
2078           daa[9*20+7]=   0.00500000;
2079           daa[9*20+8]=   0.10311100;
2080           daa[10*20+0]=  0.21525600;
2081           daa[10*20+1]=  0.70142700;
2082           daa[10*20+2]=  0.00500000;
2083           daa[10*20+3]=  0.00876048;
2084           daa[10*20+4]=  0.12977700;
2085           daa[10*20+5]=  1.49456000;
2086           daa[10*20+6]=  0.00500000;
2087           daa[10*20+7]=  0.00500000;
2088           daa[10*20+8]=  1.74171000;
2089           daa[10*20+9]=  5.95879000;
2090           daa[11*20+0]=  0.00500000;
2091           daa[11*20+1]=  20.45000000;
2092           daa[11*20+2]=  7.90443000;
2093           daa[11*20+3]=  0.00500000;
2094           daa[11*20+4]=  0.00500000;
2095           daa[11*20+5]=  6.54737000;
2096           daa[11*20+6]=  4.61482000;
2097           daa[11*20+7]=  0.52170500;
2098           daa[11*20+8]=  0.00500000;
2099           daa[11*20+9]=  0.32231900;
2100           daa[11*20+10]= 0.08149950;
2101           daa[12*20+0]=  0.01866430;
2102           daa[12*20+1]=  2.51394000;
2103           daa[12*20+2]=  0.00500000;
2104           daa[12*20+3]=  0.00500000;
2105           daa[12*20+4]=  0.00500000;
2106           daa[12*20+5]=  0.30367600;
2107           daa[12*20+6]=  0.17578900;
2108           daa[12*20+7]=  0.00500000;
2109           daa[12*20+8]=  0.00500000;
2110           daa[12*20+9]=  11.20650000;
2111           daa[12*20+10]= 5.31961000;
2112           daa[12*20+11]= 1.28246000;
2113           daa[13*20+0]=  0.01412690;
2114           daa[13*20+1]=  0.00500000;
2115           daa[13*20+2]=  0.00500000;
2116           daa[13*20+3]=  0.00500000;
2117           daa[13*20+4]=  9.29815000;
2118           daa[13*20+5]=  0.00500000;
2119           daa[13*20+6]=  0.00500000;
2120           daa[13*20+7]=  0.29156100;
2121           daa[13*20+8]=  0.14555800;
2122           daa[13*20+9]=  3.39836000;
2123           daa[13*20+10]= 8.52484000;
2124           daa[13*20+11]= 0.03426580;
2125           daa[13*20+12]= 0.18802500;
2126           daa[14*20+0]=  2.12217000;
2127           daa[14*20+1]=  1.28355000;
2128           daa[14*20+2]=  0.00739578;
2129           daa[14*20+3]=  0.03426580;
2130           daa[14*20+4]=  0.00500000;
2131           daa[14*20+5]=  4.47211000;
2132           daa[14*20+6]=  0.01202260;
2133           daa[14*20+7]=  0.00500000;
2134           daa[14*20+8]=  2.45318000;
2135           daa[14*20+9]=  0.04105930;
2136           daa[14*20+10]= 2.07757000;
2137           daa[14*20+11]= 0.03138620;
2138           daa[14*20+12]= 0.00500000;
2139           daa[14*20+13]= 0.00500000;
2140           daa[15*20+0]=  2.46633000;
2141           daa[15*20+1]=  3.47910000;
2142           daa[15*20+2]=  13.14470000;
2143           daa[15*20+3]=  0.52823000;
2144           daa[15*20+4]=  4.69314000;
2145           daa[15*20+5]=  0.11631100;
2146           daa[15*20+6]=  0.00500000;
2147           daa[15*20+7]=  4.38041000;
2148           daa[15*20+8]=  0.38274700;
2149           daa[15*20+9]=  1.21803000;
2150           daa[15*20+10]= 0.92765600;
2151           daa[15*20+11]= 0.50411100;
2152           daa[15*20+12]= 0.00500000;
2153           daa[15*20+13]= 0.95647200;
2154           daa[15*20+14]= 5.37762000;
2155           daa[16*20+0]=  15.91830000;
2156           daa[16*20+1]=  2.86868000;
2157           daa[16*20+2]=  6.88667000;
2158           daa[16*20+3]=  0.27472400;
2159           daa[16*20+4]=  0.73996900;
2160           daa[16*20+5]=  0.24358900;
2161           daa[16*20+6]=  0.28977400;
2162           daa[16*20+7]=  0.36961500;
2163           daa[16*20+8]=  0.71159400;
2164           daa[16*20+9]=  8.61217000;
2165           daa[16*20+10]= 0.04376730;
2166           daa[16*20+11]= 4.67142000;
2167           daa[16*20+12]= 4.94026000;
2168           daa[16*20+13]= 0.01412690;
2169           daa[16*20+14]= 2.01417000;
2170           daa[16*20+15]= 8.93107000;
2171           daa[17*20+0]=  0.00500000;
2172           daa[17*20+1]=  0.99133800;
2173           daa[17*20+2]=  0.00500000;
2174           daa[17*20+3]=  0.00500000;
2175           daa[17*20+4]=  2.63277000;
2176           daa[17*20+5]=  0.02665600;
2177           daa[17*20+6]=  0.00500000;
2178           daa[17*20+7]=  1.21674000;
2179           daa[17*20+8]=  0.06951790;
2180           daa[17*20+9]=  0.00500000;
2181           daa[17*20+10]= 0.74884300;
2182           daa[17*20+11]= 0.00500000;
2183           daa[17*20+12]= 0.08907800;
2184           daa[17*20+13]= 0.82934300;
2185           daa[17*20+14]= 0.04445060;
2186           daa[17*20+15]= 0.02487280;
2187           daa[17*20+16]= 0.00500000;
2188           daa[18*20+0]=  0.00500000;
2189           daa[18*20+1]=  0.00991826;
2190           daa[18*20+2]=  1.76417000;
2191           daa[18*20+3]=  0.67465300;
2192           daa[18*20+4]=  7.57932000;
2193           daa[18*20+5]=  0.11303300;
2194           daa[18*20+6]=  0.07926330;
2195           daa[18*20+7]=  0.00500000;
2196           daa[18*20+8]=  18.69430000;
2197           daa[18*20+9]=  0.14816800;
2198           daa[18*20+10]= 0.11198600;
2199           daa[18*20+11]= 0.00500000;
2200           daa[18*20+12]= 0.00500000;
2201           daa[18*20+13]= 15.34000000;
2202           daa[18*20+14]= 0.03043810;
2203           daa[18*20+15]= 0.64802400;
2204           daa[18*20+16]= 0.10565200;
2205           daa[18*20+17]= 1.28022000;
2206           daa[19*20+0]=  7.61428000;
2207           daa[19*20+1]=  0.08124540;
2208           daa[19*20+2]=  0.02665600;
2209           daa[19*20+3]=  1.04793000;
2210           daa[19*20+4]=  0.42002700;
2211           daa[19*20+5]=  0.02091530;
2212           daa[19*20+6]=  1.02847000;
2213           daa[19*20+7]=  0.95315500;
2214           daa[19*20+8]=  0.00500000;
2215           daa[19*20+9]=  17.73890000;
2216           daa[19*20+10]= 1.41036000;
2217           daa[19*20+11]= 0.26582900;
2218           daa[19*20+12]= 6.85320000;
2219           daa[19*20+13]= 0.72327400;
2220           daa[19*20+14]= 0.00500000;
2221           daa[19*20+15]= 0.07492180;
2222           daa[19*20+16]= 0.70922600;
2223           daa[19*20+17]= 0.00500000;
2224           daa[19*20+18]= 0.04105930;
2225           
2226           f[0]=  0.060;
2227           f[1]=  0.066;
2228           f[2]=  0.044;
2229           f[3]=  0.042;
2230           f[4]=  0.020;
2231           f[5]=  0.054;
2232           f[6]=  0.071;
2233           f[7]=  0.072;
2234           f[8]=  0.022;
2235           f[9]=  0.070;
2236           f[10]= 0.099;
2237           f[11]= 0.057;
2238           f[12]= 0.020;
2239           f[13]= 0.029;
2240           f[14]= 0.046;
2241           f[15]= 0.051;
2242           f[16]= 0.054;
2243           f[17]= 0.033;
2244           f[18]= 0.028;
2245           f[19]= 0.062;
2246          }
2247          break;
2248        case HIVW:
2249          {
2250           daa[1*20+0]=   0.0744808;
2251           daa[2*20+0]=   0.6175090;
2252           daa[2*20+1]=   0.1602400;
2253           daa[3*20+0]=   4.4352100;
2254           daa[3*20+1]=   0.0674539;
2255           daa[3*20+2]=   29.4087000;
2256           daa[4*20+0]=   0.1676530;
2257           daa[4*20+1]=   2.8636400;
2258           daa[4*20+2]=   0.0604932;
2259           daa[4*20+3]=   0.0050000;
2260           daa[5*20+0]=   0.0050000;
2261           daa[5*20+1]=   10.6746000;
2262           daa[5*20+2]=   0.3420680;
2263           daa[5*20+3]=   0.0050000;
2264           daa[5*20+4]=   0.0050000;
2265           daa[6*20+0]=   5.5632500;
2266           daa[6*20+1]=   0.0251632;
2267           daa[6*20+2]=   0.2015260;
2268           daa[6*20+3]=   12.1233000;
2269           daa[6*20+4]=   0.0050000;
2270           daa[6*20+5]=   3.2065600;
2271           daa[7*20+0]=   1.8685000;
2272           daa[7*20+1]=   13.4379000;
2273           daa[7*20+2]=   0.0604932;
2274           daa[7*20+3]=   10.3969000;
2275           daa[7*20+4]=   0.0489798;
2276           daa[7*20+5]=   0.0604932;
2277           daa[7*20+6]=   14.7801000;
2278           daa[8*20+0]=   0.0050000;
2279           daa[8*20+1]=   6.8440500;
2280           daa[8*20+2]=   8.5987600;
2281           daa[8*20+3]=   2.3177900;
2282           daa[8*20+4]=   0.0050000;
2283           daa[8*20+5]=   18.5465000;
2284           daa[8*20+6]=   0.0050000;
2285           daa[8*20+7]=   0.0050000;
2286           daa[9*20+0]=   0.0050000;
2287           daa[9*20+1]=   1.3406900;
2288           daa[9*20+2]=   0.9870280;
2289           daa[9*20+3]=   0.1451240;
2290           daa[9*20+4]=   0.0050000;
2291           daa[9*20+5]=   0.0342252;
2292           daa[9*20+6]=   0.0390512;
2293           daa[9*20+7]=   0.0050000;
2294           daa[9*20+8]=   0.0050000;
2295           daa[10*20+0]=  0.1602400;
2296           daa[10*20+1]=  0.5867570;
2297           daa[10*20+2]=  0.0050000;
2298           daa[10*20+3]=  0.0050000;
2299           daa[10*20+4]=  0.0050000;
2300           daa[10*20+5]=  2.8904800;
2301           daa[10*20+6]=  0.1298390;
2302           daa[10*20+7]=  0.0489798;
2303           daa[10*20+8]=  1.7638200;
2304           daa[10*20+9]=  9.1024600;
2305           daa[11*20+0]=  0.5927840;
2306           daa[11*20+1]=  39.8897000;
2307           daa[11*20+2]=  10.6655000;
2308           daa[11*20+3]=  0.8943130;
2309           daa[11*20+4]=  0.0050000;
2310           daa[11*20+5]=  13.0705000;
2311           daa[11*20+6]=  23.9626000;
2312           daa[11*20+7]=  0.2794250;
2313           daa[11*20+8]=  0.2240600;
2314           daa[11*20+9]=  0.8174810;
2315           daa[11*20+10]= 0.0050000;
2316           daa[12*20+0]=  0.0050000;
2317           daa[12*20+1]=  3.2865200;
2318           daa[12*20+2]=  0.2015260;
2319           daa[12*20+3]=  0.0050000;
2320           daa[12*20+4]=  0.0050000;
2321           daa[12*20+5]=  0.0050000;
2322           daa[12*20+6]=  0.0050000;
2323           daa[12*20+7]=  0.0489798;
2324           daa[12*20+8]=  0.0050000;
2325           daa[12*20+9]=  17.3064000;
2326           daa[12*20+10]= 11.3839000;
2327           daa[12*20+11]= 4.0956400;
2328           daa[13*20+0]=  0.5979230;
2329           daa[13*20+1]=  0.0050000;
2330           daa[13*20+2]=  0.0050000;
2331           daa[13*20+3]=  0.0050000;
2332           daa[13*20+4]=  0.3629590;
2333           daa[13*20+5]=  0.0050000;
2334           daa[13*20+6]=  0.0050000;
2335           daa[13*20+7]=  0.0050000;
2336           daa[13*20+8]=  0.0050000;
2337           daa[13*20+9]=  1.4828800;
2338           daa[13*20+10]= 7.4878100;
2339           daa[13*20+11]= 0.0050000;
2340           daa[13*20+12]= 0.0050000;
2341           daa[14*20+0]=  1.0098100;
2342           daa[14*20+1]=  0.4047230;
2343           daa[14*20+2]=  0.3448480;
2344           daa[14*20+3]=  0.0050000;
2345           daa[14*20+4]=  0.0050000;
2346           daa[14*20+5]=  3.0450200;
2347           daa[14*20+6]=  0.0050000;
2348           daa[14*20+7]=  0.0050000;
2349           daa[14*20+8]=  13.9444000;
2350           daa[14*20+9]=  0.0050000;
2351           daa[14*20+10]= 9.8309500;
2352           daa[14*20+11]= 0.1119280;
2353           daa[14*20+12]= 0.0050000;
2354           daa[14*20+13]= 0.0342252;
2355           daa[15*20+0]=  8.5942000;
2356           daa[15*20+1]=  8.3502400;
2357           daa[15*20+2]=  14.5699000;
2358           daa[15*20+3]=  0.4278810;
2359           daa[15*20+4]=  1.1219500;
2360           daa[15*20+5]=  0.1602400;
2361           daa[15*20+6]=  0.0050000;
2362           daa[15*20+7]=  6.2796600;
2363           daa[15*20+8]=  0.7251570;
2364           daa[15*20+9]=  0.7400910;
2365           daa[15*20+10]= 6.1439600;
2366           daa[15*20+11]= 0.0050000;
2367           daa[15*20+12]= 0.3925750;
2368           daa[15*20+13]= 4.2793900;
2369           daa[15*20+14]= 14.2490000;
2370           daa[16*20+0]=  24.1422000;
2371           daa[16*20+1]=  0.9282030;
2372           daa[16*20+2]=  4.5420600;
2373           daa[16*20+3]=  0.6303950;
2374           daa[16*20+4]=  0.0050000;
2375           daa[16*20+5]=  0.2030910;
2376           daa[16*20+6]=  0.4587430;
2377           daa[16*20+7]=  0.0489798;
2378           daa[16*20+8]=  0.9595600;
2379           daa[16*20+9]=  9.3634500;
2380           daa[16*20+10]= 0.0050000;
2381           daa[16*20+11]= 4.0480200;
2382           daa[16*20+12]= 7.4131300;
2383           daa[16*20+13]= 0.1145120;
2384           daa[16*20+14]= 4.3370100;
2385           daa[16*20+15]= 6.3407900;
2386           daa[17*20+0]=  0.0050000;
2387           daa[17*20+1]=  5.9656400;
2388           daa[17*20+2]=  0.0050000;
2389           daa[17*20+3]=  0.0050000;
2390           daa[17*20+4]=  5.4989400;
2391           daa[17*20+5]=  0.0443298;
2392           daa[17*20+6]=  0.0050000;
2393           daa[17*20+7]=  2.8258000;
2394           daa[17*20+8]=  0.0050000;
2395           daa[17*20+9]=  0.0050000;
2396           daa[17*20+10]= 1.3703100;
2397           daa[17*20+11]= 0.0050000;
2398           daa[17*20+12]= 0.0050000;
2399           daa[17*20+13]= 0.0050000;
2400           daa[17*20+14]= 0.0050000;
2401           daa[17*20+15]= 1.1015600;
2402           daa[17*20+16]= 0.0050000;
2403           daa[18*20+0]=  0.0050000;
2404           daa[18*20+1]=  0.0050000;
2405           daa[18*20+2]=  5.0647500;
2406           daa[18*20+3]=  2.2815400;
2407           daa[18*20+4]=  8.3483500;
2408           daa[18*20+5]=  0.0050000;
2409           daa[18*20+6]=  0.0050000;
2410           daa[18*20+7]=  0.0050000;
2411           daa[18*20+8]=  47.4889000;
2412           daa[18*20+9]=  0.1145120;
2413           daa[18*20+10]= 0.0050000;
2414           daa[18*20+11]= 0.0050000;
2415           daa[18*20+12]= 0.5791980;
2416           daa[18*20+13]= 4.1272800;
2417           daa[18*20+14]= 0.0050000;
2418           daa[18*20+15]= 0.9331420;
2419           daa[18*20+16]= 0.4906080;
2420           daa[18*20+17]= 0.0050000;
2421           daa[19*20+0]=  24.8094000;
2422           daa[19*20+1]=  0.2794250;
2423           daa[19*20+2]=  0.0744808;
2424           daa[19*20+3]=  2.9178600;
2425           daa[19*20+4]=  0.0050000;
2426           daa[19*20+5]=  0.0050000;
2427           daa[19*20+6]=  2.1995200;
2428           daa[19*20+7]=  2.7962200;
2429           daa[19*20+8]=  0.8274790;
2430           daa[19*20+9]=  24.8231000;
2431           daa[19*20+10]= 2.9534400;
2432           daa[19*20+11]= 0.1280650;
2433           daa[19*20+12]= 14.7683000;
2434           daa[19*20+13]= 2.2800000;
2435           daa[19*20+14]= 0.0050000;
2436           daa[19*20+15]= 0.8626370;
2437           daa[19*20+16]= 0.0050000;
2438           daa[19*20+17]= 0.0050000;
2439           daa[19*20+18]= 1.3548200;
2440           
2441           f[0]=  0.038;
2442           f[1]=  0.057;
2443           f[2]=  0.089;
2444           f[3]=  0.034;
2445           f[4]=  0.024;
2446           f[5]=  0.044;
2447           f[6]=  0.062;
2448           f[7]=  0.084;
2449           f[8]=  0.016;
2450           f[9]=  0.098;
2451           f[10]= 0.058;
2452           f[11]= 0.064;
2453           f[12]= 0.016;
2454           f[13]= 0.042;
2455           f[14]= 0.046;
2456           f[15]= 0.055;
2457           f[16]= 0.081;
2458           f[17]= 0.020;
2459           f[18]= 0.021;
2460           f[19]= 0.051;
2461          }
2462          break;
2463        case JTTDCMUT:
2464          {
2465           daa[1*20+0]=   0.531678;
2466           daa[2*20+0]=   0.557967;
2467           daa[2*20+1]=   0.451095;
2468           daa[3*20+0]=   0.827445;
2469           daa[3*20+1]=   0.154899;
2470           daa[3*20+2]=   5.549530;
2471           daa[4*20+0]=   0.574478;
2472           daa[4*20+1]=   1.019843;
2473           daa[4*20+2]=   0.313311;
2474           daa[4*20+3]=   0.105625;
2475           daa[5*20+0]=   0.556725;
2476           daa[5*20+1]=   3.021995;
2477           daa[5*20+2]=   0.768834;
2478           daa[5*20+3]=   0.521646;
2479           daa[5*20+4]=   0.091304;
2480           daa[6*20+0]=   1.066681;
2481           daa[6*20+1]=   0.318483;
2482           daa[6*20+2]=   0.578115;
2483           daa[6*20+3]=   7.766557;
2484           daa[6*20+4]=   0.053907;
2485           daa[6*20+5]=   3.417706;
2486           daa[7*20+0]=   1.740159;
2487           daa[7*20+1]=   1.359652;
2488           daa[7*20+2]=   0.773313;
2489           daa[7*20+3]=   1.272434;
2490           daa[7*20+4]=   0.546389;
2491           daa[7*20+5]=   0.231294;
2492           daa[7*20+6]=   1.115632;
2493           daa[8*20+0]=   0.219970;
2494           daa[8*20+1]=   3.210671;
2495           daa[8*20+2]=   4.025778;
2496           daa[8*20+3]=   1.032342;
2497           daa[8*20+4]=   0.724998;
2498           daa[8*20+5]=   5.684080;
2499           daa[8*20+6]=   0.243768;
2500           daa[8*20+7]=   0.201696;
2501           daa[9*20+0]=   0.361684;
2502           daa[9*20+1]=   0.239195;
2503           daa[9*20+2]=   0.491003;
2504           daa[9*20+3]=   0.115968;
2505           daa[9*20+4]=   0.150559;
2506           daa[9*20+5]=   0.078270;
2507           daa[9*20+6]=   0.111773;
2508           daa[9*20+7]=   0.053769;
2509           daa[9*20+8]=   0.181788;
2510           daa[10*20+0]=  0.310007;
2511           daa[10*20+1]=  0.372261;
2512           daa[10*20+2]=  0.137289;
2513           daa[10*20+3]=  0.061486;
2514           daa[10*20+4]=  0.164593;
2515           daa[10*20+5]=  0.709004;
2516           daa[10*20+6]=  0.097485;
2517           daa[10*20+7]=  0.069492;
2518           daa[10*20+8]=  0.540571;
2519           daa[10*20+9]=  2.335139;
2520           daa[11*20+0]=  0.369437;
2521           daa[11*20+1]=  6.529255;
2522           daa[11*20+2]=  2.529517;
2523           daa[11*20+3]=  0.282466;
2524           daa[11*20+4]=  0.049009;
2525           daa[11*20+5]=  2.966732;
2526           daa[11*20+6]=  1.731684;
2527           daa[11*20+7]=  0.269840;
2528           daa[11*20+8]=  0.525096;
2529           daa[11*20+9]=  0.202562;
2530           daa[11*20+10]= 0.146481;
2531           daa[12*20+0]=  0.469395;
2532           daa[12*20+1]=  0.431045;
2533           daa[12*20+2]=  0.330720;
2534           daa[12*20+3]=  0.190001;
2535           daa[12*20+4]=  0.409202;
2536           daa[12*20+5]=  0.456901;
2537           daa[12*20+6]=  0.175084;
2538           daa[12*20+7]=  0.130379;
2539           daa[12*20+8]=  0.329660;
2540           daa[12*20+9]=  4.831666;
2541           daa[12*20+10]= 3.856906;
2542           daa[12*20+11]= 0.624581;
2543           daa[13*20+0]=  0.138293;
2544           daa[13*20+1]=  0.065314;
2545           daa[13*20+2]=  0.073481;
2546           daa[13*20+3]=  0.032522;
2547           daa[13*20+4]=  0.678335;
2548           daa[13*20+5]=  0.045683;
2549           daa[13*20+6]=  0.043829;
2550           daa[13*20+7]=  0.050212;
2551           daa[13*20+8]=  0.453428;
2552           daa[13*20+9]=  0.777090;
2553           daa[13*20+10]= 2.500294;
2554           daa[13*20+11]= 0.024521;
2555           daa[13*20+12]= 0.436181;
2556           daa[14*20+0]=  1.959599;
2557           daa[14*20+1]=  0.710489;
2558           daa[14*20+2]=  0.121804;
2559           daa[14*20+3]=  0.127164;
2560           daa[14*20+4]=  0.123653;
2561           daa[14*20+5]=  1.608126;
2562           daa[14*20+6]=  0.191994;
2563           daa[14*20+7]=  0.208081;
2564           daa[14*20+8]=  1.141961;
2565           daa[14*20+9]=  0.098580;
2566           daa[14*20+10]= 1.060504;
2567           daa[14*20+11]= 0.216345;
2568           daa[14*20+12]= 0.164215;
2569           daa[14*20+13]= 0.148483;
2570           daa[15*20+0]=  3.887095;
2571           daa[15*20+1]=  1.001551;
2572           daa[15*20+2]=  5.057964;
2573           daa[15*20+3]=  0.589268;
2574           daa[15*20+4]=  2.155331;
2575           daa[15*20+5]=  0.548807;
2576           daa[15*20+6]=  0.312449;
2577           daa[15*20+7]=  1.874296;
2578           daa[15*20+8]=  0.743458;
2579           daa[15*20+9]=  0.405119;
2580           daa[15*20+10]= 0.592511;
2581           daa[15*20+11]= 0.474478;
2582           daa[15*20+12]= 0.285564;
2583           daa[15*20+13]= 0.943971;
2584           daa[15*20+14]= 2.788406;
2585           daa[16*20+0]=  4.582565;
2586           daa[16*20+1]=  0.650282;
2587           daa[16*20+2]=  2.351311;
2588           daa[16*20+3]=  0.425159;
2589           daa[16*20+4]=  0.469823;
2590           daa[16*20+5]=  0.523825;
2591           daa[16*20+6]=  0.331584;
2592           daa[16*20+7]=  0.316862;
2593           daa[16*20+8]=  0.477355;
2594           daa[16*20+9]=  2.553806;
2595           daa[16*20+10]= 0.272514;
2596           daa[16*20+11]= 0.965641;
2597           daa[16*20+12]= 2.114728;
2598           daa[16*20+13]= 0.138904;
2599           daa[16*20+14]= 1.176961;
2600           daa[16*20+15]= 4.777647;
2601           daa[17*20+0]=  0.084329;
2602           daa[17*20+1]=  1.257961;
2603           daa[17*20+2]=  0.027700;
2604           daa[17*20+3]=  0.057466;
2605           daa[17*20+4]=  1.104181;
2606           daa[17*20+5]=  0.172206;
2607           daa[17*20+6]=  0.114381;
2608           daa[17*20+7]=  0.544180;
2609           daa[17*20+8]=  0.128193;
2610           daa[17*20+9]=  0.134510;
2611           daa[17*20+10]= 0.530324;
2612           daa[17*20+11]= 0.089134;
2613           daa[17*20+12]= 0.201334;
2614           daa[17*20+13]= 0.537922;
2615           daa[17*20+14]= 0.069965;
2616           daa[17*20+15]= 0.310927;
2617           daa[17*20+16]= 0.080556;
2618           daa[18*20+0]=  0.139492;
2619           daa[18*20+1]=  0.235601;
2620           daa[18*20+2]=  0.700693;
2621           daa[18*20+3]=  0.453952;
2622           daa[18*20+4]=  2.114852;
2623           daa[18*20+5]=  0.254745;
2624           daa[18*20+6]=  0.063452;
2625           daa[18*20+7]=  0.052500;
2626           daa[18*20+8]=  5.848400;
2627           daa[18*20+9]=  0.303445;
2628           daa[18*20+10]= 0.241094;
2629           daa[18*20+11]= 0.087904;
2630           daa[18*20+12]= 0.189870;
2631           daa[18*20+13]= 5.484236;
2632           daa[18*20+14]= 0.113850;
2633           daa[18*20+15]= 0.628608;
2634           daa[18*20+16]= 0.201094;
2635           daa[18*20+17]= 0.747889;
2636           daa[19*20+0]=  2.924161;
2637           daa[19*20+1]=  0.171995;
2638           daa[19*20+2]=  0.164525;
2639           daa[19*20+3]=  0.315261;
2640           daa[19*20+4]=  0.621323;
2641           daa[19*20+5]=  0.179771;
2642           daa[19*20+6]=  0.465271;
2643           daa[19*20+7]=  0.470140;
2644           daa[19*20+8]=  0.121827;
2645           daa[19*20+9]=  9.533943;
2646           daa[19*20+10]= 1.761439;
2647           daa[19*20+11]= 0.124066;
2648           daa[19*20+12]= 3.038533;
2649           daa[19*20+13]= 0.593478;
2650           daa[19*20+14]= 0.211561;
2651           daa[19*20+15]= 0.408532;
2652           daa[19*20+16]= 1.143980;
2653           daa[19*20+17]= 0.239697;
2654           daa[19*20+18]= 0.165473;
2655           
2656           f[0]=  0.077;
2657           f[1]=  0.051;
2658           f[2]=  0.043;
2659           f[3]=  0.051;
2660           f[4]=  0.020;
2661           f[5]=  0.041;
2662           f[6]=  0.062;
2663           f[7]=  0.075;
2664           f[8]=  0.023;
2665           f[9]=  0.053;
2666           f[10]= 0.091;
2667           f[11]= 0.059;
2668           f[12]= 0.024;
2669           f[13]= 0.040;
2670           f[14]= 0.051;
2671           f[15]= 0.068;
2672           f[16]= 0.059;
2673           f[17]= 0.014;
2674           f[18]= 0.032;
2675           f[19]= 0.066;
2676          }
2677          break;
2678        case FLU:
2679          {
2680            daa[ 1*20+ 0]       =       0.138658765     ;
2681            daa[ 2*20+ 0]       =       0.053366579     ;
2682            daa[ 2*20+ 1]       =       0.161000889     ;
2683            daa[ 3*20+ 0]       =       0.584852306     ;
2684            daa[ 3*20+ 1]       =       0.006771843     ;
2685            daa[ 3*20+ 2]       =       7.737392871     ;
2686            daa[ 4*20+ 0]       =       0.026447095     ;
2687            daa[ 4*20+ 1]       =       0.167207008     ;
2688            daa[ 4*20+ 2]       =       1.30E-05        ;
2689            daa[ 4*20+ 3]       =       1.41E-02        ;
2690            daa[ 5*20+ 0]       =       0.353753982     ;
2691            daa[ 5*20+ 1]       =       3.292716942     ;
2692            daa[ 5*20+ 2]       =       0.530642655     ;
2693            daa[ 5*20+ 3]       =       0.145469388     ;
2694            daa[ 5*20+ 4]       =       0.002547334     ;
2695            daa[ 6*20+ 0]       =       1.484234503     ;
2696            daa[ 6*20+ 1]       =       0.124897617     ;
2697            daa[ 6*20+ 2]       =       0.061652192     ;
2698            daa[ 6*20+ 3]       =       5.370511279     ;
2699            daa[ 6*20+ 4]       =       3.91E-11        ;
2700            daa[ 6*20+ 5]       =       1.195629122     ;
2701            daa[ 7*20+ 0]       =       1.132313122     ;
2702            daa[ 7*20+ 1]       =       1.190624465     ;
2703            daa[ 7*20+ 2]       =       0.322524648     ;
2704            daa[ 7*20+ 3]       =       1.934832784     ;
2705            daa[ 7*20+ 4]       =       0.116941459     ;
2706            daa[ 7*20+ 5]       =       0.108051341     ;
2707            daa[ 7*20+ 6]       =       1.593098825     ;
2708            daa[ 8*20+ 0]       =       0.214757862     ;
2709            daa[ 8*20+ 1]       =       1.879569938     ;
2710            daa[ 8*20+ 2]       =       1.387096032     ;
2711            daa[ 8*20+ 3]       =       0.887570549     ;
2712            daa[ 8*20+ 4]       =       2.18E-02        ;
2713            daa[ 8*20+ 5]       =       5.330313412     ;
2714            daa[ 8*20+ 6]       =       0.256491863     ;
2715            daa[ 8*20+ 7]       =       0.058774527     ;
2716            daa[ 9*20+ 0]       =       0.149926734     ;
2717            daa[ 9*20+ 1]       =       0.246117172     ;
2718            daa[ 9*20+ 2]       =       0.218571975     ;
2719            daa[ 9*20+ 3]       =       0.014085917     ;
2720            daa[ 9*20+ 4]       =       0.001112158     ;
2721            daa[ 9*20+ 5]       =       0.02883995      ;
2722            daa[ 9*20+ 6]       =       1.42E-02        ;
2723            daa[ 9*20+ 7]       =       1.63E-05        ;
2724            daa[ 9*20+ 8]       =       0.243190142     ;
2725            daa[10*20+ 0]       =       0.023116952     ;
2726            daa[10*20+ 1]       =       0.296045557     ;
2727            daa[10*20+ 2]       =       8.36E-04        ;
2728            daa[10*20+ 3]       =       0.005730682     ;
2729            daa[10*20+ 4]       =       0.005613627     ;
2730            daa[10*20+ 5]       =       1.020366955     ;
2731            daa[10*20+ 6]       =       0.016499536     ;
2732            daa[10*20+ 7]       =       0.006516229     ;
2733            daa[10*20+ 8]       =       0.321611694     ;
2734            daa[10*20+ 9]       =       3.512072282     ;
2735            daa[11*20+ 0]       =       0.47433361      ;
2736            daa[11*20+ 1]       =       15.30009662     ;
2737            daa[11*20+ 2]       =       2.646847965     ;
2738            daa[11*20+ 3]       =       0.29004298      ;
2739            daa[11*20+ 4]       =       3.83E-06        ;
2740            daa[11*20+ 5]       =       2.559587177     ;
2741            daa[11*20+ 6]       =       3.881488809     ;
2742            daa[11*20+ 7]       =       0.264148929     ;
2743            daa[11*20+ 8]       =       0.347302791     ;
2744            daa[11*20+ 9]       =       0.227707997     ;
2745            daa[11*20+10]       =       0.129223639     ;
2746            daa[12*20+ 0]       =       0.058745423     ;
2747            daa[12*20+ 1]       =       0.890162346     ;
2748            daa[12*20+ 2]       =       0.005251688     ;
2749            daa[12*20+ 3]       =       0.041762964     ;
2750            daa[12*20+ 4]       =       0.11145731      ;
2751            daa[12*20+ 5]       =       0.190259181     ;
2752            daa[12*20+ 6]       =       0.313974351     ;
2753            daa[12*20+ 7]       =       0.001500467     ;
2754            daa[12*20+ 8]       =       0.001273509     ;
2755            daa[12*20+ 9]       =       9.017954203     ;
2756            daa[12*20+10]       =       6.746936485     ;
2757            daa[12*20+11]       =       1.331291619     ;
2758            daa[13*20+ 0]       =       0.080490909     ;
2759            daa[13*20+ 1]       =       1.61E-02        ;
2760            daa[13*20+ 2]       =       8.36E-04        ;
2761            daa[13*20+ 3]       =       1.06E-06        ;
2762            daa[13*20+ 4]       =       0.104053666     ;
2763            daa[13*20+ 5]       =       0.032680657     ;
2764            daa[13*20+ 6]       =       0.001003501     ;
2765            daa[13*20+ 7]       =       0.001236645     ;
2766            daa[13*20+ 8]       =       0.119028506     ;
2767            daa[13*20+ 9]       =       1.463357278     ;
2768            daa[13*20+10]       =       2.986800036     ;
2769            daa[13*20+11]       =       3.20E-01        ;
2770            daa[13*20+12]       =       0.279910509     ;
2771            daa[14*20+ 0]       =       0.659311478     ;
2772            daa[14*20+ 1]       =       0.15402718      ;
2773            daa[14*20+ 2]       =       3.64E-02        ;
2774            daa[14*20+ 3]       =       0.188539456     ;
2775            daa[14*20+ 4]       =       1.59E-13        ;
2776            daa[14*20+ 5]       =       0.712769599     ;
2777            daa[14*20+ 6]       =       0.319558828     ;
2778            daa[14*20+ 7]       =       0.038631761     ;
2779            daa[14*20+ 8]       =       0.924466914     ;
2780            daa[14*20+ 9]       =       0.080543327     ;
2781            daa[14*20+10]       =       0.634308521     ;
2782            daa[14*20+11]       =       0.195750632     ;
2783            daa[14*20+12]       =       5.69E-02        ;
2784            daa[14*20+13]       =       0.00713243      ;
2785            daa[15*20+ 0]       =       3.011344519     ;
2786            daa[15*20+ 1]       =       0.95013841      ;
2787            daa[15*20+ 2]       =       3.881310531     ;
2788            daa[15*20+ 3]       =       0.338372183     ;
2789            daa[15*20+ 4]       =       0.336263345     ;
2790            daa[15*20+ 5]       =       0.487822499     ;
2791            daa[15*20+ 6]       =       0.307140298     ;
2792            daa[15*20+ 7]       =       1.585646577     ;
2793            daa[15*20+ 8]       =       0.58070425      ;
2794            daa[15*20+ 9]       =       0.290381075     ;
2795            daa[15*20+10]       =       0.570766693     ;
2796            daa[15*20+11]       =       0.283807672     ;
2797            daa[15*20+12]       =       0.007026588     ;
2798            daa[15*20+13]       =       0.99668567      ;
2799            daa[15*20+14]       =       2.087385344     ;
2800            daa[16*20+ 0]       =       5.418298175     ;
2801            daa[16*20+ 1]       =       0.183076905     ;
2802            daa[16*20+ 2]       =       2.140332316     ;
2803            daa[16*20+ 3]       =       0.135481233     ;
2804            daa[16*20+ 4]       =       0.011975266     ;
2805            daa[16*20+ 5]       =       0.602340963     ;
2806            daa[16*20+ 6]       =       0.280124895     ;
2807            daa[16*20+ 7]       =       0.01880803      ;
2808            daa[16*20+ 8]       =       0.368713573     ;
2809            daa[16*20+ 9]       =       2.904052286     ;
2810            daa[16*20+10]       =       0.044926357     ;
2811            daa[16*20+11]       =       1.5269642       ;
2812            daa[16*20+12]       =       2.031511321     ;
2813            daa[16*20+13]       =       0.000134906     ;
2814            daa[16*20+14]       =       0.542251094     ;
2815            daa[16*20+15]       =       2.206859934     ;
2816            daa[17*20+ 0]       =       1.96E-01        ;
2817            daa[17*20+ 1]       =       1.369429408     ;
2818            daa[17*20+ 2]       =       5.36E-04        ;
2819            daa[17*20+ 3]       =       1.49E-05        ;
2820            daa[17*20+ 4]       =       0.09410668      ;
2821            daa[17*20+ 5]       =       4.40E-02        ;
2822            daa[17*20+ 6]       =       0.155245492     ;
2823            daa[17*20+ 7]       =       0.196486447     ;
2824            daa[17*20+ 8]       =       2.24E-02        ;
2825            daa[17*20+ 9]       =       0.03213215      ;
2826            daa[17*20+10]       =       0.431277663     ;
2827            daa[17*20+11]       =       4.98E-05        ;
2828            daa[17*20+12]       =       0.070460039     ;
2829            daa[17*20+13]       =       0.814753094     ;
2830            daa[17*20+14]       =       0.000431021     ;
2831            daa[17*20+15]       =       0.099835753     ;
2832            daa[17*20+16]       =       0.207066206     ;
2833            daa[18*20+ 0]       =       0.018289288     ;
2834            daa[18*20+ 1]       =       0.099855497     ;
2835            daa[18*20+ 2]       =       0.373101927     ;
2836            daa[18*20+ 3]       =       0.525398543     ;
2837            daa[18*20+ 4]       =       0.601692431     ;
2838            daa[18*20+ 5]       =       0.072205935     ;
2839            daa[18*20+ 6]       =       0.10409287      ;
2840            daa[18*20+ 7]       =       0.074814997     ;
2841            daa[18*20+ 8]       =       6.448954446     ;
2842            daa[18*20+ 9]       =       0.273934263     ;
2843            daa[18*20+10]       =       0.340058468     ;
2844            daa[18*20+11]       =       0.012416222     ;
2845            daa[18*20+12]       =       0.874272175     ;
2846            daa[18*20+13]       =       5.393924245     ;
2847            daa[18*20+14]       =       1.82E-04        ;
2848            daa[18*20+15]       =       0.39255224      ;
2849            daa[18*20+16]       =       0.12489802      ;
2850            daa[18*20+17]       =       0.42775543      ;
2851            daa[19*20+ 0]       =       3.53200527      ;
2852            daa[19*20+ 1]       =       0.103964386     ;
2853            daa[19*20+ 2]       =       0.010257517     ;
2854            daa[19*20+ 3]       =       0.297123975     ;
2855            daa[19*20+ 4]       =       0.054904564     ;
2856            daa[19*20+ 5]       =       0.406697814     ;
2857            daa[19*20+ 6]       =       0.285047948     ;
2858            daa[19*20+ 7]       =       0.337229619     ;
2859            daa[19*20+ 8]       =       0.098631355     ;
2860            daa[19*20+ 9]       =       14.39405219     ;
2861            daa[19*20+10]       =       0.890598579     ;
2862            daa[19*20+11]       =       0.07312793      ;
2863            daa[19*20+12]       =       4.904842235     ;
2864            daa[19*20+13]       =       0.592587985     ;
2865            daa[19*20+14]       =       0.058971975     ;
2866            daa[19*20+15]       =       0.088256423     ;
2867            daa[19*20+16]       =       0.654109108     ;
2868            daa[19*20+17]       =       0.256900461     ;
2869            daa[19*20+18]       =       0.167581647     ;
2870           
2871 
2872 
2873            f[0]        =       0.0471  ;
2874            f[1]        =       0.0509  ;
2875            f[2]        =       0.0742  ;
2876            f[3]        =       0.0479  ;
2877            f[4]        =       0.0250  ;
2878            f[5]        =       0.0333  ;
2879            f[6]        =       0.0546  ;
2880            f[7]        =       0.0764  ;
2881            f[8]        =       0.0200  ;
2882            f[9]        =       0.0671  ;
2883            f[10]       =       0.0715  ;
2884            f[11]       =       0.0568  ;
2885            f[12]       =       0.0181  ;
2886            f[13]       =       0.0305  ;
2887            f[14]       =       0.0507  ;
2888            f[15]       =       0.0884  ;
2889            f[16]       =       0.0743  ;
2890            f[17]       =       0.0185  ;
2891            f[18]       =       0.0315  ;
2892            f[19]       =       0.0632  ;
2893          }
2894          break; 
2895      case LG4:
2896      case LG4X:
2897        {
2898          double 
2899            rates[4][190] = 
2900            {
2901              {
2902                0.269343
2903                , 0.254612, 0.150988
2904                , 0.236821, 0.031863, 0.659648
2905                , 2.506547, 0.938594, 0.975736, 0.175533
2906                , 0.359080, 0.348288, 0.697708, 0.086573, 0.095967
2907                , 0.304674, 0.156000, 0.377704, 0.449140, 0.064706, 4.342595
2908                , 1.692015, 0.286638, 0.565095, 0.380358, 0.617945, 0.202058, 0.264342
2909                , 0.251974, 0.921633, 1.267609, 0.309692, 0.390429, 2.344059, 0.217750, 0.104842
2910                , 1.085220, 0.325624, 0.818658, 0.037814, 1.144150, 0.534567, 0.222793, 0.062682, 0.567431
2911                , 0.676353, 0.602366, 0.217027, 0.007533, 1.595775, 0.671143, 0.158424, 0.070463, 0.764255, 8.226528
2912                , 0.179155, 0.971338, 1.343718, 0.133744, 0.122468, 0.983857, 0.994128, 0.220916, 0.410581, 0.387487, 0.181110
2913                , 1.636817, 0.515217, 0.670461, 0.071252, 1.534848, 5.288642, 0.255628, 0.094198, 0.257229, 25.667158, 6.819689, 1.591212
2914                , 0.235498, 0.123932, 0.099793, 0.030425, 0.897279, 0.112229, 0.022529, 0.047488, 0.762914, 1.344259, 0.865691, 0.038921, 2.030833
2915                , 1.265605, 0.040163, 0.173354, 0.027579, 0.259961, 0.580374, 0.088041, 0.145595, 0.143676, 0.298859, 1.020117, 0.000714, 0.190019, 0.093964
2916                , 5.368405, 0.470952, 5.267140, 0.780505, 4.986071, 0.890554, 0.377949, 1.755515, 0.786352, 0.527246, 0.667783, 0.659948, 0.731921, 0.837669, 1.355630
2917                , 1.539394, 0.326789, 1.688169, 0.283738, 1.389282, 0.329821, 0.231770, 0.117017, 0.449977, 3.531600, 0.721586, 0.497588, 2.691697, 0.152088, 0.698040, 16.321298
2918                , 0.140944, 0.375611, 0.025163, 0.002757, 0.801456, 0.257253, 0.103678, 0.132995, 0.345834, 0.377156, 0.839647, 0.176970, 0.505682, 1.670170, 0.091298, 0.210096, 0.013165
2919                , 0.199836, 0.146857, 0.806275, 0.234246, 1.436970, 0.319669, 0.010076, 0.036859, 3.503317, 0.598632, 0.738969, 0.154436, 0.579000, 4.245524, 0.074524, 0.454195, 0.232913, 1.178490
2920                , 9.435529, 0.285934, 0.395670, 0.130890, 6.097263, 0.516259, 0.503665, 0.222960, 0.149143, 13.666175, 2.988174, 0.162725, 5.973826, 0.843416, 0.597394, 0.701149, 4.680002, 0.300085, 0.416262
2921              },
2922              {
2923                0.133720
2924                , 0.337212, 0.749052
2925                , 0.110918, 0.105087, 4.773487
2926                , 3.993460, 0.188305, 1.590332, 0.304942
2927                , 0.412075, 2.585774, 1.906884, 0.438367, 0.242076
2928                , 0.435295, 0.198278, 0.296366, 7.470333, 0.008443, 3.295515
2929                , 7.837540, 0.164607, 0.431724, 0.153850, 1.799716, 0.269744, 0.242866
2930                , 0.203872, 2.130334, 9.374479, 1.080878, 0.152458, 12.299133, 0.279589, 0.089714
2931                , 0.039718, 0.024553, 0.135254, 0.014979, 0.147498, 0.033964, 0.005585, 0.007248, 0.022746
2932                , 0.075784, 0.080091, 0.084971, 0.014128, 0.308347, 0.500836, 0.022833, 0.022999, 0.161270, 1.511682
2933                , 0.177662, 10.373708, 1.036721, 0.038303, 0.043030, 2.181033, 0.321165, 0.103050, 0.459502, 0.021215, 0.078395
2934                , 0.420784, 0.192765, 0.329545, 0.008331, 0.883142, 1.403324, 0.168673, 0.160728, 0.612573, 1.520889, 7.763266, 0.307903
2935                , 0.071268, 0.019652, 0.088753, 0.013547, 0.566609, 0.071878, 0.020050, 0.041022, 0.625361, 0.382806, 1.763059, 0.044644, 1.551911
2936                , 0.959127, 1.496585, 0.377794, 0.332010, 0.318192, 1.386970, 0.915904, 0.224255, 2.611479, 0.029351, 0.068250, 1.542356, 0.047525, 0.182715
2937                , 11.721512, 0.359408, 2.399158, 0.219464, 9.104192, 0.767563, 0.235229, 3.621219, 0.971955, 0.033780, 0.043035, 0.236929, 0.319964, 0.124977, 0.840651
2938                , 2.847068, 0.218463, 1.855386, 0.109808, 4.347048, 0.765848, 0.164569, 0.312024, 0.231569, 0.356327, 0.159597, 0.403210, 1.135162, 0.106903, 0.269190, 9.816481
2939                , 0.030203, 0.387292, 0.118878, 0.067287, 0.190240, 0.122113, 0.007023, 0.137411, 0.585141, 0.020634, 0.228824, 0.000122, 0.474862, 3.135128, 0.030313, 0.093830, 0.119152
2940                , 0.067183, 0.130101, 0.348730, 0.061798, 0.301198, 0.095382, 0.095764, 0.044628, 2.107384, 0.046105, 0.100117, 0.017073, 0.192383, 8.367641, 0.000937, 0.137416, 0.044722, 4.179782
2941                , 0.679398, 0.041567, 0.092408, 0.023701, 1.271187, 0.115566, 0.055277, 0.086988, 0.060779, 8.235167, 0.609420, 0.061764, 0.581962, 0.184187, 0.080246, 0.098033, 1.438350, 0.023439, 0.039124
2942              },           
2943              {
2944                0.421017
2945                , 0.316236, 0.693340
2946                , 0.285984, 0.059926, 6.158219
2947                , 4.034031, 1.357707, 0.708088, 0.063669
2948                , 0.886972, 2.791622, 1.701830, 0.484347, 0.414286
2949                , 0.760525, 0.233051, 0.378723, 4.032667, 0.081977, 4.940411
2950                , 0.754103, 0.402894, 2.227443, 1.102689, 0.416576, 0.459376, 0.508409
2951                , 0.571422, 2.319453, 5.579973, 0.885376, 1.439275, 4.101979, 0.576745, 0.428799
2952                , 0.162152, 0.085229, 0.095692, 0.006129, 0.490937, 0.104843, 0.045514, 0.004705, 0.098934
2953                , 0.308006, 0.287051, 0.056994, 0.007102, 0.958988, 0.578990, 0.067119, 0.024403, 0.342983, 3.805528
2954                , 0.390161, 7.663209, 1.663641, 0.105129, 0.135029, 3.364474, 0.652618, 0.457702, 0.823674, 0.129858, 0.145630
2955                , 1.042298, 0.364551, 0.293222, 0.037983, 1.486520, 1.681752, 0.192414, 0.070498, 0.222626, 4.529623, 4.781730, 0.665308
2956                , 0.362476, 0.073439, 0.129245, 0.020078, 1.992483, 0.114549, 0.023272, 0.064490, 1.491794, 1.113437, 2.132006, 0.041677, 1.928654
2957                , 1.755491, 0.087050, 0.099325, 0.163817, 0.242851, 0.322939, 0.062943, 0.198698, 0.192904, 0.062948, 0.180283, 0.059655, 0.129323, 0.065778
2958                , 3.975060, 0.893398, 5.496314, 1.397313, 3.575120, 1.385297, 0.576191, 1.733288, 1.021255, 0.065131, 0.129115, 0.600308, 0.387276, 0.446001, 1.298493
2959                , 2.565079, 0.534056, 2.143993, 0.411388, 2.279084, 0.893006, 0.528209, 0.135731, 0.518741, 0.972662, 0.280700, 0.890086, 1.828755, 0.189028, 0.563778, 7.788147
2960                , 0.283631, 0.497926, 0.075454, 0.043794, 1.335322, 0.308605, 0.140137, 0.150797, 1.409726, 0.119868, 0.818331, 0.080591, 1.066017, 3.754687, 0.073415, 0.435046, 0.197272
2961                , 0.242513, 0.199157, 0.472207, 0.085937, 2.039787, 0.262751, 0.084578, 0.032247, 7.762326, 0.153966, 0.299828, 0.117255, 0.438215, 14.506235, 0.089180, 0.352766, 0.215417, 5.054245
2962                , 2.795818, 0.107130, 0.060909, 0.029724, 2.986426, 0.197267, 0.196977, 0.044327, 0.116751, 7.144311, 1.848622, 0.118020, 1.999696, 0.705747, 0.272763, 0.096935, 1.820982, 0.217007, 0.172975
2963              },
2964              {
2965                0.576160
2966                , 0.567606, 0.498643
2967                , 0.824359, 0.050698, 3.301401
2968                , 0.822724, 4.529235, 1.291808, 0.101930
2969                , 1.254238, 2.169809, 1.427980, 0.449474, 0.868679
2970                , 1.218615, 0.154502, 0.411471, 3.172277, 0.050239, 2.138661
2971                , 1.803443, 0.604673, 2.125496, 1.276384, 1.598679, 0.502653, 0.479490
2972                , 0.516862, 2.874265, 4.845769, 0.719673, 3.825677, 4.040275, 0.292773, 0.596643
2973                , 0.180898, 0.444586, 0.550969, 0.023542, 2.349573, 0.370160, 0.142187, 0.016618, 0.500788
2974                , 0.452099, 0.866322, 0.201033, 0.026731, 2.813990, 1.645178, 0.135556, 0.072152, 1.168817, 5.696116
2975                , 0.664186, 2.902886, 2.101971, 0.127988, 0.200218, 2.505933, 0.759509, 0.333569, 0.623100, 0.547454, 0.363656
2976                , 0.864415, 0.835049, 0.632649, 0.079201, 2.105931, 1.633544, 0.216462, 0.252419, 0.665406, 7.994105, 11.751178, 1.096842
2977                , 0.324478, 0.208947, 0.280339, 0.041683, 4.788477, 0.107022, 0.067711, 0.171320, 3.324779, 2.965328, 5.133843, 0.084856, 4.042591
2978                , 1.073043, 0.173826, 0.041985, 0.270336, 0.121299, 0.351384, 0.228565, 0.225318, 0.376089, 0.058027, 0.390354, 0.214230, 0.058954, 0.126299
2979                , 3.837562, 0.884342, 4.571911, 0.942751, 6.592827, 1.080063, 0.465397, 3.137614, 1.119667, 0.362516, 0.602355, 0.716940, 0.506796, 1.444484, 1.432558
2980                , 2.106026, 0.750016, 2.323325, 0.335915, 1.654673, 1.194017, 0.617231, 0.318671, 0.801030, 4.455842, 0.580191, 1.384210, 3.522468, 0.473128, 0.432718, 5.716300
2981                , 0.163720, 0.818102, 0.072322, 0.068275, 3.305436, 0.373790, 0.054323, 0.476587, 1.100360, 0.392946, 1.703323, 0.085720, 1.725516, 5.436253, 0.053108, 0.498594, 0.231832
2982                , 0.241167, 0.302440, 1.055095, 0.246940, 9.741942, 0.249895, 0.129973, 0.052363, 11.542498, 1.047449, 1.319667, 0.139770, 1.330225, 26.562270, 0.046986, 0.737653, 0.313460, 5.165098
2983                , 1.824586, 0.435795, 0.179086, 0.091739, 3.609570, 0.649507, 0.656681, 0.225234, 0.473437, 19.897252, 3.001995, 0.452926, 3.929598, 1.692159, 0.370204, 0.373501, 3.329822, 0.326593, 0.860743
2984              }
2985            };
2986
2987          double
2988            freqs[4][20] = 
2989            {{0.082276,0.055172,0.043853,0.053484,0.018957,0.028152,0.046679,0.157817,0.033297,0.028284,0.054284,0.025275,0.023665,0.041874,0.063071,0.066501,0.065424,0.023837,0.038633,0.049465},
2990             {0.120900,0.036460,0.026510,0.040410,0.015980,0.021132,0.025191,0.036369,0.015884,0.111029,0.162852,0.024820,0.028023,0.074058,0.012065,0.041963,0.039072,0.012666,0.040478,0.114137},
2991             {0.072639,0.051691,0.038642,0.055580,0.009829,0.031374,0.048731,0.065283,0.023791,0.086640,0.120847,0.052177,0.026728,0.032589,0.039238,0.046748,0.053361,0.008024,0.037426,0.098662},
2992             {0.104843,0.078835,0.043513,0.090498,0.002924,0.066163,0.151640,0.038843,0.022556,0.018383,0.038687,0.104462,0.010166,0.009089,0.066950,0.053667,0.049486,0.004409,0.012924,0.031963}};
2993
2994          int 
2995            i, 
2996            j, 
2997            r = 0;
2998
2999          for(i = 1; i < 20; i++)
3000            for(j = 0; j < i; j++)
3001              {
3002                daa[i * 20 + j] = rates[lg4_index][r];
3003                r++;
3004              }
3005         
3006          assert(r == 190);
3007
3008          for(i = 0; i < 20; i++)
3009            f[i] = freqs[lg4_index][i];   
3010
3011        }
3012        break;
3013        case DUMMY:
3014          {
3015            double 
3016              rates[190] = {10.7,
3017                            0.2,   3.7,
3018                            4.3,   0.2, 1024.8,
3019                            26.1,  28.2,  46.5,   0.2,
3020                            0.2, 316.9,  32.4,  12.6,  13.7,
3021                            23.0,   0.2,  26.6, 814.8, 0.2, 159.5,
3022                            76.3,   9.6,  39.3,  33.1,  23.5,   2.6,  56.8,
3023                            0.2, 212.7, 294.3,  59.4, 131.9, 604.6,   5.1,   1.5,
3024                            41.9,   0.7,  15.2,   0.2,   0.2,   0.2,   0.2,   1.4,   0.2,
3025                            4.8,   4.9,   0.2,   0.2,  19.9,  25.3,   0.2,   0.2,  11.0, 133.7,
3026                            1.7,  17.2, 331.6,   5.5,   0.2, 164.7, 237.8,   5.7,  12.7,   0.2,   0.2,
3027                            124.0,   0.2,   0.2,   0.2,   0.2,   6.9,   1.5,   0.5,   1.2, 322.3, 416.2,  36.8,
3028                            2.5,   0.2,   0.4,   0.2,  77.4,   0.2,   0.2,   0.7,  15.4,  44.1, 277.9,   0.2,   8.3,
3029                            41.3,   8.3,   0.2,   2.5,   0.2,  75.8,   0.2,   0.4,  75.7,   2.6,  52.1,   3.9,   1.3,  11.1,
3030                            307.4,   7.1, 491.3,  15.0, 437.3,  25.3,   7.4, 105.9,  56.4,   2.4,  81.0,  24.2,   6.6, 122.8, 327.1,
3031                            782.7,   0.4,  94.0,  19.0,  24.9,  12.5,   1.6,   0.2,   9.6, 360.6,  16.6,  48.8, 651.4,   3.9,  64.7, 455.7,
3032                            0.2,  18.3,   0.2,   0.2, 133.5,   4.3,   0.2,   6.5,   1.2,   0.2,  10.7,   0.2,   0.6,   2.0,   0.5,   4.2,   0.2,
3033                            0.2,   1.0,  85.7,  29.4, 994.7,   6.6,   0.2,   0.2, 2096.0,   6.2,  15.5,   1.6,   6.5, 502.9,  11.5,  63.6,   4.3,  10.1,
3034                            565.4,   0.2,   1.7,  14.9,  20.9,   0.2,  13.5,  13.5,   0.2, 1987.0,  74.0,   1.7, 716.8,   5.6,   2.7,   0.9, 246.3,   3.0,   0.2};
3035
3036            double
3037              freqs[20] = { 0.066446,    0.017604,    0.043105,    0.017760,    0.005969,    0.024329,    0.023622,    0.052890,    0.026973,    0.088543,   
3038                            0.162813,   0.025336,    0.062589,    0.061567,    0.053608,    0.074271,    0.087828,    0.027617,    0.034022,    0.043108};
3039           
3040            int 
3041              i, j, r = 0;
3042
3043            for(i = 1; i < 20; i++)
3044              for(j = 0; j < i; j++)
3045                {
3046                  daa[i * 20 + j] = rates[r];
3047                  r++;
3048                }
3049               
3050            assert(r == 190);
3051
3052            for(i = 0; i < 20; i++)
3053              f[i] = freqs[i];   
3054          }
3055          break;
3056        case DUMMY2:
3057          {
3058            double rates[190] = { 6.5,
3059                                  4.5,  10.6,
3060                                  84.3,   9.5, 643.2,
3061                                  19.5, 353.7,  10.9,  10.7,
3062                                  6.1, 486.3,  18.0,  11.6,   0.1,
3063                                  74.5,  21.5,  13.0, 437.4,   0.1, 342.6,
3064                                  118.1, 183.9,  17.4, 150.3,  86.8,   7.1, 161.9,
3065                                  2.8, 346.6, 345.3, 202.4, 111.8, 450.1,   6.2,   2.2,
3066                                  1.5,  50.6,  25.6,   5.6,   3.4,   3.6,   4.3,   2.5,   8.4,
3067                                  3.9,  36.9,   2.4,   5.9,  20.3,  26.1,   5.1,   3.4,  17.3, 205.0,
3068                                  4.2, 712.1, 639.2,  10.1,   0.1, 500.5, 426.6,  29.3,   9.2,  37.9,  10.8,
3069                                  13.4,  53.5,   9.9,   3.8,  10.5,   9.5,   9.6,   3.8,   3.6, 534.9, 142.8,  83.6,
3070                                  4.3,   5.0,   8.7,   7.5, 238.0,   2.4,   7.7,   3.1,  11.0,  61.0, 542.3,   9.4,   3.8,
3071                                  91.2,  69.0,   3.5,  13.4,   6.5, 145.6,   8.1,   2.6, 133.9,   2.1, 155.8,  21.2,  10.5,  12.6,
3072                                  251.1,  82.9, 271.4,  34.8, 471.9,  10.7,  16.4, 136.7,  19.2,  36.2, 160.3,  23.9,   6.2, 249.4, 348.6,
3073                                  467.5,  82.5, 215.5,   8.0,   7.4,   5.4,  11.6,   6.3,   3.8, 266.2,  10.7, 140.2, 295.2,   3.6, 181.2, 144.8,
3074                                  3.4, 171.8,   6.1,   3.5, 518.6,  17.0,   9.1,  49.0,   5.7,   3.3,  98.8,   2.3,  11.1,  34.1,   1.1,  56.3,   1.5,
3075                                  2.2,   4.3,  69.9, 202.9, 579.1,   9.4,   9.1,   2.1, 889.2,  10.8,   9.6,  20.1,   3.4, 255.9,   5.6, 264.3,   3.3,  21.7,
3076                                  363.2,   8.4,   1.6,  10.3,  37.8,   5.1,  21.6,  76.0,   1.1, 595.0, 155.8,   9.2, 191.9, 102.2,   7.7,  10.1,  36.8,   5.0,   7.2};
3077
3078            double freqs[20] = {0.061007,    0.060799,    0.043028,    0.038515,    0.011297,    0.035406,    0.050764,    0.073749,    0.024609,    0.085629,
3079                                0.106930,    0.046704,    0.023382,    0.056136,    0.043289,    0.073994,    0.052078,    0.018023,    0.036043,    0.058620};
3080
3081
3082            int 
3083              i, j, r = 0;
3084
3085            for(i = 1; i < 20; i++)
3086              for(j = 0; j < i; j++)
3087                {
3088                  daa[i * 20 + j] = rates[r];
3089                  r++;
3090                }
3091               
3092            assert(r == 190);
3093
3094            for(i = 0; i < 20; i++)
3095              f[i] = freqs[i]; 
3096
3097          }
3098         
3099          break;
3100        default: 
3101          assert(0);
3102        }
3103    }
3104
3105
3106  /*
3107   
3108  TODO review frequency sums for fixed as well as empirical base frequencies !
3109 
3110  NUMERICAL BUG fix, rounded AA freqs in some models, such that
3111  they actually really sum to 1.0 +/- epsilon
3112 
3113  {
3114    double acc = 0.0;
3115 
3116    for(i = 0; i < 20; i++)
3117      acc += f[i];
3118   
3119    printf("%1.80f\n", acc);
3120    assert(acc == 1.0); 
3121  }
3122  */
3123 
3124
3125
3126  for (i=0; i<20; i++) 
3127    for (j=0; j<i; j++)               
3128      daa[j*20+i] = daa[i*20+j];
3129
3130 
3131  /*
3132    for (i=0; i<20; i++) 
3133    {
3134    for (j=0; j<20; j++)
3135    {
3136    if(i == j)
3137    printf("0.0 ");
3138    else
3139    printf("%f ", daa[i * 20 + j]);
3140    }
3141    printf("\n");
3142    }
3143   
3144    for (i=0; i<20; i++)
3145    printf("%f ", f[i]);
3146    printf("\n");
3147  */
3148 
3149
3150  max = 0;
3151 
3152  for(i = 0; i < 19; i++)
3153    for(j = i + 1; j < 20; j++)
3154      {
3155        q[i][j] = temp = daa[i * 20 + j];
3156        if(temp > max) 
3157          max = temp;
3158      }
3159 
3160  scaler = AA_SCALE / max;
3161   
3162  /* SCALING HAS BEEN RE-INTRODUCED TO RESOLVE NUMERICAL  PROBLEMS */   
3163
3164  r = 0;
3165  for(i = 0; i < 19; i++)
3166    {     
3167      for(j = i + 1; j < 20; j++)
3168        { 
3169       
3170          q[i][j] *= scaler;
3171         
3172         
3173          assert(q[i][j] <= AA_SCALE_PLUS_EPSILON);
3174         
3175          initialRates[r++] = q[i][j];
3176        }
3177    }             
3178}
3179
3180
3181
3182static void updateFracChange(tree *tr)
3183{   
3184  if(tr->NumberOfModels == 1)   
3185    {   
3186      assert(tr->fracchanges[0] != -1.0);
3187      tr->fracchange = tr->fracchanges[0];           
3188      tr->fracchanges[0] = -1.0;
3189     
3190      if(tr->useBrLenScaler)
3191        scaleBranches(tr, FALSE);
3192    }     
3193  else
3194    {
3195      int 
3196        model, 
3197        i;
3198     
3199      double 
3200        *modelWeights = (double *)rax_calloc(tr->NumberOfModels, sizeof(double)),
3201        wgtsum = 0.0; 
3202     
3203      assert(tr->NumberOfModels > 1);
3204
3205      tr->fracchange = 0.0;             
3206     
3207      for(i = 0; i < tr->cdta->endsite; i++)
3208        {
3209          modelWeights[tr->model[i]]  += (double)tr->cdta->aliaswgt[i];
3210          wgtsum                      += (double)tr->cdta->aliaswgt[i];
3211        } 
3212               
3213      for(model = 0; model < tr->NumberOfModels; model++)     
3214        {                       
3215          tr->partitionContributions[model] = modelWeights[model] / wgtsum;             
3216          tr->fracchange +=  tr->partitionContributions[model] * tr->fracchanges[model];
3217        }             
3218   
3219      if(tr->useBrLenScaler)
3220        scaleBranches(tr, FALSE);               
3221
3222      rax_free(modelWeights);
3223    }
3224
3225  tr->rawFracchange = tr->fracchange;
3226  memcpy(tr->rawFracchanges, tr->fracchanges, sizeof(double) * tr->NumberOfModels);
3227}
3228
3229static void mytred2(double **a, const int n, double *d, double *e)
3230{
3231  int     l, k, j, i;
3232  double  scale, hh, h, g, f; 
3233 
3234  for (i = n; i > 1; i--)
3235    {
3236      l = i - 1;
3237      h = 0.0;
3238      scale = 0.0;
3239     
3240      if (l > 1)
3241        {
3242          for (k = 1; k <= l; k++)
3243            scale += fabs(a[k - 1][i - 1]);
3244          if (scale == 0.0)
3245            e[i - 1] = a[l - 1][i - 1];
3246          else
3247            {
3248              for (k = 1; k <= l; k++)
3249                {
3250                  a[k - 1][i - 1] /= scale;
3251                  h += a[k - 1][i - 1] * a[k - 1][i - 1];
3252                }
3253              f = a[l - 1][i - 1];
3254              g = ((f > 0) ? -sqrt(h) : sqrt(h)); /* diff */
3255              e[i - 1] = scale * g;
3256              h -= f * g;
3257              a[l - 1][i - 1] = f - g;
3258              f = 0.0;
3259              for (j = 1; j <= l; j++)
3260                {
3261                  a[i - 1][j - 1] = a[j - 1][i - 1] / h;
3262                  g = 0.0;
3263                  for (k = 1; k <= j; k++)
3264                    g += a[k - 1][j - 1] * a[k - 1][i - 1];
3265                  for (k = j + 1; k <= l; k++)
3266                    g += a[j - 1][k - 1] * a[k - 1][i - 1];
3267                  e[j - 1] = g / h;
3268                  f += e[j - 1] * a[j - 1][i - 1];
3269                }
3270              hh = f / (h + h);
3271              for (j = 1; j <= l; j++)
3272                {
3273                  f = a[j - 1][i - 1];
3274                  g = e[j - 1] - hh * f;
3275                  e[j - 1] = g;
3276                  for (k = 1; k <= j; k++)
3277                    a[k - 1][j - 1] -= (f * e[k - 1] + g * a[k - 1][i - 1]);
3278                }
3279            }
3280        } 
3281      else
3282        e[i - 1] = a[l - 1][i - 1];
3283      d[i - 1] = h;
3284    }
3285  d[0] = 0.0;
3286  e[0] = 0.0;
3287 
3288  for (i = 1; i <= n; i++)
3289    {
3290      l = i - 1;
3291      if (d[i - 1] != 0.0)
3292        {
3293          for (j = 1; j <= l; j++)
3294            {
3295                g = 0.0;
3296                for (k = 1; k <= l; k++)
3297                  g += a[k - 1][i - 1] * a[j - 1][k - 1];
3298                for(k = 1; k <= l; k++)
3299                  a[j - 1][k - 1] -= g * a[i - 1][k - 1];
3300            }
3301        }
3302      d[i - 1] = a[i - 1][i - 1];
3303      a[i - 1][i - 1] = 1.0;
3304      for (j = 1; j <= l; j++)
3305        a[i - 1][j - 1] = a[j - 1][i - 1] = 0.0;
3306    }
3307 
3308 
3309}
3310/*#define MYSIGN(a,b) ((b)<0 ? -fabs(a) : fabs(a))*/
3311
3312static int mytqli(double *d, double *e, const int n, double **z)
3313{
3314  int     m, l, iter, i, k;
3315  double  s, r, p, g, f, dd, c, b;
3316   
3317  for (i = 2; i <= n; i++)
3318    e[i - 2] = e[i - 1];
3319
3320  e[n - 1] = 0.0;
3321
3322  for (l = 1; l <= n; l++)
3323    {
3324      iter = 0;
3325      do
3326        {
3327          for (m = l; m <= n - 1; m++)
3328            {
3329              dd = fabs(d[m - 1]) + fabs(d[m]);
3330              if (fabs(e[m - 1]) + dd == dd)
3331                break;
3332            }
3333
3334          if (m != l)
3335           {
3336             assert(iter < 30);
3337             
3338             g = (d[l] - d[l - 1]) / (2.0 * e[l - 1]);
3339             r = sqrt((g * g) + 1.0);
3340             g = d[m - 1] - d[l - 1] + e[l - 1] / (g + ((g < 0)?-fabs(r):fabs(r)));/*MYSIGN(r, g));*/
3341             s = c = 1.0;
3342             p = 0.0;
3343
3344             for (i = m - 1; i >= l; i--)
3345               {
3346                 f = s * e[i - 1];
3347                 b = c * e[i - 1];
3348                 if (fabs(f) >= fabs(g))
3349                   {
3350                     c = g / f;
3351                     r = sqrt((c * c) + 1.0);
3352                     e[i] = f * r;
3353                     c *= (s = 1.0 / r);
3354                   } 
3355                 else
3356                   {
3357                     s = f / g;
3358                     r = sqrt((s * s) + 1.0);
3359                     e[i] = g * r;
3360                     s *= (c = 1.0 / r);
3361                   }
3362                 g = d[i] - p;
3363                 r = (d[i - 1] - g) * s + 2.0 * c * b;
3364                 p = s * r;
3365                 d[i] = g + p;
3366                 g = c * r - b;
3367                 for (k = 1; k <= n; k++)
3368                   {
3369                     f = z[i][k-1];
3370                     z[i][k-1] = s * z[i - 1][k - 1] + c * f;
3371                     z[i - 1][k - 1] = c * z[i - 1][k - 1] - s * f;
3372                   }
3373               }
3374
3375             d[l - 1] = d[l - 1] - p;
3376             e[l - 1] = g;
3377             e[m - 1] = 0.0;
3378           }
3379        } 
3380      while (m != l);
3381    }
3382
3383   
3384 
3385    return (1);
3386 }
3387
3388
3389static void makeEigen(double **_a, const int n, double *d, double *e)
3390{
3391  mytred2(_a, n, d, e);
3392  mytqli(d, e, n, _a);
3393}
3394
3395static void initGeneric(const int n, const unsigned int *valueVector, int valueVectorLength,
3396                        double *fracchanges,
3397                        double *ext_EIGN,
3398                        double *EV,
3399                        double *EI,
3400                        double *frequencies,
3401                        double *ext_initialRates,
3402                        double *tipVector,
3403                        int model)
3404{
3405  double 
3406    **r, 
3407    **a, 
3408    **EIGV,
3409    *initialRates = ext_initialRates, 
3410    *f, 
3411    *e, 
3412    *d, 
3413    *invfreq, 
3414    *EIGN,
3415    *eptr; 
3416 
3417  int 
3418    i, 
3419    j, 
3420    k, 
3421    m, 
3422    l; 
3423
3424  r    = (double **)rax_malloc(n * sizeof(double *));
3425  EIGV = (double **)rax_malloc(n * sizeof(double *)); 
3426  a    = (double **)rax_malloc(n * sizeof(double *));     
3427 
3428  for(i = 0; i < n; i++)
3429    {
3430      a[i]    = (double*)rax_malloc(n * sizeof(double));
3431      EIGV[i] = (double*)rax_malloc(n * sizeof(double));
3432      r[i]    = (double*)rax_malloc(n * sizeof(double));
3433    }
3434
3435  f       = (double*)rax_malloc(n * sizeof(double));
3436  e       = (double*)rax_malloc(n * sizeof(double));
3437  d       = (double*)rax_malloc(n * sizeof(double));
3438  invfreq = (double*)rax_malloc(n * sizeof(double));
3439  EIGN    = (double*)rax_malloc(n * sizeof(double));
3440
3441 
3442  for(l = 0; l < n; l++)                 
3443    f[l] = frequencies[l];     
3444  /*assert(initialRates[numRates - 1] == 1.0);  */
3445 
3446  i = 0;
3447 
3448  for(j = 0; j < n; j++)         
3449    for(k = 0; k < n; k++)
3450      r[j][k] = 0.0;
3451 
3452  for(j = 0; j < n - 1; j++)
3453    for (k = j+1; k < n; k++)             
3454      r[j][k] = initialRates[i++];         
3455 
3456  for (j = 0; j < n; j++) 
3457    {
3458      r[j][j] = 0.0;
3459      for (k = 0; k < j; k++)
3460        r[j][k] = r[k][j];
3461    }                         
3462 
3463  fracchanges[model] = 0.0;         
3464 
3465  for (j = 0; j< n; j++)
3466    for (k = 0; k< n; k++)
3467      fracchanges[model] += f[j] * r[j][k] * f[k];             
3468 
3469  m = 0;
3470 
3471  for(i=0; i< n; i++) 
3472    a[i][i] = 0;
3473 
3474  /*assert(r[n - 2][n - 1] == 1.0);*/
3475 
3476  for(i=0; i < n; i++) 
3477    {
3478      for(j=i+1;  j < n; j++) 
3479        {
3480          double factor =  initialRates[m++];
3481          a[i][j] = a[j][i] = factor * sqrt( f[i] * f[j]);
3482          a[i][i] -= factor * f[j];
3483          a[j][j] -= factor * f[i];
3484        }
3485    }                           
3486
3487  makeEigen(a, n, d, e);                           
3488
3489  for(i=0; i<n; i++)     
3490    for(j=0; j<n; j++)       
3491      a[i][j] *= sqrt(f[j]);
3492 
3493  for (i=0; i<n; i++)
3494    {     
3495      if (d[i] > -1e-8) 
3496        {             
3497          if (i != 0) 
3498            {               
3499              double tmp = d[i], sum=0;
3500              d[i] = d[0];
3501              d[0] = tmp;
3502              for (j=0; j < n; j++) 
3503                {
3504                  tmp = a[i][j];
3505                  a[i][j] = a[0][j];
3506                  sum += (a[0][j] = tmp);
3507                }
3508              for (j=0; j < n; j++) 
3509                a[0][j] /= sum;
3510            }
3511          break;
3512        }
3513    }
3514 
3515  for (i=0; i< n; i++) 
3516    {
3517      EIGN[i] = -d[i];
3518     
3519      for (j=0; j<n; j++)
3520        EIGV[i][j] = a[j][i];
3521      invfreq[i] = 1 / EIGV[i][0]; 
3522    }                                   
3523 
3524  for(l = 1; l < n; l++)
3525    {
3526      ext_EIGN[(l - 1)] = EIGN[l]; 
3527      assert( ext_EIGN[(l - 1)] > 0.0);
3528    }
3529 
3530  eptr = EV;
3531 
3532  for(i = 0; i < n; i++)                 
3533    for(j = 0; j < n; j++)
3534      {
3535        *eptr++ = EIGV[i][j];                               
3536
3537      }
3538 
3539  for(i = 0; i < n; i++)
3540    for(j = 1; j < n; j++)
3541      EI[i * (n - 1) + (j - 1)] = EV[i * n + j] * invfreq[i]; 
3542 
3543  for(i=0; i < valueVectorLength; i++)
3544    {
3545      unsigned int value = valueVector[i];
3546     
3547      for(j = 0; j < n; j++)
3548        tipVector[i * n + j]     = 0;               
3549
3550      if(value > 0)
3551        {                     
3552          for (j = 0; j < n; j++) 
3553            {       
3554              if ((value >> j) & 1) 
3555                {
3556                  int l;
3557                  for(l = 0; l < n; l++)
3558                    tipVector[i * n + l] += EIGV[j][l];                                                               
3559                }                         
3560            }       
3561        }     
3562    }
3563
3564  for(i = 0; i < valueVectorLength; i++)
3565    {
3566       for(j = 0; j < n; j++)
3567         if(tipVector[i * n + j] > MAX_TIP_EV)
3568           tipVector[i * n + j] = MAX_TIP_EV;
3569    }
3570
3571
3572 
3573
3574  for(i = 0; i < n; i++)
3575    {
3576      rax_free(EIGV[i]);
3577      rax_free(a[i]);
3578      rax_free(r[i]);
3579    }
3580
3581  rax_free(r);
3582  rax_free(a);
3583  rax_free(EIGV);
3584
3585  rax_free(f);
3586  rax_free(e);
3587  rax_free(d);
3588  rax_free(invfreq);
3589  rax_free(EIGN);
3590}
3591
3592
3593
3594
3595void initReversibleGTR(tree *tr, int model)
3596{ 
3597 double   
3598   *fracchanges      = tr->fracchanges,   
3599   *ext_EIGN         = tr->partitionData[model].EIGN,
3600   *EV               = tr->partitionData[model].EV,
3601   *EI               = tr->partitionData[model].EI,
3602   *frequencies      = tr->partitionData[model].frequencies,
3603   *ext_initialRates = tr->partitionData[model].substRates,
3604   *tipVector        = tr->partitionData[model].tipVector;
3605
3606
3607 
3608 int states = tr->partitionData[model].states;
3609
3610 switch(tr->partitionData[model].dataType)
3611   { 
3612   case GENERIC_32:
3613   case GENERIC_64:
3614   case SECONDARY_DATA_6:
3615   case SECONDARY_DATA_7: 
3616   case SECONDARY_DATA:
3617   case DNA_DATA:
3618   case BINARY_DATA:
3619     initGeneric(states, 
3620                 getBitVector(tr->partitionData[model].dataType), 
3621                 getUndetermined(tr->partitionData[model].dataType) + 1, 
3622                 fracchanges,
3623                 ext_EIGN, 
3624                 EV, 
3625                 EI, 
3626                 frequencies, 
3627                 ext_initialRates,
3628                 tipVector, 
3629                 model);
3630     break;   
3631   case AA_DATA:
3632     if(!((tr->partitionData[model].protModels == GTR) || (tr->partitionData[model].protModels == GTR_UNLINKED)))
3633       {
3634         double 
3635           f[20];
3636         
3637         int 
3638           l;
3639       
3640         if(tr->partitionData[model].protModels == LG4 || tr->partitionData[model].protModels == LG4X)
3641           {
3642             int 
3643               i;
3644           
3645             for(i = 0; i < 4; i++)
3646               {       
3647                 initProtMat(f, tr->partitionData[model].protModels, &(tr->partitionData[model].substRates_LG4[i][0]), model, tr, i);
3648                 
3649                 if(tr->partitionData[model].usePredefinedProtFreqs == TRUE)                     
3650                   for(l = 0; l < 20; l++)             
3651                     tr->partitionData[model].frequencies_LG4[i][l] = f[l];
3652                 else
3653                   memcpy(tr->partitionData[model].frequencies_LG4[i], frequencies, 20 * sizeof(double));
3654               }
3655           }
3656         else
3657           {
3658             if(tr->partitionData[model].protModels == AUTO)
3659               {
3660                 //printf("init prot mat %s partition %d\n", protModels[tr->partitionData[model].autoProtModels], model);
3661                 initProtMat(f, tr->partitionData[model].autoProtModels, ext_initialRates, model, tr, 0);
3662               }
3663             else
3664               initProtMat(f, tr->partitionData[model].protModels, ext_initialRates, model, tr, 0);
3665             
3666             if(tr->partitionData[model].protModels == PROT_FILE)
3667               assert(tr->partitionData[model].usePredefinedProtFreqs == TRUE); 
3668             
3669             if(tr->partitionData[model].usePredefinedProtFreqs == TRUE)                         
3670               for(l = 0; l < 20; l++)         
3671                 frequencies[l] = f[l];
3672           }               
3673       } 
3674     else         
3675       assert(tr->partitionData[model].usePredefinedProtFreqs == FALSE);
3676
3677     if(tr->partitionData[model].protModels == LG4 || tr->partitionData[model].protModels == LG4X)
3678       {
3679         int 
3680           i;
3681
3682         double 
3683           *fracchanges_LG4[4],
3684           acc = 0.0;
3685
3686         /* TODO frac change !*/
3687
3688         for(i = 0; i < 4; i++)
3689           {
3690             fracchanges_LG4[i]  = (double *)rax_malloc(tr->NumberOfModels * sizeof(double));
3691             initGeneric(states, bitVectorAA, 23, fracchanges_LG4[i],
3692                         tr->partitionData[model].EIGN_LG4[i],  tr->partitionData[model].EV_LG4[i],  tr->partitionData[model].EI_LG4[i], tr->partitionData[model].frequencies_LG4[i], tr->partitionData[model].substRates_LG4[i],
3693                         tr->partitionData[model].tipVector_LG4[i], 
3694                         model);   
3695           }
3696
3697         for(i = 0; i < 4; i++)
3698           {       
3699             acc += fracchanges_LG4[i][model];
3700             rax_free(fracchanges_LG4[i]);
3701           }
3702
3703         tr->fracchanges[model] = acc / 4;
3704       }
3705     else
3706       initGeneric(states, bitVectorAA, 23, fracchanges,
3707                   ext_EIGN, EV, EI, frequencies, ext_initialRates,
3708                   tipVector, 
3709                   model);                   
3710     break; 
3711   default:
3712     assert(0);
3713   } 
3714 
3715 
3716 updateFracChange(tr);   
3717}
3718
3719
3720double LnGamma (double alpha)
3721{
3722/* returns ln(gamma(alpha)) for alpha>0, accurate to 10 decimal places. 
3723   Stirling's formula is used for the central polynomial part of the procedure.
3724   Pike MC & Hill ID (1966) Algorithm 291: Logarithm of the gamma function.
3725   Communications of the Association for Computing Machinery, 9:684
3726*/
3727  double x, f, z, result;
3728
3729  x = alpha;
3730  f = 0.0;
3731 
3732  if ( x < 7.0) 
3733     {
3734       f = 1.0; 
3735       z = alpha - 1.0;
3736     
3737       while ((z = z + 1.0) < 7.0) 
3738         {       
3739           f *= z;
3740         }
3741       x = z;   
3742     
3743       assert(f != 0.0);
3744       
3745       f=-log(f);
3746     }
3747   
3748   z = 1/(x*x);
3749   
3750   result = f + (x-0.5)*log(x) - x + .918938533204673 
3751          + (((-.000595238095238*z+.000793650793651)*z-.002777777777778)*z
3752               +.083333333333333)/x; 
3753
3754   return result;
3755}
3756
3757
3758
3759double IncompleteGamma (double x, double alpha, double ln_gamma_alpha)
3760{
3761/* returns the incomplete gamma ratio I(x,alpha) where x is the upper
3762           limit of the integration and alpha is the shape parameter.
3763   returns (-1) if in error
3764   ln_gamma_alpha = ln(Gamma(alpha)), is almost redundant.
3765   (1) series expansion     if (alpha>x || x<=1)
3766   (2) continued fraction   otherwise
3767   RATNEST FORTRAN by
3768   Bhattacharjee GP (1970) The incomplete gamma integral.  Applied Statistics,
3769   19: 285-287 (AS32)
3770*/
3771   int i;
3772   double p=alpha, g=ln_gamma_alpha;
3773   double accurate=1e-8, overflow=1e30;
3774   double factor, gin=0, rn=0, a=0,b=0,an=0,dif=0, term=0, pn[6];
3775
3776
3777   if (x==0) return (0);
3778   if (x<0 || p<=0) return (-1);
3779
3780   
3781   factor=exp(p*log(x)-x-g);   
3782   if (x>1 && x>=p) goto l30;
3783   /* (1) series expansion */
3784   gin=1;  term=1;  rn=p;
3785 l20:
3786   rn++;
3787   term*=x/rn;   gin+=term;
3788
3789   if (term > accurate) goto l20;
3790   gin*=factor/p;
3791   goto l50;
3792 l30: 
3793   /* (2) continued fraction */
3794   a=1-p;   b=a+x+1;  term=0;
3795   pn[0]=1;  pn[1]=x;  pn[2]=x+1;  pn[3]=x*b;
3796   gin=pn[2]/pn[3];   
3797 l32: 
3798   a++; 
3799   b+=2; 
3800   term++;   
3801   an=a*term;
3802   for (i=0; i<2; i++) 
3803     pn[i+4]=b*pn[i+2]-an*pn[i];
3804   if (pn[5] == 0) goto l35;
3805   rn=pn[4]/pn[5];   
3806   dif=fabs(gin-rn); 
3807   if (dif>accurate) goto l34;
3808   if (dif<=accurate*rn) goto l42;
3809 l34:   
3810   gin=rn;
3811 l35: 
3812   for (i=0; i<4; i++) 
3813     pn[i]=pn[i+2];
3814   if (fabs(pn[4]) < overflow)           
3815     goto l32;       
3816   
3817   for (i=0; i<4; i++) 
3818     pn[i]/=overflow;
3819
3820   
3821   goto l32;
3822 l42: 
3823   gin=1-factor*gin;
3824
3825 l50: 
3826   return (gin);
3827}
3828
3829
3830
3831
3832double PointNormal (double prob)
3833{
3834/* returns z so that Prob{x<z}=prob where x ~ N(0,1) and (1e-12)<prob<1-(1e-12)
3835   returns (-9999) if in error
3836   Odeh RE & Evans JO (1974) The percentage points of the normal distribution.
3837   Applied Statistics 22: 96-97 (AS70)
3838
3839   Newer methods:
3840     Wichura MJ (1988) Algorithm AS 241: the percentage points of the
3841       normal distribution.  37: 477-484.
3842     Beasley JD & Springer SG  (1977).  Algorithm AS 111: the percentage
3843       points of the normal distribution.  26: 118-121.
3844
3845*/
3846   double a0=-.322232431088, a1=-1, a2=-.342242088547, a3=-.0204231210245;
3847   double a4=-.453642210148e-4, b0=.0993484626060, b1=.588581570495;
3848   double b2=.531103462366, b3=.103537752850, b4=.0038560700634;
3849   double y, z=0, p=prob, p1;
3850
3851   p1 = (p<0.5 ? p : 1-p);
3852   if (p1<1e-20) return (-9999);
3853
3854   y = sqrt (log(1/(p1*p1)));   
3855   z = y + ((((y*a4+a3)*y+a2)*y+a1)*y+a0) / ((((y*b4+b3)*y+b2)*y+b1)*y+b0);
3856   return (p<0.5 ? -z : z);
3857}
3858
3859
3860double PointChi2 (double prob, double v)
3861{
3862/* returns z so that Prob{x<z}=prob where x is Chi2 distributed with df=v
3863   returns -1 if in error.   0.000002<prob<0.999998
3864   RATNEST FORTRAN by
3865       Best DJ & Roberts DE (1975) The percentage points of the
3866       Chi2 distribution.  Applied Statistics 24: 385-388.  (AS91)
3867   Converted into C by Ziheng Yang, Oct. 1993.
3868*/
3869   double e=.5e-6, aa=.6931471805, p=prob, g;
3870   double xx, c, ch, a=0,q=0,p1=0,p2=0,t=0,x=0,b=0,s1,s2,s3,s4,s5,s6;
3871 
3872   if (p<.000002 || p>.999998 || v<=0) return (-1);
3873 
3874   g = LnGamma(v/2);
3875   
3876   xx=v/2;   c=xx-1;
3877   if (v >= -1.24*log(p)) goto l1;
3878
3879   ch=pow((p*xx*exp(g+xx*aa)), 1/xx);
3880   if (ch-e<0) return (ch);
3881   goto l4;
3882l1:
3883   if (v>.32) goto l3;
3884   ch=0.4;   a=log(1-p);
3885l2:
3886   q=ch;  p1=1+ch*(4.67+ch);  p2=ch*(6.73+ch*(6.66+ch));
3887   t=-0.5+(4.67+2*ch)/p1 - (6.73+ch*(13.32+3*ch))/p2;
3888   ch-=(1-exp(a+g+.5*ch+c*aa)*p2/p1)/t;
3889   if (fabs(q/ch-1)-.01 <= 0) goto l4;
3890   else                       goto l2;
3891 
3892l3:   
3893   x=PointNormal (p);
3894   p1=0.222222/v;   ch=v*pow((x*sqrt(p1)+1-p1), 3.0);
3895   if (ch>2.2*v+6)  ch=-2*(log(1-p)-c*log(.5*ch)+g);
3896l4:
3897   q=ch;   p1=.5*ch;   
3898   if ((t=IncompleteGamma (p1, xx, g))< 0.0) 
3899     {
3900       printf ("IncompleteGamma \n");     
3901       return (-1);
3902     }
3903 
3904   p2=p-t;
3905   t=p2*exp(xx*aa+g+p1-c*log(ch));   
3906   b=t/ch;  a=0.5*t-b*c;
3907
3908   s1=(210+a*(140+a*(105+a*(84+a*(70+60*a))))) / 420;
3909   s2=(420+a*(735+a*(966+a*(1141+1278*a))))/2520;
3910   s3=(210+a*(462+a*(707+932*a)))/2520;
3911   s4=(252+a*(672+1182*a)+c*(294+a*(889+1740*a)))/5040;
3912   s5=(84+264*a+c*(175+606*a))/2520;
3913   s6=(120+c*(346+127*c))/5040;
3914   ch+=t*(1+0.5*t*s1-b*c*(s1-b*(s2-b*(s3-b*(s4-b*(s5-b*s6))))));
3915   if (fabs(q/ch-1) > e) goto l4;
3916
3917   return (ch);
3918}
3919
3920
3921
3922
3923
3924
3925void makeGammaCats(double alpha, double *gammaRates, int K, boolean useMedian)
3926{
3927  int 
3928    i;
3929
3930  double 
3931    factor = alpha / alpha * K, 
3932    lnga1, 
3933    alfa = alpha, 
3934    beta = alpha,
3935    *gammaProbs = (double *)rax_malloc(K * sizeof(double));
3936
3937  /* Note that ALPHA_MIN setting is somewhat critical due to   */
3938  /* numerical instability caused by very small rate[0] values */
3939  /* induced by low alpha values around 0.01 */
3940
3941  assert(alfa >= ALPHA_MIN); 
3942
3943  if(useMedian)
3944    {
3945      double 
3946        middle = 1.0 / (2.0*K),
3947        t = 0.0; 
3948     
3949      for(i = 0; i < K; i++)     
3950        gammaRates[i] = PointGamma((double)(i * 2 + 1) * middle, alfa, beta);
3951     
3952      for (i = 0; i < K; i++) 
3953        t += gammaRates[i];
3954       for( i = 0; i < K; i++)     
3955         gammaRates[i] *= factor / t;
3956    }
3957  else
3958    {
3959      lnga1 = LnGamma(alfa + 1);
3960
3961      for (i = 0; i < K - 1; i++)
3962        gammaProbs[i] = PointGamma((i + 1.0) / K, alfa, beta);
3963
3964      for (i = 0; i < K - 1; i++)
3965        gammaProbs[i] = IncompleteGamma(gammaProbs[i] * beta, alfa + 1, lnga1);   
3966
3967      gammaRates[0] = gammaProbs[0] * factor;
3968     
3969      gammaRates[K - 1] = (1 - gammaProbs[K - 2]) * factor;
3970
3971      for (i= 1; i < K - 1; i++) 
3972        gammaRates[i] = (gammaProbs[i] - gammaProbs[i - 1]) * factor;     
3973    }
3974  /* assert(gammaRates[0] >= 0.00000000000000000000000000000044136090435925743185910935350715027016962154188875); */
3975
3976  rax_free(gammaProbs);
3977
3978  return; 
3979}
3980
3981static void genericInvariant(tree *tr, int lower, int upper, const unsigned int *bitVector, 
3982                             unsigned int undetermined, int states, int *numberOfInvariableColumns, int *weightOfInvariableColumns)
3983{
3984  int
3985    count = 0,
3986    sum  = 0,
3987    i,
3988    j;
3989
3990  for(i = lower; i < upper; i++)             
3991    {           
3992      unsigned int 
3993        encoding = 0, 
3994        code;
3995      int 
3996        secSum = 0,
3997        position = -1;         
3998
3999      for(j = 1; j <= tr->mxtips; j++)
4000        {
4001          code = bitVector[tr->yVector[j][i]];
4002          if(code != undetermined)
4003            {
4004              if(!(code & encoding))           
4005                encoding = encoding | code;
4006              else
4007                encoding = encoding | (encoding & code);             
4008            }
4009        }
4010
4011      for(j = 0; j < states; j++)
4012        {
4013          if(encoding >> j & 1)
4014            {
4015              secSum++;
4016              position = j;               
4017            }
4018        }
4019
4020      if(secSum == 1)
4021        {
4022          assert(position >= 0);
4023          tr->invariant[i] = position;
4024          count = count + 1;
4025          sum = sum + tr->cdta->aliaswgt[i];
4026        }
4027      else
4028        tr->invariant[i] = states;
4029    }
4030
4031  *numberOfInvariableColumns += count;
4032  *weightOfInvariableColumns += sum;
4033}
4034
4035static void setRates(double *r, int rates)
4036{
4037  int i;
4038
4039  for(i = 0; i < rates - 1; i++)
4040    r[i] = 0.5;
4041  r[rates - 1] = 1.0;
4042}
4043
4044void initRateMatrix(tree *tr)
4045{
4046  int model;
4047
4048  for(model = 0; model < tr->NumberOfModels; model++)
4049    {   
4050      int       
4051        i,
4052        states = tr->partitionData[model].states,
4053        rates  = (states * states - states) / 2;
4054     
4055      switch(tr->partitionData[model].dataType)
4056        {
4057        case BINARY_DATA:
4058        case DNA_DATA:
4059        case SECONDARY_DATA:
4060        case SECONDARY_DATA_6:
4061        case SECONDARY_DATA_7:
4062          setRates(tr->partitionData[model].substRates, rates);
4063          break;         
4064        case GENERIC_32:
4065        case GENERIC_64:         
4066          switch(tr->multiStateModel)
4067            {
4068            case ORDERED_MULTI_STATE:
4069              {
4070                int 
4071                  j, 
4072                  k, 
4073                  i = 0;
4074               
4075                for(j = 0; j < states; j++)
4076                  for(k = j + 1; k < states; k++)
4077                    tr->partitionData[model].substRates[i++] = (double)(k - j);                 
4078                assert(i == rates);             
4079              }
4080              break;
4081            case MK_MULTI_STATE:
4082              for(i = 0; i < rates; i++)
4083                tr->partitionData[model].substRates[i] = 1.0;
4084             
4085              break;
4086            case GTR_MULTI_STATE:
4087              setRates(tr->partitionData[model].substRates, rates);
4088              break;
4089            default:
4090              assert(0);
4091            }
4092          break;
4093        case AA_DATA:
4094          if(tr->partitionData[model].protModels == GTR || tr->partitionData[model].protModels == GTR_UNLINKED)       
4095            putWAG(tr->partitionData[model].substRates);
4096          break;
4097        default:
4098          assert(0);
4099        }           
4100     
4101      if(tr->partitionData[model].nonGTR)
4102        {
4103          assert(tr->partitionData[model].dataType == SECONDARY_DATA || 
4104                 tr->partitionData[model].dataType == SECONDARY_DATA_6 ||
4105                 tr->partitionData[model].dataType == SECONDARY_DATA_7);
4106                 
4107          for(i = 0; i < rates; i++)
4108            {
4109              if(tr->partitionData[model].symmetryVector[i] == -1)
4110                tr->partitionData[model].substRates[i] = 0.0;
4111              else
4112                {
4113                  if(tr->partitionData[model].symmetryVector[i] == tr->partitionData[model].symmetryVector[rates - 1])
4114                    tr->partitionData[model].substRates[i] = 1.0;
4115                }
4116            }
4117        }
4118    } 
4119}
4120
4121static void setSymmetry(int *s, int *sDest, const int sCount, int *f, int *fDest, const int fCount)
4122{
4123  int i;
4124
4125  for(i = 0; i < sCount; i++)
4126    sDest[i] = s[i];
4127
4128  for(i = 0; i < fCount; i++)
4129    fDest[i] = f[i];
4130}
4131
4132static void setupSecondaryStructureSymmetries(tree *tr)
4133{
4134  int model;
4135
4136  for(model = 0; model < tr->NumberOfModels; model++)
4137    {
4138      if(tr->partitionData[model].dataType == SECONDARY_DATA || 
4139         tr->partitionData[model].dataType == SECONDARY_DATA_6 || 
4140         tr->partitionData[model].dataType == SECONDARY_DATA_7)
4141        {       
4142          switch(tr->secondaryStructureModel)
4143            {
4144            case SEC_6_A:
4145              tr->partitionData[model].nonGTR = FALSE;
4146              break;
4147            case SEC_6_B:
4148              {
4149                int f[6]  = {0, 1, 2, 3, 4, 5};
4150                int s[15] = {2, 0, 1, 2, 2, 2, 2, 0, 1, 1, 2, 2, 2, 2, 1};
4151
4152                setSymmetry(s, tr->partitionData[model].symmetryVector, 15, f, tr->partitionData[model].frequencyGrouping, 6);
4153                 
4154                tr->partitionData[model].nonGTR = TRUE;
4155              }
4156              break;
4157            case SEC_6_C:
4158              {
4159                int f[6]  = {0, 2, 2, 1, 0, 1};
4160                int s[15] = {2, 0, 1, 2, 2, 2, 2, 0, 1, 1, 2, 2, 2, 2, 1};
4161
4162                setSymmetry(s, tr->partitionData[model].symmetryVector, 15, f, tr->partitionData[model].frequencyGrouping, 6);
4163               
4164                tr->partitionData[model].nonGTR = TRUE;
4165              }
4166              break;
4167            case SEC_6_D:
4168              {
4169                int f[6]  = {0, 2, 2, 1, 0, 1};
4170                int s[15] = {2, -1, 1, 2, 2, 2, 2, -1, 1, 1, 2, 2, 2, 2, 1};
4171
4172                setSymmetry(s, tr->partitionData[model].symmetryVector, 15, f, tr->partitionData[model].frequencyGrouping, 6);
4173
4174                tr->partitionData[model].nonGTR = TRUE;
4175              }
4176              break;
4177            case SEC_6_E:
4178              {
4179                int f[6]  = {0, 1, 2, 3, 4, 5};
4180                int s[15] = {2, -1, 1, 2, 2, 2, 2, -1, 1, 1, 2, 2, 2, 2, 1};
4181
4182                setSymmetry(s, tr->partitionData[model].symmetryVector, 15, f, tr->partitionData[model].frequencyGrouping, 6);
4183
4184                tr->partitionData[model].nonGTR = TRUE;
4185              }
4186              break;
4187            case SEC_7_A:
4188              tr->partitionData[model].nonGTR = FALSE;
4189              break;
4190            case SEC_7_B:
4191              {
4192                int f[7]  = {0, 2, 2, 1, 0, 1, 3};
4193                int s[21] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
4194               
4195                setSymmetry(s, tr->partitionData[model].symmetryVector, 21, f, tr->partitionData[model].frequencyGrouping, 7);
4196
4197                tr->partitionData[model].nonGTR = TRUE;
4198
4199              }
4200              break;
4201            case SEC_7_C:
4202              {
4203                int f[7]  = {0, 1, 2, 3, 4, 5, 6};
4204                int s[21] = {-1, -1, 0, -1, -1, 4, -1, -1, -1, 3, 5, 1, -1, -1, 6, -1, -1, 7, 2, 8, 9};
4205               
4206                setSymmetry(s, tr->partitionData[model].symmetryVector, 21, f, tr->partitionData[model].frequencyGrouping, 7);
4207
4208                tr->partitionData[model].nonGTR = TRUE;
4209
4210              }
4211              break;
4212            case SEC_7_D:
4213              {
4214                int f[7]  = {0, 1, 2, 3, 4, 5, 6};
4215                int s[21] = {2, 0, 1, 2, 2, 3, 2, 2, 0, 1, 3, 1, 2, 2, 3, 2, 2, 3, 1, 3, 3};
4216               
4217                setSymmetry(s, tr->partitionData[model].symmetryVector, 21, f, tr->partitionData[model].frequencyGrouping, 7);
4218
4219                tr->partitionData[model].nonGTR = TRUE;
4220
4221              }
4222              break;
4223            case SEC_7_E:
4224              {
4225                int f[7]  = {0, 1, 2, 3, 4, 5, 6};
4226                int s[21] = {-1, -1, 0, -1, -1, 1, -1, -1, -1, 0, 1, 0, -1, -1, 1, -1, -1, 1, 0, 1, 1};
4227               
4228                setSymmetry(s, tr->partitionData[model].symmetryVector, 21, f, tr->partitionData[model].frequencyGrouping, 7);
4229
4230                tr->partitionData[model].nonGTR = TRUE;
4231
4232              }
4233              break;
4234            case SEC_7_F:
4235              {
4236                int f[7]  = {0, 2, 2, 1, 0, 1, 3};
4237                int s[21] = {2, 0, 1, 2, 2, 3, 2, 2, 0, 1, 3, 1, 2, 2, 3, 2, 2, 3, 1, 3, 3};           
4238               
4239                setSymmetry(s, tr->partitionData[model].symmetryVector, 21, f, tr->partitionData[model].frequencyGrouping, 7);
4240
4241                tr->partitionData[model].nonGTR = TRUE;
4242
4243              }
4244              break;
4245             
4246            case SEC_16:
4247              tr->partitionData[1].nonGTR = FALSE;
4248              break;
4249            case SEC_16_A:
4250              {
4251                int f[16]  = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
4252                int s[120] = {/* AA */  4,  4,  3,  4, -1, -1, -1,  4, -1, -1, -1,  3, -1, -1, -1,
4253                              /* AC */  4,  3, -1,  4, -1, -1, -1,  3, -1, -1, -1,  4, -1, -1,
4254                              /* AG */  3, -1, -1,  3, -1, -1, -1,  4, -1, -1, -1,  3, -1,
4255                              /* AU */ -1, -1,  2,  3, -1,  0, -1,  1,  2, -1,  2,  3,
4256                              /* CA */  4,  3,  4,  4, -1, -1, -1,  3, -1, -1, -1,
4257                              /* CC */  3,  4, -1,  3, -1, -1, -1,  4, -1, -1,
4258                              /* CG */  3, -1,  2,  3,  2,  0, -1,  1, -1,
4259                              /* CU */ -1, -1, -1,  3, -1, -1, -1,  4,
4260                              /* GA */  3,  4,  3,  3, -1, -1, -1,
4261                              /* GC */  3,  1,  2,  3,  2, -1,
4262                              /* GG */  3, -1, -1,  3, -1,
4263                              /* GU */  2, -1,  2,  3,
4264                              /* UA */  3,  1,  3,
4265                              /* UC */  3,  4,
4266                              /* UG */  3};
4267                             
4268               
4269                setSymmetry(s, tr->partitionData[model].symmetryVector, 120, f, tr->partitionData[model].frequencyGrouping, 16);
4270                             
4271                tr->partitionData[model].nonGTR = TRUE;
4272
4273                }
4274              break;
4275            case SEC_16_B:
4276              {
4277                int f[16]  = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
4278                int s[120] = {/* AA */  0,  0,  0,  0, -1, -1, -1,  0, -1, -1, -1,  0, -1, -1, -1,
4279                              /* AC */  0,  0, -1,  0, -1, -1, -1,  0, -1, -1, -1,  0, -1, -1,
4280                              /* AG */  0, -1, -1,  0, -1, -1, -1,  0, -1, -1, -1,  0, -1,
4281                              /* AU */ -1, -1,  0,  0, -1,  0, -1,  0,  0, -1,  0,  0,
4282                              /* CA */  0,  0,  0,  0, -1, -1, -1,  0, -1, -1, -1,
4283                              /* CC */  0,  0, -1,  0, -1, -1, -1,  0, -1, -1,
4284                              /* CG */  0, -1,  0,  0,  0,  0, -1,  0, -1,
4285                              /* CU */ -1, -1, -1,  0, -1, -1, -1,  0,
4286                              /* GA */  0,  0,  0,  0, -1, -1, -1,
4287                              /* GC */  0,  0,  0,  0,  0, -1,
4288                              /* GG */  0, -1, -1,  0, -1,
4289                              /* GU */  0, -1,  0,  0,
4290                              /* UA */  0,  0,  0,
4291                              /* UC */  0,  0,
4292                              /* UG */  0};
4293                             
4294               
4295                setSymmetry(s, tr->partitionData[model].symmetryVector, 120, f, tr->partitionData[model].frequencyGrouping, 16);
4296                             
4297                tr->partitionData[model].nonGTR = TRUE;
4298              }
4299              break;
4300            case SEC_16_C:           
4301            case SEC_16_D:
4302            case SEC_16_E:
4303            case SEC_16_F:
4304            case SEC_16_I:
4305            case SEC_16_J:
4306            case SEC_16_K:
4307              assert(0);
4308            default:
4309              assert(0);
4310            }
4311        }
4312
4313    }
4314
4315}
4316
4317void initModel(tree *tr, rawdata *rdta, cruncheddata *cdta, analdef *adef)
4318{ 
4319  int 
4320    model, 
4321    j;
4322 
4323  double 
4324    temp; 
4325     
4326  optimizeRateCategoryInvocations = 1;     
4327  tr->numberOfInvariableColumns = 0;
4328  tr->weightOfInvariableColumns = 0;     
4329
4330  for(model = 0; model < tr->NumberOfModels; model++)
4331    tr->partitionData[model].numberOfCategories = 1;
4332 
4333  for (j = 0; j < tr->cdta->endsite; j++) 
4334    {
4335      tr->cdta->patrat[j] = temp = 1.0;
4336      tr->cdta->patratStored[j] = 1.0;
4337      tr->cdta->rateCategory[j] = 0;           
4338    } 
4339
4340  for(model = 0; model < tr->NumberOfModels; model++)
4341    {           
4342      tr->partitionData[model].numberOfCategories = 1;           
4343      tr->partitionData[model].perSiteRates[0] = 1.0; 
4344      tr->partitionData[model].unscaled_perSiteRates[0] = 1.0;
4345    }
4346
4347  updatePerSiteRates(tr, FALSE);
4348 
4349  setupSecondaryStructureSymmetries(tr);
4350 
4351  for(model = 0; model < tr->NumberOfModels; model++)
4352    {               
4353      if(adef->useInvariant)
4354        {     
4355          size_t
4356            i;
4357         
4358          int 
4359            count = 0,
4360            total = 0,
4361            states = tr->partitionData[model].states;     
4362
4363
4364           genericInvariant(tr, tr->partitionData[model].lower, tr->partitionData[model].upper, 
4365                            getBitVector(tr->partitionData[model].dataType), 
4366                            getUndetermined(tr->partitionData[model].dataType), 
4367                            states, 
4368                            &(tr->numberOfInvariableColumns), 
4369                            &(tr->weightOfInvariableColumns));   
4370         
4371           for(i = tr->partitionData[model].lower; i < tr->partitionData[model].upper; i++)
4372             {
4373               if(tr->invariant[i] < states)           
4374                 count += tr->cdta->aliaswgt[i];             
4375               
4376               total += tr->cdta->aliaswgt[i];
4377             }
4378           
4379          tr->partitionData[model].propInvariant = ((double)count)/((double) total);     
4380        } 
4381    }
4382
4383  initRateMatrix(tr); 
4384
4385  baseFrequenciesGTR(rdta, cdta, tr); 
4386
4387  for(model = 0; model < tr->NumberOfModels; model++)
4388    {
4389      tr->partitionData[model].alpha = 1.0;               
4390      tr->partitionData[model].brLenScaler = 1.0;
4391
4392      if(tr->partitionData[model].protModels == AUTO)
4393        tr->partitionData[model].autoProtModels = WAG; /* initialize by WAG per default */
4394
4395      initReversibleGTR(tr, model);               
4396      makeGammaCats(tr->partitionData[model].alpha, tr->partitionData[model].gammaRates, 4, tr->useGammaMedian); 
4397
4398      for(j = 0; j < 4; j++)
4399        {
4400          tr->partitionData[model].weights[j] = 0.25;
4401          tr->partitionData[model].weightExponents[j] = 0.0;
4402        }
4403    }   
4404               
4405 
4406                       
4407  if(tr->NumberOfModels > 1)
4408    {
4409      tr->fracchange = 0;
4410      for(model = 0; model < tr->NumberOfModels; model++)       
4411        tr->fracchange += tr->fracchanges[model];
4412     
4413      tr->fracchange /= ((double)tr->NumberOfModels);
4414    }
4415
4416#ifdef _USE_PTHREADS
4417  masterBarrier(THREAD_COPY_INIT_MODEL, tr);   
4418#endif
4419}
4420
4421
4422
4423
Note: See TracBrowser for help on using the repository browser.