Beispiel #1
0
 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())
             );
 }
Beispiel #2
0
    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
                            );
    }
Beispiel #3
0
    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());
    }