ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
11 сентября
1603470 Топик полностью
IBAH (Сегодня, 15:38, просмотров: 40) ответил Nikolay_Po на Да вроде нет. С первого раза получилось, первый раз вижу. В Wine заработала, в Linux.
я ей не могу ума дать... Хочу батерворта 10 порядка. он мне герерит такую хню. Почему коэффициентов столько?! что за реализация с делением?! 
//

#define GAIN 1.000000000000e+000

#define SECTION 5

static double num[SECTION * 3] = {

6.685638427734e-002, /* 0 */

1.337127685547e-001, /* 1 */

6.685638427734e-002, /* 2 */

6.943893432617e-002, /* 3 */

1.388778686523e-001, /* 4 */

6.943893432617e-002, /* 5 */

7.494354248047e-002, /* 6 */

1.498870849609e-001, /* 7 */

7.494354248047e-002, /* 8 */

8.412551879883e-002, /* 9 */

1.682510375977e-001, /* 10 */

8.412551879883e-002, /* 11 */

9.827995300293e-002, /* 12 */

1.965599060059e-001, /* 13 */

9.827995300293e-002}; /* 14 */

static double den[SECTION * 3] = {

1.000000000000e+000, /* 0 */

-9.727478027344e-001, /* 1 */

2.401847839355e-001, /* 2 */

1.000000000000e+000, /* 3 */

-1.010314941406e+000, /* 4 */

2.880859375000e-001, /* 5 */

1.000000000000e+000, /* 6 */

-1.090423583984e+000, /* 7 */

3.902206420898e-001, /* 8 */

1.000000000000e+000, /* 9 */

-1.224029541016e+000, /* 10 */

5.605316162109e-001, /* 11 */

1.000000000000e+000, /* 12 */

-1.429962158203e+000, /* 13 */

8.230895996094e-001}; /* 14 */

#include "qed_cas.cod"


файл qed_cas.cod

static double *m1, /* intermediate storage */

*m2; /* intermediate storage */

static void cas_d1 () {

int i;

double *a, *b, s0, s1;

a = den; b = num; s0 = GAIN * get_input_data ();

for (i = 0; i < SECTION; i++) {

s1 = (s0 * b[0] + m1[i]) / a[0];

m1[i] = m2[i] + s0 * b[1] - s1 * a[1];

m2[i] = s0 * b[2] - s1 * a[2];

s0 = s1; a += 3; b += 3;

}

send_output_data (s1);

}

static void cas_d2 () {

int i;

double *a, *b, e, d, s;

a = den; b = num; s = GAIN * get_input_data ();

for (i = 0; i < SECTION; i++) {

e = a[0] * s - a[1] * m2[i] - a[2] * m1[i];

d = 1.0 / a[0]; e *= d;

s = b[0] * e + b[1] * m2[i] + b[2] * m1[i];

s *= d; m1[i] = m2[i]; m2[i] = e;

a += 3; b += 3;

}

send_output_data (s);

}

int main (a, v) int a; char *v[]; {

buffer = (double *) calloc (sizeof (double), SECTION * 2);

m1 = buffer; m2 = m1 + SECTION;

while (1) cas_d1 ();

}





//


Почему коэффициентов столько?! что за реализация с делением?!