00001 #ifndef Impala_Core_Array_RecConvKernelSeparated_h
00002 #define Impala_Core_Array_RecConvKernelSeparated_h
00003
00004 #include "Core/Array/Pattern/PatRecGenConv2dSep.h"
00005 #include "Core/Array/Trait/BpoMul.h"
00006 #include "Core/Array/Trait/BpoAddAssign.h"
00007 #include "Util/TimePlot.h"
00008
00009 namespace Impala
00010 {
00011 namespace Core
00012 {
00013 namespace Array
00014 {
00015
00016
00017 template<class DstArrayT, class SrcArrayT, class KerArrayT>
00018 inline void
00019 RecConvKernelSeparated(DstArrayT*& dst, SrcArrayT* src, KerArrayT* kerx,
00020 KerArrayT* kery, Util::TimePlot* plotter = 0)
00021 {
00022 typedef typename KerArrayT::ArithType KerArithT;
00023
00024 KerArithT nF = Element::E1Cast(1, KerArithT());
00025 RecConvKernelSeparated(dst, src, kerx, kery, nF, nF, nF, nF, plotter);
00026 }
00027
00028 template<class DstArrayT, class SrcArrayT, class KerArrayT, class KerArithT>
00029 inline void
00030 RecConvKernelSeparated(DstArrayT*& dst, SrcArrayT* src,
00031 KerArrayT* kerx, KerArrayT* kery,
00032 KerArithT leftBorderNorm, KerArithT rightBorderNorm,
00033 KerArithT topBorderNorm, KerArithT bottomBorderNorm,
00034 Util::TimePlot* plotter = 0)
00035 {
00036 Trait::BpoMul<KerArrayT, KerArrayT, KerArrayT> bpo;
00037 Trait::BpoAddAssign<KerArrayT, KerArrayT> bpoAss;
00038 Pattern::PatRecGenConv2dSep(dst, src, kerx, kery, leftBorderNorm, rightBorderNorm,
00039 topBorderNorm, bottomBorderNorm, bpo, bpoAss, plotter);
00040 }
00041
00042 }
00043 }
00044 }
00045
00046 #endif