express17 - Man Page
evaluate expressions
Synopsis
express17 [Options] EXPRESSION [TYPE NAME VALUE]...
Description
express17 prints the value of EXPRESSION to standard output. EXPRESSION may refer variables defined as a TYPE NAME VALUE triplet. TYPE may be one of cardinal (integral, positive), integer (integral), real (real) and text (string).
Options
- -P, --print
Print the parsed expression instead its value.
- -t, --type
Print the expression type instead its value.
- --list
List functions and exit.
- --list-1
List unary operators and exit.
- --list-2
List binary operators and exit.
- --list-2h
List binary operators and exit.
- --list-3
List ternary operators and exit.
- --list-3h
List ternary operators and exit.
- --help
Print a usage message and exit with a status code indicating success.
- --version
Print version information on standard output then exit.
Syntax
The allowed expression syntax is similar to that of C expressions. It allows for prefix unary and common syntax binary operators, functions and variables. There are four supported types: cardinal (integral, positive), integer (integral), real (real) and text (string).
The available functions are mathematical or text generalities, among which:
- real Gacos(real x);
is the in degrees specified arc cosine of x
- real Gadiff(real x, real y);
is the in degrees specified smallest angle between degrees x and degrees y (or something)
- real Garccos(real x);
is same as Gacos(x)
- real Garcctg2(real x, real y);
is the in degrees specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result (same as Gatan2(y, x))
- real Garcdiff(real x, real y);
is same as Gadiff(x, y)
- real Garcsin(real x);
is same as Gasin(x)
- real Garctg(real x);
is same as Gatan(x)
- real Garctg2(real y, real x);
is same as Gatan2(y, x)
- real Gasin(real x);
is the in degrees specified arc sine of x
- real Gatan(real x);
is the in degrees specified arc tangent of x
- real Gatan2(real y, real x);
is the in degrees specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result
- real Gcos(real x);
is the cosine of degrees x
- real Gparcctg2(real x, real y);
is the positively defined, in radians specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result (same as Gpatan2(y, x))
- real Gparctg2(real y, real x);
is same as Gpatan2(y, x)
- real Gpatan2(real y, real x);
is the positively defined, in degrees specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result
- real Gsin(real x);
is the sine of degrees x
- real Gtan(real x);
is the tangent of degrees x
- real Gtg(real x);
is same as Gtan(x)
- integer abs(integer m);
is the absolute value of m
- real acos(real x);
is the in radians specified arc cosine of x
- real adiff(real x, real y);
is the in radians specified smallest angle between radians x and radians y (or something)
- real arccos(real x);
is same as acos(x)
- real arcctg2(real x, real y);
is the in radians specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result (same as atan2(y, x))
- real arcdiff(real x, real y);
is same as adiff(x, y)
- real arcsin(real x);
is same as asin(x)
- real arctg(real x);
is same as atan(x)
- real arctg2(real y, real x);
is same as atan2(y, x)
- real asin(real x);
is the in radians specified arc sine of x
- real atan(real x);
is the in radians specified arc tangent of x
- real atan2(real y, real x);
is the in radians specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result
- integer base2(integer m);
is the greatest power of 2 less than or equal to m if m is not less than zero, some undefined value otherwise
- integer bcount(integer m);
is the m bit count (i.e. the number of bits set in m)
- real ceil(real x);
is the up rounded value of x
- cardinal cardinal(cardinal z);
is z
- integer character(text s, integer m);
is the (positively defined value of the) mth character of s, if such character exists, 0 otherwise (negative position indications are interpreted with respect to the end of string)
- integer compare(text s, text t);
is 0 if s is (case sensitive) same as t, less than 0 if s is less than t and greater than 0 if s is greater than t
- real cos(real x);
is the cosine of radians x
- integer deck2(integer m);
is the lesser power of 2 greater than or equal to m if m is not less than zero, some undefined value otherwise
- integer drand(integer m);
is a pseudo-random integer between inclusive 0 and m
- text echo(text s);
is s
- real exp(real x);
is the value of e (the base of natural logarithms) raised to the power of x
- real exp2(real x);
is the value of 2 raised to the power of x
- real fabs(real x);
is the absolute value of x
- real fclip(real min, real x, real max);
is the minimum between max and the maximum between x and min
- integer ffs(integer m);
is the 1 based position of the first (least significant) bit set in m if any, 0 otherwise
- real floor(real x);
is the down rounded value of x
- integer fls(integer m);
is the 1 based position of the last (most significant) bit set in m if any, 0 otherwise
- real fmax(real x, real y);
is the maximum of x and y
- real fmin(real x, real y);
is the minimum of x and y
- real fmod(real x, real y);
is the remainder of dividing x by y, more specifically x - n * y, where n is the quotient of x / y, rounded toward zero to an integer
- real fmodf(real x);
is the same sign as x fractional part of x
- integer frame(text s, integer c);
is the position of the last occurrence of the c non zero character in the s string if any, -1 otherwise
- real frand(void);
is a pseudo-random real between 0 and 1
- real frexp(real x, integer &e);
is the (-1; -0.5], [0.5; 1) normalized fraction that multiplied by the power of two to which e is set retrieves x
- real fsign(real x);
is -1 if x is negative, 0 of x is zero, 1 otherwise
- integer gcd(integer m, integer n);
is the greatest common denominator of m and n
- real gclip(real x, real min, real max);
is the minimum between max and the maximum between x and min
- integer iclip(integer min, integer m, integer max);
is the minimum between max and the maximum between m and min
- real imodf(real x);
is the same sign as x integral part of x
- integer integer(integer m);
is m
- integer irand(integer m, integer n);
is a pseudo-random integer between inclusive m and n
- integer jclip(integer m, integer min, integer max);
is the minimum between max and the maximum between m and min
- integer kfs(integer m, integer k);
is the 0 based position of the first kth (least significant) bit set in m if any, the number of bits in m otherwise (kfs(m, 0) is equivalent with xfs(m))
- integer kls(integer m, integer k);
is the 0 based position of the last kth (most significant) bit set in m if any, the number of bits in m otherwise (kls(m, 0) is equivalent with xls(m))
- integer length(text s);
is the length of s
- real limit(real x);
is the away from zero rounded value of x
- real ln(real x);
is same as log(x)
- real log(real x);
is the natural logarithm of x
- real log10(real x);
is the base 10 logarithm of x
- real log2(real x);
is the base 2 logarithm of x
- real lrand(void);
is a pseudo-random real between -1 and 1
- integer lz(integer m);
is the m leading zero bits count, same as xls(m)
- integer match(text s, text t);
is 0 if t wild card (case sensitive) matches the s pattern (the * and ? literal sign are interpreted as for their shell pattern equivalents), non 0 otherwise
- integer max(integer m, integer n);
is the maximum of m and n
- integer min(integer m, integer n);
is the minimum of m and n
- real modf(real x, real &y);
is the same sign as x fractional part of x, y is the same sign as x integral part of x
- real parcctg2(real x, real y);
is the positively defined, in radians specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result (same as patan2(y, x))
- real parctg2(real y, real y);
is same as patan2(y, x)
- real patan2(real y, real x);
is the positively defined, in radians specified arc tangent of y / x, signs of both x and y being used to determine the quadrant of the result
- integer place(text s, integer c);
is the position of the first occurrence of the c non zero character in the s string if any, -1 otherwise
- real pow(real x, real y);
is the value of x raised to the power of y
- text project(text s, integer m);
is s after position m (negative position indications are interpreted with respect to the end of string)
- real real(real x);
is x
- real round(real x);
is the towards nearest integer, half cases away from zero rounded value of x
- integer sign(integer m);
is -1 if m is negative, 0 of m is zero, 1 otherwise
- integer signed(cardinal z);
is z
- real sin(real x);
is the sine of radians x
- real sq(real x);
is the square of x
- real sqrt(real x);
is the square root of x
- real tan(real x);
is the tangent of radians x
- real tg(real x);
is same as tan(x)
- real track(real x);
is the towards zero rounded value of x
- integer tz(integer m);
is the m trailing zero bits count, same as xfs(m)
- cardinal unsigned(integer m);
is m
- integer xfs(integer m);
is the 0 based position of the first (least significant) bit set in m if any, the number of bits in m otherwise (same as tz(m))
- integer xls(integer m);
is the 0 based position of the last (most significant) bit set in m if any, the number of bits in m otherwise (same as lz(m))
Most of prefix unary and common syntax binary C operators are supported (including unary !, +, - and ~ and binary *, /, %, +, -, <<, >>, <, >, <=, >=, !=, ==, &, ^, |, &&, ||, =, +=, -=, *=, /=, %=, &=, ^=, |=, <<= and >>=), the semantics and precedence being the same or at least very close to those of their C counterparts.
Authors
Ciprian Niculescu
Referenced By
aime(1), logique44(1), logique48(1), logique49(1).