BOOST_FORCEINLINE result_type operator()(Expr& e) const { //BOOST_ASSERT(ndims(boost::proto::child_c<0>(e)) <= 2); return _2D( boost::fusion::at_c<1>(boost::proto::child_c<0>(e).extent()) , boost::fusion::at_c<0>(boost::proto::child_c<0>(e).extent()) ); }
BOOST_FORCEINLINE result_type operator ()(const A0& a0, const A1& a1) const { BOOST_ASSERT_MSG( numel(a0) == 2, "freqspace: Invalid index size" ); std::size_t m = a0(first_index<1>(a0)); return boost::proto ::make_expr < nt2::tag::freqspace_ , container::domain > ( _2D(1,1+m/2) , meta::as_<double>() , a0, a1 ); }
BOOST_FORCEINLINE result_type operator()(Expr& e) const { BOOST_ASSERT_MSG( isscalar(boost::proto::child_c<1>(e)) && issquare(boost::proto::child_c<0>(e)), "mpower needs a square matrix and a scalar or a scalar and a square matrix"); return nt2::utility::max_extent(boost::proto::child_c<0>(e), boost::proto::child_c<1>(e), _2D()); }