Ada Programming/Libraries/Ada.Numerics.Generic Complex Types
Appearance
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 | edit source]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 | edit source]-- 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 | edit source]Wikibook
[edit | edit source]- Ada Programming
- Ada Programming/Libraries
- Ada Programming/Mathematical calculations#Complex arithmethic
External examples
[edit source]- 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 | edit source]Ada 95
[edit | edit source]Ada 2005
[edit | edit source]Ada 2012
[edit | edit source]Open-Source Implementations
[edit | edit source]FSF GNAT
- Specification: a-ngcoty.ads
- Body: a-ngcoty.adb
drake
- Specification: numerics/a-ngcoty.ads
- Body: numerics/a-ngcoty.adb