diff options
author | Thomas White <taw@physics.org> | 2012-10-15 18:51:37 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-10-15 18:51:37 +0200 |
commit | 4548f166eeb7d29f28793b39ede58cafaa2b64f8 (patch) | |
tree | dc251db80f0d1c40a1a4bbdda2c7c9c582e8670f /libcrystfel | |
parent | a9212e954c49c0c8e0227bf5309177b3aadbb8e1 (diff) |
Add intmat_is_identity()
Diffstat (limited to 'libcrystfel')
-rw-r--r-- | libcrystfel/src/integer_matrix.c | 31 | ||||
-rw-r--r-- | libcrystfel/src/integer_matrix.h | 3 |
2 files changed, 34 insertions, 0 deletions
diff --git a/libcrystfel/src/integer_matrix.c b/libcrystfel/src/integer_matrix.c index f975fa8b..c8849dda 100644 --- a/libcrystfel/src/integer_matrix.c +++ b/libcrystfel/src/integer_matrix.c @@ -375,3 +375,34 @@ void intmat_print(const IntegerMatrix *m) fprintf(stderr, "]\n"); } } + + +/** + * intmat_is_identity + * @m: An %IntegerMatrix + * + * Returns true if @m is an identity matrix. + * + */ +int intmat_is_identity(const IntegerMatrix *m) +{ + int i, j; + + for ( i=0; i<m->rows; i++ ) { + for ( j=0; j<m->cols; j++ ) { + + signed int v; + + v = intmat_get(m, i, j); + + if ( i == j ) { + if ( v != 1 ) return 0; + } else { + if ( v != 0 ) return 0; + } + + } + } + + return 1; +} diff --git a/libcrystfel/src/integer_matrix.h b/libcrystfel/src/integer_matrix.h index 1c930720..f413573a 100644 --- a/libcrystfel/src/integer_matrix.h +++ b/libcrystfel/src/integer_matrix.h @@ -65,6 +65,9 @@ extern IntegerMatrix *intmat_inverse(const IntegerMatrix *m); /* Determinant */ extern signed int intmat_det(const IntegerMatrix *m); +/* Is identity? */ +extern int intmat_is_identity(const IntegerMatrix *m); + /* Diagnostics */ extern void intmat_print(const IntegerMatrix *m); |