git-svn-id: http://moon:8086/svn/vhdl/trunk@1073 cc03376c-175c-47c8-b038-4cd826a8556b
1088 lines
39 KiB
VHDL
1088 lines
39 KiB
VHDL
------------------------------------------------------------------------
|
|
--
|
|
-- Copyright 1996 by IEEE. All rights reserved.
|
|
--
|
|
-- This source file is an essential part of IEEE Std 1076.2-1996, IEEE Standard
|
|
-- VHDL Mathematical Packages. This source file may not be copied, sold, or
|
|
-- included with software that is sold without written permission from the IEEE
|
|
-- Standards Department. This source file may be used to implement this standard
|
|
-- and may be distributed in compiled form in any manner so long as the
|
|
-- compiled form does not allow direct decompilation of the original source file.
|
|
-- This source file may be copied for individual use between licensed users.
|
|
-- This source file is provided on an AS IS basis. The IEEE disclaims ANY
|
|
-- WARRANTY EXPRESS OR IMPLIED INCLUDING ANY WARRANTY OF MERCHANTABILITY
|
|
-- AND FITNESS FOR USE FOR A PARTICULAR PURPOSE. The user of the source
|
|
-- file shall indemnify and hold IEEE harmless from any damages or liability
|
|
-- arising out of the use thereof.
|
|
--
|
|
-- Title: Standard VHDL Mathematical Packages (IEEE Std 1076.2-1996,
|
|
-- MATH_COMPLEX)
|
|
--
|
|
-- Library: This package shall be compiled into a library
|
|
-- symbolically named IEEE.
|
|
--
|
|
-- Developers: IEEE DASC VHDL Mathematical Packages Working Group
|
|
--
|
|
-- Purpose: This package defines a standard for designers to use in
|
|
-- describing VHDL models that make use of common COMPLEX
|
|
-- constants and common COMPLEX mathematical functions and
|
|
-- operators.
|
|
--
|
|
-- Limitation: The values generated by the functions in this package may
|
|
-- vary from platform to platform, and the precision of results
|
|
-- is only guaranteed to be the minimum required by IEEE Std 1076-
|
|
-- 1993.
|
|
--
|
|
-- Notes:
|
|
-- No declarations or definitions shall be included in, or
|
|
-- excluded from, this package.
|
|
-- The "package declaration" defines the types, subtypes, and
|
|
-- declarations of MATH_COMPLEX.
|
|
-- The standard mathematical definition and conventional meaning
|
|
-- of the mathematical functions that are part of this standard
|
|
-- represent the formal semantics of the implementation of the
|
|
-- MATH_COMPLEX package declaration. The purpose of the
|
|
-- MATH_COMPLEX package body is to provide a guideline for
|
|
-- implementations to verify their implementation of MATH_COMPLEX.
|
|
-- Tool developers may choose to implement the package body in
|
|
-- the most efficient manner available to them.
|
|
--
|
|
-- -----------------------------------------------------------------------------
|
|
-- Version : 1.5
|
|
-- Date : 24 July 1996
|
|
-- -----------------------------------------------------------------------------
|
|
|
|
use WORK.MATH_REAL.all;
|
|
package MATH_COMPLEX is
|
|
constant CopyRightNotice: STRING
|
|
:= "Copyright 1996 IEEE. All rights reserved.";
|
|
|
|
--
|
|
-- Type Definitions
|
|
--
|
|
type COMPLEX is
|
|
record
|
|
RE: REAL; -- Real part
|
|
IM: REAL; -- Imaginary part
|
|
end record;
|
|
|
|
subtype POSITIVE_REAL is REAL range 0.0 to REAL'HIGH;
|
|
|
|
subtype PRINCIPAL_VALUE is REAL range -MATH_PI to MATH_PI;
|
|
|
|
type COMPLEX_POLAR is
|
|
record
|
|
MAG: POSITIVE_REAL; -- Magnitude
|
|
ARG: PRINCIPAL_VALUE; -- Angle in radians; -MATH_PI is illegal
|
|
end record;
|
|
|
|
--
|
|
-- Constant Definitions
|
|
--
|
|
constant MATH_CBASE_1: COMPLEX := COMPLEX'(1.0, 0.0);
|
|
constant MATH_CBASE_J: COMPLEX := COMPLEX'(0.0, 1.0);
|
|
constant MATH_CZERO: COMPLEX := COMPLEX'(0.0, 0.0);
|
|
|
|
|
|
--
|
|
-- Overloaded equality and inequality operators for COMPLEX_POLAR
|
|
-- (equality and inequality operators for COMPLEX are predefined)
|
|
--
|
|
|
|
function "=" ( L: in COMPLEX_POLAR; R: in COMPLEX_POLAR ) return BOOLEAN;
|
|
-- Purpose:
|
|
-- Returns TRUE if L is equal to R and returns FALSE otherwise
|
|
-- Special values:
|
|
-- COMPLEX_POLAR'(0.0, X) = COMPLEX_POLAR'(0.0, Y) returns TRUE
|
|
-- regardless of the value of X and Y.
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- "="(L,R) is either TRUE or FALSE
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "/=" ( L: in COMPLEX_POLAR; R: in COMPLEX_POLAR ) return BOOLEAN;
|
|
-- Purpose:
|
|
-- Returns TRUE if L is not equal to R and returns FALSE
|
|
-- otherwise
|
|
-- Special values:
|
|
-- COMPLEX_POLAR'(0.0, X) /= COMPLEX_POLAR'(0.0, Y) returns
|
|
-- FALSE regardless of the value of X and Y.
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- "/="(L,R) is either TRUE or FALSE
|
|
-- Notes:
|
|
-- None
|
|
|
|
--
|
|
-- Function Declarations
|
|
--
|
|
function CMPLX(X: in REAL; Y: in REAL:= 0.0 ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns COMPLEX number X + iY
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- X in REAL
|
|
-- Y in REAL
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- CMPLX(X,Y) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function GET_PRINCIPAL_VALUE(X: in REAL ) return PRINCIPAL_VALUE;
|
|
-- Purpose:
|
|
-- Returns principal value of angle X; X in radians
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- X in REAL
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- -MATH_PI < GET_PRINCIPAL_VALUE(X) <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function COMPLEX_TO_POLAR(Z: in COMPLEX ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value COMPLEX_POLAR of Z
|
|
-- Special values:
|
|
-- COMPLEX_TO_POLAR(MATH_CZERO) = COMPLEX_POLAR'(0.0, 0.0)
|
|
-- COMPLEX_TO_POLAR(Z) = COMPLEX_POLAR'(ABS(Z.IM),
|
|
-- SIGN(Z.IM)*MATH_PI_OVER_2) if Z.RE = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function POLAR_TO_COMPLEX(Z: in COMPLEX_POLAR ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns COMPLEX value of Z
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- POLAR_TO_COMPLEX(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "ABS"(Z: in COMPLEX ) return POSITIVE_REAL;
|
|
-- Purpose:
|
|
-- Returns absolute value (magnitude) of Z
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- ABS(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- ABS(Z) = SQRT(Z.RE*Z.RE + Z.IM*Z.IM)
|
|
|
|
function "ABS"(Z: in COMPLEX_POLAR ) return POSITIVE_REAL;
|
|
-- Purpose:
|
|
-- Returns absolute value (magnitude) of Z
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- ABS(Z) >= 0.0
|
|
-- Notes:
|
|
-- ABS(Z) = Z.MAG
|
|
|
|
function ARG(Z: in COMPLEX ) return PRINCIPAL_VALUE;
|
|
-- Purpose:
|
|
-- Returns argument (angle) in radians of the principal
|
|
-- value of Z
|
|
-- Special values:
|
|
-- ARG(Z) = 0.0 if Z.RE >= 0.0 and Z.IM = 0.0
|
|
-- ARG(Z) = SIGN(Z.IM)*MATH_PI_OVER_2 if Z.RE = 0.0
|
|
-- ARG(Z) = MATH_PI if Z.RE < 0.0 and Z.IM = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- -MATH_PI < ARG(Z) <= MATH_PI
|
|
-- Notes:
|
|
-- ARG(Z) = ARCTAN(Z.IM, Z.RE)
|
|
|
|
function ARG(Z: in COMPLEX_POLAR ) return PRINCIPAL_VALUE;
|
|
-- Purpose:
|
|
-- Returns argument (angle) in radians of the principal
|
|
-- value of Z
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- -MATH_PI < ARG(Z) <= MATH_PI
|
|
-- Notes:
|
|
-- ARG(Z) = Z.ARG
|
|
|
|
|
|
function "-" (Z: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns unary minus of Z
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "-"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- Returns -x -jy for Z= x + jy
|
|
|
|
function "-" (Z: in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of unary minus of Z
|
|
-- Special values:
|
|
-- "-"(Z) = COMPLEX_POLAR'(Z.MAG, MATH_PI) if Z.ARG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- Returns COMPLEX_POLAR'(Z.MAG, Z.ARG - SIGN(Z.ARG)*MATH_PI) if
|
|
-- Z.ARG /= 0.0
|
|
|
|
function CONJ (Z: in COMPLEX) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns complex conjugate of Z
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- CONJ(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- Returns x -jy for Z= x + jy
|
|
|
|
function CONJ (Z: in COMPLEX_POLAR) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of complex conjugate of Z
|
|
-- Special values:
|
|
-- CONJ(Z) = COMPLEX_POLAR'(Z.MAG, MATH_PI) if Z.ARG = MATH_PI
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- Returns COMPLEX_POLAR'(Z.MAG, -Z.ARG) if Z.ARG /= MATH_PI
|
|
|
|
function SQRT(Z: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns square root of Z with positive real part
|
|
-- or, if the real part is zero, the one with nonnegative
|
|
-- imaginary part
|
|
-- Special values:
|
|
-- SQRT(MATH_CZERO) = MATH_CZERO
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- SQRT(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function SQRT(Z: in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns square root of Z with positive real part
|
|
-- or, if the real part is zero, the one with nonnegative
|
|
-- imaginary part
|
|
-- Special values:
|
|
-- SQRT(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function EXP(Z: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns exponential of Z
|
|
-- Special values:
|
|
-- EXP(MATH_CZERO) = MATH_CBASE_1
|
|
-- EXP(Z) = -MATH_CBASE_1 if Z.RE = 0.0 and ABS(Z.IM) = MATH_PI
|
|
-- EXP(Z) = SIGN(Z.IM)*MATH_CBASE_J if Z.RE = 0.0 and
|
|
-- ABS(Z.IM) = MATH_PI_OVER_2
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- EXP(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
|
|
|
|
function EXP(Z: in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of exponential of Z
|
|
-- Special values:
|
|
-- EXP(Z) = COMPLEX_POLAR'(1.0, 0.0) if Z.MAG =0.0 and
|
|
-- Z.ARG = 0.0
|
|
-- EXP(Z) = COMPLEX_POLAR'(1.0, MATH_PI) if Z.MAG = MATH_PI and
|
|
-- ABS(Z.ARG) = MATH_PI_OVER_2
|
|
-- EXP(Z) = COMPLEX_POLAR'(1.0, MATH_PI_OVER_2) if
|
|
-- Z.MAG = MATH_PI_OVER_2 and
|
|
-- Z.ARG = MATH_PI_OVER_2
|
|
-- EXP(Z) = COMPLEX_POLAR'(1.0, -MATH_PI_OVER_2) if
|
|
-- Z.MAG = MATH_PI_OVER_2 and
|
|
-- Z.ARG = -MATH_PI_OVER_2
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG(Z: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns natural logarithm of Z
|
|
-- Special values:
|
|
-- LOG(MATH_CBASE_1) = MATH_CZERO
|
|
-- LOG(-MATH_CBASE_1) = COMPLEX'(0.0, MATH_PI)
|
|
-- LOG(MATH_CBASE_J) = COMPLEX'(0.0, MATH_PI_OVER_2)
|
|
-- LOG(-MATH_CBASE_J) = COMPLEX'(0.0, -MATH_PI_OVER_2)
|
|
-- LOG(Z) = MATH_CBASE_1 if Z = COMPLEX'(MATH_E, 0.0)
|
|
-- Domain:
|
|
-- Z in COMPLEX and ABS(Z) /= 0.0
|
|
-- Error conditions:
|
|
-- Error if ABS(Z) = 0.0
|
|
-- Range:
|
|
-- LOG(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG2(Z: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns logarithm base 2 of Z
|
|
-- Special values:
|
|
-- LOG2(MATH_CBASE_1) = MATH_CZERO
|
|
-- LOG2(Z) = MATH_CBASE_1 if Z = COMPLEX'(2.0, 0.0)
|
|
-- Domain:
|
|
-- Z in COMPLEX and ABS(Z) /= 0.0
|
|
-- Error conditions:
|
|
-- Error if ABS(Z) = 0.0
|
|
-- Range:
|
|
-- LOG2(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG10(Z: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns logarithm base 10 of Z
|
|
-- Special values:
|
|
-- LOG10(MATH_CBASE_1) = MATH_CZERO
|
|
-- LOG10(Z) = MATH_CBASE_1 if Z = COMPLEX'(10.0, 0.0)
|
|
-- Domain:
|
|
-- Z in COMPLEX and ABS(Z) /= 0.0
|
|
-- Error conditions:
|
|
-- Error if ABS(Z) = 0.0
|
|
-- Range:
|
|
-- LOG10(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG(Z: in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of natural logarithm of Z
|
|
-- Special values:
|
|
-- LOG(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 1.0 and
|
|
-- Z.ARG = 0.0
|
|
-- LOG(Z) = COMPLEX_POLAR'(MATH_PI, MATH_PI_OVER_2) if
|
|
-- Z.MAG = 1.0 and Z.ARG = MATH_PI
|
|
-- LOG(Z) = COMPLEX_POLAR'(MATH_PI_OVER_2, MATH_PI_OVER_2) if
|
|
-- Z.MAG = 1.0 and Z.ARG = MATH_PI_OVER_2
|
|
-- LOG(Z) = COMPLEX_POLAR'(MATH_PI_OVER_2, -MATH_PI_OVER_2) if
|
|
-- Z.MAG = 1.0 and Z.ARG = -MATH_PI_OVER_2
|
|
-- LOG(Z) = COMPLEX_POLAR'(1.0, 0.0) if Z.MAG = MATH_E and
|
|
-- Z.ARG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Z.MAG /= 0.0
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Error if Z.MAG = 0.0
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG2(Z: in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of logarithm base 2 of Z
|
|
-- Special values:
|
|
-- LOG2(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 1.0 and
|
|
-- Z.ARG = 0.0
|
|
-- LOG2(Z) = COMPLEX_POLAR'(1.0, 0.0) if Z.MAG = 2.0 and
|
|
-- Z.ARG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Z.MAG /= 0.0
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Error if Z.MAG = 0.0
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG10(Z: in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of logarithm base 10 of Z
|
|
-- Special values:
|
|
-- LOG10(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 1.0 and
|
|
-- Z.ARG = 0.0
|
|
-- LOG10(Z) = COMPLEX_POLAR'(1.0, 0.0) if Z.MAG = 10.0 and
|
|
-- Z.ARG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Z.MAG /= 0.0
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Error if Z.MAG = 0.0
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG(Z: in COMPLEX; BASE: in REAL) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns logarithm base BASE of Z
|
|
-- Special values:
|
|
-- LOG(MATH_CBASE_1, BASE) = MATH_CZERO
|
|
-- LOG(Z,BASE) = MATH_CBASE_1 if Z = COMPLEX'(BASE, 0.0)
|
|
-- Domain:
|
|
-- Z in COMPLEX and ABS(Z) /= 0.0
|
|
-- BASE > 0.0
|
|
-- BASE /= 1.0
|
|
-- Error conditions:
|
|
-- Error if ABS(Z) = 0.0
|
|
-- Error if BASE <= 0.0
|
|
-- Error if BASE = 1.0
|
|
-- Range:
|
|
-- LOG(Z,BASE) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function LOG(Z: in COMPLEX_POLAR; BASE: in REAL ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of logarithm base BASE of Z
|
|
-- Special values:
|
|
-- LOG(Z, BASE) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 1.0 and
|
|
-- Z.ARG = 0.0
|
|
-- LOG(Z, BASE) = COMPLEX_POLAR'(1.0, 0.0) if Z.MAG = BASE and
|
|
-- Z.ARG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Z.MAG /= 0.0
|
|
-- BASE > 0.0
|
|
-- BASE /= 1.0
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Error if Z.MAG = 0.0
|
|
-- Error if BASE <= 0.0
|
|
-- Error if BASE = 1.0
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function SIN (Z : in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns sine of Z
|
|
-- Special values:
|
|
-- SIN(MATH_CZERO) = MATH_CZERO
|
|
-- SIN(Z) = MATH_CZERO if Z = COMPLEX'(MATH_PI, 0.0)
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- ABS(SIN(Z)) <= SQRT(SIN(Z.RE)*SIN(Z.RE) +
|
|
-- SINH(Z.IM)*SINH(Z.IM))
|
|
-- Notes:
|
|
-- None
|
|
|
|
function SIN (Z : in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of sine of Z
|
|
-- Special values:
|
|
-- SIN(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 0.0 and
|
|
-- Z.ARG = 0.0
|
|
-- SIN(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = MATH_PI and
|
|
-- Z.ARG = 0.0
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function COS (Z : in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns cosine of Z
|
|
-- Special values:
|
|
-- COS(Z) = MATH_CZERO if Z = COMPLEX'(MATH_PI_OVER_2, 0.0)
|
|
-- COS(Z) = MATH_CZERO if Z = COMPLEX'(-MATH_PI_OVER_2, 0.0)
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- ABS(COS(Z)) <= SQRT(COS(Z.RE)*COS(Z.RE) +
|
|
-- SINH(Z.IM)*SINH(Z.IM))
|
|
-- Notes:
|
|
-- None
|
|
|
|
|
|
function COS (Z : in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of cosine of Z
|
|
-- Special values:
|
|
-- COS(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = MATH_PI_OVER_2
|
|
-- and Z.ARG = 0.0
|
|
-- COS(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = MATH_PI_OVER_2
|
|
-- and Z.ARG = MATH_PI
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function SINH (Z : in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns hyperbolic sine of Z
|
|
-- Special values:
|
|
-- SINH(MATH_CZERO) = MATH_CZERO
|
|
-- SINH(Z) = MATH_CZERO if Z.RE = 0.0 and Z.IM = MATH_PI
|
|
-- SINH(Z) = MATH_CBASE_J if Z.RE = 0.0 and
|
|
-- Z.IM = MATH_PI_OVER_2
|
|
-- SINH(Z) = -MATH_CBASE_J if Z.RE = 0.0 and
|
|
-- Z.IM = -MATH_PI_OVER_2
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- ABS(SINH(Z)) <= SQRT(SINH(Z.RE)*SINH(Z.RE) +
|
|
-- SIN(Z.IM)*SIN(Z.IM))
|
|
-- Notes:
|
|
-- None
|
|
|
|
function SINH (Z : in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of hyperbolic sine of Z
|
|
-- Special values:
|
|
-- SINH(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = 0.0 and
|
|
-- Z.ARG = 0.0
|
|
-- SINH(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG = MATH_PI and
|
|
-- Z.ARG = MATH_PI_OVER_2
|
|
-- SINH(Z) = COMPLEX_POLAR'(1.0, MATH_PI_OVER_2) if Z.MAG =
|
|
-- MATH_PI_OVER_2 and Z.ARG = MATH_PI_OVER_2
|
|
-- SINH(Z) = COMPLEX_POLAR'(1.0, -MATH_PI_OVER_2) if Z.MAG =
|
|
-- MATH_PI_OVER_2 and Z.ARG = -MATH_PI_OVER_2
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function COSH (Z : in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns hyperbolic cosine of Z
|
|
-- Special values:
|
|
-- COSH(MATH_CZERO) = MATH_CBASE_1
|
|
-- COSH(Z) = -MATH_CBASE_1 if Z.RE = 0.0 and Z.IM = MATH_PI
|
|
-- COSH(Z) = MATH_CZERO if Z.RE = 0.0 and Z.IM = MATH_PI_OVER_2
|
|
-- COSH(Z) = MATH_CZERO if Z.RE = 0.0 and Z.IM = -MATH_PI_OVER_2
|
|
-- Domain:
|
|
-- Z in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- ABS(COSH(Z)) <= SQRT(SINH(Z.RE)*SINH(Z.RE) +
|
|
-- COS(Z.IM)*COS(Z.IM))
|
|
-- Notes:
|
|
-- None
|
|
|
|
|
|
function COSH (Z : in COMPLEX_POLAR ) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns principal value of hyperbolic cosine of Z
|
|
-- Special values:
|
|
-- COSH(Z) = COMPLEX_POLAR'(1.0, 0.0) if Z.MAG = 0.0 and
|
|
-- Z.ARG = 0.0
|
|
-- COSH(Z) = COMPLEX_POLAR'(1.0, MATH_PI) if Z.MAG = MATH_PI and
|
|
-- Z.ARG = MATH_PI_OVER_2
|
|
-- COSH(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG =
|
|
-- MATH_PI_OVER_2 and Z.ARG = MATH_PI_OVER_2
|
|
-- COSH(Z) = COMPLEX_POLAR'(0.0, 0.0) if Z.MAG =
|
|
-- MATH_PI_OVER_2 and Z.ARG = -MATH_PI_OVER_2
|
|
-- Domain:
|
|
-- Z in COMPLEX_POLAR and Z.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if Z.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
--
|
|
-- Arithmetic Operators
|
|
--
|
|
|
|
function "+" ( L: in COMPLEX; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic addition of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "+"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "+" ( L: in REAL; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic addition of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "+"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "+" ( L: in COMPLEX; R: in REAL ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic addition of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in REAL
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "+"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "+" ( L: in COMPLEX_POLAR; R: in COMPLEX_POLAR)
|
|
return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic addition of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
|
|
function "+" ( L: in REAL; R: in COMPLEX_POLAR) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic addition of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "+" ( L: in COMPLEX_POLAR; R: in REAL) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic addition of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in REAL
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "-" ( L: in COMPLEX; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic subtraction of L minus R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "-"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "-" ( L: in REAL; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic subtraction of L minus R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "-"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "-" ( L: in COMPLEX; R: in REAL ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic subtraction of L minus R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in REAL
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "-"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "-" ( L: in COMPLEX_POLAR; R: in COMPLEX_POLAR)
|
|
return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic subtraction of L minus R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "-" ( L: in REAL; R: in COMPLEX_POLAR) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic subtraction of L minus R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
|
|
function "-" ( L: in COMPLEX_POLAR; R: in REAL) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic subtraction of L minus R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in REAL
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "*" ( L: in COMPLEX; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic multiplication of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "*"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "*" ( L: in REAL; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic multiplication of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX
|
|
-- Error conditions:
|
|
-- None
|
|
-- Range:
|
|
-- "*"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "*" ( L: in COMPLEX; R: in REAL ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic multiplication of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in REAL
|
|
-- Error conditions:
|
|
-- None
|
|
|
|
-- Range:
|
|
-- "*"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "*" ( L: in COMPLEX_POLAR; R: in COMPLEX_POLAR)
|
|
return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic multiplication of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "*" ( L: in REAL; R: in COMPLEX_POLAR) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic multiplication of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- Error conditions:
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "*" ( L: in COMPLEX_POLAR; R: in REAL) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic multiplication of L and R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in REAL
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
|
|
function "/" ( L: in COMPLEX; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic division of L by R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in COMPLEX and R /= MATH_CZERO
|
|
-- Error conditions:
|
|
-- Error if R = MATH_CZERO
|
|
-- Range:
|
|
-- "/"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "/" ( L: in REAL; R: in COMPLEX ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic division of L by R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX and R /= MATH_CZERO
|
|
-- Error conditions:
|
|
-- Error if R = MATH_CZERO
|
|
-- Range:
|
|
-- "/"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "/" ( L: in COMPLEX; R: in REAL ) return COMPLEX;
|
|
-- Purpose:
|
|
-- Returns arithmetic division of L by R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX
|
|
-- R in REAL and R /= 0.0
|
|
-- Error conditions:
|
|
-- Error if R = 0.0
|
|
-- Range:
|
|
-- "/"(Z) is mathematically unbounded
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "/" ( L: in COMPLEX_POLAR; R: in COMPLEX_POLAR)
|
|
return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic division of L by R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- R.MAG > 0.0
|
|
-- Error conditions:
|
|
-- Error if R.MAG <= 0.0
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "/" ( L: in REAL; R: in COMPLEX_POLAR) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic division of L by R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in REAL
|
|
-- R in COMPLEX_POLAR and R.ARG /= -MATH_PI
|
|
-- R.MAG > 0.0
|
|
-- Error conditions:
|
|
-- Error if R.MAG <= 0.0
|
|
-- Error if R.ARG = -MATH_PI
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
|
|
function "/" ( L: in COMPLEX_POLAR; R: in REAL) return COMPLEX_POLAR;
|
|
-- Purpose:
|
|
-- Returns arithmetic division of L by R
|
|
-- Special values:
|
|
-- None
|
|
-- Domain:
|
|
-- L in COMPLEX_POLAR and L.ARG /= -MATH_PI
|
|
-- R /= 0.0
|
|
-- Error conditions:
|
|
-- Error if L.ARG = -MATH_PI
|
|
-- Error if R = 0.0
|
|
-- Range:
|
|
-- result.MAG >= 0.0
|
|
-- -MATH_PI < result.ARG <= MATH_PI
|
|
-- Notes:
|
|
-- None
|
|
end MATH_COMPLEX;
|