Storable instance for Complex

Jed Brown jed at
Fri Feb 15 11:20:35 EST 2008

I propose that the following instance be added to base:

  instance (RealFloat a, Storable a) => Storable (Complex a) where
      sizeOf z    = 2 * sizeOf (realPart z)
      alignment z = sizeOf (realPart z)
      peek p = do
          [r,i] <- peekArray 2 (castPtr p)
          return (r :+ i)
      poke p (r :+ i) = pokeArray (castPtr p) [r,i]
This instance is binary compatible with C99, C++ and Fortran complex types.

It is currently needed by at least two independent packages: hmatrix and
fft. Since it is natural for user code to use both of these packages, we
need to move the instance to a common location.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url :

More information about the Libraries mailing list