Subversion Repositories dashGPS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #include "ref.h"
  2.  
  3. arm_status ref_mat_inverse_f32(
  4.   const arm_matrix_instance_f32 * pSrc,
  5.   arm_matrix_instance_f32 * pDst)
  6. {
  7.         float32_t det;
  8.         uint32_t i, size;
  9.         arm_matrix_instance_f32 tmp;
  10.        
  11.         tmp.numCols = pSrc->numCols;
  12.         tmp.numRows = pSrc->numRows;
  13.         tmp.pData = scratchArray;
  14.        
  15.         det = ref_detrm(pSrc->pData,scratchArray,pSrc->numCols);
  16.        
  17.         size = pSrc->numCols * pSrc->numCols;
  18.        
  19.         ref_cofact(pSrc->pData,scratchArray,scratchArray + size,pSrc->numCols);
  20.        
  21.         ref_mat_trans_f32(&tmp,pDst);  
  22.        
  23.         for(i=0;i<size;i++)
  24.         {
  25.                 pDst->pData[i] /= det;
  26.         }
  27.        
  28.         return ARM_MATH_SUCCESS;
  29. }
  30.  
  31. arm_status ref_mat_inverse_f64(
  32.   const arm_matrix_instance_f64 * pSrc,
  33.   arm_matrix_instance_f64 * pDst)
  34. {
  35.         float64_t det;
  36.         uint32_t i, size;
  37.         arm_matrix_instance_f64 tmp;
  38.        
  39.         tmp.numCols = pSrc->numCols;
  40.         tmp.numRows = pSrc->numRows;
  41.         tmp.pData = (float64_t*)scratchArray;
  42.        
  43.         det = ref_detrm64(pSrc->pData,(float64_t*)scratchArray,pSrc->numCols);
  44.        
  45.         size = pSrc->numCols * pSrc->numCols;
  46.        
  47.         ref_cofact64(pSrc->pData,(float64_t*)scratchArray,(float64_t*)scratchArray + size,pSrc->numCols);
  48.        
  49.         ref_mat_trans_f64(&tmp,pDst);  
  50.        
  51.         for(i=0;i<size;i++)
  52.         {
  53.                 pDst->pData[i] /= det;
  54.         }
  55.        
  56.         return ARM_MATH_SUCCESS;
  57. }
  58.