#!/usr/bin/env -S python -u
import sys
import sympy as sp
from math import factorial
# First term
start = 1
#start = 502
# Last term
n = 50
# If two parameters are given, use for the start and end terms
if len(sys.argv) > 2:
start = int(sys.argv[1])
n = int(sys.argv[2])
# If one parameter is given, use it for the number of terms / last term
elif len(sys.argv) > 1:
n = int(sys.argv[1])
n += 1
# Handle ValueError: Exceeds the limit (4300) for integer string conversion
if n > 7000:
sys.set_int_max_str_digits(0)
x = sp.Symbol("x")
f = sp.sqrt(1-x)
# Initialize the factorial depending on the starting term
if start == 1:
lastfact = 1
lastdiff = f
else:
lastfact = factorial(start-1)
lastdiff = f.diff(x, start-1)
for i in range(start, n):
lastfact *= i
lastdiff = sp.diff(lastdiff, x)
# print(lastdiff, "\n")
print(lastdiff.subs(x, 0)/lastfact)