⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interlace.cc

📁 A C++ class library for scientific computing
💻 CC
📖 第 1 页 / 共 2 页
字号:
    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2);#else    a1.resize(shape);    a2.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5, a6);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);    a6.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,    Array<T_numtype,N_rank>& a7){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);    a6.resize(shape);    a7.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);    a6.resize(shape);    a7.resize(shape);    a8.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,    Array<T_numtype,N_rank>& a9){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);    a6.resize(shape);    a7.resize(shape);    a8.resize(shape);    a9.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,    Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);    a6.resize(shape);    a7.resize(shape);    a8.resize(shape);    a9.resize(shape);    a10.resize(shape);#endif}template<typename T_numtype, int N_rank>void allocateArrays(const TinyVector<int,N_rank>& shape,    Array<T_numtype,N_rank>& a1, Array<T_numtype,N_rank>& a2,    Array<T_numtype,N_rank>& a3, Array<T_numtype,N_rank>& a4,    Array<T_numtype,N_rank>& a5, Array<T_numtype,N_rank>& a6,    Array<T_numtype,N_rank>& a7, Array<T_numtype,N_rank>& a8,    Array<T_numtype,N_rank>& a9, Array<T_numtype,N_rank>& a10,    Array<T_numtype,N_rank>& a11){#ifdef BZ_INTERLACE_ARRAYS    interlaceArrays(shape, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11);#else    a1.resize(shape);    a2.resize(shape);    a3.resize(shape);    a4.resize(shape);    a5.resize(shape);    a6.resize(shape);    a7.resize(shape);    a8.resize(shape);    a9.resize(shape);    a10.resize(shape);    a11.resize(shape);#endif}// NEEDS_WORK -- allocateArrays for TinyVector<Range,N_rank>// This constructor is used to create interlaced arrays.template<typename T_numtype, int N_rank>Array<T_numtype,N_rank>::Array(const TinyVector<int,N_rank-1>& shape,    int lastExtent, const GeneralArrayStorage<N_rank>& storage)    : storage_(storage){    // Create an array with the given shape, plus an extra dimension    // for the number of arrays being allocated.  This extra dimension    // must have minor storage order.    if (ordering(0) == 0)    {        // Column major storage order (or something like it)        length_[0] = lastExtent;        storage_.setBase(0,0);        for (int i=1; i < N_rank; ++i)            length_[i] = shape[i-1];    }    else if (ordering(0) == N_rank-1)    {        // Row major storage order (or something like it)        for (int i=0; i < N_rank-1; ++i)            length_[i] = shape[i];        length_[N_rank-1] = lastExtent;        storage_.setBase(N_rank-1, 0);    }    else {        BZPRECHECK(0, "Used allocateArrays() with a peculiar storage format");    }    setupStorage(N_rank-1);}// NEEDS_WORK -- see note about TinyVector<Range,N> in <blitz/arrayshape.h>#if 0template<typename T_numtype, int N_rank>Array<T_numtype,N_rank>::Array(const TinyVector<Range,N_rank-1>& shape,    int lastExtent, const GeneralArrayStorage<N_rank>& storage)    : storage_(storage){#ifdef BZ_DEBUG    for (int i=0; i < N_rank; ++i)      BZPRECHECK(shape[i].isAscendingContiguous(),        "In call to allocateArrays(), a Range object is not ascending" << endl        << "contiguous: " << shape[i] << endl);#endif    if (ordering(0) == 0)    {        // Column major storage order (or something like it)        length_[0] = lastExtent;        storage_.setBase(0,0);        for (int i=1; i < N_rank; ++i)        {            length_[i] = shape[i-1].length();            storage_.setBase(i, shape[i-1].first());        }    }    else if (ordering(0) == N_rank-1)    {        // Row major storage order (or something like it)        for (int i=0; i < N_rank-1; ++i)        {            length_[i] = shape[i];            storage_.setBase(i, shape[i].first());        }        length_[N_rank-1] = lastExtent;        storage_.setBase(N_rank-1, 0);    }    else {        BZPRECHECK(0, "Used allocateArrays() with a peculiar storage format");    }    setupStorage(N_rank-1);}#endifBZ_NAMESPACE_END#endif // BZ_ARRAYINTER_CC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -