When executing the following code to apply ForwardDiff to a complex-valued function with real argument:

```
using ForwardDiff
f2(t::Real) = real( (cos(t) + 1im*sin(t))^(1/2) )
t = pi/2
ForwardDiff.derivative(f2,t)
```

I get the following error:

```
ERROR: StackOverflowError:
Stacktrace:
[1] Type at ./complex.jl:12 [inlined] (repeats 2 times)
[2] float at ./complex.jl:1002 [inlined]
[3]
_cpow(::Complex{ForwardDiff.Dual{ForwardDiff.Tag{typeof(f2),Float64},Float64,1}}, ::ForwardDiff.Dual{ForwardDiff.Tag{typeof(f2),Float64},Float64,1}) at ./complex.jl:770 (repeats 80000 times)
```

I wonder what the constraints are when using ForwardDiff to this type of functions.

All help is appreciated.