Calculate sin function. It's not a perfect function so I am rounding the result to 10 decimal places by default. Formula: sinx  x  x33!  x55!  x77!  ... Where: x  angle in randians. Source: https:www.homeschoolmath.netteachingsinecalculator.php Implement sin function.  sin0.0 0.0  sin90.0 1.0  sin180.0 0.0  sin270.0 1.0  sin0.68 0.0118679603  sin1.97 0.0343762121  sin64.0 0.8987940463  sin9999.0 0.9876883406  sin689.0 0.5150380749  sin89.7 0.9999862922 Simplify the angle to be between 360 and 360 degrees. Converting from degrees to radians
from math import factorial, radians


def sin(
    angle_in_degrees: float, accuracy: int = 18, rounded_values_count: int = 10
) -> float:
    """
    Implement sin function.

    >>> sin(0.0)
    0.0
    >>> sin(90.0)
    1.0
    >>> sin(180.0)
    0.0
    >>> sin(270.0)
    -1.0
    >>> sin(0.68)
    0.0118679603
    >>> sin(1.97)
    0.0343762121
    >>> sin(64.0)
    0.8987940463
    >>> sin(9999.0)
    -0.9876883406
    >>> sin(-689.0)
    0.5150380749
    >>> sin(89.7)
    0.9999862922
    """
    # Simplify the angle to be between 360 and -360 degrees.
    angle_in_degrees = angle_in_degrees - ((angle_in_degrees // 360.0) * 360.0)

    # Converting from degrees to radians
    angle_in_radians = radians(angle_in_degrees)

    result = angle_in_radians
    a = 3
    b = -1

    for _ in range(accuracy):
        result += (b * (angle_in_radians**a)) / factorial(a)

        b = -b  # One positive term and the next will be negative and so on...
        a += 2  # Increased by 2 for every term.

    return round(result, rounded_values_count)


if __name__ == "__main__":
    __import__("doctest").testmod()
