4 #define MAX2(a,b) ((a) > (b) ? (a) : (b))
5 #define iabs(a) ((a) < 0 ? -(a) : (a))
7 /* subroutines extracted from mssubs.for */
8 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
9 /* FUNCTION MXVMAX ALL SYSTEMS 91/12/01 */
11 /* L-INFINITY NORM OF A VECTOR. */
14 /* II N VECTOR DIMENSION. */
15 /* RI X(N) INPUT VECTOR. */
16 /* RR MXVMAX L-INFINITY NORM OF THE VECTOR X. */
18 double luksan_mxvmax__(int *n, double *x)
20 /* System generated locals */
22 double d__1, d__2, d__3;
28 /* Parameter adjustments */
34 for (i__ = 1; i__ <= i__1; ++i__) {
36 d__2 = mxvmax, d__3 = (d__1 = x[i__], fabs(d__1));
37 mxvmax = MAX2(d__2,d__3);
41 } /* luksan_mxvmax__ */
43 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
44 /* SUBROUTINE MXVINE ALL SYSTEMS 94/12/01 */
46 /* ELEMENTS OF THE INTEGER VECTOR ARE REPLACED BY THEIR ABSOLUTE VALUES. */
49 /* II N DIMENSION OF THE INTEGER VECTOR. */
50 /* IU IX(N) INTEGER VECTOR WHICH IS UPDATED SO THAT IX(I):=ABS(IX(I)) */
53 void luksan_mxvine__(int *n, int *ix)
55 /* System generated locals */
61 /* Parameter adjustments */
66 for (i__ = 1; i__ <= i__1; ++i__) {
67 ix[i__] = (i__2 = ix[i__], iabs(i__2));
71 } /* luksan_mxvine__ */
73 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
74 /* SUBROUTINE MXDCMV ALL SYSTEMS 91/12/01 */
76 /* RANK-TWO UPDATE OF A COLUMNWISE STORED DENSE RECTANGULAR MATRIX A. */
77 /* THIS MATRIX IS UPDATED BY THE RULE A:=A+ALF*X*TRANS(U)+BET*Y*TRANS(V). */
80 /* II N NUMBER OF ROWS OF THE MATRIX A. */
81 /* II M NUMBER OF COLUMNS OF THE MATRIX A. */
82 /* RU A(N*M) RECTANGULAR MATRIX STORED COLUMNWISE IN THE */
83 /* ONE-DIMENSIONAL ARRAY. */
84 /* RI ALF SCALAR PARAMETER. */
85 /* RI X(N) INPUT VECTOR. */
86 /* RI U(M) INPUT VECTOR. */
87 /* RI BET SCALAR PARAMETER. */
88 /* RI Y(N) INPUT VECTOR. */
89 /* RI V(M) INPUT VECTOR. */
91 void luksan_mxdcmv__(int *n, int *m, double *a,
92 double *alf, double *x, double *u, double *bet,
95 /* System generated locals */
102 /* Parameter adjustments */
112 for (j = 1; j <= i__1; ++j) {
116 for (i__ = 1; i__ <= i__2; ++i__) {
117 a[k + i__] = a[k + i__] + tempa * x[i__] + tempb * y[i__];
124 } /* luksan_mxdcmv__ */
126 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
127 /* SUBROUTINE MXVSAV ALL SYSTEMS 91/12/01 */
128 /* PORTABILITY : ALL SYSTEMS */
129 /* 91/12/01 LU : ORIGINAL VERSION */
132 /* DIFFERENCE OF TWO VECTORS RETURNED IN THE SUBSTRACTED ONE. */
135 /* II N VECTOR DIMENSION. */
136 /* RI X(N) INPUT VECTOR. */
137 /* RU Y(N) UPDATE VECTOR WHERE Y:= X - Y. */
139 void luksan_mxvsav__(int *n, double *x, double *y)
141 /* System generated locals */
144 /* Local variables */
148 /* Parameter adjustments */
154 for (i__ = 1; i__ <= i__1; ++i__) {
156 y[i__] = x[i__] - y[i__];
161 } /* luksan_mxvsav__ */
163 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
164 /* SUBROUTINE MXVLIN ALL SYSTEMS 92/12/01 */
166 /* LINEAR COMBINATION OF TWO VECTORS. */
169 /* II N VECTOR DIMENSION. */
170 /* RI A SCALING FACTOR. */
171 /* RI X(N) INPUT VECTOR. */
172 /* RI B SCALING FACTOR. */
173 /* RI Y(N) INPUT VECTOR. */
174 /* RO Z(N) OUTPUT VECTOR WHERE Z:= A*X + B*Y. */
176 void luksan_mxvlin__(int *n, double *a, double *x,
177 double *b, double *y, double *z__)
179 /* System generated locals */
182 /* Local variables */
185 /* Parameter adjustments */
192 for (i__ = 1; i__ <= i__1; ++i__) {
193 z__[i__] = *a * x[i__] + *b * y[i__];
197 } /* luksan_mxvlin__ */
199 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
200 /* SUBROUTINE MXDCMU ALL SYSTEMS 91/12/01 */
202 /* UPDATE OF A COLUMNWISE STORED DENSE RECTANGULAR MATRIX A. THIS MATRIX */
203 /* IS UPDATED BY THE RULE A:=A+ALF*X*TRANS(Y). */
206 /* II N NUMBER OF ROWS OF THE MATRIX A. */
207 /* II M NUMBER OF COLUMNS OF THE MATRIX A. */
208 /* RU A(N*M) RECTANGULAR MATRIX STORED COLUMNWISE IN THE */
209 /* ONE-DIMENSIONAL ARRAY. */
210 /* RI ALF SCALAR PARAMETER. */
211 /* RI X(N) INPUT VECTOR. */
212 /* RI Y(M) INPUT VECTOR. */
214 void luksan_mxdcmu__(int *n, int *m, double *a,
215 double *alf, double *x, double *y)
217 /* System generated locals */
220 /* Local variables */
224 /* Parameter adjustments */
232 for (j = 1; j <= i__1; ++j) {
235 for (i__ = 1; i__ <= i__2; ++i__) {
236 a[k + i__] += temp * x[i__];
243 } /* luksan_mxdcmu__ */
245 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
246 /* SUBROUTINE MXVDIR ALL SYSTEMS 91/12/01 */
248 /* VECTOR AUGMENTED BY THE SCALED VECTOR. */
251 /* II N VECTOR DIMENSION. */
252 /* RI A SCALING FACTOR. */
253 /* RI X(N) INPUT VECTOR. */
254 /* RI Y(N) INPUT VECTOR. */
255 /* RO Z(N) OUTPUT VECTOR WHERE Z:= Y + A*X. */
257 void luksan_mxvdir__(int *n, double *a, double *x,
258 double *y, double *z__)
260 /* System generated locals */
263 /* Local variables */
266 /* Parameter adjustments */
273 for (i__ = 1; i__ <= i__1; ++i__) {
274 z__[i__] = y[i__] + *a * x[i__];
277 } /* luksan_mxvdir__ */
279 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
280 /* SUBROUTINE MXDCMD ALL SYSTEMS 91/12/01
282 * MULTIPLICATION OF A COLUMNWISE STORED DENSE RECTANGULAR MATRIX A
283 * BY A VECTOR X AND ADDITION OF THE SCALED VECTOR ALF*Y.
286 * II N NUMBER OF ROWS OF THE MATRIX A.
287 * II M NUMBER OF COLUMNS OF THE MATRIX A.
288 * RI A(N*M) RECTANGULAR MATRIX STORED COLUMNWISE IN THE
289 * ONE-DIMENSIONAL ARRAY.
290 * RI X(M) INPUT VECTOR.
291 * RI ALF SCALING FACTOR.
292 * RI Y(N) INPUT VECTOR.
293 * RO Z(N) OUTPUT VECTOR EQUAL TO A*X+ALF*Y.
296 * S MXVDIR VECTOR AUGMENTED BY THE SCALED VECTOR.
297 * S MXVSCL SCALING OF A VECTOR.
299 void luksan_mxdcmd__(int *n, int *m, double *a,
300 double *x, double *alf, double *y, double *z__)
302 /* System generated locals */
305 /* Local variables */
308 /* Parameter adjustments */
315 luksan_mxvscl__(n, alf, &y[1], &z__[1]);
318 for (j = 1; j <= i__1; ++j) {
319 luksan_mxvdir__(n, &x[j], &a[k + 1], &z__[1], &z__[1]);
324 } /* luksan_mxdcmd__ */
326 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
327 /* SUBROUTINE MXDRCB ALL SYSTEMS 91/12/01
329 * BACKWARD PART OF THE STRANG FORMULA FOR PREMULTIPLICATION OF
330 * THE VECTOR X BY AN IMPLICIT BFGS UPDATE.
333 * II N NUMBER OF ROWS OF THE MATRICES A AND B.
334 * II M NUMBER OF COLUMNS OF THE MATRICES A AND B.
335 * RI A(N*M) RECTANGULAR MATRIX STORED AS A ONE-DIMENSIONAL ARRAY.
336 * RI B(N*M) RECTANGULAR MATRIX STORED AS A ONE-DIMENSIONAL ARRAY.
337 * RI U(M) VECTOR OF SCALAR COEFFICIENTS.
338 * RO V(M) VECTOR OF SCALAR COEFFICIENTS.
339 * RU X(N) PREMULTIPLIED VECTOR.
340 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
341 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
342 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
346 * S MXUDIR VECTOR AUGMENTED BY THE SCALED VECTOR.
347 * RF MXUDOT DOT PRODUCT OF VECTORS.
350 * H.MATTHIES, G.STRANG: THE SOLUTION OF NONLINEAR FINITE ELEMENT
351 * EQUATIONS. INT.J.NUMER. METHODS ENGN. 14 (1979) 1613-1626.
353 void luksan_mxdrcb__(int *n, int *m, double *a,
354 double *b, double *u, double *v, double *x, int *
357 /* System generated locals */
361 /* Local variables */
364 /* Parameter adjustments */
375 for (i__ = 1; i__ <= i__1; ++i__) {
376 v[i__] = u[i__] * luksan_mxudot__(n, &x[1], &a[k], &ix[1], job);
378 luksan_mxudir__(n, &d__1, &b[k], &x[1], &x[1], &ix[1], job);
383 } /* luksan_mxdrcb__ */
385 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
386 /* SUBROUTINE MXDRCF ALL SYSTEMS 91/12/01
388 * FORWARD PART OF THE STRANG FORMULA FOR PREMULTIPLICATION OF
389 * THE VECTOR X BY AN IMPLICIT BFGS UPDATE.
392 * II N NUMBER OF ROWS OF THE MATRICES A AND B.
393 * II M NUMBER OF COLUMNS OF THE MATRICES A AND B.
394 * RI A(N*M) RECTANGULAR MATRIX STORED AS A ONE-DIMENSIONAL ARRAY.
395 * RI B(N*M) RECTANGULAR MATRIX STORED AS A ONE-DIMENSIONAL ARRAY.
396 * RI U(M) VECTOR OF SCALAR COEFFICIENTS.
397 * RI V(M) VECTOR OF SCALAR COEFFICIENTS.
398 * RU X(N) PREMULTIPLIED VECTOR.
399 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
400 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
401 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
405 * S MXUDIR VECTOR AUGMENTED BY THE SCALED VECTOR.
406 * RF MXUDOT DOT PRODUCT OF VECTORS.
409 * H.MATTHIES, G.STRANG: THE SOLUTION OF NONLINEAR FINITE ELEMENT
410 * EQUATIONS. INT.J.NUMER. METHODS ENGN. 14 (1979) 1613-1626.
412 void luksan_mxdrcf__(int *n, int *m, double *a,
413 double *b, double *u, double *v, double *x, int *
416 /* System generated locals */
419 /* Local variables */
423 /* Parameter adjustments */
432 k = (*m - 1) * *n + 1;
433 for (i__ = *m; i__ >= 1; --i__) {
434 temp = u[i__] * luksan_mxudot__(n, &x[1], &b[k], &ix[1], job);
435 d__1 = v[i__] - temp;
436 luksan_mxudir__(n, &d__1, &a[k], &x[1], &x[1], &ix[1], job);
441 } /* luksan_mxdrcf__ */
443 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
444 /* SUBROUTINE MXDRMM ALL SYSTEMS 91/12/01
446 * MULTIPLICATION OF A ROWWISE STORED DENSE RECTANGULAR MATRIX A BY
450 * II N NUMBER OF COLUMNS OF THE MATRIX A.
451 * II M NUMBER OF ROWS OF THE MATRIX A.
452 * RI A(M*N) RECTANGULAR MATRIX STORED ROWWISE IN THE
453 * ONE-DIMENSIONAL ARRAY.
454 * RI X(N) INPUT VECTOR.
455 * RO Y(M) OUTPUT VECTOR EQUAL TO A*X.
457 void luksan_mxdrmm__(int *n, int *m, double *a,
458 double *x, double *y)
460 /* System generated locals */
463 /* Local variables */
467 /* Parameter adjustments */
475 for (j = 1; j <= i__1; ++j) {
478 for (i__ = 1; i__ <= i__2; ++i__) {
479 temp += a[k + i__] * x[i__];
487 } /* luksan_mxdrmm__ */
489 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
490 /* SUBROUTINE MXDRSU ALL SYSTEMS 91/12/01
492 * SHIFT OF COLUMNS OF THE RECTANGULAR MATRICES A AND B. SHIFT OF
493 * ELEMENTS OF THE VECTOR U. THESE SHIFTS ARE USED IN THE LIMITED
494 * MEMORY BFGS METHOD.
497 * II N NUMBER OF ROWS OF THE MATRIX A AND B.
498 * II M NUMBER OF COLUMNS OF THE MATRIX A AND B.
499 * RU A(N*M) RECTANGULAR MATRIX STORED AS A ONE-DIMENSIONAL ARRAY.
500 * RU B(N*M) RECTANGULAR MATRIX STORED AS A ONE-DIMENSIONAL ARRAY.
503 void luksan_mxdrsu__(int *n, int *m, double *a,
504 double *b, double *u)
508 /* Parameter adjustments */
514 k = (*m - 1) * *n + 1;
515 for (i__ = *m - 1; i__ >= 1; --i__) {
517 luksan_mxvcop__(n, &a[l], &a[k]);
518 luksan_mxvcop__(n, &b[l], &b[k]);
524 } /* luksan_mxdrsu__ */
526 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
527 /* SUBROUTINE MXUCOP ALL SYSTEMS 99/12/01
529 * COPY OF THE VECTOR WITH INITIATION OF THE ACTIVE PART.
532 * II N VECTOR DIMENSION.
533 * RI X(N) INPUT VECTOR.
534 * RO Y(N) OUTPUT VECTOR WHERE Y:= X.
535 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
536 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
537 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
540 void luksan_mxucop__(int *n, double *x, double *y,
543 /* System generated locals */
546 /* Local variables */
549 /* Parameter adjustments */
557 for (i__ = 1; i__ <= i__1; ++i__) {
561 } else if (*job > 0) {
563 for (i__ = 1; i__ <= i__1; ++i__) {
573 for (i__ = 1; i__ <= i__1; ++i__) {
583 } /* luksan_mxucop__ */
585 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
586 /* SUBROUTINE MXUDIR ALL SYSTEMS 99/12/01
588 * VECTOR AUGMENTED BY THE SCALED VECTOR IN A BOUND CONSTRAINED CASE.
591 * II N VECTOR DIMENSION.
592 * RI A SCALING FACTOR.
593 * RI X(N) INPUT VECTOR.
594 * RI Y(N) INPUT VECTOR.
595 * RO Z(N) OUTPUT VECTOR WHERE Z:= Y + A*X.
596 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
597 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
598 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
601 void luksan_mxudir__(int *n, double *a, double *x,
602 double *y, double *z__, int *ix, int *job)
604 /* System generated locals */
607 /* Local variables */
610 /* Parameter adjustments */
619 for (i__ = 1; i__ <= i__1; ++i__) {
620 z__[i__] = y[i__] + *a * x[i__];
623 } else if (*job > 0) {
625 for (i__ = 1; i__ <= i__1; ++i__) {
627 z__[i__] = y[i__] + *a * x[i__];
633 for (i__ = 1; i__ <= i__1; ++i__) {
635 z__[i__] = y[i__] + *a * x[i__];
641 } /* luksan_mxudir__ */
643 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
644 /* FUNCTION MXVDOT ALL SYSTEMS 91/12/01 */
646 /* DOT PRODUCT OF TWO VECTORS. */
649 /* II N VECTOR DIMENSION. */
650 /* RI X(N) INPUT VECTOR. */
651 /* RI Y(N) INPUT VECTOR. */
652 /* RR MXVDOT VALUE OF DOT PRODUCT MXVDOT=TRANS(X)*Y. */
654 double luksan_mxvdot__(int *n, double *x, double *y)
656 /* System generated locals */
659 /* Local variables */
663 /* Parameter adjustments */
670 for (i__ = 1; i__ <= i__1; ++i__) {
671 temp += x[i__] * y[i__];
675 } /* luksan_mxvdot__ */
677 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
678 /* FUNCTION MXUDOT ALL SYSTEMS 99/12/01
680 * DOT PRODUCT OF VECTORS IN A BOUND CONSTRAINED CASE.
683 * II N VECTOR DIMENSION.
684 * RI X(N) INPUT VECTOR.
685 * RI Y(N) INPUT VECTOR.
686 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
687 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
688 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
690 * RR MXUDOT VALUE OF DOT PRODUCT MXUDOT=TRANS(X)*Y.
692 double luksan_mxudot__(int *n, double *x, double *y, int *ix,
695 /* System generated locals */
698 /* Local variables */
702 /* Parameter adjustments */
711 for (i__ = 1; i__ <= i__1; ++i__) {
712 temp += x[i__] * y[i__];
715 } else if (*job > 0) {
717 for (i__ = 1; i__ <= i__1; ++i__) {
719 temp += x[i__] * y[i__];
725 for (i__ = 1; i__ <= i__1; ++i__) {
727 temp += x[i__] * y[i__];
733 } /* luksan_mxudot__ */
735 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
736 /* SUBROUTINE MXUNEG ALL SYSTEMS 00/12/01
738 * COPY OF THE VECTOR WITH INITIATION OF THE ACTIVE PART.
741 * II N VECTOR DIMENSION.
742 * RI X(N) INPUT VECTOR.
743 * RO Y(N) OUTPUT VECTOR WHERE Y:= X.
744 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
745 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
746 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
749 void luksan_mxuneg__(int *n, double *x, double *y,
752 /* System generated locals */
755 /* Local variables */
758 /* Parameter adjustments */
766 for (i__ = 1; i__ <= i__1; ++i__) {
770 } else if (*job > 0) {
772 for (i__ = 1; i__ <= i__1; ++i__) {
782 for (i__ = 1; i__ <= i__1; ++i__) {
792 } /* luksan_mxuneg__ */
794 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
795 /* SUBROUTINE MXUZER ALL SYSTEMS 99/12/01
797 * VECTOR ELEMENTS CORRESPONDING TO ACTIVE BOUNDS ARE SET TO ZERO.
800 * II N VECTOR DIMENSION.
801 * RO X(N) OUTPUT VECTOR SUCH THAT X(I)=A FOR ALL I.
802 * II IX(N) VECTOR CONTAINING TYPES OF BOUNDS.
803 * II JOB OPTION. IF JOB.GT.0 THEN INDEX I IS NOT USED WHENEVER
804 * IX(I).LE.-1. IF JOB.LT.0 THEN INDEX I IS NOT USED WHENEVER
807 void luksan_mxuzer__(int *n, double *x, int *ix,
810 /* System generated locals */
813 /* Local variables */
816 /* Parameter adjustments */
825 for (i__ = 1; i__ <= i__1; ++i__) {
832 } /* luksan_mxuzer__ */
834 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
835 /* SUBROUTINE MXVCOP ALL SYSTEMS 88/12/01
837 * COPYING OF A VECTOR.
840 * II N VECTOR DIMENSION.
841 * RI X(N) INPUT VECTOR.
842 * RO Y(N) OUTPUT VECTOR WHERE Y:= X.
844 void luksan_mxvcop__(int *n, double *x, double *y)
846 /* System generated locals */
849 /* Local variables */
852 /* Parameter adjustments */
858 for (i__ = 1; i__ <= i__1; ++i__) {
863 } /* luksan_mxvcop__ */
865 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
866 /* SUBROUTINE MXVDIF ALL SYSTEMS 88/12/01
871 * RI X(N) INPUT VECTOR.
872 * RI Y(N) INPUT VECTOR.
873 * RO Z(N) OUTPUT VECTOR WHERE Z:= X - Y.
875 void luksan_mxvdif__(int *n, double *x, double *y,
878 /* System generated locals */
881 /* Local variables */
884 /* Parameter adjustments */
891 for (i__ = 1; i__ <= i__1; ++i__) {
892 z__[i__] = x[i__] - y[i__];
896 } /* luksan_mxvdif__ */
898 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
899 /* SUBROUTINE MXVNEG ALL SYSTEMS 88/12/01
901 * CHANGE THE SIGNS OF VECTOR ELEMENTS.
904 * II N VECTOR DIMENSION.
905 * RI X(N) INPUT VECTOR.
906 * RO Y(N) OUTPUT VECTOR WHERE Y:= - X.
908 void luksan_mxvneg__(int *n, double *x, double *y)
910 /* System generated locals */
913 /* Local variables */
916 /* Parameter adjustments */
922 for (i__ = 1; i__ <= i__1; ++i__) {
927 } /* luksan_mxvneg__ */
929 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
930 /* SUBROUTINE MXVSCL ALL SYSTEMS 88/12/01
932 * SCALING OF A VECTOR.
935 * II N VECTOR DIMENSION.
936 * RI X(N) INPUT VECTOR.
937 * RI A SCALING FACTOR.
938 * RO Y(N) OUTPUT VECTOR WHERE Y:= A*X.
940 void luksan_mxvscl__(int *n, double *a, double *x,
943 /* System generated locals */
946 /* Local variables */
949 /* Parameter adjustments */
955 for (i__ = 1; i__ <= i__1; ++i__) {
956 y[i__] = *a * x[i__];
960 } /* luksan_mxvscl__ */
962 /* cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc */
963 /* SUBROUTINE MXVSET ALL SYSTEMS 88/12/01
965 * A SCALAR IS SET TO ALL THE ELEMENTS OF A VECTOR.
968 * II N VECTOR DIMENSION.
969 * RI A INITIAL VALUE.
970 * RO X(N) OUTPUT VECTOR SUCH THAT X(I)=A FOR ALL I.
972 void luksan_mxvset__(int *n, double *a, double *x)
974 /* System generated locals */
977 /* Local variables */
980 /* Parameter adjustments */
985 for (i__ = 1; i__ <= i__1; ++i__) {
990 } /* luksan_mxvset__ */