7 for (
size_t i = 0; i <= 3; i++)
10 this->matrix.push_back(tmp);
16 for (
size_t i = 0; i <= 3; i++)
18 this->matrix.push_back(other[i]);
24 for (
size_t i = 0; i <= 3; i++)
26 this->matrix.push_back(other[i]);
38 for (
size_t i = 0; i <= 3; i++)
40 this->matrix.push_back(other[i]);
48 return this->matrix[index];
53 return this->matrix[index];
59 result = result * (-1);
67 for (
size_t i = 0; i <= 3; i++)
69 for (
size_t j = 0; j <= 3; j++)
71 result[i][j] = result[i][j] * value;
81 for (
size_t i = 0; i <= 3; i++)
84 for (
size_t j = 0; j <= 3; j++)
86 GVector column(other[0][j], other[1][j], other[2][j], other[3][j]);
88 for (
size_t k = 0; k <= 3; k++)
89 sum += row[k] * column[k];
100 for (
int i = 0; i <= 3; ++i)
102 for (
int j = 0; j <= 3; ++j)
111 for (
int k = 0; k <= 3; ++k)
113 if (fabs(tmp[k][k]) < 1e-8)
115 bool changed =
false;
116 for (
int i = k + 1; i <= 3; ++i)
118 if (fabs(tmp[i][k]) > 1e-8)
120 std::swap(tmp[k], tmp[i]);
121 std::swap(result[k], result[i]);
135 double div = tmp[k][k];
136 for (
int j = 0; j <= 3; ++j)
142 for (
int i = k + 1; i <= 3; ++i)
144 double multi = tmp[i][k];
145 for (
int j = 0; j <= 3; ++j)
147 tmp[i][j] -= multi * tmp[k][j];
148 result[i][j] -= multi * result[k][j];
153 for (
int k = 3; k > 0; --k)
155 for (
int i = k - 1; i + 1 > 0; --i)
157 double multi = tmp[i][k];
158 for (
int j = 0; j <= 3; ++j)
160 tmp[i][j] -= multi * tmp[k][j];
161 result[i][j] -= multi * result[k][j];
174 for (
int i = 0; i <= 3; i++)
176 for (
int j = 0; j <= 3; j++)
178 result[i][j] = this->matrix[j][i];
GVector & operator[](const unsigned long index)
GMatrix operator*(const double value)
GMatrix & operator=(GMatrix other)