Better treatment for complex numbers
This fixes #1083.  I checked that the number of failing tests (SKIP=38, errors=5, failures=34) do not increase with these change sets.

BTW, in form_blocks why not simply do

``` python
    if float_dict:
        ...
```

instead of calculating length?:

``` python
    if len(float_dict):
        ...
```
