# FreeBSD Manual Pages

```mathfunc(n)		  Tcl Mathematical Functions		   mathfunc(n)

______________________________________________________________________________

NAME
mathfunc	- Mathematical functions for Tcl expressions

SYNOPSIS
package require Tcl 8.5

::tcl::mathfunc::abs arg
::tcl::mathfunc::acos arg
::tcl::mathfunc::asin arg
::tcl::mathfunc::atan arg
::tcl::mathfunc::atan2 y	x
::tcl::mathfunc::bool arg
::tcl::mathfunc::ceil arg
::tcl::mathfunc::cos arg
::tcl::mathfunc::cosh arg
::tcl::mathfunc::double arg
::tcl::mathfunc::entier arg
::tcl::mathfunc::exp arg
::tcl::mathfunc::floor arg
::tcl::mathfunc::fmod x y
::tcl::mathfunc::hypot x	y
::tcl::mathfunc::int arg
::tcl::mathfunc::isqrt arg
::tcl::mathfunc::log arg
::tcl::mathfunc::log10 arg
::tcl::mathfunc::max arg	?arg ...?
::tcl::mathfunc::min arg	?arg ...?
::tcl::mathfunc::pow x y
::tcl::mathfunc::rand
::tcl::mathfunc::round arg
::tcl::mathfunc::sin arg
::tcl::mathfunc::sinh arg
::tcl::mathfunc::sqrt arg
::tcl::mathfunc::srand arg
::tcl::mathfunc::tan arg
::tcl::mathfunc::tanh arg
::tcl::mathfunc::wide arg

______________________________________________________________________________

DESCRIPTION
The  expr command handles mathematical functions	of the form sin(\$x) or
atan2(\$y,\$x) by converting  them	 to  calls  of	the  form  [tcl::math-
func::sin  [expr	 {\$x}]]	 or  [tcl::mathfunc::atan2  [expr  {\$y}] [expr
{\$x}]].	A number of math functions are available by default within the
namespace  ::tcl::mathfunc; these functions are also available for code
apart from expr,	by invoking the	given commands directly.

Tcl supports the	following mathematical functions in  expressions,  all
of  which  work	solely	with  floating-point  numbers unless otherwise
noted:

abs	  acos	      asin	 atan
atan2	  bool	      ceil	 cos
cosh	  double      entier	 exp
floor	  fmod	      hypot	 int
isqrt	  log	      log10	 max
min	  pow	      rand	 round
sin	  sinh	      sqrt	 srand
tan	  tanh	      wide

ditional	 functions  by using proc (or any other	method,	such as	interp
alias or	Tcl_CreateObjCommand) to define	new commands in	the tcl::math-
func  namespace.	  In  addition,	 an  obsolete interface	named Tcl_Cre-
ateMathFunc() is	available to extensions	that are  written  in  C.  The
latter interface	is not recommended for new implementations.

DETAILED DEFINITIONS
abs arg
Returns the absolute value of arg.  Arg may be either integer or
floating-point, and the result is	returned in the	same form.

acos arg
Returns the arc cosine of	arg, in	the range [0,pi] radians.  Arg
should be	in the range [-1,1].

asin arg
Returns  the arc sine of arg, in the range [-pi/2,pi/2] radians.
Arg should be in the range [-1,1].

atan arg
Returns the arc tangent of arg, in the range [-pi/2,pi/2]	 radi-
ans.

atan2 y x
Returns  the  arc	tangent	of y/x,	in the range [-pi,pi] radians.
x	and y cannot both be 0.	 If x  is  greater  than  0,  this  is
equivalent to "atan [expr	{y/x}]".

bool arg
Accepts any numeric value, or any	string acceptable to string is
boolean, and returns the corresponding boolean  value  0	or  1.
Non-zero	numbers	 are  true.  Other numbers are false.  Non-nu-
meric strings produce boolean value in agreement with string  is
true and string is false.

ceil arg
Returns  the smallest integral floating-point value (i.e.	with a
zero fractional part) not	less than arg.	The  argument  may  be
any numeric value.

cos arg
Returns the cosine of arg, measured in radians.

cosh arg
Returns the hyperbolic cosine of arg.  If	the result would cause
an overflow, an error is returned.

double arg
The argument may be any numeric value, If	 arg  is  a  floating-
point  value,  returns  arg, otherwise converts arg to floating-
point and	returns	the converted value.  May return Inf  or  -Inf
when  the	argument is a numeric value that exceeds the floating-
point range.

entier arg
The argument may be any numeric value.  The integer part of  arg
is  determined and returned.  The	integer	range returned by this
function is unlimited, unlike int	and wide which truncate	 their
range to fit in particular storage widths.

exp arg
Returns  the  exponential	of arg,	defined	as e**arg.  If the re-
sult would cause an overflow, an error is	returned.

floor arg
Returns the largest integral floating-point value	(i.e.  with  a
zero fractional part) not	greater	than arg.  The argument	may be
any numeric value.

fmod x y
Returns the floating-point remainder of the division of x	by  y.
If y is 0, an error is returned.

hypot x y
Computes	the  length of the hypotenuse of a right-angled	trian-
gle, approximately "sqrt [expr {x*x+y*y}]" except	for being more
numerically  stable  when	 the  two arguments have substantially
different	magnitudes.

int arg
The argument may be any numeric value.  The integer part of  arg
is determined, and then the low order bits of that integer value
up to the	machine	word size are returned as  an  integer	value.
For  reference,  the  number  of	bytes  in the machine word are
stored in	the wordSize element of	the tcl_platform array.

isqrt arg
Computes the integer part	of the square root of arg.   Arg  must
be  a positive value, either an integer or a floating point num-
ber.  Unlike sqrt, which is limited to the precision of a	float-
ing point	number,	isqrt will return a result of arbitrary	preci-
sion.

log arg
Returns the natural logarithm of arg.  Arg must  be  a  positive
value.

log10 arg
Returns  the  base  10 logarithm of arg.	Arg must be a positive
value.

max arg ...
Accepts one or more numeric arguments.  Returns the one argument
with the greatest	value.

min arg ...
Accepts one or more numeric arguments.  Returns the one argument
with the least value.

pow x y
Computes the value of x raised to	the power y.  If  x  is	 nega-
tive, y must be an integer value.

rand   Returns a	pseudo-random floating-point value in the range	(0,1).
The generator algorithm is a simple linear congruential  genera-
tor that is not cryptographically	secure.	 Each result from rand
completely determines all	future results from  subsequent	 calls
to  rand,	 so  rand should not be	used to	generate a sequence of
secrets, such as one-time	passwords.  The	seed of	the  generator
is  initialized from the internal	clock of the machine or	may be
set with the srand function.

round arg
If arg is	an integer value, returns arg, otherwise converts  arg
to integer by rounding and returns the converted value.

sin arg
Returns the sine of arg, measured	in radians.

sinh arg
Returns  the  hyperbolic sine of arg.  If	the result would cause
an overflow, an error is returned.

sqrt arg
The argument may be any non-negative numeric value.   Returns  a
floating-point value that	is the square root of arg.  May	return
Inf when the argument is a numeric value that exceeds the	square
of the maximum value of the floating-point range.

srand arg
The arg, which must be an	integer, is used to reset the seed for
the random number	generator of rand.  Returns the	 first	random
number  (see rand) from that seed.  Each interpreter has its own
seed.

tan arg
Returns the tangent of arg, measured in radians.

tanh arg
Returns the hyperbolic tangent of	arg.

wide arg
The argument may be any numeric value.  The integer part of  arg
is  determined,  and  then the low order 64 bits of that integer
value are	returned as an integer value.

expr(n),	mathop(n), namespace(n)