{"record":{"id":"4e9762df67168b27","repo":"TheAlgorithms/Python","slug":"maclaurin-cos-requires-a-positive-int-for-accura","errorCode":null,"errorMessage":"maclaurin_cos() requires a positive int for accuracy","messagePattern":"maclaurin_cos\\(\\) requires a positive int for accuracy","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"maths/maclaurin_series.py","lineNumber":102,"sourceCode":"    >>> maclaurin_cos(10, -30)\r\n    Traceback (most recent call last):\r\n        ...\r\n    ValueError: maclaurin_cos() requires a positive int for accuracy\r\n    >>> maclaurin_cos(10, 30.5)\r\n    Traceback (most recent call last):\r\n        ...\r\n    ValueError: maclaurin_cos() requires a positive int for accuracy\r\n    >>> maclaurin_cos(10, \"30\")\r\n    Traceback (most recent call last):\r\n        ...\r\n    ValueError: maclaurin_cos() requires a positive int for accuracy\r\n    \"\"\"\r\n\r\n    if not isinstance(theta, (int, float)):\r\n        raise ValueError(\"maclaurin_cos() requires either an int or float for theta\")\r\n\r\n    if not isinstance(accuracy, int) or accuracy <= 0:\r\n        raise ValueError(\"maclaurin_cos() requires a positive int for accuracy\")\r\n\r\n    theta = float(theta)\r\n    div = theta // (2 * pi)\r\n    theta -= 2 * div * pi\r\n    return sum((-1) ** r * theta ** (2 * r) / factorial(2 * r) for r in range(accuracy))\r\n\r\n\r\nif __name__ == \"__main__\":\r\n    import doctest\r\n\r\n    doctest.testmod()\r\n\r\n    print(maclaurin_sin(10))\r\n    print(maclaurin_sin(-10))\r\n    print(maclaurin_sin(10, 15))\r\n    print(maclaurin_sin(-10, 15))\r\n\r\n    print(maclaurin_cos(5))\r","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/TheAlgorithms/Python/blob/f5988cc09713315817df6a7e327e258013a94440/maths/maclaurin_series.py#L84-L120","documentation":"Raised by maclaurin_cos() in maths/maclaurin_series.py when accuracy is not an int or is <= 0. accuracy is the number of series terms summed via range(accuracy); floats such as 30.5 and strings such as '30' fail the `isinstance(accuracy, int) or accuracy <= 0` check and are rejected with this ValueError.","triggerScenarios":"maclaurin_cos(10, 30.5), maclaurin_cos(10, '30'), maclaurin_cos(10, 0), or maclaurin_cos(10, 2.0) (a float even with integral value).","commonSituations":"Accuracy computed as a float (e.g. n_terms = total/10), read from JSON where it parsed as float, or supplied via CLI without type=int.","solutions":["Pass a positive int literal, e.g. maclaurin_cos(theta, 30).","Round/cast floats: maclaurin_cos(theta, int(round(accuracy))).","Declare CLI options with type=int and validate positivity before calling."],"exampleFix":"# before\nmaclaurin_cos(0.5, 30.5)\n\n# after\nmaclaurin_cos(0.5, 30)","handlingStrategy":"validation","validationCode":"accuracy = int(accuracy) if isinstance(accuracy, (int, float)) else 30\nif accuracy <= 0:\n    raise ValueError('accuracy must be a positive int')","typeGuard":"def is_valid_accuracy(a) -> bool:\n    return isinstance(a, int) and not isinstance(a, bool) and a > 0","tryCatchPattern":null,"preventionTips":["Never pass a float term count; round and cast first.","Declare config schemas with integer types for term/iteration counts."],"tags":["math","valueerror","parameter-validation","trigonometry"],"backgroundTag":null,"analyzedSha":"f5988cc09713315817df6a7e327e258013a94440","analyzedAt":"2026-08-14T17:30:07.041Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}