IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
PolynomialKernel.h
1 // PolynomialKernel.h:
3 // -------------------
4 //
14 
15 #ifndef __IPSDKMATH_POLYNOMIALKERNEL_H__
16 #define __IPSDKMATH_POLYNOMIALKERNEL_H__
17 
22 
23 namespace ipsdk {
24 namespace math {
25 namespace clustering {
26 
29 
31 {
32 protected:
34  PolynomialKernel(const ipReal64 alpha,
35  const ipReal64 beta,
36  const ipReal64 degree);
37 
38 public:
41 
42 // methods
43 public:
51  static PolynomialKernel createKernel(const ipReal64 alpha,
52  const ipReal64 beta,
53  const ipReal64 degree);
54 
56  inline ipReal64 getAlpha() const
57  {
58  return _alpha;
59  }
60 
62  inline ipReal64 getBeta() const
63  {
64  return _beta;
65  }
66 
68  inline ipReal64 getDegree() const
69  {
70  return _degree;
71  }
72 
74  IPSDK_FORCEINLINE ipReal64 value(const Vector& v) const
75  {
76  return value(v, v);
77  }
78 
81  IPSDK_FORCEINLINE ipReal64 value(const Vector& v0,
82  const Vector& v1) const
83  {
84  // compute dot product between elements
85  const ipReal64 dotProd = boost::numeric::ublas::inner_prod(v0, v1);
86 
87  return std::pow(_alpha*dotProd + _beta, _degree);
88  }
89 
90 // attributes
91 protected:
94 
97 
100 };
101 
104 
105 } // end of namespace clustering
106 } // end of namespace math
107 } // end of namespace ipsdk
108 
109 #endif // __IPSDKMATH_POLYNOMIALKERNEL_H__
Definition of import/export macro for library.
Defines the IPSDK_FORCEINLINE.
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
ipReal64 getBeta() const
retrieve beta additive factor for polynomial function
Definition: PolynomialKernel.h:62
ipReal64 _beta
beta additive factor for polynomial function
Definition: PolynomialKernel.h:96
double ipReal64
Base types definition.
Definition: BaseTypes.h:57
Definition: PolynomialKernel.h:30
boost::numeric::ublas::vector< ipReal64 > Vector
vector type associated to library
Definition: LinearAlgebraTypes.h:36
ipReal64 getDegree() const
retrieve polynomial function degree
Definition: PolynomialKernel.h:68
#define IPSDKMATH_API
Import/Export macro for library IPSDKMath.
Definition: IPSDKMathExports.h:27
IPSDK_FORCEINLINE PackT pow(const PackT &in1, const PackT &in2)
given 2 input packs in1 and in2, returns exp(in2.log(in1))
Definition: pow.h:41
ipReal64 _degree
polynomial function degree
Definition: PolynomialKernel.h:99
Predefined types for clustering algorithm.
ipReal64 _alpha
alpha multiplicative factor for polynomial function
Definition: PolynomialKernel.h:93
Utility functions for linear algebra operations management.
ipReal64 getAlpha() const
retrieve alpha multiplicative factor for polynomial function
Definition: PolynomialKernel.h:56