Subversion Repositories dashGPS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 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
}