Public Types | Public Member Functions | Static Public Member Functions
ngraph::Dimension Class Reference

Class representing a dimension, which may be dynamic (undetermined until runtime), in a shape or shape-like object. More...

#include <dimension.hpp>

Public Types

using value_type = int64_t
 

Public Member Functions

 Dimension (value_type dimension)
 Construct a static dimension. More...
 
 Dimension (value_type min_dimension, value_type max_dimension)
 Construct a dynamic dimension with bounded range. More...
 
 Dimension ()=default
 Construct a dynamic dimension with range [0, ...].
 
bool operator== (const Dimension &dimension) const
 
bool operator!= (const Dimension &dimension) const
 
bool is_static () const
 Check whether this dimension is static. More...
 
bool is_dynamic () const
 Check whether this dimension is dynamic. More...
 
value_type get_length () const
 Convert this dimension to value_type. This dimension must be static and non-negative. More...
 
value_type get_min_length () const
 
value_type get_max_length () const
 
const Intervalget_interval () const
 Return the interval of valid lengths.
 
Intervalget_interval ()
 
bool same_scheme (const Dimension &dim) const
 Check whether this dimension represents the same scheme as the argument (both dynamic, or equal). More...
 
bool compatible (const Dimension &d) const
 Check whether this dimension is capable of being merged with the argument dimension. More...
 
bool relaxes (const Dimension &d) const
 Check whether this dimension is a relaxation of the argument. More...
 
bool refines (const Dimension &d) const
 Check whether this dimension is a refinement of the argument. More...
 
Dimension operator+ (const Dimension &dim) const
 Addition operator for Dimension. More...
 
Dimension operator- (const Dimension &dim) const
 Subtraction operator for Dimension. More...
 
Dimension operator* (const Dimension &dim) const
 Multiplication operator for Dimension. More...
 
Dimensionoperator+= (const Dimension &dim)
 Add-into operator for Dimension. More...
 
Dimensionoperator*= (const Dimension &dim)
 Multiply-into operator for Dimension. More...
 
Dimension operator& (const Dimension &dim) const
 Intersection of dimensions.
 
Dimensionoperator&= (const Dimension &dim)
 Intersection of dimensions.
 

Static Public Member Functions

static bool merge (Dimension &dst, const Dimension d1, const Dimension d2)
 Try to merge two Dimension objects together. More...
 
static bool broadcast_merge (Dimension &dst, const Dimension d1, const Dimension d2)
 Try to merge two Dimension objects together with implicit broadcasting of unit-sized dimension to non unit-sized dimension.
 
static Dimension dynamic ()
 Create a dynamic dimension. More...
 

Detailed Description

Class representing a dimension, which may be dynamic (undetermined until runtime), in a shape or shape-like object.

Static dimensions may be implicitly converted from value_type. A dynamic dimension is constructed with Dimension() or Dimension::dynamic().

Constructor & Destructor Documentation

◆ Dimension() [1/2]

ngraph::Dimension::Dimension ( value_type  dimension)

Construct a static dimension.

Parameters
dimensionValue of the dimension.

◆ Dimension() [2/2]

ngraph::Dimension::Dimension ( value_type  min_dimension,
value_type  max_dimension 
)

Construct a dynamic dimension with bounded range.

Parameters
min_dimensionThe lower inclusive limit for the dimension
mas_dimensionThe upper inclusive limit for the dimension

Member Function Documentation

◆ compatible()

bool ngraph::Dimension::compatible ( const Dimension d) const

Check whether this dimension is capable of being merged with the argument dimension.

Parameters
dThe dimension to compare this dimension with.
Returns
true if this dimension is compatible with d, else false.

Two dimensions are considered compatible if it is possible to merge them. (See Dimension::merge.)

◆ dynamic()

static Dimension ngraph::Dimension::dynamic ( )
inlinestatic

Create a dynamic dimension.

Returns
A dynamic dimension.

◆ get_length()

value_type ngraph::Dimension::get_length ( ) const

Convert this dimension to value_type. This dimension must be static and non-negative.

Exceptions
std::invalid_argumentIf this dimension is dynamic or negative.

◆ is_dynamic()

bool ngraph::Dimension::is_dynamic ( ) const
inline

Check whether this dimension is dynamic.

Returns
false if the dimension is static, else true.

◆ is_static()

bool ngraph::Dimension::is_static ( ) const
inline

Check whether this dimension is static.

Returns
true if the dimension is static, else false.

◆ merge()

static bool ngraph::Dimension::merge ( Dimension dst,
const Dimension  d1,
const Dimension  d2 
)
static

Try to merge two Dimension objects together.

Parameters
[out]dstReference to write the merged Dimension into.
d1First dimension to merge.
d2Second dimension to merge.
Returns
true if merging succeeds, else false.
  • If d1 is dynamic, writes d2 to dst and returns true.
  • If d2 is dynamic, writes d1 to dst and returns true.
  • If d1 and d2 are static and equal, writes d1 to dst and returns true.
  • If d1 and d2 are both static and unequal, leaves dst unchanged and returns false.

◆ operator*()

Dimension ngraph::Dimension::operator* ( const Dimension dim) const

Multiplication operator for Dimension.

Parameters
dimRight operand for multiplicaiton.
Returns
Smallest interval containing all "produces" which are 0 if either of this or dim has length 0, else unbounded if either is unbounded, else product of lengths.

◆ operator*=()

Dimension& ngraph::Dimension::operator*= ( const Dimension dim)
inline

Multiply-into operator for Dimension.

Parameters
dimRight operand for multiplication.
Returns
A reference to *this, after updating *this to the value *this * dim.

◆ operator+()

Dimension ngraph::Dimension::operator+ ( const Dimension dim) const

Addition operator for Dimension.

Parameters
dimRight operand for addition.
Returns
Smallest interval dimension enclosing inputs

◆ operator+=()

Dimension& ngraph::Dimension::operator+= ( const Dimension dim)
inline

Add-into operator for Dimension.

Parameters
dimRight operand for addition.
Returns
A reference to *this, after updating *this to the value *this + dim.

◆ operator-()

Dimension ngraph::Dimension::operator- ( const Dimension dim) const

Subtraction operator for Dimension.

Parameters
dimRight operand for subtraction.
Returns
Smallest interval dimension enclosing inputs

◆ refines()

bool ngraph::Dimension::refines ( const Dimension d) const

Check whether this dimension is a refinement of the argument.

Parameters
dThe dimension to compare this dimension with.
Returns
true if this dimension relaxes d, else false.

A dimension d2 refines (or is a refinement of) d1 if d1 and d2 are static and equal, or d2 is dynamic.

d1.refines(d2) is equivalent to d2.relaxes(d1).

◆ relaxes()

bool ngraph::Dimension::relaxes ( const Dimension d) const

Check whether this dimension is a relaxation of the argument.

Parameters
dThe dimension to compare this dimension with.
Returns
true if this dimension relaxes d, else false.

A dimension d1 relaxes (or is a relaxation of) d2 if d1 and d2 are static and equal, or d1 is dynamic.

d1.relaxes(d2) is equivalent to d2.refines(d1).

◆ same_scheme()

bool ngraph::Dimension::same_scheme ( const Dimension dim) const

Check whether this dimension represents the same scheme as the argument (both dynamic, or equal).

Parameters
dimThe other dimension to compare this dimension to.
Returns
true if this dimension and dim are both dynamic, or if they are both static and equal; otherwise, false.

The documentation for this class was generated from the following file: