/*
 *  dspsqsl_rt.h
 *
 *  Copyright 1995-2000 The MathWorks, Inc.
 *  $Revision: 1.4 $ $Date: 2000/03/21 21:01:36 $
 */

#ifndef dspqrsl_rt_h
#define dspqrsl_rt_h

#include "dsp_rt.h"

/*
 * dspcompqy - compute q*y or q'*y in place over y
 */
extern void dspcompqy_real(int_T n, int_T j, real_T *qr, real_T *qrauxj, real_T *y);
extern void dspcompqy_cplx(int_T n, int_T j, creal_T *qr, creal_T *qrauxj, creal_T *y);
extern void dspcompqy_mixd(int_T n, int_T j, real_T *qr, real_T *qrauxj, creal_T *y);

/*
 * dspqrsl1 - use the qr factorization stored in qr and qraux
 * to operate on y and compute q*y in place over y
 */
extern int_T dspqrsl1_real(int_T n, int_T k, real_T *qr, real_T *qraux, real_T *y);
extern int_T dspqrsl1_cplx(int_T n, int_T k, creal_T *qr, creal_T *qraux, creal_T *y);

/*
 * dspqrsl2 - use the qr factorization of a stored in qr and qraux
 * to operate on input b and compute q'*b and the solution x to
 * min(norm(b-q*r*x)) = min(norm(q'*b-r*x)) in place over b.
 *
 * a and its qr factorization stored in qr and qraux are real;
 * b is real.
 */
extern int_T dspqrsl2_real(int_T n, int_T k, real_T *qr, real_T *qraux, real_T *b);

/*
 * a and its qr factorization stored in qr and qraux are complex;
 * b is complex.
 */
extern int_T dspqrsl2_cplx(int_T n, int_T k, creal_T *qr, creal_T *qraux, creal_T *b);

/*
 * a and its qr factorization stored in qr and qraux are real;
 * b is complex.
 */
extern int_T dspqrsl2_mixd(int_T n, int_T k, real_T *qr, real_T *qraux, creal_T *b);

#endif /* dspqrsl_rt_h */

/* [EOF] dspqrsl_rt.h */
