6 void gen_fun::add(ZZ
& cn
, ZZ
& cd
, vec_ZZ
& num
, mat_ZZ
& den
)
8 short_rat
* r
= new short_rat
;
9 r
->n
.coeff
.SetDims(1, 2);
10 r
->n
.coeff
[0][0] = cn
;
11 r
->n
.coeff
[0][1] = cd
;
12 r
->n
.power
.SetDims(1, num
.length());
16 for (int i
= 0; i
< r
->d
.power
.NumRows(); ++i
) {
18 for (j
= 0; j
< r
->d
.power
.NumCols(); ++j
)
19 if (r
->d
.power
[i
][j
] != 0)
21 if (r
->d
.power
[i
][j
] < 0) {
22 r
->d
.power
[i
] = -r
->d
.power
[i
];
23 r
->n
.coeff
[0][0] = -r
->n
.coeff
[0][0];
24 r
->n
.power
[0] += r
->d
.power
[i
];
31 static void print_power(vec_ZZ
& c
, vec_ZZ
& p
)
35 for (int i
= 0; i
< p
.length(); ++i
) {
39 if (c
[0] == -1 && c
[1] == 1)
41 else if (c
[0] != 1 || c
[1] != 1) {
44 cout
<< " / " << c
[1];
54 cout
<< "^(" << p
[i
] << ")";
61 cout
<< " / " << c
[1];
65 void gen_fun::print(void)
71 for (int i
= 0; i
< term
.size(); ++i
) {
75 for (int j
= 0; j
< term
[i
]->n
.coeff
.NumRows(); ++j
) {
78 print_power(term
[i
]->n
.coeff
[j
], term
[i
]->n
.power
[j
]);
81 for (int j
= 0; j
< term
[i
]->d
.power
.NumRows(); ++j
) {
85 print_power(mone
, term
[i
]->d
.power
[j
]);