rpms/ufsparse/devel patch.UFsparse, NONE, 1.1 ufsparse.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Quentin Spencer (qspencer) fedora-extras-commits at redhat.com
Sun Oct 2 06:33:50 UTC 2005


Author: qspencer

Update of /cvs/extras/rpms/ufsparse/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv19790/devel

Modified Files:
	.cvsignore sources 
Added Files:
	patch.UFsparse ufsparse.spec 
Log Message:
auto-import ufsparse-0.9-2 on branch devel from ufsparse-0.9-2.src.rpm


--- NEW FILE patch.UFsparse ---
*** UMFPACK/Source/umf_solve.c.orig	2005-02-01 23:53:11.815116040 +0100
--- UMFPACK/Source/umf_solve.c	2005-02-02 00:01:22.904346651 +0100
***************
*** 79,85 ****
      double *Z2, *Y, *B2, *Rs ;
      Int *Rperm, *Cperm, i, n, p, step, j, nz, status, p2, do_scale ;
  #ifdef COMPLEX
!     Int split ;
  #endif
  #ifndef NRECIPROCAL
      Int do_recip = Numeric->do_recip ;
--- 79,86 ----
      double *Z2, *Y, *B2, *Rs ;
      Int *Rperm, *Cperm, i, n, p, step, j, nz, status, p2, do_scale ;
  #ifdef COMPLEX
!     Int AXsplit ;
!     Int Bsplit ;
  #endif
  #ifndef NRECIPROCAL
      Int do_recip = Numeric->do_recip ;
***************
*** 141,147 ****
  	    return (UMFPACK_ERROR_argument_missing) ;
  	}
  	/* A, B, and X in split format if Az, Bz, and Xz present */
! 	split = SPLIT (Az) && SPLIT (Bz) && SPLIT (Xz) ;
  	Z = (Entry *) (SolveWork + 4*n) ;	/* Entry Z [0..n-1] */
  	S = (Entry *) (SolveWork + 6*n) ;	/* Entry S [0..n-1] */
  	Y = (double *) (SolveWork + 8*n) ;	/* double Y [0..n-1] */
--- 142,148 ----
  	    return (UMFPACK_ERROR_argument_missing) ;
  	}
  	/* A, B, and X in split format if Az, Bz, and Xz present */
! 	AXsplit = SPLIT (Az) || SPLIT(Xz);
  	Z = (Entry *) (SolveWork + 4*n) ;	/* Entry Z [0..n-1] */
  	S = (Entry *) (SolveWork + 6*n) ;	/* Entry S [0..n-1] */
  	Y = (double *) (SolveWork + 8*n) ;	/* double Y [0..n-1] */
***************
*** 150,159 ****
      }
      else
      {
! 	/* A is ignored, only  look at X and B for split/packed cases */
! 	split = SPLIT (Bz) && SPLIT (Xz) ;
      }
!     if (split)
      {
  	X = (Entry *) (SolveWork + 2*n) ;	/* Entry X [0..n-1] */
      }
--- 151,162 ----
      }
      else
      {
!       /* A is ignored, only  look at X for split/packed cases */
!       AXsplit = SPLIT(Xz);
      }
!     Bsplit = SPLIT (Bz);
! 
!     if (AXsplit)
      {
  	X = (Entry *) (SolveWork + 2*n) ;	/* Entry X [0..n-1] */
      }
***************
*** 209,215 ****
  	    for (p = 0 ; p < p2 ; p++)
  	    {
  		/* Y [Ai [p]] += ABS (Ax [p]) ; */
! 	        ASSIGN (aij, Ax, Az, p, split) ;
  		ABS (d, aij) ;
  		Y [Ai [p]] += d ;
  	    }
--- 212,218 ----
  	    for (p = 0 ; p < p2 ; p++)
  	    {
  		/* Y [Ai [p]] += ABS (Ax [p]) ; */
! 	        ASSIGN (aij, Ax, Az, p, AXsplit) ;
  		ABS (d, aij) ;
  		Y [Ai [p]] += d ;
  	    }
***************
*** 219,225 ****
  	    for (i = 0 ; i < n ; i++)
  	    {
  		/* B2 [i] = ABS (B [i]) ; */
! 		ASSIGN (bi, Bx, Bz, i, split) ;
  		ABS (B2 [i], bi) ;
  	    }
  
