Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
complex.cppm File Reference

Minimal complex wrapper for experimental reintegration. More...

#include <cmath>
#include <concepts>
#include <functional>
#include <limits>
#include <type_traits>
#include <utility>
import dedekind.numbers:quadratic;
import dedekind.sets;
import dedekind.geometry;
import dedekind.category;
import dedekind.morphologies;
import dedekind.algebra;
Include dependency graph for complex.cppm:

Classes

class  dedekind::numbers::Complex< R >
struct  dedekind::numbers::PartialAddComplex< R >
 Partial addition transform for Complex<R>. More...
struct  dedekind::numbers::PartialMulComplex< R >
 Partial multiplication transform for Complex<R>. More...
struct  dedekind::category::is_exact_total< dedekind::numbers::Complex< R >, std::plus< dedekind::numbers::Complex< R > > >
struct  dedekind::category::is_exact_total< dedekind::numbers::Complex< R >, std::multiplies< dedekind::numbers::Complex< R > > >
struct  dedekind::category::is_associative< dedekind::numbers::Complex< R >, std::plus< dedekind::numbers::Complex< R > > >
struct  dedekind::category::is_commutative< dedekind::numbers::Complex< R >, std::plus< dedekind::numbers::Complex< R > > >
struct  dedekind::category::inverse_trait< dedekind::numbers::Complex< R >, std::multiplies< dedekind::numbers::Complex< R > > >
struct  dedekind::numbers::UnitRoot< N >
 A SYMBOLIC N-th root of unity \(\zeta_N^{\,p}\), carried by its exponent p ∈ ℤ/N (Modular<N>). The unit harmonics \(\mu_N=\{z:z^N=1\}\): the torsion subgroup of the unit circle U(1), cut out of ℂ, cyclic of order N and \(\cong\mathbb{Z}/N\) via de Moivre. More...
struct  dedekind::numbers::Character< N >
 The de Moivre CHARACTER \(\chi_m : \mathbb{Z}/N \to \mu_N\), \(k \mapsto \zeta_N^{\,mk}\) — the plane wave "as such", carried SYMBOLICALLY in UnitRoot<N> (consumes the μ_N layer; resolve() collapses to exact ℂ at N=8). More...
