DSPRelated.com
Forums

AW: matrix inversion

Started by Andor Bariska December 17, 1999
> Does anybody know a SHARC assembler routine for matrix inversion? The
> one described in the ADSP21000 Family Applications Handbook doesn't
> work with ADSP21061.

Hi Ralph,
why exactly doesn't that algorithm work for the 61? Too little memory? Regards,
Andor



Hi Ralf,

> There are two problems:
>
> 1. The code generates an assembler error in two lines like:
> if ne jump (PC,12), f4=dm(i0,m2);

Good one. try:
compute, f0 = dm(i0,m2); /* or any other unused
register */
if ne jump (PC,12), f4= pass f0; /* this is equivalent to
the above */
or:
if ne jump (PC,12) (db);
f0 = dm(i0,m2); /* doesn't affect ASTAT
*/
if ne f0 = pass f4; /* same effect as
initial instruction, with same cycle count */
> 2. If I correct this by putting the second instruction in a separate
> line (rather complicated because of the "if"), assembling is possible
> without errors, but the matrix inversion doesn't deliver correct
> results.

Hmmm. I'd suggest you make a simple example and then follow the program
with
the simulator to see where it goes wrong.

Or, if your matrix size is fixed, try a direct imlplementation of the
formal
solution of the inverse matrix (which gets kind of unhandy for N>3).

Regards,
Andor

WEISS ENGINEERING LTD. - Professional Digital Audio Products
Florastrasse 42 8610 Uster Switzerland
phone: +41 1 940 20 06, fax: +41 1 940 22 14
mailto: web: http://www.weiss.ch
You *can* afford the best