--- 222,228 ----
  	    for (i = 0 ; i < n ; i++)
  	    {
  		/* B2 [i] = ABS (B [i]) ; */
! 		ASSIGN (bi, Bx, Bz, i, Bsplit) ;
  		ABS (B2 [i], bi) ;
  	    }
  
***************
*** 276,282 ****
  			/* multiply by the scale factors */
  			for (i = 0 ; i < n ; i++)
  			{
! 			    ASSIGN (X [i], Bx, Bz, i, split) ;
  			    SCALE (X [i], Rs [i]) ;
  			}
  		    }
--- 279,285 ----
  			/* multiply by the scale factors */
  			for (i = 0 ; i < n ; i++)
  			{
! 			    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  			    SCALE (X [i], Rs [i]) ;
  			}
  		    }
***************
*** 286,292 ****
  			/* divide by the scale factors */
  			for (i = 0 ; i < n ; i++)
  			{
! 			    ASSIGN (X [i], Bx, Bz, i, split) ;
  			    SCALE_DIV (X [i], Rs [i]) ;
  			}
  		    }
--- 289,295 ----
  			/* divide by the scale factors */
  			for (i = 0 ; i < n ; i++)
  			{
! 			    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  			    SCALE_DIV (X [i], Rs [i]) ;
  			}
  		    }
***************
*** 302,308 ****
  		    for (i = 0 ; i < n ; i++)
  		    {
  			/* W [i] = B [Rperm [i]] ; */
! 			ASSIGN (W [i], Bx, Bz, Rperm [i], split) ;
  		    }
  		}
  	    }
--- 305,311 ----
  		    for (i = 0 ; i < n ; i++)
  		    {
  			/* W [i] = B [Rperm [i]] ; */
! 			ASSIGN (W [i], Bx, Bz, Rperm [i], Bsplit) ;
  		    }
  		}
  	    }
***************
*** 311,317 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* Z [i] = B [i] ; */
! 		    ASSIGN (Z [i], Bx, Bz, i, split) ;
  		}
  		flops += MULTSUB_FLOPS * nz ;
  		for (i = 0 ; i < n ; i++)
--- 314,320 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* Z [i] = B [i] ; */
! 		    ASSIGN (Z [i], Bx, Bz, i, Bsplit) ;
  		}
  		flops += MULTSUB_FLOPS * nz ;
  		for (i = 0 ; i < n ; i++)
***************
*** 321,327 ****
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* Z [Ai [p]] -= Ax [p] * xi ; */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			MULT_SUB (Z [Ai [p]], aij, xi) ;
  		    }
  		}
--- 324,330 ----
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* Z [Ai [p]] -= Ax [p] * xi ; */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			MULT_SUB (Z [Ai [p]], aij, xi) ;
  		    }
  		}
***************
*** 390,396 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* W [i] = B [i] ; */
! 		    ASSIGN (W [i], Bx, Bz, i, split) ;
  		    Z2 [i] = 0. ;
  		}
  		flops += (MULT_FLOPS + DECREMENT_FLOPS + ABS_FLOPS + 1) * nz ;
--- 393,399 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* W [i] = B [i] ; */
! 		    ASSIGN (W [i], Bx, Bz, i, Bsplit) ;
  		    Z2 [i] = 0. ;
  		}
  		flops += (MULT_FLOPS + DECREMENT_FLOPS + ABS_FLOPS + 1) * nz ;
***************
*** 403,409 ****
  			i = Ai [p] ;
  
  			/* axx = Ax [p] * xj ; */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			MULT (axx, aij, xj) ;
  
  			/* W [i] -= axx ; */
--- 406,412 ----
  			i = Ai [p] ;
  
  			/* axx = Ax [p] * xj ; */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			MULT (axx, aij, xj) ;
  
  			/* W [i] -= axx ; */
***************
*** 493,499 ****
  			    /* yi += ABS (Ax [p]) * Rs [Ai [p]] ; */
  			    /* note that abs (aij) is the same as
  			     * abs (conj (aij)) */
! 			    ASSIGN (aij, Ax, Az, p, split) ;
  			    ABS (d, aij) ;
  			    yi += (d * Rs [Ai [p]]) ;
  			}
--- 496,502 ----
  			    /* yi += ABS (Ax [p]) * Rs [Ai [p]] ; */
  			    /* note that abs (aij) is the same as
  			     * abs (conj (aij)) */
