Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
M_REAL(3)		    Library Functions Manual		     M_REAL(3)

NAME
       M_Real -- Agar-Math real	number operations

SYNOPSIS
       #include	<agar/core.h>
       #include	<agar/gui.h>
       #include	<agar/math/m.h>

DESCRIPTION
       Real  numbers  in  Agar-Math  are most often described using the	M_Real
       type.  Depending	on which  precision  mode  the	library	 was  compiled
       against	(see the --with-<mode>-fp configure option), M_Real may	expand
       to float	(32-bit,  SINGLE_PRECISION  is	defined)  or  double  (64-bit,
       DOUBLE_PRECISION	is defined).

       Most  Agar-Math	structures use M_Real to represent floating-point num-
       bers.  The real and imaginary parts of M_Complex(3), and	 the  elements
       of  M_Vector(3) and M_Matrix(3) are all stored as M_Real	values.	 Note,
       however,	that fixed-size	types such as M_Vector2, M_Vector3, M_Vector4,
       and M_Matrix44 may or may not use a different precision	(depending  on
       the  availability  of  SIMD instructions	such as	AltiVec	and SSE).  The
       general M_Vector	and  M_Matrix  types  are  always  guaranteed  to  use
       M_Real.

INITIALIZATION
       M_Real M_ReadReal(AG_DataSource *ds)

       void M_CopyReal(AG_DataSource *ds, M_Real *r)

       void M_WriteReal(AG_DataSource *ds, M_Real r)

       The   M_ReadReal()   function   reads   a   complex   number   from  an
       AG_DataSource(3)	and returns it.	 The M_CopyReal() variant returns  the
       number in r.  M_WriteReal() writes a real number	to a data source.

CONSTANTS
       The library defines the following fundamental constants:
       M_E	    Euler's constant
       M_LOG2E	    log_2 e
       M_LOG10E	    log_10 e
       M_LN2	    log_e 2
       M_LN10	    log_e 10
       M_PI	    pi
       M_PI_2	    pi/2
       M_PI_4	    pi/4
       M_1_PI	    1/pi
       M_2_PI	    2/pi
       M_2_SQRTPI   2/sqrt(pi)
       M_SQRT2	    sqrt(2)
       M_SQRT1_2    1/sqrt(2)

       The  following  constants describe the limitations of the memory	format
       for the current precision mode:
       M_EXPMIN	       Minimum exponent.
       M_EXPMAX	       Maximum exponent.
       M_PRECISION     Precision of the	significand in bits.
       M_PRECISION_2   M_PRECISION/2 (rounded up).
       M_NUMMAX	       Highest representible number.
       M_MACHEP	       Machine epsilon,	or unit	roundoff.
       M_TINYVAL       A very small number, close to M_MACHEP.
       M_HUGEVAL       A very large number.
       M_INFINITY      Representation of infinity.

STANDARD MATH ROUTINES
       M_Real M_Log(M_Real x)

       M_Real M_Exp(M_Real x)

       M_Real M_ExpM1(M_Real x)

       M_Real M_Sqrt(M_Real x)

       M_Real M_Cbrt(M_Real x)

       M_Real M_Sin(M_Real x)

       M_Real M_Cos(M_Real x)

       M_Real M_Tan(M_Real x)

       M_Real M_Sinh(M_Real x)

       M_Real M_Cosh(M_Real x)

       M_Real M_Tanh(M_Real x)

       M_Real M_Cot(M_Real x)

       M_Real M_Sec(M_Real x)

       M_Real M_Csc(M_Real x)

       M_Real M_Asin(M_Real x)

       M_Real M_Acos(M_Real x)

       M_Real M_Atan(M_Real x)

       M_Real M_Asinh(M_Real x)

       M_Real M_Acosh(M_Real x)

       M_Real M_Atanh(M_Real x)

       M_Real M_Atan2(M_Real y,	M_Real x)

       M_Real M_Hypot2(M_Real x, M_Real	y)

       M_Real M_Fabs(M_Real x)

       M_Real M_Sgn(M_Real x)

       M_Real M_Pow(M_Real x, M_Real y)

       M_Real M_Frexp(M_Real x,	int *exp)

       M_Real M_Ldexp(M_Real x,	int *exp)

       M_Real M_Ceil(M_Real x)

       M_Real M_Floor(M_Real x)

       int M_IsNaN(M_Real x)

       int M_IsInf(M_Real x)

       M_Log() returns the natural logarithm of	x.

       M_Exp() returns the value of e, raised to the power of x.

       The M_ExpM1() routine returns the equivalent of M_Exp(x)-1.   Numerical
       roundoff	error is prevented in the case of x being near zero.

       M_Sqrt()	 returns the square root of x.	M_Cbrt() returns the cube root
       of x.

       M_Sin(),	M_Cos()	and M_Tan() return the sine, cosine and	tangent	 of  x
       (given in radians).  M_Sinh(), M_Cosh(),	M_Tanh() return	the hyperbolic
       sine, cosine and	tangent	of x.

       M_Cot(),	 M_Sec() and M_Csc() return the	cotangent, secant and cosecant
       of x.

       M_Asin(), M_Acos() and M_Atan() return the arc sine, arc	cosine and arc
       tangent of x.  M_Asinh(), M_Acosh() and M_Atanh() return	the hyperbolic
       arc sine, arc cosine and	arc tangent of x.

       M_Atan2() returns the equivalent	of Atan(y/x), except that the sign  of
       the result is determined	from the signs of both arguments.

       M_Hypot2()  computes the	length of the hypotenuse of a right-angle tri-
       angle with the right-angle side lengths of x and	y.

       M_Fabs()	returns	the absolute value of x.

       The sign	function M_Sgn() returns +1.0 if the sign of x is positive  or
       -1.0 if the sign	is negative.

       M_Pow() returns x raised	to the power of	y.

       M_Frexp()  returns  the normalized fraction for x, and writes the expo-
       nent to exp.

       M_Ldexp() returns the result of multiplication of x by 2	to  the	 power
       exp.

       M_Ceil()	 rounds	x up to	the nearest integer.  M_Floor()	rounds down to
       the nearest integer.

       M_IsNan() evaluates to 1	if x is	"not a number".

       M_IsInf() evaluates to 1	if x represents	infinity.

SEE ALSO
       AG_DataSource(3),     AG_Intro(3),     M_Complex(3),	M_Geometry(3),
       M_Matrix(3), M_Quaternion(3), M_Vector(3)

HISTORY
       The M_Real structure first appeared in Agar 1.3.4.

Agar 1.7		       December	21, 2022		     M_REAL(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=M_Real&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help