[cig-commits] r6665 - cs/cigma/trunk/sandbox/c
luis at geodynamics.org
luis at geodynamics.org
Tue Apr 24 14:52:29 PDT 2007
Author: luis
Date: 2007-04-24 14:52:29 -0700 (Tue, 24 Apr 2007)
New Revision: 6665
Added:
cs/cigma/trunk/sandbox/c/common.c
cs/cigma/trunk/sandbox/c/common.h
Log:
Holding place for common routines
Added: cs/cigma/trunk/sandbox/c/common.c
===================================================================
--- cs/cigma/trunk/sandbox/c/common.c 2007-04-24 21:48:53 UTC (rev 6664)
+++ cs/cigma/trunk/sandbox/c/common.c 2007-04-24 21:52:29 UTC (rev 6665)
@@ -0,0 +1,107 @@
+#include "common.h"
+
+double det3x3(double *m)
+{
+ //
+ // |m[0] m[1] m[2]|
+ // |m[3] m[4] m[5]|
+ // |m[6] m[7] m[8]|
+ //
+ // = m[0]*|m[4] m[5]|
+ // |m[7] m[8]|
+ //
+ // - m[1]*|m[3] m[5]|
+ // |m[6] m[8]|
+ //
+ // + m[2]*|m[3] m[4]|
+ // |m[6] m[7]|
+ //
+ //
+ return m[0]*(m[4]*m[8] - m[5]*m[7])
+ - m[1]*(m[3]*m[8] - m[5]*m[6])
+ + m[2]*(m[3]*m[7] - m[4]*m[6]);
+}
+
+double det4x4(double *m)
+{
+ // |m[ 0] m[ 1] m[ 2] m[ 3]|
+ // |m[ 4] m[ 5] m[ 6] m[ 7]|
+ // |m[ 8] m[ 9] m[10] m[11]|
+ // |m[12] m[13] m[14] m[15]|
+ //
+ //
+ // = m[0] * |m[ 5] m[ 6] m[ 7]|
+ // |m[ 9] m[10] m[11]|
+ // |m[13] m[14] m[15]|
+ //
+ // - m[1] * |m[ 4] m[ 6] m[ 7]|
+ // |m[ 8] m[10] m[11]|
+ // |m[12] m[14] m[15]|
+ //
+ // + m[2] * |m[ 4] m[ 5] m[ 7]|
+ // |m[ 8] m[ 9] m[11]|
+ // |m[12] m[13] m[15]|
+ //
+ // - m[3] * |m[ 4] m[ 5] m[ 6]|
+ // |m[ 8] m[ 9] m[10]|
+ // |m[12] m[13] m[14]|
+ //
+ //
+ // = m[0] * ( + m[5] * |m[10] m[11]|
+ // |m[14] m[15]|
+ //
+ // - m[6] * |m[ 9] m[11]|
+ // |m[13] m[15]|
+ //
+ // + m[7] * |m[ 9] m[10]|
+ // |m[13] m[14]| )
+ //
+ // - m[1] * ( + m[4] * |m[10] m[11]|
+ // |m[14] m[15]|
+ //
+ // - m[6] * |m[ 8] m[11]|
+ // |m[12] m[15]|
+ //
+ // + m[7] * |m[ 8] m[10]|
+ // |m[12] m[14]| )
+ //
+ // + m[2] * ( + m[4] * |m[ 9] m[11]|
+ // |m[13] m[15]|
+ //
+ // - m[5] * |m[ 8] m[11]|
+ // |m[12] m[15]|
+ //
+ // + m[7] * |m[ 8] m[ 9]|
+ // |m[12] m[13]| )
+ //
+ // - m[3] * ( + m[4] * |m[ 9] m[10]|
+ // |m[13] m[14]|
+ //
+ // - m[5] * |m[ 8] m[10]|
+ // |m[12] m[14]|
+ //
+ // + m[6] * |m[ 8] m[ 9]|
+ // |m[12] m[13]| )
+
+ double c[4];
+
+ c[0] = m[5]*(m[10]*m[15]-m[11]*m[14])
+ - m[6]*(m[ 9]*m[15]-m[11]*m[13])
+ + m[7]*(m[ 9]*m[14]-m[10]*m[13]);
+
+ c[1] = m[4]*(m[10]*m[15]-m[11]*m[14])
+ - m[6]*(m[ 8]*m[15]-m[11]*m[12])
+ + m[7]*(m[ 8]*m[14]-m[10]*m[12]);
+
+ c[2] = m[4]*(m[ 9]*m[15]-m[11]*m[13])
+ - m[5]*(m[ 8]*m[15]-m[11]*m[12])
+ + m[7]*(m[ 8]*m[13]-m[ 9]*m[12]);
+
+ c[3] = m[4]*(m[ 9]*m[14]-m[10]*m[13])
+ - m[5]*(m[ 8]*m[14]-m[10]*m[12])
+ + m[6]*(m[ 8]*m[13]-m[ 9]*m[12]);
+
+ return m[0]*c[0] - m[1]*c[1] + m[2]*c[2] - m[3]*c[3];
+}
+
+
Added: cs/cigma/trunk/sandbox/c/common.h
===================================================================
--- cs/cigma/trunk/sandbox/c/common.h 2007-04-24 21:48:53 UTC (rev 6664)
+++ cs/cigma/trunk/sandbox/c/common.h 2007-04-24 21:52:29 UTC (rev 6665)
@@ -0,0 +1,7 @@
+#ifndef __CIGMA_COMMON_H__
+#define __CIGMA_COMMON_H__
+
+double det3x3(double *m);
+double det4x4(double *m);
+
+#endif
More information about the cig-commits
mailing list