! 			    ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			    ABS (d, aij) ;
  			    yi += (d * Rs [Ai [p]]) ;
  			}
***************
*** 513,519 ****
  			    /* yi += ABS (Ax [p]) / Rs [Ai [p]] ; */
  			    /* note that abs (aij) is the same as
  			     * abs (conj (aij)) */
! 			    ASSIGN (aij, Ax, Az, p, split) ;
  			    ABS (d, aij) ;
  			    yi += (d / Rs [Ai [p]]) ;
  			}
--- 516,522 ----
  			    /* yi += ABS (Ax [p]) / Rs [Ai [p]] ; */
  			    /* note that abs (aij) is the same as
  			     * abs (conj (aij)) */
! 			    ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			    ABS (d, aij) ;
  			    yi += (d / Rs [Ai [p]]) ;
  			}
***************
*** 534,540 ****
  			/* yi += ABS (Ax [p]) ; */
  			/* note that abs (aij) is the same as
  			 * abs (conj (aij)) */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			ABS (d, aij) ;
  			yi += d ;
  		    }
--- 537,543 ----
  			/* yi += ABS (Ax [p]) ; */
  			/* note that abs (aij) is the same as
  			 * abs (conj (aij)) */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			ABS (d, aij) ;
  			yi += d ;
  		    }
***************
*** 546,552 ****
  	    for (i = 0 ; i < n ; i++)
  	    {
  		/* B2 [i] = ABS (B [i]) ; */
! 		ASSIGN (bi, Bx, Bz, i, split) ;
  		ABS (B2 [i], bi) ;
  	    }
  
--- 549,555 ----
  	    for (i = 0 ; i < n ; i++)
  	    {
  		/* B2 [i] = ABS (B [i]) ; */
! 		ASSIGN (bi, Bx, Bz, i, Bsplit) ;
  		ABS (B2 [i], bi) ;
  	    }
  
***************
*** 568,574 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* W [i] = B [Cperm [i]] ; */
! 		    ASSIGN (W [i], Bx, Bz, Cperm [i], split) ;
  		}
  	    }
  	    else
--- 571,577 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* W [i] = B [Cperm [i]] ; */
! 		    ASSIGN (W [i], Bx, Bz, Cperm [i], Bsplit) ;
  		}
  	    }
  	    else
***************
*** 577,583 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* Z [i] = B [i] ; */
! 		    ASSIGN (Z [i], Bx, Bz, i, split) ;
  		}
  		flops += MULTSUB_FLOPS * nz ;
  		for (i = 0 ; i < n ; i++)
--- 580,586 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* Z [i] = B [i] ; */
! 		    ASSIGN (Z [i], Bx, Bz, i, Bsplit) ;
  		}
  		flops += MULTSUB_FLOPS * nz ;
  		for (i = 0 ; i < n ; i++)
***************
*** 587,593 ****
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* zi -= conjugate (Ax [p]) * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			MULT_SUB_CONJ (zi, X [Ai [p]], aij) ;
  		    }
  		    Z [i] = zi ;
--- 590,596 ----
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* zi -= conjugate (Ax [p]) * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, Bsplit) ;
  			MULT_SUB_CONJ (zi, X [Ai [p]], aij) ;
  		    }
  		    Z [i] = zi ;
***************
*** 696,708 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* wi = B [i] ; */
! 		    ASSIGN (wi, Bx, Bz, i, split) ;
  		    z2i = 0. ;
  		    p2 = Ap [i+1] ;
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* axx = conjugate (Ax [p]) * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			MULT_CONJ (axx, X [Ai [p]], aij) ;
  
  			/* wi -= axx ; */
--- 699,711 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* wi = B [i] ; */
! 		    ASSIGN (wi, Bx, Bz, i, Bsplit) ;
  		    z2i = 0. ;
  		    p2 = Ap [i+1] ;
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* axx = conjugate (Ax [p]) * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			MULT_CONJ (axx, X [Ai [p]], aij) ;
  
  			/* wi -= axx ; */
***************
*** 766,772 ****
  			    /* yi += ABS (Ax [p]) * Rs [Ai [p]] ; */
  			    /* note that A.' is the array transpose,
  			     * so no conjugate */
! 			    ASSIGN (aij, Ax, Az, p, split) ;
  			    ABS (d, aij) ;
  			    yi += (d * Rs [Ai [p]]) ;
  			}
