Files
2025-10-25 03:02:53 +03:00

62 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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.2Header <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.2Fundamental 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.1General"))[.](#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)