Skip to main content

ClikaRT::spec::SymFloat

class

Header: ClikaRT/compute/symbolic.h

A symbolic-or-concrete float, e.g. an interpolation scale that derives a dimension. Arithmetic returns Result because it is fallible: a concrete pair folds immediately, while a symbolic operand is evaluated by the symbolic engine, which can report an error for an unsupported combination.

Member functions

SymFloat(double)

SymFloat(double concrete)

A concrete double; implicit, so a plain literal composes directly.

Declared in ClikaRT/compute/symbolic.h, line 130

SymFloat(SymInt)

explicit SymFloat(const SymInt& value)

Widen an integer dimension to float (e.g. for dim * scale).

Declared in ClikaRT/compute/symbolic.h, line 132

SymFloat(SymFloat)

SymFloat(const SymFloat& other)

Copy: an independent value (a symbolic node, when present, is not shared).

Declared in ClikaRT/compute/symbolic.h, line 134

SymFloat(SymFloat)

SymFloat(SymFloat&& other) noexcept

Move: takes over the symbolic node; other reverts to a concrete default.

Declared in ClikaRT/compute/symbolic.h, line 136

operator=(SymFloat)

SymFloat& operator=(const SymFloat& other)

Copy-assign; same value semantics as the copy ctor.

Declared in ClikaRT/compute/symbolic.h, line 138

operator=(SymFloat)

SymFloat& operator=(SymFloat&& other) noexcept

Move-assign; same transfer as the move ctor.

Declared in ClikaRT/compute/symbolic.h, line 140

~SymFloat()

~SymFloat()

Releases the symbolic node, if any.

Declared in ClikaRT/compute/symbolic.h, line 142

add()

SymFloat add(const SymFloat& other) const

Symbolic addition; a concrete pair folds immediately.

Throws

  • ClikaRT::Error: when the symbolic engine cannot evaluate the combination (see the class note).

Declared in ClikaRT/compute/symbolic.h, line 148

sub()

SymFloat sub(const SymFloat& other) const

Symbolic subtraction.

Throws

  • ClikaRT::Error: as add.

Declared in ClikaRT/compute/symbolic.h, line 151

mul()

SymFloat mul(const SymFloat& other) const

Symbolic multiplication.

Throws

  • ClikaRT::Error: as add.

Declared in ClikaRT/compute/symbolic.h, line 154

div()

SymFloat div(const SymFloat& other) const

Symbolic division.

Throws

  • ClikaRT::Error: as add.

Declared in ClikaRT/compute/symbolic.h, line 157

to_int()

SymInt to_int(DataType dtype = DataType::Int64) const

Truncate toward zero to an integer dimension (== floor for the non-negative values shapes use). dtype is the integer target.

Declared in ClikaRT/compute/symbolic.h, line 161

is_concrete()

bool is_concrete() const noexcept

True when this holds a plain double (no symbolic node).

Declared in ClikaRT/compute/symbolic.h, line 164

concrete_value()

std::optional<double> concrete_value() const

The value iff is_concrete(), else nullopt.

Declared in ClikaRT/compute/symbolic.h, line 166