struct  dedekind::numbers::DiscreteCos< N >
 The exact discrete COSINE \(\cos_N(k) = \cos(2\pi k/N) = \Re\,\zeta_N^k\) over the Modular<N> angle — the EVEN part of the de Moivre character (= the \(\tfrac12(I+U)\) projection's real value). More...
struct  dedekind::numbers::DiscreteSin< N >
 The exact discrete SINE \(\sin_N(k) = \sin(2\pi k/N) = \Im\,\zeta_N^k\) — the ODD part of the character (Im of character<N>(1) resolved). An IsArrow Modular<N> → ℝ, exact at N=8. More...
struct  dedekind::category::is_exact_total< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::is_associative< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::is_commutative< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::unit_trait< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::inverse_trait< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::is_cyclic_group< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::cyclic_order< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > >
struct  dedekind::category::SpeciesTraits< dedekind::numbers::Complex< R > >
struct  dedekind::category::is_homomorphism< std::decay_t< decltype(dedekind::numbers::embed_ℝ_ℂ)>, dedekind::numbers::QuadraticReal< 2 >, std::plus< dedekind::numbers::QuadraticReal< 2 > >, std::plus< dedekind::numbers::Complex< dedekind::numbers::QuadraticReal< 2 > > > >
struct  dedekind::category::is_homomorphism< std::decay_t< decltype(dedekind::numbers::embed_ℝ_ℂ)>, dedekind::numbers::QuadraticReal< 2 >, std::multiplies< dedekind::numbers::QuadraticReal< 2 > >, std::multiplies< dedekind::numbers::Complex< dedekind::numbers::QuadraticReal< 2 > > > >
struct  dedekind::category::quotient_algebra_base< dedekind::numbers::Complex< R > >
struct  dedekind::category::is_linear_action< dedekind::numbers::Complex< R >, R, std::plus< dedekind::numbers::Complex< R > >, std::plus< R >, std::multiplies< R >, std::multiplies<> >
struct  dedekind::category::unit_trait< dedekind::numbers::Complex< R >, std::plus< dedekind::numbers::Complex< R > > >
struct  dedekind::category::unit_trait< dedekind::numbers::Complex< R >, std::multiplies< dedekind::numbers::Complex< R > > >
struct  dedekind::category::inverse_trait< dedekind::numbers::Complex< R >, std::plus< dedekind::numbers::Complex< R > > >

Namespaces

namespace  dedekind::numbers
namespace  dedekind::category

Concepts

concept  dedekind::numbers::IsComplexScalar

Functions

template<IsComplexScalar R>
constexpr Complex< R > dedekind::numbers::conj (const Complex< R > &z)
 Complex conjugate: conj(a + bi) = a − bi.
template<IsComplexScalar R>
constexpr R dedekind::numbers::dot (const Complex< R > &z, const Complex< R > &w)
 The real inner product on ℂ ≅ ℝ²: dot(z, w) = Re(z · conj w) = re_z·re_w + im_z·im_w.
template<IsComplexScalar R>
constexpr R dedekind::numbers::abs2 (const Complex< R > &z)
 Squared norm abs2(z) = <z, z> = |z|² = re² + im²: exact, √-free.
template<IsComplexScalar R>
constexpr R dedekind::numbers::euclidean_norm_squared (const Complex< R > &z)
 Squared Euclidean norm on Complex<R>: a synonym for abs2, kept so it stays reachable by ADL in dedekind::numbers for callers that do not import dedekind.geometry (e.g. the Mandelbrot escape test and the set-algebra predicates). Kept squared to avoid a square root in hot paths.
template<unsigned N>
constexpr UnitRoot< N > dedekind::numbers::unit_root ()
 The primitive N-th root \(\zeta_N=\zeta_N^{1}\) (the μ_N generator).
template<unsigned N>
constexpr Character< N > dedekind::numbers::character (dedekind::morphologies::Modular< N > m)
 The character \(\chi_m\) at frequency m.
template<unsigned N>
requires (N == 8u)
constexpr DiscreteCos< N > dedekind::numbers::cos_n ()
 \(\cos_N = \Re\,\zeta_N^{(\cdot)}\) as an arrow.
template<unsigned N>
requires (N == 8u)
constexpr DiscreteSin< N > dedekind::numbers::sin_n ()
 \(\sin_N = \Im\,\zeta_N^{(\cdot)}\) as an arrow.

Variables

template<typename R>
constexpr bool dedekind::category::is_kleene_commutative_v< dedekind::numbers::Complex< R >, dedekind::numbers::PartialAddComplex< R > >
 Kleene traits for complex arithmetic.
template<typename R>
constexpr dedekind::numbers::Complex< R > dedekind::category::partial_unit_v< dedekind::numbers::Complex< R >, dedekind::numbers::PartialAddComplex< R > >
template<typename R>
constexpr bool dedekind::category::is_kleene_commutative_v< dedekind::numbers::Complex< R >, dedekind::numbers::PartialMulComplex< R > >
template<typename R>
constexpr dedekind::numbers::Complex< R > dedekind::category::partial_unit_v< dedekind::numbers::Complex< R >, dedekind::numbers::PartialMulComplex< R > >
template<typename R>
constexpr bool dedekind::category::is_associative_v< dedekind::numbers::Complex< R >, std::multiplies< dedekind::numbers::Complex< R > > >
template<typename R>
constexpr bool dedekind::category::is_commutative_v< dedekind::numbers::Complex< R >, std::multiplies< dedekind::numbers::Complex< R > > >
template<typename R>
constexpr bool dedekind::category::is_distributive_v< dedekind::numbers::Complex< R >, std::multiplies< dedekind::numbers::Complex< R > >, std::plus< dedekind::numbers::Complex< R > > >
constexpr auto dedekind::numbers::embed_ℝ_ℂ
 The Birkhoff S leg \(\mathbb{R}\hookrightarrow\mathbb{C}\) over the coat-hanger: QuadraticReal<2> → Complex<QuadraticReal<2>>, \(r\mapsto (r,0)\).
constexpr auto dedekind::numbers::root8
 The exact de Moivre exponential \(\zeta_8 : \mathbb{Z}/8 \to \mathbb{C}^\times\) over the coat-hanger ℝ = ℚ(√2): \(k \mapsto \zeta_8^{\,k} = (\cos\tfrac{2\pi k}{8},\ \sin\tfrac{2\pi k}{8})\).
constexpr Complex< QuadraticReal< 2 > > dedekind::numbers::ζ8
 The primitive 8th root of unity ζ8 = e^{2πi/8} = ½√2 + ½√2·i, exact in ℂ(ℚ(√2)) — the generator of the de Moivre map root8.
template<unsigned N>
constexpr bool dedekind::category::is_invertible_v< dedekind::numbers::UnitRoot< N >, std::multiplies< dedekind::numbers::UnitRoot< N > > > = true
constexpr QuadraticReal< 2 > dedekind::numbers::half_root2
constexpr auto dedekind::numbers::ℂ
 The canonical complex-number universe ℂ = 𝔸<Complex<QuadraticReal<2>>, Boole, ℶ_1> — the coat-hanger ℂ = Cplx(ℝ) over the genuine ℝ = ℚ(√2) (mirroring ℝ and 𝔻). Equality on ℚ(√2)[i] is decidable, so ℂ answers in Boole; ℶ_1 is the cardinality of the ℂ it models, not a logic.
template<>
constexpr bool dedekind::category::is_monic_arrow_v< std::decay_t< decltype(dedekind::numbers::embed_ℝ_ℂ)> >
template<dedekind::numbers::IsComplexScalar R>
constexpr bool dedekind::category::is_invertible_v< dedekind::numbers::Complex< R >, std::plus< dedekind::numbers::Complex< R > > >

Detailed Description

Minimal complex wrapper for experimental reintegration.

@partition :complex

Note
"Les mathematiciens n'etudient pas des objets, mais des relations entre des objets." ("Mathematicians do not study objects, but the relations between objects.") – Henri Poincare, La Science et l'hypothese (1902)