ГОСТ Р 56047—2014
/’ Function prototypes V
int spreading(double *, double *);
/* Prototypes end V
Файл: spreading.c
include <stdl*.h>
#indude <math.h>
include «common.h>
#indude <spreading.h>
extern double *fC;
extern int bark;
int
spreading(doub!e ’pp. double *e2)
{
int k, j, u;
double L;
double denom, sum1.sum2. Eline, Su. SI = 27.0;
for(k=0;k<bark;k++) {
sum1 = 0;
sum2 = 0;
// Eline
for(j=0;j<bark;j++) {
L = 10.0’log 10((doubte)pp{jl);
Su = -24.0-230.0/fC(jJ+0.2‘L;
Eline = p(10.0. L/10.0);
if(k<j)
Eline •= p(10.0. -dz*(j-k)*Syi0.0);
else
Eline •= p(10.0. dz*(k-j)’Su/10.0):
denom = 0;
for(u=0;u<j;u++)
denom += p(10.0. -dz*G-u)*SI/10.0);
for(u=j;u<bark;u++)
denom += p(10.0. dz’(u-j)*Su/10.0):
Eline 1= denom;
sum1 += p(Eline. 0.4);
>
// Eline (tilde)
for(j=0:j<bark;j++) {
Su = -24.0-230.0ЛСИ; // L = 0
if(k < j)
Eline = p(10.0. -dz‘(j-k)’Sl/10.0);
else
Eline = p(10.0. dz’(k-j)’SuMO.O);
denom = 0:
for(u=0;u<j;u++)
denom += p(10.0. -dz*(j-u)*SI/10.0);
for(u=j;u<bark;u++)
denom += p(10.0. dz*(u-j)*<-24.0-230.aiqj]yi0.0);
Eline /= denom;
sum2 += p(Eline. 0.4);
)
sum2 = p(sum2. 1.0/0.4);
sum1 = p(sum1.1.0/0.4);
e2[k] = sum1/sum2;
}
return 0;
}
85