Skip to content

Commit 69b130c

Browse files
JBurnWorkGroovounet
authored andcommitted
Fix uninitialized in constexpr warning
Matrix multiplication functions that were recently marked as 'constexpr' in commit '1cc8e80e3ba140239196d9a4597a2ea8139a4aa5' can throw warnings about an "uninitialized variable 'Result' in constexpr function". Change-Id: I95396da9ac8a6e0dd1b6ae4e782f75446cfa70a3
1 parent af86309 commit 69b130c

File tree

9 files changed

+106
-238
lines changed

9 files changed

+106
-238
lines changed

glm/detail/func_common.inl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ namespace detail
345345
template<int c>
346346
GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a)
347347
{
348-
vec<L, T, Q> v;
348+
vec<L, T, Q> v(0.0f);
349349
for (int i = 0; i < L; ++i)
350350
v[i] = a[c];
351351
return v;

glm/detail/type_mat2x3.inl

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -433,31 +433,16 @@ namespace glm
433433
template<typename T, qualifier Q>
434434
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<3, 2, T, Q> const& m2)
435435
{
436-
T SrcA00 = m1[0][0];
437-
T SrcA01 = m1[0][1];
438-
T SrcA02 = m1[0][2];
439-
T SrcA10 = m1[1][0];
440-
T SrcA11 = m1[1][1];
441-
T SrcA12 = m1[1][2];
442-
443-
T SrcB00 = m2[0][0];
444-
T SrcB01 = m2[0][1];
445-
T SrcB10 = m2[1][0];
446-
T SrcB11 = m2[1][1];
447-
T SrcB20 = m2[2][0];
448-
T SrcB21 = m2[2][1];
449-
450-
mat<3, 3, T, Q> Result;
451-
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;
452-
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;
453-
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;
454-
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11;
455-
Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11;
456-
Result[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11;
457-
Result[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21;
458-
Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21;
459-
Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21;
460-
return Result;
436+
return mat<3, 3, T, Q>(
437+
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
438+
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
439+
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
440+
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
441+
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
442+
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],
443+
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
444+
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],
445+
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1]);
461446
}
462447

463448
template<typename T, qualifier Q>

glm/detail/type_mat2x4.inl

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -418,42 +418,23 @@ namespace glm
418418
template<typename T, qualifier Q>
419419
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<4, 2, T, Q> const& m2)
420420
{
421-
T SrcA00 = m1[0][0];
422-
T SrcA01 = m1[0][1];
423-
T SrcA02 = m1[0][2];
424-
T SrcA03 = m1[0][3];
425-
T SrcA10 = m1[1][0];
426-
T SrcA11 = m1[1][1];
427-
T SrcA12 = m1[1][2];
428-
T SrcA13 = m1[1][3];
429-
430-
T SrcB00 = m2[0][0];
431-
T SrcB01 = m2[0][1];
432-
T SrcB10 = m2[1][0];
433-
T SrcB11 = m2[1][1];
434-
T SrcB20 = m2[2][0];
435-
T SrcB21 = m2[2][1];
436-
T SrcB30 = m2[3][0];
437-
T SrcB31 = m2[3][1];
438-
439-
mat<4, 4, T, Q> Result;
440-
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01;
441-
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01;
442-
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01;
443-
Result[0][3] = SrcA03 * SrcB00 + SrcA13 * SrcB01;
444-
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11;
445-
Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11;
446-
Result[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11;
447-
Result[1][3] = SrcA03 * SrcB10 + SrcA13 * SrcB11;
448-
Result[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21;
449-
Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21;
450-
Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21;
451-
Result[2][3] = SrcA03 * SrcB20 + SrcA13 * SrcB21;
452-
Result[3][0] = SrcA00 * SrcB30 + SrcA10 * SrcB31;
453-
Result[3][1] = SrcA01 * SrcB30 + SrcA11 * SrcB31;
454-
Result[3][2] = SrcA02 * SrcB30 + SrcA12 * SrcB31;
455-
Result[3][3] = SrcA03 * SrcB30 + SrcA13 * SrcB31;
456-
return Result;
421+
return mat<4, 4, T, Q>(
422+
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1],
423+
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1],
424+
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1],
425+
m1[0][3] * m2[0][0] + m1[1][3] * m2[0][1],
426+
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1],
427+
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1],
428+
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1],
429+
m1[0][3] * m2[1][0] + m1[1][3] * m2[1][1],
430+
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1],
431+
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1],
432+
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1],
433+
m1[0][3] * m2[2][0] + m1[1][3] * m2[2][1],
434+
m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1],
435+
m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1],
436+
m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1],
437+
m1[0][3] * m2[3][0] + m1[1][3] * m2[3][1]);
457438
}
458439

