-
Notifications
You must be signed in to change notification settings - Fork 1
/
qidloop.h
41 lines (34 loc) · 1.36 KB
/
qidloop.h
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
// FILE QIDLOOP.H
/////////////////////////////////////////////////////////////////////////////
//
// Usage:
//
// Qidealooper looper(firstn,lastn,both,sorted);
// while (looper.not_finished())
// { Qideal A = looper.next();
// ...
// }
// for looping through Qideals of norm from firstn to lastn.
// If both=1 (default=0) both conjugates are returned (if different).
// If sorted=1 (default 0) the ideals are returned in standard sorted order.
/////////////////////////////////////////////////////////////////////////////
#if !defined(_QIDLOOP_H)
#define _QIDLOOP_H 1 //flags that this file has been included
#include "qideal.h"
#include <list>
class Qidealooper {
public:
Qidealooper(long nmin, long nmax,
int both_conjugates=0, // default only 1 conj
int sorted=0); // default unsorted within each norm
Qideal next();
int not_finished() const {return not I_norm_n.empty();}
private:
INT n, maxn; // current norm, norm bound
int both; // flag for whether or not to include conjugates
int sort; // flag for whether or not to yield ideals of fixed norm into standard order
std::list<Qideal> I_norm_n; // list of ideals of norm n (not a vector as we use pop_front())
void advance(); // advance if necessary, return true if not finished
};
#endif
// END OF FILE QIDLOOP.H