numpyのフロート型でn乗の結果が正しい値にならない


`np.float32` でマイナスのフロートを2乗をすると正しい値を出力しません、なぜでしょうか？  
Pythonでのfloat型では正しい値を出力します。

`a[0]` は`-1159.4025` です。

[![画像の説明をここに入力](https://i.stack.imgur.com/A57He.jpg)](https://i.stack.imgur.com/A57He.jpg)

[![画像の説明をここに入力](https://i.stack.imgur.com/kti2v.jpg)](https://i.stack.imgur.com/kti2v.jpg)




`**` は`-` より演算子の優先順位が高いので `-100 ** 0.5` は `- (100 ** 0.5)` と解釈されています。  
`(-100) ** 0.5` は 複素数 `0 + 10j` になり、`np.float32`では複素数を扱わず`nan`になります。

[code]

    >>> -100 ** 0.5
    -10.0
    >>> (-100) ** 0.5
    (6.123233995736766e-16+10j)
    
    >>> np.float(-100.0) ** 0.5
    (6.123233995736766e-16+10j)
    >>> np.float_(-100.0) ** 0.5
    nan
    >>> np.float32(-100.0) ** 0.5
    nan
    >>> np.complex64(-100.0) ** 0.5
    (6.123233995736767e-16+10.000000000000002j)
    
[/code]




`**` は`-` より演算子の優先順位が高いので `-100 ** 0.5` は `- (100 ** 0.5)` と解釈されています。  
`(-100) ** 0.5` は 複素数 `0 + 10j` になり、`np.float32`では複素数を扱わず`nan`になります。

[code]

    >>> -100 ** 0.5
    -10.0
    >>> (-100) ** 0.5
    (6.123233995736766e-16+10j)
    
    >>> np.float(-100.0) ** 0.5
    (6.123233995736766e-16+10j)
    >>> np.float_(-100.0) ** 0.5
    nan
    >>> np.float32(-100.0) ** 0.5
    nan
    >>> np.complex64(-100.0) ** 0.5
    (6.123233995736767e-16+10.000000000000002j)
    
[/code]

