from __future__ import division
import numpy as np

def calc_julia_numpy(im_width, im_height, xmin, xmax, ymin, ymax, zabs_max, nit_max,c):
    X = np.linspace(xmin, xmax, im_width, dtype=np.float32)
    Y = np.linspace(ymin, ymax, im_height, dtype=np.float32)
    Z = X + Y[:, None]*1j
    N = np.zeros(Z.shape, dtype=int)
    ratio = np.zeros(Z.shape, dtype=np.float32)
    C = np.zeros(Z.shape, np.complex64) + c
    for n in range(nit_max):
        I = np.less(abs(Z), zabs_max)
        N[I] = n
        Z[I] = Z[I]**2 + C[I]
    N[N == nit_max-1] = 0
    ratio = N / nit_max
    return ratio



