aGrUM  0.20.2
a C++ library for (probabilistic) graphical models
gum::credal::lp Namespace Reference

namespace for constraint-based description of credal sets More...

Classes

class  LpCol
 Class representing a variable ( a column ) of a linear program, i.e. More...
 
class  LpExpr
 Class representing a linear expression. More...
 
class  LpInterface
 Class representing a linear program. More...
 
class  LpRow
 Class representing a row of the linear program, i.e. More...
 

Functions

std::ostream & operator<< (std::ostream &out, const LpRow &row)
 
void swap (HashTable< LpCol, double > *&a, HashTable< LpCol, double > *&b)
 Swap the addresses of two pointers to hashTables. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const LpInterface< T > &lpi)
 
template<typename T2 >
LpExpr operator+ (const LpExpr &lhs, const T2 &rhs)
 
template<typename T2 >
LpExpr operator- (const LpExpr &lhs, const T2 &rhs)
 
Non-members operators +
template<typename T2 >
LpExpr operator+ (LpExpr &&lhs, const T2 &rhs)
 Overload of operator + between anything ( a scalar, a variable or an expression ) and anything except a temporary expression. More...
 
template<typename T2 >
LpExpr operator+ (LpExpr &lhs, const T2 &rhs)
 Overload of operator + between anything ( a scalar, a variable or an expression ) and anything except a temporary expression. More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr operator+ (const T1 &lhs, LpExpr &&rhs)
 Overload of operator + between anything ( a scalar, a variable or an expression ) and a temporary expression. More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr operator+ (const T1 &lhs, LpExpr &rhs)
 Overload of operator + between anything ( a scalar, a variable or an expression ) and anything except a temporary expression. More...
 
template<typename T2 , forbidden_type< T2, LpExpr > = 0>
LpExpr operator+ (const LpCol &lhs, const T2 &rhs)
 operator+ between LpCol lhs and not LpExpr rhs More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr operator+ (const T1 &lhs, const LpCol &rhs)
 operator+ between neither LpExpr nor LpCol lhs and LpCol rhs More...
 
Non-members operators -
template<typename T2 >
LpExpr operator- (LpExpr &&lhs, const T2 &rhs)
 Overload of operator - between anything ( a scalar, a variable or an expression ) and anything except a temporary expression. More...
 
template<typename T2 >
LpExpr operator- (LpExpr &lhs, const T2 &rhs)
 Overload of operator - between anything ( a scalar, a variable or an expression ) and anything except a temporary expression. More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr operator- (const T1 &lhs, LpExpr &&rhs)
 Overload of operator - between anything ( a scalar, a variable or an expression ) and a temporary expression. More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr operator- (const T1 &lhs, LpExpr &rhs)
 Overload of operator - between anything ( a scalar, a variable or an expression ) and anything except a temporary expression. More...
 
template<typename T2 , forbidden_type< T2, LpExpr > = 0>
LpExpr operator- (const LpCol &lhs, const T2 &rhs)
 operator- between LpCol lhs and not LpExpr rhs More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr operator- (const T1 &lhs, const LpCol &rhs)
 operator- between neither LpExpr nor LpCol lhs and LpCol rhs More...
 
Non-members operators *
template<typename SCALAR >
LpExpr operator* (const SCALAR &lhs, const LpCol &rhs)
 Overload of operator * between a scalar and a variable. More...
 
template<typename SCALAR >
LpExpr operator* (const LpCol &lhs, const SCALAR &rhs)
 Overload of operator * between a variable and a scalar. More...
 
