Re: [eigen] Custom expression type API stability |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: eigen@xxxxxxxxxxxxxxxxxxx*Subject*: Re: [eigen] Custom expression type API stability*From*: Dan Čermák <dan.cermak@xxxxxxxxxxxxxxxxxxx>*Date*: Fri, 19 Feb 2016 00:11:04 +0100

On Thursday, February 18, 2016 11:04:11 AM Benoit Steiner wrote: > On Thu, Feb 18, 2016 at 4:46 AM, Dan Čermák <dan.cermak@xxxxxxxxxxxxxxxxxxx> > wrote: > > I need basically two different expressions: > > > > 1. given two vectors: > > cond_vec and choice_vec -> result(i) = choice_vec(i) if > > > > cond_vec(i) > 0 > > > > else choice_vec(i+1) > > this is rather simple and maybe doable otherwise (and I have already > > managed > > that using the 3.3 development version, although it's probably ugly) > > > > 2. calculate reductions of 3d matrices times 2d matrices (they are not > > stored > > fully, since they can be calculated fairly easily from e.g. a matrix and a > > vector, or are highly sparse): result(i) = Sum_j,k M_ijk * K_jk (as a full > > reduction) or result(i,j) = Sum_k M_ikj * K_kj > > I would like to create some abstraction where I only need to provide a > > function which calculates the elements or row/col of the contraction > > result. > > You can use a tensor contraction code to do this: > Tensor<float, 3> M(m_dimensions) > Tensor<float, 3> K(k_dimensions); > > For the first case > Eigen::array<Eigen::IndexPair<Eigen::DenseIndex>, 2> indices; > indices[0]= Eigen::IndexPair(1, 0); > indices[1]= Eigen::IndexPair(2, 1); > Tensor<float, 1> result = M.contract(K, indices); > > For the second case > Eigen::array<Eigen::IndexPair<Eigen::DenseIndex>, 1> indices; > indices[0]= Eigen::IndexPair(1, 0); > Tensor<float, 2> result = M.contract(K, indices); I wasn't aware of the tensor module, but I am afraid I cannot really use this, since my tensors are expected to have a dimension of up to 1000 while being either redundant or highly sparse or cheaply to calculate. But I might end up using these for unit tests where problem sizes are drastically reduced, so thanks for pointing that out!

**References**:**[eigen] Custom expression type API stability***From:*Dan Čermák

**Re: [eigen] Custom expression type API stability***From:*Dan Čermák

**Re: [eigen] Custom expression type API stability***From:*Benoit Steiner

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] Custom expression type API stability** - Next by Date:
**Re: [eigen] Custom expression type API stability** - Previous by thread:
**Re: [eigen] Custom expression type API stability**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |