svd.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //// This only works on MAC ...
  2. //#ifdef __APPLE__
  3. //#include "svd.h"
  4. //#include <Accelerate/Accelerate.h>
  5. //#include <cstdlib>
  6. //#include <cstdio>
  7. //
  8. //bool igl::svd3x3(double * a, double * u, double * s, double * vt)
  9. //{
  10. // /* Locals */
  11. // int m = 3, n = 3, lda = 3, ldu = 3, ldvt = 3, info, lwork;
  12. // double wkopt;
  13. // double* work;
  14. // /* Local arrays */
  15. // /* iwork dimension should be at least 8*min(m,n) */
  16. // int iwork[8*3];
  17. // //double s[3], u[3*3], vt[3*3];
  18. // //double a[3*3] = {8,3,4,1,5,9,6,7,2};
  19. // /* Query and allocate the optimal workspace */
  20. // lwork = -1;
  21. // dgesdd_(
  22. // "Singular vectors",
  23. // &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, &wkopt, &lwork, iwork, &info);
  24. // lwork = (int)wkopt;
  25. // work = (double*)malloc( lwork*sizeof(double) );
  26. // /* Compute SVD */
  27. // dgesdd_(
  28. // "Singular vectors",
  29. // &m, &n, a, &lda, s, u, &ldu, vt, &ldvt, work, &lwork, iwork, &info );
  30. // /* Check for convergence */
  31. // if( info > 0 )
  32. // {
  33. // printf("The algorithm computing SVD failed to converge.\n" );
  34. // return false;
  35. // }
  36. // /* Free workspace */
  37. // free( (void*)work );
  38. // return true;
  39. //}
  40. //#endif