Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def fast_sqrt(num):
- if num < 6:
- return int(floor(sqrt(num)))
- else:
- n = 0
- p = 0
- if num == 0:
- return 0
- high = num >> 1
- low = 0
- while(high > low + 1):
- n = (high + low) >> 1
- p = n * n
- if num < p:
- high = n
- elif num > p:
- low = n
- else:
- break
- return n if num == p else low
- def to_int(arr):
- ii = 0
- size = len(arr)
- while(ii < size):
- arr[ii] = int(arr[ii])
- ii += 1
- return arr
- def generate_genesis_element(ee):
- cell = []
- if ee > 0:
- xx = ee%2
- else:
- xx = -1*ee%2
- aa = int(ee/2) + xx
- #nn = (xx**2 + ee)/2
- nn = 1
- bb = aa + 2*xx + 2*nn
- cc = aa*bb
- if cc > 0:
- dd = fast_sqrt(cc)
- else:
- dd = fast_sqrt(-1*cc)
- genesis = to_int([ee, nn, dd, xx, aa, bb])
- #print(genesis)
- if ee <= 0:
- t0 = left_index(-1*ee)
- genesis[0] = ee
- genesis = generate_negative_element(genesis, t0)
- return genesis
- def left_index(e):
- if e%2 == 0:
- x = fast_sqrt(e/2)
- #x = int(floor(sqrt(e/2)))
- y = 2*x**2 + 2*x
- enet = y
- #print(y)
- if y > e:
- x -= 1
- z = 2*x**2 + 2*x
- enet = z
- return x + 1
- if e%2 == 1:
- if e > 7:
- x = fast_sqrt(e)
- #x = int(floor(((e-1)*3)**(1/3)))
- enet = 9 + 2*x**2 + 8*x
- while enet > e:
- x -= 1
- enet = 9 + 2*x**2 + 8*x
- return x + 2
- else:
- return 1
- def generate_negative_element(genesis, t):
- e_t = genesis[0]
- n_t = genesis[1]
- b0 = genesis[5]
- x0 = genesis[3]
- g = (x0 % 2)*2 + 2
- b_t = 2*(t)*(t+1) + b0 + g*(t)
- a_t = 2*(t-1)*(t) + b0 + g*(t-1)
- x_t = x0 + 2*t
- c_t = a_t*b_t
- d_t = fast_sqrt(c_t - e_t)
- #n_t = (x_t**2 + e_t)/(2*a_t)
- return [e_t,n_t,d_t,x_t,a_t,b_t]
- ###############################################################
- # Begin Script
- ###############################################################
- print(generate_genesis_element(-24))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement