Inferno is an operating system well suited to applications that need to be portable, graphical, and networked. This paper describes the fundamental floating point facilities of the system, including: tight rules on expression evaluation, binary/decimal conversion, exceptions and rounding, and the elementary function library. Although the focus of Inferno is interactive media, its portability across hardware and operating platforms, its relative simplicity, and its strength in distributed computing make it attractive for advanced scientific computing as well. Since the appearance of a new operating system is a relatively uncommon event, this is a special opportunity for numerical analysts to voice their opinion about what fundamental facilities they need. The purpose of this short paper is to describe numerical aspects of the initial release of Inferno, and to invite comment before the tyranny of backward compatibility makes changes impossible. An overview of Inferno is given by Dorward et. al. [1] but for our immediate purposes it may suffice to say that Inferno plays the role of a traditional operating system (with compilers, process control, networking, graphics, and so on) but can run either on bare hardware or on top of another operating system like Windows95 or Unix. Programs for Inferno are written in the language Limbo and compiled to machine-independent object files for the Dis virtual machine, which is then implemented with runtime compilation for best performance. Files are accessible over networks using the Styx protocol; together with the presentation of most system resources as files and the manipulation of file namespaces, this permits integration of a collection of machines into a team. Limbo looks somewhat like a mixture of C and Pascal, augmented by modules (to cope with the namespace and dynamic loading needs of large programs) and by a channel facility for convenient (coarse-grain) parallel programing. Array references are boundschecked and memory is garbage collected. The rest of this paper covers the fundamental floating point environment provided by the Limbo compiler and math module, the ‘‘elementary functions,’’ and finally some comments on why particular definitions were chosen or why certain facilities were included or excluded. This discussion assumes the reader is familiar with scientific computing in general and the IEEE floating point standard in particular.
[1]
William Kahan,et al.
Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic
,
1996
.
[2]
Shirley Dex,et al.
JR 旅客販売総合システム(マルス)における運用及び管理について
,
1991
.
[3]
Jack J. Dongarra,et al.
Algorithm 656: an extended set of basic linear algebra subprograms: model implementation and test programs
,
1988,
TOMS.
[4]
Bo Kågström,et al.
Portable High Performance GEMM-Based Level 3 BLAS
,
1993,
PPSC.
[5]
Philip Winterbottom,et al.
The Inferno™ operating system
,
1997,
Bell Labs Technical Journal.
[6]
James Demmel,et al.
Faster Numerical Algorithms via Exception Handling
,
1994,
IEEE Trans. Computers.
[7]
Guy L. Steele,et al.
How to print floating-point numbers accurately
,
1990,
PLDI '90.
[8]
D ClingerWilliam.
How to read floating point numbers accurately
,
1990
.
[9]
Willard L. Miranker,et al.
Computer arithmetic in theory and practice
,
1981,
Computer science and applied mathematics.
[10]
D. Gay.
Correctly Rounded Binary-Decimal and Decimal-Binary Conversions
,
1990
.
[11]
William D. Clinger.
How to Read Floating-Point Numbers Accurately
,
1990,
PLDI.
[12]
Ansi Ieee,et al.
IEEE Standard for Binary Floating Point Arithmetic
,
1985
.