## `signIm` -- the sign of the imaginary part of a complex number

#### Introduction

`signIm``(z)` represents the sign of `Im(z)`.

#### Call(s)

`signIm(z)`

#### Parameters

`z` | - | an arithmetical expression representing a complex number

#### Returns

either +/- 1, 0, or a symbolic call.

### Overloadable:

`z`

#### Details

- `signIm``(z)` indicates whether the complex number `z` lies in the upper or in the lower half plane: `signIm(z)` yields 1 if `Im(z)`>0, or if `z` is real and `z`<0. At the origin: `signIm(0)=0`. For all other numerical arguments -1 is returned. Thus, `signIm(z)=sign(Im(z))` if `z` is not on the real axis.
- If the position of the argument in the complex plane cannot be determined, then an unevaluated call is returned.
- The functions `diff` and `series` treat `signIm` as a constant function. Cf. example 2.
- The following relation holds for arbitrary complex z and p:

      (-z)^p=z^p*(-1)^(-p*signIm(z)).

#### Example 1

For numerical values, the position in the complex plane can always be determined:

    >> signIm(2 + I), signIm(- 4 - I*PI), signIm(0.3), signIm(-2/7),
       signIm(-sqrt(2) + 3*I*PI)

                                  1, -1, -1, 1, 1

Symbolic arguments without properties lead to unevaluated calls:

    >> signIm(x), signIm(x - I*sqrt(2))

                                                    1/2
                           signIm(x), signIm(x - I 2   )

Properties set via `assume` are taken into account:

    >> assume(x, Type::Real): signIm(x - I*sqrt(2))

                                        -1

    >> assume(x > 0): signIm(x)

                                        -1

    >> assume(x < 0): signIm(x)

                                         1

    >> assume(x = 0): signIm(x)

                                         0

    >> unassume(x):

#### Example 2

`signIm` is a constant function, apart from the jump discontinuities along the real axis. These discontinuities are ignored by `diff`:

    >> diff(signIm(z), z)

                                         0

Also `series` treats `signIm` as a constant function:

    >> series(signIm(z/(1 - z)), z = 0)

                                   /    z    \      6
                             signIm| ------- | + O(z )
                                   \ - z + 1 /

#### Changes

- new function

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000