summaryrefslogtreecommitdiff
path: root/man/2/math-0intro
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
commit46439007cf417cbd9ac8049bb4122c890097a0fa (patch)
tree6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /man/2/math-0intro
parent37da2899f40661e3e9631e497da8dc59b971cbd0 (diff)
20060303-partial
Diffstat (limited to 'man/2/math-0intro')
-rw-r--r--man/2/math-0intro79
1 files changed, 79 insertions, 0 deletions
diff --git a/man/2/math-0intro b/man/2/math-0intro
new file mode 100644
index 00000000..573d6076
--- /dev/null
+++ b/man/2/math-0intro
@@ -0,0 +1,79 @@
+.TH MATH-INTRO 2
+.SH NAME
+Math: intro \- elementary numerics
+.SH SYNOPSIS
+.EX
+include "math.m";
+math := load Math Math->PATH;
+.EE
+.SH DESCRIPTION
+Inferno's math module and Limbo compiler provide the
+fundamental floating point environment and ``elementary functions''.
+.PP
+Limbo expressions involving only literal and named constants are
+evaluated at compile time with all exceptions ignored.
+However,
+arithmetic on variables is left to run-time, even if data path analysis
+shows the value to be a compile time constant.
+This implies that tools
+generating Limbo source must do their own simplification, and not
+expect the compiler to change
+.B x/x
+into
+.BR 1 ,
+or
+.B -(y-x)
+into
+.BR x-y ,
+or even
+.BR x-0
+into
+.BR x .
+.PP
+Subexpression elimination and other forms of code motion may be done by the
+compiler,
+but not across calls to the mode and status functions described in
+.IR math-fp (2).
+Removal of
+parentheses or factoring is not performed by the compiler.
+The evaluation
+order of
+.B a+b+c
+follows the parse tree and is therefore the same as for
+.BR (a+b)+c .
+These rules are the same as for Fortran and C.
+.PP
+Contracted multiply-add instructions (with a single rounding) are not
+generated by the compiler, though they may be used in the native BLAS
+(linear algebra)
+libraries.
+All arithmetic follows the IEEE floating point standard, except that
+denormalized numbers may be replaced by flush-to-0, depending on what
+the hardware makes feasible.
+.PP
+Binary/decimal conversion is properly rounded.
+In particular, printing
+a real using
+.B %g
+and reading it on a different machine is guaranteed to
+recover identical bits, including
+conversions done by the compiler.
+The one exception is that
+smaller, faster, but sloppier run-time conversion
+routines may be used when mandated by
+limited memory embedded systems.
+Programmers may assume, however,
+that the
+features described in these man pages are present in all Inferno
+systems intended for general computing.
+.SH SOURCE
+.B /libinterp/math.c
+.SH SEE ALSO
+See
+.IR math-fp (2)
+for floating point control and primitive arithmetic operations,
+.IR math-elem (2)
+for the classical elementary functions of applied mathematics,
+and
+.IR math-linalg (2)
+for basic linear algebra functions.