# Expressions

Daviz 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 `xvf(b)` x value of the first point in buffer b `xvl(b)` x value of the last point in buffer b `yval(b;i)` y value of point i 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 `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.