root/library/tests/square_mat_prep.cpp @ 468

Revision 468, 2.1 kB (checked in by vbarta, 15 years ago)

added supplementary random test data to agenda

Line 
1#include "base/bdmbase.h"
2#include "base/user_info.h"
3#include "generator.h"
4#include "additive_generator.h"
5#include "size_generator.h"
6#include "square_mat_point.h"
7#include <iostream>
8#include <iomanip>
9#include <memory>
10#include <stdlib.h>
11
12using namespace std;
13using namespace bdm;
14using namespace itpp;
15
16UIREGISTER(size_generator);
17UIREGISTER(additive_generator);
18UIREGISTER(square_mat_point);
19
20const char *generator_file_name = "generator.cfg";
21const char *agenda_file_name = "agenda.cfg";
22int agenda_length = 10;
23
24int main(int argc, char const *argv[]) {
25    RNG_randomize();
26
27    bool unknown = false;
28    int update_next = 0; // 1 generator file, 2 agenda file, 3 agenda length
29    const char **param = argv + 1;
30    while (*param && !unknown) {
31        if (update_next) {
32            if (update_next == 1) {
33                generator_file_name = *param;
34            } else if (update_next == 2) {
35                agenda_file_name = *param;
36            } else {
37                int length = atoi(*param);
38                if (length > 0) {
39                    agenda_length = length;
40                } else {
41                    cerr << "invalid agenda length value ignored" << endl;
42                }
43            }
44
45            update_next = 0;
46        } else {
47            if (!strcmp(*param, "-a")) {
48                update_next = 2;
49            } else if (!strcmp(*param, "-g")) {
50                update_next = 1;
51            } else if (!strcmp(*param, "-l")) {
52                update_next = 3;
53            } else {
54                unknown = true;
55            }
56        }
57
58        ++param;
59    }
60
61    if (unknown || update_next) {
62        cerr << "usage: " << argv[0] << " [ -g generator.cfg ] [ -a agenda_output.cfg ] [ -l agenda_length ]" << endl;
63    } else {
64        Array<square_mat_point *> mag(agenda_length);
65
66        UIFile gspec(generator_file_name);
67        auto_ptr<generator> gen(UI::build<generator>(gspec, "generator"));
68        for (int i = 0; i < agenda_length; ++i) {
69            mat m = gen->next();
70            square_mat_point *p = new square_mat_point();
71            p->set_parameters(m, randu(m.rows()), randu());
72            mag(i) = p;
73        }
74
75        UIFile fag;
76        UI::save(mag, fag, "agenda");
77        fag.save(agenda_file_name);
78
79        for (int i = 0; i < agenda_length; ++i) {
80            square_mat_point *p = mag(i);
81            mag(i) = 0;
82            delete p;
83        }
84    }
85}
Note: See TracBrowser for help on using the browser.