some fixes in new fma routine
This commit is contained in:
parent
8ff7b32b47
commit
354c7d92fe
5 changed files with 17 additions and 5 deletions
|
@ -264,7 +264,7 @@ namespace MultiArrayTools
|
||||||
template <class Range>
|
template <class Range>
|
||||||
MetaOperationRoot<Range>::
|
MetaOperationRoot<Range>::
|
||||||
MetaOperationRoot(const std::shared_ptr<IndexType>& ind) :
|
MetaOperationRoot(const std::shared_ptr<IndexType>& ind) :
|
||||||
mIndex( ind ) { }
|
mWorkIndex(*ind), mIndex( ind ) { }
|
||||||
|
|
||||||
|
|
||||||
template <class Range>
|
template <class Range>
|
||||||
|
@ -275,7 +275,7 @@ namespace MultiArrayTools
|
||||||
//VCHECK(pos.val());
|
//VCHECK(pos.val());
|
||||||
//VCHECK(mDataPtr);
|
//VCHECK(mDataPtr);
|
||||||
//VCHECK(mDataPtr[pos.val()])
|
//VCHECK(mDataPtr[pos.val()])
|
||||||
return mIndex->range()->get( pos.val() );
|
return (mWorkIndex = pos.val()).meta();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Range>
|
template <class Range>
|
||||||
|
|
|
@ -246,6 +246,7 @@ namespace MultiArrayTools
|
||||||
|
|
||||||
//MultiArrayBase<T,Ranges...> const& mArrayRef;
|
//MultiArrayBase<T,Ranges...> const& mArrayRef;
|
||||||
//const T* mDataPtr;
|
//const T* mDataPtr;
|
||||||
|
mutable IndexType mWorkIndex;
|
||||||
std::shared_ptr<IndexType> mIndex;
|
std::shared_ptr<IndexType> mIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -161,6 +161,7 @@ namespace MultiArrayTools
|
||||||
typedef RangeBase RB;
|
typedef RangeBase RB;
|
||||||
typedef std::tuple<std::shared_ptr<Ranges>...> Space;
|
typedef std::tuple<std::shared_ptr<Ranges>...> Space;
|
||||||
typedef MultiIndex<typename Ranges::IndexType...> IndexType;
|
typedef MultiIndex<typename Ranges::IndexType...> IndexType;
|
||||||
|
typedef std::tuple<typename Ranges::IndexType::MetaType...> MetaType;
|
||||||
typedef MultiRange RangeType;
|
typedef MultiRange RangeType;
|
||||||
typedef MultiRangeFactory<Ranges...> FType;
|
typedef MultiRangeFactory<Ranges...> FType;
|
||||||
//typedef typename RangeInterface<MultiIndex<typename Ranges::IndexType...> >::IndexType IndexType;
|
//typedef typename RangeInterface<MultiIndex<typename Ranges::IndexType...> >::IndexType IndexType;
|
||||||
|
|
|
@ -380,7 +380,7 @@ namespace MultiArrayTools
|
||||||
template <typename U, SpaceType TYPE>
|
template <typename U, SpaceType TYPE>
|
||||||
std::shared_ptr<typename SingleIndex<U,TYPE>::RangeType> SingleIndex<U,TYPE>::range()
|
std::shared_ptr<typename SingleIndex<U,TYPE>::RangeType> SingleIndex<U,TYPE>::range()
|
||||||
{
|
{
|
||||||
return std::dynamic_pointer_cast<RangeType>( IB::mRangePtr );
|
return mExplicitRangePtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename U, SpaceType TYPE>
|
template <typename U, SpaceType TYPE>
|
||||||
|
|
|
@ -114,6 +114,8 @@ namespace MultiArrayTools
|
||||||
virtual std::string stringMeta(size_t pos) const final;
|
virtual std::string stringMeta(size_t pos) const final;
|
||||||
virtual std::vector<char> data() const final;
|
virtual std::vector<char> data() const final;
|
||||||
|
|
||||||
|
U get(size_t pos) const;
|
||||||
|
|
||||||
virtual IndexType begin() const final;
|
virtual IndexType begin() const final;
|
||||||
virtual IndexType end() const final;
|
virtual IndexType end() const final;
|
||||||
|
|
||||||
|
@ -131,7 +133,7 @@ namespace MultiArrayTools
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
mutable U const* mMeta;
|
||||||
ValueRange() = default;
|
ValueRange() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -256,7 +258,7 @@ namespace MultiArrayTools
|
||||||
template <typename U>
|
template <typename U>
|
||||||
std::shared_ptr<typename ValueIndex<U>::RangeType> ValueIndex<U>::range()
|
std::shared_ptr<typename ValueIndex<U>::RangeType> ValueIndex<U>::range()
|
||||||
{
|
{
|
||||||
return std::dynamic_pointer_cast<RangeType>( IB::mRangePtr );
|
return mExplicitRangePtr;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename U>
|
template <typename U>
|
||||||
|
@ -352,6 +354,12 @@ namespace MultiArrayTools
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename U>
|
||||||
|
U ValueRange<U>::get(size_t pos) const
|
||||||
|
{
|
||||||
|
return *mMeta;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename U>
|
template <typename U>
|
||||||
std::vector<char> ValueRange<U>::data() const
|
std::vector<char> ValueRange<U>::data() const
|
||||||
{
|
{
|
||||||
|
@ -384,6 +392,7 @@ namespace MultiArrayTools
|
||||||
ValueIndex<U> i( std::dynamic_pointer_cast<ValueRange<U> >
|
ValueIndex<U> i( std::dynamic_pointer_cast<ValueRange<U> >
|
||||||
( std::shared_ptr<RangeBase>( RB::mThis ) ) );
|
( std::shared_ptr<RangeBase>( RB::mThis ) ) );
|
||||||
i = 0;
|
i = 0;
|
||||||
|
mMeta = &i.meta();
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -393,6 +402,7 @@ namespace MultiArrayTools
|
||||||
ValueIndex<U> i( std::dynamic_pointer_cast<ValueRange<U> >
|
ValueIndex<U> i( std::dynamic_pointer_cast<ValueRange<U> >
|
||||||
( std::shared_ptr<RangeBase>( RB::mThis ) ) );
|
( std::shared_ptr<RangeBase>( RB::mThis ) ) );
|
||||||
i = size();
|
i = size();
|
||||||
|
mMeta = &i.meta();
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue