-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdumper.c
132 lines (115 loc) · 2.57 KB
/
dumper.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <stdio.h>
#include "dumper.h"
void print_polynom(const double *p, const int np, const char v)
{
int i, j = 0;
for (i = 0; i < np; ++i) {
double pi = p[i];
if (pi == 0)
continue;
if (j > 0) {
if (pi < 0)
printf(" - ");
else
printf(" + ");
} else {
if (pi < 0)
printf("- ");
}
if (pi < 0)
pi = -pi;
printf("%f", pi);
if (i > 0)
printf("%c", v);
if (i > 1)
printf("^%d", i);
++j;
}
printf("\n");
}
void print_polynom_c(const complex *p, const int np, const char v)
{
int i, j = 0;
for (i = 0; i < np; ++i) {
complex pi = p[i];
if ((pi.i == 0) && (pi.r == 0))
continue;
if (j > 0)
printf(" + ");
printf("[%f,%f]", pi.r, pi.i);
if (i > 0)
printf("%c", v);
if (i > 1)
printf("^%d", i);
++j;
}
printf("\n");
}
void print_polynom_nd(const double *num, const int nnum, const double *den, const int nden,
const char v, const char *title)
{
if (title)
printf("\n%s:\n", title);
print_polynom(num, nnum, v);
printf("----------\n");
print_polynom(den, nden, v);
printf("\n");
}
void print_polynom_nd_c(const complex *num, const int nnum, const complex *den, const int nden,
const char v, const char *title)
{
if (title)
printf("\n%s:\n", title);
print_polynom_c(num, nnum, v);
printf("----------\n");
print_polynom_c(den, nden, v);
printf("\n");
}
void print_zerolist(const double *z, const int nz, const char v)
{
int i;
for (i = 0; i < nz; ++i) {
if (i > 0)
printf(" * ");
printf("(%f + %c", z[i], v);
if (i > 1)
printf("^%d", i);
printf(")");
}
printf("\n");
}
void print_zerolist_c(const complex *z, const int nz, const char v)
{
int i;
for (i = 0; i < nz; ++i) {
if (i > 0)
printf(" * ");
printf("([%f,%f] + %c", z[i].r, z[i].i, v);
if (i > 1)
printf("^%d", i);
printf(")");
}
printf("\n");
}
void print_polynom_zp(const double *zero, const int nzero, const double *pole, const int npole,
const double k, const char v, const char *title)
{
if (title)
printf("\n%s:\n", title);
printf("%f *", k);
print_zerolist(zero, nzero, v);
printf("----------\n");
print_zerolist(pole, npole, v);
printf("\n");
}
void print_polynom_zp_c(const complex *zero, const int nzero, const complex *pole, const int npole,
const complex k, const char v, const char *title)
{
if (title)
printf("\n%s:\n", title);
printf("[%f,%f] *", k.r, k.i);
print_zerolist_c(zero, nzero, v);
printf("----------\n");
print_zerolist_c(pole, npole, v);
printf("\n");
}