PrecisionContext

class kanon.units.precision.PrecisionContext(pmode: kanon.units.precision.PrecisionMode = PrecisionMode.MAX, tmode: kanon.units.precision.TruncatureMode = TruncatureMode.NONE, add: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None, sub: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None, mul: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None, div: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None, recording: bool = False)[source] [edit on github]

Bases: object

Context containing PreciseNumber arithmetic rules.

Attributes Summary

add

Addition CustomArithmeticAlgorithm

div

Division CustomArithmeticAlgorithm

mul

Multiplication CustomArithmeticAlgorithm

pmode

Precision mode

recording

Recording mode

stack

set_precision context stack

sub

Substraction CustomArithmeticAlgorithm

tmode

Truncature mode

Methods Summary

freeze()

Returns a Dict containing this context rules

mutate([pmode, tmode, recording, add, sub, ...])

Mutates this PrecisionContext with new rules.

record(*args)

Record an operation

Attributes Documentation

add: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None

Addition CustomArithmeticAlgorithm

div: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None

Division CustomArithmeticAlgorithm

mul: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None

Multiplication CustomArithmeticAlgorithm

pmode: kanon.units.precision.PrecisionMode = (<function PrecisionMode.<lambda>>, 1)

Precision mode

recording: bool = False

Recording mode

stack: int = 0

set_precision context stack

sub: Optional[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber]] = None

Substraction CustomArithmeticAlgorithm

tmode: kanon.units.precision.TruncatureMode = (<function TruncatureMode.<lambda>>, 0)

Truncature mode

Methods Documentation

freeze()[source] [edit on github]

Returns a Dict containing this context rules

mutate(pmode: Optional[kanon.units.precision.PrecisionMode] = None, tmode: Optional[kanon.units.precision.TruncatureMode] = None, recording: Optional[bool] = None, add: Union[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber], None, Literal[False]] = False, sub: Union[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber], None, Literal[False]] = False, mul: Union[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber], None, Literal[False]] = False, div: Union[Callable[[kanon.units.precision.PreciseNumber, kanon.units.precision.PreciseNumber], kanon.units.precision.PreciseNumber], None, Literal[False]] = False)[source] [edit on github]

Mutates this PrecisionContext with new rules.

record(*args)[source] [edit on github]

Record an operation