MA01BZ

Safely computing the general product of K complex scalars

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

  To compute the general product of K complex scalars trying to
  avoid over- and underflow.

Specification
      SUBROUTINE MA01BZ( BASE, K, S, A, INCA, ALPHA, BETA, SCAL )
C     .. Scalar Arguments ..
      INTEGER           INCA, K, SCAL
      DOUBLE PRECISION  BASE
      COMPLEX*16        ALPHA, BETA
C     .. Array Arguments ..
      INTEGER           S(*)
      COMPLEX*16        A(*)

Arguments

Input/Output Parameters

  BASE    (input)  DOUBLE PRECISION
          Machine base.

  K       (input)  INTEGER
          The number of scalars.  K >= 1.

  S       (input)  INTEGER array, dimension (K)
          The signature array. Each entry of S must be 1 or -1.

  A       (input)  COMPLEX*16 array, dimension (K)
          Vector of complex scalars.

  INCA    (input)  INTEGER
          Increment for the array A. INCA <> 0.

  ALPHA   (output)  COMPLEX*16
          ALPHA is a complex scalar with ABS(ALPHA) = 0, or
          1.0 <= ABS(ALPHA) < BASE, such that

             ALPHA / BETA * BASE**(SCAL)

          is the general product of the scalars in the array A.

  BETA    (output)  COMPLEX*16
          BETA is either 0.0 or 1.0.
          See also the description of ALPHA.

  SCAL    (output)  INTEGER
          Scaling factor exponent, see ALPHA.

Further Comments
  None
Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index