97{
   98    
  100 
  101    
  103    integer minp2, ltau2, maxp2, i__;
 
  107 
  108
  109
  110
  111
  112
  113
  114
  115    
  116    --speech;
  117    --amdf;
  118    --tau;
  119 
  120    
  121    difmag_(&speech[1], lpita, &tau[1], ltau, &tau[*ltau], &amdf[1], minptr,
 
  122        maxptr);
  123    *mintau = tau[*minptr];
  124    minamd = (
integer)amdf[*minptr];
 
  125
  126
  127    ltau2 = 0;
  128    ptr = *minptr - 2;
  129
  130    i__1 = *mintau - 3;
  131
  132    i__3 = *mintau + 3, i__4 = tau[*ltau] - 1;
  133    i__2 = 
min(i__3,i__4);
 
  134    for (i__ = 
max(i__1,41); i__ <= i__2; ++i__) {
 
  135    while(tau[ptr] < i__) {
  136        ++ptr;
  137    }
  138    if (tau[ptr] != i__) {
  139        ++ltau2;
  140        tau2[ltau2 - 1] = i__;
  141    }
  142    }
  143
  144
  145    if (ltau2 > 0) {
  146    difmag_(&speech[1], lpita, tau2, <au2, &tau[*ltau], amdf2, &minp2, &
 
  147        maxp2);
  148    if (amdf2[minp2 - 1] < (
real) minamd) {
 
  149        *mintau = tau2[minp2 - 1];
  150        minamd = (
integer)amdf2[minp2 - 1];
 
  151    }
  152    }
  153
  154    if (*mintau >= 80) {
  155    i__ = *mintau / 2;
  156    if ((i__ & 1) == 0) {
  157        ltau2 = 2;
  158        tau2[0] = i__ - 1;
  159        tau2[1] = i__ + 1;
  160    } else {
  161        ltau2 = 1;
  162        tau2[0] = i__;
  163    }
  164    difmag_(&speech[1], lpita, tau2, <au2, &tau[*ltau], amdf2, &minp2, &
 
  165        maxp2);
  166    if (amdf2[minp2 - 1] < (
real) minamd) {
 
  167        *mintau = tau2[minp2 - 1];
  168        minamd = (
integer)amdf2[minp2 - 1];
 
  169        *minptr += -20;
  170    }
  171    }
  172
  173    amdf[*minptr] = (
real) minamd;
 
  174
  175
  176    i__2 = *minptr - 5;
  177    *maxptr = 
max(i__2,1);
 
  178
  179    i__1 = *minptr + 5;
  180    i__2 = 
min(i__1,*ltau);
 
  181    for (i__ = *maxptr + 1; i__ <= i__2; ++i__) {
  182    if (amdf[i__] > amdf[*maxptr]) {
  183        *maxptr = i__;
  184    }
  185    }
  186    return 0;
  187} 
int difmag_(real *speech, integer *lpita, integer *tau, integer *ltau, integer *maxlag, real *amdf, integer *minptr, integer *maxptr)