26#if defined (HAVE_CONFIG_H)
50 (*current_liboctave_error_handler) (
"hess: requires square matrix");
62 double *h = m_hess_mat.
rwdata ();
65 double *pscale =
scale.rwdata ();
67 F77_XFCN (dgebal, DGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
68 n, h, n, ilo, ihi, pscale, info
69 F77_CHAR_ARG_LEN (1)));
72 double *ptau = tau.rwdata ();
75 double *pwork = work.rwdata ();
77 F77_XFCN (dgehrd, DGEHRD, (n, ilo, ihi, h, n, ptau, pwork,
80 m_unitary_hess_mat = m_hess_mat;
81 double *z = m_unitary_hess_mat.rwdata ();
83 F77_XFCN (dorghr, DORGHR, (n, ilo, ihi, z, n, ptau, pwork,
86 F77_XFCN (dgebak, DGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
87 F77_CONST_CHAR_ARG2 (&side, 1),
88 n, ilo, ihi, pscale, n, z,
91 F77_CHAR_ARG_LEN (1)));
98 for (
F77_INT j = 0; j < a_nc; j++)
99 for (
F77_INT i = j+2; i < a_nr; i++)
100 m_hess_mat.elem (i, j) = 0;
113 (*current_liboctave_error_handler) (
"hess: requires square matrix");
125 float *h = m_hess_mat.rwdata ();
128 float *pscale =
scale.rwdata ();
130 F77_XFCN (sgebal, SGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
131 n, h, n, ilo, ihi, pscale, info
132 F77_CHAR_ARG_LEN (1)));
135 float *ptau = tau.rwdata ();
138 float *pwork = work.rwdata ();
140 F77_XFCN (sgehrd, SGEHRD, (n, ilo, ihi, h, n, ptau, pwork,
143 m_unitary_hess_mat = m_hess_mat;
144 float *z = m_unitary_hess_mat.rwdata ();
146 F77_XFCN (sorghr, SORGHR, (n, ilo, ihi, z, n, ptau, pwork,
149 F77_XFCN (sgebak, SGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
150 F77_CONST_CHAR_ARG2 (&side, 1),
151 n, ilo, ihi, pscale, n, z,
154 F77_CHAR_ARG_LEN (1)));
161 for (
F77_INT j = 0; j < a_nc; j++)
162 for (
F77_INT i = j+2; i < a_nr; i++)
163 m_hess_mat.elem (i, j) = 0;
176 (*current_liboctave_error_handler) (
"hess: requires square matrix");
188 Complex *h = m_hess_mat.rwdata ();
191 double *pscale =
scale.rwdata ();
193 F77_XFCN (zgebal, ZGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
195 F77_CHAR_ARG_LEN (1)));
201 Complex *pwork = work.rwdata ();
206 m_unitary_hess_mat = m_hess_mat;
207 Complex *z = m_unitary_hess_mat.rwdata ();
213 F77_XFCN (zgebak, ZGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
214 F77_CONST_CHAR_ARG2 (&side, 1),
217 F77_CHAR_ARG_LEN (1)));
224 for (
F77_INT j = 0; j < a_nc; j++)
225 for (
F77_INT i = j+2; i < a_nr; i++)
226 m_hess_mat.elem (i, j) = 0;
240 (*current_liboctave_error_handler) (
"hess: requires square matrix");
257 float *pscale =
scale.rwdata ();
259 F77_XFCN (cgebal, CGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1),
261 F77_CHAR_ARG_LEN (1)));
272 m_unitary_hess_mat = m_hess_mat;
279 F77_XFCN (cgebak, CGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1),
280 F77_CONST_CHAR_ARG2 (&side, 1),
283 F77_CHAR_ARG_LEN (1)));
290 for (
F77_INT j = 0; j < a_nc; j++)
291 for (
F77_INT i = j+2; i < a_nr; i++)
292 m_hess_mat.elem (i, j) = 0;
297OCTAVE_END_NAMESPACE(math)
298OCTAVE_END_NAMESPACE(octave)
N Dimensional Array with copy-on-write semantics.
octave_idx_type rows() const
octave_idx_type cols() const
T * rwdata()
Size of the specified dimension.
Vector representing the dimensions (size) of an Array.
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
void scale(Matrix &m, double x, double y, double z)
std::complex< double > Complex
std::complex< float > FloatComplex