2 #ifndef OPENGM_OPERATIONS_MINIMIZER_HXX
3 #define OPENGM_OPERATIONS_MINIMIZER_HXX
17 {
return std::numeric_limits<T>::infinity(); }
21 { out = std::numeric_limits<T>::infinity(); }
26 {
return -std::numeric_limits<T>::infinity(); }
30 { out = -std::numeric_limits<T>::infinity(); }
33 template<
class T1,
class T2>
34 static void op(
const T1& in1, T2& out)
35 { out = out < in1 ? out : in1; }
37 template<
class T1,
class T2,
class T3>
38 static void op(
const T1& in1,
const T2& in2, T3& out)
39 { out = in1 < in2 ? in1 : in2; }
42 template<
class T1,
class T2>
43 static void iop(
const T1& in1, T2& out)
44 { out = out > in1 ? out : in1; }
46 template<
class T1,
class T2,
class T3>
47 static void iop(
const T1& in1,
const T2& in2, T3& out)
48 { out = in1 > in2 ? in1:in2; }
56 static bool bop(
const T& in1,
const T& in2)
57 {
return (in1 < in2); }
61 static bool ibop(
const T& in1,
const T& in2)
62 {
return (in1 > in2); }
67 #endif // #ifndef OPENGM_OPERATIONS_MINIMIZER_HXX
static void op(const T1 &in1, T2 &out)
operation (in-place)
static void iop(const T1 &in1, const T2 &in2, T3 &out)
inverse operation (not in-place)
static void op(const T1 &in1, const T2 &in2, T3 &out)
operation (not in-place)
static bool hasbop()
bool operation flag
static bool bop(const T &in1, const T &in2)
boolean operation
static void ineutral(T &out)
inverse neutral element (call by reference)
static void neutral(T &out)
neutral element (call by reference)
static T ineutral()
inverse neutral element (with return)
static T neutral()
neutral element (with return)
static bool ibop(const T &in1, const T &in2)
inverse boolean operation
static void iop(const T1 &in1, T2 &out)
inverse operation (in-place)
Minimization as a unary accumulation.