v07i118: minit linear programming package, Patch 1

Brandon S. Allbery - comp.sources.misc allbery at uunet.UU.NET
Sun Aug 6 12:19:45 AEST 1989


Posting-number: Volume 7, Issue 118
Submitted-by: badri at ee.rochester.edu (Badri Lokanathan )
Archive-name: minit.p1

A few bugs were reported in the distribution version of minit.
On checking my archives, I found that the version used in my application
had these fixes, but not the standalone version that I had archived
separately. My apologies, the bug report follows.
----------------------------------------------------------------------------
Date: Fri, 4 Aug 89 22:43:03 EDT
From: elsie!ado at ncifcrf.gov (Arthur David Olson)
Message-Id: <8908050243.AA18767 at elsie>
To: badri at ee.rochester.edu
Subject: minit
Status: ORS

Thanks for contributing the linear programming code to comp.sources.misc--
it came along the very day I realized that a particular problem of mine
was amenable to linear programming!

In using the code I discovered a few problems; differences are attached.
Three problems:
	1.  When reallocating the "e" array because of an increase in
	    "MS", the code failed to remember the old size of the array
	    so it would know where to begin when allocating new elements.
	2.  When reallocating the "e" array because of an increase in
	    ""S", the code would set
		*tmp = realloc(tmp, ... 
	    rather than (correctly) setting
		*tmp = realloc(*tmp, ...
	3.  In code that was supposed to zero out the "x" and "w"
	    result arrays, a typo resulted in zeroing out the "x"
	    array twice.

				--ado

*** 1.1/minit.c	Fri Aug  4 22:36:30 1989
--- 1/minit.c	Fri Aug  4 22:36:31 1989
***************
*** 155,162 ****
--- 155,163 ----
  
  	if(M + 1 > MS)
  	{
  		/* Need to reallocate space. */
+ 		i = MS;
  		MS = M + 1;
  		if(!(jmax = (int *) realloc((char *)jmax,
  				(unsigned)(MS*sizeof(int)))))
  			return(0);
***************
*** 176,184 ****
  		if(!(e=(float **) realloc((char *) e,
  				(unsigned)(MS*sizeof(float *)))))
  			return(0);
  
! 		for(tmp = e + m, i = 0; i < MS; i++)
  			if(!(*(tmp++)=(float *)
  					malloc((unsigned)(LS*sizeof(float)))))
  				return(0);
  	}
--- 177,185 ----
  		if(!(e=(float **) realloc((char *) e,
  				(unsigned)(MS*sizeof(float *)))))
  			return(0);
  
! 		for(tmp = e + i; i < MS; i++)
  			if(!(*(tmp++)=(float *)
  					malloc((unsigned)(LS*sizeof(float)))))
  				return(0);
  	}
***************
*** 198,206 ****
  				(unsigned)(LS*sizeof(float)))))
  			return(0);
  
  		for(tmp = e, i = 0; i < MS; tmp++, i++)
! 			if(!(*tmp=(float *) realloc((char *) tmp,
  					(unsigned)(LS*sizeof(float)))))
  				return(0);
  	}
  
--- 199,207 ----
  				(unsigned)(LS*sizeof(float)))))
  			return(0);
  
  		for(tmp = e, i = 0; i < MS; tmp++, i++)
! 			if(!(*tmp=(float *) realloc((char *) *tmp,
  					(unsigned)(LS*sizeof(float)))))
  				return(0);
  	}
  
***************
*** 384,392 ****
  	for(i = 0; i < n; i++)
  		x[i] = 0.0;
  
  	for(j = 0; j < m; j++)
! 		x[j] = 0.0;
  
  	for(i = 1; i < m + 1; i++)
  	{
  		if(chk[i] >= n)
--- 385,393 ----
  	for(i = 0; i < n; i++)
  		x[i] = 0.0;
  
  	for(j = 0; j < m; j++)
! 		w[j] = 0.0;
  
  	for(i = 1; i < m + 1; i++)
  	{
  		if(chk[i] >= n)



More information about the Comp.sources.misc mailing list