26#ifndef JUCE_SNAP_TO_ZERO
28 #define JUCE_SNAP_TO_ZERO(n) if (! (n < -1.0e-8f || n > 1.0e-8f)) n = 0;
30 #define JUCE_SNAP_TO_ZERO(n) ignoreUnused (n)
33class ScopedNoDenormals;
53template <
typename FloatType,
typename CountType>
57 static void JUCE_CALLTYPE
clear (FloatType* dest, CountType numValues)
noexcept;
60 static void JUCE_CALLTYPE
fill (FloatType* dest, FloatType valueToFill, CountType numValues)
noexcept;
63 static void JUCE_CALLTYPE
copy (FloatType* dest,
const FloatType* src, CountType numValues)
noexcept;
66 static void JUCE_CALLTYPE
copyWithMultiply (FloatType* dest,
const FloatType* src, FloatType multiplier, CountType numValues)
noexcept;
69 static void JUCE_CALLTYPE
add (FloatType* dest, FloatType amountToAdd, CountType numValues)
noexcept;
72 static void JUCE_CALLTYPE
add (FloatType* dest,
const FloatType* src, FloatType amount, CountType numValues)
noexcept;
75 static void JUCE_CALLTYPE
add (FloatType* dest,
const FloatType* src, CountType numValues)
noexcept;
78 static void JUCE_CALLTYPE
add (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType num)
noexcept;
81 static void JUCE_CALLTYPE
subtract (FloatType* dest,
const FloatType* src, CountType numValues)
noexcept;
84 static void JUCE_CALLTYPE
subtract (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType num)
noexcept;
87 static void JUCE_CALLTYPE
addWithMultiply (FloatType* dest,
const FloatType* src, FloatType multiplier, CountType numValues)
noexcept;
90 static void JUCE_CALLTYPE
addWithMultiply (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType num)
noexcept;
93 static void JUCE_CALLTYPE
subtractWithMultiply (FloatType* dest,
const FloatType* src, FloatType multiplier, CountType numValues)
noexcept;
96 static void JUCE_CALLTYPE
subtractWithMultiply (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType num)
noexcept;
99 static void JUCE_CALLTYPE
multiply (FloatType* dest,
const FloatType* src, CountType numValues)
noexcept;
102 static void JUCE_CALLTYPE
multiply (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType numValues)
noexcept;
105 static void JUCE_CALLTYPE
multiply (FloatType* dest, FloatType multiplier, CountType numValues)
noexcept;
108 static void JUCE_CALLTYPE
multiply (FloatType* dest,
const FloatType* src, FloatType multiplier, CountType num)
noexcept;
111 static void JUCE_CALLTYPE
negate (FloatType* dest,
const FloatType* src, CountType numValues)
noexcept;
114 static void JUCE_CALLTYPE
abs (FloatType* dest,
const FloatType* src, CountType numValues)
noexcept;
117 static void JUCE_CALLTYPE
min (FloatType* dest,
const FloatType* src, FloatType comp, CountType num)
noexcept;
120 static void JUCE_CALLTYPE
min (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType num)
noexcept;
123 static void JUCE_CALLTYPE
max (FloatType* dest,
const FloatType* src, FloatType comp, CountType num)
noexcept;
126 static void JUCE_CALLTYPE
max (FloatType* dest,
const FloatType* src1,
const FloatType* src2, CountType num)
noexcept;
129 static void JUCE_CALLTYPE
clip (FloatType* dest,
const FloatType* src, FloatType low, FloatType high, CountType num)
noexcept;
135 static FloatType JUCE_CALLTYPE
findMinimum (
const FloatType* src, CountType numValues)
noexcept;
138 static FloatType JUCE_CALLTYPE
findMaximum (
const FloatType* src, CountType numValues)
noexcept;
145template <
typename... Bases>
146struct NameForwarder :
public Bases...
148 using Bases::clear...,
151 Bases::copyWithMultiply...,
154 Bases::addWithMultiply...,
155 Bases::subtractWithMultiply...,
162 Bases::findMinAndMax...,
163 Bases::findMinimum...,
164 Bases::findMaximum...;
181 FloatVectorOperationsBase<float, size_t>,
182 FloatVectorOperationsBase<double, int>,
183 FloatVectorOperationsBase<double, size_t>>
186 static void JUCE_CALLTYPE convertFixedToFloat (
float* dest,
const int* src,
float multiplier,
int num)
noexcept;
188 static void JUCE_CALLTYPE convertFixedToFloat (
float* dest,
const int* src,
float multiplier,
size_t num)
noexcept;
191 static void JUCE_CALLTYPE enableFlushToZeroMode (
bool shouldEnable)
noexcept;
199 static void JUCE_CALLTYPE disableDenormalisedNumberSupport (
bool shouldDisable =
true)
noexcept;
202 static bool JUCE_CALLTYPE areDenormalsDisabled()
noexcept;
207 static intptr_t JUCE_CALLTYPE getFpStatusRegister()
noexcept;
208 static void JUCE_CALLTYPE setFpStatusRegister (intptr_t)
noexcept;
225 #if JUCE_USE_SSE_INTRINSICS || (JUCE_USE_ARM_NEON || (JUCE_64BIT && JUCE_ARM))
static void JUCE_CALLTYPE add(FloatType *dest, FloatType amountToAdd, CountType numValues) noexcept
static void JUCE_CALLTYPE max(FloatType *dest, const FloatType *src, FloatType comp, CountType num) noexcept
static FloatType JUCE_CALLTYPE findMinimum(const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE multiply(FloatType *dest, const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE clear(FloatType *dest, CountType numValues) noexcept
static void JUCE_CALLTYPE addWithMultiply(FloatType *dest, const FloatType *src, FloatType multiplier, CountType numValues) noexcept
static Range< FloatType > JUCE_CALLTYPE findMinAndMax(const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE copy(FloatType *dest, const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE clip(FloatType *dest, const FloatType *src, FloatType low, FloatType high, CountType num) noexcept
static FloatType JUCE_CALLTYPE findMaximum(const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE subtractWithMultiply(FloatType *dest, const FloatType *src, FloatType multiplier, CountType numValues) noexcept
static void JUCE_CALLTYPE copyWithMultiply(FloatType *dest, const FloatType *src, FloatType multiplier, CountType numValues) noexcept
static void JUCE_CALLTYPE fill(FloatType *dest, FloatType valueToFill, CountType numValues) noexcept
static void JUCE_CALLTYPE subtract(FloatType *dest, const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE abs(FloatType *dest, const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE negate(FloatType *dest, const FloatType *src, CountType numValues) noexcept
static void JUCE_CALLTYPE min(FloatType *dest, const FloatType *src, FloatType comp, CountType num) noexcept