При вычислении углов сторон треугольника возникает ошибка math domain error

Решаю задачу на степике. Вычислить стороны, периметр, площадь и углы треугольника. Все вычисляется за исключением углов. Выдает ошибку. Искал в интернете, не нашел. Когда доходит до вычисления углов, в консоли выдает ошибку Value Error: math domain error. Погуглил что это за тип ошибки, но никак не пойму что значит некорректные значения.

На всякий случай прикреплю код: https://replit.com/@RSammm/Gieomietrichieskiievychislieniia1#main.py

from math import sqrt, degrees, acos

def compute_len(x_0, y_0, x_1, y_1):
    len_line = sqrt((x_1 - x_0)**2 + (y_1 - y_0)**2)
    return len_line

def compute_area(a_1, a_2, a_3):
    p = (a_1 + a_2 + a_3) / 2
    area = sqrt(p * (p - a_1) * p * (p - a_2) * p * (p - a_3))
    return area

def compute_angle(a_1, a_2, a_3):
    angle_rad = (acos(a_1**2 + a_2**2 - a_3**2)) / (2 * a_1 * a_2)
    return degrees(angle_rad)

x_a = float(input('Координата первой точки по X_a: '))
y_a = float(input('Координата первой точки по Y_a: '))
x_b = float(input('Координата второй точки по X_b: '))
y_b = float(input('Координата второй точки по Y_b: '))
x_c = float(input('Координата третей точки по X_c: '))
y_c = float(input('Координата третей точки по Y_c: '))

a = compute_len(x_b, y_b, x_c, y_c)
b = compute_len(x_a, y_a, x_c, y_c)
c = compute_len(x_a, y_a, x_b, y_b)

print("Стороны: ", round(a, 3), round(b, 3), round(c, 3))

if a + b <= c or a + c <= b or b + c <= a:
    print('Треугольникне существует')
    
else:
    s = compute_area(a, b, c)
    
    p = a + b + c
    
    angle_B = compute_angle(abs(c), abs(a), abs(b))
    angle_C = compute_angle(abs(a), abs(b), abs(c))
    angle_A = compute_angle(abs(c), abs(b), abs(a))

    print("Площадь: ", round(s, 3))
    print("Периметр: ", round(p, 3))
    print("Углы: ", round(angle_A, 3), round(angle_B, 3), round(angle_C, 3))

Ответы (1 шт):

Автор решения: Gh0sTG0

Внимательнее надо быть со скобками... Вот тебе формулы косинусов углов.

Вот тебе косинусы

Значит сами углы будут арккосинусами ВСЕЙ ДРОБИ

Вот твой код:

angle_rad = (acos(a_1**2 + a_2**2 - a_3**2)) / (2 * a_1 * a_2) # Где у тебя тут скобки? А если еще раз подумать?

А вот так будет правильно:

angle_rad = acos((a_1 ** 2 + a_2 ** 2 - a_3 ** 2) / (2 * a_1 * a_2))

Проверил на своих и на твоих числах, все работает.

→ Ссылка