29 #ifndef GUM_LINEAR_APPROXIMATION_POLICY_H 30 #define GUM_LINEAR_APPROXIMATION_POLICY_H 32 #include <agrum/agrum.h> 33 #include <agrum/tools/core/approximations/approximationPolicy.h> 53 template <
typename GUM_SCALAR >
70 GUM_SCALAR high = (GUM_SCALAR)1.0,
71 GUM_SCALAR eps = (GUM_SCALAR)0.1);
91 GUM_SCALAR
fromExact(
const GUM_SCALAR& value)
const;
97 void combineAdd(
const ApproximationPolicy< GUM_SCALAR >* ap);
104 void combineSub(
const ApproximationPolicy< GUM_SCALAR >* ap);
111 void combineMult(
const ApproximationPolicy< GUM_SCALAR >* ap);
117 void combineDiv(
const ApproximationPolicy< GUM_SCALAR >* ap);
123 void combineMax(
const ApproximationPolicy< GUM_SCALAR >* ap);
129 void combineMin(
const ApproximationPolicy< GUM_SCALAR >* ap);
157 GUM_SCALAR
decode(Idx representation)
const;
171 virtual void setLimits(
const GUM_SCALAR& newLowLimit,
const GUM_SCALAR& newHighLimit);
178 virtual void setLowLimit(
const GUM_SCALAR& newLowLimit);
191 virtual void setHighLimit(
const GUM_SCALAR& newHighLimit);
226 GUM_SCALAR
_decode_(
const GUM_SCALAR& representation)
const;
239 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 245 #include <agrum/tools/core/approximations/linearApproximationPolicy_tpl.h> void combineSub(const ApproximationPolicy< GUM_SCALAR > *ap)
Combine using substraction with the given gum::ApproximationPolicy.
virtual void setEpsilon(const GUM_SCALAR &e)
Sets approximation factor.
void combineDiv(const ApproximationPolicy< GUM_SCALAR > *ap)
Combine using division with the given gum::ApproximationPolicy.
INLINE void emplace(Args &&... args)
LinearApproximationPolicy(const LinearApproximationPolicy< GUM_SCALAR > *md)
Copy constructor.
void combineMin(const ApproximationPolicy< GUM_SCALAR > *ap)
Combine using min with the given gum::ApproximationPolicy.
GUM_SCALAR _decode_(const GUM_SCALAR &representation) const
Concretely computes the approximate value from representation.
virtual void setLimits(const GUM_SCALAR &newLowLimit, const GUM_SCALAR &newHighLimit)
Set bounds in a whole.
Idx _encode_(const GUM_SCALAR &value) const
Concretely computes the approximate representation.
void computeNbInterval_()
Get the number of interval.
const GUM_SCALAR & highLimit() const
Gets Highest possible value.
GUM_SCALAR highLimit_
Highest value possible.
GUM_SCALAR lowLimit_
Lowest value possible.
Idx encode(const GUM_SCALAR &value) const
Encode a given value into its approximation representation.
virtual void setHighLimit(const GUM_SCALAR &newHighLimit)
Sets Highest possible value.
const GUM_SCALAR & lowLimit() const
Gets lowest possible value.
LinearApproximationPolicy(GUM_SCALAR low=(GUM_SCALAR) 0.0, GUM_SCALAR high=(GUM_SCALAR) 1.0, GUM_SCALAR eps=(GUM_SCALAR) 0.1)
Default constructor.
Idx nbInterval_
The number of interval.
void combineMult(const ApproximationPolicy< GUM_SCALAR > *ap)
Combine using multiplication with the given gum::ApproximationPolicy.
Class implementing linear approximation policy (meaning possible value are split out in interval)...
GUM_SCALAR decode(Idx representation) const
Convert approximation representation to value.
GUM_SCALAR safeFromExact(const GUM_SCALAR &value)
Convert value to his approximation.
void combineMax(const ApproximationPolicy< GUM_SCALAR > *ap)
Combine using max with the given gum::ApproximationPolicy.
GUM_SCALAR epsilon_
Approximation factor.
virtual void setLowLimit(const GUM_SCALAR &newLowLimit)
Sets lowest possible value.
void combineAdd(const ApproximationPolicy< GUM_SCALAR > *ap)
Combine using addition with the given gum::ApproximationPolicy.
GUM_SCALAR fromExact(const GUM_SCALAR &value) const
Convert value to his approximation.