3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-03 04:41:21 +00:00

resource-limit related fixes in src/test

This commit is contained in:
Christoph M. Wintersteiger 2015-12-18 18:43:38 +00:00
parent e91b1e1da4
commit c2ab9b72dc
11 changed files with 672 additions and 569 deletions

View file

@ -19,6 +19,7 @@ Notes:
#include"algebraic_numbers.h"
#include"polynomial_var2value.h"
#include"mpbq.h"
#include"rlimit.h"
static void display_anums(std::ostream & out, scoped_anum_vector const & rs) {
out << "numbers in decimal:\n";
@ -40,14 +41,15 @@ static void display_anums(std::ostream & out, scoped_anum_vector const & rs) {
}
static void tst1() {
reslimit rl;
unsynch_mpq_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
polynomial_ref p(m);
p = 3*x - 2;
algebraic_numbers::manager am(nm);
algebraic_numbers::manager am(rl, nm);
scoped_anum_vector rs1(am);
std::cout << "p: " << p << "\n";
am.isolate_roots(p, rs1);
@ -221,8 +223,9 @@ void tst_mpbq_root() {
static void tst_wilkinson() {
// Test Wilkinson Polynomial
reslimit rl;
unsynch_mpq_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
polynomial_ref p(m);
@ -234,7 +237,7 @@ static void tst_wilkinson() {
}
std::cout << "Wilkinson's polynomial: " << p << "\n";
algebraic_numbers::manager am(nm);
algebraic_numbers::manager am(rl, nm);
scoped_anum_vector rs1(am);
std::cout << "p: " << p << "\n";
am.isolate_roots(p, rs1);
@ -246,8 +249,9 @@ static void tst_wilkinson() {
}
static void tst_dejan() {
reslimit rl;
unsynch_mpq_manager qm;
algebraic_numbers::manager am(qm);
algebraic_numbers::manager am(rl, qm);
scoped_anum two101(am);
am.set(two101, 2);
@ -332,9 +336,10 @@ static void tst_eval_sign(polynomial_ref const & p, anum_manager & am,
static void tst_eval_sign() {
enable_trace("anum_eval_sign");
reslimit rl;
unsynch_mpq_manager qm;
polynomial::manager pm(qm);
algebraic_numbers::manager am(qm);
polynomial::manager pm(rl, qm);
algebraic_numbers::manager am(rl, qm);
polynomial_ref x0(pm);
polynomial_ref x1(pm);
polynomial_ref x2(pm);
@ -412,9 +417,10 @@ static void tst_isolate_roots(polynomial_ref const & p, anum_manager & am,
static void tst_isolate_roots() {
enable_trace("isolate_roots");
reslimit rl;
unsynch_mpq_manager qm;
polynomial::manager pm(qm);
algebraic_numbers::manager am(qm);
polynomial::manager pm(rl, qm);
algebraic_numbers::manager am(rl, qm);
polynomial_ref x0(pm);
polynomial_ref x1(pm);
polynomial_ref x2(pm);
@ -485,7 +491,8 @@ static void pp(polynomial_ref const & p, polynomial::var x) {
static void ex1() {
unsynch_mpq_manager qm;
polynomial::manager pm(qm);
reslimit rl;
polynomial::manager pm(rl, qm);
polynomial_ref x(pm);
polynomial_ref a(pm);
polynomial_ref b(pm);
@ -508,7 +515,7 @@ static void ex1() {
std::cout << "d: " << d << "\n";
std::cout << "h3: "; pp(h3, 0); std::cout << "\n";
algebraic_numbers::manager am(qm);
algebraic_numbers::manager am(rl, qm);
scoped_anum v1(am), v2(am);
am.set(v1, 2);
am.root(v1, 3, v1);
@ -542,8 +549,9 @@ static void ex1() {
}
static void tst_root() {
reslimit rl;
unsynch_mpq_manager qm;
algebraic_numbers::manager am(qm);
algebraic_numbers::manager am(rl, qm);
scoped_anum v1(am), v2(am);
am.set(v1, 4);
am.root(v1, 2, v2);

View file

@ -12,6 +12,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "tactic.h"
#include "tactic2solver.h"
#include "solver.h"
#include "rlimit.h"
#include <signal.h>
#include <time.h>
#include <sstream>
@ -283,7 +284,8 @@ static void saturate_basis(hilbert_basis& hb) {
static void gorrila_test(unsigned seed, unsigned n, unsigned k, unsigned bound, unsigned num_ineqs) {
std::cout << "Gorrila test\n";
random_gen rand(seed);
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
SASSERT(0 < bound);
SASSERT(k <= n);
int ibound = static_cast<int>(bound);
@ -368,7 +370,8 @@ static vector<rational> vec(int i, int j, int k, int l, int x, int y, int z) {
// -y + z <= 0
static void tst1() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec(1,1,-2));
hb.add_eq(vec(1,0,-1));
hb.add_le(vec(0,1,-1));
@ -380,7 +383,8 @@ static void tst1() {
// 23x - 12y - 9z <= 0
// x - 8y - 8z <= 0
void tst2() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec(-23,12,9));
hb.add_eq(vec(-1,8,8));
@ -391,7 +395,8 @@ void tst2() {
// example 6, Ajili, Contenjean
// 3x + 2y - z - 2u <= 0
static void tst3() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec(3,2,-1,-2));
saturate_basis(hb);
}
@ -400,7 +405,8 @@ static void tst3() {
// Sigma_1, table 1, Ajili, Contejean
static void tst4() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 0,-2, 1, 3, 2,-2, 3), R(3));
hb.add_le(vec(-1, 7, 0, 1, 3, 5,-4), R(2));
hb.add_le(vec( 0,-1, 1,-1,-1, 0, 0), R(2));
@ -416,7 +422,8 @@ static void tst4() {
// Sigma_2 table 1, Ajili, Contejean
static void tst5() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 1, 2,-1, 1), R(3));
hb.add_le(vec( 2, 4, 1, 2), R(12));
hb.add_le(vec( 1, 4, 2, 1), R(9));
@ -429,7 +436,8 @@ static void tst5() {
// Sigma_3 table 1, Ajili, Contejean
static void tst6() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 4, 3, 0), R(6));
hb.add_le(vec(-3,-4, 0), R(-1));
hb.add_le(vec( 4, 0,-3), R(3));
@ -441,7 +449,8 @@ static void tst6() {
// Sigma_4 table 1, Ajili, Contejean
static void tst7() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec( 1, 1, 1, 0), R(5));
hb.add_le(vec( 2, 1, 0, 1), R(6));
hb.add_le(vec( 1, 2, 1, 1), R(7));
@ -454,7 +463,8 @@ static void tst7() {
// Sigma_5 table 1, Ajili, Contejean
static void tst8() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 2, 1, 1), R(2));
hb.add_le(vec( 1, 2, 3), R(5));
hb.add_le(vec( 2, 2, 3), R(6));
@ -464,7 +474,8 @@ static void tst8() {
// Sigma_6 table 1, Ajili, Contejean
static void tst9() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 1, 2, 3), R(11));
hb.add_le(vec( 2, 2, 5), R(13));
hb.add_le(vec( 1,-1,-11), R(3));
@ -473,7 +484,8 @@ static void tst9() {
// Sigma_7 table 1, Ajili, Contejean
static void tst10() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 1,-1,-1,-3), R(2));
hb.add_le(vec(-2, 3, 3,-5), R(3));
saturate_basis(hb);
@ -481,14 +493,16 @@ static void tst10() {
// Sigma_8 table 1, Ajili, Contejean
static void tst11() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 7,-2,11, 3, -5), R(5));
saturate_basis(hb);
}
// Sigma_9 table 1, Ajili, Contejean
static void tst12() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec( 1,-2,-3,4), R(0));
hb.add_le(vec(100,45,-78,-67), R(0));
saturate_basis(hb);
@ -496,34 +510,39 @@ static void tst12() {
// Sigma_10 table 1, Ajili, Contejean
static void tst13() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec( 23, -56, -34, 12, 11), R(0));
saturate_basis(hb);
}
// Sigma_11 table 1, Ajili, Contejean
static void tst14() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec(1, 0, -4, 8), R(2));
hb.add_le(vec(12,19,-11,-7), R(-7));
saturate_basis(hb);
}
static void tst15() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec(1, 0), R(1));
hb.add_le(vec(0, 1), R(1));
saturate_basis(hb);
}
static void tst16() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_le(vec(1, 0), R(100));
saturate_basis(hb);
}
static void tst17() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec(1, 0), R(0));
hb.add_eq(vec(-1, 0), R(0));
hb.add_eq(vec(0, 2), R(0));
@ -533,21 +552,24 @@ static void tst17() {
}
static void tst18() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec(0, 1), R(0));
hb.add_eq(vec(1, -1), R(2));
saturate_basis(hb);
}
static void tst19() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
hb.add_eq(vec(0, 1, 0), R(0));
hb.add_eq(vec(1, -1, 0), R(2));
saturate_basis(hb);
}
static void test_A_5_5_3() {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
for (unsigned i = 0; i < 15; ++i) {
vector<rational> v;
for (unsigned j = 0; j < 5; ++j) {

View file

@ -22,6 +22,7 @@ Revision History:
#include"mpq.h"
#include"ast.h"
#include"debug.h"
#include"rlimit.h"
template class interval_manager<im_default_config>;
typedef im_default_config::interval interval;
@ -235,9 +236,10 @@ static void display_lemmas(unsynch_mpq_manager & nm, char const * result_term,
#define MK_BINARY(NAME, RES_TERM) \
static void tst_ ## NAME(unsigned N, unsigned magnitude) { \
reslimit rl; \
unsynch_mpq_manager nm; \
im_default_config imc(nm); \
interval_manager<im_default_config> im(imc); \
interval_manager<im_default_config> im(rl, imc); \
interval a, b, r; \
\
for (unsigned i = 0; i < N; i++) { \
@ -256,9 +258,10 @@ MK_BINARY(add, "(+ a b)");
MK_BINARY(sub, "(- a b)");
static void tst_neg(unsigned N, unsigned magnitude) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
for (unsigned i = 0; i < N; i++) {
@ -271,9 +274,10 @@ static void tst_neg(unsigned N, unsigned magnitude) {
}
static void tst_pw_2(unsigned N, unsigned magnitude) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
for (unsigned i = 0; i < N; i++) {
@ -286,9 +290,10 @@ static void tst_pw_2(unsigned N, unsigned magnitude) {
}
static void tst_pw_3(unsigned N, unsigned magnitude) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
for (unsigned i = 0; i < N; i++) {
@ -301,9 +306,10 @@ static void tst_pw_3(unsigned N, unsigned magnitude) {
}
static void tst_root_2(unsigned N, unsigned magnitude, unsigned precision) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
scoped_mpq p(nm);
p = precision;
@ -323,9 +329,10 @@ static void tst_root_2(unsigned N, unsigned magnitude, unsigned precision) {
}
static void tst_root_3(unsigned N, unsigned magnitude, unsigned precision) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
scoped_mpq p(nm);
p = precision;
@ -343,9 +350,10 @@ static void tst_root_3(unsigned N, unsigned magnitude, unsigned precision) {
}
static void tst_inv(unsigned N, unsigned magnitude) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
for (unsigned i = 0; i < N; i++) {
@ -362,9 +370,10 @@ static void tst_inv(unsigned N, unsigned magnitude) {
}
static void tst_div(unsigned N, unsigned magnitude) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval a, b, r;
for (unsigned i = 0; i < N; i++) {
@ -420,9 +429,10 @@ static void tst_float() {
#endif
void tst_pi() {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
interval r;
for (unsigned i = 0; i < 8; i++) {
im.pi(i, r);
@ -436,10 +446,11 @@ void tst_pi() {
#if 0
static void tst_pi_float() {
std::cout << "pi float...\n";
reslimit rl;
unsynch_mpq_manager qm;
mpf_manager fm;
im_float_config<mpf_manager> ifc(fm, 22, 106);
interval_manager<im_float_config<mpf_manager> > im(ifc);
interval_manager<im_float_config<mpf_manager> > im(rl, ifc);
scoped_mpq q(qm);
im_float_config<mpf_manager>::interval r;
for (unsigned i = 0; i < 8; i++) {

View file

@ -3,7 +3,7 @@
Copyright (c) 2015 Microsoft Corporation
--*/
#include"rlimit.h"
#include "hilbert_basis.h"
/*
@ -46,7 +46,8 @@ namespace karr {
// treat src as a homogeneous matrix.
void dualizeH(matrix& dst, matrix const& src) {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
for (unsigned i = 0; i < src.size(); ++i) {
vector<rational> v(src.A[i]);
v.push_back(src.b[i]);
@ -74,7 +75,8 @@ namespace karr {
// treat src as an inhomegeneous matrix.
void dualizeI(matrix& dst, matrix const& src) {
hilbert_basis hb;
reslimit rl;
hilbert_basis hb(rl);
for (unsigned i = 0; i < src.size(); ++i) {
hb.add_eq(src.A[i], -src.b[i]);
}

View file

@ -21,6 +21,7 @@ Notes:
#include"nlsat_evaluator.h"
#include"nlsat_solver.h"
#include"util.h"
#include"rlimit.h"
nlsat::interval_set_ref tst_interval(nlsat::interval_set_ref const & s1,
nlsat::interval_set_ref const & s2,
@ -57,8 +58,9 @@ nlsat::interval_set_ref tst_interval(nlsat::interval_set_ref const & s1,
static void tst3() {
enable_trace("nlsat_interval");
reslimit rl;
unsynch_mpq_manager qm;
anum_manager am(qm);
anum_manager am(rl, qm);
small_object_allocator allocator;
nlsat::interval_set_manager ism(am, allocator);
@ -241,8 +243,9 @@ static void check_subset_result(nlsat::interval_set_ref const & s1,
static void tst4() {
enable_trace("nlsat_interval");
reslimit rl;
unsynch_mpq_manager qm;
anum_manager am(qm);
anum_manager am(rl, qm);
small_object_allocator allocator;
nlsat::interval_set_manager ism(am, allocator);
nlsat::interval_set_ref s1(ism), s2(ism), r(ism);

View file

@ -22,11 +22,13 @@ Notes:
#include"polynomial_var2value.h"
#include"polynomial_cache.h"
#include"linear_eq_solver.h"
#include"rlimit.h"
static void tst1() {
std::cout << "\n----- Basic testing -------\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -56,6 +58,7 @@ static void tst1() {
}
static void tst_pseudo_div(polynomial_ref const & A, polynomial_ref const & B, polynomial::var x) {
reslimit rl;
polynomial::manager & m = A.m();
std::cout << "---- Pseudo-division test ----\n";
std::cout << "A: " << A << "\n";
@ -81,8 +84,9 @@ static void tst_pseudo_div(polynomial_ref const & A, polynomial_ref const & B, p
}
static void tst2() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -98,8 +102,9 @@ static void tst2() {
static void tst3() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
x0 = m.mk_polynomial(m.mk_var());
@ -113,8 +118,9 @@ static void tst3() {
static void tst4() {
std::cout << "---- Testing renaming/reordering ----\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -141,8 +147,9 @@ static void tst_quasi_resultant(polynomial_ref const & p, polynomial_ref const &
}
static void tst5() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -158,8 +165,9 @@ static void tst5() {
}
static void tst6() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -176,8 +184,9 @@ static void tst6() {
}
static void tst7() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -198,8 +207,9 @@ static void tst7() {
}
static void tst8() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -220,8 +230,9 @@ static void tst8() {
static void tst9() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -261,8 +272,9 @@ static void tst9() {
}
static void tst10() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -300,8 +312,9 @@ static void tst10() {
}
static void tst11() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -342,8 +355,9 @@ static void tst_discriminant(polynomial_ref const & p, polynomial_ref const & ex
}
static void tst_discriminant() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref a(m);
polynomial_ref b(m);
polynomial_ref c(m);
@ -460,8 +474,9 @@ static void tst_resultant(polynomial_ref const & p, polynomial_ref const & q, po
}
static void tst_resultant() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref a(m);
polynomial_ref b(m);
polynomial_ref c(m);
@ -545,8 +560,9 @@ static void tst_resultant() {
}
static void tst_compose() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
x0 = m.mk_polynomial(m.mk_var());
@ -560,8 +576,9 @@ static void tst_compose() {
}
void tst_prem() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
polynomial_ref y(m);
x = m.mk_polynomial(m.mk_var());
@ -577,8 +594,9 @@ void tst_prem() {
}
void tst_sqrt() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
polynomial_ref y(m);
x = m.mk_polynomial(m.mk_var());
@ -622,8 +640,9 @@ static void tst_gcd(polynomial_ref const & p, polynomial_ref const & q, polynomi
}
static void tst_gcd() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -721,8 +740,9 @@ static void tst_psc_perf(polynomial_ref const & p, polynomial_ref const & q, pol
#endif
static void tst_psc() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -834,7 +854,7 @@ static void tst_vars(polynomial_ref const & p, unsigned sz, polynomial::var * xs
static void tst_vars() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -874,7 +894,7 @@ static void tst_sqf(polynomial_ref const & p, polynomial_ref const & expected) {
static void tst_sqf() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -919,7 +939,7 @@ static void tst_substitute(polynomial_ref const & p,
static void tst_substitute() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -960,7 +980,7 @@ static void tst_qsubstitute(polynomial_ref const & p,
static void tst_qsubstitute() {
unsynch_mpq_manager qm;
polynomial::manager m(qm);
reslimit rl; polynomial::manager m(rl, qm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1013,7 +1033,7 @@ void tst_mfact(polynomial_ref const & p, unsigned num_distinct_factors) {
static void tst_mfact() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1175,7 +1195,7 @@ static void tst_mfact() {
static void tst_zp() {
unsynch_mpz_manager z;
polynomial::manager pm(z);
reslimit rl; polynomial::manager pm(rl, z);
polynomial_ref x(pm);
polynomial_ref y(pm);
@ -1233,7 +1253,7 @@ static void tst_translate(polynomial_ref const & p, polynomial::var x0, int v0,
static void tst_translate() {
unsynch_mpq_manager qm;
polynomial::manager m(qm);
reslimit rl; polynomial::manager m(rl, qm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1264,7 +1284,7 @@ static void tst_translate() {
#if 0
static void tst_p25() {
unsynch_mpq_manager qm;
polynomial::manager m(qm);
reslimit rl; polynomial::manager m(rl, qm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1288,10 +1308,11 @@ static void tst_p25() {
static void tst_mm() {
unsynch_mpq_manager qm;
// pm1 and pm2 share the same monomial manager
polynomial::manager * pm1_ptr = alloc(polynomial::manager, qm);
reslimit rl;
polynomial::manager * pm1_ptr = alloc(polynomial::manager, rl, qm);
polynomial::manager & pm1 = *pm1_ptr;
polynomial::manager pm2(qm, &pm1.mm());
polynomial::manager pm3(qm); // pm3 has its own manager
polynomial::manager pm2(rl, qm, &pm1.mm());
polynomial::manager pm3(rl, qm); // pm3 has its own manager
polynomial_ref p2(pm2);
{
polynomial_ref x0(pm1);
@ -1336,7 +1357,7 @@ static void tst_eval(polynomial_ref const & p, polynomial::var x0, rational v0,
static void tst_eval() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1369,7 +1390,7 @@ static void tst_eval() {
static void tst_mk_unique() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1414,7 +1435,7 @@ static void tst_del_eh() {
dummy_del_eh eh2;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
x0 = m.mk_polynomial(m.mk_var());
@ -1444,7 +1465,7 @@ static void tst_del_eh() {
static void tst_const_coeff() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
x0 = m.mk_polynomial(m.mk_var());
@ -1490,7 +1511,7 @@ static void tst_const_coeff() {
static void tst_gcd2() {
// enable_trace("mgcd");
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
polynomial_ref x1(m);
polynomial_ref x2(m);
@ -1582,7 +1603,7 @@ static void tst_gcd3() {
enable_trace("polynomial_gcd_detail");
enable_trace("mpzzp");
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
polynomial_ref p(m);
@ -1607,7 +1628,7 @@ static void tst_gcd4() {
enable_trace("mgcd");
// enable_trace("CRA");
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
polynomial_ref p(m);
@ -1631,7 +1652,7 @@ static void tst_gcd4() {
static void tst_newton_interpolation() {
// enable_trace("newton");
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x(m);
polynomial_ref y(m);
x = m.mk_polynomial(m.mk_var());
@ -1654,7 +1675,7 @@ static void tst_newton_interpolation() {
static void tst_slow_mod_gcd() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m), x1(m), x2(m), x3(m), x4(m), x5(m);
x0 = m.mk_polynomial(m.mk_var());
x1 = m.mk_polynomial(m.mk_var());
@ -1735,7 +1756,7 @@ static void tst_lex(polynomial_ref const & p1, polynomial_ref const & p2, int le
static void tst_lex() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m), x1(m), x2(m), x3(m), x4(m), x5(m);
x0 = m.mk_polynomial(m.mk_var());
x1 = m.mk_polynomial(m.mk_var());
@ -1772,7 +1793,7 @@ static void tst_lex() {
static void tst_divides() {
polynomial::numeral_manager nm;
polynomial::manager m(nm);
reslimit rl; polynomial::manager m(rl, nm);
polynomial_ref x0(m);
x0 = m.mk_polynomial(m.mk_var());
polynomial_ref q(m);

View file

@ -19,7 +19,7 @@ Notes:
#include"upolynomial_factorization_int.h"
#include"timeit.h"
#include"polynomial.h"
#include"rlimit.h"
#if 0
#include"polynomial_factorization.h"
#endif
@ -176,7 +176,7 @@ int random_polynomial[20][2][11] = {
#if 0
static void tst_square_free_finite_1() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
// example from Knuth, p. 442
polynomial_ref x(pm);
@ -224,7 +224,7 @@ static void tst_square_free_finite_1() {
static void tst_factor_finite_1() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
// example from Knuth, p. 442
polynomial_ref x(pm);
@ -274,7 +274,7 @@ static void tst_factor_finite_1() {
static void tst_factor_finite_2() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -333,7 +333,7 @@ static void tst_factor_finite_2() {
static void tst_factor_finite_3() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -403,7 +403,7 @@ static void tst_factor_finite_3() {
static void tst_factor_enumeration() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -514,7 +514,7 @@ static void tst_factor_square_free_univariate_1(unsigned max_length) {
nm.set(p, 5);
nm.mod(test, p, test);
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -560,7 +560,7 @@ static void tst_factor_square_free_univariate_1(unsigned max_length) {
static void tst_factor_square_free_univariate_2() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -598,7 +598,7 @@ static void tst_factor_square_free_univariate_2() {
static void tst_factor_square_free_univariate_3() {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -622,7 +622,7 @@ static void tst_factor_square_free_univariate_3() {
void tst_factor_swinnerton_dyer_big(unsigned max) {
polynomial::numeral_manager nm;
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());
@ -669,7 +669,8 @@ void tst_factor_swinnerton_dyer_big(unsigned max) {
{
timeit timer(true, "factoring swinnerton-dyer");
upolynomial::manager upm(nm);
reslimit rl;
upolynomial::manager upm(rl, nm);
scoped_mpz_vector sd_u(nm);
upm.to_numeral_vector(computation, sd_u);
upolynomial::factors factors(upm);
@ -689,7 +690,7 @@ static void tst_factor_square_free_multivariate_1(unsigned max_n) {
nm.set(p, 5);
nm.mod(test, p, test);
polynomial::manager pm(nm);
reslimit rl; polynomial::manager pm(rl, nm);
polynomial_ref x(pm);
x = pm.mk_polynomial(pm.mk_var());

View file

@ -18,10 +18,12 @@ Notes:
--*/
#include"realclosure.h"
#include"mpz_matrix.h"
#include"rlimit.h"
static void tst1() {
unsynch_mpq_manager qm;
rcmanager m(qm);
reslimit rl;
rcmanager m(rl, qm);
scoped_rcnumeral a(m);
#if 0
a = 10;
@ -143,8 +145,9 @@ static void tst_lin_indep(unsigned m, unsigned n, int _A[], unsigned ex_sz, unsi
}
static void tst_denominators() {
reslimit rl;
unsynch_mpq_manager qm;
rcmanager m(qm);
rcmanager m(rl, qm);
scoped_rcnumeral a(m);
scoped_rcnumeral t(m);
scoped_rcnumeral eps(m);

View file

@ -11,6 +11,7 @@ Copyright (c) 2015 Microsoft Corporation
#include "mpq_inf.h"
#include "vector.h"
#include "rational.h"
#include "rlimit.h"
#define R rational
typedef simplex::simplex<simplex::mpz_ext> Simplex;
@ -99,7 +100,8 @@ static void feas(Simplex& S) {
}
static void test1() {
Simplex S;
reslimit rl;
Simplex S(rl);
add_row(S, vec(1,0), R(1));
add_row(S, vec(0,1), R(1));
add_row(S, vec(1,1), R(1));
@ -107,7 +109,7 @@ static void test1() {
}
static void test2() {
Simplex S;
reslimit rl; Simplex S(rl);
add_row(S, vec(1, 0), R(1));
add_row(S, vec(0, 1), R(1));
add_row(S, vec(1, 1), R(1), true);
@ -115,7 +117,7 @@ static void test2() {
}
static void test3() {
Simplex S;
reslimit rl; Simplex S(rl);
add_row(S, vec(-1, 0), R(-1));
add_row(S, vec(0, -1), R(-1));
add_row(S, vec(1, 1), R(1), true);
@ -123,7 +125,7 @@ static void test3() {
}
static void test4() {
Simplex S;
reslimit rl; Simplex S(rl);
add_row(S, vec(1, 0), R(1));
add_row(S, vec(0, -1), R(-1));
add_row(S, vec(1, 1), R(1), true);
@ -131,7 +133,7 @@ static void test4() {
}
void tst_simplex() {
Simplex S;
reslimit rl; Simplex S(rl);
std::cout << "simplex\n";

View file

@ -23,6 +23,7 @@ Revision History:
#include"ast.h"
#include"debug.h"
#include"im_float_config.h"
#include"rlimit.h"
#define PREC 100000
@ -39,7 +40,8 @@ static void tst_sine_core(std::ostream & out, unsynch_mpq_manager & nm, interval
static void tst_sine(std::ostream & out, unsigned N, unsigned k) {
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
reslimit rl;
interval_manager<im_default_config> im(rl, imc);
scoped_mpq a(nm);
nm.set(a, 0);
tst_sine_core(out, nm, im, a, 1);
@ -63,9 +65,10 @@ static void tst_cosine_core(std::ostream & out, unsynch_mpq_manager & nm, interv
}
static void tst_cosine(std::ostream & out, unsigned N, unsigned k) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
scoped_mpq a(nm);
nm.set(a, 0);
tst_cosine_core(out, nm, im, a, 1);
@ -95,9 +98,10 @@ const unsigned SBITS = 53;
template<typename fmanager>
static void tst_float_sine(std::ostream & out, unsigned N, unsigned k) {
reslimit rl;
fmanager fm;
im_float_config<fmanager> ifc(fm, EBITS, SBITS);
interval_manager<im_float_config<fmanager> > im(ifc);
interval_manager<im_float_config<fmanager> > im(rl, ifc);
_scoped_numeral<fmanager> a(fm);
fm.set(a, EBITS, SBITS, static_cast<int>(0));
tst_float_sine_core(out, fm, im, a, 1);
@ -130,9 +134,10 @@ static void tst_mpf_bug() {
#endif
static void tst_e(std::ostream & out) {
reslimit rl;
unsynch_mpq_manager nm;
im_default_config imc(nm);
interval_manager<im_default_config> im(imc);
interval_manager<im_default_config> im(rl, imc);
im_default_config::interval r;
for (unsigned i = 0; i < 64; i++) {
im.e(i, r);
@ -144,10 +149,11 @@ static void tst_e(std::ostream & out) {
static void tst_e_float(std::ostream & out) {
std::cout << "e float...\n";
reslimit rl;
unsynch_mpq_manager qm;
mpf_manager fm;
im_float_config<mpf_manager> ifc(fm);
interval_manager<im_float_config<mpf_manager> > im(ifc);
interval_manager<im_float_config<mpf_manager> > im(rl, ifc);
scoped_mpq q(qm);
im_float_config<mpf_manager>::interval r;
for (unsigned i = 0; i < 64; i++) {

View file

@ -18,11 +18,13 @@ Notes:
--*/
#include"upolynomial.h"
#include"timeit.h"
#include"rlimit.h"
static void tst1() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
upolynomial::manager um(nm);
polynomial::manager m(rl, nm);
upolynomial::manager um(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -64,7 +66,8 @@ static void tst1() {
}
static void tst_isolate_roots(polynomial_ref const & p, unsigned prec, mpbq_manager & bqm, mpbq_vector & roots, mpbq_vector & lowers, mpbq_vector & uppers) {
upolynomial::manager um(p.m().m());
reslimit rl;
upolynomial::manager um(rl, p.m().m());
upolynomial::scoped_numeral_vector q(um);
um.to_numeral_vector(p, q);
std::cout << "isolating roots of: "; um.display(std::cout, q); std::cout << "\n";
@ -189,8 +192,9 @@ static void tst_isolate_roots(polynomial_ref const & p, unsigned expected_sz, ra
}
static void tst_isolate_roots() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -275,15 +279,16 @@ static void tst_isolate_roots() {
}
static void tst_remove_one_half() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
polynomial_ref p(m), r(m);
p = 4*(x^3) - 12*(x^2) - x + 3;
r = 16*(x^2) - 40*x - 24;
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
upolynomial::scoped_numeral_vector _p(um), _q(um), _r(um);
um.to_numeral_vector(p, _p);
um.to_numeral_vector(r, _r);
@ -321,15 +326,16 @@ static void tst_gcd(polynomial_ref const & p, polynomial_ref const & q, pmanager
static void tst_gcd() {
std::cout << "\n\nTesting GCD\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
polynomial_ref p(m);
polynomial_ref q(m);
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
p = 13*((x - 3)^6)*((x - 5)^5)*((x - 11)^7);
q = derivative(p, 0);
@ -351,8 +357,9 @@ static void tst_gcd() {
static void tst_zp() {
std::cout << "\n\nTesting Z_p\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -363,20 +370,21 @@ static void tst_zp() {
// Computing GCD of p an q in Z[x]
std::cout << "GCD in Z[x]\n";
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
tst_gcd(p, q, um);
// Computing GCD of p an q in Z_3[x]
std::cout << "GCD in Z_3[x]\n";
upolynomial::zp_manager um3(nm);
upolynomial::zp_manager um3(rl, nm);
um3.set_zp(3);
tst_gcd(p, q, um3);
}
static void tst_zp2() {
std::cout << "\n\nTesting Z_p\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -387,20 +395,21 @@ static void tst_zp2() {
// Computing GCD of p an q in Z[x]
std::cout << "GCD in Z[x]\n";
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
tst_gcd(u, v, um);
// Computing GCD of p an q in Z_3[x]
std::cout << "GCD in Z_13[x]\n";
upolynomial::zp_manager um13(nm);
upolynomial::zp_manager um13(rl, nm);
um13.set_zp(13);
tst_gcd(u, v, um13);
}
static void tst_ext_gcd() {
std::cout << "\nExtended GCD\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -411,7 +420,7 @@ static void tst_ext_gcd() {
// Computing GCD of p an q in Z_3[x]
std::cout << "GCD in Z_13[x]\n";
upolynomial::zp_manager um(nm);
upolynomial::zp_manager um(rl, nm);
um.set_zp(13);
mpzzp_manager & z13 = um.m();
upolynomial::zp_manager::scoped_numeral_vector A(z13), B(z13), U(z13), V(z13), D(z13);
@ -427,8 +436,9 @@ static void tst_ext_gcd() {
static void tst_ext_gcd_z7() {
std::cout << "\nExtended GCD in Z_7\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -441,7 +451,7 @@ static void tst_ext_gcd_z7() {
// Computing GCD of a and b in Z_3[x]
// expecting: D = 1, U = 3*x + 6, V = 3*x^2 + 6*x + 4
std::cout << "GCD in Z_7[x]\n";
upolynomial::zp_manager um(nm);
upolynomial::zp_manager um(rl, nm);
um.set_zp(7);
mpzzp_manager & z7 = um.m();
upolynomial::zp_manager::scoped_numeral_vector A(z7), B(z7), U(z7), V(z7), D(z7);
@ -457,8 +467,9 @@ static void tst_ext_gcd_z7() {
static void tst_sturm() {
std::cout << "\nSturm Seq\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -467,7 +478,7 @@ static void tst_sturm() {
// p = ((x^17) + 5*(x^16) + 3*(x^15) + 10*(x^13) + 13*(x^10) + (x^9) + 8*(x^5) + 3*(x^2) + 7)*(((x^5) - x - 1)^2)*(((x^3) - 2)^2);
// p = ((x^17) + 5*(x^16) + 3*(x^15) + 10*(x^13) + 13*(x^10) + (x^9) + 8*(x^5) + 3*(x^2) + 7)*(((x^5) - x - 1))*(((x^3) - 2));
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
upolynomial::scoped_numeral_vector _p(um);
upolynomial::scoped_upolynomial_sequence seq2(um);
um.to_numeral_vector(p, _p);
@ -478,7 +489,8 @@ static void tst_sturm() {
static void tst_refinable(polynomial_ref const & p, mpbq_manager & bqm, mpbq & a, mpbq & b) {
upolynomial::manager um(p.m().m());
reslimit rl;
upolynomial::manager um(rl, p.m().m());
upolynomial::scoped_numeral_vector _p(um);
um.to_numeral_vector(p, _p);
std::cout << "before (" << bqm.to_string(a) << ", " << bqm.to_string(b) << ")\n";
@ -497,8 +509,9 @@ static void tst_refinable(polynomial_ref const & p, mpbq_manager & bqm, mpbq & a
static void tst_refinable() {
std::cout << "\nRefinable intervals\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -544,7 +557,7 @@ static void tst_refinable() {
}
static void tst_refine(polynomial_ref const & p, mpbq_manager & bqm, mpbq & a, mpbq & b, unsigned prec_k=100) {
upolynomial::manager um(p.m().m());
reslimit rl; upolynomial::manager um(rl, p.m().m());
upolynomial::scoped_numeral_vector _p(um);
um.to_numeral_vector(p, _p);
std::cout << "before (" << bqm.to_string(a) << ", " << bqm.to_string(b) << ")\n";
@ -561,8 +574,9 @@ static void tst_refine(polynomial_ref const & p, mpbq_manager & bqm, mpbq & a, m
static void tst_refine() {
std::cout << "\nRefining intervals\n";
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -583,14 +597,15 @@ static void tst_refine() {
}
static void tst_translate_q() {
reslimit rl;
unsynch_mpq_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
polynomial_ref p(m);
p = (x-1)*(x-2)*(x-3)*(x-4);
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
upolynomial::scoped_numeral_vector _p(um), _q(um);
um.to_numeral_vector(p, _p);
SASSERT(um.eval_sign_at(_p.size(), _p.c_ptr(), mpq(1)) == 0);
@ -637,7 +652,8 @@ static void tst_translate_q() {
}
static void tst_convert_q2bq(unsynch_mpq_manager & m, polynomial_ref const & p, mpq const & a, mpq const & b) {
upolynomial::manager um(m);
reslimit rl;
upolynomial::manager um(rl, m);
upolynomial::scoped_numeral_vector _p(um);
um.to_numeral_vector(p, _p);
std::cout << "\np: ";
@ -657,8 +673,9 @@ static void tst_convert_q2bq(unsynch_mpq_manager & m, polynomial_ref const & p,
}
static void tst_convert_q2bq() {
reslimit rl;
unsynch_mpq_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -704,8 +721,9 @@ static void tst_convert_q2bq() {
}
static void tst_sturm2() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -715,7 +733,7 @@ static void tst_sturm2() {
p = (x^16) - 136*(x^14) + 6476*(x^12) - 141912*(x^10) + 1513334*(x^8) - 7453176*(x^6) + 13950764*(x^4) - 5596840*(x^2) + 46225;
q = ((x^8) - 40*(x^6) + 352*(x^4) - 960*(x^2) + 576)^2;
upolynomial::manager um(nm);
upolynomial::manager um(rl, nm);
upolynomial::scoped_numeral_vector _p(um), _q(um);
upolynomial::scoped_upolynomial_sequence seq2(um);
um.to_numeral_vector(p, _p);
@ -784,7 +802,7 @@ static void tst_gcd2() {
polynomial_ref p(m);
p = ((x^1000) - x + 1)^5;
upolynomial::manager um(nm);
reslimit rl; upolynomial::manager um(rl, nm);
upolynomial::scoped_numeral_vector _p(um);
upolynomial::scoped_numeral_vector _p_sqf(um);
um.to_numeral_vector(p, _p);
@ -797,8 +815,9 @@ static void tst_gcd2() {
#endif
static void tst_isolate_roots5() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -811,7 +830,8 @@ static void tst_isolate_roots5() {
}
static void tst_exact_div(polynomial_ref const & p1, polynomial_ref const & p2, bool expected, polynomial_ref const & expected_q) {
upolynomial::manager um(p1.m().m());
reslimit rl;
upolynomial::manager um(rl, p1.m().m());
upolynomial::scoped_numeral_vector _p1(um), _p2(um), _q(um), _r(um);
um.to_numeral_vector(p1, _p1);
um.to_numeral_vector(p2, _p2);
@ -834,8 +854,9 @@ static void tst_exact_div(polynomial_ref const & p1, polynomial_ref const & p2,
}
static void tst_exact_div() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m);
x = m.mk_polynomial(m.mk_var());
// create univariate polynomial using multivariate polynomial package
@ -860,7 +881,7 @@ static void tst_fact(polynomial_ref const & p, unsigned num_distinct_factors, up
SASSERT(is_univariate(p));
std::cout << "---------------\n";
std::cout << "p: " << p << std::endl;
upolynomial::manager um(p.m().m());
reslimit rl; upolynomial::manager um(rl, p.m().m());
upolynomial::scoped_numeral_vector _p(um);
upolynomial::factors fs(um);
um.to_numeral_vector(p, _p);
@ -878,8 +899,9 @@ static void tst_fact(polynomial_ref const & p, unsigned num_distinct_factors, up
}
static void tst_fact() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m);
x0 = m.mk_polynomial(m.mk_var());
tst_fact((x0^4) + (x0^2) - 20, 3);
@ -975,7 +997,7 @@ static void tst_rem(polynomial_ref const & p, polynomial_ref const & q, polynomi
std::cout << "---------------\n";
std::cout << "p: " << p << std::endl;
std::cout << "q: " << q << std::endl;
upolynomial::manager um(p.m().m());
reslimit rl; upolynomial::manager um(rl, p.m().m());
upolynomial::scoped_numeral_vector _p(um), _q(um), _r(um);
um.to_numeral_vector(p, _p);
um.to_numeral_vector(q, _q);
@ -987,8 +1009,9 @@ static void tst_rem(polynomial_ref const & p, polynomial_ref const & q, polynomi
}
static void tst_rem() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x0(m), zero(m), one(m);
x0 = m.mk_polynomial(m.mk_var());
zero = m.mk_zero();
@ -1002,7 +1025,7 @@ static void tst_lower_bound(polynomial_ref const & p) {
SASSERT(is_univariate(p));
std::cout << "---------------\n";
std::cout << "p: " << p << std::endl;
upolynomial::manager um(p.m().m());
reslimit rl; upolynomial::manager um(rl, p.m().m());
upolynomial::scoped_numeral_vector _p(um);
um.to_numeral_vector(p, _p);
std::cout << "_p: "; um.display(std::cout, _p); std::cout << "\n";
@ -1012,8 +1035,9 @@ static void tst_lower_bound(polynomial_ref const & p) {
}
static void tst_lower_bound() {
reslimit rl;
polynomial::numeral_manager nm;
polynomial::manager m(nm);
polynomial::manager m(rl, nm);
polynomial_ref x(m), zero(m), one(m);
x = m.mk_polynomial(m.mk_var());
zero = m.mk_zero();