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: LGPLv3
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 <map>
50
#include <concepts>
51
#include <cmath>
52
#include <ostream>
53
#include <bit>
54
#include <bitset>
55
#include <iterator>
56
#include <memory>
57
#include <cstring>
58
#include <ranges>
59
#include <algorithm>
60
#include <numeric>
61
#include <optional>
62
#include <functional>
63
#include <ratio>
64
65
#ifdef jassert
66
#define VCTR_ASSERT(e) jassert (e)
67
#else
68
#include <cassert>
69
#define VCTR_ASSERT(e) assert (e)
70
#endif
71
72
// Also includes Concepts/ElementConcepts.h internally
73
#include "vctr_forward_declarations.h"
74
75
#include "Miscellaneous/Config.h"
76
77
#include "Miscellaneous/CompilerSpecificAttributes.h"
78
79
#if VCTR_X64
80
#include <immintrin.h>
81
#endif
82
83
#if VCTR_ARM
84
#include <arm_neon.h>
85
#endif
86
87
#if VCTR_APPLE
88
#include <Accelerate/Accelerate.h>
89
#endif
90
91
#if VCTR_USE_IPP
92
#include <ipp.h>
93
#endif
94
95
#if VCTR_USE_GCEM
96
VCTR_START_IGNORE_WARNING_MSVC (4244)
// conversion from 'long double' to 'T', possible loss of data
97
#include <gcem.hpp>
98
VCTR_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
#include "Miscellaneous/StdRatioHelpers.h"
145
#include "Miscellaneous/BitCast.h"
146
147
#include "Containers/VctrBase.h"
148
#include "Containers/Span.h"
149
#include "Miscellaneous/AlignedAllocator.h"
150
#include "Containers/Vector.h"
151
#include "Containers/Array.h"
152
153
#include "Expressions/ReductionExpression.h"
154
#include "Expressions/ExpressionChainBuilder.h"
155
156
#include "Expressions/Filter/NoAcceleration.h"
157
#include "Expressions/Filter/SIMDFilter.h"
158
#include "Expressions/Filter/PlatformVectorOpsFilter.h"
159
160
#include "Expressions/Generic/Map.h"
161
#include "Expressions/Generic/TransformedBy.h"
162
#include "Expressions/Generic/TransformedByDynamicCast.h"
163
#include "Expressions/Generic/TransformedByStaticCast.h"
164
165
#include "Expressions/BasicMath/Abs.h"
166
#include "Expressions/BasicMath/Clamp.h"
167
#include "Expressions/BasicMath/Cube.h"
168
#include "Expressions/BasicMath/ElementwiseMax.h"
169
#include "Expressions/BasicMath/ElementwiseMin.h"
170
#include "Expressions/BasicMath/Sqrt.h"
171
#include "Expressions/BasicMath/Square.h"
172
#include "Expressions/BasicMath/Add.h"
173
#include "Expressions/BasicMath/Subtract.h"
174
#include "Expressions/BasicMath/Multiply.h"
175
#include "Expressions/BasicMath/MultiplyAccumulate.h"
176
#include "Expressions/BasicMath/MultiplySubtract.h"
177
#include "Expressions/BasicMath/Divide.h"
178
#include "Expressions/BasicMath/Max.h"
179
#include "Expressions/BasicMath/Min.h"
180
#include "Expressions/BasicMath/Mean.h"
181
#include "Expressions/BasicMath/Sum.h"
182
#include "Expressions/BasicMath/NormalizeSum.h"
183
184
#include "Expressions/Complex/Angle.h"
185
#include "Expressions/Complex/Conjugate.h"
186
#include "Expressions/Complex/Imag.h"
187
#include "Expressions/Complex/PowerSpectrum.h"
188
#include "Expressions/Complex/Real.h"
189
#include "Expressions/Complex/RealToComplex.h"
190
191
#include "Expressions/Exp/Exp.h"
192
#include "Expressions/Exp/Ln.h"
193
#include "Expressions/Exp/Log2.h"
194
#include "Expressions/Exp/Log10.h"
195
#include "Expressions/Exp/Pow.h"
196
197
#include "Expressions/Trigonometric/Sin.h"
198
#include "Expressions/Trigonometric/Cos.h"
199
#include "Expressions/Trigonometric/Tan.h"
200
#include "Expressions/Trigonometric/Sinh.h"
201
#include "Expressions/Trigonometric/Cosh.h"
202
#include "Expressions/Trigonometric/Tanh.h"
203
#include "Expressions/Trigonometric/Asin.h"
204
#include "Expressions/Trigonometric/Acos.h"
205
#include "Expressions/Trigonometric/Atan.h"
206
#include "Expressions/Trigonometric/Asinh.h"
207
#include "Expressions/Trigonometric/Acosh.h"
208
#include "Expressions/Trigonometric/Atanh.h"
209
210
#include "Expressions/DSP/FastExp.h"
211
#include "Expressions/DSP/FastLog.h"
212
#include "Expressions/DSP/Decibels.h"
213
214
#include "Generators/Linspace.h"
215
216
#include "Miscellaneous/StdOstreamOperator.h"
217
218
//==============================================================================
219
// tpp files go here
220
//==============================================================================
221
#include "Containers/VctrBase.tpp"
include
vctr
vctr.h
Generated by
1.9.6