# Expressions

Plot functions which allow mathematical expressions supports the following functions:

`+, -, *, /` | arithmetic operations
`%, mod` | modulo
`( )` | grouping
`^, **` | power
`rad(x), deg(x)` | conversion between radians and degrees
`sin(x),cos(x),tan(x)` | trigonometric functions
`asin(x),acos(x),atan(x)` | inverse trigonometric functions
`sinh(x),cosh(x),tanh(x)` | hyperbolic functions
`rnd(h)` | random number (h = height)
`ln(x),log(x)` | natural and logarithm to base 10
`sqrt(x)` | square root
`cbrt(x)` | cubic root
`frac(x)` | returns the fraction of x
`int(x)` | returns the integer of x
`round(x;n)` | round up and down to the nth place on the right of the decimal point
`gau(x;x0;a;w)` | Gauss (x0 = position, a = amplitude, w = width)
`lor(x;x0;a;w)` | Lorentz (x0 = position, a = amplitude, w = width)
`galo(x;x0;a;w;r)` | Gauss-Lorentz (x0 = position, a = amplitude, w = width, r =Gauss-Lorentz ratio (1.0=pure Gauss,0.0 = pure Lorentz))
`tail(x;x0;a;w;r;t)` | Gauss-Lorentz with exponential Tail (x0 = position, a = amplitude, w = width, r = Gauss-Lorentz ratio(1.0=pure Gauss,0.0 = pure Lorentz)), t = tail exponent factor
`j0(x), j1(x), jn(x;n)` | bessel functions
`y0(x), y1(x), yn(x;n)` | bessel functions
`pi` | 3.14159265359
`e` | 2.71828182846
`xval(b;i)` | x value of point i in buffer b
`yval(b;i)` | y value of point i in buffer b
`xerr(b;i)` | x error value of point i in buffer b
`yerr(b;i)` | y error value of point i in buffer b
`xnval(b;i)` | normalized x value (0.0-1.0) of point i in buffer b
`ynval(b;i)` | normalized y value (0.0-1.0) of point i in buffer b
`xnerr(b;i)` | normalized x error value (0.0-1.0) of point i in buffer b
`ynerr(b;i)` | normalized y error value (0.0-1.0) of point i in buffer b
`xvf(b)` | x value of the first point in buffer b
`xvl(b)` | x value of the last point in buffer b
`yvf(b)` | y value of the first point in buffer b
`yvl(b)` | y value of the last point in buffer b
`xmin(b)` | minimum x value in buffer b
`xmax(b)` | maximum x value in buffer b
`ymin(b)` | minimum y value in buffer b
`ymax(b)` | maximum y value in buffer b
`exmin(b)` | minimum x error value in buffer b
`exmax(b)` | maximum x error value in buffer b
`eymin(b)` | minimum y error value in buffer b
`eymax(b)` | maximum y error value in buffer b
`txmin` | minimum x value over all buffers
`txmax` | maximum x value over all buffers
`tymin` | minimum y value over all buffers
`tymax` | maximum y value over all buffers
`vxmin(b)` | minimum x value over all visible buffer
`vxmax(b)` | maximum x value over all visible buffer
`vymin(b)` | minimum y value over all visible buffer
`vymax(b)` | maximum y value over all visible buffer
`points(b)` | number of points in buffer b
`xpoint(v;a)` | x screen coordinate of v (a can be 1 for the first or 2 for the second axis).
`xvalue(v;a)` | x value of the screen coordinate v (a can be 1 for the first or 2 for the second axis).
`ypoint(v;a)` | y screen coordinate of v (a can be 1 for the first or 2 for the second axis).
`yvalue(v;a)` | y value of the screen coordinate v (a can be 1 for the first or 2 for the second axis).
`findx(v;b)` | x value which depends to y in buffer b. If there are more than one it returns the first it found.
`findy(v;b)` | y value which depends to x in buffer b. If there are more than one it returns the first it found.
`fnx(v;b)` | normalized x value (0.0-1.0) which depends to y in buffer b. If there are more than one it returns the first it found.
`fny(v;b)` | normalized y value (0.0-1.0) which depends to x in buffer b. If there are more than one it returns the first it found.