ГОСТ Р 56047—2014
for(k=0:k<bark:k++) {
Pthres = р(10.0. 0.4*0.364*p(fC[kyi000.0. -0.8)):
stest = (doubte)THRESFACO *Modtest[kj + SO:
sref = (double)THRESFACO’Modref[k] + SO:
if(lev.Eptest[k] == 0 && lev.Epreflk] == 0)
beta = 1.0:
else
if(lev.Epreflk) == 0)
beta = 0;
else
beta = exp<(double>-ALPHA*(lev.Eptest[kJ - lev.Epreflk])
/lev.Epreflk]);
rvum = stest’lev.Eptest[k] - srePlev.Epreflk];
denom = Pthres + srePlev.Epref]k]*beta:
if(num < 0)
niim= 0;
nl += p(Pthres/(EO*stesl), 0.23)‘(p(1.0 + num/denom. 0.23) -1.0):
}
nl ’= (doubJe)24.0/bark:
if(nl < 0)
nl = 0;
•nltmp += p(nl. 2.0);
return sqrt((double)*nltmp’n);
}
Файл: reldistframes.h
/* Function prototypes */
double reldistframes(double *. double \ double ". ini):
Г Prototypes end */
Файл: reldistframes.c
«include <stdlib.h>
«include <math.h>
«include <comnx>n.h>
«include <reldistframes.h>
extern int bark:
double
reldistframes(double ‘Pnoise. double ’M. double ’reldisttmp. intn)
{
int k:
for(k=0:k<bark:k++) {
if(10.0’log10{(double)Pnoise[kyMlk]) >= 1.5) {
‘reldisttmp = ‘reldisttmp + 1:
break;
}
}
return ((double)*reldisttmp/n);
}
Файл: spreading.h
«ifdefADVANCED
«define dz 0.5
«else
«define dz 0.25
«endif
84