123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #include <igl/svd.h>
- #include <cstdlib>
- #include <Accelerate/Accelerate.h>
- #include <cstdio>
- extern void print_matrix( char* desc, int m, int n, double* a, int lda );
- void print3x3(const char * s, double * a)
- {
- printf("%s =\n",s);
- for(int i = 0;i<3;i++)
- {
- for(int j = 0;j<3;j++)
- {
- printf("%g ",a[j*3+i]);
- }
- printf("\n");
- }
- printf("\n");
- }
- int main(int argc, char * argv[])
- {
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- double C[3*3] = {5242.55,3364,-0,-8170.15,-5242.56,0,-0,-0,0};
- double u[3*3],s[3],vt[3*3];
- print3x3("C",C);
-
- igl::svd3x3(C,u,s,vt);
- print3x3("u",u);
- print3x3("vt",vt);
-
- double R[3*3];
- const double _3 = 3;
- const double _1 = 1;
- cblas_dgemm(CblasColMajor, CblasNoTrans,CblasNoTrans,3,3,3,1,u,3,vt,3,1,R,3);
- print3x3("RT (transposed to be row-major)",R);
- return 0;
- }
|