void interval_set_flip_4_bicremental_types() { typedef IntervalSet<T> IntervalSetT; typedef typename IntervalSetT::interval_type IntervalT; typedef IntervalSetT ISet; IntervalSetT set_a, set_b, lhs, rhs; //[0 2) // [1 3) //[0 1) [2 3) : {[0 2)} ^= [2 3) //gcc seed ambiguities with std::_Ios_Iostate& std::operator^= here: // BOOST_CHECK_EQUAL(ISet(I_D(0,2)) ^= I_D(1,3), ISet(I_D(0,1)) + I_D(2,3)); set_a = ISet(I_D(0,2)); BOOST_CHECK_EQUAL(set_a ^= I_D(1,3), ISet(I_D(0,1)) + I_D(2,3)); // [1 3) //[0 2) //[0 1) [2 3) : {[1 3)} ^= [0 2) set_a = ISet(I_D(1,3)); BOOST_CHECK_EQUAL(set_a ^= I_D(0,2), ISet(I_D(0,1)) + I_D(2,3)); //[0 2) (3 5] // [1 3) //[0 1) [2 3) (3 5] : a ^= b set_a.clear(); set_a.add(I_D(0,2)).add(C_I(3,5)); set_b.add(I_D(1,3)); lhs = set_a; lhs ^= set_b; rhs.add(I_D(0,1)).add(I_D(2,3)).add(C_I(3,5)); BOOST_CHECK_EQUAL(lhs, rhs); }
void mx2cmat(int m, int n, cmulti **A, int LDA, const mxArray *src) { mwSize size[2]={1,1}; mxArray *value=NULL; int i,j,k; for(j=0; j<n; j++){ for(i=0; i<m; i++){ // real part // prec value=mxGetField(src,j*m+i,"r_prec"); if(value!=NULL && mxIsInt64(value)){ rround(C_R(MAT(A,i,j,LDA)),(*(int64_t*)mxGetData(value))); } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'prec'."); } // sign value=mxGetField(src,j*m+i,"r_sign"); if(value!=NULL && mxIsInt32(value)){ C_R(MAT(A,i,j,LDA))->_mpfr_sign=(*(int32_t*)mxGetData(value)); } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'sign'."); } // exp value=mxGetField(src,j*m+i,"r_exp"); if(value!=NULL && mxIsInt64(value)){ C_R(MAT(A,i,j,LDA))->_mpfr_exp=(*(int64_t*)mxGetData(value)); } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'exp'."); } // digits value=mxGetField(src,j*m+i,"r_digits"); if(value!=NULL && mxIsUint64(value)){ for(k=0; k<rget_size(C_R(MAT(A,i,j,LDA))); k++){ C_R(MAT(A,i,j,LDA))->_mpfr_d[k]=((uint64_t*)mxGetData(value))[k]; } } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'digits'."); } // imaginary part // prec value=mxGetField(src,j*m+i,"i_prec"); if(value!=NULL && mxIsInt64(value)){ rround(C_I(MAT(A,i,j,LDA)),(*(int64_t*)mxGetData(value))); } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'prec'."); } // sign value=mxGetField(src,j*m+i,"i_sign"); if(value!=NULL && mxIsInt32(value)){ C_I(MAT(A,i,j,LDA))->_mpfr_sign=(*(int32_t*)mxGetData(value)); } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'sign'."); } // exp value=mxGetField(src,j*m+i,"i_exp"); if(value!=NULL && mxIsInt64(value)){ C_I(MAT(A,i,j,LDA))->_mpfr_exp=(*(int64_t*)mxGetData(value)); } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'exp'."); } // digits value=mxGetField(src,j*m+i,"i_digits"); if(value!=NULL && mxIsUint64(value)){ for(k=0; k<rget_size(C_I(MAT(A,i,j,LDA))); k++){ C_I(MAT(A,i,j,LDA))->_mpfr_d[k]=((uint64_t*)mxGetData(value))[k]; } } else{ mexErrMsgIdAndTxt("MATLAB:mx2cmat","The arg should be Struct with the feild 'digits'."); } } } return; }
void func_print_cvec(func_t *f) { int i; //printf("complex["); printf("["); for(i=0; i<func_cvec_size(f); i++){ if(cis_real(func_cvec_at(f,i))){ mpfr_printf("%.5Rg",C_R(func_cvec_at(f,i))); }else if(cis_pure_imaginary(func_cvec_at(f,i))){ mpfr_printf("%.5Rg*I",C_I(func_cvec_at(f,i))); }else{ mpfr_printf("%.5Rg%+.5Rg*I",C_R(func_cvec_at(f,i)),C_I(func_cvec_at(f,i))); } if(i<(func_cvec_size(f))-1) printf(" "); } printf("]"); }
void distant_intervals_4_numeric_continuous_types() { typedef right_open_interval<T,Compare> L__D; // L__D for [..) typedef left_open_interval<T,Compare> C__I; // C__I for (..] typedef typename icl::interval<T,Compare>::type IntervalT; BOOST_CHECK( is_interval<L__D>::value ); BOOST_CHECK( has_difference<typename interval_traits<L__D>::domain_type>::value ); BOOST_CHECK( is_continuous<typename interval_traits<L__D>::domain_type>::value ); BOOST_CHECK( (boost::is_same<typename interval_traits<L__D>::domain_type, T>::value) ); typedef typename difference_type_of<T>::type DiffT; test_inner_complement<T,Compare,L__D>(MK_I(L__D,0,4), MK_I(L__D,8,9)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,7,8), MK_I(L__D,2,3)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,2,4), MK_I(L__D,4,6)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,3,7), MK_I(L__D,5,8)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,7,9), MK_I(L__D,0,4)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,0,0), MK_I(L__D,0,0)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,1,0), MK_I(L__D,2,0)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,1,5), MK_I(C__I,4,9)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,4,6), MK_I(C__I,1,3)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,0,2), MK_I(C__I,4,6)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,0,2), MK_I(C__I,0,6)); //-------------------------------------------------------------------------- #ifndef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS test_inner_complement<T,Compare,IntervalT>(I_D(0,4), I_D(8,9)); test_inner_complement<T,Compare,IntervalT>(I_D(7,8), I_D(2,3)); test_inner_complement<T,Compare,IntervalT>(I_D(2,4), I_D(4,6)); test_inner_complement<T,Compare,IntervalT>(I_D(3,7), I_D(5,8)); test_inner_complement<T,Compare,IntervalT>(I_D(7,9), I_D(0,4)); test_inner_complement<T,Compare,IntervalT>(I_D(0,0), I_D(0,0)); test_inner_complement<T,Compare,IntervalT>(I_D(1,0), I_D(2,0)); test_inner_complement<T,Compare,IntervalT>(C_I(1,5), C_I(4,9)); test_inner_complement<T,Compare,IntervalT>(C_I(4,6), C_I(1,3)); test_inner_complement<T,Compare,IntervalT>(C_I(0,2), C_I(4,6)); test_inner_complement<T,Compare,IntervalT>(C_I(0,2), C_I(0,6)); test_inner_complement<T,Compare,IntervalT>(I_I(7,9), I_I(0,5)); test_inner_complement<T,Compare,IntervalT>(I_I(0,9), I_I(2,5)); test_inner_complement<T,Compare,IntervalT>(C_D(6,9), C_D(1,4)); test_inner_complement<T,Compare,IntervalT>(C_D(1,3), C_D(1,4)); test_inner_complement<T,Compare,IntervalT>(C_D(1,3), C_D(6,8)); test_inner_complement<T,Compare,IntervalT>(C_D(1,7), C_D(1,6)); test_inner_complement<T,Compare,IntervalT>(C_D(1,1), C_D(1,1)); test_inner_complement<T,Compare,IntervalT>(C_D(3,0), C_D(4,0)); test_inner_complement<T,Compare,IntervalT>(C_D(0,2), C_D(4,6)); test_inner_complement<T,Compare,IntervalT>(C_D(0,2), C_D(0,6)); #endif //BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS }
void discrete_dynamic_interval_bounds_4_bicremental_types() { typedef typename icl::interval<T>::type IntervalT; BOOST_CHECK( icl::bounds(I_I(2,4)) == interval_bounds::closed() ); BOOST_CHECK( icl::bounds(I_D(2,5)) == interval_bounds::right_open() ); BOOST_CHECK( icl::bounds(C_I(1,4)) == interval_bounds::left_open() ); BOOST_CHECK( icl::bounds(C_D(1,5)) == interval_bounds::open() ); }
void dynamic_interval_bounds_4_bicremental_types() { typedef typename icl::interval<T>::type IntervalT; // BOOST_CHECK_EQUAL( T(), icl::pred(icl::succ(T()))); BOOST_CHECK_EQUAL( icl::identity_element<T>::value(), icl::pred(icl::succ(icl::identity_element<T>::value())) ); BOOST_CHECK_EQUAL( icl::unit_element<T>::value(), icl::succ(icl::identity_element<T>::value()) ); BOOST_CHECK_EQUAL( length(IntervalT()), icl::identity_element<typename difference_type_of<T>::type>::value() ); //LAW: I x: borders(x)==closed => contains(x, lower(x)) && contains(x, upper(x)) check_border_containedness(I_I(0,0)); check_border_containedness(I_I(2,5)); check_border_containedness(I_D(0,1)); check_border_containedness(I_D(2,5)); check_border_containedness(C_I(0,1)); check_border_containedness(C_I(2,5)); check_border_containedness(C_I(0,2)); check_border_containedness(C_I(2,5)); }
void interval_set_move_4_discrete_types() { typedef IntervalSet<T> IntervalSetT; typedef typename IntervalSetT::interval_type IntervalT; typedef std::vector<T> VectorT; //JODO static_cast fails for gcc compilers //IntervalSetT set_A(boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_D(0,4))))); IntervalSetT set_A(boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_D(0,4)).add(I_D(0,0)) ))); IntervalSetT set_B(boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_D(0,2)).add(I_D(2,4)).add(I_D(0,4))))); BOOST_CHECK( icl::is_element_equal(set_A, set_B) ); BOOST_CHECK_EQUAL( set_A, join(set_B) ); //JODO static_cast fails for gcc compilers //set_A = boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_I(1,4)))); set_A = boost::move(static_cast<IntervalSetT&>(IntervalSetT(I_I(1,4)).add(I_D(0,0)))); set_B = boost::move(static_cast<IntervalSetT&>(IntervalSetT(C_I(0,2)).insert(I_D(3,5)).add(C_D(0,5)))); BOOST_CHECK( icl::is_element_equal(set_A, set_B) ); BOOST_CHECK_EQUAL( set_A, join(set_B) ); }
void distant_intervals_4_discrete_types() { typedef right_open_interval<T,Compare> L__D; // L__D for [..) typedef left_open_interval<T,Compare> C__I; // C__I for (..] typedef closed_interval<T,Compare> L__I; // L__I for [..] typedef open_interval<T,Compare> C__D; // C__D for (..) typedef typename icl::interval<T,Compare>::type IntervalT; BOOST_CHECK( is_interval<L__D>::value ); BOOST_CHECK( has_difference<typename interval_traits<L__D>::domain_type>::value ); BOOST_CHECK( is_discrete<typename interval_traits<L__D>::domain_type>::value ); BOOST_CHECK( (boost::is_same<typename interval_traits<L__D>::domain_type, T>::value) ); typedef typename difference_type_of<T>::type DiffT; test_inner_complement<T,Compare,L__D>(MK_I(L__D,0,4), MK_I(L__D,8,9)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,7,8), MK_I(L__D,2,3)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,2,4), MK_I(L__D,4,6)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,3,7), MK_I(L__D,5,8)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,7,9), MK_I(L__D,0,4)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,0,0), MK_I(L__D,0,0)); test_inner_complement<T,Compare,L__D>(MK_I(L__D,1,0), MK_I(L__D,2,0)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,1,5), MK_I(C__I,4,9)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,4,6), MK_I(C__I,1,3)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,0,2), MK_I(C__I,4,6)); test_inner_complement<T,Compare,C__I>(MK_I(C__I,0,2), MK_I(C__I,0,6)); test_inner_complement<T,Compare,L__I>(MK_I(L__I,7,9), MK_I(L__I,0,5)); test_inner_complement<T,Compare,L__I>(MK_I(L__I,0,9), MK_I(L__I,2,5)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,6,9), MK_I(C__D,1,4)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,1,3), MK_I(C__D,1,4)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,1,3), MK_I(C__D,6,8)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,1,7), MK_I(C__D,1,6)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,1,1), MK_I(C__D,1,1)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,3,0), MK_I(C__D,4,0)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,0,2), MK_I(C__D,4,6)); test_inner_complement<T,Compare,C__D>(MK_I(C__D,0,2), MK_I(C__D,0,6)); //-------------------------------------------------------------------------- test_inner_complement<T,Compare,IntervalT>(I_D(0,4), I_D(8,9)); test_inner_complement<T,Compare,IntervalT>(I_D(7,8), I_D(2,3)); test_inner_complement<T,Compare,IntervalT>(I_D(2,4), I_D(4,6)); test_inner_complement<T,Compare,IntervalT>(I_D(3,7), I_D(5,8)); test_inner_complement<T,Compare,IntervalT>(I_D(7,9), I_D(0,4)); test_inner_complement<T,Compare,IntervalT>(I_D(0,0), I_D(0,0)); test_inner_complement<T,Compare,IntervalT>(I_D(1,0), I_D(2,0)); test_inner_complement<T,Compare,IntervalT>(C_I(1,5), C_I(4,9)); test_inner_complement<T,Compare,IntervalT>(C_I(4,6), C_I(1,3)); test_inner_complement<T,Compare,IntervalT>(C_I(0,2), C_I(4,6)); test_inner_complement<T,Compare,IntervalT>(C_I(0,2), C_I(0,6)); test_inner_complement<T,Compare,IntervalT>(I_I(7,9), I_I(0,5)); test_inner_complement<T,Compare,IntervalT>(I_I(0,9), I_I(2,5)); test_inner_complement<T,Compare,IntervalT>(C_D(6,9), C_D(1,4)); test_inner_complement<T,Compare,IntervalT>(C_D(1,3), C_D(1,4)); test_inner_complement<T,Compare,IntervalT>(C_D(1,3), C_D(6,8)); test_inner_complement<T,Compare,IntervalT>(C_D(1,7), C_D(1,6)); test_inner_complement<T,Compare,IntervalT>(C_D(1,1), C_D(1,1)); test_inner_complement<T,Compare,IntervalT>(C_D(3,0), C_D(4,0)); test_inner_complement<T,Compare,IntervalT>(C_D(0,2), C_D(4,6)); test_inner_complement<T,Compare,IntervalT>(C_D(0,2), C_D(0,6)); }