// cross_product6d.c vector cross product for 6 dimensions // from 2 to 5 vectors input // // Cross product F = A x B x C x D x E // F orthogonal to A, B, C, D, and E // // 6 dimensions x,y,z,p,q,r unit vectors, F = |f1, f2, f3, f4, f5, f6| // // | x y z p q r| f1 = det|not row 1, not col 1| // |a1 a2 a3 a4 a5 a6| f2 = -det|not row 1, not col 2| // F = det|b1 b2 b3 b4 b5 b6| f3 = det|not row 1, not col 3| // |c1 c2 c3 c4 c5 c6| f4 = -det|not row 1, not col 4| // |d1 d2 d3 d4 d5 d6| f5 = det|not row 1, not col 5| // |e1 e2 e3 e4 e5 e6| f6 = det|not row 1, not col 6| // // |a2 a3 a4 a5 a6| |a1 a3 a4 a5 a6| // |b2 b3 b4 b5 b6| |b1 b3 b4 b5 b6| // f1 = det|c2 c3 c4 c5 c6| f2 = -det|c1 c3 c4 c5 c6| ... // |d2 d3 d4 d5 d6| |d1 d3 d4 d5 d6| // |e2 e3 e4 e5 e5| |e1 e3 e4 e5 e6| // // |a1 a2 a3 a4 a6| |a1 a2 a3 a4 a5| // |b1 b2 b3 b4 b6| |b1 b2 b3 b4 b5| // f5 = det|c1 c2 c3 c4 c6| f6 = -det|c1 c2 c3 c4 c5| // |d1 d2 d3 d4 d6| |d1 d2 d3 d4 d5| // |e1 e2 e3 e4 e6| |e1 e2 e3 e4 e5| // #include #include #include #include "determinant.h" static void cross6(double M6[], double F[]) { double M5[5][5]; // (n-1)*(n-1) matrix for determinant int n=6; int i, j, k, ii, jj; for(k=0; k