Non-members operators <=
template<typename T2 >
LpExpr operator<= (const LpExpr &lhs, T2 &&rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T2 >
LpExpr operator<= (const LpCol &lhs, T2 &&rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T1 , forbidden_type< T1, LpExpr & > = 0, forbidden_type< T1, LpCol & > = 0>
LpExpr operator<= (T1 &&lhs, const LpExpr &rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T1 , forbidden_type< T1, LpExpr & > = 0, forbidden_type< T1, LpCol & > = 0>
LpExpr operator<= (T1 &&lhs, const LpCol &rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T2 >
LpExpr operator<= (LpExpr &&lhs, T2 &&rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T2 >
LpExpr operator<= (LpCol &&lhs, T2 &&rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr operator<= (T1 &&lhs, LpExpr &&rhs)
 Overload of operator <= between anything and anything. More...
 
template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr operator<= (T1 &&lhs, LpCol &&rhs)
 Overload of operator <= between anything and anything. More...
 

Detailed Description

namespace for constraint-based description of credal sets

Function Documentation

◆ operator*() [1/2]

template<typename SCALAR >
LpExpr gum::credal::lp::operator* ( const SCALAR &  lhs,
const LpCol rhs 
)

Overload of operator * between a scalar and a variable.

Parameters
lhsthe constant reference to the scalar on the left hand side of the operator.
rhsthe constant reference to the variable on the right hand side of the operator.
Template Parameters
SCALARA scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs * rhs.

Definition at line 492 of file LpInterface_tpl.h.

492  {
493  return LpExpr::multiply(lhs, rhs);
494  }

◆ operator*() [2/2]

template<typename SCALAR >
LpExpr gum::credal::lp::operator* ( const LpCol lhs,
const SCALAR &  rhs 
)

Overload of operator * between a variable and a scalar.

Parameters
lhsthe constant reference to the variable on the left hand side of the operator.
rhsthe constant reference to the scalar on the right hand side of the operator.
Template Parameters
SCALARA scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs * rhs.

Definition at line 497 of file LpInterface_tpl.h.

497  {
498  return LpExpr::multiply(rhs, lhs);
499  }

◆ operator+() [1/7]

template<typename T2 >
LpExpr gum::credal::lp::operator+ ( const LpExpr lhs,
const T2 &  rhs 
)

Definition at line 382 of file LpInterface_tpl.h.

382  {
383  LpExpr expr(lhs);
384  expr += rhs;
385 
386  return expr;
387  }

◆ operator+() [2/7]

template<typename T2 >
LpExpr gum::credal::lp::operator+ ( LpExpr &&  lhs,
const T2 &  rhs 
)

Overload of operator + between anything ( a scalar, a variable or an expression ) and anything except a temporary expression.

Implements both the copy operator + and move operator + because operator + is implemented on top of operators +=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe rvalue reference to the temporary expression on the right hand side of the operator.
rhsthe universal reference to either a scalar, a variable or a lvalue expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs + rhs.

Definition at line 374 of file LpInterface_tpl.h.

374  {
375  LpExpr expr = std::move(lhs);
376  expr += rhs;
377 
378  return expr;
379  }

◆ operator+() [3/7]

template<typename T2 >
LpExpr gum::credal::lp::operator+ ( LpExpr lhs,
const T2 &  rhs 
)

Overload of operator + between anything ( a scalar, a variable or an expression ) and anything except a temporary expression.

Implements both the copy operator + and move operator + because operator + is implemented on top of operators +=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe rvalue reference to the temporary expression on the right hand side of the operator.
rhsthe universal reference to either a scalar, a variable or a lvalue expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs + rhs.

◆ operator+() [4/7]

template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr gum::credal::lp::operator+ ( const T1 &  lhs,
LpExpr &&  rhs 
)

Overload of operator + between anything ( a scalar, a variable or an expression ) and a temporary expression.

This overload is used because only one side of the operator profit from move operation; the one with a temporary expression. If the expression if on the right hand side, we always add it first to profit from move operation. Otherwise another overload is used.

Implements both the copy operator + and move operator + because operator + is implemented on top of operators +=. Because of template type deduction lhs is a "universal reference", i.e. either an lvalue or an rvalue reference. To force rvalue reference with template deduction one should use const : const T&& lhs : lhs is an rvalue reference and WILL be modified ( not intuitive const ). Therefor std::forward must be used to forward the type of lhs. rhs is an rvalue reference and std::move must be used to forward it's type.

Parameters
lhsthe universal reference to either a scalar, a variable or an expression on the left hand side of the operator.
rhsthe rvalue reference to the temporary expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Warning
T1 can not be LpExpr (to avoid ambiguity with previous functions)
Returns
An expression which yields the result of lhs + rhs.

Definition at line 390 of file LpInterface_tpl.h.

390  {
391  LpExpr expr = std::move(rhs);
392  ;
393  expr += lhs;
394 
395  return expr;
396  }

◆ operator+() [5/7]

template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr gum::credal::lp::operator+ ( const T1 &  lhs,
LpExpr rhs 
)

Overload of operator + between anything ( a scalar, a variable or an expression ) and anything except a temporary expression.

Implements both the copy operator + and move operator + because operator + is implemented on top of operators +=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe rvalue reference to the temporary expression on the right hand side of the operator.
rhsthe universal reference to either a scalar, a variable or a lvalue expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs + rhs.

Definition at line 399 of file LpInterface_tpl.h.

399  {
400  LpExpr expr(rhs);
401  expr += lhs;
402 
403  return expr;
404  }

◆ operator+() [6/7]

template<typename T2 , forbidden_type< T2, LpExpr > = 0>
LpExpr gum::credal::lp::operator+ ( const LpCol lhs,
const T2 &  rhs 
)

operator+ between LpCol lhs and not LpExpr rhs

Definition at line 407 of file LpInterface_tpl.h.

407  {
408  LpExpr expr;
409  expr += lhs;
410  expr += rhs;
411 
412  return expr;
413  }

◆ operator+() [7/7]

template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr gum::credal::lp::operator+ ( const T1 &  lhs,
const LpCol rhs 
)

operator+ between neither LpExpr nor LpCol lhs and LpCol rhs

Definition at line 418 of file LpInterface_tpl.h.

418  {
419  LpExpr expr;
420  expr += rhs;
421  expr += lhs;
422 
423  return expr;
424  }

◆ operator-() [1/7]

template<typename T2 >
LpExpr gum::credal::lp::operator- ( const LpExpr lhs,
const T2 &  rhs 
)

Definition at line 436 of file LpInterface_tpl.h.

436  {
437  LpExpr expr(lhs);
438  expr -= rhs;
439 
440  return expr;
441  }

◆ operator-() [2/7]

template<typename T2 >
LpExpr gum::credal::lp::operator- ( LpExpr &&  lhs,
const T2 &  rhs 
)

Overload of operator - between anything ( a scalar, a variable or an expression ) and anything except a temporary expression.

Implements both the copy operator - and move operator - because operator - is implemented on top of operators -=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe rvalue reference to the temporary expression on the right hand side of the operator.
rhsthe universal reference to either a scalar, a variable or a lvalue expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs -rhs.

Definition at line 428 of file LpInterface_tpl.h.

428  {
429  LpExpr expr = std::move(lhs);
430  expr -= rhs;
431 
432  return expr;
433  }

◆ operator-() [3/7]

template<typename T2 >
LpExpr gum::credal::lp::operator- ( LpExpr lhs,
const T2 &  rhs 
)

Overload of operator - between anything ( a scalar, a variable or an expression ) and anything except a temporary expression.

Implements both the copy operator - and move operator - because operator - is implemented on top of operators -=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe rvalue reference to the temporary expression on the right hand side of the operator.
rhsthe universal reference to either a scalar, a variable or a lvalue expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs -rhs.

◆ operator-() [4/7]

template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr gum::credal::lp::operator- ( const T1 &  lhs,
LpExpr &&  rhs 
)

Overload of operator - between anything ( a scalar, a variable or an expression ) and a temporary expression.

This overload is used because only one side of the operator profit from move operation; the one with a temporary expression. If the expression if on the right hand side, we always add it first to profit from move operation. Otherwise another overload is used.

Implements both the copy operator - and move operator - because operator - is implemented on top of operators -=. Because of template type deduction lhs is a "universal reference", i.e. either an lvalue or an rvalue reference. To force rvalue reference with template deduction one should use const : const T&& lhs : lhs is an rvalue reference and WILL be modified ( not intuitive const ). Therefor std::forward must be used to forward the type of lhs. rhs is an rvalue reference and std::move must be used to forward it's type.

Parameters
lhsthe universal reference to either a scalar, a variable or an expression on the left hand side of the operator.
rhsthe rvalue reference to the temporary expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Warning
T1 can not be LpExpr (to avoid ambiguity with previous functions)
Returns
An expression which yields the result of lhs - rhs.

Definition at line 444 of file LpInterface_tpl.h.

444  {
445  LpExpr expr;
446  expr += std::move(rhs);
447  ;
448  expr -= lhs;
449 
450  return expr;
451  }

◆ operator-() [5/7]

template<typename T1 , forbidden_type< T1, LpExpr > = 0>
LpExpr gum::credal::lp::operator- ( const T1 &  lhs,
LpExpr rhs 
)

Overload of operator - between anything ( a scalar, a variable or an expression ) and anything except a temporary expression.

Implements both the copy operator - and move operator - because operator - is implemented on top of operators -=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe rvalue reference to the temporary expression on the right hand side of the operator.
rhsthe universal reference to either a scalar, a variable or a lvalue expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs -rhs.

Definition at line 454 of file LpInterface_tpl.h.

454  {
455  LpExpr expr;
456  expr += rhs;
457  expr -= lhs;
458 
459  return expr;
460  }

◆ operator-() [6/7]

template<typename T2 , forbidden_type< T2, LpExpr > = 0>
LpExpr gum::credal::lp::operator- ( const LpCol lhs,
const T2 &  rhs 
)

operator- between LpCol lhs and not LpExpr rhs

Parameters
lhsthe universal reference to either a scalar, a variable or an expression on the left hand side of the operator.
rhsthe rvalue reference to the temporary expression on the right hand side of the operator.
Template Parameters
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.

Definition at line 463 of file LpInterface_tpl.h.

463  {
464  LpExpr expr;
465  expr += lhs;
466  expr -= rhs;
467 
468  return expr;
469  }

◆ operator-() [7/7]

template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr gum::credal::lp::operator- ( const T1 &  lhs,
const LpCol rhs 
)

operator- between neither LpExpr nor LpCol lhs and LpCol rhs

Parameters
lhsthe universal reference to either a scalar, a variable or an expression on the left hand side of the operator.
rhsthe rvalue reference to the temporary expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.

Definition at line 474 of file LpInterface_tpl.h.

474  {
475  LpExpr expr;
476  expr += rhs;
477  expr -= lhs;
478 
479  return expr;
480  }

◆ operator<<() [1/2]

template<typename T >
std::ostream& gum::credal::lp::operator<< ( std::ostream &  out,
const LpInterface< T > &  lpi 
)
Parameters
outthe reference to the caller, i.e. left side of <<.
lpithe constant reference to the linear program whose representation we want.
Returns
The address of the caller.

Definition at line 158 of file LpInterface_tpl.h.

158  {
159  out << lpi.toString();
160  return out;
161  }

◆ operator<<() [2/2]

std::ostream& gum::credal::lp::operator<< ( std::ostream &  out,
const LpRow row 
)
Parameters
outthe reference to the caller, i.e. left side of <<.
rowthe constant reference to the row whose representation we want.
Returns
The address of the caller.

Definition at line 641 of file LpInterface.cpp.

641  {
642  out << row.toString();
643  return out;
644  }

◆ operator<=() [1/8]

template<typename T2 >
LpExpr gum::credal::lp::operator<= ( const LpExpr lhs,
T2 &&  rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 512 of file LpInterface_tpl.h.

512  {
513  return LpExpr::lessThan(lhs, std::forward< T2 >(rhs));
514  }

◆ operator<=() [2/8]

template<typename T2 >
LpExpr gum::credal::lp::operator<= ( const LpCol lhs,
T2 &&  rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 517 of file LpInterface_tpl.h.

517  {
518  return LpExpr::lessThan(lhs, std::forward< T2 >(rhs));
519  }

◆ operator<=() [3/8]

template<typename T1 , forbidden_type< T1, LpExpr & > = 0, forbidden_type< T1, LpCol & > = 0>
LpExpr gum::credal::lp::operator<= ( T1 &&  lhs,
const LpExpr rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 524 of file LpInterface_tpl.h.

524  {
525  return LpExpr::lessThan(std::forward< T1 >(lhs), rhs);
526  }

◆ operator<=() [4/8]

template<typename T1 , forbidden_type< T1, LpExpr & > = 0, forbidden_type< T1, LpCol & > = 0>
LpExpr gum::credal::lp::operator<= ( T1 &&  lhs,
const LpCol rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 531 of file LpInterface_tpl.h.

531  {
532  return LpExpr::lessThan(std::forward< T1 >(lhs), rhs);
533  }

◆ operator<=() [5/8]

template<typename T2 >
LpExpr gum::credal::lp::operator<= ( LpExpr &&  lhs,
T2 &&  rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 537 of file LpInterface_tpl.h.

537  {
538  return LpExpr::lessThan(std::move(lhs), std::forward< T2 >(rhs));
539  }

◆ operator<=() [6/8]

template<typename T2 >
LpExpr gum::credal::lp::operator<= ( LpCol &&  lhs,
T2 &&  rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 542 of file LpInterface_tpl.h.

542  {
543  return LpExpr::lessThan(std::move(lhs), std::forward< T2 >(rhs));
544  }

◆ operator<=() [7/8]

template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr gum::credal::lp::operator<= ( T1 &&  lhs,
LpExpr &&  rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 549 of file LpInterface_tpl.h.

549  {
550  return LpExpr::lessThan(std::forward< T1 >(lhs), std::move(rhs));
551  }

◆ operator<=() [8/8]

template<typename T1 , forbidden_type< T1, LpExpr > = 0, forbidden_type< T1, LpCol > = 0>
LpExpr gum::credal::lp::operator<= ( T1 &&  lhs,
LpCol &&  rhs 
)

Overload of operator <= between anything and anything.

Implements both the copy operator <= and move operator <=. Because of template type deduction both lhs and rhs are "universal references", i.e. either an lvalue or an rvalue reference. Therefor std::forward must be used to forward the type of lhs and rhs.

Parameters
lhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the left hand side of the operator.
rhsthe universal reference to either a ( temporary ) scalar, a ( temporary ) variable or a ( temporary ) expression on the right hand side of the operator.
Template Parameters
T1A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
T2A scalar type ( integer or float ( any precision ) ) or a LpCol or a LpExpr.
Returns
An expression which yields the result of lhs <= rhs.

Definition at line 556 of file LpInterface_tpl.h.

556  {
557  return LpExpr::lessThan(std::forward< T1 >(lhs), std::move(rhs));
558  }

◆ swap()

void gum::credal::lp::swap ( HashTable< LpCol, double > *&  a,
HashTable< LpCol, double > *&  b 
)

Swap the addresses of two pointers to hashTables.

Used by move operations as the temporary will take care of the delete operations.

Warning
DO NOT call this directly ( one of the object owning a pointer must be a temporary, i.e. an "rvalue reference" ).
Parameters
athe address of the first pointer.
bthe address of the second pointer.