mult_assign_mode.hpp
来自「矩阵运算源码最新版本」· HPP 代码 · 共 115 行
HPP
115 行
// Software License for MTL// // Copyright (c) 2007 The Trustees of Indiana University. All rights reserved.// Authors: Peter Gottschling and Andrew Lumsdaine// // This file is part of the Matrix Template Library// // See also license.mtl.txt in the distribution.#ifndef MTL_MULT_ASSIGN_MODE_INCLUDE#define MTL_MULT_ASSIGN_MODE_INCLUDE#include <boost/numeric/mtl/operation/assign_mode.hpp>#include <boost/numeric/mtl/operation/dmat_dmat_mult.hpp>namespace mtl { namespace assign {namespace detail { template <typename Assign> struct subm_assign { typedef Assign type; }; template<> struct subm_assign<assign_sum> { typedef plus_sum type; };}// Set assign_mode of functor 'Mult' to 'Assign'// including assign_mode of backup functors and functors for sub-matricestemplate <typename Mult, typename Assign>struct mult_assign_mode {};#if 0// Omit the fully typed functors; they shouldn't be used directlytemplate <typename MatrixA, typename MatrixB, typename MatrixC, typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_dmat_dmat_mult_ft<MatrixA, MatrixB, MatrixC, OldAssign, Backup>, Assign>{ typedef gen_dmat_dmat_mult_ft<MatrixA, MatrixB, MatrixC, Assign, Backup> type;};#endiftemplate <typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_dmat_dmat_mult_t<OldAssign, Backup>, Assign>{ typedef gen_dmat_dmat_mult_t<Assign, Backup> type;};template <typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_cursor_dmat_dmat_mult_t<OldAssign, Backup>, Assign>{ typedef gen_cursor_dmat_dmat_mult_t<Assign, Backup> type;};template <unsigned long Tiling1, unsigned long Tiling2, typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_tiling_dmat_dmat_mult_t<Tiling1, Tiling2, OldAssign, Backup>, Assign> { typedef typename mult_assign_mode<Backup, Assign>::type backup_type; typedef gen_tiling_dmat_dmat_mult_t<Tiling1, Tiling2, Assign, backup_type> type;};template <typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_tiling_44_dmat_dmat_mult_t<OldAssign, Backup>, Assign> { typedef typename mult_assign_mode<Backup, Assign>::type backup_type; typedef gen_tiling_44_dmat_dmat_mult_t<Assign, backup_type> type;};template <typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_tiling_22_dmat_dmat_mult_t<OldAssign, Backup>, Assign> { typedef typename mult_assign_mode<Backup, Assign>::type backup_type; typedef gen_tiling_22_dmat_dmat_mult_t<Assign, backup_type> type;};template <typename BaseMult, typename BaseTest, typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_recursive_dmat_dmat_mult_t<BaseMult, BaseTest, OldAssign, Backup>, Assign> { typedef typename mult_assign_mode<Backup, Assign>::type backup_type; // Corresponding assignment type for sub-matrices typedef typename detail::subm_assign<Assign>::type base_assign_type; typedef typename mult_assign_mode<BaseMult, base_assign_type>::type base_mult_type; typedef gen_recursive_dmat_dmat_mult_t<base_mult_type, BaseTest, Assign, backup_type> type;};template <typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_platform_dmat_dmat_mult_t<OldAssign, Backup>, Assign> { typedef typename mult_assign_mode<Backup, Assign>::type backup_type; typedef gen_platform_dmat_dmat_mult_t<Assign, backup_type> type;};template <typename OldAssign, typename Backup, typename Assign> struct mult_assign_mode<gen_blas_dmat_dmat_mult_t<OldAssign, Backup>, Assign> { typedef typename mult_assign_mode<Backup, Assign>::type backup_type; typedef gen_blas_dmat_dmat_mult_t<Assign, backup_type> type;};}} // namespace mtl::assign#endif // MTL_MULT_ASSIGN_MODE_INCLUDE
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?