/* Copyright 1994-2003 The MathWorks, Inc. * * File: rt_backsubcc_dbl.c $Revision: 1.3.4.3 $ * * Abstract: * Real-Time Workshop support routine which performs * backward substitution: solving Ux=b for complex * double precision float operands * */ #include #include "rtlibsrc.h" /* Function: rt_BackwardSubstitutionCC_Sgl ===================================== * Abstract: Backward substitution: Solving Ux=b * U: complex, single * b: complex, single * U is an upper (or unit upper) triangular full matrix. * The entries in the lower triangle are ignored. * U is a NxN matrix * X is a NxP matrix * B is a NxP matrix */ #ifdef CREAL_T void rt_BackwardSubstitutionCC_Sgl(creal32_T *pU, creal32_T *pb, creal32_T *x, int_T N, int_T P, boolean_T unit_upper) { int_T i, k; for(k=P; k>0; k--) { creal32_T *pUcol = pU; for(i=0; i 0) { /* Compute: s += L * xj, in complex */ creal32_T cU = *pUrow; pUrow -= N; s.re += CMULT_RE(cU, *xj); s.im += CMULT_IM(cU, *xj); xj--; } } if (unit_upper) { creal32_T cb = *pb--; xj->re = cb.re - s.re; xj->im = cb.im - s.im; } else { /* Complex divide: *xj = cdiff / *cL */ creal32_T cb = *pb--; creal32_T cU = *pUrow; creal32_T cdiff; cdiff.re = cb.re - s.re; cdiff.im = cb.im - s.im; CDIVSGL(cdiff, cU, *xj); } } } } #endif /* [EOF] rt_backsubcc_dbl.c */