PrecisionContext

class kanon.units.precision.PrecisionContext(pmode: kanon.units.precision.PrecisionMode = <PrecisionMode.MAX: (<function PrecisionMode.<lambda>>, 1)>, tmode: kanon.units.precision.TruncatureMode = <TruncatureMode.NONE: (<function TruncatureMode.<lambda>>, 0)>, add: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT'), sub: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT'), mul: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT'), div: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT'), recording: bool = False)[source] [edit on github]

Bases: object

Context containing PreciseNumber arithmetic rules.

Attributes Summary

add

Addition ArithmeticIdentifier

div

Division ArithmeticIdentifier

mul

Multiplication ArithmeticIdentifier

pmode

Precision mode

recording

Recording mode

stack

set_precision context stack

sub

Substraction ArithmeticIdentifier

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: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT')

Addition ArithmeticIdentifier

div: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT')

Division ArithmeticIdentifier

mul: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT')

Multiplication ArithmeticIdentifier

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

Precision mode

recording: bool = False

Recording mode

stack: int = 0

set_precision context stack

sub: kanon.units.precision.ArithmeticIdentifier = (None, 'DEFAULT')

Substraction ArithmeticIdentifier

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: Optional[kanon.units.precision.ArithmeticIdentifier] = None, sub: Optional[kanon.units.precision.ArithmeticIdentifier] = None, mul: Optional[kanon.units.precision.ArithmeticIdentifier] = None, div: Optional[kanon.units.precision.ArithmeticIdentifier] = None)[source] [edit on github]

Mutates this PrecisionContext with new rules.

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

Record an operation