NAG FL Interface
a02aaf (sqrt)

1 Purpose

a02aaf evaluates the square root of the complex number x=xr,xi.

2 Specification

Fortran Interface
Subroutine a02aaf ( xr, xi, yr, yi)
Real (Kind=nag_wp), Intent (In) :: xr, xi
Real (Kind=nag_wp), Intent (Out) :: yr, yi
C Header Interface
#include <nag.h>
void  a02aaf_ (const double *xr, const double *xi, double *yr, double *yi)
The routine may be called by the names a02aaf or nagf_complex_sqrt.

3 Description

The method of evaluating y=x depends on the value of xr.
For xr0,
yr=xr+xr2+xi2 2,  yi=xi2yr .  
For xr<0,
yi=signxi×xr+xr2+xi2 2 ,  yr=xi2yi .  
Overflow is avoided when squaring xi and xr by calling a02abf to evaluate xr2+xi2.

4 References

Wilkinson J H and Reinsch C (1971) Handbook for Automatic Computation II, Linear Algebra Springer–Verlag

5 Arguments

1: xr Real (Kind=nag_wp) Input
2: xi Real (Kind=nag_wp) Input
On entry: xr and xi, the real and imaginary parts of x, respectively.
3: yr Real (Kind=nag_wp) Output
4: yi Real (Kind=nag_wp) Output
On exit: yr and yi, the real and imaginary parts of y, respectively.

6 Error Indicators and Warnings

None.

7 Accuracy

The result should be correct to machine precision.

8 Parallelism and Performance

a02aaf is not threaded in any implementation.

9 Further Comments

The time taken by a02aaf is negligible.

10 Example

This example finds the square root of -1.7+2.6i.

10.1 Program Text

Program Text (a02aafe.f90)

10.2 Program Data

Program Data (a02aafe.d)

10.3 Program Results

Program Results (a02aafe.r)