26#if defined (HAVE_CONFIG_H)
47 const std::string& balance_job)
52 (*current_liboctave_error_handler)
53 (
"GEPBALANCE requires square matrix");
67 double *p_balanced_mat = m_balanced_mat.
rwdata ();
69 double *p_balanced_mat2 = m_balanced_mat2.
rwdata ();
71 char job = balance_job[0];
73 F77_XFCN (dggbal, DGGBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
74 n, p_balanced_mat, n, p_balanced_mat2,
75 n, ilo, ihi, plscale, prscale, pwork, info
76 F77_CHAR_ARG_LEN (1)));
78 m_balancing_mat =
Matrix (n, n, 0.0);
79 m_balancing_mat2 =
Matrix (n, n, 0.0);
83 m_balancing_mat.elem (i, i) = 1.0;
84 m_balancing_mat2.elem (i, i) = 1.0;
87 double *p_balancing_mat = m_balancing_mat.rwdata ();
88 double *p_balancing_mat2 = m_balancing_mat2.rwdata ();
91 F77_XFCN (dggbak, DGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
92 F77_CONST_CHAR_ARG2 (
"L", 1),
93 n, ilo, ihi, plscale, prscale,
94 n, p_balancing_mat, n, info
96 F77_CHAR_ARG_LEN (1)));
99 F77_XFCN (dggbak, DGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
100 F77_CONST_CHAR_ARG2 (
"R", 1),
101 n, ilo, ihi, plscale, prscale,
102 n, p_balancing_mat2, n, info
104 F77_CHAR_ARG_LEN (1)));
112 const std::string& balance_job)
117 (*current_liboctave_error_handler)
118 (
"FloatGEPBALANCE requires square matrix");
133 float *p_balanced_mat = m_balanced_mat.rwdata ();
135 float *p_balanced_mat2 = m_balanced_mat2.rwdata ();
137 char job = balance_job[0];
139 F77_XFCN (sggbal, SGGBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
140 n, p_balanced_mat, n, p_balanced_mat2,
141 n, ilo, ihi, plscale, prscale, pwork, info
142 F77_CHAR_ARG_LEN (1)));
146 for (
F77_INT i = 0; i < n; i++)
149 m_balancing_mat.elem (i, i) = 1.0;
150 m_balancing_mat2.elem (i, i) = 1.0;
153 float *p_balancing_mat = m_balancing_mat.rwdata ();
154 float *p_balancing_mat2 = m_balancing_mat2.rwdata ();
157 F77_XFCN (sggbak, SGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
158 F77_CONST_CHAR_ARG2 (
"L", 1),
159 n, ilo, ihi, plscale, prscale,
160 n, p_balancing_mat, n, info
162 F77_CHAR_ARG_LEN (1)));
165 F77_XFCN (sggbak, SGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
166 F77_CONST_CHAR_ARG2 (
"R", 1),
167 n, ilo, ihi, plscale, prscale,
168 n, p_balancing_mat2, n, info
170 F77_CHAR_ARG_LEN (1)));
179 const std::string& balance_job)
184 (*current_liboctave_error_handler)
185 (
"ComplexGEPBALANCE requires square matrix");
200 Complex *p_balanced_mat = m_balanced_mat.rwdata ();
202 Complex *p_balanced_mat2 = m_balanced_mat2.rwdata ();
204 char job = balance_job[0];
206 F77_XFCN (zggbal, ZGGBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
209 n, ilo, ihi, plscale, prscale, pwork, info
210 F77_CHAR_ARG_LEN (1)));
212 m_balancing_mat =
Matrix (n, n, 0.0);
213 m_balancing_mat2 =
Matrix (n, n, 0.0);
214 for (
F77_INT i = 0; i < n; i++)
217 m_balancing_mat.elem (i, i) = 1.0;
218 m_balancing_mat2.elem (i, i) = 1.0;
221 double *p_balancing_mat = m_balancing_mat.rwdata ();
222 double *p_balancing_mat2 = m_balancing_mat2.rwdata ();
225 F77_XFCN (dggbak, DGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
226 F77_CONST_CHAR_ARG2 (
"L", 1),
227 n, ilo, ihi, plscale, prscale,
228 n, p_balancing_mat, n, info
230 F77_CHAR_ARG_LEN (1)));
233 F77_XFCN (dggbak, DGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
234 F77_CONST_CHAR_ARG2 (
"R", 1),
235 n, ilo, ihi, plscale, prscale,
236 n, p_balancing_mat2, n, info
238 F77_CHAR_ARG_LEN (1)));
247 const std::string& balance_job)
253 (*current_liboctave_error_handler)
254 (
"FloatComplexGEPBALANCE requires square matrix");
275 char job = balance_job[0];
277 F77_XFCN (cggbal, CGGBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
280 n, ilo, ihi, plscale, prscale, pwork, info
281 F77_CHAR_ARG_LEN (1)));
285 for (
F77_INT i = 0; i < n; i++)
288 m_balancing_mat.elem (i, i) = 1.0;
289 m_balancing_mat2.elem (i, i) = 1.0;
292 float *p_balancing_mat = m_balancing_mat.rwdata ();
293 float *p_balancing_mat2 = m_balancing_mat2.rwdata ();
296 F77_XFCN (sggbak, SGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
297 F77_CONST_CHAR_ARG2 (
"L", 1),
298 n, ilo, ihi, plscale, prscale,
299 n, p_balancing_mat, n, info
301 F77_CHAR_ARG_LEN (1)));
304 F77_XFCN (sggbak, SGGBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
305 F77_CONST_CHAR_ARG2 (
"R", 1),
306 n, ilo, ihi, plscale, prscale,
307 n, p_balancing_mat2, n, info
309 F77_CHAR_ARG_LEN (1)));
324OCTAVE_END_NAMESPACE(math)
325OCTAVE_END_NAMESPACE(octave)
const dim_vector & dims() const
Return a const-reference so that dims ()(i) works efficiently.
octave_idx_type rows() const
octave_idx_type cols() const
T * rwdata()
Size of the specified dimension.
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
#define F77_DBLE_CMPLX_ARG(x)
#define F77_XFCN(f, F, args)
octave_f77_int_type F77_INT
std::complex< double > Complex
std::complex< float > FloatComplex
#define OCTAVE_LOCAL_BUFFER(T, buf, size)