00001 #ifndef Impala_Core_Array_Trait_M6poLvvLw2_h 00002 #define Impala_Core_Array_Trait_M6poLvvLw2_h 00003 00004 #include "Core/Array/Pattern/Categories.h" 00005 00006 namespace Impala 00007 { 00008 namespace Core 00009 { 00010 namespace Array 00011 { 00012 namespace Trait 00013 { 00014 00015 00019 template<class DstArrayT, class SrcArrayT> 00020 class M6poLvvLw2 00021 { 00022 public: 00024 typedef Pattern::TagTransInVar TransVarianceCategory; 00025 00027 typedef Pattern::TagCallValue CallCategory; 00028 00029 typedef typename DstArrayT::ArithType DstArithT; 00030 typedef typename SrcArrayT::ArithType SrcArithT; 00031 00033 M6poLvvLw2() 00034 { 00035 } 00036 00038 DstArithT 00039 DoIt(const SrcArithT& L, const SrcArithT& Lx, const SrcArithT& Ly, 00040 const SrcArithT& Lxx, const SrcArithT& Lxy, const SrcArithT& Lyy) 00041 { 00042 return Lxx*Ly*Ly -2*Lx*Ly*Lxy + Lyy*Lx*Lx; 00043 } 00044 }; 00045 00046 } // namespace Trait 00047 } // namespace Array 00048 } // namespace Core 00049 } // namespace Impala 00050 00051 #endif