--- 769,775 ----
  			    /* yi += ABS (Ax [p]) * Rs [Ai [p]] ; */
  			    /* note that A.' is the array transpose,
  			     * so no conjugate */
! 			    ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			    ABS (d, aij) ;
  			    yi += (d * Rs [Ai [p]]) ;
  			}
***************
*** 786,792 ****
  			    /* yi += ABS (Ax [p]) / Rs [Ai [p]] ; */
  			    /* note that A.' is the array transpose,
  			     * so no conjugate */
! 			    ASSIGN (aij, Ax, Az, p, split) ;
  			    ABS (d, aij) ;
  			    yi += (d / Rs [Ai [p]]) ;
  			}
--- 789,795 ----
  			    /* yi += ABS (Ax [p]) / Rs [Ai [p]] ; */
  			    /* note that A.' is the array transpose,
  			     * so no conjugate */
! 			    ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			    ABS (d, aij) ;
  			    yi += (d / Rs [Ai [p]]) ;
  			}
***************
*** 807,813 ****
  			/* yi += ABS (Ax [p]) */
  			/* note that A.' is the array transpose,
  			 * so no conjugate */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			ABS (d, aij) ;
  			yi += d ;
  		    }
--- 810,816 ----
  			/* yi += ABS (Ax [p]) */
  			/* note that A.' is the array transpose,
  			 * so no conjugate */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			ABS (d, aij) ;
  			yi += d ;
  		    }
***************
*** 819,825 ****
  	    for (i = 0 ; i < n ; i++)
  	    {
  		/* B2 [i] = ABS (B [i]) ; */
! 		ASSIGN (bi, Bx, Bz, i, split) ;
  		ABS (B2 [i], bi) ;
  	    }
  
--- 822,828 ----
  	    for (i = 0 ; i < n ; i++)
  	    {
  		/* B2 [i] = ABS (B [i]) ; */
! 		ASSIGN (bi, Bx, Bz, i, Bsplit) ;
  		ABS (B2 [i], bi) ;
  	    }
  
***************
*** 841,847 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* W [i] = B [Cperm [i]] ; */
! 		    ASSIGN (W [i], Bx, Bz, Cperm [i], split) ;
  		}
  	    }
  	    else
--- 844,850 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* W [i] = B [Cperm [i]] ; */
! 		    ASSIGN (W [i], Bx, Bz, Cperm [i], Bsplit) ;
  		}
  	    }
  	    else
***************
*** 850,856 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* Z [i] = B [i] ; */
! 		    ASSIGN (Z [i], Bx, Bz, i, split) ;
  		}
  		flops += MULTSUB_FLOPS * nz ;
  		for (i = 0 ; i < n ; i++)
--- 853,859 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* Z [i] = B [i] ; */
! 		    ASSIGN (Z [i], Bx, Bz, i, Bsplit) ;
  		}
  		flops += MULTSUB_FLOPS * nz ;
  		for (i = 0 ; i < n ; i++)
***************
*** 860,866 ****
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* zi -= Ax [p] * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			MULT_SUB (zi, aij, X [Ai [p]]) ;
  		    }
  		    Z [i] = zi ;
--- 863,869 ----
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* zi -= Ax [p] * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			MULT_SUB (zi, aij, X [Ai [p]]) ;
  		    }
  		    Z [i] = zi ;
***************
*** 969,981 ****
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* wi = B [i] ; */
! 		    ASSIGN (wi, Bx, Bz, i, split) ;
  		    z2i = 0. ;
  		    p2 = Ap [i+1] ;
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* axx = Ax [p] * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, split) ;
  			MULT (axx, aij, X [Ai [p]]) ;
  
  			/* wi -= axx ; */
--- 972,984 ----
  		for (i = 0 ; i < n ; i++)
  		{
  		    /* wi = B [i] ; */
! 		    ASSIGN (wi, Bx, Bz, i, Bsplit) ;
  		    z2i = 0. ;
  		    p2 = Ap [i+1] ;
  		    for (p = Ap [i] ; p < p2 ; p++)
  		    {
  			/* axx = Ax [p] * X [Ai [p]] ; */
! 			ASSIGN (aij, Ax, Az, p, AXsplit) ;
  			MULT (axx, aij, X [Ai [p]]) ;
  
  			/* wi -= axx ; */
***************
*** 1011,1017 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [Rperm [i]] ; */
! 	    ASSIGN (X [i], Bx, Bz, Rperm [i], split) ;
  	}
  	flops = UMF_lsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
--- 1014,1020 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [Rperm [i]] ; */
! 	    ASSIGN (X [i], Bx, Bz, Rperm [i], Bsplit) ;
  	}
  	flops = UMF_lsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
