Beispiel #1
0
static PyObject *
BBox_almost_equals(PlanarBBoxObject *self, PlanarBBoxObject *other)
{
	return Py_BOOL(
		PlanarBBox_Check(self) && PlanarBBox_Check(other) &&
		almost_eq(self->min.x, other->min.x) &&
		almost_eq(self->min.y, other->min.y) &&
		almost_eq(self->max.x, other->max.x) &&
		almost_eq(self->max.y, other->max.y));
}
Beispiel #2
0
static PyObject *
BBox__mul__(PyObject *a, PyObject *b)
{
    PlanarBBoxObject *box;
    PlanarAffineObject *t;
	PyObject *p, *p_xform;
	int rectilinear;
    double ta, tb, tc, td, te, tf;
	planar_vec2_t p0, p1;

    if (PlanarBBox_Check(a) && PlanarAffine_Check(b)) {
		box = (PlanarBBoxObject *)a;
		t = (PlanarAffineObject *)b;
    } else if (PlanarBBox_Check(b) && PlanarAffine_Check(a)) {
		box = (PlanarBBoxObject *)b;
		t = (PlanarAffineObject *)a;
    } else {
		/* We support only transform operations */
		Py_INCREF(Py_NotImplemented);
		return Py_NotImplemented;
    }
    ta = t->a;
    tb = t->b;
    tc = t->c;
    td = t->d;
    te = t->e;
    tf = t->f;

	rectilinear = ((almost_eq(ta, 0.0) && almost_eq(te, 0.0))
        || (almost_eq(td, 0.0) && almost_eq(tb, 0.0)));
	if (rectilinear) {
		p0.x = box->min.x*ta + box->min.y*td + tc;
		p0.y = box->min.x*tb + box->min.y*te + tf;
		p1.x = box->max.x*ta + box->max.y*td + tc;
		p1.y = box->max.x*tb + box->max.y*te + tf;
		box = (PlanarBBoxObject *)BBox_alloc(Py_TYPE(box), 0);
		if (box != NULL) {
			box->min.x = MIN(p0.x, p1.x);
			box->min.y = MIN(p0.y, p1.y);
			box->max.x = MAX(p0.x, p1.x);
			box->max.y = MAX(p0.y, p1.y);
		}
		return (PyObject *)box;
	} else {
		p = (PyObject *)BBox_to_polygon(box);
		if (p == NULL) {
			return NULL;
		}
		p_xform = PyNumber_InPlaceMultiply(p, (PyObject *)t);
		Py_DECREF(p);
		return p_xform;
	}
}
static PyObject *
Affine_get_is_rectilinear(polypaths_planar_overrideAffineObject *self) 
{
    PyObject *r;

    if ((almost_eq(self->a, 0.0) && almost_eq(self->e, 0.0))
        || (almost_eq(self->d, 0.0) && almost_eq(self->b, 0.0))) {
        r = Py_True;
    } else {
        r = Py_False;
    }
    Py_INCREF(r);
    return r;
}
Beispiel #4
0
static void test_track(void)
{
    WCHAR textW[] = {'t','e','x','t',0};
    TTTOOLINFOW info = { 0 };
    HWND parent, tt;
    LRESULT res;
    RECT pos;

    parent = CreateWindowExW(0, WC_STATICW, NULL, WS_CAPTION | WS_VISIBLE,
            50, 50, 300, 300, NULL, NULL, NULL, 0);
    ok(parent != NULL, "creation of parent window failed\n");

    ShowWindow(parent, SW_SHOWNORMAL);
    flush_events(100);

    tt = CreateWindowExW(WS_EX_TOPMOST, TOOLTIPS_CLASSW, NULL, TTS_NOPREFIX | TTS_ALWAYSTIP,
            CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
            parent, NULL, GetModuleHandleW(NULL), 0);
    ok(tt != NULL, "creation of tooltip window failed\n");

    info.cbSize = TTTOOLINFOW_V1_SIZE;
    info.uFlags = TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE;
    info.hwnd = parent;
    info.hinst = GetModuleHandleW(NULL);
    info.lpszText = textW;
    info.uId = (UINT_PTR)parent;
    GetClientRect(parent, &info.rect);

    res = SendMessageW(tt, TTM_ADDTOOLW, 0, (LPARAM)&info);
    ok(res, "adding the tool to the tooltip failed\n");

    SendMessageW(tt, TTM_SETDELAYTIME, TTDT_INITIAL, MAKELPARAM(1,0));
    SendMessageW(tt, TTM_TRACKACTIVATE, (WPARAM)TRUE, (LPARAM)&info);
    SendMessageW(tt, TTM_TRACKPOSITION, 0, MAKELPARAM(10, 10));

    GetWindowRect(tt, &pos);
    ok(almost_eq(pos.left, 10), "pos.left = %d\n", pos.left);
    ok(almost_eq(pos.top, 10), "pos.top = %d\n", pos.top);

    info.uFlags = TTF_IDISHWND | TTF_ABSOLUTE;
    SendMessageW(tt, TTM_SETTOOLINFOW, 0, (LPARAM)&info);
    SendMessageW(tt, TTM_TRACKPOSITION, 0, MAKELPARAM(10, 10));

    GetWindowRect(tt, &pos);
    ok(!almost_eq(pos.left, 10), "pos.left = %d\n", pos.left);
    ok(!almost_eq(pos.top, 10), "pos.top = %d\n", pos.top);

    DestroyWindow(tt);
    DestroyWindow(parent);
}
void TestInHC4Revise::apply02() {
	Variable x(2),y(2);
	Function f(x,y,sqrt(sqr(x[0]-y[0])+sqr(x[1]-y[1])));

	IntervalVector constY(2,Interval::ONE);
	Function g(x, f(x,constY));
	IntervalVector box(2,Interval(0,4));
	double _pt[][2] = { {0.5,0.5} , {0.5,0.5} };
	IntervalVector pt(2,_pt);
	g.ibwd(Interval(0,1),box,pt);

	// check the box is inside by testing two corners
	TEST_ASSERT(almost_eq(g.eval(box.lb()),Interval::ONE,1e-07));
	TEST_ASSERT(almost_eq(g.eval(box.ub()),Interval::ONE,1e-07));
}
static PyObject *
Affine_get_is_orthonormal(polypaths_planar_overrideAffineObject *self) 
{
    PyObject *r;

    if (almost_eq(self->a * self->b + self->d * self->e, 0.0)
		&& almost_eq(self->a * self->a + self->d * self->d, 1.0)
		&& almost_eq(self->b * self->b + self->e * self->e, 1.0)
	) {
        r = Py_True;
    } else {
        r = Py_False;
    }
    Py_INCREF(r);
    return r;
}
 bool FlatSpatialPoolerTest::check_vector_eq(Real arr[], vector<Real> vec)
 {
   for (UInt i = 0; i < vec.size(); i++) {
     if (!almost_eq(arr[i],vec[i])) {
       return false;
     }
   }
   return true;
 }
 bool FlatSpatialPoolerTest::check_vector_eq(Real arr1[], Real arr2[], UInt n)
 {
   for (UInt i = 0; i < n; i++) {
     if (!almost_eq(arr1[i], arr2[i])) {
       return false;
     }
   }
   return true;
 }
