NAG FL Interface
s15drf (erfc_complex_vector)
1
Purpose
s15drf computes values of the function , for an array of complex values .
2
Specification
Fortran Interface
Integer, Intent (In) |
:: |
n |
Integer, Intent (Inout) |
:: |
ifail |
Integer, Intent (Out) |
:: |
ivalid(n) |
Complex (Kind=nag_wp), Intent (In) |
:: |
z(n) |
Complex (Kind=nag_wp), Intent (Out) |
:: |
f(n) |
|
C Header Interface
#include <nag.h>
void |
s15drf_ (const Integer *n, const Complex z[], Complex f[], Integer ivalid[], Integer *ifail) |
|
C++ Header Interface
#include <nag.h> extern "C" {
void |
s15drf_ (const Integer &n, const Complex z[], Complex f[], Integer ivalid[], Integer &ifail) |
}
|
The routine may be called by the names s15drf or nagf_specfun_erfc_complex_vector.
3
Description
s15drf computes values of the function
, for
, where
is the complementary error function
for complex
. The method used is that in
Gautschi (1970) for
in the first quadrant of the complex plane, and is extended for
in other quadrants via the relations
and
. Following advice in
Gautschi (1970) and
van der Laan and Temme (1984), the code in
Gautschi (1969) has been adapted to work in various precisions up to
decimal places. The real part of
is sometimes known as the Voigt function.
4
References
Gautschi W (1969) Algorithm 363: Complex error function Comm. ACM 12 635
Gautschi W (1970) Efficient computation of the complex error function SIAM J. Numer. Anal. 7 187–198
van der Laan C G and Temme N M (1984) Calculation of special functions: the gamma function, the exponential integrals and error-like functions CWI Tract 10 Centre for Mathematics and Computer Science, Amsterdam
5
Arguments
-
1:
– Integer
Input
-
On entry: , the number of points.
Constraint:
.
-
2:
– Complex (Kind=nag_wp) array
Input
-
On entry:
the argument of the function, for .
-
3:
– Complex (Kind=nag_wp) array
Output
-
On exit: , the function values.
-
4:
– Integer array
Output
-
On exit:
contains the error code for
, for
.
- No error.
- Real part of result overflows.
- Imaginary part of result overflows.
- Both real and imaginary part of result overflows.
- Result has less than half precision.
- Result has no precision.
-
5:
– Integer
Input/Output
-
On entry:
ifail must be set to
,
or
to set behaviour on detection of an error; these values have no effect when no error is detected.
A value of causes the printing of an error message and program execution will be halted; otherwise program execution continues. A value of means that an error message is printed while a value of means that it is not.
If halting is not appropriate, the value
or
is recommended. If message printing is undesirable, then the value
is recommended. Otherwise, the value
is recommended.
When the value or is used it is essential to test the value of ifail on exit.
On exit:
unless the routine detects an error or a warning has been flagged (see
Section 6).
6
Error Indicators and Warnings
If on entry
or
, explanatory error messages are output on the current error message unit (as defined by
x04aaf).
Errors or warnings detected by the routine:
-
On entry, at least one value of
z produced a result with reduced accuracy.
Check
ivalid for more information.
-
On entry, .
Constraint: .
An unexpected error has been triggered by this routine. Please
contact
NAG.
See
Section 7 in the Introduction to the NAG Library FL Interface for further information.
Your licence key may have expired or may not have been installed correctly.
See
Section 8 in the Introduction to the NAG Library FL Interface for further information.
Dynamic memory allocation failed.
See
Section 9 in the Introduction to the NAG Library FL Interface for further information.
7
Accuracy
The accuracy of the returned result depends on the argument . If lies in the first or second quadrant of the complex plane (i.e., is greater than or equal to zero), the result should be accurate almost to machine precision, except that there is a limit of about decimal places on the achievable accuracy because constants in the routine are given to this precision. With such arguments, can only return as .
If however, is less than zero, accuracy may be lost in two ways; firstly, in the evaluation of , if is large, in which case a warning will be issued through or ; and secondly, near the zeros of the required function, where precision is lost due to cancellation, in which case no warning is given – the result has absolute accuracy rather than relative accuracy. Note also that in this half-plane, one or both parts of the result may overflow – this is signalled through , or .
8
Parallelism and Performance
s15drf is not threaded in any implementation.
The time taken for a call of s15drf depends on the argument , the time increasing as .
s15drf may be used to compute values of
and
for complex
by the relations
,
. (For real arguments,
s15arf and
s15asf should be used.)
10
Example
This example reads values of the argument from a file, evaluates the function at each value of and prints the results.
10.1
Program Text
10.2
Program Data
10.3
Program Results