Ada Programming/Libraries/Ada.Numerics.Generic Complex Types
< Ada Programming | Libraries
This language feature is available from Ada 95 on.
Ada.Numerics.Generic_Complex_Types is a unit of the Predefined Language Environment since Ada 95.
The generic package Ada.Numerics.Generic_Complex_Types defines complex type for a defined floating point type. Being generic it can not only be used for predefined floating point types but also for any user defined floating type.
Usage edit
There is an extensive usage guide in Ada Programming/Mathematical calculations. Here the relevant extract:
with
Ada.Numerics.Generic_Complex_Types;procedure
Numeric_7is
type
Value_Typeis
digits
12range
-999_999_999_999.0e999 .. 999_999_999_999.0e999;package
Complex_Typesis
new
Ada.Numerics.Generic_Complex_Types ( Value_Type);use
type
Complex_Types.Complex;
Specification edit
-- Standard Ada library specification -- Copyright (c) 2003-2018 Maxim Reznik <reznikmm@gmail.com> -- Copyright (c) 2004-2016 AXE Consultants -- Copyright (c) 2004, 2005, 2006 Ada-Europe -- Copyright (c) 2000 The MITRE Corporation, Inc. -- Copyright (c) 1992, 1993, 1994, 1995 Intermetrics, Inc. -- SPDX-License-Identifier: BSD-3-Clause and LicenseRef-AdaReferenceManual -- -------------------------------------------------------------------------generic
type
Realis
digits
<>;package
Ada.Numerics.Generic_Complex_Typesis
pragma
Pure (Generic_Complex_Types);type
Complexis
record
Re, Im : Real'Base;end
record
;type
Imaginaryis
private
;pragma
Preelaborable_Initialization (Imaginary); i :constant
Imaginary; j :constant
Imaginary;function
Re (X : Complex)return
Real'Base;function
Im (X : Complex)return
Real'Base;function
Im (X : Imaginary)return
Real'Base;procedure
Set_Re (X :in
out
Complex; Re :in
Real'Base);procedure
Set_Im (X :in
out
Complex; Im :in
Real'Base);procedure
Set_Im (X :out
Imaginary; Im :in
Real'Base);function
Compose_From_Cartesian (Re, Im : Real'Base)return
Complex;function
Compose_From_Cartesian (Re : Real'Base)return
Complex;function
Compose_From_Cartesian (Im : Imaginary)return
Complex;function
Modulus (X : Complex)return
Real'Base;function
"abs" (Right : Complex)return
Real'Baserenames
Modulus;function
Argument (X : Complex)return
Real'Base;function
Argument (X : Complex; Cycle : Real'Base)return
Real'Base;function
Compose_From_Polar (Modulus, Argument : Real'Base)return
Complex;function
Compose_From_Polar (Modulus, Argument, Cycle : Real'Base)return
Complex;function
"+" (Right : Complex)return
Complex;function
"-" (Right : Complex)return
Complex;function
Conjugate (X : Complex)return
Complex;function
"+" (Left, Right : Complex)return
Complex;function
"-" (Left, Right : Complex)return
Complex;function
"*" (Left, Right : Complex)return
Complex;function
"/" (Left, Right : Complex)return
Complex;function
"**" (Left : Complex; Right : Integer)return
Complex;function
"+" (Right : Imaginary)return
Imaginary;function
"-" (Right : Imaginary)return
Imaginary;function
Conjugate (X : Imaginary)return
Imaginaryrenames
"-";function
"abs" (Right : Imaginary)return
Real'Base;function
"+" (Left, Right : Imaginary)return
Imaginary;function
"-" (Left, Right : Imaginary)return
Imaginary;function
"*" (Left, Right : Imaginary)return
Real'Base;function
"/" (Left, Right : Imaginary)return
Real'Base;function
"**" (Left : Imaginary; Right : Integer)return
Complex;function
"<" (Left, Right : Imaginary)return
Boolean;function
"<=" (Left, Right : Imaginary)return
Boolean;function
">" (Left, Right : Imaginary)return
Boolean;function
">=" (Left, Right : Imaginary)return
Boolean;function
"+" (Left : Complex; Right : Real'Base)return
Complex;function
"+" (Left : Real'Base; Right : Complex)return
Complex;function
"-" (Left : Complex; Right : Real'Base)return
Complex;function
"-" (Left : Real'Base; Right : Complex)return
Complex;function
"*" (Left : Complex; Right : Real'Base)return
Complex;function
"*" (Left : Real'Base; Right : Complex)return
Complex;function
"/" (Left : Complex; Right : Real'Base)return
Complex;function
"/" (Left : Real'Base; Right : Complex)return
Complex;function
"+" (Left : Complex; Right : Imaginary)return
Complex;function
"+" (Left : Imaginary; Right : Complex)return
Complex;function
"-" (Left : Complex; Right : Imaginary)return
Complex;function
"-" (Left : Imaginary; Right : Complex)return
Complex;function
"*" (Left : Complex; Right : Imaginary)return
Complex;function
"*" (Left : Imaginary; Right : Complex)return
Complex;function
"/" (Left : Complex; Right : Imaginary)return
Complex;function
"/" (Left : Imaginary; Right : Complex)return
Complex;function
"+" (Left : Imaginary; Right : Real'Base)return
Complex;function
"+" (Left : Real'Base; Right : Imaginary)return
Complex;function
"-" (Left : Imaginary; Right : Real'Base)return
Complex;function
"-" (Left : Real'Base; Right : Imaginary)return
Complex;function
"*" (Left : Imaginary; Right : Real'Base)return
Imaginary;function
"*" (Left : Real'Base; Right : Imaginary)return
Imaginary;function
"/" (Left : Imaginary; Right : Real'Base)return
Imaginary;function
"/" (Left : Real'Base; Right : Imaginary)return
Imaginary;private
type
Imaginaryis
new
Real'Base; i :constant
Imaginary := 1.0; j :constant
Imaginary := 1.0;end
Ada.Numerics.Generic_Complex_Types;
See also edit
Wikibook edit
- Ada Programming
- Ada Programming/Libraries
- Ada Programming/Mathematical calculations#Complex arithmethic
External examples edit
- Search for examples of
Ada.Numerics.Generic_Complex_Types
in: Rosetta Code, GitHub (gists), any Alire crate or this Wikibook. - Search for posts related to
Ada.Numerics.Generic_Complex_Types
in: Stack Overflow, comp.lang.ada or any Ada related page.
Ada Reference Manual edit
Ada 95 edit
Ada 2005 edit
Ada 2012 edit
Open-Source Implementations edit
FSF GNAT
- Specification: a-ngcoty.ads
- Body: a-ngcoty.adb
drake
- Specification: numerics/a-ngcoty.ads
- Body: numerics/a-ngcoty.adb