Eugenio91
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору помогите с переводом программы под borland /* mla1d.f -- translated by f2c (version 20000817). You must link the resulting object file with the libraries: -lf2c -lm (in that order) */ #include "f2c.h" /* Table of constant values */ static integer c__0 = 0; static integer c__1 = 1; /* Subroutine */ int mla1d_c(doublereal *a, integer *m, integer *n, integer *ma, integer *na, integer *m1, integer *m2, integer *m3, integer *iflag, integer *izrov, integer *iposv, integer *l1, integer *l2, integer *l3) { /* Initialized data */ static doublereal eps = 1e-6; static doublereal zero = 0.; static doublereal one = 1.; /* System generated locals */ integer a_dim1, a_offset, i__1, i__2; /* Local variables */ static doublereal bmax; static integer i__, k; extern /* Subroutine */ int mla1d1_c(doublereal *, integer *, integer *, integer *, integer *, integer *, integer *, integer *, doublereal *), mla1d2_c(doublereal *, integer *, integer *, integer *, integer *, integer *, integer *, integer *, integer *, doublereal *), mla1d3_c(doublereal *, integer *, integer *, integer *, integer *, integer *, integer *); static integer k1, n1; static doublereal q1; static integer m11, m12, kh, ip, ir, kp, is, im1, ip1, nl1, nl2; #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1] /* Parameter adjustments */ --iposv; --izrov; --l3; --l2; --l1; a_dim1 = *ma; a_offset = 1 + a_dim1 * 1; a -= a_offset; /* Function Body */ *iflag = 0; if (*m == *m1 + *m2 + *m3) { goto L1; } *iflag = 65; goto L250; L1:if (*m1 + *m3 != 0) { goto L10; } *iflag = 67; goto L250; L10: nl1 = *n; i__1 = *n; for (k = 1; k <= i__1; ++k) { l1[k] = k; izrov[k] = k; /* L20: */ } nl2 = *m; i__1 = *m; for (i__ = 1; i__ <= i__1; ++i__) { if (a_ref(i__ + 1, 1) >= zero) { goto L30; } *iflag = 66; goto L250; L30: l2[i__] = i__; iposv[i__] = *n + i__; /* L40: */ } if (*m2 == 0) { goto L55; } i__1 = *m2; for (i__ = 1; i__ <= i__1; ++i__) { l3[i__] = 1; /* L50: */ } L55: ir = 0; n1 = *n + 1; m11 = *m1 + 1; if (*m2 + *m3 == 0) { goto L230; } ir = 1; i__1 = n1; for (k = 1; k <= i__1; ++k) { q1 = zero; i__2 = *m; for (i__ = m11; i__ <= i__2; ++i__) { q1 += a_ref(i__ + 1, k); /* L60: */ } a_ref(*m + 2, k) = -q1; /* L70: */ } L80: i__1 = *m + 1; mla1d1_c(&a[a_offset], ma, na, &i__1, &l1[1], &nl1, &c__0, &kp, &bmax); if (bmax <= eps && a_ref(*m + 2, 1) < -eps) { goto L90; } if (bmax <= eps && a_ref(*m + 2, 1) <= eps) { goto L100; } goto L150; L90: *iflag = 68; goto L250; L100: m12 = *m1 + *m2 + 1; if (m12 > *m) { goto L120; } i__1 = *m; for (ip = m12; ip <= i__1; ++ip) { ip1 = ip; if (iposv[ip] != ip + *n) { goto L110; } mla1d1_c(&a[a_offset], ma, na, &ip1, &l1[1], &nl1, &c__1, &kp, &bmax); if (bmax > zero) { goto L155; } L110: ; } L120: ir = 0; --m12; if (*m1 + 1 > m12) { goto L230; } i__1 = m12; for (i__ = m11; i__ <= i__1; ++i__) { im1 = i__ - *m1; if (l3[im1] != 1) { goto L140; } i__2 = n1; for (k = 1; k <= i__2; ++k) { a_ref(i__ + 1, k) = -a_ref(i__ + 1, k); /* L130: */ } L140: ; } goto L230; L150: mla1d2_c(&a[a_offset], m, n, ma, na, &l2[1], &nl2, &ip, &kp, &q1); if (ip != 0) { goto L160; } *iflag = 68; goto L250; L155: ip = ip1; L160: i__1 = *m + 1; mla1d3_c(&a[a_offset], ma, na, &i__1, n, &ip, &kp); if (iposv[ip] < *n + *m1 + *m2 + 1) { goto L195; } i__1 = nl1; for (k = 1; k <= i__1; ++k) { k1 = k; if (l1[k] == kp) { goto L180; } /* L170: */ } L180: --nl1; i__1 = nl1; for (is = k1; is <= i__1; ++is) { l1[is] = l1[is + 1]; /* L190: */ } goto L200; L195: if (iposv[ip] < *n + *m1 + 1) { goto L220; } kh = iposv[ip] - *m1 - *n; if (l3[kh] == 0) { goto L220; } l3[kh] = 0; L200: a_ref(*m + 2, kp + 1) = a_ref(*m + 2, kp + 1) + one; *m2 = *m + 2; i__1 = *m2; for (i__ = 1; i__ <= i__1; ++i__) { a_ref(i__, kp + 1) = -a_ref(i__, kp + 1); /* L210: */ } L220: is = izrov[kp]; izrov[kp] = iposv[ip]; iposv[ip] = is; if (ir != 0) { goto L80; } L230: mla1d1_c(&a[a_offset], ma, na, &c__0, &l1[1], &nl1, &c__0, &kp, &bmax); if (bmax <= zero) { goto L250; } mla1d2_c(&a[a_offset], m, n, ma, na, &l2[1], &nl2, &ip, &kp, &q1); if (ip != 0) { goto L240; } *iflag = 67; goto L250; L240: mla1d3_c(&a[a_offset], ma, na, m, n, &ip, &kp); goto L220; L250: return 0; } /* mla1d_c */ #undef a_ref |