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

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