IntervalMatrix Function::eval_affine2_matrix(const IntervalVector& box, Affine2Matrix& affine) const { ExprLabel res = Affine2Eval().eval_label(*this,box); affine = Affine2Matrix(expr().dim.dim2, expr().dim.dim3); switch (expr().dim.type()) { case Dim::SCALAR : { affine[0][0] = res.af2->i(); return IntervalMatrix(1,1,res.d->i()); } case Dim::ROW_VECTOR : { affine.set_row(0,res.af2->v()); IntervalMatrix M(image_dim(),1); M.set_row(0,res.d->v()); return M; } case Dim::COL_VECTOR : { affine.set_col(0,res.af2->v()); IntervalMatrix M(1,image_dim()); M.set_col(0,res.d->v()); return M; } case Dim::MATRIX: { affine = res.af2->m(); return res.d->m(); } default : { assert(false); } } }
IntervalMatrix Fnc::eval_matrix(const IntervalVector& x) const { not_implemented("eval_matrix"); return IntervalMatrix(0,0); }