62 lines
2.1 KiB
Markdown
62 lines
2.1 KiB
Markdown
[complex.numbers.general]
|
||
|
||
# 29 Numerics library [[numerics]](./#numerics)
|
||
|
||
## 29.4 Complex numbers [[complex.numbers]](complex.numbers#general)
|
||
|
||
### 29.4.1 General [complex.numbers.general]
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L180)
|
||
|
||
The header [<complex>](complex.syn#header:%3ccomplex%3e "29.4.2 Header <complex> synopsis [complex.syn]") defines a class template,
|
||
and numerous functions for representing and manipulating complex numbers[.](#1.sentence-1)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L184)
|
||
|
||
The effect of instantiating the primary template of complex for any type
|
||
that is not a cv-unqualified floating-point type ([[basic.fundamental]](basic.fundamental "6.9.2 Fundamental types"))
|
||
is unspecified[.](#2.sentence-1)
|
||
|
||
Specializations of complex for cv-unqualified floating-point types
|
||
are trivially copyable literal types ([[basic.types.general]](basic.types.general#term.literal.type "6.9.1 General"))[.](#2.sentence-2)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L191)
|
||
|
||
If the result of a function is not mathematically defined or not in
|
||
the range of representable values for its type, the behavior is
|
||
undefined[.](#3.sentence-1)
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L196)
|
||
|
||
If z is an lvalue of type cv complex<T> then:
|
||
|
||
- [(4.1)](#4.1)
|
||
|
||
the expression reinterpret_cast<cv T(&)[2]>(z) is well-formed,
|
||
|
||
- [(4.2)](#4.2)
|
||
|
||
reinterpret_cast<cv T(&)[2]>(z)[0] designates the real part of z, and
|
||
|
||
- [(4.3)](#4.3)
|
||
|
||
reinterpret_cast<cv T(&)[2]>(z)[1] designates the imaginary part of z[.](#4.sentence-1)
|
||
|
||
Moreover, if a is an expression of type cv complex<T>* and the expression a[i] is well-defined for an integer expression i, then:
|
||
|
||
- [(4.4)](#4.4)
|
||
|
||
reinterpret_cast<cv T*>(a)[2 * i] designates the real part of a[i], and
|
||
|
||
- [(4.5)](#4.5)
|
||
|
||
reinterpret_cast<cv T*>(a)[2 * i + 1] designates the imaginary part of a[i][.](#4.sentence-2)
|