Mathematical Functions
LINGO offers a number of standard, mathematical functions. These functions return a single result based on one or more scalar arguments. These functions are listed below.
Note: | Not all mathematical functions are defined over all argument values. For example, @LOG( X - 5) is not defined for values of X less-than-or-equal-to 5. In such cases, it may be helpful to bound variables so that all functions are defined, otherwise the solver may return a numeric error. For our @LOG example here, we would want to add a bound statement like @BND( 5.001, X, 100), to force X to lie within the range 5.001 and 100, forcing the @LOG function to be defined over the entire range for X. |
@ABS( X)
Returns the absolute value of X.
@ACOS( X)
Returns the inverse cosine, or arccosine, of X, where X is an angle in radians.
@ACOSH( X)
Returns the inverse hyperbolic cosine of X, where X is an angle in radians.
@ASIN( X)
Returns the inverse sine, or arcsine, of X, where X is an angle in radians.
@ASINH( X)
Returns the inverse hyperbolic sine of X, where X is an angle in radians.
@ATAN( X)
Returns the inverse tangent, or arctangent, of X, where X is an angle in radians.
@ATAN2( X, Y)
Returns the inverse tangent of Y/X.
@ATANH( X)
Returns the inverse hyperbolic tangent of X, where X is an angle in radians.
@COS( X)
Returns the cosine of X, where X is an angle in radians.
@COSH( X)
Returns the hyperbolic cosine of X, where X is an angle in radians.
@EXP( X)
Returns e (2.718281...) raised to the power X.
@FLOOR( X)
This returns the integer part of X. To be specific, if X ≥ 0, @FLOOR returns the largest integer, I, such that I ≤ X. If X is negative, @FLOOR returns the most negative integer, I, such that I ≥ X.
@INT( X)
This returns the integer part of X. To be specific, if X ≥ 0, @INT returns the largest integer, I, such that I ≤ X. If X is negative, @INT returns the largest negative integer, I, such that X ≥ I.
@INTEGRAL( PROCEDURE, X, XL, XU, Y)
This function performs numeric integration using a variant of Simpson's Rule. Argument PROCEDURE is the name of a procedure which calculates the function to be integrated. The function's value should be placed in Y in the specified procedure. The integral will be taken with respect to X over the interval [XL,XU]. At present, @INTEGRAL may only be used in calc sections.
Example 1:
In this example, we illustrate how to compute the integral of the standard normal distribution over the interval [-5,1.645].
MODEL:
! Takes the integral of the standard normal
distribution over the interval [-5,1.645];
PROCEDURE NORMAL:
Y = @EXP( -X * X / 2) / (( 2 * @PI()) ^ 0.5);
ENDPROCEDURE
CALC:
PROB = @INTEGRAL( NORMAL, X, -5, 1.645, Y);
ENDCALC
END
@LGM( X)
Returns the natural (base e) logarithm of the gamma function of X (i.e., log of (X - 1)!). It is extended to non-integer values of X by linear interpolation.
@LMTD( X, Y)
Returns the Log Mean Temperature Difference, (X - Y) / LN(X /Y). |
@LOG( X)
Returns the natural logarithm of X.
@LOG10( X)
Returns the base-10 logarithm of X.
@LOGB( X, B)
Returns the base B logarithm of X, e.g., @LOGB( 8, 2) = 3.
@MOD( X, Y)
Returns the value of X modulo Y, or, in other words, the remainder of an integer divide of X by Y.
@PI()
Returns the value of PI, i.e., 3.14159265.... |
@POW( X, Y)
Returns the value of X raised to the Y power. |
@RLMTD( X, Y)
Returns the Reciprocal of Log Mean Temperature Difference, LN(X /Y) / (X - Y) . |
@ROUND( X, N)
The @ROUND function rounds X to the closest number to X having N digits. For example, if X is equal to 2.576 and N is 2, then @ROUND( X, N) will return 2.58. If X is equal to -2.576 and N is 2, then @ROUND( X, N) will return -2.58.
@ROUNDDOWN( X, N)
The @ROUNDDOWN function rounds X down (towards 0) to the closest number to X having N digits. For example, if X is equal to 2.576 and N is 2, then @ROUNDDOWN( X, N) will return 2.57. If X is equal to -2.576 and N is 2, then @ROUNDDOWN( X, N) will return -2.57.
@ROUNDUP( X, N)
The @ROUNDUP function rounds X up (away from 0) to the closest number to X having N digits. For example, if X is equal to 2.576 and N is 2, then @ROUNDUP( X, N) will return 2.58. If X is equal to -2.576 and N is 2, then @ROUNDUP( X, N) will return -2.58.
@SIGN( X)
Returns -1 if X < 0, 0 if X = 0 and +1 if X > 0.
@SIGNPOWER( X, Y)
Returns X raised to the power Y if X ≥ 0, otherwise returns ABS( X) ^ Y.
@SIN( X)
Returns the sine of X, where X is the angle in radians.
@SINH( X)
Returns the hyperbolic sine of X, where X is an angle in radians.
@SMAX( X1, X2,..., XN)
Returns the maximum value of X1, X2, ..., and XN.
@SMIN( X1, X2,..., XN)
Returns the minimum value of X1, X2, ..., and XN.
@SQR( X)
Returns the value of X squared.
@SQRT( X)
Returns the square root of X.
@TAN( X)
Returns the tangent of X, where X is the angle in radians.
@TANH( X)
Returns the hyperbolic tangent of X, where X is an angle in radians.