title: implementing exotic complex numbers to use with numpy
body: <p>i'm using python + numpy + scipy to do some convolution filtering over a complex-number array.</p>
  
  <pre><code>field = np.zeros((field_size, field_size), dtype=complex)
  ...
  field = scipy.signal.convolve(field, kernel, 'same')
  </code></pre>
  
  <p>So, when i want to use a complex array in numpy all i need to do is pass the dtype=complex parameter.
  For my research i need to implement two other types of complex numbers: dual (i*i=0) and double (i*i=1). It's not a big deal - i just take the python source code for complex numbers and change the multiplication function.
  The problem: how do i make a numpy array of those exotic numeric types?</p>