459440
template<typename T, qualifier Q>

glm/detail/type_mat3x2.inl

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -450,26 +450,11 @@ namespace glm
450450
template<typename T, qualifier Q>
451451
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<2, 3, T, Q> const& m2)
452452
{
453-
const T SrcA00 = m1[0][0];
454-
const T SrcA01 = m1[0][1];
455-
const T SrcA10 = m1[1][0];
456-
const T SrcA11 = m1[1][1];
457-
const T SrcA20 = m1[2][0];
458-
const T SrcA21 = m1[2][1];
459-
460-
const T SrcB00 = m2[0][0];
461-
const T SrcB01 = m2[0][1];
462-
const T SrcB02 = m2[0][2];
463-
const T SrcB10 = m2[1][0];
464-
const T SrcB11 = m2[1][1];
465-
const T SrcB12 = m2[1][2];
466-
467-
mat<2, 2, T, Q> Result;
468-
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;
469-
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;
470-
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;
471-
Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12;
472-
return Result;
453+
return mat<2, 2, T, Q>(
454+
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
455+
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
456+
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
457+
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2]);
473458
}
474459

475460
template<typename T, qualifier Q>

glm/detail/type_mat3x3.inl

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -501,11 +501,11 @@ namespace glm
501501
typename mat<4, 4, T, Q>::col_type const SrcB1 = xyzz(m2[1]);
502502
typename mat<4, 4, T, Q>::col_type const SrcB2 = xyzz(m2[2]);
503503

504-
mat<3, 3, T, Q> Result;
505-
Result[0] = xyz(glm::fma(SrcA2, splatZ(SrcB0), glm::fma(SrcA1, splatY(SrcB0), SrcA0 * splatX(SrcB0))));
506-
Result[1] = xyz(glm::fma(SrcA2, splatZ(SrcB1), glm::fma(SrcA1, splatY(SrcB1), SrcA0 * splatX(SrcB1))));
507-
Result[2] = xyz(glm::fma(SrcA2, splatZ(SrcB2), glm::fma(SrcA1, splatY(SrcB2), SrcA0 * splatX(SrcB2))));
508-
return mat<3, 3, T, Q>(Result);
504+
typename mat<3, 3, T, Q>::col_type const tmp0 = xyz(glm::fma(SrcA2, splatZ(SrcB0), glm::fma(SrcA1, splatY(SrcB0), SrcA0 * splatX(SrcB0))));
505+
typename mat<3, 3, T, Q>::col_type const tmp1 = xyz(glm::fma(SrcA2, splatZ(SrcB1), glm::fma(SrcA1, splatY(SrcB1), SrcA0 * splatX(SrcB1))));
506+
typename mat<3, 3, T, Q>::col_type const tmp2 = xyz(glm::fma(SrcA2, splatZ(SrcB2), glm::fma(SrcA1, splatY(SrcB2), SrcA0 * splatX(SrcB2))));
507+
508+
return mat<3, 3, T, Q>(tmp0, tmp1, tmp2);
509509
}
510510
};
511511
#endif
@@ -522,26 +522,22 @@ namespace glm
522522
typename mat<3, 3, T, Q>::col_type const& SrcB1 = m2[1];
523523
typename mat<3, 3, T, Q>::col_type const& SrcB2 = m2[2];
524524

