PrecisionContext

class kanon.units.precision.PrecisionContext(pmode: PrecisionMode = PrecisionMode.MAX, tmode: TruncatureMode = TruncatureMode.NONE, add: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None, sub: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None, mul: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None, div: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = 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: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None

Addition CustomArithmeticAlgorithm

div: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None

Division CustomArithmeticAlgorithm

mul: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None

Multiplication CustomArithmeticAlgorithm

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

Precision mode

recording: bool = False

Recording mode

stack: int = 0

set_precision context stack

sub: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None = None

Substraction CustomArithmeticAlgorithm

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

Truncature mode

Methods Documentation

freeze()[source] [edit on github]

Returns a Dict containing this context rules

mutate(pmode: PrecisionMode | None = None, tmode: TruncatureMode | None = None, recording: bool | None = None, add: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None | Literal[False] = False, sub: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None | Literal[False] = False, mul: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None | Literal[False] = False, div: Callable[[PreciseNumber, PreciseNumber], PreciseNumber] | None | Literal[False] = False)[source] [edit on github]

Mutates this PrecisionContext with new rules.

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

Record an operation