31template <
typename ElementType>
36 for (
size_t i = 0;
i <
size; ++
i)
42template <
typename ElementType>
50 for (
size_t i = 0;
i <
size; ++
i)
53 for (
size_t i = 1;
i <
size; ++
i)
60template <
typename ElementType>
68 for (
size_t i = 0;
i <
size; ++
i)
71 for (
size_t i = 1;
i <
size; ++
i)
79template <
typename ElementType>
84 auto*
p =
data.getRawDataPointer();
86 for (
size_t i = 0;
i <
rows; ++
i)
89 std::swap (
p[offset + columnOne],
p[offset + columnTwo]);
95template <
typename ElementType>
100 auto offset1 = rowOne *
columns;
101 auto offset2 = rowTwo *
columns;
103 auto*
p =
data.getRawDataPointer();
106 std::swap (
p[offset1 +
i],
p[offset2 +
i]);
112template <
typename ElementType>
120 size_t offsetMat = 0, offsetlhs = 0;
122 auto* dst =
result.getRawDataPointer();
126 for (
size_t i = 0;
i <
n; ++
i)
128 size_t offsetrhs = 0;
130 for (
size_t k = 0;
k <
p; ++
k)
132 auto ak =
a[offsetlhs++];
134 for (
size_t j = 0;
j <
m; ++
j)
135 dst[offsetMat +
j] += ak *
b[offsetrhs +
j];
147template <
typename ElementType>
150 if (
a.rows !=
b.rows ||
a.columns !=
b.columns)
153 tolerance = std::abs (tolerance);
155 auto* bPtr =
b.begin();
156 for (
auto aValue :
a)
157 if (std::abs (aValue - *bPtr++) > tolerance)
164template <
typename ElementType>
168 jassert (
n ==
n &&
n ==
b.rows &&
b.isOneColumnVector());
170 auto*
x =
b.getRawDataPointer();
171 const auto&
A = *
this;
177 auto denominator =
A (0,0);
179 if (denominator == 0)
182 b (0, 0) /= denominator;
188 auto denominator =
A (0, 0) *
A (1, 1) -
A (0, 1) *
A (1, 0);
190 if (denominator == 0)
193 auto factor = (1 / denominator);
194 auto b0 =
x[0], b1 =
x[1];
196 x[0] = factor * (
A (1, 1) * b0 -
A (0, 1) * b1);
197 x[1] = factor * (
A (0, 0) * b1 -
A (1, 0) * b0);
203 auto denominator =
A (0, 0) * (
A (1, 1) *
A (2, 2) -
A (1, 2) *
A (2, 1))
204 +
A (0, 1) * (
A (1, 2) *
A (2, 0) -
A (1, 0) *
A (2, 2))
205 +
A (0, 2) * (
A (1, 0) *
A (2, 1) -
A (1, 1) *
A (2, 0));
207 if (denominator == 0)
210 auto factor = 1 / denominator;
211 auto b0 =
x[0], b1 =
x[1], b2 =
x[2];
213 x[0] = ( (
A (0, 1) *
A (1, 2) -
A (0, 2) *
A (1, 1)) * b2
214 + (-
A (0, 1) *
A (2, 2) +
A (0, 2) *
A (2, 1)) * b1
215 + (
A (1, 1) *
A (2, 2) -
A (1, 2) *
A (2, 1)) * b0) * factor;
217 x[1] = -( (
A (0, 0) *
A (1, 2) -
A (0, 2) *
A (1, 0)) * b2
218 + (-
A (0, 0) *
A (2, 2) +
A (0, 2) *
A (2, 0)) * b1
219 + (
A (1, 0) *
A (2, 2) -
A (1, 2) *
A (2, 0)) * b0) * factor;
221 x[2] = ( (
A (0, 0) *
A (1, 1) -
A (0, 1) *
A (1, 0)) * b2
222 + (-
A (0, 0) *
A (2, 1) +
A (0, 1) *
A (2, 0)) * b1
223 + (
A (1, 0) *
A (2, 1) -
A (1, 1) *
A (2, 0)) * b0) * factor;
232 for (
size_t j = 0;
j <
n; ++
j)
237 while (
i <
n &&
M (
i,
j) == 0)
243 for (
size_t k = 0;
k <
n; ++
k)
249 auto t = 1 /
M (
j,
j);
251 for (
size_t k = 0;
k <
n; ++
k)
256 for (
size_t k =
j + 1;
k <
n; ++
k)
260 for (
size_t l = 0;
l <
n; ++
l)
267 for (
int k =
static_cast<int> (
n) - 2;
k >= 0; --
k)
268 for (
size_t i =
static_cast<size_t> (
k) + 1;
i <
n; ++
i)
269 x[
k] -=
M (
static_cast<size_t> (
k),
i) *
x[
i];
277template <
typename ElementType>
283 auto*
p =
data.begin();
285 for (
size_t i = 0;
i <
rows; ++
i)
296 sizeMax = ((sizeMax + 1) / 4 + 1) * 4;
300 auto n =
static_cast<size_t> (entries.
size());
302 for (
size_t i = 0;
i <
n; ++
i)
304 result << entries[(
int)
i].paddedRight (
' ', sizeMax);
Type jmax(const Type a, const Type b)
Definition MathsFunctions.h:48
uint8_t a
Definition Spc_Cpu.h:141
Definition juce_MemoryOutputStream.h:36
Definition juce_StringArray.h:35
int size() const noexcept
Definition juce_StringArray.h:136
void add(String stringToAdd)
Definition juce_StringArray.cpp:136
Definition juce_String.h:53
int length() const noexcept
Definition juce_String.cpp:511
Definition juce_Matrix.h:41
Matrix & swapRows(size_t rowOne, size_t rowTwo) noexcept
Definition juce_Matrix.cpp:96
size_t getNumRows() const noexcept
Definition juce_Matrix.h:92
static bool compare(const Matrix &a, const Matrix &b, ElementType tolerance=0) noexcept
Definition juce_Matrix.cpp:148
Matrix & swapColumns(size_t columnOne, size_t columnTwo) noexcept
Definition juce_Matrix.cpp:80
Matrix(size_t numRows, size_t numColumns)
Definition juce_Matrix.h:45
static Matrix hankel(const Matrix &vector, size_t size, size_t offset=0)
Definition juce_Matrix.cpp:61
size_t columns
Definition juce_Matrix.h:247
Array< size_t > dataAcceleration
Definition juce_Matrix.h:245
static Matrix identity(size_t size)
Definition juce_Matrix.cpp:32
bool solve(Matrix &b) const noexcept
Definition juce_Matrix.cpp:165
static Matrix toeplitz(const Matrix &vector, size_t size)
Definition juce_Matrix.cpp:43
ElementType * getRawDataPointer() noexcept
Definition juce_Matrix.h:130
size_t getNumColumns() const noexcept
Definition juce_Matrix.h:95
size_t rows
Definition juce_Matrix.h:247
String toString() const
Definition juce_Matrix.cpp:278
Array< ElementType > data
Definition juce_Matrix.h:244
int * l
Definition inflate.c:1579
unsigned * m
Definition inflate.c:1559
struct huft * t
Definition inflate.c:943
register unsigned k
Definition inflate.c:946
register unsigned j
Definition inflate.c:1576
struct huft * u[BMAX]
Definition inflate.c:1583
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
#define A(x)
Definition lice_arc.cpp:13
Definition juce_AudioBlock.h:29
Definition carla_juce.cpp:31
NewLine newLine
Definition juce_String.cpp:28
#define M
Definition nseel-cfunc.c:37
int n
Definition crypt.c:458
uch * p
Definition crypt.c:594
int result
Definition process.c:1455
typedef int(UZ_EXP MsgFn)()