Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cartpol(3C++)

cplxerr(3C++)

cplxexp(3C++)

cplxops(3C++)

cplxtrig(3C++)

ios.intro(3C++)

intro(2)

ieee_values(3)

perror(3)

CPLX.INTRO(3C++)

NAME

cplx.intro complex − introduction to C++ complex number math library

SYNOPSIS

#include <complex.h>
class complex {
public:
complex(double real, double imag= 0.0);
complex();
... // remainder not shown here
};
 #include <iostream.h>
ostream& operator<< (ostream&, const complex&);
istream& operator>> (istream&, complex&);

DESCRIPTION

This implementation of a complex number class and library is based on the complex math library supplied by USL.  Code written for use with the USL library should work the same way with this implementation. 

Class complex, whose definition is found in header file <complex.h>, uses a typical Cartesian coordinate implementation of mathematical complex numbers.  The class includes:
• functions to convert between polar and Cartesian coordinates. See cartpol(3C++). 
• overloaded versions of the arithmetic operations, some of which are optimized for combining real and complex operations. See cplxops(3C++). 
• overloaded versions of the usual trigonometric functions. See cplxtrig(3C++). 
• overloaded versions of the usual exponential and logarithm functions. See cplxexp(3C++). 
• error handling which may be overridden by the user. See cplxerr(3C++). 
• functions to read and write complex numbers via iostreams. See ios.intro(3C++). 

Constructors

complex()
Creates a complex number initialized to (0.0, 0.0).

complex(x, y)
Creates a complex number initialized to (x, y), where x and y have numerical types.  Argument y may be omitted, in which case its value is taken as 0. 

Input/Output

The library provides default input and output routines for complex.  Either or both of these may be replaced by the programmer by writing functions with the same signatures.  The default versions are described here. 

input_stream >> x
Expects the representation of a complex number to have the form

( real , imag )
where and are integral or floating-point numbers in standard C++ format. Any amount of whitespace may preceed or follow the parentheses and comma. If the first non-whitespace character is not ‘(’, that character will be replaced in the stream and there will be nothing further extracted.  Otherwise, if the value is not well-formed, extraction from the stream will stop as soon as this is determined, and the stream will be put into a "failed" state.  (See the iostream documentation.)  In either case, or if there is any other error condition, complex variable x will get the value (0,0).  If the input is in the proper form, x will get the represented complex value. 

output_stream << x
Writes the value of complex x to the output stream in the form expected by the input function as noted above. 

SEE ALSO

cartpol(3C++), cplxerr(3C++), cplxexp(3C++), cplxops(3C++), cplxtrig(3C++), ios.intro(3C++).  intro(2), ieee_values(3), perror(3), Complex Tutorial

DIAGNOSTICS

In general, one of the values (0, 0), (0, ±HUGE_VAL), (±HUGE_VAL, 0), or (±HUGE_VAL, ±HUGE_VAL) will be returned when a result is too large or is mathematically undefined.  HUGE_VAL is defined in the header <math.h>, which is included by <complex.h>, and in this implementation has the value corresponding to infinity.  See ieee_values(3).  When such an error condition occurs, external variable errno is set to EDOM or ERANGE.  See perror(3), intro(2). 
 

SunOS ProWorks_3.0.1  —  Last change: 24 March 1994

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026