Esempio n. 1
0
/* Subroutine */ int PASTEF77(z,rotg)(doublecomplex *ca, doublecomplex *cb, doublereal *c__, doublecomplex *s)
{
    /* System generated locals */
    doublereal d__1, d__2;
    doublecomplex z__1, z__2, z__3, z__4;

    /* Builtin functions */
    double z_abs(doublecomplex *);
    void bla_z_div(doublecomplex *, doublecomplex *, doublecomplex *);
    double sqrt(doublereal);
    void bla_d_cnjg(doublecomplex *, doublecomplex *);

    /* Local variables */
    doublereal norm;
    doublecomplex alpha;
    doublereal scale;

    if (z_abs(ca) != 0.) {
	goto L10;
    }
    *c__ = 0.;
    s->real = 1., s->imag = 0.;
    ca->real = cb->real, ca->imag = cb->imag;
    goto L20;
L10:
    scale = z_abs(ca) + z_abs(cb);
    z__2.real = scale, z__2.imag = 0.;
    bla_z_div(&z__1, ca, &z__2);
/* Computing 2nd power */
    d__1 = z_abs(&z__1);
    z__4.real = scale, z__4.imag = 0.;
    bla_z_div(&z__3, cb, &z__4);
/* Computing 2nd power */
    d__2 = z_abs(&z__3);
    norm = scale * sqrt(d__1 * d__1 + d__2 * d__2);
    d__1 = z_abs(ca);
    z__1.real = ca->real / d__1, z__1.imag = ca->imag / d__1;
    alpha.real = z__1.real, alpha.imag = z__1.imag;
    *c__ = z_abs(ca) / norm;
    bla_d_cnjg(&z__3, cb);
    z__2.real = alpha.real * z__3.real - alpha.imag * z__3.imag, z__2.imag = alpha.real * z__3.imag + 
	    alpha.imag * z__3.real;
    z__1.real = z__2.real / norm, z__1.imag = z__2.imag / norm;
    s->real = z__1.real, s->imag = z__1.imag;
    z__1.real = norm * alpha.real, z__1.imag = norm * alpha.imag;
    ca->real = z__1.real, ca->imag = z__1.imag;
L20:
    return 0;
} /* zrotg_ */
Esempio n. 2
0
/* Subroutine */ int PASTEF77(z,rotg)(doublecomplex *ca, doublecomplex *cb, doublereal *c__, doublecomplex *s)
{
    /* System generated locals */
    doublereal d__1, d__2;
    doublecomplex z__1, z__2, z__3, z__4;

    /* Builtin functions */
    double bla_z_abs(doublecomplex *);
    void bla_z_div(doublecomplex *, doublecomplex *, doublecomplex *);
    double sqrt(doublereal);
    void bla_d_cnjg(doublecomplex *, doublecomplex *);

    /* Local variables */
    doublereal norm;
    doublecomplex alpha;
    doublereal scale;

    if (bla_z_abs(ca) != 0.) {
	goto L10;
    }
    *c__ = 0.;
    bli_zsets( 1., 0., *s );
    bli_zsets( bli_zreal(*cb), bli_zimag(*cb), *ca );
    goto L20;
L10:
    scale = bla_z_abs(ca) + bla_z_abs(cb);
    bli_zsets( (scale), (0.), z__2 );
    bla_z_div(&z__1, ca, &z__2);
/* Computing 2nd power */
    d__1 = bla_z_abs(&z__1);
    bli_zsets( (scale), (0.), z__4 );
    bla_z_div(&z__3, cb, &z__4);
/* Computing 2nd power */
    d__2 = bla_z_abs(&z__3);
    norm = scale * sqrt(d__1 * d__1 + d__2 * d__2);
    d__1 = bla_z_abs(ca);
    bli_zsets( (bli_zreal(*ca) / d__1), (bli_zimag(*ca) / d__1), z__1 );
    bli_zsets( (bli_zreal(z__1)), (bli_zimag(z__1)), alpha );
    *c__ = bla_z_abs(ca) / norm;
    bla_d_cnjg(&z__3, cb);
    bli_zsets( (bli_zreal(alpha) * bli_zreal(z__3) - bli_zimag(alpha) * bli_zimag(z__3)), (bli_zreal(alpha) * bli_zimag(z__3) + bli_zimag(alpha) * bli_zreal(z__3)), z__2 );
    bli_zsets( (bli_zreal(z__2) / norm), (bli_zimag(z__2) / norm), z__1 );
    bli_zsets( bli_zreal(z__1), bli_zimag(z__1), *s );
    bli_zsets( (norm * bli_zreal(alpha)), (norm * bli_zimag(alpha)), z__1 );
    bli_zsets( bli_zreal(z__1), bli_zimag(z__1), *ca );
L20:
    return 0;
} /* zrotg_ */