Expression Calculator

Expressions have C-style syntax, with any number of levels of parenthesis, containing:

- Double precision numbers such as 0.0, 1e7, 123.456, etc.
- Double precision constants PI, E, RTOD=180/PI, DTOR=PI/180, TRUE=1, FALSE=0, NaN, Inf
- Character strings in double quotes
- Unary operators ! (not) and - (minus)
- Binary mathematical operations +, -, *, /, ^ (power)
- Binary logical operations ==, !=, <, >, <=, >=, &&, || (these operations evaluate to TRUE or FALSE
- Trig functions sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(x,y) (arguments in radians)
- Math functions: exp(x), ln(x), log(x), log10(x), sqrt(x), abs(x), int(x)
- String functions cmp(x,y) which compares two strings and substr(x,y) which tests if x is a substring of y. Both
- function return TRUE or FALSE.
- Great circle distance routines: dist(lat1,lon1,lat2,lon2) which takes lat, lon in degrees and returns distance in degrees, and az(lat1,lon1,lat2,lon2) which returns azimuth in degrees.
- IEEE arithmetic function nan(x) and inf(x) which return TRUE if their aguments are NaN or Inf, respectively