525-
mat<3, 3, T, Q> Result;
526525
// note: the following lines are decomposed to have consistent results between simd and non simd code (prevent rounding error because of operation order)
527-
//Result[0] = SrcA2 * SrcB1.z + SrcA1 * SrcB1.y + SrcA0 * SrcB1.x;
526+
//Result[0] = SrcA2 * SrcB0.z + SrcA1 * SrcB0.y + SrcA0 * SrcB0.x;
528527
//Result[1] = SrcA2 * SrcB1.z + SrcA1 * SrcB1.y + SrcA0 * SrcB1.x;
529528
//Result[2] = SrcA2 * SrcB2.z + SrcA1 * SrcB2.y + SrcA0 * SrcB2.x;
530529

531-
typename mat<3, 3, T, Q>::col_type tmp;
532-
tmp = SrcA0 * SrcB0.x;
533-
tmp += SrcA1 * SrcB0.y;
534-
tmp += SrcA2 * SrcB0.z;
535-
Result[0] = tmp;
536-
tmp = SrcA0 * SrcB1.x;
537-
tmp += SrcA1 * SrcB1.y;
538-
tmp += SrcA2 * SrcB1.z;
539-
Result[1] = tmp;
540-
tmp = SrcA0 * SrcB2.x;
541-
tmp += SrcA1 * SrcB2.y;
542-
tmp += SrcA2 * SrcB2.z;
543-
Result[2] = tmp;
544-
return Result;
530+
typename mat<3, 3, T, Q>::col_type tmp0 = SrcA0 * SrcB0.x;
531+
tmp0 += SrcA1 * SrcB0.y;
532+
tmp0 += SrcA2 * SrcB0.z;
533+
typename mat<3, 3, T, Q>::col_type tmp1 = SrcA0 * SrcB1.x;
534+
tmp1 += SrcA1 * SrcB1.y;
535+
tmp1 += SrcA2 * SrcB1.z;
536+
typename mat<3, 3, T, Q>::col_type tmp2 = SrcA0 * SrcB2.x;
537+
tmp2 += SrcA1 * SrcB2.y;
538+
tmp2 += SrcA2 * SrcB2.z;
539+
540+
return mat<3, 3, T, Q>(tmp0, tmp1, tmp2);
545541
}
546542
};
547543
}

glm/detail/type_mat3x4.inl

