Исходный код miptlabs.latex.representation

[документация]def represent_value(name, val=None, sigma=None, eps=None, units='', n=-1): r""" Форматирует значение величины для лабы в формат Если есть погрешности: $ name = val \\pm sigma [units], \\; \\varepsilon_{name} = eps \\% $ Иначе: $ name = val \\pm [units] $ :param name: Название величины :param val: Значение величины :param sigma: Абсолютная величины :param eps: Относительная величины :param units: единицы измерения :param n: число знаков округления, если -1, то округления нет :return: представление величины в формате latex для копипаста в текст лабы """ # Проверка, что не все значения None if val is None and sigma is None and eps is None: raise ValueError(f'У величины {name} не переданы никакие значения') # Проверка, что если все не None, то выполняется тождество val * eps == sigma if val is not None and sigma is not None and eps is not None and val * eps != sigma: raise ValueError(f'У величины {name} переданы некорректные значения') if units: units = f' \\; {units}' # Проверка, что есть пара не None if sigma is None and eps is None: print(f'WARNING!!! У величины {name} передано только значение.') return f'$ {name} = {round(val, n) if n != -1 else n}{units}$' if val is None and eps is None: raise ValueError(f'У величины {name} передана, только абсолютная погрешность') if val is None and sigma is None: raise ValueError(f'У величины {name} передана, только относительная погрешность') # Далее форматирование if eps is None and val != 0: eps = abs(sigma / val) if sigma is None: sigma = abs(val * eps) if val is None: if eps == 0: if sigma != 0: raise ValueError(f'У величины {name} переданы только погрешности, ' f'при чем относительная равна нулю, а абсолютная нет') else: raise ValueError(f'У величины {name} переданы только погрешности, при чем относительная и ' f'абсолютная равна нулю одновременно, получается неопределенность') else: print(f'WARNING!!! У величины {name} переданы только погрености, но не сама величина. ' f'Будет вычислено с точностью до знака Это странно.') val = sigma / eps if n != -1: val_ = round(val, n) sigma_ = round(sigma, n) eps_ = round(eps * 100, n) else: val_ = val sigma_ = sigma eps_ = eps * 100 return f'$ {name} = {val_} \\pm {sigma_}{units}, \\; \\varepsilon_{{{name}}} = {eps_} \\% $'