46 #include "Moocho_Config.h"
49 #if !defined(HAVE_MOOCHO_FORTRAN)
56 void dchud_c(
double r__[],
int *ldr,
int *p,
57 double x[],
double z__[],
int *ldz,
int *
nz,
58 double y[],
double *rho,
double c__[],
double s[]
69 int r_dim1, r_offset, z_dim1, z_offset, i__1, i__2;
75 double t, scale, azeta;
82 r_offset = 1 + r_dim1 * 1;
86 z_offset = 1 + z_dim1 * 1;
95 for (j = 1; j <= i__1; ++j) {
105 for (i__ = 1; i__ <= i__2; ++i__) {
106 t = c__[i__] * r__[i__ + j * r_dim1] + s[i__] * xj;
107 xj = c__[i__] * xj - s[i__] * r__[i__ + j * r_dim1];
108 r__[i__ + j * r_dim1] = t;
115 DROTG_F77(&r__[j + j * r_dim1], &xj, &c__[j], &s[j]);
125 for (j = 1; j <= i__1; ++j) {
128 for (i__ = 1; i__ <= i__2; ++i__) {
129 t = c__[i__] * z__[i__ + j * z_dim1] + s[i__] * zeta;
130 zeta = c__[i__] * zeta - s[i__] * z__[i__ + j * z_dim1];
131 z__[i__ + j * z_dim1] = t;
135 if (azeta == 0. || rho[j] < 0.) {
138 scale = azeta + rho[j];
140 d__1 = azeta / scale;
142 d__2 = rho[j] / scale;
143 rho[j] = scale *
sqrt(d__1 * d__1 + d__2 * d__2);
155 #endif // !defined(HAVE_MOOCHO_FORTRAN)
void PREFIX DROTG_F77(double *da, double *db, double *c, double *s)
void dchud_c(double r__[], int *ldr, int *p, double x[], double z__[], int *ldz, int *nz, double y[], double *rho, double c__[], double s[])
void sqrt(DVectorSlice *vs_lhs, const DVectorSlice &vs_rhs)
vs_lhs = sqrt(vs_rhs)