 Previous | Next Expressions on arrays of real Home ▸ Documentation ▸ Smile ▸ Computing ▸ Smile's maths ▸ Expressions on arrays of real To compute an arbitrary expression on arrays of real, use evalformula. set a to createarray 10000 range {0, 2*pi} set s2 to evalformula "2*cos(x)*sin(x)" with {x:a} evalformula may mix arrays of real and numbers. evalformula "poly*factor" with {poly:thePolygon, factor:10.0} The expression may include logical operators, yet all values remain real numbers: true expressions evaluate to 1.0, false expressions evaluate to 0.0. Conversely when implied in a logical expression any non null number is considered as true (1.0). The direct parameter of evalformula may be a sequence of elementary expressions, provided they are separated with semi-colon ;. You can also use return as the separator, so in complex cases when the expression may require several intermediate steps you can easily use the contents of a text window as the expression. When you use such a composite construct evalformula will return the result of the last (rightmost) expression, for instance the examples below return 2.0. evalformula "a=1;a+1" evalformula "a=1     a+1" Instead of one expression you can pass a list of expressions to evalformula: evalformula will return a list of arrays of real. Here is the list of the operators and functions that evalformula supports. operators (higher precedence first)- (unary) * /, + -, ^ (exponentiation) >= > <= <== != (equal - not equal), & (logical AND), | (logical OR), ! (boolean not, evaluates to 1 if the operand is 0 and to 0 otherwise). algebrasqr, sqrt, hypot, powabs, ceil, floor, trunc, max, minmod (modulo), remainder isnan (test whether the quantity is a ``NAN''. NAN = Not A Number.) transcendentalln or log (neperian), log10, exp cos, sin, tan, acos, asin, atan, atan2cosh, sinh, tanh, acosh, asinh, atanherf, erfc, gamma, lgamma functions on arrays norm and norm2, respectively the euclidian norm and its square (numbers), sum and runsum, respectively the sum (a number) and the running sum (an array), count, the number of elements (a number). evalformula ("atan2(y,x)") with {y:sqrt (3), x:1} -- 1.047197551197 (that is, pi/3) evalformula ("norm(cos(x))/sqrt(count(x))") with {x:randomarray 10000 range {0, 2 * pi}} -- 0.701118610115 (that is, ~1/sqrt(2)) Version française Copyright ©2008 Paris, Satimage