Up: Linux Software Encyclopedia
Last checked or modified: Jun. 16, 1998
- A language ``which bears a passing resemblance to the S
language developed at AT&T'' for statistical calculations.
The goal of the project producing R is to demonstrate
that it is possible to produce an S-like environment
which does not suffer from the memory demands and performance
problems of the current S implementation. The short term
goal is to create a small portable free system which provides
most of the functionality of S with perhaps some extensions.
The S language provides general facilities for organizing,
storing, and retrieving all types of data; numerical methods
and other computational techniques; the capability of writing
programs in S as well as interfaces
to UNIX commands or C or
and interactive, informative and flexible
ways of looking a data graphically. The S language contains
a wide variety of expressions and operators and all computations
are done by functions, which are either built in or operator
defined. There are many built-in data manipulation,
mathematical and statistical distribution functions.
Many kinds of plots can be created with the graphics
package including scatter plots, box plots, x-y plots,
bar graphs, dot charts, pie charts, geographical maps, and
perspective grid plots. Many data object types are supported,
including truth values, numbers, complex numbers, character
strings, and lists of objects. It is the goal of R to
replicate all of these capabilities.
R is written in Fortran and C and I've compiled it successfully
using g77 and gcc (up to version R-0.9alpha).
The current distribution is an alpha pre-release as of 6/96.
There is a small amount
of documentation that comes with the package, although more
can be found in the published documentation for S, i.e. the
first ("Blue") and second ("White") published manuals.
The blue manual is "The New S Language" by R. Becker, J. Chambers
and A. Wilks (Wadsworth and Brooks/Cole Advanced Books and
Software, Pacific Grove, CA, ISBN 0-534-09192-X, QA 76.73 S15 B43).
The blue manual describes the language is general and the white
manual focuses on statistical applications.
There are quite a few packages and some tutorial documents
concerning the S language at the
Statlib S Repository.
The S tutorials presumably can also function as R tutorials.
Contributed extensions to R include:
- Matrix, a matrix library;
- PHYLOGR, functions for phylogenetically-based statistical
- RPgSQL, methods for accessing data stored in
- VR, a set of over a hundred R functions converted from the
S functions in "Modern Applied Statistics with S-PLUS";
- acepack, ACE and AVAS methods for choosing regression
- akima, for interpolation of irregularly spaced data;
- ash, for computing univariate shifted histograms;
- boot, functions and datasets for bootstrapping;
- bootstrap, functions for the bootstrap, cross-validation and
- cclust, functions for convex clustering methods and clustering
- cfa, functions for the analysis of configuration frequencies;
- cluster, functions for clustering;
- coda, output analysis and diagnostics for Markov chain
Monte Carlo simulations;
- conf.design, functions for constructing and manipulating
confounded and fractional factorial designs;
- ellipse, for drawing ellipses and ellipse-like confidence
- fdim, functions for computing fractal dimensions;
- fracdiff, fractionally differenced ARIMA models;
- gafit, genetic algorithms for curve fitting;
- gee, a generalized estimation equation solver;
- gss, a comprehensive package for structural multivariate function
estimation using smoothing splines;
- ineq, functions for measuring inequality, concentration and
- integrate, functions for adaptive quadrature in up to 20
- leaps, regression subset selection including exhaustive search;
- hntest, functions for testing linear models;
- locfit, functions for local regression, likelihood and
- logspline, functions for logspline density estimation;
- maptree, functions for graphing and mapping models from
hierarchical clustering and classification and regression trees;
- mclust, model-based cluster analysis;
- mda, functions for mixture and flexible discriminant
analysis and multivariate additive regression splines;
- mlbench, a collection of artificial and real world machine
learning benchmark problems;
- multihm, functions for fitting and testing multivariate
- multiv, multivariate data analysis routines including hierarchical
clustering, PCA, Sammon mapping and correspondence analysis;
- nlme, linear and nonlinear mixed effects models;
- norm, analysis of multivariate normal datasets with missing values;
- pls, for performing univariate partial least squares regression;
- polymars, polychotomous regression based on multivariate
adaptive regression splines;
- princurve, fits a principal curve to a data matrix in arbitrary
- quadprog, a package for solving quadratic programming problems;
- quantreg, quantile regression and related methods;
- rpart, recursive partitioning and regression trees;
- sgeostat, an object-oriented framework for geostatistical
- survival5, functions for survival analysis;
- tree, classification and regression trees;
- tripack, for triangulation of irregularly spaced data;
- tseries, for time series analysis with an emphasis on
- wavethresh, for wavelet statistics and transforms; and
- wle, weighted likelihood estimation.
- A Web-based interface to the
R statistical language that takes submitted
code, runs R in batch mode and returns output.
The available version of Rweb are:
- a simple Web interface that works on most browsers;
- a set of modules designed as a forms-based interface for use
in introductory statistics courses.
- An HTTP proxy intended to speed up surfing over
slow links by removing unneeded fluff like background images while
retaining the structure of the page.
- A suite of programs for the analysis and visualization of lighting
Radiance is used by architects and engineers to predict illumination,
visual quality, and the appearance of innovative design spaces, and
also by researchers to evaulate new lighting and daylighting
An input file containing the scene geometry, materials, luminaires,
time, data and sky conditions is transformed into calculated values
including spectral radiance, irradiance, and glare indices.
The results can be displayed as color images, numerical values, or
There are no limitations on the geometry or materials that can
be simulated with Radiance.
The over 100 programs comprising the Radiance package can be
divided into several categories including converters from other
formats to Radiance format, geometry generators, scene preparation
and processing programs, intermediate file preparation programs,
rendering programs, user interface programs, output viewing programs,
analysis and convolution programs, converters from Radiance to other
formats and various metafile tools.
The more significant programs include:
- genbox, generates a description of a box;
- genprism, generates a description of a prism;
- genrev, generates a description of a surface of revolution;
- gensky, generates a description of the sky;
- gensurf, generates a description of a curved surface;
- genworm, generates a description of a functional worm;
- xform, transforms a scene description;
- ies2rad, converts IES luminaire data to a Radiance description;
- getbbox, computes a bounding box for a scene;
- mkillum, computes illum sources for a scene;
- oconv, creates an octree from a scene description;
- rad, renders a scene;
- rview, generate a picture interactively;
- rpict, generate a picture;
- ximage, a driver for X11;
- pcompos, composites pictures;
- pfilt, filter a picture;
- pflip, flip a picture;
- pinterp, interpolate/extrapolate a view from pictures;
- protate, rotate a picture;
- pvalue, convert pictures to/from alternate formats;
- rtrace, trace rays in a scene; and
- geninfo, get information from a Radiance file.
A source code distribution of Radiance is available. It is written
in strict ANSI C and portable to most platforms.
There are over 100 programs/commands in the Radiance package, each
of which is described in a separate manual page.
Documentation also includes a tutorial, a reference manual, technical
papers, and seminar and course notes.
- The Remote Authentication Dial In
is a protocol for providing a standard method for dial-up
authentication, offering access and control and accounting
features as well as security.
RADIUS is based on a distributed security model and provides
an open and scalable client/server security system.
It is composed of an authentication server and client
All user authentication and network service access information is
located on the former which communicates with clients via the
The communications channel between the client and server is
UDP/IP with messages acknowledged.
Related software packages include:
- A RADIUS client program that allows a
Linux box with a multi-port serial card to emulate a
Livingston Portmaster 2 series terminal server.
The functionality of this includes:
This package needs to work with a RADIUS server.
- answering modems;
- autodetection of PPP sessions;
- auto-telnet or rlogin to a host;
- authentication via a RADIUS server; and
- issuing accounting requests to a RADIUS accounting daemon.
- A drop-in replacment for the Livingston radiusd daemon which,
although lacking a few standard features, has a few extra ones.
A source code distribution of this Perl
script is available.
- A RADIUS accounting log analysis package.
A source code distribution is available which requires
Python for installation and operation.
- A RADIUS server whose features include:
A source code distribution is available.
Documentation is a wee bit sketchy to date (12/98).
- limiting the maximum number of simultaneous logins on a per-user basis;
- access support based on huntgroups;
- a hints file that can select SLIP/PPP/rlogin based on username pattern;
- execution of external programs for authenticated users;
- multiple DEFAULT entries in users files that can optionally
- caching of all configuration files in memory;
- a radwho program that can be installed as fingerd;
- logging of both UNIX wtmp file format and RADIUS detail logfiles;
- support for vendor-specific attributes; and
- support for proxying.
- A patch to Ascend's free RADIUS server that adds the capability
of logging into an MySQL database.
- The router advertisement daemon is a program
run by routers on a network to answer the autoconfiguration
requests of the hosts supported by IPv6.
The daemon listens to router solicitations and answers with
router advertisement (RAs) as specified in
These RAs contain information used by hosts to configure
their interfaces including address prefixes, the MTU of the link,
and information about default routers.
A source code distribution is available which is documented
via man pages.
- A Redundant Array of Inexpensive Disks
is a method whereby information is spread across several disks
using techniques such as disk striping and disk mirroring to
achieve redundancy, lower latency and/or higher bandwidth for
reading and/or writing, and recoverability from disk crashes.
The use of RAID with Linux is described in an article in the December
1997 issue of the Linux Journal.
There are several different types or levels of RAID. A brief
taxonomy listing the levels and their characteristics
(which is not completely accurate but provides
a reasonable overview) is:
Additional level designations have been proposed by various vendors for
specific products, but there is no general agreement as to their
- RAID-linear: concatenating partitions to create a larger
virtual partition for, i.e. creating a single large virtual partition
from several smaller drives;
- RAID-0: striping, i.e. similar to RAID-linear with the
partitions divided into stripes and the multiple data copies
interleaved rather than concatenated;
- RAID-1: mirroring, i.e. data is kept on multiple
partitions with each one storing an exact copy of all the data;
- RAID-2, similar to RAID-4 with ECC information being
stored instead of parity information (a level made mostly obsolete
by the incorporation of ECC in most modern drives);
- RAID-3: also similar to RAID-4 with the smallest possible
stripe size being used and the requirement that disk drive spindles
be synchronized (also mostly obsolete);
- RAID-4: interleaves stripes similar to RAID-0 with the
requirement of an additional partition to store parity information
such that if a disk fails the data on the remaining disks can be used
to reconstruct the data from it; and
- RAID-5: similar to RAID-4 with the parity information
being stored on each of the drives.
The current (6/99) software implementation of RAID for Linux
offers RAID-linear, RAID-0, RAID-1, RAID-4 and RAID-5.
RAID-1 and RAID-5 are the most popular of the options that
offer redundancy, with the former generally offering better
performance and the latter more efficient use of the available storage space.
A growing number of vendors offer hardware RAID implementations
that are compatible with Linux. These include RAID cards (both
ISA and PCI) with Linux drivers and stand-alone
system-independent RAID arrays.
- A set of tools for supporting RAID on
The tools include:
A source code distribution is available which can be compiled as
either a kernel patch or module.
The tools are documented in man pages as well as in
some ASCII README files.
- ckraid, checks a RAID device array for consistency and
optionally attempts to fix any it finds;
- mkraid, sets up a set of block devices into a single
- raidadd, configures MD (i.e. RAID) devices in the kernel
to band multiple devices into one;
- raidrun, activates and MD device; and
- raidstop, turns off an MD device and unconfigures it.
- A driver for DAC960 PCI RAID controllers.
This is in the form of a kernel module and a set of utilities
including modified versions of LILO and
fdisk that understand the DAC960 RAID devices and
a script called make_rd that makes the device special files.
- A framework for implementing RAID designs intended
for use in researching, verifying, testing and producing RAID systems.
It was developed to decrease design-cyle time by simplifying the
process of implementation without sacrificing performance.
A simple programming abstraction is used in which distinct RAID operations
(i.e. architectures) can be easily implemented, and once the basic
instructions (less than a dozen) are implemented the time required to
implement a new RAID operation is just the time needed to write a new program.
Array architectures implemented in RAIDframe can be evaluated as
stand-alone applications controlling UNIX raw disks, as event-driven
simulators, and as Digital UNIX device drivers capable of performing
block and character operations.
The features of RAIDframe include:
- a library of architectures including RAID levels 0, 1, 4, 5, 6 as
well as declustered parity, interleaved declustering, and chained
- separation of error recovery from array architecture via a two-phase
aproach called roll-away error recovery;
- an internal architecture composed of eleven independent modules, i.e.
- a state machine which creates graphs and submits them for execution;
- a graph execution engine for fully exploiting the allowable
concurrency with a graph;
- a disk interface that organizes pending disk requests according to
specified queueing disciplines;
- a memory management module;
- a disk-queue module for implementing various queueing policies;
- a disk-geometry database module containing disk specifications
including layout and performance parameters;
- a mapping module for mapping an access in the RAID address space
to the corresponding set of physical address spaces;
- a graph selection module for determining which graph from the
library is to be used to execute a specific user request;
- a graph library containing routines capable of creating graphs;
- a primitive operations library with functions that abstract single
device operations from which graphs are created.
- extensibility via configurablity of seven of the above modules;
- a reconstruction state machine that allows the simulation of
disk failures; and
- a suite of test applications that allow implementors to test their
systems at the user level.
A source code distribution of RAIDframe is available which is supported
on many architectures including Linux Intel.
It is extensively documented in a huge user's and reference manual
that also serves as a marvelous introduction to RAID.
- An interpreter and translater for CGM files.
The ralcgm interpreter consists of a number of separate modules
that read and translate or interpret a CGM file. The modules are:
- cgmibin, reads a binary encoded CGM;
- cgmichar, reads a character encoded CGM;
- cgmitext, reads a clear text encoded CGM;
- cgmobin, writes a binary encoded CGM;
- cgmochar, writes a character encoded CGM;
- cgmotext, writes a clear text encoded CGM;
- cgmops, outputs a PostScript file;
- cgmoxw, an X11 driver;
- cgmoigl, an Iris Graphics Library driver;
- cgmotek, a Tektronix 4200 driver;
- cgmohpgl, an HPGL driver;
- cgmovga, a PC VGA driver.
The package also contains several utility routines including:
- cgmatt, utilities for resolving attributes;
- cgmcell, cell array utilities;
- cgmcolr, color handling utilities;
- cgmerr, an error handler;
- cgmfile, file handling utilities;
- cgmfill, fill area utility;
- cgmfont, font handling utility;
- cgmgdp, utilities for handling circular and elliptical elements;
- cgmgraph, graphical output utilities;
- cgmpts, point handling utilities;
- cgmrand, random access frame utilities;
- cgmtext, text handling utilities;
- cgmbez, a Bezier text output utility;
- cgmher, a Hershey text output utility.
The source code distribution can be compiled and installed on most
- The Range-dependent Acoustic Model is a
software package for solving range-dependent ocean acoustics
problems using the parabolic equation (PE) method.
RAM is based on the split-step Padé solution method which
allows large range steps and is the most efficient PR algorithm.
Range dependence is handle accurately by applying an energy
conservation correction as the acoustic parameters varying with
range. In initial condition (or starting field) is constructed
using the self-starter, i.e. an accurate and efficeint approach
based on the PE method.
A source code distribution of RAM is available.
It is written in Fortran 77 and documented in a user's
manual available in PostScript
There are separate source code versions for codes designed
to run on single and parallel processors.
See Collins (1993b) and Collins (1993a).
- A package designed to enable random variations in a resident
linear program (LP) whose matrix file was previously generated or
was read as a library. This is done to test either the performance
of an algorithm or the sensivity of a model to variations. This
is related to the
A binary version of RANDMOD is available for Linux and DOS
platforms. The documentation is contained within a manual
that can be obtained from the author via the
IMPS Software Site.
A quick summary of the ins and outs of optimization can be found at the
NEOS Optimization Tree.
- A library of Fortran or C routines for random number
The bottom level routines provide 32 virtual random number generators.
RANDLIB provides routines that return:
beta random deviates, chi-square random deviates,
exponential random deviates, F random deviates,
gamma random deviates, multivariate normal random deviates
(mean and covariance matrix specified), noncentral
chi-square random deviates, univariate normal random deviates,
random permutations of an integer array,
real uniform random deviates between specified limits,
binomial random deviates,
negative binomial random deviates,
multinomial random deviates, Poisson random deviates,
integer uniform deviates between specified limits, and
seeds for the random number generator calculated from
a character string.
RANDLIB versions are available written in C, Fortran,
Each routine is documented in comment statements contained
within the source code.
Several test driver programs are included in the distributions.
- A normal random number generator.
This is TOMS algorithm 712 and is documented
in Leva (1992).
- random numbers
- Software packages which generate random numbers or which contain random
number generators include:
- Ranish Partition Manager
- A hard disk partitioning management utility and advanced boot manager.
The partition management capabilities include:
The advanced boot management functionality includes:
- saving and restoring the Master Boot Record (MBR);
- creating and deleting partitions;
- viewing information about IDE hard disks; and
- formatting and resizing FAT-16 and FAT-32 file systems.
A source code distribution of RPM is available.
- a boot menu with password protection;
- automatic partition hiding and unhiding;
- booting any OS from a second hard drive;
- creating up to 31 primary partitions on a single hard drive; and
- detecting boot viruses in memory.
- A daemon written in the Expect language that
sends text messages to radio pagers and mobile telephones.
The features of rapd include:
A source code distribution is available.
- any UNIX user can send a message to a pager;
- a shell script that can automate network management fault alarms;
- retrying if a pager bureau is currently engaged;
- maintenance of a spool directory to guarantee delivery of messages; and
- understanding all major pager bureau formats.
- A software engineering package consisting
of a language and set of tools that focus on developing a new technology
for building large-scale, distributed, multi-language systems.
It is based on a new generation of computer languages called Executable
Architecture Definition Languages (EADLs) and a toolset that supports
the use of EADLs in the evolutionary development and rigorous analysis
of large-scale systems.
Rapide is designed to support the component-based development of large,
multi-language systems by using architecture definitions as the
development framework. It allows the gradual refinement of architectures
into products, and supports testing and maintenance based on automated
comparison with formal standard architectures. An event-based execution
model of distributed, time-sensitive systems called the ``timed poset
model'' is used to provide the most formal basis to date for constructing
early life cycle prototyping tools as well as later life cycle tools
for correctness and performance analysis of distributed, time-sensitive
The Rapide language is language framework consisting of a type language,
an executable architecture definition language, a specification language
and a concurrent reactive programming language.
The latter three also share a pattern sublanguage providing expressions
for reacting to and constraining event-based computations.
The language details include:
- the type language is based on a single general interface type construct
together with inheritance derivations for building new interfaces from
- the architecture definition language provides executable features for
composing systems out of component interfaces by defining their
synchronization and communication interconnections in terms of patterns
- the constraint language provides constructs for the abstract
specification of the behavior of a distributed system including
timing requirements; and
- the executable language is a concurrent reactive programming
language using types, objects, and expressions of the type language
to provide module and control structures.
The available Rapide toolset includes:
Binary distributions of the Rapide toolset are available, one of
which is for Linux Intel systems.
Massive amounts of documentation are available at the site.
- rpdc, a compiler for the Rapide language that translates
programs into executable load modules or into library information
for building executables;
- a library management system that allows libraries of components
to be compiled separately for later reuse; and
- pov, a partial order viewer for graphically browsing the
partial orderings of events (posets) produce by Rapide computations.
- A semi-object oriented BASIC-like language
with many additional features.
Rapid-Q is a bytecode compiler that attaches its byte code to
The non-standard features include:
The Linux version, while freely available, is a stripped down version
of the Windows distribution and, as such, doesn't have the full
functionality of the latter.
- creating SUBs or FUNCTIONs with a variable number of parameters
without type checking;
- the use of an "-" operator for string expressions for deleting
string(s) from a string;
- function pointers; and
- support for DirectX.
- See NetTools.
- An audio player whose features include:
A source code distribution is available which requires
the KDE environment for compilation.
- playing both MP3 and
WAV format files;
- multiple simultaneous outputs;
- output to a file, OSS sound device, or
the Enlightened Sound Daemon;
- full playlist support including editing, jumping and
- support for ID3 tag editing;
- shuffle, repeat and single play modes;
- a full customizable interface;
- cue points and seeking within songs;
- drag-and-drop; and
- recursive directory scanning and playlist loading.
- A molecular graphics package intended for the visualization
of proteins, nucleic acids and small molecules. It is aimed
at the display, teaching and generation of publication quality
images. RasMol reads in molecular coordinate files in a number
of formats and interactively displays the molecule on the screen
in a variety of color schemes and representations. Connectivity
and secondary structure information are automatically calculated
in not contained in the file.
The input file formats supported by RasMol are:
Brookhaven Protein Databank (PDB), Tripos' Alchemy and
Sybol Mol2 formats, Molecular Design Limited's (MDL) Mol
format, the Minnesota Supercomputer Center's (MSC) XMol XYZ
format and CHARMm format files.
The loaded file can be displayed in several different ways:
wireframe, cylinder (Dreiding) stick bonds, alpha-carbon trace,
spacefilling (CPK) spheres, macromolecular ribbons (either smooth
shaded solid ribbons or parallel strands), hydrogen bonding, and
dot surface. Different parts of a molecule may be displayed and
colored independently of the rest of the molecule or simultaneously
shown in different representations. The displayed molecule can
be rotated, translated, zoomed, z-clipped (slabbed) interactively
using the mouse, the scroll bars, the command line, or an attached
The resulting image can be written in in a variety of formats
including both raster and vector PostScript, GIF,
PPM, BMP, PICT,
Sun rasterfile, MolScript input script, or Kinemage.
The source code is available and should readily install
on generic UNIX/X11 platforms as well as on Mac, Windows and
The package is documented in a user's manual available in
- A set of tools for generating high quality raster images
of proteins and other molecules. The core Raster3D program
renders spheres, triangles, and cylinders with specular
highlighting, Phong shading, and shadowing. An efficient
software Z-buffer algorithm is used which is independent of
hardware. Ancillary programs perform a variety of other tasks.
The programs comprising Raster3D are:
- avs2ps, which converts an AVS image to monochrome PostScript;
- balls, a preprocessor which prepares a description of a
- normal3d, which applies coordinate manipulations to a file;
- rastep, which reads a Brookhaven PDB coordinate file and
creates a input file for render;
- render, the central image rendering program of the package;
- ribbon, a preprocessor which prepares a simple ribbon
representation of a protein backbone;
- rods, a preprocessor for ball and stick figures; and
- stereo3d, a shell script that renders a single Raster3D
input file as a side-by-side stereo pair.
A source code distribution of Raster3D is available. It contains
makefiles for several platforms including Linux Intel.
It is documented in a user's guide available in both PostScript
and HTML formats.
See also Merritt and Bacon (1997).
- The Robust Audio Tool is designed to allow users
to talk to each other over the Multicast Backbone
(MBone). RAT is designed to be adaptive
to changing network and host conditions.
Features of RAT include:
use of a second low bandwidth version of the original signal
piggy-backed on the original to provide a back-up for lost
adaptive scheduling protection which minimizes the end-to-end delay
of the system and minimizes the gaps caused by late scheduling of
the audio process by the host operating system;
continuously update statistics about loss rates;
a lip-synchronization option; and
improved hands-free operation via an improved method of silence
RAT is available in binary format for Sun SunOS and Solaris,
SGI IRIX, Windows 95/NT, HP-UX and Linux Intel platforms.
Documentation is contained in a man page as well as in
several technical reports available in
- A mail user application (MUA) with an X Window interface.
Ratatosk features include:
- a multilingual user interface (currently English, Swedish,
- MIME support in which
incoming text in plain, GIF, or
RFC-822 content type
formats are decoded and shown if
the character set is compatible;
- support of MIME in headers;
- support for the delivery status notifications (DSN) standard;
- message composition using the built-in editor
or via a chosen external editor;
- a message database;
- virtual folders;
- message holding to put message composition on temporary hiatus;
- a watcher utility which regulary checks the mailbox and notifies the
user via an icon;
- interfaces to standard UNIX mailboxes,
and mh with messages sent by
or by any user-configured program, e.g.
The source code for Ratatosk is available. It is written in C
and Tcl/Tk and requires Tcl 7.5 and
Tk 4.1 or above.
The program is documented in several ASCII files included in
This package is also known as TkRat.
- RATional C is a macro package designed to update the
control structures available in C.
RATC is designed to use the standard C/C++ macro
and as such can be used by anyone with an ANSI C or C++
The new constructs available include
if ... elseif ... else ... endif,
while ... endwhile,
repeat ... until and repeat ... aslongas,
loop ... endloop,
for ... endfor,
context .. endcontext with leave and leaveif,
switch ... case .. endcase ... default ... endswitch,
ifx, func and endfunc, and several more.
- A library of Tcl routines for generating
This also includes a Cost script for
converting SGML to RTF.
- A Fortran
preprocessor that allows the
use of C-like flow control expressions.
The 7th Edition AT&T UNIX man page for Ratfor, written by
Brian Kernighan, states that it ``attempts to conceal the main
deficiencies of Fortran while retaining its desirable qualities,
by providing decent flow control statements.''
The flow control enhancements include statement grouping
via curly braces (e.g. to create do loops without statement numbers);
if-else and switch statements for decision making;
while, for, do, and repeat-until for
and break and next for controlling loop exits.
It also provides some syntactic sugar including
free form input (e.g. multiple statements per line; automatic
continuation; an unobtrusive comment convention,
translation of , , etc. into .GT., .GE., etc.;
a return(expression) statement for functions,
a define statement for symbolic parameters, and an
include statement for including source files.
All of these are translated into Fortran 77 by Ratfor.
Kernighan goes on to say that, ``Once the control flow and cosmetic
deficiencies of Fortran are hidden, the resulting language is remarkably
pleasant to use. Ratfor programs are markedly easier to write, and to
read, and thus easier to debug, maintain and modify than their
This is a public domain version of Ratfor which is not derived
from AT&T code.
It is written in C and derived from a pre-processor originally
distributed by the University of Arizona, although is closely
corresponds to the pre-processor described in the
``Software Tools'' book and the man page.
- A modified ratfor that works with
g77 and outputs indented code using
if/then/else, dowhile, exit and cycle.
- The Rectangular Access Tree library is a
function library for inserting, deleting, acessing, and querying
objects which can be described using 2-D rectangular regions.
Each rectangular object is associated with an arbitrary
(void *) which can be used to hold either raw data or
a pointer to data. All objects are described with four parameters
x, y, w, h where (x,y) is the center point and (w,h) the width and
height of the rectangle. Supported queries include rectangle insersection
and containment using an arbitrary query rectangle along with an
exact/close match query.
A source code distribution of the C library is available.
It is documented in a technical report and in a set of
- A suite of routing policy analysis tools including:
- RTConfig, which generates router configurations from policies
expressed in RPSL or RIPE-181 (and supports several public domain
- roe, which lists the routines registered by a provider,
highlighting the discrepancies between the registered routes and
those actually being routed;
- aoe, a GUI program that displays the aut-num object
for an AS;
- prpath, which enumerates a list of paths between two
- prcheck, which performs syntactic and semantic checking of
registered aut-num objects;
- peval, a low-level policy evaluation tool that can be used
to write router configuration generators;
- CIDR Advisor, which uses registered policies to suggest
aggregations that do not violate policies or cause suboptimal routing;
- pmatch, which, given a BGP route, lists all neighbors either
exporting or importing this route to or from the provider; and
- prtraceroute, which compares the result of a traceroute with
policies registered in the IRR.
A source code distribution of RAToolSet is available. It is
written in C++ and requires
GCC 2.7.2 or higher and libg++ 2.7.2 or higher for compilation.
The GUI tools also require Tcl/Tk
4.0 and 7.4, respectively, or higher.
- A vectorizing program designed to rapidly prototype 3-D worlds
from line drawings, particularly architect's plans.
It creates a 2-D vector file describing the features in a plan
which can then be imported to AC3D and
either extruded to produce a quick 3-D environment or used as
the basis for a more detailed model.
The only file type that Ra-vec can currently (4/97) import is
an X11 bitmaps (XBM), but xv and other
programs can convert quite a few raster file types into XBM
so that's not a great limitation. The original image must be
scanned using your choice of scanning hardware and software.
The source code for Ra-vec, written in C, is available and
has been tested on SGI IRIX, Sun SunOS and Solaris, and
Linux Intel platforms.
A user's guide is available at the site in HTML format.
- Utilities designed to provide a simple way to record or play raw audio
data from or to a sound card on Intel Linux platforms.
The features include:
- recording to or playing from standard I/O;
- options to pause execution, pad with silence, jump into data files,
control sampling rates, sample resolution and control number of channels;
- an option to enable exact reporting of what the sound card is doing;
- full buffering and threading for maximum performance; and
- configurable buffer fragment size (if low latency operation is
- A sound package for playing, recording and analyzing sound files.
The collection of utilities comprising this package include:
A source code distribution is available. This was created on and
designed for Linux platforms.
- rsrecord, for recording a sound file with a given quality;
- rsplay, for playing sound files;
- rscut, for cutting pieces out of a sound file;
- rscat, for concatenating sound files;
- rsstrip, for writing raw audio data;
- rsdump, for dumping audio in data;
- rsecho, for applying echo to a sound file;
- rspitch, for applying a pitch shift;
- rstora, for converting to RealAudio format;
- rsfft, for dumping the FFT of a sound file;
- rsview, for displaying the stats of a sound file;
- rstomp3, convert to MP3 format; and
- mp3tors, convert from MP3 format.
- A utility for creating boot and root disks for Linux from
within Windoze NT/95.
- An ocean acoustic ray tracking program written in
C. The distribution contains the source
code, several Matlab programs
for performing various tasks, and some examples.
For documentation see Bowlin (1992).
- A collection of C++ classes for performing
various ray tracking tasks.
A source code distribution is available.
- An extensible system for creating ray traced images that reads an ASCII
file describing a scene and produces an image.
The features of Rayshade include:
- ten types of primitive objects, e.g. blobs, boxes, cones, cylinders, etc.;
- use of uniform spatial subdivision or a hierarchy of bounding volumes
to speed up rendering;
- constructive solid geometry;
- light sources including point, directional, extended, spot and
- solid procedural texturing, bump mapping, and 2-D image texture
- antialiasing via variable-rate sampling;
- arbitrary linear transformations of objects and texture/bump maps;
- rudimentary animation support;
- rendering stereo pairs; and
- extensibility, i.e. easy addition of new geometry, textures or
A source code distribution of Rayshade is available which can be
compiled and installed on most UNIX varieties.
It includes the source, example input files, a user's guide,
and tools for converting scene descriptions from other formats into
that of rayshade.
- ray tracing
- Available programs include:
- AERO, a package for simulating rigid body
systems with ray tracing capabilities;
- BMRT, a collection of rendering programs
that adhere to the RenderMan interface standard;
- DragonRay, a package similar to
POV-Ray in design;
- GOOD, an interactive environment for creating
3-D graphics that has ray tracing capabilities;
- Panorama, a framework for creating,
rendering, and processing 3-D images;
- Pixcon/Anitroll, a 3-D animation
and rendering package;
- POV-Ray, the most reknowned and widely
used ray tracking package;
- Radiance, a package for lighting design
- RAY++, a C++
library for ray tracing;
- Rayshade, a system for generating
ray traced images;
- RenderPark, a photorealistic
- RTrace, a ray tracing program;
- SART, a library for ray tracing and
high-complexity 3-D modeling;
- synpic, a ray tracking package;
- VORT, a collection of tools and a library
for the generation and manipulation of images;
- The AT&T Plan 9
shell ported to UNIX. It features a minimal
and easy to understand syntax and conditional and loop structures
that are more like C than those in csh. Quoting has also been
simplified. Signal handlers are written as functions with
special anmes instead of using strings and I/O redirection
is more powerful. See the
for further details.
- A tool designed to help understand the inner workings of an operating
system, RCOS.java is an animated, multi-tasking OS which runs on
It is designed to demonstrate general OS principles via controlled
animation, and as such allows students to modify, experiment with,
and compare different data structures and algorithms.
As you might have guessed, this is written in
- The Revision Control System software
manages multiple revisions of files.
It can store, retrieve, log, identify, and merge revisions. It is
useful for files that are revised frequently, e.g. programs,
documentation, graphics, and papers. This is a GNU package with
the usual configure file that should facilitate easy compilation
and installation on numerous systems, including Linux.
See Bolinger and Bronson (1995).
- RCS (Control)
- The Real-time Control Systems library is an archive
of C++ code, scripts, makefiles and documentation
developed to aid programmers of software to be used in real-time control
systems. It is a class library intended for multi-platform real-time
The components of RCS include:
A source code distribution is available which has been successfully
compiled on a wide range of platforms including Linux Intel.
Much documentation is available in hypertext format.
- lower level classes and functions including timer, semaphore,
linked list, print and Internet classes with which the higher level
utilities are built;
- the Communication Management System (CMS), which provides access to
a fixed-size buffer of general data to multiple reader or writer processes
on the same processor, across a backplane, or over a network;
- the Neutral Manufacturing Language (NML), which provides a high-level
interface to CMS, i.e. a mechanism for handling multiple types of messages
in the same buffer as well as a simplified interface for encoding and
decoding buffers in neutral format;
- a PoseMath library containing classes for representing positions,
translations and rotations in several different coordinate systems; and
- an RCS Design Tool written in Java that
allows programmers to create applications graphically and which
generates source code.
- A database package that uses
cdb to store the database and a variant
of chained hashing for the in-memory structure.
This is primarily meant for databases that are mostly read rather
A source code distribution is available.
- The Resource Description Framework is a specification
designed to provide an infrastructure to support metadata across
a wide range of web-based activities.
RDF aims to provide a robust and flexible architecture for supporting
metadata with example applications including sitemaps, content
ratings, stream channel definitions, search engine data collection,
digital library collections, and distributed authoring.
It will use XML as a transfer syntax to leverage
other tools and code bases being built around that standard.
This builds on top of SAX.
- An RDF parser and compiler that compiles
RDF/XML documents into the 3-tuples of the corresponding
RDF data model. The parser can also be configured to automatically
fetch corresponding RDF schema from their declared namespaces.
- A program for maintaining identical copies of files over
multiple hosts. RDist preserves the owner, group, mode, and
mtime of files if possible and can update programs that are
This version doesn't need to be run as root, can
be used with ssh, supports automatic
system determination and configuration for pre-ported platforms,
can run the m4 preprocessor before processing,
will check free space and files on a filesystem before installing,
can update multiple hosts concurrently via rdist, and more.
A source code distribution of RDist is available as are
binaries for several platforms including Linux Intel.
It is documented in an extensive man page.
- A parser generator which
compiles attributed LL(1) grammars decorated with C semantic
actions into recursive descent compilers.
RDP was written in strict ANSI C and produces strict ANSI C.
It was created for a course on compiler design to enable
undergraduates to get through the early parts of the syllabus in
just a few weeks.
The features of RDP include:
- it is C++ clean, i.e. there are no identifiers used that clash
with C++ reserved words;
- use of standard library modules to manage symbol tables, sets,
graphs, memory allocation, text buffering, and command line argument
processing and scanning;
- production of complete runnable programs with built-in help
information and command line switches specified as part of the EBNF
- text buffering routines that automatically handle nested files,
error message reporting, and text data buffering to provide an efficient,
general purpose front end;
- a graph handling package that provides a general framework for
building graph data structures;
- self-generation, i.e. it can generate itself; and
- support for parameter passing into parser functions.
A source code distribution of RDP is available.
It includes the machine generated source code for the translator,
the EBNF file describing RDP that was processed by the RDP executable
to produce its own source code, EBNF files for several mini-languages,
an EBNF file for a Pascal-like language, an ANSI C pretty printer
written using RDP, a set of wrapper functions for standard C memory
allocation routines, a programmable scanner, a standard text buffering
package, makefiles for several platforms including Linux Intel,
and documentation in the form of a tutorial, reference manuals, and
case study manuals.
- A Bourne shell script for dumping UNIX filesystems to 4 mm DAT tape drives.
The tape can be locally or remotely mounted and the script should work
in just about any UNIX environment.
A source code distribution is available.
- A C-based language for
reactive programming implemented as
a C preprocessor.
Reactive programs are those which react continuously to sequences
of activations from the external world, which leads to a new
programming style in which one programs in terms of reactions to
activations and reasons in a logic of instants.
Reactive programs can react differently to successive
activations within a paradigm in which a logical time is
induced by sequences of actions, with each activation/reaction
pair called an instant. Reasoning is thus carried out by
reference to instants.
Reactive-C serves as the basis for several additional formalisms.
Nets of Reactive Processes (NRP) are programs consisting of reactive
processes executed in parallel and communicating through
unbounded FIFO files called channels.
This is a method for using R-C to implement synchronous models
with asynchronous communications.
The Synchronous Language (SL) is a language in which reactions
are instantaneous. This apparoach allows the expressive simplicity
and power of parallelism, the ease of specification and debugging
for deterministic programs, and the power and modularity of broadcast
and instantaneous dialogs.
The Reactive Object Model (ROM) merges an object approach with the
notion of a global instant to allow methods to be invoked using
instantaneous non-blocking send orders which are processed
immediately, although not more than once at each instant. This
leads to an approach wherein systems are decomposed into reactive
areas where agents communicate inside their area via instantaneous
orders and between distinct areas by unbounded delay orders.
A Reactive Script is a program represented as a character string
and intended to be run by a reactive interpreter, which is a
broadcast event driven interpreter which can react to several
commands in parallel.
Icobj programming is a simple and fully graphical programming
method which uses a powerful method to combine behaviors.
It is based on the idea of an icobj which has
behavioral, graphical, and animation aspects.
This provides parallelism, broadcast event communication, and
migration through the network.
This project is also working on a set of Java
classes for implementing event based, parallel, and reactive systems
called SugarCubes which are used to implement reactive scripts
and icobj programming on top of the Java language.
A software package containing the Reactive-C implementation
and various derived packages is available for various platforms.
This package includes:
rcc, the Reactive-C compiler;
nrp, an implementation of Nets of Reactive Processes;
sl, an implementation of the SL synchronous language;
ro, an implementation of reactive objects;
icobj, a visual programming demonstration based on
reactive scripts; and
a reactive script interpreter on top of Tcl/Tk.
Various manuals and technical reports are available for most of
these in PostScript format.
See Boussinot (1991), Boussinot (1996), and
Boussinot and de Simone (1996).
- reactive programming
- Programming systems which maintain a permanent interaction
with their environment, reacting to inputs coming from the
environment by sending output to it.
A reactive system is one whose main component is a reactive
program, and examples of such systems include
real-time process controllers, signal processing units,
digital watches, and video games.
Examples of reactive programs embedded in larger systems
include operating system drivers, mouse/keyboard interface
drivers, and communication protocol emitters and receivers.
Reactive programs are usuallly thought to consists of three
layers: an interface with the environment which is in charge
of input reception and output production, i.e. it transforms
external physical events into internal logical events and
a reactive kernel which contains the logic of the system and
handles logical inputs and outputs; and
a data handling layer which performs the computations requested
by the reactive kernel.
Available reactive programming language systems include
See Halbwachs (1993).
- Real-Time Linux
- An extension to Linux which allows the handling of time-critical
tasks, even hard real-time tasks.
The real-time capabilities are accomplished mainly by the
insertion of a Real-Time Kernel Layer between the Linux kernel
and hardware interrupts. This eliminates the large interrupt
latency which is currently the main source of difficulties in
using Linux for such tasks.
The Linux kernel is just another real-time task under the RT-Kernel,
one with the lowest priority which can be preempted when needed.
While this makes it difficult to use Linux drivers and networking,
it does allow data to be transferred to and from ordinary Linux
processes through memory buffers.
Simple FIFOs are implemented for transferring data betwee real-time
processes and Linux processes.
A typical application consists of real-time tasks that deal directly
with hardware, e.g. acquiring data from a device, and Linux tasks
which perform non-real-time processing such as recording the data
on a disk or sending it over a network.
The Real-Time Linux distribution contains a kernel patch,
a library to link with Linux processes, some documentation
in HTML format, and some test examples.
A couple of technical papers in
PostScript format are
- real-time operating systems
- Operating systems for tasks that absolutely, positively need to
be performed in real time. Eventually we'll have a list of
the freely available ones here. Until, then check the given URL.
Available real-time OSs include:
- A network messaging language designed to revolutionize the exchange
and interpretation of information on the Internet, REBOL is designed
to be powerful yet simple and easy to use for people who speak English
rather than binary.
It is also designed specifically for network messaging
applications that exchange information.
REBOL is a first-class functional language with minimal syntax,
powerful semantics, integrated networking, system independence,
and a small size.
The kernel provides first-class datatypes and functions, lexical
scoping with rebinding, strong typing, automatic storage
management, indefinite extent, higher order functions, objects
and packages, nested definitions, continuation passing,
tail recursion, exception handling, and word aliasing.
The REBOL language provides:
Planned (10/98) features include multithreading, graphics, sound,
multimedia, a GUI, Unicode support and embedded commenting.
- a rich set of built-in datatypes;
- consistent aggregate datatypes;
- symbolic use of words;
- dialecting, i.e. context dependent grammars;
- reflection, i.e. its own meta-language;
- consistent module headers;
- message ports; and
- pattern matching and output formatting dialects.
Binary distributions of REBOL are freely available for several
platforms including Linux.
Documentation available in HTML format includes quick start,
user's and expert's guides.
- A library and program for converting files between character sets
and usages. It can recognize or produce more than 300 character
sets and transliterate files between almost any pair.
If an exact transliteration isn't possible, it gets rid of the offending
characters or falls back on approximations.
- A utility for recovering deleted files. This basically automates
some of the steps described in the HOWTO that describes how to
undelete files on an ext2fs filesystem.
The procedure involves first seeking all deleted inodes with the
debugfs utility, and then asking a series of questions to
narrow down the list of possibilities.
Candidate inodes are dumped into a chosen directory in which
they can be further perused.
- A GUI text editor. Its features include the graphical
interface, full mouse and key support, 40 step undo and redo,
user-definable key bindings, automatic backup creation,
cut/paste exchange with other X applications, an online
function list, help pages and a manual. It is available in
source code form and requires X Windows, Motif and a C++
compiler to install. The G++ compiler has been successfully
used to compile this on Sun and Linux platforms.
- A Perl program that redirects HTTP requests to
a new Web server. This is useful for situations where Web pages
are moved from one machine to another and you want to automatically
redirect requests made to the old machine to the new machine.
It receives requests at the address of the old server and responds
with HTTP redirect replies that indicating the new server's name.
- A distributed
system designed for learning First Order Logic concept descriptions
REGAL is based on a selection operator called Universal Suffrage
which provably allows the population to asymptotically converge,
on average, to an equilibrium state in which several species
The population constitutes a redundant set of partial concept
descriptions, each separately evolved.
REGAL has a graphical interface based on
A source code distribution of REGAL is available. It is
written in ANSI C and can be compiled and used on most
The full use of REGAL additionally requires
See Giordana and Saitta (1993).
- A Fortran program for the analysis of time
series via REGression models with errors that follow
This is designed for model building with seasonal economic time series
and includes several categories of predefined regression variables
such as trend constants, overall means, fixed seasonal effects,
trading-day effects, holiday effects, pulse effects (additive outliers),
level shifts, and temporary ramp effects.
It provides capabilities for the three modeling stages of identification,
estimation, and diagnostic checking.
A source code distribution is available as is a user's manual
in the usual formats.
- A complete POSIX 1003.2 compliant
regular expression library written in
C++. It implements expression
execution, global searching, replace with atom substitution,
customized replaces, easy matches, and atom string retrieval.
- An implementation of the REXX language
developed by Anders Christensen. It is currently (2/96) still
in beta release. This interpreter can be built on most
generic UNIX platforms with an ANSI C compiler, a lex program,
and a yacc program. The author states that he has successfully
compiled Regina on a Linux box using the GNU versions of
the abovementioned tools. A manual (as yet incomplete) in
LaTeX form is included with the distribution.
- A programming environment for constructing distributed programs and systems.
- A package of Fortran subroutines for transferring values
between one, two, three and four dimensional arrays defined
on uniform and nonuniform orthogonal grids, i.e. for
regridding. Linear or cubic interpolation can be selected
independently in each dimension, and extrapolation is not
performed. The subroutine source code and example driver
programs are available. The documentation is contained
within a README file and in the source code of each routine.
This used to be called TCLPACK.
- Regularization Tools
- A collection of Matlab programs (m-files) for performing experiments
with numerical methods for analysis and for the solution of discrete
Ill-posed problems are those in which the solution is not unique
or is not a continuous function of the data, i.e. if an arbitrarily
small perturbation of the data can cause an arbitrarily large
perturbation of the solution. This sort of problem arises in
most areas of science and engineering.
Many of the routines in the package are based on the singular
value decomposition (SVD) and the generalized SVD.
The package is not optimized for efficiency since it is meant
more as an exploratory environment than a production environment.
The routines available in the Tools package include:
The package also contains several analysis routines, routines for
transforming a problem in general form into one of standard form
and back again, and utility and auxiliary routines for performing
various linear algebra tasks.
- cg, for computing the least squares solution based on k steps
of the conjugate gradient algorithm;
- discrep, which minimizes the solution norm subject to an upper
bound on the residual norm;
- dsvd, which computes a damped SVD/GSVD solution;
- lsqi, which minimizes the residual norm subject to an upper
bound on the norm of the solution;
- lsqr, which computes the least squares solution based on k steps
of the LSQR algorithm;
- maxent, which computes the maximum entropy regularized solution;
- mtsvd, which computes the modified TSVD solution;
- nu, which computes the solution based on k steps of Brakhage's
- pcg, the same as cg for general-form regularization;
- plsqr, the same as lsqr for general-form regularization;
- pnu, the same as nu for general-form regularization;
- tgsvd, which computes the truncated GSVD solution;
- tkhonov, which computes the Tikhonov regularized solution;
- tls, which computes the truncated TLS solution; and
- tsvd, which computes the truncated SVD solution.
The Regularization Tools package can be used with Matlab or with the
freely available Octave which can run
most Matlab m-files.
It is extensively documented in a 140 page user's guide and
reference manual in PostScript
- A collection of programs to aid in installing DOS/Windows software for
diskless machines from a UNIX server.
They can also be used to apply user- and machine-specific customizations
on the fly as users log in or as machines are booted.
The programs in the package include:
A source code distribution of these programs is available.
- inicat, for concatenating DOS/Windows .ini files;
- inidiff, for finding the differences between .ini files;
- iniedit, for editing .ini files;
- inifilter, for filtering an .ini file by making
substitutions and deletions to keys and entries;
- regdiff, for generating the differences between Windows
- regedit, for dumping or editing a binary registry file;
- regfilter, for filtering a registry dump;
- reghexprint, for printing hex entries in registry dumps
- regsort, for sorting a dump of a registry file;
- gen-app-changes, for generating a categorized, filtered and
generally munged set of differences suitable for automatic
application by apply-app-changes;
- apply-app-changes, for applying a set of changes to the shared
Windows files as well as to the client and user profile files; and
- fix-w9x-lnk, for fixing the paths and flags in a .lnk
- A file system that uses a variant of classical balanced tree algorithms
which can be more effective then extfs for large files and small files not near
node size in time performance, become less effective in time performance
and more significantly effective in space performance as one approaches
files close to the node size, and become markedly more effective in
both space and time as file size decreases substantially below
node size (i.e. 4k), reaching order of magnitude advantages for
file sizes on the order of 100 bytes.
This is available as a source code distribution which is used
to modify the kernel before recompilation.
- A suite of programs and tools for building wide area full text information
retrieval systems over the Internet. It has search mechanisms capable
of sorting documents by relevance to keyword search criteria,
support for boolean operations on multiple keywrods, and the capability
for phonetic keyword searching.
The programs in the suite include:
A source code distribution of this program suite is available.
- rel, orders the relevance of text documents to a search criteria;
- rels, orders the relevance of text documents to a simple
phonetic search criteria;
- relx, orders the relevance of text documents to a more complicated
phonetic search criteria;
- htmlrel, orders the relevance of HTML text documents to a
- htmlrels, orders the relevance of HTML text documents to a simple
phonetic search criteria;
- htmlrelx, orders the relevance of HTML text documents to a more
complicated phonetic search criteria;
- wgetrel, searches Web pages for documents relevant to a search
- wgetrels, searches Web pages for documents relevant to a simple
phonetic search criteria; and
- wgetrelx, searches Web pages for documents relevant to a more
complicated phonetic search criteria.
- Remembrance Agent
- A program that augments human memory by displaying a list of documents
which might be relevant to the user's current context.
RA runs continuously in the background and an unobtrusive interface
allows the user to pursue or ignore its suggestions.
It consists of two parts: a front end that continuously watches what the
user types and reads and a back end that finds old email, notes files,
and online documents which are somehow relevant to the user's context.
The front end currently (5/98) runs in Elisp under
Emacs. It displays one-line suggestions at
the bottom of the Emacs display buffer along with a numeric rating
of how relevant it thinks the document is.
The full text of the suggested document can be brought up with just
a keystroke or two.
The back end is presently the SMART information retrieval program,
which decides document similarity based on the frequency of words
common to the query and reference documents.
It indexes all sources nightly and supplies relevant documents
based on the query text supplied by the front end.
A source code distribution of RA is available. The back end is
written in C and the front end in Elisp for Emacs.
Documentation is contained within a README file included in
Further information can be found at the web site.
- A sophisticated alarm and calendar program. It handles the
common and Hebrew calendars, produces PostScript output, calculates
sunrise, sunset and moon phases, is multilingual, and can
do complicated date calculations. It also includes a WWW
- A photorealistic rendering tool whose goal is to offer a solid
implementation of several existing photorealistic rendering
algorithms to compare them, evaluate their benefits and shortcomings,
find solutions to the latter, and develop newer and better algorithms.
The algorithms implemented in RenderPark include:
A source code distribution is available. It is written in C and
has been test on Linux Intel amongst other platforms.
- Galerkin radiosity (gathering and shooting) with or without
hierarchical refinement, higher-order approximations, clustering,
and view importance;
- stochastic ray radiosity;
- ray casting; and
- classic and stochastic ray tracing.
- An Internet videoconferencing tool developed as a successor to
It is an experimental research tool developed as a testbed for
such topics as layered video and audio transport and coding,
Forward Error Correction for video and audio on the Internet,
and wireless and satellite link access to the Internet.
The features of Rendez-Vous include:
- RTP protocol support over multicast or unicast IP;
- support for the H261 video standard;
- high quality PCMU, ADPCM, VADPCM and low bandwidth GSM and
LPC audio coding;
- MPEG 1/2 file reading and transcoding;
- an integrated scheduler for multilayer video and audio flow management
- a flexible interface written in C++;
- support for layered coding and transmission of video and audio flows;
- experimental multiresolution DCT video codecs; and
- application level hierarchical FEC.
Distributions of Rendez-Vous are available for Sun Solaris,
Linux Intel and FreeBSD Intel platforms.
Documentation is sketchy and scattered about in several ASCII
- A multi-game arcade emulator that emulates
the behavior of the original Arcade machines.
This is written in C++.
Source code and binary distributions are available, with the latter
including a Linux Intel binary.
- A library for creating PDF documents using
the Python language.
The package is broken into several subpackages or libraries including:
- pdfgen, a low-level user interface to the PDF format for creating
individual shapes and lines of text;
- pdfbase, a non-public interface containing code to handle the
outer structure of PDF files as well as utilities to handle text
metrics and compressed streams;
- platypus, a high-level user interface (for Page LAyout and
TYPography Using Scripts) for dealing with paragraphs, frames on the
page, and document templates; and
- lib, containing code that cuts across both the other user interface
libraries, e.g. code for standard colors, units and page sizes.
- A email-based request tracking system based on people with problems
or questions sending requests via email to a group responsible for
dealing with those problems.
The package consists of several individual tools including:
A source code distribution is available. This is written mostly
in Perl and has
command-line, X11 and
The individual programs are documented in man pages.
- q, lists the requests in the queue;
- req, performs operations on requests in the queue;
- reqshow, shows the entirety of a request;
- reqtail, watches the req log file;
- reqglimpse, uses Glimpse to search
- reqstat, calculates and provides simple statistics;
- status, lists the requests in the system owned by the
person running the program;
- req-mailgate, a mail gateway for the system; and
- req-nextnum, generates numbers for tagging requests with
- A package designed to provide functionality essential to task
management including a selection of user interfaces, support for
multiple database backends, flexible security controls, and extensive
Other features include:
A source code distribution of this Perl
package is available.
- running cleanly in homogeneous environments, even those degraded
by a pack of Windoze lusers;
- command-line, email and Web interfaces;
- an extension interface allowing the system to be accessed from other
programs, scripts or interfaces;
- separate modules for processing authentication, notification,
data storage and logging;
- a standardized logging mechanism;
- common notification methods; and
- new fields for storing information about time spent and task
priority that retain a history of assignments for each user.
- A Fortran 90 code that uses various
geologic data (e.g. fault offsets and strains in balance cross-sections,
latitude anomalies and vertical-axis rotations from paleomagnetism,
and paleostress directions) to compute paleotectonic flow and deformation
patterns. It also integrates them backward over time to create
- A PDF library that allows any Java
application capable of printing to generate PDF files.
A source code version of the library is available.
- A secure, decentralized remote execution system for computer clusters.
REXEC provides high availability, scalability, transparent remote
execution, dynamic cluster configuration, decoupled node discovery
and selection, a well-defined failure and cleanup model, parallel and
distributed program support, and strong authentication and encryption.
The system architecture is organized around three types of entities:
- rexecd, a daemon that runs on each cluster node;
- rexec, a client program that users run to execute jobs; and
- vexecd, a replicated daemon providing node discovery and
The functions of the rexec client are:
- selection of nodes based on user preferences; and
- remote execution of the user's application on the selected nodes
via direct SSL-encrypted TCP
connections to node rexecd daemons.
- A program for the calculation of exponentially distributed random
This is TOMS algorithm number 780 and is
documented in Hamilton (1998).
- A procedural programming language that allows programs and
algorithms to be written in a clear and structured way. It is
also designed to be used as a macro language by arbitrary
application programs so that application developers don't have to
design their own macro languages and interpreters. It was originally
developed for IBM mainframes but there are now ports to other
UNIX-based REXX implementations include:
Various REXX add-ons, extensions, etc. include:
See also the
REXX Language Association
See Daney (1992).
- Rexx/SQL, provides a
REXX interface to a wide range of
- Rexx/Tk, a GUI programming library that
combines a REXX programming front-end with a
Tk widget back-end;
- Rexx/Trans, a dynamic link or shared
library that translates REXX API calls from an
external function package into calls specific to a particular interpreter;
- Rexx/Wrapper, a tool that wraps
REXX source code into an executable;
- RxSock, a REXX interface
- An implementation of an interpreter for the
REXX language. It is written in ANSI C and
will compile using the GCC compiler. The included make file
is set up with definitions for several
UNIX platforms, including
Linux. A reference and users manual is also available.
- A package that provides a consistent, simple and powerful
REXX interface to
a wide range of SQL databases.
Simultaneous multiple connections to different databases from different vendors
can be realized, as well as simultaneous multiple statements open on
each database connection.
- A GUI programming library that combines a
REXX programming front-end with a
Tk widget back-end.
- A dynamic link library or shared library that translates
REXX calls from an external function package
or application into API calls specific to a particular interpreter.
A version of this is planned (2/00) for UNIX platforms.
- A tool that wraps a REXX source code file into
The source code can be optionally compressed and encoded.
This requires a supported REXX interpreter and a supported
- The Request For Comments documents are a series
of numbered reports in which documentation for Internet standards
is maintained, although not all of the RFCs contain standards.
RFC 1594, entitled ``FYI on Questions and Answers,'' describes
RFCs as ``... working notes of the Internet research and development
community. A document in this series may be on essentially any
topic related to computer communication, and may be anything from
a meeting report to the specification of a standard. ... Once
a document is assigned an RFC number and published, that RFC is
never revised or re-issued with the same number. ... However,
a protocol may be improved
and re-documented many times in several different RFCs.''
Memos proposed to be RFCs can be submitted by anyone, although
most are created by Internet Engineering Task Force (IETF) working
RFCs can be divided into four groups based on naming conventions:
Beginning with RFC 899, all those ending in 99 are reserved to summarize
the preceding 99 RFCs.
- Best Current Practices (BCP) RFCs, which describe best current
practices for the Internet community and must go through a review
process to earn the technical approval of the IETF (although they
do not become standards);
- For Your Information (FYI) RFCs, which are informative and
explanatory in nature and can address any topic of interest to the
- Standards (STD) RFCs, which contain technical information that either
has attained the status of Internet Standard or is on track to becoming
one (with those that have been standardized carrying the STD label);
- Other RFCs, a catch-all group containing RFCs that aren't BCP,
FYI, or STD RFCs but still are technical and relate in some way to
an Internet protocol.
There are currently (4/98) over 2200 RFC documents with some of the
more well known ones dealing with Internet standards including
768 (UDP), 793 (TCP), 821 (SMTP), 822 (Mail),
854 (Telnet), 959 (FTP),
977 (NNTP), 1001 (NetBIOS),
1034 (DNS), 1122 (TCP/IP),
1661 (PPP), HTML 2.0 (1866), and HTTP (2068).
Other RFCs of more than passing interest include
``The RFC Reference Guide'' (1000),
``A TCP/IP Tutorial'' (1180),
``A Glossary of Networking Terms'' (1208),
``Internet Users' Glossary'' (1983), and
``The Internet Standards Process - Revision 3'' (2026).
- A local algorithm for smooth surface fitting for rectangular grid data
with the accuracy of a bicubic polynomial.
This is TOMS algorithm 760 and is documented
in Akima (1996a).
- A C++ library and various programs that comprise
a laboratory for experimenting with
finite element methods.
Built-in classes are provided for solving various linear and
The programs in the package include:
- poiseuille2d, solves for the Poiseuille flow of a Bingham
fluid (i.e. the Mossolov problem) in a square container;
- p2d_post, Poiseuille flow post processor;
- bamg2geo, converts a BAMG mesh into GEO format;
- geo, plots a finite element mesh;
- space, prints a finite element space;
- field, plots a field;
- mfield, plots multiple fields;
- robin, sets up Robin boundary conditions;
- proj, projects a finite element field on a finite element space;
- hb, plots or manipulates a sparse matrix;
- makefish, creates a Poisson matrix;
- makefish3d, creates a 3-D Poisson matrix;
- lehmer, creates a symmetric, positive definite N by N matrix;
- wathen, generates a N by N finite element matrix;
- rheolef_cfg, locates linking libraries.
The C++ classes include:
- geo, finite element mesh class;
- domain, a container for a part of a finite element mesh;
- geo_element, defines geometric elements and sides as a set
of vertices and edge indexes;
- space, defines a piecewise polynomial finite element space;
- field, stores degrees of freedom associated with a mesh and
a piecewise polynomial approximation;
- form, groups sparse matrices associated with a bilinear form
on finite element spaces;
- form_diag, implements a form using a diagonal matrix;
- trace, restricts a field to the values located in a boundary
- form_diag_manip, build a form_diag on a
- base, contains the approximation type and the evaluation of
the basis functions;
- vec, implements an array as a dense vector;
- csr, implements a matrix in compressed sparse row format;
- ssk, implements a symmetric matrix Choleski factorization;
- diag, implements a diagonal matrix;
- permutation, implements a permutation matrix;
- occurence, for memory management;
- vector, implements a reference counting wrapper for the
STL vector container class;
- iorheo, input and output functions and manipulations;
- irheostream and orheostream, implement a stream interface
for managing large data streams;
- ipstream and opstream, for initiating pipe I/O; and
- acinclude, autoconf macros.
The algorithms implemented include:
- cg_abtbc, a conjugate gradient algorithm for solving for
the pressure in stabilized Stokes problems;
- cgup_abtbc, cg_abtbc with a block diagonal
- urm_abtbc, a Uzawa algorithm with a block diagonal
preconditioner for the stabilized Stokes system;
- stokes_problem, a general class for supplying algorithms
for solving the Stokes problem;
- stokes_solver, wrappers for algorithms;
- cg, the conjugate gradient algorithm;
- bicgstab, the bi-conjugate gradient stabilized method;
- gmres, generalized minimum residual method;
- qmr, the quasi-minimal residual algorithm; and
- uzawa_abtb, a mixed linear solver using the Uzawa algorithm
with a block diagonal preconditioner.
- An integrated development environment (IDE) for
provides a friendly user interface to the compilers which come
with DJGPP, e.g. gcc.
A version is also available which provides an IDE for developing
The capabilities of RHIDE include:
- compilation of programs without knowing the exact command line
syntax of your compiler;
- compilation of collections of source files belonging to specific
- syntax highlighting for C/C++ and Pascal files and headers;
- an integrated debugger allowing debugging from within RHIDE; and
- easy customizability of colors, screen mode, compilers, compiler
options, language, etc.
A binary version of RHIDE is available for Linux Intel platforms.
It is extensively documented in a user's manual available in
both HTML and PostScript formats.
- A gene map analysis software package for creating radiation
hybrid maps. It is designed to accomodate very large maps and has
been used to create whole genome maps containing thousands of
The features of RHMAPPER include:
A source code distribution is available. About 90% is written in
Perl with the rest C.
Various other common programs are required for full use of
A user's manual is available in HTML format.
- use of a hidden Markov model to perform maximum likelihood
calculations on multipoint maps;
- accomodation of laboratory errors via false positive and
negative rates a priori and allowing for such error in the calculation;
- detection of laboratory error by flagging individual assays with
a high probability of being erroneous;
- a client/server architecture which allows the map building routines
to be easily modified; and
- a built-in extensible interpreted programming language.
- The RIACS Intelligent Auditing and Categorizing
an auditing package in the form of a sophisticated file scanning
This is composed of a master shell program and several ancillary
programs used by it for various tasks. These programs are:
- audit, the master shell program for auditing a file system
for security or accounting
problems by scanning the filesystem and comparing the results to
a master file;
- auditcomm, displays lines not in common between two
sorted lists using wildcards;
- auditfmt, formats output from a file system audit;
- auditgrep, searches for strings that match a field in a file;
- auditls, lists a file system in an auditable form;
- auditmail, mails a file system audit to specified users;
- auditmerge, merges old and new master files;
- auditpnm, prints line that don't match between two files;
- auditscan, scans file systems while printing file
- rinstall, installs the programs for auditing on a client;
- runaudit, a shell script for auditing multiple file systems;
- cdes, encrypts/decrypts using DES; and
- timeout, terminates an idle program.
- Repository In a Box is a package for setting up and
maintaining software repositories.
In addition to setting up your own repository, RIB will allow your
repository to interoperate with other repositories which use the
Basic Interoperability Data Model (BIDM), an IEEE standard for
interoperable software cataloging on the Internet.
The source code for RIB is available. It is written in
Perl and requires version 5.003 or
greater to operate as well as several Perl modules available via CPAN.
An HTTP server and the
Isearch text search engine are
A user's manual is available in HTML format.
- Rice Wavelet Toolbox
- A collection of Matlab M and Mex files
which implement wavelet and filter bank analysis.
- A compiler construction tool
which is a language for compiler writing. It is a tool for parsing,
code optimization, code generation, static analysis of programs, and
for the programming of preprocessors and converters.
The main data structures are atoms, lists, and trees, with the
control structures based on advanced pattern matching.
All phases of compilation, including parsing, optimization, and
code generation, can be programmed in the language in short
and readable form.
A source code distribution of RIGAL written in C is available.
It can be compiled and used on most UNIX flavors.
It is documented in a manual and a man page, both of which are
available in PostScript and
See Auguston (1991).
- A daemon that performs as an Internet
This redirects TCP connections from one
IP address and port to another.
This runs as a single process using non-blocking I/O so it is
able to redirect large numbers of connections without sigificantly impacting
A source code distribution is available.
- The Recursive Integration Optimal Trajectory
Solver is a Matlab toolbox for solving
optimal control problems.
The features of RIOTS include:
A source code distribution is available which contains both Matlab
and C programs, the latter of which are compiled and linked into
Matlab via the MEX facility.
A user's manual is available in PostScript format.
- solving a large class of finite-time optimal control problems
including trajectory and point constraints, control bounds, variable
initial conditions, free final time problems, and problems with
integral and/or endpoint cost functions;
- system functions supplied as either object code or M-files;
- time integration via fixed step Runge-Kutta, a discrete-time
solver, or a variable step size method;
- controls represented as splines for a high degree of function
approximation accuracy without a large number of control parameters;
- the use of a coordinate transformation that creates an orthonormal
basis for the spline subspace of controls by the optimization routines
to significantly reduce the iterations needed for convergence;
- a choice of three main
optimization routines for different levels
of generality in the control problem; and
- the capability of dealing with singular control problems.
- The Routing Information Protocol was originally
designed for the Xerox PARC Universal Protocol (and called GWINFO)
and used in the Xerox Network Systems (XNS) protocol suite.
Its association with UNIX and TCP/IP
begain when BSD UNIX began shipping with a RIP implementation
called routed in 1982.
It is defined in RFC-1058.
RIP is a protocol that automatically creates and maintains network
routes among routers that support it. When one router learns about
changes in its routes from one of its neighbors, it sends this
information to other neighboring routers so they can also be updated.
This allows the network components to calculate how to work around
failures should a network component fail.
RIP is slowly being replaced by IGRP as
its limitations are being reached.
- Riordan's Internet Privacy Enhanced Mail
is an implementation of
Privacy Enhanced Mail (PEM) that allows your electronic mail to have
the four security facilities provided by PEM: disclosure protection,
originator authenticity, message integrity measures, and
non-repudiation of origin. RIPEM has been ported to many systems,
- A Perl program for creating MPEG-1 Layer 3 (MP3)
audio files from an audio CD.
This is basically a front end for
The automatic functionality of RipIT includes:
- obtaining information about the audio tracks via
- ripping the audio CD tracks;
- encoding the MP3s;
- id3 tagging the MP3s; and
- creating an M3U file.
- A program for inducing classification rules from a set of
preclassified examples which is broadly similar to such
methods as neural nets, nearest neighbor, and decision
tree induction systems. The user provides a set of examples,
each having been labeled with the appropriate class, and
Ripper looks at the examples and finds a set of rules
that will predict the class of later examples.
Ripper has several advantages over other learning techniques including:
- a hypothesis expressed as a set of if-then rules which are
relatively easy to understand;
- it is asymptotically faster than other competitive rule learning
algorithms, i.e. it will be much faster on very large datasets;
- it allows the user to specify constraints on the format of the
learned if-then rules; and
- it allows attributes to be either nominal, continuous, or
``set-valued'' (where a set-valued attribute is a set of atoms which,
e.g. could be used to encode the set of words appearing in
A source code distribution of Ripper is available upon completing
an online license agreement form.
It is written in ANSI C and thus portable to most
It is documented in a man page as well as in a set of
technical papers available in PostScript
- A graphical interface to
8hz-mp3 written using
- The Research Instrument for Symbolic Algebra
is a computer algebra system which provides a programming
language Asir with several subroutine libraries that can also be used
as parts of other programs. The programming system has a C-like
language, and interpreter, and a dbx-like source debugger.
available as a binary for Linux platforms as well as several
other UNIX platforms.
A user's manual is available but is written in Japanese.
Some research papers are available in English in PostScript
- A version of Tk, the
graphical interface part of the Tcl/Tk package. Rivet differs
from Tcl/Tk in that it requires no Tcl code evaluation and is
therefore suitable for embedding in other programming languages
without the overhead of Tcl. It presently (8/96) contains
interfaces for C and
with the former providing the basis
for embedding in other languages and the latter suitable for
Rivet offers several advantages to the Python programmer.
The interface is clean and efficient with performance on par
or better than Tcl/Tk. Python's structured programming
environment also better allows the development of larger
applications. The programming interface is organized for
easy translation from Tcl/Tk, allowing the quick reuse
of existing applications, documentation and experience.
The source code is available and is known to have successfully
compiled on Solaris 5.3/5.4, SGI 5.3, HPUX9.05 and Linux
platforms. The present release requires Tk4.0, Tcl7.4 and
Python 1.3 or later.
- The Resolution Independent
Video Language is
a Tcl/Tk extension
for multimedia processing. It provides primitives for manipulating
image, audio and video objects. Programs written in Rivl
use high level operators that are independent of video
resolution and format, increasing a program's portability,
simplifying code reuse, and reducing development time.
The Rivl source code is available and has been successfully
compiled on Sun 4, Solaris, HP-UX and Linux systems. It
requires Tcl 7.4 and Tk 4.0. A user's guide and additional
documentation is available in PostScript and HTML format.
Rivl is part of the
- A remote periodic job agent/daemon that can be run periodically and
automatically establishes a connection with other machines, exchanging
job requests to be performed at remote locations or while it is online.
A secondary daomen runs at the remote locations and accepts job requests
for full automated bi-directional cooperation.
The rjobs agent can deal with non-ideal circumstances such as broken
connections and hanging jobs.
A source code distribution is available.
- A suite of codes based on Runge-Kutta formulas that
solves the initial value problem for a first order system
of ordinary differential equations (ODEs). There are
single and double precision Fortran 77 versions as well as
a Fortran 90 version of the package available. The documentation
is contained within the programs as well as in ASCII files.
- A Fortran 90 package for solving
ODE initial value problems.
This is TOMS algorithm 771 and is documented
in Brankin and Gladwell (1997).
- ``Our''-lab is
an interactive, interpreted scientific programming
environment. This is a very high level language intended
to provide fast prototyping and program development along
with easy data visualization and processing. It is not a
Matlab (i.e. it wasn't
designed to run Matlab programs) but possesses similar operators
and concepts due to a similar purpose, i.e. creating an
experimental environment or laboratory for scientific
RLaB is called a high level language because typing and dimensioning
of variables aren't performed by the user but rather are
inferred by the program from usage context. It is also high
level due to its interactivity which allows the user to
set up, perform, and visualize experiments in real time in
the context of a single environment. The structured language
in RLaB is similar to C in that a program is sequence of
functions acting on variables, with the functions being either
built-in or user defined. It also features strongly typed
objects in classes. The classes are numeric, string, function,
and list with the numeric class encompassing scalars, vectors and
matrices. Functions are also objects and as such can call or
be called by other functions, including themselves.
The build-in functions generally are those that operate on
either scalars, vectors or matrices. Scalar functions include
trig functions, rounding, absolute values, square roots, etc.
Vector functions include sum, products, means, max/min, FFT,
sort, etc. Matrix functions include Cholesky decomposition,
eigenvalue determination, determinants, inverses, norms,
and much more. Plotting is performed using either the
PLplot library or
Gnuplot. This allows
the creation, viewing and printing of the usual range of
2- and 3-D and histogram plots.
The source code for RLaB
is available as well as binaries for Linux, DOS, OS/2,
Mac and Acorn platforms. Installation from source
requires other packages such as
either PLplot or Gnuplot as mentioned above.
The documentation includes a tutorial and
a manual for the built-in functions in both HTML and
The June 1996 issue of the
has an article about RLaB written by its creator, Ian
- A GUI for RLaB written for the
- A program which uses TCP/IP to
send print jobs to lpd servers anywhere on a network.
It does not require that the remote printers be explicitly
known to the local system (via /etc/printcap) and is thus
more flexible than other similar programs.
The rlpr package can be used anywhere that lpr is used and
is backwards compatible iwth the traditional BSD lpr.
If rlpr is installed setuid root it
can directly interact with other lpd programs on a network.
If it cannot be so installed then it can be used in conjunction
with an rlprd proxy agent which takes lpd requests on a non-privileged
port, maps them to a privileged port, and sends them out to the
real lpd. The proxy and the lpd do not have to be on the same
machine so, for example, a user could configure his lpd to accept
connections from an rlprd running somewhere else on the network
and use that rlprd as a proxy for rlpr.
A source code distribution of rlpr is available. It
is written in C and can be compiled and used on most
Its use is documented in a set of man pages included in
- The Reliable Multicast Framework is a
protocol developed to address a variety of multicast needs on
the Internet. The RMF framework does not uniquely identify
a single reliable multicast protocol but instead provides
sufficient structure and mechanism such that various reliable
multicast protocols can be implemented and even interoperate
within the framework.
The features of RMF include:
- self-identifying packets which permit fine grained per-packet
reliability semantics and also allow a sender to induce desired
receiver behavior on packet reception;
- a notion of a universal multicast receiver, i.e. an RMF-based
receiver that interoperates with any sender via the use of self-identifying
- a clear separation between data- and session-level functionality.
Source code distributions of RMF written in Java
and C++ are available.
The C++ version has been tested on Solaris, IRIX and Linux platforms,
with compilation on the latter requiring the
egcs compiler suite.
The Java version requires JDK 1.1.x or higher.
Documentation for both is included in the distributions.
Up: Linux Software Encyclopedia