VCTR
Loading...
Searching...
No Matches
vctr.h
1/*
2 ==============================================================================
3 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
5 Copyright 2022- by sonible GmbH.
6
7 This file is part of VCTR - Versatile Container Templates Reconceptualized.
8
9 VCTR is free software: you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License version 3
11 only, as published by the Free Software Foundation.
12
13 VCTR is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU Lesser General Public License version 3 for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 version 3 along with VCTR. If not, see <https://www.gnu.org/licenses/>.
20 ==============================================================================
21*/
22
23/*******************************************************************************
24 VCTR can optionally be used as a JUCE Module. The block below describes the
25 properties of this module, and is read by the Projucer to automatically generate
26 project code that uses it.
27
28 BEGIN_JUCE_MODULE_DECLARATION
29 ID: vctr
30 vendor: sonible
31 version: 1.0.0
32 name: VCTR
33 description: A powerful C++ 20 wrapper around your favourite standard library containers.
34 website: https://github.com/sonible/vctr
35 license: MIT
36 minimumCppStandard: 20
37 dependencies:
38 OSXFrameworks: Accelerate
39 iOSFrameworks: Accelerate
40 END_JUCE_MODULE_DECLARATION
41*******************************************************************************/
42
43#pragma once
44
45#include <utility>
46#include <vector>
47#include <array>
48#include <span>
49#include <concepts>
50#include <cmath>
51#include <ostream>
52#include <bit>
53#include <bitset>
54#include <iterator>
55#include <memory>
56#include <cstring>
57#include <ranges>
58#include <algorithm>
59#include <numeric>
60#include <optional>
61#include <functional>
62
63#ifdef jassert
64#define VCTR_ASSERT(e) jassert (e)
65#else
66#include <cassert>
67#define VCTR_ASSERT(e) assert (e)
68#endif
69
70// Also includes Concepts/ElementConcepts.h internally
71#include "vctr_forward_declarations.h"
72
73#include "Miscellaneous/Config.h"
74
75#include "Miscellaneous/CompilerSpecificAttributes.h"
76
77#if VCTR_X64
78#include <immintrin.h>
79#endif
80
81#if VCTR_ARM
82#include <arm_neon.h>
83#endif
84
85#if VCTR_APPLE
86#include <Accelerate/Accelerate.h>
87#endif
88
89#if VCTR_USE_IPP
90#include <ippcore.h>
91#include <ipps.h>
92#include <ippvm.h>
93#endif
94
95#if VCTR_USE_GCEM
96VCTR_START_IGNORE_WARNING_MSVC (4244) // conversion from 'long double' to 'T', possible loss of data
97#include <gcem.hpp>
98VCTR_END_IGNORE_WARNING_MSVC
99
100#if ((GCEM_VERSION_MAJOR < 1) || (GCEM_VERSION_MAJOR == 1 && GCEM_VERSION_MINOR < 16))
101#error "VCTR needs gcem version 1.16.0 or greater"
102#endif
103
104#endif
105
106//==============================================================================
107// Doxygen group definitions
108//==============================================================================
125#include "TypeTraitsAndConcepts/ContainerAndExpressionConcepts.h"
126#include "TypeTraitsAndConcepts/FunctionConcepts.h"
127
128#include "Containers/VectorBoolWorkaround.h"
129
130#include "SIMD/SIMDHelpers.h"
131#include "SIMD/SSE/SSERegister.h"
132#include "SIMD/AVX/AVXRegister.h"
133#include "SIMD/Neon/NeonRegister.h"
134
135#include "PlatformVectorOps/PlatformVectorOpsHelpers.h"
136#include "PlatformVectorOps/AppleAccelerate.h"
137#include "PlatformVectorOps/IntelIPP.h"
138
139#include "TypeTraitsAndConcepts/Traits.h"
140
141#include "Expressions/ExpressionTemplate.h"
142
143#include "Miscellaneous/Range.h"
144
145#include "Containers/VctrBase.h"
146#include "Containers/Span.h"
147#include "Miscellaneous/AlignedAllocator.h"
148#include "Containers/Vector.h"
149#include "Containers/Array.h"
150
151#include "Expressions/ReductionExpression.h"
152#include "Expressions/ExpressionChainBuilder.h"
153
154#include "Expressions/Filter/NoAcceleration.h"
155#include "Expressions/Filter/SIMDFilter.h"
156#include "Expressions/Filter/PlatformVectorOpsFilter.h"
157
158#include "Expressions/Generic/Map.h"
159#include "Expressions/Generic/TransformedBy.h"
160#include "Expressions/Generic/TransformedByStaticCast.h"
161
162#include "Expressions/BasicMath/Abs.h"
163#include "Expressions/BasicMath/Clamp.h"
164#include "Expressions/BasicMath/Cube.h"
165#include "Expressions/BasicMath/Sqrt.h"
166#include "Expressions/BasicMath/Square.h"
167#include "Expressions/BasicMath/Add.h"
168#include "Expressions/BasicMath/Subtract.h"
169#include "Expressions/BasicMath/Multiply.h"
170#include "Expressions/BasicMath/Divide.h"
171#include "Expressions/BasicMath/Max.h"
172#include "Expressions/BasicMath/Min.h"
173#include "Expressions/BasicMath/Mean.h"
174#include "Expressions/BasicMath/Sum.h"
175#include "Expressions/BasicMath/NormalizeSum.h"
176
177#include "Expressions/Complex/Angle.h"
178#include "Expressions/Complex/Conjugate.h"
179#include "Expressions/Complex/Imag.h"
180#include "Expressions/Complex/Real.h"
181#include "Expressions/Complex/PowerSpectrum.h"
182
183#include "Expressions/Exp/Exp.h"
184#include "Expressions/Exp/Ln.h"
185#include "Expressions/Exp/Log2.h"
186#include "Expressions/Exp/Log10.h"
187#include "Expressions/Exp/Pow.h"
188
189#include "Expressions/Trigonometric/Sin.h"
190#include "Expressions/Trigonometric/Cos.h"
191#include "Expressions/Trigonometric/Tan.h"
192#include "Expressions/Trigonometric/Sinh.h"
193#include "Expressions/Trigonometric/Cosh.h"
194#include "Expressions/Trigonometric/Tanh.h"
195#include "Expressions/Trigonometric/Asin.h"
196#include "Expressions/Trigonometric/Acos.h"
197#include "Expressions/Trigonometric/Atan.h"
198#include "Expressions/Trigonometric/Asinh.h"
199#include "Expressions/Trigonometric/Acosh.h"
200#include "Expressions/Trigonometric/Atanh.h"
201
202#include "Expressions/DSP/Decibels.h"
203
204#include "Generators/Linspace.h"
205
206#include "Miscellaneous/StdOstreamOperator.h"
207
208//==============================================================================
209// tpp files go here
210//==============================================================================
211#include "Containers/VctrBase.tpp"