maths.bailey_borwein_plouffe ============================ .. py:module:: maths.bailey_borwein_plouffe Functions --------- .. autoapisummary:: maths.bailey_borwein_plouffe._subsum maths.bailey_borwein_plouffe.bailey_borwein_plouffe Module Contents --------------- .. py:function:: _subsum(digit_pos_to_extract: int, denominator_addend: int, precision: int) -> float Private helper function to implement the summation functionality. @param digit_pos_to_extract: digit position to extract @param denominator_addend: added to denominator of fractions in the formula @param precision: same as precision in main function @return: floating-point number whose integer part is not important .. py:function:: bailey_borwein_plouffe(digit_position: int, precision: int = 1000) -> str Implement a popular pi-digit-extraction algorithm known as the Bailey-Borwein-Plouffe (BBP) formula to calculate the nth hex digit of pi. Wikipedia page: https://en.wikipedia.org/wiki/Bailey%E2%80%93Borwein%E2%80%93Plouffe_formula @param digit_position: a positive integer representing the position of the digit to extract. The digit immediately after the decimal point is located at position 1. @param precision: number of terms in the second summation to calculate. A higher number reduces the chance of an error but increases the runtime. @return: a hexadecimal digit representing the digit at the nth position in pi's decimal expansion. >>> "".join(bailey_borwein_plouffe(i) for i in range(1, 11)) '243f6a8885' >>> bailey_borwein_plouffe(5, 10000) '6' >>> bailey_borwein_plouffe(-10) Traceback (most recent call last): ... ValueError: Digit position must be a positive integer >>> bailey_borwein_plouffe(0) Traceback (most recent call last): ... ValueError: Digit position must be a positive integer >>> bailey_borwein_plouffe(1.7) Traceback (most recent call last): ... ValueError: Digit position must be a positive integer >>> bailey_borwein_plouffe(2, -10) Traceback (most recent call last): ... ValueError: Precision must be a nonnegative integer >>> bailey_borwein_plouffe(2, 1.6) Traceback (most recent call last): ... ValueError: Precision must be a nonnegative integer