[comp.sys.next] Statistics package for NeXT

hal@econ.lsa.umich.edu (Hal Varian) (06/27/91)

A few days ago I posted a note about statistics packages for the
NeXT.  Here's some more information on xlispstat, including 
instructions for compiling the X11 version.

The program xlispstat is a full-featured statistics package based on
xlisp available by ftp from umnstat.stat.umn.edu.  A tutorial is
available at the same location; the tutorial is for the Mac version,
but it applies to the unix version with a few minor changes.  Complete
documentation is available in Luke Tierney's book, Lisp-Stat, John
Wiley and Sons, 1990, ISBN 0-471-50916-7.

This package can be compiled for the NeXT with minor changes to the
Makefile.  There are two ways to do it.

X Windows.  This gives you access to the many graphics tools,
including spinplots, scatterplots, histograms, box plots, etc.

The attached Makefile will compile xlispstat using co-Xist libraries
for X Windows.  It assumes that you have installed co-Xist and
xlispstat in the default location.  I'm told that it also compiles
with mouseX, but haven't checked this myself.

Generic unix.  This way you have all the computational tools, but only
minimal graphics capability.  In order to compile this version, change
the GRAPHSYS flag from X11WINDOWS to GNUPLOT in the Makefile.

In the generic version, xlispstat produces Tektronics output for a few
simple types of plots.  You can cut and paste this output into a file
and run it through ps4014 to view the output on the NeXT.  To do this,
use the ps4014 emulator in the extended distribution:
   ps4014 -R -S 7 < infile.tek > outfile.ps
The resulting ps file can be viewed using Preview.  You can also run
it through Darcy Brockbank's program ps2eps (posted here a few weeks
ago) and produce an eps file that can inserted into documents, etc.

--
Hal Varian                Internet: Hal_Varian@um.cc.umich.edu
Dept of Economics         BITNET: userCABX@umichum
Univ of Michigan          NeXTmail: hal@alfred.econ.lsa.umich.edu
Ann Arbor, MI 48109       313-764-2364

------------------------------cut here----------------------------------
#Makefile for xlispstat
#Minor modifications by Hal Varian (HRV) for NeXT 

##############################################################################
# Directories
# XLISPLIB is where the xlisp executable, the .lsp files to be loaded on 
# startup and the examples are to be kept.
# BINDIR is where the xlispstat shell script is to be put.
#
# NOTE: if XLISPLIB is not empty it MUST end with a /

XLISPLIB=/usr/local/lib/xlispstat/
BINDIR=/usr/local/bin

##############################################################################
##############################################################################
# HRV: Graphics system. Uncomment one of the following choices:
# HRV: use GNUPLOT if you don't have Xwindows

#GRAPHSYS = GNUPLOT
#GRAPHSYS = SUNVIEW
GRAPHSYS = X11WINDOWS

##############################################################################
##############################################################################
# Sun Operating System Version. Only used for SUNVIEW graphics system.
# Use SUN3X for sun OS 3.X and SUN4X for sun OS 4.X under SunView;

#SUNOS = SUN3X
#SUNOS = SUN4X

##############################################################################
##############################################################################
# User Compiler Flags
# Add a -I directive if the X11 include files are not in a standard place
# For Sun's OpenLook, for example, add -I/usr/openwin/include

#UCFLAGS = -O -f68881
#ULDFLAGS = -f68881
#HRV: eliminate 68881 option; add= -D flag to avoid link conflict
UCFLAGS = -O -v -Draise=rraise
ULDFLAGS =  

CC=cc
LD=ld

##############################################################################
##############################################################################
# Foreign function call flag. If this flag is defined you should also
# define a machine chosen from one of the directories in the machines
# directory. Look at the README file in the machine directory for your
# machine - you may have to add some additional compiler or ld flags
# to make dynamic loading work.
#
# If you do not want to use foreign function calling define the machine
# as `generic'

#FOREIGN_FLAG = -DFOREIGNCALL
#MACHINE = sun3
#HRV: use generic machine 
MACHINE = generic

##############################################################################
##############################################################################
# Additional libraries and files to load at compile time

EXTRALIBS=
EXTRAOBJS=

##############################################################################
##############################################################################
# Directory to search for X11 libraries (libX11.a, etc.)

#HRV: this is where co-Xist puts the X11 libraries
X11LIBDIR=/usr/include/X11

###############################################################################
###############################################################################
###                                                                         ###
###                      DO NOT EDIT BELOW THIS LINE                        ###
###                                                                         ###
###############################################################################
###############################################################################

CFLAGS = -DUNIX -D${GRAPHSYS} ${UCFLAGS} ${FOREIGN_FLAG}
LIBS = ${EXTRALIBS} -lm
LDFLAGS = ${ULDFLAGS}

OSOBJS = xsdynload.o xssystem.o

XLISPOBJS = xlbfun.o xlcont.o xldbug.o xldmem.o \
	xleval.o xlfio.o xlftab.o xlglob.o xlimage.o xlinit.o xlio.o \
	xlisp.o xljump.o xllist.o xlpp.o xlprin.o \
	xlread.o xlstr.o xlsubr.o xlsym.o xlsys.o xlstruct.o

COMMONOBJS = common.o commonarrays.o commonmath.o complex.o 

STATOBJS = basics.o compound.o distribs.o ddistribs.o \
	hardwareobs.o matrices1.o matrices2.o math.o objectinit.o \
	objects.o optimize.o statfloat.o sortdata.o statinit.o \
	statistics.o uni.o utilities.o utilities2.o gamln.o splines.o \
	kernel.o lowess.o cfft.o

DISTOBJS = betabase.o gammabase.o nor.o ppnd.o studentbase.o bivnor.o

