Programmer Guide/Command Reference/EVAL Intro/EVAL: Difference between revisions

From STX Wiki
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
{{DISPLAYTITLE:{{SUBPAGENAME}}}}
The <code>EVAL</code> command can be used to evaluate numerical expressions. These expressions can be constants, scalar variables, vectors, matrices or <code>[[Programmer Guide/Command Reference/EVAL/EVAL Subcommands|EVAL]]</code>[[Programmer Guide/Command Reference/EVAL_Intro/EVAL Subcommands| subcommands]].
The <code>EVAL</code> command can be used to evaluate numerical, vector, and matrix expressions. These expressions may be built up from numerical constants, from scalar, vector, and matrix variables, and from a large number of [[Programmer Guide/Command Reference/EVAL_Intro/EVAL Subcommands|EVAL subcommands]], and operators.
  // if the variable #v does not exist then the following command
  // if the variable #v does not exist then the following command
  // assigns a table item to #v.
  // assigns a table item to #v.

Revision as of 22:00, 22 March 2011

The EVAL command can be used to evaluate numerical, vector, and matrix expressions. These expressions may be built up from numerical constants, from scalar, vector, and matrix variables, and from a large number of EVAL subcommands, and operators.

// if the variable #v does not exist then the following command
// assigns a table item to #v.
$#v := eval vv(1,2,3,4)
// if #v is a value item, then #v remains a value item.

Syntax

An EVAL command uses the following general syntax:

result := eval expression
result := evalcheck expression

An expression may be either a numerical expression, e.g.

result := eval (5 * 10) % 3

or a subcommand, e.g.

result := eval init(10,1,1)

or a combination thereof:

result := eval 5+max(fill(6,1,1))

If the expression is syntactically ill-formed, an error (EVAL) or warning (EVALCHECK) is reported. See the example script expression_check.sts for details.

Numerical Comparison Operators

The EVAL command supports the following numerical comparison operators:

> less than
< greater than
<= less than or equal to
>= greater than or equal to
== equal to
!= not equal to

Note that two numbers/vectors/matrices are considered equal if (and only if)

  1. their dimensions are the same; and
  2. all elements are numerically equal.

Logical Operators

The EVAL command supports the following logical operators:

logical or
&& logical and
! unary not

A C-like '? :' operator is also supported:

result := eval 1 < 2 ? 1+2 : 1-2 // result is 3

Note that unlike C, nested uses of this operator must be surrounded by brackets, e.g.:

result := eval 1 > 2 ? (5 == 5 ? 5 : 0) : (4 == 5 ? 3 : 4) // result is 4

Examples

See the script eval_examples.sts for an extensive list of examples.

Version History

The EVAL command was added to the S_TOOLS-STx language in version 3.7.0. The EVAL command replaces and extends the EVALUATE command. If the EVAL command is not assigning to an existing item, a table is assigned. Note that the current maximum number of arguments is 64 (S_TOOLS-STx version 3.8.0). As of version 3.7.0, S_TOOLS-STx has more numerical objects than just the scalars INT and NUM.

Navigation menu

Personal tools