CHANGES PLANNED SOMEDAY
1) more vertices in k-d tree for dimension > 2, to get continuity.
2) triangulation based method.
----------------------

19 Nov 1987 	workspace not big enough for degree=2

22 Jan 1988	switched from depth first to breadth first tree build

14 Mar 1988	lostt.3   extra space needed if (method mod 1000 = 0),
		not the documented (method/1000=0)

28 Apr 1988	l2tr.g 	vval2 needed to be initialized to 0

		galaxy smooth needs double precision on vax

26 May 1988	bbox.g    add 10% margin to allow limited extrapolation

6 June 1988	loess/lostt.f	trL wasn't set if method/1000==0

10 June 1988	losave, loread

		v(RCOND)  1 / max condition number

12 June 1988	lofort

21 June 1988	additional workspace for explicit L

27 June 1988	workspace checking in lowesf was slightly pessimistic

30 June 1988	Changed default fdiam to 0.
		Added warning messages for memory limits and pseudoinverse.

4 Aug 1988	bbox.g  changed margin from 10% to 0.5%.

24 Aug 1988	loser documentation should have specified workspace
		of size ...+m*n, not ...+m**2.

Sep 1988
	loess-based approximations of delta1,2.
	pseudo-values, so statistics are available with robustness iterations.
	reorganize error messages to better fit into S.
	sample driver program.
	somewhat shorter code generated by ehg170.

20 Dec 1988
	workspace in loser

27 Jan 1989
	workspace checking in lostt was a bit pessimistic.

3 Feb 1989
	l2fit, l2tr: error message should contain sqrt(rho)

18 Dec 1989
	ehg141, ehg179-ehg181:   new delta approximations

24 Jan 1990
	master copy moved from Sun3/180 to SGI 4D/240S
	(no intentional changes)

25 Jan 1990
	(many routines touched; ehg127 added)   cleaned up computational
	kernel, added provision for only first dd<=d variables to enter
	the distance calculation ("conditionally parametric variables"),
	added independent bounds on total and componentwise degree for
	local polynomial model,  made extrapolation warning message print
	a bit more detail.

14 Mar 1990
	added setLf argument to lowesd; added lowesr, lowesl for resmoothing.

-------------------------------------------------------
Converting to the new version of loess
5 April 1990

Over the past few months, a number of changes have been made to the
loess package, to provide more control over the local model, to allow
conditionally parametric variables, and to return exact statistical
quantities for the blending method.  Unlike earlier internal
algorithmic improvements, this round of changes added some extra
arguments in the Fortran calling sequences.  The purpose of this note
is to assist in converting programs that called the old version.

An explicit argument setLf has been added to lowesd(), since it affects
the partitioning of the workspace.  To help protect against inadvertent
version mismatches, the version number that lowesd() checks has also
been changed.  The componentwise degree and the specification of
conditionally nonparametric variables can be changed from the default
by modifying iv(CDEG) and iv(NDIST).

The influence matrix L for blending is now explicitly available by
calling a new subroutine lowesl(),  but this loses the speed
advantage of blending.  A faster, sometimes equivalent method is
to use the influence matrix that carries data values to coefficients
at the vertices of the k-d tree.  This information is saved in iv(iv(Lq))
and v(iv(Lf)), for the afficionado.

The new subroutine lowesr() takes advantage of Lq and Lf to allow rapid
resmoothing for applications when only y, not x, is subject to change.
-------------------------------------------------------

7 May 1990
	new delta approximations.
	added prior weights to input format for sample driver.

29 May 1990
	loess,lostt,loser,pseudo moved from Fortran to S.

11 Jul 1990
	column equilibration, so pseudoinverse is needed less often.

27 May 1991
lowesd	version 105;  increased nvmax,ncmax to max(200,n).
l2fit	added ihat=1 (diagL only).
ehg133,lowese	removed unused arguments dist,eta.
ehg190,ehg141	changed name to lowesa, slight change to calling sequence.
ehg144	changed name to lowesc
m9rwt	changed name to lowesw
pseudo	changed name to lowesp

22 Jul 1991    IMPORTANT BUG FIX!
ehg131	vval2 should be dimensioned 0:d, not 0:8

26 Jul 1991
lowesd	change calling sequence to provide tighter memory allocation
diff old/man/internal new/man/internal
< lowesd(105,iv,liv,lv,v,d,n,f,tdeg,setLf)	setup workspace
> lowesd(106,iv,liv,lv,v,d,n,f,tdeg,nvmax,setLf)	setup workspace
< liv	50+(2^d+6)*max(200,n)
< 	if setLf, add nf*max(200,n)
< lv	50+(3*d+4)*max(200,n)+(tau+2)*nf
< 	if setLf, add (d+1)*nf*max(200,n)
> liv	50+(2^d+6)*nvmax
> 	if setLf, add nf*nvmax
> lv	50+(3*d+4)*nvmax+(tau+2)*nf
> 	if setLf, add (d+1)*nf*nvmax
> nvmax	limit on number of vertices for kd-tree; e.g. max(200,n)

20 Sep 1991
sample.f   brought in sync with recent loess changes.

24 Dec 1991
l2fit.f    fixed comment in single precision version

10 Jan 1992
ehg197.f   new formula for approximating trL, valid for small f

15 May 1992
netlib/a/dloess   now includes C drivers (written by Ming-Jen Shyu,
	adapted from code used inside the S system)

22 Jun 1992
ehg191.f     Loop 11 ran too far, picking up one more value than necessary.
	The value was not used, so the loess computation itself is unaffected,
	but on some systems the old code could conceivably cause a reference
	to an invalid memory address and abort with a segmentation fault
	message.

23 Jun 1992
S.h	#include <math.h>,  since loessc.c calls floor() and pow().

18 Aug 1992
netlib/a/dloess   A new release with bug fixes in all the C drivers, new
	example codes, and detail documentations.

25 Mar 1996
predict.c  fix enormous memory leak.       update email address
