C8LIB
A Double Precision Complex Arithmetic Utility Library
C8LIB
is a FORTRAN90 library which
implements certain
elementary functions for double precision complex (C8) variables.
The symbol "C8" is used to suggest a double precision complex
variable. Here the 8 indicates that the underlying pair of
real numbers each use 8 bytes of storage.
C8LIB contains routines that operate on scalars, vectors or
doubly dimensioned arrays of C8's. A vector of C8's is denoted
a C8VEC, and a doubly dimensioned array is a C8MAT.
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
C8LIB is available in
a C version and
a C++ version and
a FORTRAN90 version and
a MATLAB version and
a Python version..
Related Data and Programs:
BLAS1_Z,
a FORTRAN90 library which
contains basic linear algebra routines for vector-vector operations,
using double precision complex arithmetic.
C4LIB,
a FORTRAN90 library which
implements certain elementary functions for "C4" or
single precision complex variables.
COMPLEX_NUMBERS,
a FORTRAN90 program which
demonstrates some simple features involved in the use of
complex numbers in FORTRAN90 programming.
I4LIB,
a FORTRAN90 library which
contains many utility routines, using "I4" or "single precision integer"
arithmetic.
I8LIB,
a FORTRAN90 library which
contains many utility routines, using "I8" or "double precision integer"
arithmetic.
L4LIB,
a FORTRAN90 library which
contains many utility routines, using one byte logical (L4)
variables.
LINPACK_Z,
a FORTRAN90 library which
solves linear systems using double precision complex arithmetic;
R16LIB,
a FORTRAN90 library which
contains many utility routines, using "R16" or
"quadruple precision real" arithmetic.
R4LIB,
a FORTRAN90 library which
contains many utility routines, using "R4" or "single precision real" arithmetic.
R8LIB,
a FORTRAN90 library which
contains many utility routines, using "R8" or
"double precision real" arithmetic.
Source Code:
Examples and Tests:
List of Routines:
-
C8_ABS evaluates the absolute value of a C8.
-
C8_ACOS evaluates the inverse cosine of a C8.
-
C8_ACOSH evaluates the inverse hyperbolic cosine of a C8.
-
C8_ADD adds two C8's.
-
C8_ARG returns the argument of a C8.
-
C8_ASIN evaluates the inverse sine of a C8.
-
C8_ASINH evaluates the inverse hyperbolic sine of a C8.
-
C8_ATAN evaluates the inverse tangent of a C8.
-
C8_ATANH evaluates the inverse hyperbolic tangent of a C8.
-
C8_CONJ evaluates the conjugate of a C8.
-
C8_COPY copies a C8.
-
C8_COS evaluates the cosine of a C8.
-
C8_COSH evaluates the hyperbolic cosine of a C8.
-
C8_CUBE_ROOT returns the principal cube root of a C8.
-
C8_DIV divides two C8's.
-
C8_DIV_R8 divides a C8 by an R8.
-
C8_EXP evaluates the exponential of a C8.
-
C8_I returns the imaginary unit, i as a C8.
-
C8_IMAG evaluates the imaginary part of a C8.
-
C8_INV evaluates the inverse of a C8.
-
C8_LE_L1 := X <= Y for C8 values, and the L1 norm.
-
C8_LE_L2 := X <= Y for C8 values, and the L2 norm.
-
C8_LE_LI := X <= Y for C8 values, and the L Infinity norm.
-
C8_LOG evaluates the logarithm of a C8.
-
C8_MAG returns the magnitude of a C8.
-
C8_MUL multiplies two C8's.
-
C8_NEG returns the negative of a C8.
-
C8_NINT returns the nearest complex integer of a C8.
-
C8_NORM_L1 evaluates the L1 norm of a C8.
-
C8_NORM_L2 evaluates the L2 norm of a C8.
-
C8_NORM_LI evaluates the L-infinity norm of a C8.
-
C8_NORMAL_01 returns a unit pseudonormal C8.
-
C8_ONE returns the value of 1 as a C8.
-
C8_PRINT prints a C8.
-
C8_REAL evaluates the real part of a C8.
-
C8_SIN evaluates the sine of a C8.
-
C8_SINH evaluates the hyperbolic sine of a C8.
-
C8_SQRT returns the principal square root of a C8.
-
C8_SUB subtracts two C8's.
-
C8_SWAP swaps two C8's.
-
C8_TAN evaluates the tangent of a C8.
-
C8_TANH evaluates the hyperbolic tangent of a C8.
-
C8_TO_CARTESIAN converts a C8 to Cartesian form.
-
C8_TO_POLAR converts a C8 to polar form.
-
C8_UNIFORM_01 returns a unit pseudorandom C8.
-
C8_ZERO returns the value of 0 as a C8.
-
C8MAT_ADD combines two C8MAT's with complex scalar factors.
-
C8MAT_ADD_R8 combines two C8MAT's with real scalar factors.
-
C8MAT_COPY copies a C8MAT.
-
C8MAT_FSS factors and solves a system with multiple right hand sides.
-
C8MAT_IDENTITY sets a C8MAT to the identity.
-
C8MAT_INDICATOR returns the C8MAT indicator matrix.
-
C8MAT_MINVM computes inverse(A) * B for C8MAT's.
-
C8MAT_MM multiplies two C8MAT's.
-
C8MAT_NINT rounds the entries of a C8MAT.
-
C8MAT_NORM_FRO returns the Frobenius norm of a C8MAT.
-
C8MAT_NORM_L1 returns the matrix L1 norm of a C8MAT.
-
C8MAT_NORM_LI returns the matrix L-oo norm of a C8MAT.
-
C8MAT_PRINT prints a C8MAT.
-
C8MAT_PRINT_SOME prints some of a C8MAT.
-
C8MAT_SCALE scales a C8MAT by a complex scalar factor.
-
C8MAT_SCALE_R8 scales a C8MAT by a real scalar factor.
-
C8MAT_UNIFORM_01 returns a unit pseudorandom C8MAT.
-
C8MAT_ZERO zeroes a C8MAT.
-
C8VEC_COPY copies a C8VEC.
-
C8VEC_INDICATOR sets a C8VEC to the indicator vector.
-
C8VEC_NINT rounds the entries of a C8VEC.
-
C8VEC_NORM_L1 returns the L1 norm of a C8VEC.
-
C8VEC_NORM_L2 returns the L2 norm of a C8VEC.
-
C8VEC_NORM_LI returns the Loo norm of a C8VEC.
-
C8VEC_NORM_SQUARED returns the square of the L2 norm of a C8VEC.
-
C8VEC_PRINT prints a C8VEC, with an optional title.
-
C8VEC_PRINT_PART prints "part" of a C8VEC.
-
C8VEC_PRINT_SOME prints some of a C8VEC.
-
C8VEC_SORT_A_L1 ascending sorts a C8VEC by L1 norm.
-
C8VEC_SORT_A_L2 ascending sorts a C8VEC by L2 norm.
-
C8VEC_SORT_A_LI ascending sorts a C8VEC by L-infinity norm.
-
C8VEC_SPIRAL returns N points on a spiral between C1 and C2.
-
C8VEC_UNIFORM_01 returns a unit pseudorandom C8VEC.
-
C8VEC_UNITY returns the N roots of unity.
-
CARTESIAN_TO_C8 converts a Cartesian form to a C8.
-
POLAR_TO_C8 converts a polar form to a C8.
-
R8_ATAN computes the inverse tangent of the ratio Y / X.
-
R8_CSQRT returns the complex square root of an R8.
-
R8_FLOOR rounds an R8 "down" (towards -oo) to the nearest integral R8.
-
R8_LOG_2 returns the logarithm base 2 of an R8.
-
R8_UNIFORM_01 returns a unit pseudorandom R8.
-
R8POLY2_ROOT returns the two roots of a quadratic polynomial.
-
R8POLY3_ROOT returns the three roots of a cubic polynomial.
-
R8POLY4_ROOT returns the four roots of a quartic polynomial.
-
SORT_HEAP_EXTERNAL externally sorts a list of items into ascending order.
-
TIMESTAMP prints the current YMDHMS date as a time stamp.
You can go up one level to
the FORTRAN90 source codes.
Last revised on 08 February 2015.