Lines changed: 17 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -466,50 +466,23 @@ namespace glm
466466
template<typename T, qualifier Q>
467467
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<4, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<4, 3, T, Q> const& m2)
468468
{
469-
const T SrcA00 = m1[0][0];
470-
const T SrcA01 = m1[0][1];
471-
const T SrcA02 = m1[0][2];
472-
const T SrcA03 = m1[0][3];
473-
const T SrcA10 = m1[1][0];
474-
const T SrcA11 = m1[1][1];
475-
const T SrcA12 = m1[1][2];
476-
const T SrcA13 = m1[1][3];
477-
const T SrcA20 = m1[2][0];
478-
const T SrcA21 = m1[2][1];
479-
const T SrcA22 = m1[2][2];
480-
const T SrcA23 = m1[2][3];
481-
482-
const T SrcB00 = m2[0][0];
483-
const T SrcB01 = m2[0][1];
484-
const T SrcB02 = m2[0][2];
485-
const T SrcB10 = m2[1][0];
486-
const T SrcB11 = m2[1][1];
487-
const T SrcB12 = m2[1][2];
488-
const T SrcB20 = m2[2][0];
489-
const T SrcB21 = m2[2][1];
490-
const T SrcB22 = m2[2][2];
491-
const T SrcB30 = m2[3][0];
492-
const T SrcB31 = m2[3][1];
493-
const T SrcB32 = m2[3][2];
494-
495-
mat<4, 4, T, Q> Result;
496-
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02;
497-
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02;
498-
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02;
499-
Result[0][3] = SrcA03 * SrcB00 + SrcA13 * SrcB01 + SrcA23 * SrcB02;
500-
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12;
501-
Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12;
502-
Result[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11 + SrcA22 * SrcB12;
503-
Result[1][3] = SrcA03 * SrcB10 + SrcA13 * SrcB11 + SrcA23 * SrcB12;
504-
Result[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21 + SrcA20 * SrcB22;
505-
Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22;
506-
Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22;
507-
Result[2][3] = SrcA03 * SrcB20 + SrcA13 * SrcB21 + SrcA23 * SrcB22;
508-
Result[3][0] = SrcA00 * SrcB30 + SrcA10 * SrcB31 + SrcA20 * SrcB32;
509-
Result[3][1] = SrcA01 * SrcB30 + SrcA11 * SrcB31 + SrcA21 * SrcB32;
510-
Result[3][2] = SrcA02 * SrcB30 + SrcA12 * SrcB31 + SrcA22 * SrcB32;
511-
Result[3][3] = SrcA03 * SrcB30 + SrcA13 * SrcB31 + SrcA23 * SrcB32;
512-
return Result;
469+
return mat<4, 4, T, Q>(
470+
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2],
471+
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2],
472+
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2],
473+
m1[0][3] * m2[0][0] + m1[1][3] * m2[0][1] + m1[2][3] * m2[0][2],
474+
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2],
475+
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2],
476+
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2],
477+
m1[0][3] * m2[1][0] + m1[1][3] * m2[1][1] + m1[2][3] * m2[1][2],
478+
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2],
479+
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2],
480+
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2],
481+
m1[0][3] * m2[2][0] + m1[1][3] * m2[2][1] + m1[2][3] * m2[2][2],
482+
m1[0][0] * m2[3][0] + m1[1][0] * m2[3][1] + m1[2][0] * m2[3][2],
483+
m1[0][1] * m2[3][0] + m1[1][1] * m2[3][1] + m1[2][1] * m2[3][2],
484+
m1[0][2] * m2[3][0] + m1[1][2] * m2[3][1] + m1[2][2] * m2[3][2],
485+
m1[0][3] * m2[3][0] + m1[1][3] * m2[3][1] + m1[2][3] * m2[3][2]);
513486
}
514487

515488
template<typename T, qualifier Q>

glm/detail/type_mat4x2.inl

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -486,30 +486,11 @@ namespace glm
486486
template<typename T, qualifier Q>
487487
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<2, 4, T, Q> const& m2)
488488
{
489-
T const SrcA00 = m1[0][0];
490-
T const SrcA01 = m1[0][1];
491-
T const SrcA10 = m1[1][0];
492-
T const SrcA11 = m1[1][1];
493-
T const SrcA20 = m1[2][0];
494-
T const SrcA21 = m1[2][1];
495-
T const SrcA30 = m1[3][0];
496-
T const SrcA31 = m1[3][1];
497-
498-
T const SrcB00 = m2[0][0];
499-
T const SrcB01 = m2[0][1];
500-
T const SrcB02 = m2[0][2];
501-
T const SrcB03 = m2[0][3];
502-
T const SrcB10 = m2[1][0];
503-
T const SrcB11 = m2[1][1];
504-
T const SrcB12 = m2[1][2];
505-
T const SrcB13 = m2[1][3];
506-
507-
mat<2, 2, T, Q> Result;
508-
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03;
509-
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03;
510-
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13;
511-
Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12 + SrcA31 * SrcB13;
512-
return Result;
489+
return mat<2, 2, T, Q>(
490+
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],
491+
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],
492+
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],
493+
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3]);
513494
}
514495

515496
template<typename T, qualifier Q>

glm/detail/type_mat4x3.inl

