This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Complex matrix inverse using Cholesky library function

Hi,

I am using Cholesky decomposition library function to find the inverse of a positive definite complex  matrix (of size 12 x 12). However the output "X" from the function is a vector of only 12 values. Can you please advice how to get the complete 12 x 12 inverse output values from these library functions? From my understanding of the algorithm, I am giving input vector b as {1,0,0,0,0,0,0,0,0,0,0,0}. Is this vector size and values correct?

I am using the following functions to compute the inverse of a 12 x 12 positive definite complex matrix:

1. DSPF_sp_cholesky_cmplx(1, 12, A, L);

2.   DSPF_sp_cholesky_solver_cmplx(12, L, Y, b,inv_A);

where A is the input matrix, L is the generated Lower triangular matrix, Y is the intermediate values computed, b is an input vector, inv_A is an output vector.

Thanks!

  • Hi Gopal,

    Thank you for the post and understanding.

    Q: I am using Cholesky decomposition library function to find the inverse of a positive definite complex  matrix (of size 12 x 12). However the output "X" from the function is a vector of only 12 values. Can you please advice how to get the complete 12 x 12 inverse output values from these library functions? From my understanding of the algorithm, I am giving input vector b as {1,0,0,0,0,0,0,0,0,0,0,0}. Is this vector size and values correct?

    Are these library functions part of TI package? If yes, could you please mention the package used. We only support TI released library packages.

  • Hi Raja,

    Yes, we are using the functions available in TI DSP library (dsplib_c66x_3_4_0_0 version).

    From this library I am trying to use "DSPF_sp_cholesky_cmplx" function.

    Thanks!

  • Gopal,
    The DSPF_sp_cholesky_cmplx function test bench support order 3, 32 and 64. For order 12 in the DSPF_sp_cholesky_cmplx_d.c file you can chnage #define CYCLE_FORMULA_ORDER_PT1 32 from 32 to 12.
    RegardsAsheesh
  • Hi Asheesh,

    Thanks for your response. I am giving a 12x12 complex matrix as an input to the following Cholesky functions.

    1. DSPF_sp_cholesky_cmplx(1, 12, A, L);  where Input Matrix A is 2*12*12, L is 2*12*12

    2.   DSPF_sp_cholesky_solver_cmplx(12, L, Y, b,inv_A); where Y is 2*12, b is 2*12 and inv_A is 2*12

     I expect to receive an output (Matric Inverse) of size 12 x 12 as well (Similar to LU Decomposition library function). I am attaching the outputs I got for Cholesky and LUD to this post for your reference.

    I changed the #define CYCLE_FORMULA_ORDER_PT1 32 from 32 to 12. But I am still getting the same output (only 12 values) for inv_A.

    Please advice if you think that I am not able to interpret the library function correctly.

    Thanks!

    Cholesky Output:

     inv_A[0][1]: 0.152098 +0.000000i

     inv_A[2][3]: 0.008836 +0.000018i

     inv_A[4][5]: -0.008836 -0.000037i

     inv_A[6][7]: 0.000057 -0.008837i

     inv_A[8][9]: 0.000075 -0.008837i

     inv_A[10][11]: -0.000094 +0.008835i

     inv_A[12][13]: -0.000112 +0.008835i

     inv_A[14][15]: -0.008835 -0.000130i

     inv_A[16][17]: -0.000151 +0.008834i

     inv_A[18][19]: -0.000169 +0.008834i

     inv_A[20][21]: 0.008832 +0.000187i

     inv_A[22][23]: -0.008831 -0.000206i

    LU Decomposition Output:

     inv_A[0][1]: 0.152098 +0.000000i

     inv_A[2][3]: 0.008836 -0.000018i

     inv_A[4][5]: -0.008836 +0.000037i

     inv_A[6][7]: 0.000057 +0.008837i

     inv_A[8][9]: 0.000075 +0.008837i

     inv_A[10][11]: -0.000094 -0.008835i

     inv_A[12][13]: -0.000112 -0.008835i

     inv_A[14][15]: -0.008835 +0.000130i

     inv_A[16][17]: -0.000151 -0.008834i

     inv_A[18][19]: -0.000169 -0.008834i

     inv_A[20][21]: 0.008832 -0.000187i

     inv_A[22][23]: -0.008831 +0.000206i

     

     inv_A[24][25]: 0.008836 +0.000018i

     inv_A[26][27]: 0.152098 +0.000000i

     inv_A[28][29]: 0.008836 -0.000018i

     inv_A[30][31]: -0.000036 -0.008836i

     inv_A[32][33]: -0.000057 -0.008836i

     inv_A[34][35]: 0.000075 +0.008837i

     inv_A[36][37]: 0.000094 +0.008834i

     inv_A[38][39]: 0.008835 -0.000112i

     inv_A[40][41]: 0.000130 +0.008835i

     inv_A[42][43]: 0.000151 +0.008833i

     inv_A[44][45]: -0.008834 +0.000169i

     inv_A[46][47]: 0.008832 -0.000187i

     

     inv_A[48][49]: -0.008836 -0.000037i

     inv_A[50][51]: 0.008836 +0.000018i

     inv_A[52][53]: 0.152099 -0.000000i

     inv_A[54][55]: 0.000018 +0.008836i

     inv_A[56][57]: 0.000036 +0.008836i

     inv_A[58][59]: -0.000057 -0.008836i

     inv_A[60][61]: -0.000075 -0.008837i

     inv_A[62][63]: -0.008834 +0.000094i

     inv_A[64][65]: -0.000112 -0.008835i

     inv_A[66][67]: -0.000130 -0.008835i

     inv_A[68][69]: 0.008833 -0.000151i

     inv_A[70][71]: -0.008834 +0.000169i

     

     inv_A[72][73]: 0.000057 -0.008837i

     inv_A[74][75]: -0.000036 +0.008836i

     inv_A[76][77]: 0.000018 -0.008836i

     inv_A[78][79]: 0.152099 +0.000000i

     inv_A[80][81]: -0.008836 +0.000018i

     inv_A[82][83]: 0.008836 -0.000036i

     inv_A[84][85]: 0.008836 -0.000057i

     inv_A[86][87]: -0.000076 -0.008836i

     inv_A[88][89]: 0.008834 -0.000094i

     inv_A[90][91]: 0.008835 -0.000112i

     inv_A[92][93]: 0.000130 +0.008835i

     inv_A[94][95]: -0.000151 -0.008834i

     

     inv_A[96][97]: 0.000075 -0.008837i

     inv_A[98][99]: -0.000057 +0.008836i

     inv_A[100][101]: 0.000036 -0.008836i

     inv_A[102][103]: -0.008836 -0.000018i

     inv_A[104][105]: 0.152099 +0.000000i

     inv_A[106][107]: 0.008836 -0.000018i

     inv_A[108][109]: 0.008836 -0.000037i

     inv_A[110][111]: -0.000057 -0.008836i

     inv_A[112][113]: 0.008836 -0.000076i

     inv_A[114][115]: 0.008834 -0.000094i

     inv_A[116][117]: 0.000112 +0.008835i

     inv_A[118][119]: -0.000130 -0.008835i

     

     inv_A[120][121]: -0.000094 +0.008835i

     inv_A[122][123]: 0.000075 -0.008837i

     inv_A[124][125]: -0.000057 +0.008836i

     inv_A[126][127]: 0.008836 +0.000036i

     inv_A[128][129]: 0.008836 +0.000018i

     inv_A[130][131]: 0.152099 +0.000000i

     inv_A[132][133]: -0.008836 +0.000018i

     inv_A[134][135]: 0.000037 +0.008836i

     inv_A[136][137]: -0.008836 +0.000057i

     inv_A[138][139]: -0.008837 +0.000075i

     inv_A[140][141]: -0.000094 -0.008834i

     inv_A[142][143]: 0.000112 +0.008835i

     

     inv_A[144][145]: -0.000112 +0.008835i

     inv_A[146][147]: 0.000094 -0.008834i

     inv_A[148][149]: -0.000075 +0.008837i

     inv_A[150][151]: 0.008836 +0.000057i

     inv_A[152][153]: 0.008836 +0.000037i

     inv_A[154][155]: -0.008836 -0.000018i

     inv_A[156][157]: 0.152099 +0.000000i

     inv_A[158][159]: 0.000018 +0.008836i

     inv_A[160][161]: -0.008836 +0.000036i

     inv_A[162][163]: -0.008836 +0.000057i

     inv_A[164][165]: -0.000075 -0.008837i

     inv_A[166][167]: 0.000094 +0.008835i

     

     inv_A[168][169]: -0.008835 -0.000130i

     inv_A[170][171]: 0.008835 +0.000112i

     inv_A[172][173]: -0.008834 -0.000094i

     inv_A[174][175]: -0.000076 +0.008836i

     inv_A[176][177]: -0.000057 +0.008836i

     inv_A[178][179]: 0.000037 -0.008836i

     inv_A[180][181]: 0.000018 -0.008836i

     inv_A[182][183]: 0.152099 +0.000000i

     inv_A[184][185]: -0.000018 -0.008836i

     inv_A[186][187]: -0.000036 -0.008836i

     inv_A[188][189]: 0.008836 -0.000057i

     inv_A[190][191]: -0.008837 +0.000075i

     

     inv_A[192][193]: -0.000151 +0.008834i

     inv_A[194][195]: 0.000130 -0.008835i

     inv_A[196][197]: -0.000112 +0.008835i

     inv_A[198][199]: 0.008834 +0.000094i

     inv_A[200][201]: 0.008836 +0.000076i

     inv_A[202][203]: -0.008836 -0.000057i

     inv_A[204][205]: -0.008836 -0.000036i

     inv_A[206][207]: -0.000018 +0.008836i

     inv_A[208][209]: 0.152099 -0.000000i

     inv_A[210][211]: -0.008836 +0.000018i

     inv_A[212][213]: -0.000036 -0.008836i

     inv_A[214][215]: 0.000057 +0.008837i

     

     inv_A[216][217]: -0.000169 +0.008834i

     inv_A[218][219]: 0.000151 -0.008833i

     inv_A[220][221]: -0.000130 +0.008835i

     inv_A[222][223]: 0.008835 +0.000112i

     inv_A[224][225]: 0.008834 +0.000094i

     inv_A[226][227]: -0.008837 -0.000075i

     inv_A[228][229]: -0.008836 -0.000057i

     inv_A[230][231]: -0.000036 +0.008836i

     inv_A[232][233]: -0.008836 -0.000018i

     inv_A[234][235]: 0.152099 +0.000000i

     inv_A[236][237]: -0.000018 -0.008836i

     inv_A[238][239]: 0.000037 +0.008836i

     

     inv_A[240][241]: 0.008832 +0.000187i

     inv_A[242][243]: -0.008834 -0.000169i

     inv_A[244][245]: 0.008833 +0.000151i

     inv_A[246][247]: 0.000130 -0.008835i

     inv_A[248][249]: 0.000112 -0.008835i

     inv_A[250][251]: -0.000094 +0.008834i

     inv_A[252][253]: -0.000075 +0.008837i

     inv_A[254][255]: 0.008836 +0.000057i

     inv_A[256][257]: -0.000036 +0.008836i

     inv_A[258][259]: -0.000018 +0.008836i

     inv_A[260][261]: 0.152098 -0.000000i

     inv_A[262][263]: 0.008836 -0.000018i

     

     inv_A[264][265]: -0.008831 -0.000206i

     inv_A[266][267]: 0.008832 +0.000187i

     inv_A[268][269]: -0.008834 -0.000169i

     inv_A[270][271]: -0.000151 +0.008834i

     inv_A[272][273]: -0.000130 +0.008835i

     inv_A[274][275]: 0.000112 -0.008835i

     inv_A[276][277]: 0.000094 -0.008835i

     inv_A[278][279]: -0.008837 -0.000075i

     inv_A[280][281]: 0.000057 -0.008837i

     inv_A[282][283]: 0.000037 -0.008836i

     inv_A[284][285]: 0.008836 +0.000018i

     inv_A[286][287]: 0.152098 -0.000000i

  • Hi,

    I am stuck at this point of my project and I would really appreciate if you have some inputs for me to move ahead.

    Thanks!