56#define JUCE_DSP_H_INCLUDED
58#include <juce_audio_basics/juce_audio_basics.h>
59#include <juce_audio_formats/juce_audio_formats.h>
61#if defined (_M_X64) || defined (__amd64__) || defined (__SSE2__) || (defined (_M_IX86_FP) && _M_IX86_FP == 2)
63 #if defined (_M_X64) || defined (__amd64__)
70 #define JUCE_USE_SIMD 1
74 #include <immintrin.h>
79#elif defined (__ARM_NEON__) || defined (__ARM_NEON) || defined (__arm64__) || defined (__aarch64__) || defined (_M_ARM) || defined (_M_ARM64)
82 #define JUCE_USE_SIMD 1
91 #define JUCE_USE_SIMD 0
96#ifndef JUCE_VECTOR_CALLTYPE
99 #if _MSC_VER && JUCE_USE_SIMD && ! (defined (_M_X64) || defined (__amd64__))
100 #define JUCE_VECTOR_CALLTYPE __vectorcall
102 #define JUCE_VECTOR_CALLTYPE
119#ifndef JUCE_ASSERTION_FIRFILTER
120 #define JUCE_ASSERTION_FIRFILTER 1
134#ifndef JUCE_DSP_USE_INTEL_MKL
135 #define JUCE_DSP_USE_INTEL_MKL 0
150 #ifndef JUCE_DSP_USE_SHARED_FFTW
151 #define JUCE_DSP_USE_SHARED_FFTW 0
165#ifndef JUCE_DSP_USE_STATIC_FFTW
166 #define JUCE_DSP_USE_STATIC_FFTW 0
181#ifndef JUCE_DSP_ENABLE_SNAP_TO_ZERO
182 #define JUCE_DSP_ENABLE_SNAP_TO_ZERO 1
194template <
typename Type>
195using Complex = std::complex<Type>;
197template <
size_t len,
typename T>
198using FixedSizeFunction = juce::FixedSizeFunction<len, T>;
206 #if JUCE_DSP_ENABLE_SNAP_TO_ZERO
207 inline void snapToZero (
float& x)
noexcept { JUCE_SNAP_TO_ZERO (x); }
209 inline void snapToZero (
double& x)
noexcept { JUCE_SNAP_TO_ZERO (x); }
210 inline void snapToZero (
long double& x)
noexcept { JUCE_SNAP_TO_ZERO (x); }
213 inline void snapToZero ([[maybe_unused]]
float& x)
noexcept {}
215 inline void snapToZero ([[maybe_unused]]
double& x)
noexcept {}
216 inline void snapToZero ([[maybe_unused]]
long double& x)
noexcept {}
225 #include "native/juce_SIMDNativeOps_fallback.h"
228 #if defined (__i386__) || defined (__amd64__) || defined (_M_X64) || defined (_X86_) || defined (_M_IX86)
230 #include "native/juce_SIMDNativeOps_avx.h"
232 #include "native/juce_SIMDNativeOps_sse.h"
235 #include "native/juce_SIMDNativeOps_neon.h"
237 #error "SIMD register support not implemented for this platform"
240 #include "containers/juce_SIMDRegister.h"
241 #include "containers/juce_SIMDRegister_Impl.h"
244#include "maths/juce_SpecialFunctions.h"
245#include "maths/juce_Matrix.h"
246#include "maths/juce_Phase.h"
247#include "maths/juce_Polynomial.h"
248#include "maths/juce_FastMathApproximations.h"
249#include "maths/juce_LookupTable.h"
250#include "maths/juce_LogRampedValue.h"
251#include "containers/juce_AudioBlock.h"
252#include "processors/juce_ProcessContext.h"
253#include "processors/juce_ProcessorWrapper.h"
254#include "processors/juce_ProcessorChain.h"
255#include "processors/juce_ProcessorDuplicator.h"
256#include "processors/juce_IIRFilter.h"
257#include "processors/juce_IIRFilter_Impl.h"
258#include "processors/juce_FIRFilter.h"
259#include "processors/juce_StateVariableFilter.h"
260#include "processors/juce_FirstOrderTPTFilter.h"
261#include "processors/juce_Panner.h"
262#include "processors/juce_DelayLine.h"
263#include "processors/juce_Oversampling.h"
264#include "processors/juce_BallisticsFilter.h"
265#include "processors/juce_LinkwitzRileyFilter.h"
266#include "processors/juce_DryWetMixer.h"
267#include "processors/juce_StateVariableTPTFilter.h"
268#include "frequency/juce_FFT.h"
269#include "frequency/juce_Convolution.h"
270#include "frequency/juce_Windowing.h"
271#include "filter_design/juce_FilterDesign.h"
272#include "widgets/juce_Reverb.h"
273#include "widgets/juce_Bias.h"
274#include "widgets/juce_Gain.h"
275#include "widgets/juce_WaveShaper.h"
276#include "widgets/juce_Oscillator.h"
277#include "widgets/juce_LadderFilter.h"
278#include "widgets/juce_Compressor.h"
279#include "widgets/juce_NoiseGate.h"
280#include "widgets/juce_Limiter.h"
281#include "widgets/juce_Phaser.h"
282#include "widgets/juce_Chorus.h"