LINALGOBJS = linalg.o cholesky.o ludecomp.o qrdecomp.o rcondest.o svdecomp.o \
	 makerotation.o

GRAFOBJS = xsiview2.o xsiviewintrn.o xsnewplots.o \
	xsgraphics.o xsiview3.o xsiviewwin.o xsiview.o \
	xsiviewwin2.o menus.o dialogs.o iviewdata.o iviewscale.o iview.o \
	iviewintrn.o xshistogram.o xsnamelist.o xsscatmat.o xsspin.o \
	xsscatterpl.o windows.o stmem.o graphics.o myplot.o term.o \
	postscript.o

BAYESOBJS = minimize.o functions.o derivatives.o xsbayes.o


BASICOBJS = ${OSOBJS} ${XLISPOBJS} ${COMMONOBJS} ${STATOBJS} ${DISTOBJS} \
	${LINALGOBJS} ${GRAFOBJS} ${BAYESOBJS}

OBJS = ${BASICOBJS} ${EXTRAOBJS}

GNUPLOTOBJS = unixstuff.o dummygraph.o

SUNOBJS = sunstuff.o sungraphwin.o sunresizebr.o sunwindows.o \
	sundialogs.o sunmenus.o

X11WINDOWSOBJS = X11BSDstuff.o X11graph.o X11menus.o X11dialogs.o \
	X11buttons.o X11text.o X11toggle.o X11choice.o X11slider.o \
	X11listitem.o X11resizebr.o X11scroll.o

LISPFILES = init.lsp common.lsp help.lsp objects.lsp statistics.lsp \
	dialogs.lsp graphics.lsp graphics2.lsp graphics3.lsp regression.lsp \
	oneway.lsp nonlin.lsp maximize.lsp bayes.lsp step.lsp autoload.lsp \
	menubar.lsp xlisp.help


xlispstat: Makefile xlisp setup.shell
	./setup.shell xlispstat ${XLISPLIB}
	chmod a+x xlispstat

install: installexecs installlisp

installexecs: xlispstat xlisp
	cp xlispstat ${BINDIR}
	cp xlisp ${XLISPLIB}
	
installlisp:
	cp ${LISPFILES} ${XLISPLIB}
	-mkdir ${XLISPLIB}/Data
	-mkdir ${XLISPLIB}/Examples
	cp Data/* ${XLISPLIB}/Data
	cp Examples/* ${XLISPLIB}/Examples


installX11sun: X11sun installlisp
	cp xlispstat ${BINDIR}
	cp sunxlisp X11xlisp ${XLISPLIB}

xlisp:	${GRAPHSYS}xlisp

GNUPLOTxlisp:	${OBJS} ${GNUPLOTOBJS}
	${CC} ${LDFLAGS} -o xlisp ${OBJS} ${GNUPLOTOBJS} ${LIBS}
	touch GNUPLOTxlisp

SUNVIEWxlisp:	${OBJS} ${SUNOBJS}
	${CC} ${LDFLAGS} -o xlisp ${OBJS} ${SUNOBJS} \
	-lsuntool -lsunwindow -lpixrect ${LIBS}
	touch SUNVIEWxlisp

X11WINDOWSxlisp:	${OBJS} ${X11WINDOWSOBJS}
	${CC} ${LDFLAGS} -o xlisp ${OBJS} ${X11WINDOWSOBJS} \
	-L${X11LIBDIR} -lX11 ${LIBS}
	touch X11WINDOWSxlisp

X11sun:	sun X11
	setup.shell xlispstat ${XLISPLIB} both
	chmod a+x xlispstat
	
sun:
	touch Makefile
	make xlisp GRAPHSYS=SUNVIEW
	mv xlisp sunxlisp

X11:
	touch Makefile
	make xlisp GRAPHSYS=X11WINDOWS
	mv xlisp X11xlisp
	
clean:
	rm -f core *.o *~

cleanall: clean
	rm -f xlisp sunxlisp X11xlisp xlispstat


# More dependencies are needed here
sunwindows.o: sunwindows.c xlisp.h windows.h
sungraphwin.o: sungraphwin.c StGWWindow.h stmem.h
sundialogs.o: sundialogs.c xlisp.h dialogs.h

sunstuff.o: sunstuff.c xlisp.h version.h
	${CC} -c ${CFLAGS} -D${SUNOS} sunstuff.c

unixstuff.o: unixstuff.c xlisp.h version.h Makefile
graphics.o: graphics.c gnuplot.h xlisp.h
myplot.o: myplot.c gnuplot.h xlisp.h
term.o: term.c gnuplot.h xlisp.h

X11graph.o: X11graph.c xlisp.h StGWWindow.h StX11options.h
X11BSDstuff.o: X11BSDstuff.c xlisp.h version.h
X11dialogs.o: X11dialogs.c xlisp.h dialogs.h
X11buttons.o: X11buttons.c xlisp.h dialogs.h
X11text.o: X11text.c xlisp.h dialogs.h
X11toggle.o: X11toggle.c xlisp.h dialogs.h
X11choice.o: X11choice.c xlisp.h dialogs.h
X11slider.o: X11slider.c xlisp.h dialogs.h
X11listitem.o: X11listitem.c xlisp.h dialogs.h

xlisp.h: xldmem.h
xlisp.o: xlisp.c xlisp.h Makefile
xlftab.o: xlftab.c osdefs.h osptrs.h Makefile
statinit.o: statinit.c Makefile
iviewdata.o: iviewdata.c xlisp.h StGWWindow.h stmem.h
objectinit.o: objectinit.c xlisp.h Makefile
xsdynload.o: xsdynload.c xlisp.h foreign.h Makefile

foreign.h: machines/${MACHINE}/foreign.h Makefile
	cp machines/${MACHINE}/foreign.h .