# -*- encoding: utf-8 -*-
# arithmetics.py
# This class implements math methods used by the other classes.
# author: steinkirch


from decimal import Decimal, getcontext
from utils.strings import log_error


def div(dividend, divisor) -> Decimal:
    """Return higher precision division."""

    if divisor == 0:
        log_error('Found a zero division error. Returning 0.')
        return 0
    return to_decimal(dividend) / to_decimal(divisor)


def to_decimal(value, precision=None) -> Decimal:
    """Return Decimal value for higher (defined) precision."""

    precision = precision or 22
    getcontext().prec = precision
    return Decimal(value)