def calc_pure_python(show_output): # make a list of x and y values which will represent q # xx and yy are the co-ordinates, for the default configuration they'll look like: # if we have a 1000x1000 plot # xx = [-2.13, -2.1242, -2.1184000000000003, ..., 0.7526000000000064, 0.7584000000000064, 0.7642000000000064] # yy = [1.3, 1.2948, 1.2895999999999999, ..., -1.2844000000000058, -1.2896000000000059, -1.294800000000006] x_step = (float(x2 - x1) / float(w)) * 2 y_step = (float(y1 - y2) / float(h)) * 2 x=[] y=[] ycoord = y2 while ycoord > y1: y.append(ycoord) ycoord += y_step xcoord = x1 while xcoord < x2: x.append(xcoord) xcoord += x_step q = [] for ycoord in y: for xcoord in x: q.append(complex(xcoord,ycoord)) z = [0+0j] * len(q) print "Total elements:", len(z) start_time = datetime.datetime.now() output = calculate_z.calculate_z(q, maxiter, z) end_time = datetime.datetime.now() secs = end_time - start_time print "Main took", secs validation_sum = sum(output) print "Total sum of elements (for validation):", validation_sum if show_output: import Image import numpy as nm output = nm.array(output) output = (output + (256*output) + (256**2)*output) * 8 im = Image.new("RGB", (w/2, h/2)) # you can experiment with these x and y ranges im.fromstring(output.tostring(), "raw", "RGBX", 0, -1) #im.save('mandelbrot.png') im.show()
def calc(show_output): # make a list of x and y values # make a list of x and y values which will represent q # xx and yy are the co-ordinates, for the default configuration they'll look like: # if we have a 1000x1000 plot # xx = [-2.13, -2.1242, -2.1184000000000003, ..., 0.7526000000000064, 0.7584000000000064, 0.7642000000000064] # yy = [1.3, 1.2948, 1.2895999999999999, ..., -1.2844000000000058, -1.2896000000000059, -1.294800000000006] x_step = (float(x2 - x1) / float(w)) * 2 y_step = (float(y1 - y2) / float(h)) * 2 x = [] y = [] ycoord = y2 while ycoord > y1: y.append(ycoord) ycoord += y_step xcoord = x1 while xcoord < x2: x.append(xcoord) xcoord += x_step q = [] for ycoord in y: for xcoord in x: q.append(complex(xcoord, ycoord)) z = [0 + 0j] * len(q) print "Total elements:", len(y) * len(x) # convert Python lists into numpy arrays q_np = np.array(q) z_np = np.array(z) start_time = datetime.datetime.now() output = calculate_z.calculate_z(q_np, maxiter, z_np) end_time = datetime.datetime.now() secs = end_time - start_time print "Main took", secs validation_sum = np.sum(output) print "Total sum of elements (for validation):", validation_sum if show_output: show(output) return validation_sum
def calc(show_output): # make a list of x and y values # make a list of x and y values which will represent q # xx and yy are the co-ordinates, for the default configuration they'll look like: # if we have a 1000x1000 plot # xx = [-2.13, -2.1242, -2.1184000000000003, ..., 0.7526000000000064, 0.7584000000000064, 0.7642000000000064] # yy = [1.3, 1.2948, 1.2895999999999999, ..., -1.2844000000000058, -1.2896000000000059, -1.294800000000006] x_step = (float(x2 - x1) / float(w)) * 2 y_step = (float(y1 - y2) / float(h)) * 2 x = [] y = [] ycoord = y2 while ycoord > y1: y.append(ycoord) ycoord += y_step xcoord = x1 while xcoord < x2: x.append(xcoord) xcoord += x_step q = [] for ycoord in y: for xcoord in x: q.append(complex(xcoord, ycoord)) z = [0+0j] * len(q) print "Total elements:", len(y)*len(x) # convert Python lists into numpy arrays q_np = np.array(q) z_np = np.array(z) start_time = datetime.datetime.now() output = calculate_z.calculate_z(q_np, maxiter, z_np) end_time = datetime.datetime.now() secs = end_time - start_time print "Main took", secs validation_sum = np.sum(output) print "Total sum of elements (for validation):", validation_sum if show_output: show(output) return validation_sum
def calc(chunk): """use the calculate_z module's calculate_z to process the tuple of inps""" q, maxiter, z = chunk return calculate_z.calculate_z(q, maxiter, z)