| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- /* dlamrg.f -- translated by f2c (version 20061008).
 
-    You must link the resulting object file with libf2c:
 
- 	on Microsoft Windows system, link with libf2c.lib;
 
- 	on Linux or Unix systems, link with .../path/to/libf2c.a -lm
 
- 	or, if you install libf2c.a in a standard place, with -lf2c -lm
 
- 	-- in that order, at the end of the command line, as in
 
- 		cc *.o -lf2c -lm
 
- 	Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
 
- 		http://www.netlib.org/f2c/libf2c.zip
 
- */
 
- #include "f2c.h"
 
- #include "blaswrap.h"
 
- /* Subroutine */ int _starpu_dlamrg_(integer *n1, integer *n2, doublereal *a, integer 
 
- 	*dtrd1, integer *dtrd2, integer *index)
 
- {
 
-     /* System generated locals */
 
-     integer i__1;
 
-     /* Local variables */
 
-     integer i__, ind1, ind2, n1sv, n2sv;
 
- /*  -- LAPACK routine (version 3.2) -- */
 
- /*     Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. */
 
- /*     November 2006 */
 
- /*     .. Scalar Arguments .. */
 
- /*     .. */
 
- /*     .. Array Arguments .. */
 
- /*     .. */
 
- /*  Purpose */
 
- /*  ======= */
 
- /*  DLAMRG will create a permutation list which will merge the elements */
 
- /*  of A (which is composed of two independently sorted sets) into a */
 
- /*  single set which is sorted in ascending order. */
 
- /*  Arguments */
 
- /*  ========= */
 
- /*  N1     (input) INTEGER */
 
- /*  N2     (input) INTEGER */
 
- /*         These arguements contain the respective lengths of the two */
 
- /*         sorted lists to be merged. */
 
- /*  A      (input) DOUBLE PRECISION array, dimension (N1+N2) */
 
- /*         The first N1 elements of A contain a list of numbers which */
 
- /*         are sorted in either ascending or descending order.  Likewise */
 
- /*         for the final N2 elements. */
 
- /*  DTRD1  (input) INTEGER */
 
- /*  DTRD2  (input) INTEGER */
 
- /*         These are the strides to be taken through the array A. */
 
- /*         Allowable strides are 1 and -1.  They indicate whether a */
 
- /*         subset of A is sorted in ascending (DTRDx = 1) or descending */
 
- /*         (DTRDx = -1) order. */
 
- /*  INDEX  (output) INTEGER array, dimension (N1+N2) */
 
- /*         On exit this array will contain a permutation such that */
 
- /*         if B( I ) = A( INDEX( I ) ) for I=1,N1+N2, then B will be */
 
- /*         sorted in ascending order. */
 
- /*  ===================================================================== */
 
- /*     .. Local Scalars .. */
 
- /*     .. */
 
- /*     .. Executable Statements .. */
 
-     /* Parameter adjustments */
 
-     --index;
 
-     --a;
 
-     /* Function Body */
 
-     n1sv = *n1;
 
-     n2sv = *n2;
 
-     if (*dtrd1 > 0) {
 
- 	ind1 = 1;
 
-     } else {
 
- 	ind1 = *n1;
 
-     }
 
-     if (*dtrd2 > 0) {
 
- 	ind2 = *n1 + 1;
 
-     } else {
 
- 	ind2 = *n1 + *n2;
 
-     }
 
-     i__ = 1;
 
- /*     while ( (N1SV > 0) & (N2SV > 0) ) */
 
- L10:
 
-     if (n1sv > 0 && n2sv > 0) {
 
- 	if (a[ind1] <= a[ind2]) {
 
- 	    index[i__] = ind1;
 
- 	    ++i__;
 
- 	    ind1 += *dtrd1;
 
- 	    --n1sv;
 
- 	} else {
 
- 	    index[i__] = ind2;
 
- 	    ++i__;
 
- 	    ind2 += *dtrd2;
 
- 	    --n2sv;
 
- 	}
 
- 	goto L10;
 
-     }
 
- /*     end while */
 
-     if (n1sv == 0) {
 
- 	i__1 = n2sv;
 
- 	for (n1sv = 1; n1sv <= i__1; ++n1sv) {
 
- 	    index[i__] = ind2;
 
- 	    ++i__;
 
- 	    ind2 += *dtrd2;
 
- /* L20: */
 
- 	}
 
-     } else {
 
- /*     N2SV .EQ. 0 */
 
- 	i__1 = n1sv;
 
- 	for (n2sv = 1; n2sv <= i__1; ++n2sv) {
 
- 	    index[i__] = ind1;
 
- 	    ++i__;
 
- 	    ind1 += *dtrd1;
 
- /* L30: */
 
- 	}
 
-     }
 
-     return 0;
 
- /*     End of DLAMRG */
 
- } /* _starpu_dlamrg_ */
 
 
  |