Skip to content

Instantly share code, notes, and snippets.

@untodesu
Created November 29, 2022 11:12
Show Gist options
  • Save untodesu/44e1027bba5dc890935a9d1a0b63bb75 to your computer and use it in GitHub Desktop.
Save untodesu/44e1027bba5dc890935a9d1a0b63bb75 to your computer and use it in GitHub Desktop.
#include <stdio.h>
typedef float matrix4x4_t[4][4];
static float matrix_det(const matrix4x4_t m)
{
return
m[0][3] * m[1][2] * m[2][1] * m[3][0] - m[0][2] * m[1][3] * m[2][1] * m[3][0] - m[0][3] * m[1][1] * m[2][2] * m[3][0]+m[0][1] * m[1][3] * m[2][2] * m[3][0] +
m[0][2] * m[1][1] * m[2][3] * m[3][0] - m[0][1] * m[1][2] * m[2][3] * m[3][0] - m[0][3] * m[1][2] * m[2][0] * m[3][1]+m[0][2] * m[1][3] * m[2][0] * m[3][1] +
m[0][3] * m[1][0] * m[2][2] * m[3][1] - m[0][0] * m[1][3] * m[2][2] * m[3][1] - m[0][2] * m[1][0] * m[2][3] * m[3][1]+m[0][0] * m[1][2] * m[2][3] * m[3][1] +
m[0][3] * m[1][1] * m[2][0] * m[3][2] - m[0][1] * m[1][3] * m[2][0] * m[3][2] - m[0][3] * m[1][0] * m[2][1] * m[3][2]+m[0][0] * m[1][3] * m[2][1] * m[3][2] +
m[0][1] * m[1][0] * m[2][3] * m[3][2] - m[0][0] * m[1][1] * m[2][3] * m[3][2] - m[0][2] * m[1][1] * m[2][0] * m[3][3]+m[0][1] * m[1][2] * m[2][0] * m[3][3] +
m[0][2] * m[1][0] * m[2][1] * m[3][3] - m[0][0] * m[1][2] * m[2][1] * m[3][3] - m[0][1] * m[1][0] * m[2][2] * m[3][3]+m[0][0] * m[1][1] * m[2][2] * m[3][3];
}
int main(void)
{
int i;
matrix4x4_t mat = { 0 };
printf("enter a 4x4 matrix line by line\n");
for(i = 0; i < 4; i++)
scanf("%f %f %f %f", &mat[i][0], &mat[i][1], &mat[i][2], &mat[i][3]);
printf("D = %f\n", matrix_det(mat));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment