math::constants(3tcl) Tcl Math Library math::constants(3tcl)
______________________________________________________________________________
NAME
math::constants - Mathematical and numerical constants
SYNOPSIS
package require Tcl ?8.3?
package require math::constants ?1.0.2?
::math::constants::constants args
::math::constants::print-constants args
______________________________________________________________________________
DESCRIPTION
This package defines some common mathematical and numerical constants.
By using the package you get consistent values for numbers like pi and
ln(10).
It defines two commands:
o One for importing the constants
o One for reporting which constants are defined and what values
they actually have.
The motivation for this package is that quite often, with (mathemati-
cal) computations, you need a good approximation to, say, the ratio of
degrees to radians. You can, of course, define this like:
variable radtodeg [expr {180.0/(4.0*atan(1.0))}]
and use the variable radtodeg whenever you need the conversion.
This has two drawbacks:
o You need to remember the proper formula or value and that is er-
ror-prone.
o Especially with the use of mathematical functions like atan you
assume that they have been accurately implemented. This is sel-
dom or never the case and for each platform you can get subtle
differences.
Here is the way you can do it with the math::constants package:
package require math::constants
::math::constants::constants radtodeg degtorad
which creates two variables, radtodeg and (its reciprocal) degtorad in
the calling namespace.
Constants that have been defined (their values are mostly taken from
mathematical tables with more precision than usually can be handled)
include:
o basic constants like pi, e, gamma (Euler's constant)
o derived values like ln(10) and sqrt(2)
o purely numerical values such as 1/3 that are included for conve-
nience and for the fact that certain seemingly trivial computa-
tions like:
set value [expr {3.0*$onethird}]
give exactly the value you expect (if IEEE arithmetic is avail-
able).
The full set of named constants is listed in section Constants.
PROCEDURES
The package defines the following public procedures:
::math::constants::constants args
Import the constants whose names are given as arguments
::math::constants::print-constants args
Print the constants whose names are given as arguments on the
screen (name, value and description) or, if no arguments are
given, print all defined constants. This is mainly a convenience
procedure.
CONSTANTS
pi Ratio of circle circumference to diameter
e Base for natural logarithm
ln10 Natural logarithm of 10
phi Golden ratio
gamma Euler's constant
sqrt2 Square root of 2
thirdrt2
One-third power of 2
sqrt3 Square root of 3
radtodeg
Conversion from radians to degrees
degtorad
Conversion from degrees to radians
onethird
One third (0.3333....)
twothirds
Two thirds (0.6666....)
onesixth
One sixth (0.1666....)
huge (Approximately) largest number
tiny (Approximately) smallest number not equal zero
eps Smallest number such that 1+eps != 1
BUGS, IDEAS, FEEDBACK
This document, and the package it describes, will undoubtedly contain
bugs and other problems. Please report such in the category math ::
constants of the Tcllib Trackers [http://core.tcl.tk/tcllib/re-
portlist]. Please also report any ideas for enhancements you may have
for either package and/or documentation.
When proposing code changes, please provide unified diffs, i.e the out-
put of diff -u.
Note further that attachments are strongly preferred over inlined
patches. Attachments can be made by going to the Edit form of the
ticket immediately after its creation, and then using the left-most
button in the secondary navigation bar.
KEYWORDS
constants, degrees, e, math, pi, radians
CATEGORY
Mathematics
COPYRIGHT
Copyright (c) 2004 Arjen Markus <arjenmarkus@users.sourceforge.net>
tcllib 1.0.2 math::constants(3tcl)