***************
*** 1027,1033 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_lsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
--- 1030,1036 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_lsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
***************
*** 1043,1049 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* W [i] = B [i] ; */
! 	    ASSIGN (W [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_lhsolve (Numeric, W, Pattern) ;
  	for (i = 0 ; i < n ; i++)
--- 1046,1052 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* W [i] = B [i] ; */
! 	    ASSIGN (W [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_lhsolve (Numeric, W, Pattern) ;
  	for (i = 0 ; i < n ; i++)
***************
*** 1063,1069 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* W [i] = B [i] ; */
! 	    ASSIGN (W [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_ltsolve (Numeric, W, Pattern) ;
  	for (i = 0 ; i < n ; i++)
--- 1066,1072 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* W [i] = B [i] ; */
! 	    ASSIGN (W [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_ltsolve (Numeric, W, Pattern) ;
  	for (i = 0 ; i < n ; i++)
***************
*** 1083,1089 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_lhsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
--- 1086,1092 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_lhsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
***************
*** 1099,1105 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_ltsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
--- 1102,1108 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_ltsolve (Numeric, X, Pattern) ;
  	status = UMFPACK_OK ;
***************
*** 1115,1121 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* W [i] = B [i] ; */
! 	    ASSIGN (W [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_usolve (Numeric, W, Pattern) ;
  	for (i = 0 ; i < n ; i++)
--- 1118,1124 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* W [i] = B [i] ; */
! 	    ASSIGN (W [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_usolve (Numeric, W, Pattern) ;
  	for (i = 0 ; i < n ; i++)
***************
*** 1134,1140 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_usolve (Numeric, X, Pattern) ;
  
--- 1137,1143 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_usolve (Numeric, X, Pattern) ;
  
***************
*** 1149,1155 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [Cperm [i]] ; */
! 	    ASSIGN (X [i], Bx, Bz, Cperm [i], split) ;
  	}
  	flops = UMF_uhsolve (Numeric, X, Pattern) ;
  
--- 1152,1158 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [Cperm [i]] ; */
! 	    ASSIGN (X [i], Bx, Bz, Cperm [i], Bsplit) ;
  	}
  	flops = UMF_uhsolve (Numeric, X, Pattern) ;
  
***************
*** 1164,1170 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [Cperm [i]] ; */
! 	    ASSIGN (X [i], Bx, Bz, Cperm [i], split) ;
  	}
  	flops = UMF_utsolve (Numeric, X, Pattern) ;
  
--- 1167,1173 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [Cperm [i]] ; */
! 	    ASSIGN (X [i], Bx, Bz, Cperm [i], Bsplit) ;
  	}
  	flops = UMF_utsolve (Numeric, X, Pattern) ;
  
***************
*** 1179,1185 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	  ASSIGN (X [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_uhsolve (Numeric, X, Pattern) ;
  
--- 1182,1188 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	  ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_uhsolve (Numeric, X, Pattern) ;
  
***************
*** 1194,1200 ****
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, split) ;
  	}
  	flops = UMF_utsolve (Numeric, X, Pattern) ;
  
--- 1197,1203 ----
  	for (i = 0 ; i < n ; i++)
  	{
  	    /* X [i] = B [i] ; */
! 	    ASSIGN (X [i], Bx, Bz, i, Bsplit) ;
  	}
  	flops = UMF_utsolve (Numeric, X, Pattern) ;
  
***************
*** 1206,1212 ****
  
  #ifdef COMPLEX
      /* copy the solution back, from Entry X [ ] to double Xx [ ] and Xz [ ] */
!     if (split)
      {
  	for (i = 0 ; i < n ; i++)
  	{
--- 1209,1215 ----
  
  #ifdef COMPLEX
      /* copy the solution back, from Entry X [ ] to double Xx [ ] and Xz [ ] */
!     if (AXsplit)
      {
  	for (i = 0 ; i < n ; i++)
  	{


--- NEW FILE ufsparse.spec ---
Name:           ufsparse
Version:        0.9
Release:        2
Summary:        University of Florida sparse matrix libraries

Group:          System Environment/Libraries
License:        Distributable
URL:            http://www.cise.ufl.edu/research/sparse/umfpack/
Source0:        http://www.cise.ufl.edu/research/sparse/beta/Aug31_2005/UFsparse.tar.gz
Patch0:         patch.UFsparse
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Obsoletes:      umfpack

%description
ufsparse is a collection of libraries for computations involving sparse
matrices.  The package includes the following libraries:
 1. AMD         approximate minimum degree ordering
 2. COLAMD      column approximate minimum degree ordering
 3. CCOLAMD     constrained column approximate minimum degree ordering
 4. KLU         sparse LU factorization, primarily for circuit simulation
 5. UMFPACK     sparse LU factorization

Note that an additional library, CHOLMOD (sparse Cholesky factorization), 
is part of the source package, but is not compiled because it requires
an external library METIS, which is distributed under non-free licensing
terms that make it ineligible for inclusion in Fedora Extras.


%package devel
Summary:        Development headers and files for UFSparse
Group:          Development/Libraries
Requires:       %{name} = %{version}-%{release}
BuildRequires:  blas-devel
Obsoletes:      umfpack-devel

%description devel
The ufsparse-devel package contains files needed for developing
applications which use the ufsparse libraries.


%prep
%setup -q -n UFsparse
%patch0 -p0


%build
%define amd_version 1.2
%define amd_version_major 1
mkdir Devel
mkdir Doc
mkdir Lib
mkdir Include
pushd AMD
  pushd Source
    make -f Makefile CFLAGS="$RPM_OPT_FLAGS -fPIC" 
    gcc -shared -Wl,-soname,libamd.so.%{amd_version_major} -o ../Lib/libamd.so.%{amd_version} `ls *.o`
  popd
  cp Lib/*.a Lib/*.so* ../Lib
  cp Include/*.h ../Include
  mkdir ../Doc/AMD/
  cp README.txt Doc/License Doc/ChangeLog ../Doc/AMD/
  mkdir ../Devel/AMD/
  cp Doc/*.pdf ../Devel/AMD/
popd
pushd Lib
  ln -sf libamd.so.%{amd_version} libamd.so.%{amd_version_major}
  ln -sf libamd.so.%{amd_version} libamd.so
popd

%define ccolamd_version 1.0
%define ccolamd_version_major 1
pushd CCOLAMD
  make -f Makefile CFLAGS="$RPM_OPT_FLAGS -fPIC" 
  gcc -shared -Wl,-soname,libccolamd.so.%{ccolamd_version_major} -o libccolamd.so.%{ccolamd_version} `ls *.o`
  cp *.a *.so* ../Lib
  cp *.h ../Include
  mkdir ../Doc/CCOLAMD/
  cp README.txt lesser.txt ChangeLog ../Doc/CCOLAMD
popd
pushd Lib
  ln -sf libccolamd.so.%{ccolamd_version} libccolamd.so.%{ccolamd_version_major}
  ln -sf libccolamd.so.%{ccolamd_version} libccolamd.so
popd

### The code below can be used to compile the cholmod library, but it is
### disabled because it requires the METIS library, which has a non-free
### license, and therefore can not be included in Fedora Extras.
#%define cholmod_version 0.6
#%define cholmod_version_major 0
#pushd CHOLMOD
#  pushd Lib
#    make -f Makefile CFLAGS="$RPM_OPT_FLAGS -I/usr/include/metis -fPIC" 
#    gcc -shared -Wl,-soname,libcholmod.so.%{cholmod_version_major} -o ../Lib/libcholmod.so.%{cholmod_version} `ls *.o`
#  popd
#  cp Lib/*.a Lib/*.so* ../Lib
#  cp Include/*.h ../Include
#  mkdir ../Doc/CHOLMOD
#  cp README.txt ../Doc/CHOLMOD/
#  cp Cholesky/License.txt ../Doc/CHOLMOD/Cholesky_License.txt
#  cp Core/License.txt ../Doc/CHOLMOD/Core_License.txt
#  cp MatrixOps/License.txt ../Doc/CHOLMOD/MatrixOps_License.txt
#  cp Partition/License.txt ../Doc/CHOLMOD/Partition_License.txt
#  cp Supernodal/License.txt ../Doc/CHOLMOD/Supernodal_License.txt
#  mkdir ../Devel/CHOLMOD/
#  cp Doc/*.pdf ../Devel/CHOLMOD/
#popd
#pushd Lib
#  ln -sf libcholmod.so.%{cholmod_version} libcholmod.so.%{cholmod_version_major}
#  ln -sf libcholmod.so.%{cholmod_version} libcholmod.so
#popd

%define colamd_version 2.4
%define colamd_version_major 2
pushd COLAMD
  make -f Makefile CFLAGS="$RPM_OPT_FLAGS -fPIC" library
  gcc -shared -Wl,-soname,libcolamd.so.%{colamd_version_major} -o libcolamd.so.%{colamd_version} `ls *.o`
  cp *.a *.so* ../Lib
  cp *.h ../Include
  mkdir ../Doc/COLAMD/
  cp README.txt ChangeLog ../Doc/COLAMD
popd
pushd Lib
  ln -sf libcolamd.so.%{colamd_version} libcolamd.so.%{colamd_version_major}
  ln -sf libcolamd.so.%{colamd_version} libcolamd.so
popd

%define ldl_version 1.2
%define ldl_version_major 1
pushd LDL
  make -f Makefile CFLAGS="$RPM_OPT_FLAGS -fPIC" libldl.a
  gcc -shared -Wl,-soname,libldl.so.%{ldl_version_major} -o libldl.so.%{ldl_version} `ls *.o`
  cp *.a *.so* ../Lib
  cp *.h ../Include
  mkdir ../Doc/LDL/
  cp README.txt ChangeLog lesser.txt ../Doc/LDL/
  mkdir ../Devel/LDL/
  cp *.pdf *.ps ../Devel/LDL/
popd
pushd Lib
  ln -sf libldl.so.%{ldl_version} libldl.so.%{ldl_version_major}
  ln -sf libldl.so.%{ldl_version} libldl.so
popd

%define umfpack_version 4.5
%define umfpack_version_major 4
pushd UMFPACK
  pushd Source
    make -f Makefile CFLAGS="$RPM_OPT_FLAGS -fPIC" 
    gcc -shared -Wl,-soname,libumfpack.so.%{umfpack_version_major} -o ../Lib/libumfpack.so.%{umfpack_version} `ls *.o` -lblas -lm
  popd
  cp Lib/*.a Lib/*.so* ../Lib
  cp Include/*.h ../Include
  mkdir ../Doc/UMFPACK
  cp Doc/License Doc/ChangeLog Doc/lesser.txt README.txt ../Doc/UMFPACK
  mkdir ../Devel/UMFPACK/
  cp Doc/*.pdf ../Devel/UMFPACK/
popd
pushd Lib
  ln -sf libumfpack.so.%{umfpack_version} libumfpack.so.%{umfpack_version_major}
  ln -sf libumfpack.so.%{umfpack_version} libumfpack.so
popd


%install
rm -rf ${RPM_BUILD_ROOT}
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}
mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/%{name}
pushd Lib
  for f in *.a *.so*; do
    cp -a $f ${RPM_BUILD_ROOT}%{_libdir}/$f
  done
popd
pushd Include
  for f in *.h;  do
    cp -a $f ${RPM_BUILD_ROOT}%{_includedir}/%{name}/$f
  done
popd


%clean
rm -rf ${RPM_BUILD_ROOT}

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig


%files
%defattr(-,root,root)
%doc Doc/*
%{_libdir}/lib*.so.*

%files devel
%defattr(-,root,root)
%doc Devel/*
%{_includedir}/%{name}
%{_libdir}/lib*.a
%{_libdir}/lib*.so

%changelog
* Sat Oct 01 2005 Quentin Spencer <qspencer at users.sourceforge.net> 0.9-2
- Modify description, other modifications for import into FE.

* Tue Sep 08 2005 David Bateman <dbateman at free.fr> 0.9-1
- First version.


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/ufsparse/devel/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore	2 Oct 2005 06:30:14 -0000	1.1
+++ .cvsignore	2 Oct 2005 06:33:48 -0000	1.2
@@ -0,0 +1 @@
+UFsparse.tar.gz


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/ufsparse/devel/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	2 Oct 2005 06:30:14 -0000	1.1
+++ sources	2 Oct 2005 06:33:48 -0000	1.2
@@ -0,0 +1 @@
+c34193f9b8c7376bce0d17f214f40f6e  UFsparse.tar.gz




More information about the scm-commits mailing list