Lines changed: 10 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -505,43 +505,16 @@ namespace glm
505505
template<typename T, qualifier Q>
506506
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<3, 4, T, Q> const& m2)
507507
{
508-
T const SrcA00 = m1[0][0];
509-
T const SrcA01 = m1[0][1];
510-
T const SrcA02 = m1[0][2];
511-
T const SrcA10 = m1[1][0];
512-
T const SrcA11 = m1[1][1];
513-
T const SrcA12 = m1[1][2];
514-
T const SrcA20 = m1[2][0];
515-
T const SrcA21 = m1[2][1];
516-
T const SrcA22 = m1[2][2];
517-
T const SrcA30 = m1[3][0];
518-
T const SrcA31 = m1[3][1];
519-
T const SrcA32 = m1[3][2];
520-
521-
T const SrcB00 = m2[0][0];
522-
T const SrcB01 = m2[0][1];
523-
T const SrcB02 = m2[0][2];
524-
T const SrcB03 = m2[0][3];
525-
T const SrcB10 = m2[1][0];
526-
T const SrcB11 = m2[1][1];
527-
T const SrcB12 = m2[1][2];
528-
T const SrcB13 = m2[1][3];
529-
T const SrcB20 = m2[2][0];
530-
T const SrcB21 = m2[2][1];
531-
T const SrcB22 = m2[2][2];
532-
T const SrcB23 = m2[2][3];
533-
534-
mat<3, 3, T, Q> Result;
535-
Result[0][0] = SrcA00 * SrcB00 + SrcA10 * SrcB01 + SrcA20 * SrcB02 + SrcA30 * SrcB03;
536-
Result[0][1] = SrcA01 * SrcB00 + SrcA11 * SrcB01 + SrcA21 * SrcB02 + SrcA31 * SrcB03;
537-
Result[0][2] = SrcA02 * SrcB00 + SrcA12 * SrcB01 + SrcA22 * SrcB02 + SrcA32 * SrcB03;
538-
Result[1][0] = SrcA00 * SrcB10 + SrcA10 * SrcB11 + SrcA20 * SrcB12 + SrcA30 * SrcB13;
539-
Result[1][1] = SrcA01 * SrcB10 + SrcA11 * SrcB11 + SrcA21 * SrcB12 + SrcA31 * SrcB13;
540-
Result[1][2] = SrcA02 * SrcB10 + SrcA12 * SrcB11 + SrcA22 * SrcB12 + SrcA32 * SrcB13;
541-
Result[2][0] = SrcA00 * SrcB20 + SrcA10 * SrcB21 + SrcA20 * SrcB22 + SrcA30 * SrcB23;
542-
Result[2][1] = SrcA01 * SrcB20 + SrcA11 * SrcB21 + SrcA21 * SrcB22 + SrcA31 * SrcB23;
543-
Result[2][2] = SrcA02 * SrcB20 + SrcA12 * SrcB21 + SrcA22 * SrcB22 + SrcA32 * SrcB23;
544-
return Result;
508+
return mat<3, 3, T, Q>(
509+
m1[0][0] * m2[0][0] + m1[1][0] * m2[0][1] + m1[2][0] * m2[0][2] + m1[3][0] * m2[0][3],
510+
m1[0][1] * m2[0][0] + m1[1][1] * m2[0][1] + m1[2][1] * m2[0][2] + m1[3][1] * m2[0][3],
511+
m1[0][2] * m2[0][0] + m1[1][2] * m2[0][1] + m1[2][2] * m2[0][2] + m1[3][2] * m2[0][3],
512+
m1[0][0] * m2[1][0] + m1[1][0] * m2[1][1] + m1[2][0] * m2[1][2] + m1[3][0] * m2[1][3],
513+
m1[0][1] * m2[1][0] + m1[1][1] * m2[1][1] + m1[2][1] * m2[1][2] + m1[3][1] * m2[1][3],
514+
m1[0][2] * m2[1][0] + m1[1][2] * m2[1][1] + m1[2][2] * m2[1][2] + m1[3][2] * m2[1][3],
515+
m1[0][0] * m2[2][0] + m1[1][0] * m2[2][1] + m1[2][0] * m2[2][2] + m1[3][0] * m2[2][3],
516+
m1[0][1] * m2[2][0] + m1[1][1] * m2[2][1] + m1[2][1] * m2[2][2] + m1[3][1] * m2[2][3],
517+
m1[0][2] * m2[2][0] + m1[1][2] * m2[2][1] + m1[2][2] * m2[2][2] + m1[3][2] * m2[2][3]);
545518
}
546519

547520
template<typename T, qualifier Q>

0 commit comments

Comments
 (0)