Beispiel #9
0
bool TestIbex::almost_eq(const IntervalVector& y_actual, const IntervalVector& y_expected, double err) {
	if (y_actual.size()!=y_actual.size()) return false;
	if (y_actual.is_empty() && y_expected.is_empty()) return true;

	for (int i=0; i<y_actual.size(); i++) {
		if (!almost_eq(y_actual[i], y_expected[i],err)) return false;
	}

	return true;
}
Beispiel #10
0
void TestNewton::inflating_newton01() {
	Ponts30 p30;
	double eps=1e-2;
	IntervalVector error(30,-eps);
	IntervalVector box(30,BOX2);
	box += error;
	IntervalVector expected(30,BOX2);
	bool ret=inflating_newton(*p30.f,box);
	TEST_ASSERT(ret);
	TEST_ASSERT(almost_eq(box,expected,1e-10));
}
static PyObject *
Affine_get_is_degenerate(polypaths_planar_overrideAffineObject *self) 
{
    PyObject *r;

    if (almost_eq(self->a*self->e - self->b*self->d, 0.0)) {
        r = Py_True;
    } else {
        r = Py_False;
    }
    Py_INCREF(r);
    return r;
}
Beispiel #12
0
void TestCtcHC4::ponts30() {
	Ponts30 p30;
	IntervalVector box = p30.init_box;

	NumConstraint* ctr[30];
	CtcFwdBwd* c[30];

	for (int i=0; i<30; i++) {
		Function* fi=dynamic_cast<Function*>(&((*p30.f)[i]));
		TEST_ASSERT(fi!=NULL);
		ctr[i]=new NumConstraint(*fi,EQ);
		c[i]=new CtcFwdBwd(*ctr[i]);
	}
//	cout << "before="<< box << endl;

	for (int i=0; i<30; i++) {
		c[i]->contract(box);
		//cout << box << endl;
		//cout << p30.hc4r_box[i] << endl;
		//c[i]->hc4r.eval.f.cf.print<Domain>();
		TEST_ASSERT(almost_eq(box, p30.hc4r_box[i],1e-02));
	}
	//cout << "after="<< box << endl;
	box = p30.init_box;

	Array<NumConstraint> a(ctr,30);
	CtcHC4 hc4(a,0.1);
	hc4.accumulate=true;
	box=p30.init_box;
	hc4.contract(box);

	TEST_ASSERT(almost_eq(box, p30.hc4_box,1e-04));

	for (int i=0; i<30; i++) {
		delete c[i];
		delete ctr[i];
	}
}
Beispiel #13
0
void TestNewton::newton01() {
	Ponts30 p30;
	IntervalVector box(30,BOX1);
	try {
		newton(*p30.f,box);
	} catch (EmptyBoxException& e) {
		//cout << "empty box" << endl;
		TEST_ASSERT(false);
	} catch (LinearException& e) {
		//cout << "linear exception" << endl;
		TEST_ASSERT(false);
	}

	IntervalVector expected(30,BOX2);
	//cout << expected << endl << endl << endl;
	//cout << box << endl;
	TEST_ASSERT(almost_eq(box,expected,1e-10));
}
static PyObject *
Affine_get_is_identity(polypaths_planar_overrideAffineObject *self) 
{
    PyObject *r;

    if (almost_eq(self->a, 1.0) && almost_eq(self->b, 0.0) 
        && almost_eq(self->c, 0.0) && almost_eq(self->d, 0.0)
        && almost_eq(self->e, 1.0) && almost_eq(self->f, 0.0)) {
        r = Py_True;
    } else {
        r = Py_False;
    }
    Py_INCREF(r);
    return r;
}
static PyObject *
Affine_almost_equals(polypaths_planar_overrideAffineObject *self, polypaths_planar_overrideAffineObject *other)
{
    PyObject *r;

    assert(polypaths_planar_overrideAffine_Check(self));
    if (polypaths_planar_overrideAffine_Check(other)) {
        if (almost_eq(self->a, other->a) 
         && almost_eq(self->b, other->b)
         && almost_eq(self->c, other->c)
         && almost_eq(self->d, other->d)
         && almost_eq(self->e, other->e)
         && almost_eq(self->f, other->f)) {
            r = Py_True;
        } else {
            r = Py_False;
        }
        Py_INCREF(r);
        return r;
    } else {
        CONVERSION_ERROR();
    }
}
Beispiel #16
0
void TestGradient::jac01() {
	IntervalMatrix J(30,30);
	Ponts30 p30;
	p30.f->jacobian(IntervalVector(30,BOX1),J);
	double error=1e-5;

	CPPUNIT_ASSERT(almost_eq(J[0][0],Interval(0.483002,0.491002),error));
	CPPUNIT_ASSERT(almost_eq(J[0][1],Interval(0.109265,0.117265),error));
	CPPUNIT_ASSERT(almost_eq(J[0][2],Interval(-0.491002,-0.483002),error));
	CPPUNIT_ASSERT(almost_eq(J[0][3],Interval(-0.117265,-0.109265),error));
	CPPUNIT_ASSERT(almost_eq(J[1][0],Interval(0.14141,0.14941),error));
	CPPUNIT_ASSERT(almost_eq(J[1][1],Interval(0.474389,0.482389),error));
	CPPUNIT_ASSERT(almost_eq(J[1][4],Interval(-0.14941,-0.14141),error));
	CPPUNIT_ASSERT(almost_eq(J[1][5],Interval(-0.482389,-0.474389),error));
	CPPUNIT_ASSERT(almost_eq(J[2][2],Interval(-0.345592,-0.337592),error));
	CPPUNIT_ASSERT(almost_eq(J[2][3],Interval(0.361124,0.369124),error));
	CPPUNIT_ASSERT(almost_eq(J[2][4],Interval(0.337592,0.345592),error));
	CPPUNIT_ASSERT(almost_eq(J[2][5],Interval(-0.369124,-0.361124),error));
	CPPUNIT_ASSERT(almost_eq(J[3][2],Interval(0.483002,0.491002),error));
	CPPUNIT_ASSERT(almost_eq(J[3][3],Interval(0.109265,0.117265),error));
	CPPUNIT_ASSERT(almost_eq(J[3][10],Interval(-0.491002,-0.483002),error));
	CPPUNIT_ASSERT(almost_eq(J[3][11],Interval(-0.117265,-0.109265),error));
	CPPUNIT_ASSERT(almost_eq(J[4][4],Interval(0.023626,0.031626),error));
	CPPUNIT_ASSERT(almost_eq(J[4][5],Interval(0.495236,0.503236),error));
	CPPUNIT_ASSERT(almost_eq(J[4][6],Interval(-0.031626,-0.023626),error));
	CPPUNIT_ASSERT(almost_eq(J[4][7],Interval(-0.503236,-0.495236),error));
	CPPUNIT_ASSERT(almost_eq(J[5][4],Interval(0.483002,0.491002),error));
	CPPUNIT_ASSERT(almost_eq(J[5][5],Interval(0.109265,0.117265),error));
	CPPUNIT_ASSERT(almost_eq(J[5][8],Interval(-0.491002,-0.483002),error));
	CPPUNIT_ASSERT(almost_eq(J[5][9],Interval(-0.117265,-0.109265),error));
	CPPUNIT_ASSERT(almost_eq(J[6][6],Interval(-0.104805,-0.096805),error));
	CPPUNIT_ASSERT(almost_eq(J[6][7],Interval(0.485733,0.493733),error));
	CPPUNIT_ASSERT(almost_eq(J[6][16],Interval(0.096805,0.104805),error));
	CPPUNIT_ASSERT(almost_eq(J[6][17],Interval(-0.493733,-0.485733),error));
	CPPUNIT_ASSERT(almost_eq(J[7][6],Interval(0.455376,0.463376),error));
	CPPUNIT_ASSERT(almost_eq(J[7][7],Interval(-0.389971,-0.381971),error));
	CPPUNIT_ASSERT(almost_eq(J[7][8],Interval(-0.463376,-0.455376),error));
	CPPUNIT_ASSERT(almost_eq(J[7][9],Interval(0.381971,0.389971),error));
	CPPUNIT_ASSERT(almost_eq(J[8][8],Interval(0.337592,0.345592),error));
	CPPUNIT_ASSERT(almost_eq(J[8][9],Interval(-0.369124,-0.361124),error));
	CPPUNIT_ASSERT(almost_eq(J[8][10],Interval(-0.345592,-0.337592),error));
	CPPUNIT_ASSERT(almost_eq(J[8][11],Interval(0.361124,0.369124),error));
	CPPUNIT_ASSERT(almost_eq(J[9][2],Interval(0.14141,0.14941),error));
	CPPUNIT_ASSERT(almost_eq(J[9][3],Interval(0.474389,0.482389),error));
	CPPUNIT_ASSERT(almost_eq(J[9][8],Interval(-0.14941,-0.14141),error));
	CPPUNIT_ASSERT(almost_eq(J[9][9],Interval(-0.482389,-0.474389),error));
	CPPUNIT_ASSERT(almost_eq(J[10][10],Interval(5.18921,5.19721),error));
	CPPUNIT_ASSERT(almost_eq(J[10][11],Interval(3.00109,3.00909),error));
	CPPUNIT_ASSERT(almost_eq(J[10][12],Interval(-5.19721,-5.18921),error));
	CPPUNIT_ASSERT(almost_eq(J[10][13],Interval(-3.00909,-3.00109),error));
	CPPUNIT_ASSERT(almost_eq(J[11][10],Interval(1.18242,1.19042),error));
	CPPUNIT_ASSERT(almost_eq(J[11][11],Interval(9.92537,9.93337),error));
	CPPUNIT_ASSERT(almost_eq(J[11][14],Interval(-1.19042,-1.18242),error));
	CPPUNIT_ASSERT(almost_eq(J[11][15],Interval(-9.93337,-9.92537),error));
	CPPUNIT_ASSERT(almost_eq(J[12][12],Interval(-9.204,-9.196),error));
	CPPUNIT_ASSERT(almost_eq(J[12][13],Interval(3.91518,3.92318),error));
	CPPUNIT_ASSERT(almost_eq(J[12][26],Interval(9.196,9.204),error));
	CPPUNIT_ASSERT(almost_eq(J[12][27],Interval(-3.92318,-3.91518),error));
	CPPUNIT_ASSERT(almost_eq(J[13][12],Interval(0.796,0.804),error));
	CPPUNIT_ASSERT(almost_eq(J[13][13],Interval(3.91518,3.92318),error));
	CPPUNIT_ASSERT(almost_eq(J[13][28],Interval(-0.804,-0.796),error));
	CPPUNIT_ASSERT(almost_eq(J[13][29],Interval(-3.92318,-3.91518),error));
	CPPUNIT_ASSERT(almost_eq(J[14][14],Interval(-5.19721,-5.18921),error));
	CPPUNIT_ASSERT(almost_eq(J[14][15],Interval(-3.00909,-3.00109),error));
	CPPUNIT_ASSERT(almost_eq(J[14][26],Interval(5.18921,5.19721),error));
	CPPUNIT_ASSERT(almost_eq(J[14][27],Interval(3.00109,3.00909),error));
	CPPUNIT_ASSERT(almost_eq(J[15][12],Interval(-4.01079,-4.00279),error));
	CPPUNIT_ASSERT(almost_eq(J[15][13],Interval(6.92028,6.92828),error));
	CPPUNIT_ASSERT(almost_eq(J[15][14],Interval(4.00279,4.01079),error));
	CPPUNIT_ASSERT(almost_eq(J[15][15],Interval(-6.92828,-6.92028),error));
	CPPUNIT_ASSERT(almost_eq(J[16][16],Interval(-0.377719,-0.369719),error));
	CPPUNIT_ASSERT(almost_eq(J[16][17],Interval(-0.336166,-0.328166),error));
	CPPUNIT_ASSERT(almost_eq(J[16][18],Interval(0.369719,0.377719),error));
	CPPUNIT_ASSERT(almost_eq(J[16][19],Interval(0.328166,0.336166),error));
	CPPUNIT_ASSERT(almost_eq(J[17][16],Interval(-0.104805,-0.096805),error));
	CPPUNIT_ASSERT(almost_eq(J[17][17],Interval(0.485733,0.493733),error));
	CPPUNIT_ASSERT(almost_eq(J[17][24],Interval(0.096805,0.104805),error));
	CPPUNIT_ASSERT(almost_eq(J[17][25],Interval(-0.493733,-0.485733),error));
	CPPUNIT_ASSERT(almost_eq(J[18][6],Interval(-0.478524,-0.470524),error));
	CPPUNIT_ASSERT(almost_eq(J[18][7],Interval(0.153567,0.161567),error));
	CPPUNIT_ASSERT(almost_eq(J[18][18],Interval(0.470524,0.478524),error));
	CPPUNIT_ASSERT(almost_eq(J[18][19],Interval(-0.161567,-0.153567),error));
	CPPUNIT_ASSERT(almost_eq(J[19][18],Interval(-0.104805,-0.096805),error));
	CPPUNIT_ASSERT(almost_eq(J[19][19],Interval(0.485733,0.493733),error));
	CPPUNIT_ASSERT(almost_eq(J[19][22],Interval(0.096805,0.104805),error));
	CPPUNIT_ASSERT(almost_eq(J[19][23],Interval(-0.493733,-0.485733),error));
	CPPUNIT_ASSERT(almost_eq(J[20][20],Interval(0.369719,0.377719),error));
	CPPUNIT_ASSERT(almost_eq(J[20][21],Interval(0.328166,0.336166),error));
	CPPUNIT_ASSERT(almost_eq(J[20][22],Interval(-0.377719,-0.369719),error));
	CPPUNIT_ASSERT(almost_eq(J[20][23],Interval(-0.336166,-0.328166),error));
	CPPUNIT_ASSERT(almost_eq(J[21][18],Interval(-0.478524,-0.470524),error));
	CPPUNIT_ASSERT(almost_eq(J[21][19],Interval(0.153567,0.161567),error));
	CPPUNIT_ASSERT(almost_eq(J[21][20],Interval(0.470524,0.478524),error));
	CPPUNIT_ASSERT(almost_eq(J[21][21],Interval(-0.161567,-0.153567),error));
	CPPUNIT_ASSERT(almost_eq(J[22][16],Interval(-0.478524,-0.470524),error));
	CPPUNIT_ASSERT(almost_eq(J[22][17],Interval(0.153567,0.161567),error));
	CPPUNIT_ASSERT(almost_eq(J[22][22],Interval(0.470524,0.478524),error));
	CPPUNIT_ASSERT(almost_eq(J[22][23],Interval(-0.161567,-0.153567),error));
	CPPUNIT_ASSERT(almost_eq(J[23][22],Interval(0.369719,0.377719),error));
	CPPUNIT_ASSERT(almost_eq(J[23][23],Interval(0.328166,0.336166),error));
	CPPUNIT_ASSERT(almost_eq(J[23][24],Interval(-0.377719,-0.369719),error));
	CPPUNIT_ASSERT(almost_eq(J[23][25],Interval(-0.336166,-0.328166),error));
	CPPUNIT_ASSERT(almost_eq(J[24][14],Interval(-2.19299,-2.18499),error));
	CPPUNIT_ASSERT(almost_eq(J[24][15],Interval(-8.20281,-8.19481),error));
	CPPUNIT_ASSERT(almost_eq(J[24][24],Interval(2.18499,2.19299),error));
	CPPUNIT_ASSERT(almost_eq(J[24][25],Interval(8.19481,8.20281),error));
	CPPUNIT_ASSERT(almost_eq(J[25][24],Interval(-3.00821,-3.00021),error));
	CPPUNIT_ASSERT(almost_eq(J[25][25],Interval(5.18972,5.19772),error));
	CPPUNIT_ASSERT(almost_eq(J[25][26],Interval(3.00021,3.00821),error));
	CPPUNIT_ASSERT(almost_eq(J[25][27],Interval(-5.19772,-5.18972),error));
	CPPUNIT_ASSERT(almost_eq(J[26][26],Interval(9.996,10.004),error));
	CPPUNIT_ASSERT(almost_eq(J[26][27],Interval(-0.004,0.004),error));
	CPPUNIT_ASSERT(almost_eq(J[26][28],Interval(-10.004,-9.996),error));
	CPPUNIT_ASSERT(almost_eq(J[26][29],Interval(-0.004,0.004),error));
	CPPUNIT_ASSERT(almost_eq(J[27][27],Interval(1,1),error));
	CPPUNIT_ASSERT(almost_eq(J[28][28],Interval(1,1),error));
	CPPUNIT_ASSERT(almost_eq(J[29][29],Interval(1,1),error));
}
Beispiel #17
0
static bool stamp_almost_eq(heatmap_stamp_t* s, float* expected)
{
    return almost_eq(s->buf, expected, s->w*s->h);
}
Beispiel #18
0
void TestGradient::jac02() {
	IntervalMatrix J(30,30);
	Ponts30 p30;
	p30.f->jacobian(IntervalVector(30,BOX2),J);
	double error=1e-5;

	CPPUNIT_ASSERT(almost_eq(J[0][0],Interval(0.48632,0.487549),error));
	CPPUNIT_ASSERT(almost_eq(J[0][1],Interval(0.112083,0.115061),error));
	CPPUNIT_ASSERT(almost_eq(J[0][2],Interval(-0.487549,-0.48632),error));
	CPPUNIT_ASSERT(almost_eq(J[0][3],Interval(-0.115061,-0.112083),error));
	CPPUNIT_ASSERT(almost_eq(J[1][0],Interval(0.143925,0.146181),error));
	CPPUNIT_ASSERT(almost_eq(J[1][1],Interval(0.476964,0.480027),error));
	CPPUNIT_ASSERT(almost_eq(J[1][4],Interval(-0.146181,-0.143925),error));
	CPPUNIT_ASSERT(almost_eq(J[1][5],Interval(-0.480027,-0.476964),error));
	CPPUNIT_ASSERT(almost_eq(J[2][2],Interval(-0.342653,-0.341109),error));
	CPPUNIT_ASSERT(almost_eq(J[2][3],Interval(0.363777,0.36607),error));
	CPPUNIT_ASSERT(almost_eq(J[2][4],Interval(0.341109,0.342653),error));
	CPPUNIT_ASSERT(almost_eq(J[2][5],Interval(-0.36607,-0.363777),error));
	CPPUNIT_ASSERT(almost_eq(J[3][2],Interval(0.486787,0.487045),error));
	CPPUNIT_ASSERT(almost_eq(J[3][3],Interval(0.113082,0.114187),error));
	CPPUNIT_ASSERT(almost_eq(J[3][10],Interval(-0.487045,-0.486787),error));
	CPPUNIT_ASSERT(almost_eq(J[3][11],Interval(-0.114187,-0.113082),error));
	CPPUNIT_ASSERT(almost_eq(J[4][4],Interval(0.0255079,0.0276924),error));
	CPPUNIT_ASSERT(almost_eq(J[4][5],Interval(0.498262,0.500422),error));
	CPPUNIT_ASSERT(almost_eq(J[4][6],Interval(-0.0276924,-0.0255079),error));
	CPPUNIT_ASSERT(almost_eq(J[4][7],Interval(-0.500422,-0.498262),error));
	CPPUNIT_ASSERT(almost_eq(J[5][4],Interval(0.485872,0.487985),error));
	CPPUNIT_ASSERT(almost_eq(J[5][5],Interval(0.112593,0.114557),error));
	CPPUNIT_ASSERT(almost_eq(J[5][8],Interval(-0.487985,-0.485872),error));
	CPPUNIT_ASSERT(almost_eq(J[5][9],Interval(-0.114557,-0.112593),error));
	CPPUNIT_ASSERT(almost_eq(J[6][6],Interval(-0.101143,-0.0972429),error));
	CPPUNIT_ASSERT(almost_eq(J[6][7],Interval(0.489483,0.490794),error));
	CPPUNIT_ASSERT(almost_eq(J[6][16],Interval(0.0972429,0.101143),error));
	CPPUNIT_ASSERT(almost_eq(J[6][17],Interval(-0.490794,-0.489483),error));
	CPPUNIT_ASSERT(almost_eq(J[7][6],Interval(0.459466,0.461192),error));
	CPPUNIT_ASSERT(almost_eq(J[7][7],Interval(-0.38664,-0.384894),error));
	CPPUNIT_ASSERT(almost_eq(J[7][8],Interval(-0.461192,-0.459466),error));
	CPPUNIT_ASSERT(almost_eq(J[7][9],Interval(0.384894,0.38664),error));
	CPPUNIT_ASSERT(almost_eq(J[8][8],Interval(0.341455,0.342282),error));
	CPPUNIT_ASSERT(almost_eq(J[8][9],Interval(-0.365251,-0.364476),error));
	CPPUNIT_ASSERT(almost_eq(J[8][10],Interval(-0.342282,-0.341455),error));
	CPPUNIT_ASSERT(almost_eq(J[8][11],Interval(0.364476,0.365251),error));
	CPPUNIT_ASSERT(almost_eq(J[9][2],Interval(0.144505,0.145591),error));
	CPPUNIT_ASSERT(almost_eq(J[9][3],Interval(0.477559,0.479438),error));
	CPPUNIT_ASSERT(almost_eq(J[9][8],Interval(-0.145591,-0.144505),error));
	CPPUNIT_ASSERT(almost_eq(J[9][9],Interval(-0.479438,-0.477559),error));
	CPPUNIT_ASSERT(almost_eq(J[10][10],Interval(5.19321,5.19321),error));
	CPPUNIT_ASSERT(almost_eq(J[10][11],Interval(3.00509,3.00509),error));
	CPPUNIT_ASSERT(almost_eq(J[10][12],Interval(-5.19321,-5.19321),error));
	CPPUNIT_ASSERT(almost_eq(J[10][13],Interval(-3.00509,-3.00509),error));
	CPPUNIT_ASSERT(almost_eq(J[11][10],Interval(1.18642,1.18642),error));
	CPPUNIT_ASSERT(almost_eq(J[11][11],Interval(9.92937,9.92937),error));
	CPPUNIT_ASSERT(almost_eq(J[11][14],Interval(-1.18642,-1.18642),error));
	CPPUNIT_ASSERT(almost_eq(J[11][15],Interval(-9.92937,-9.92937),error));
	CPPUNIT_ASSERT(almost_eq(J[12][12],Interval(-9.2,-9.2),error));
	CPPUNIT_ASSERT(almost_eq(J[12][13],Interval(3.91918,3.91918),error));
	CPPUNIT_ASSERT(almost_eq(J[12][26],Interval(9.2,9.2),error));
	CPPUNIT_ASSERT(almost_eq(J[12][27],Interval(-3.91918,-3.91918),error));
	CPPUNIT_ASSERT(almost_eq(J[13][12],Interval(0.8,0.8),error));
	CPPUNIT_ASSERT(almost_eq(J[13][13],Interval(3.91918,3.91918),error));
	CPPUNIT_ASSERT(almost_eq(J[13][28],Interval(-0.8,-0.8),error));
	CPPUNIT_ASSERT(almost_eq(J[13][29],Interval(-3.91918,-3.91918),error));
	CPPUNIT_ASSERT(almost_eq(J[14][14],Interval(-5.19321,-5.19321),error));
	CPPUNIT_ASSERT(almost_eq(J[14][15],Interval(-3.00509,-3.00509),error));
	CPPUNIT_ASSERT(almost_eq(J[14][26],Interval(5.19321,5.19321),error));
	CPPUNIT_ASSERT(almost_eq(J[14][27],Interval(3.00509,3.00509),error));
	CPPUNIT_ASSERT(almost_eq(J[15][12],Interval(-4.00679,-4.00679),error));
	CPPUNIT_ASSERT(almost_eq(J[15][13],Interval(6.92428,6.92428),error));
	CPPUNIT_ASSERT(almost_eq(J[15][14],Interval(4.00679,4.00679),error));
	CPPUNIT_ASSERT(almost_eq(J[15][15],Interval(-6.92428,-6.92428),error));
	CPPUNIT_ASSERT(almost_eq(J[16][16],Interval(-0.378006,-0.372188),error));
	CPPUNIT_ASSERT(almost_eq(J[16][17],Interval(-0.334222,-0.329547),error));
	CPPUNIT_ASSERT(almost_eq(J[16][18],Interval(0.372188,0.378006),error));
	CPPUNIT_ASSERT(almost_eq(J[16][19],Interval(0.329547,0.334222),error));
	CPPUNIT_ASSERT(almost_eq(J[17][16],Interval(-0.102688,-0.0996866),error));
	CPPUNIT_ASSERT(almost_eq(J[17][17],Interval(0.489621,0.489962),error));
	CPPUNIT_ASSERT(almost_eq(J[17][24],Interval(0.0996866,0.102688),error));
	CPPUNIT_ASSERT(almost_eq(J[17][25],Interval(-0.489962,-0.489621),error));
	CPPUNIT_ASSERT(almost_eq(J[18][6],Interval(-0.476148,-0.472432),error));
	CPPUNIT_ASSERT(almost_eq(J[18][7],Interval(0.155602,0.160906),error));
	CPPUNIT_ASSERT(almost_eq(J[18][18],Interval(0.472432,0.476148),error));
	CPPUNIT_ASSERT(almost_eq(J[18][19],Interval(-0.160906,-0.155602),error));
	CPPUNIT_ASSERT(almost_eq(J[19][18],Interval(-0.102939,-0.0971202),error));
	CPPUNIT_ASSERT(almost_eq(J[19][19],Interval(0.485907,0.493623),error));
	CPPUNIT_ASSERT(almost_eq(J[19][22],Interval(0.0971202,0.102939),error));
	CPPUNIT_ASSERT(almost_eq(J[19][23],Interval(-0.493623,-0.485907),error));
	CPPUNIT_ASSERT(almost_eq(J[20][20],Interval(0.366904,0.381292),error));
	CPPUNIT_ASSERT(almost_eq(J[20][21],Interval(0.320063,0.34306),error));
	CPPUNIT_ASSERT(almost_eq(J[20][22],Interval(-0.381292,-0.366904),error));
	CPPUNIT_ASSERT(almost_eq(J[20][23],Interval(-0.34306,-0.320063),error));
	CPPUNIT_ASSERT(almost_eq(J[21][18],Interval(-0.481229,-0.467026),error));
	CPPUNIT_ASSERT(almost_eq(J[21][19],Interval(0.146229,0.170178),error));
	CPPUNIT_ASSERT(almost_eq(J[21][20],Interval(0.467026,0.481229),error));
	CPPUNIT_ASSERT(almost_eq(J[21][21],Interval(-0.170178,-0.146229),error));
	CPPUNIT_ASSERT(almost_eq(J[22][16],Interval(-0.478128,-0.472125),error));
	CPPUNIT_ASSERT(almost_eq(J[22][17],Interval(0.156019,0.159742),error));
	CPPUNIT_ASSERT(almost_eq(J[22][22],Interval(0.472125,0.478128),error));
	CPPUNIT_ASSERT(almost_eq(J[22][23],Interval(-0.159742,-0.156019),error));
	CPPUNIT_ASSERT(almost_eq(J[23][22],Interval(0.372438,0.37544),error));
	CPPUNIT_ASSERT(almost_eq(J[23][23],Interval(0.33022,0.333601),error));
	CPPUNIT_ASSERT(almost_eq(J[23][24],Interval(-0.37544,-0.372438),error));
	CPPUNIT_ASSERT(almost_eq(J[23][25],Interval(-0.333601,-0.33022),error));
	CPPUNIT_ASSERT(almost_eq(J[24][14],Interval(-2.18899,-2.18899),error));
	CPPUNIT_ASSERT(almost_eq(J[24][15],Interval(-8.19881,-8.19881),error));
	CPPUNIT_ASSERT(almost_eq(J[24][24],Interval(2.18899,2.18899),error));
	CPPUNIT_ASSERT(almost_eq(J[24][25],Interval(8.19881,8.19881),error));
	CPPUNIT_ASSERT(almost_eq(J[25][24],Interval(-3.00421,-3.00421),error));
	CPPUNIT_ASSERT(almost_eq(J[25][25],Interval(5.19372,5.19372),error));
	CPPUNIT_ASSERT(almost_eq(J[25][26],Interval(3.00421,3.00421),error));
	CPPUNIT_ASSERT(almost_eq(J[25][27],Interval(-5.19372,-5.19372),error));
	CPPUNIT_ASSERT(almost_eq(J[26][26],Interval(10,10),error));
	CPPUNIT_ASSERT(almost_eq(J[26][28],Interval(-10,-10),error));
	CPPUNIT_ASSERT(almost_eq(J[27][27],Interval(1,1),error));
	CPPUNIT_ASSERT(almost_eq(J[28][28],Interval(1,1),error));
	CPPUNIT_ASSERT(almost_eq(J[29][29],Interval(1,1),error));
}
Beispiel #19
0
void TestEval::issue242() {
	Function f("x[3]","-x");
	IntervalVector x(3,Interval::ONE);
	CPPUNIT_ASSERT(almost_eq(f.eval_vector(x),-x,0));
}
Beispiel #20
0
void TestGradient::hansen01() {
	IntervalMatrix H(30,30);
	Ponts30 p30;
	p30.f->hansen_matrix(IntervalVector(30,BOX1),H);
	double error=1e-05;
	CPPUNIT_ASSERT(almost_eq(H[0][0],Interval(0.485002,0.489002),error));
	CPPUNIT_ASSERT(almost_eq(H[0][1],Interval(0.111265,0.115265),error));
	CPPUNIT_ASSERT(almost_eq(H[0][2],Interval(-0.491002,-0.483002),error));
	CPPUNIT_ASSERT(almost_eq(H[0][3],Interval(-0.117265,-0.109265),error));
	CPPUNIT_ASSERT(almost_eq(H[1][0],Interval(0.14341,0.14741),error));
	CPPUNIT_ASSERT(almost_eq(H[1][1],Interval(0.476389,0.480389),error));
	CPPUNIT_ASSERT(almost_eq(H[1][4],Interval(-0.14941,-0.14141),error));
	CPPUNIT_ASSERT(almost_eq(H[1][5],Interval(-0.482389,-0.474389),error));
	CPPUNIT_ASSERT(almost_eq(H[2][2],Interval(-0.343592,-0.339592),error));
	CPPUNIT_ASSERT(almost_eq(H[2][3],Interval(0.363124,0.367124),error));
	CPPUNIT_ASSERT(almost_eq(H[2][4],Interval(0.337592,0.345592),error));
	CPPUNIT_ASSERT(almost_eq(H[2][5],Interval(-0.369124,-0.361124),error));
	CPPUNIT_ASSERT(almost_eq(H[3][2],Interval(0.485002,0.489002),error));
	CPPUNIT_ASSERT(almost_eq(H[3][3],Interval(0.111265,0.115265),error));
	CPPUNIT_ASSERT(almost_eq(H[3][10],Interval(-0.491002,-0.483002),error));
	CPPUNIT_ASSERT(almost_eq(H[3][11],Interval(-0.117265,-0.109265),error));
	CPPUNIT_ASSERT(almost_eq(H[4][4],Interval(0.025626,0.029626),error));
	CPPUNIT_ASSERT(almost_eq(H[4][5],Interval(0.497236,0.501236),error));
	CPPUNIT_ASSERT(almost_eq(H[4][6],Interval(-0.031626,-0.023626),error));
	CPPUNIT_ASSERT(almost_eq(H[4][7],Interval(-0.503236,-0.495236),error));
	CPPUNIT_ASSERT(almost_eq(H[5][4],Interval(0.485002,0.489002),error));
	CPPUNIT_ASSERT(almost_eq(H[5][5],Interval(0.111265,0.115265),error));
	CPPUNIT_ASSERT(almost_eq(H[5][8],Interval(-0.491002,-0.483002),error));
	CPPUNIT_ASSERT(almost_eq(H[5][9],Interval(-0.117265,-0.109265),error));
	CPPUNIT_ASSERT(almost_eq(H[6][6],Interval(-0.102805,-0.098805),error));
	CPPUNIT_ASSERT(almost_eq(H[6][7],Interval(0.487733,0.491733),error));
	CPPUNIT_ASSERT(almost_eq(H[6][16],Interval(0.096805,0.104805),error));
	CPPUNIT_ASSERT(almost_eq(H[6][17],Interval(-0.493733,-0.485733),error));
	CPPUNIT_ASSERT(almost_eq(H[7][6],Interval(0.457376,0.461376),error));
	CPPUNIT_ASSERT(almost_eq(H[7][7],Interval(-0.387971,-0.383971),error));
	CPPUNIT_ASSERT(almost_eq(H[7][8],Interval(-0.463376,-0.455376),error));
	CPPUNIT_ASSERT(almost_eq(H[7][9],Interval(0.381971,0.389971),error));
	CPPUNIT_ASSERT(almost_eq(H[8][8],Interval(0.339592,0.343592),error));
	CPPUNIT_ASSERT(almost_eq(H[8][9],Interval(-0.367124,-0.363124),error));
	CPPUNIT_ASSERT(almost_eq(H[8][10],Interval(-0.345592,-0.337592),error));
	CPPUNIT_ASSERT(almost_eq(H[8][11],Interval(0.361124,0.369124),error));
	CPPUNIT_ASSERT(almost_eq(H[9][2],Interval(0.14341,0.14741),error));
	CPPUNIT_ASSERT(almost_eq(H[9][3],Interval(0.476389,0.480389),error));
	CPPUNIT_ASSERT(almost_eq(H[9][8],Interval(-0.14941,-0.14141),error));
	CPPUNIT_ASSERT(almost_eq(H[9][9],Interval(-0.482389,-0.474389),error));
	CPPUNIT_ASSERT(almost_eq(H[10][10],Interval(5.19121,5.19521),error));
	CPPUNIT_ASSERT(almost_eq(H[10][11],Interval(3.00309,3.00709),error));
	CPPUNIT_ASSERT(almost_eq(H[10][12],Interval(-5.19721,-5.18921),error));
	CPPUNIT_ASSERT(almost_eq(H[10][13],Interval(-3.00909,-3.00109),error));
	CPPUNIT_ASSERT(almost_eq(H[11][10],Interval(1.18442,1.18842),error));
	CPPUNIT_ASSERT(almost_eq(H[11][11],Interval(9.92737,9.93137),error));
	CPPUNIT_ASSERT(almost_eq(H[11][14],Interval(-1.19042,-1.18242),error));
	CPPUNIT_ASSERT(almost_eq(H[11][15],Interval(-9.93337,-9.92537),error));
	CPPUNIT_ASSERT(almost_eq(H[12][12],Interval(-9.202,-9.198),error));
	CPPUNIT_ASSERT(almost_eq(H[12][13],Interval(3.91718,3.92118),error));
	CPPUNIT_ASSERT(almost_eq(H[12][26],Interval(9.196,9.204),error));
	CPPUNIT_ASSERT(almost_eq(H[12][27],Interval(-3.92318,-3.91518),error));
	CPPUNIT_ASSERT(almost_eq(H[13][12],Interval(0.798,0.802),error));
	CPPUNIT_ASSERT(almost_eq(H[13][13],Interval(3.91718,3.92118),error));
	CPPUNIT_ASSERT(almost_eq(H[13][28],Interval(-0.804,-0.796),error));
	CPPUNIT_ASSERT(almost_eq(H[13][29],Interval(-3.92318,-3.91518),error));
	CPPUNIT_ASSERT(almost_eq(H[14][14],Interval(-5.19521,-5.19121),error));
	CPPUNIT_ASSERT(almost_eq(H[14][15],Interval(-3.00709,-3.00309),error));
	CPPUNIT_ASSERT(almost_eq(H[14][26],Interval(5.18921,5.19721),error));
	CPPUNIT_ASSERT(almost_eq(H[14][27],Interval(3.00109,3.00909),error));
	CPPUNIT_ASSERT(almost_eq(H[15][12],Interval(-4.00879,-4.00479),error));
	CPPUNIT_ASSERT(almost_eq(H[15][13],Interval(6.92228,6.92628),error));
	CPPUNIT_ASSERT(almost_eq(H[15][14],Interval(4.00279,4.01079),error));
	CPPUNIT_ASSERT(almost_eq(H[15][15],Interval(-6.92828,-6.92028),error));
	CPPUNIT_ASSERT(almost_eq(H[16][16],Interval(-0.375719,-0.371719),error));
	CPPUNIT_ASSERT(almost_eq(H[16][17],Interval(-0.334166,-0.330166),error));
	CPPUNIT_ASSERT(almost_eq(H[16][18],Interval(0.369719,0.377719),error));
	CPPUNIT_ASSERT(almost_eq(H[16][19],Interval(0.328166,0.336166),error));
	CPPUNIT_ASSERT(almost_eq(H[17][16],Interval(-0.102805,-0.098805),error));
	CPPUNIT_ASSERT(almost_eq(H[17][17],Interval(0.487733,0.491733),error));
	CPPUNIT_ASSERT(almost_eq(H[17][24],Interval(0.096805,0.104805),error));
	CPPUNIT_ASSERT(almost_eq(H[17][25],Interval(-0.493733,-0.485733),error));
	CPPUNIT_ASSERT(almost_eq(H[18][6],Interval(-0.476524,-0.472524),error));
	CPPUNIT_ASSERT(almost_eq(H[18][7],Interval(0.155567,0.159567),error));
	CPPUNIT_ASSERT(almost_eq(H[18][18],Interval(0.470524,0.478524),error));
	CPPUNIT_ASSERT(almost_eq(H[18][19],Interval(-0.161567,-0.153567),error));
	CPPUNIT_ASSERT(almost_eq(H[19][18],Interval(-0.102805,-0.098805),error));
	CPPUNIT_ASSERT(almost_eq(H[19][19],Interval(0.487733,0.491733),error));
	CPPUNIT_ASSERT(almost_eq(H[19][22],Interval(0.096805,0.104805),error));
	CPPUNIT_ASSERT(almost_eq(H[19][23],Interval(-0.493733,-0.485733),error));
	CPPUNIT_ASSERT(almost_eq(H[20][20],Interval(0.371719,0.375719),error));
	CPPUNIT_ASSERT(almost_eq(H[20][21],Interval(0.330166,0.334166),error));
	CPPUNIT_ASSERT(almost_eq(H[20][22],Interval(-0.377719,-0.369719),error));
	CPPUNIT_ASSERT(almost_eq(H[20][23],Interval(-0.336166,-0.328166),error));
	CPPUNIT_ASSERT(almost_eq(H[21][18],Interval(-0.476524,-0.472524),error));
	CPPUNIT_ASSERT(almost_eq(H[21][19],Interval(0.155567,0.159567),error));
	CPPUNIT_ASSERT(almost_eq(H[21][20],Interval(0.470524,0.478524),error));
	CPPUNIT_ASSERT(almost_eq(H[21][21],Interval(-0.161567,-0.153567),error));
	CPPUNIT_ASSERT(almost_eq(H[22][16],Interval(-0.476524,-0.472524),error));
	CPPUNIT_ASSERT(almost_eq(H[22][17],Interval(0.155567,0.159567),error));
	CPPUNIT_ASSERT(almost_eq(H[22][22],Interval(0.470524,0.478524),error));
	CPPUNIT_ASSERT(almost_eq(H[22][23],Interval(-0.161567,-0.153567),error));
	CPPUNIT_ASSERT(almost_eq(H[23][22],Interval(0.371719,0.375719),error));
	CPPUNIT_ASSERT(almost_eq(H[23][23],Interval(0.330166,0.334166),error));
	CPPUNIT_ASSERT(almost_eq(H[23][24],Interval(-0.377719,-0.369719),error));
	CPPUNIT_ASSERT(almost_eq(H[23][25],Interval(-0.336166,-0.328166),error));
	CPPUNIT_ASSERT(almost_eq(H[24][14],Interval(-2.19099,-2.18699),error));
	CPPUNIT_ASSERT(almost_eq(H[24][15],Interval(-8.20081,-8.19681),error));
	CPPUNIT_ASSERT(almost_eq(H[24][24],Interval(2.18499,2.19299),error));
	CPPUNIT_ASSERT(almost_eq(H[24][25],Interval(8.19481,8.20281),error));
	CPPUNIT_ASSERT(almost_eq(H[25][24],Interval(-3.00621,-3.00221),error));
	CPPUNIT_ASSERT(almost_eq(H[25][25],Interval(5.19172,5.19572),error));
	CPPUNIT_ASSERT(almost_eq(H[25][26],Interval(3.00021,3.00821),error));
	CPPUNIT_ASSERT(almost_eq(H[25][27],Interval(-5.19772,-5.18972),error));
	CPPUNIT_ASSERT(almost_eq(H[26][26],Interval(9.998,10.002),error));
	CPPUNIT_ASSERT(almost_eq(H[26][27],Interval(-0.002,0.002),error));
	CPPUNIT_ASSERT(almost_eq(H[26][28],Interval(-10.004,-9.996),error));
	CPPUNIT_ASSERT(almost_eq(H[26][29],Interval(-0.004,0.004),error));
	CPPUNIT_ASSERT(almost_eq(H[27][27],Interval(1,1),error));
	CPPUNIT_ASSERT(almost_eq(H[28][28],Interval(1,1),error));
	CPPUNIT_ASSERT(almost_eq(H[29][29],Interval(1,1),error));

}