y = sin(x * PI / 25) * 50 + sin(x * PI / 250) * 25

Expression help

Number format: 123.456E+123

Functions and constants are case insensitive.

Constants may have an empty (), e.g. PI().

Functions without arguments do not need an empty (), e.g. random.

The standard order of operations (precedence) is used.
Note the unary minus precedence: -3^2 = -(3^2) = -9

For best optimization, keep constant values together, e.g. use x*PI/25 or PI/25*x, but do not use PI*x/25.

Mathematical Constants
EEuler's Number e, 2.7182…
LN2Natural log of 2, 0.6931…
LN10Natural log of 10, 2.3025…
LOG2EBase 2 log of e, 1.4426…
LOG10EBase 10 log of e, 0.4342…
PIArchimedes' Constant π, 3.1415…
SQRT1_2Square root of 1/2, 0.7071…
SQRT2Square root of 2, 1.4142…
Physical Constants
C0Speed of light in vacuum, 299792458 m/s
E0Vacuum permittivity (electric constant), 8.854187817…E-12 F/A
ECElementary charge, 1.602176565E-19 C
GCGravitational constant, 6.67384E-11 N∙m2/kg2
NAAvogadro constant, 6.02214129E23 mol-1
RMolar gas constant, 8.3144621 J/(mol∙K)
SGStandard gravity, 9.80665 m/s2
U0Vacuum permeability (magnetic constant), 1.2566370614…E-6 N/A2
Imperial Units
FTFoot in m, 0.3048 m/ft
INInch in mm, 25.4 mm/in
LBPound in kg, 0.45359237 kg/lbm
PSIPound per square inch (lbf/in2) in Pa (N/m2), 6894.757293168 Pa/psi
YDYard in m, 0.9144 m/yd
abs(x)The absolute value of x
acos(x)The arccosine in radians of x
acosh(x)The area (inverse) hyperbolic cosine of x
acot(x)The arccotangent in radians of x, PI/2 - atan(x) (0 < acot(x) < PI)
acoth(x)The area (inverse) hyperbolic cotangent of x, atanh(1/x)
acsc(x)The arccosecant in radians of x, asin(1/x)
acsch(x)The area (inverse) hyperbolic cosecant of x, asinh(1/x)
add(x,y)x + y
asec(x)The arcsecant in radians of x, acos(1/x)
asech(x)The area (inverse) hyperbolic secant of x, acosh(1/x)
asin(x)The arcsine in radians of x
asinh(x)The area (inverse) hyperbolic sine of x
atan(x)The arctangent in radians of x (-PI/2 < atan(x) < PI/2)
atan2(y,x)The arctangent in radians of y/x (-PI < atan2(y,x) < PI)
atanh(x)The area (inverse) hyperbolic tangent of x
ceil(x)Round up to the nearest integer
cos(x)The cosine of x in radians
cosh(x)The hyperbolic cosine of x
cot(x)The cotangent of x in radians, 1/tan(x)
coth(x)The hyperbolic cotangent of x, 1/tanh(x)
chs(x)- x, change sign of x
csc(x)The cosecant of x in radians, 1/sin(x)
csch(x)The hyperbolic cosecant of x, 1/sinh(x)
deg(x)Convert x from radians to degrees
deg180(x)Convert x from radians to degrees within -180 to +180
deg360(x)Convert x from radians to degrees within 0 to 360
div(x,y)x / y
exp(x)e to the power of x, pow(E,x) or E^x
fact(x)The factorial of x, x! = Γ(x+1)
floor(x)Round down to the nearest integer
gamma(x)The gamma of x, Γ(x) = (x-1)!
high(x,y)if x ≥ y then 1 else 0
log(x)The natural logarithm (base e) of x
log10(x)The base 10 logarithm of x
log2(x)The base 2 logarithm of x
logb(y,x)The base y logarithm of x
low(x,y)if x ≤ y then 1 else 0
max(x,y)Gets the number with the highest value
min(x,y)Gets the number with the lowest value
mod(x,y)x % y
mul(x,y)x * y
nop(x)No operation
pow(x,y)The value of x to the power of y, x^y, xy
rad(x)Convert x from degrees to radians
random()Random number between 0 and 1 (0 ≤ random() < 1)
range(x,y,z)if x ≥ y and x ≤ z then 1 else 0
round(x,y)Rounds x to y decimals (nearest integer if y=0)
sec(x)The secant of x in radians, 1/cos(x)
sech(x)The hyperbolic secant of x, 1/cosh(x)
sign(x)if x > 0 then 1 else if x < 0 then -1 else 0
signnz(x)if x ≥ 0 then 1 else -1
sin(x)The sine of x in radians
sinh(x)The hyperbolic sine of x
sqrt(x)The square root of x
sub(x,y)x - y
tan(x)The tangent of x in radians
tanh(x)The hyperbolic tangent of x

Mathematical expression parser with image draw of function graph

This C# ASP.NET page will parse a mathematical expression, that is a function of x, and then generate an image with a graph of y = f(x).

The syntax of the mathematical expression is a de facto syntax used on computers, and is not the syntax of C# or any other specific programming language.

For each pixel on the X-axis, the parsed expression is evaluated, and a line is drawn to the pixel on the Y-axis.

With the tool buttons, the graph may be zoomed and scrolled. Whenever a button is pressed, a new image is created and sent back to the browser.

Clicking the OK button will save the inputs in the current session, until the web browser is closed.

No third-party add-ons or softwares are used on this page, only plain HTML with an image is used.

Internally, the expression parser can be said to translate operations to functions, e.g. 3 + 2 * x is translated to add(3,mul(2,x)). Actually, it translates to Reverse Polish Notation (RPN) format, 3 2 x mul add. Another example is -3^2chs(pow(3,2))3 2 pow chs.

The parser does expression optimization before drawing the graph of f(x), by pre-evaluating constant sub-expressions, e.g. 6 / 3 * x2 * x. It will even change the right to left associativity of + and *, x * 6 / 3x * 2. The sub-expressions may also contain functions, x * sin(PI / 4) ^ 2x * 0.5. Note that random() is never pre-evaluated.

Optimized RPN Converter

DAL:sin(x * PI / 25) * 50 + sin(x * PI / 250) * 25
RPN:x 0.125663706143592 mul sin 50 mul x 0.0125663706143592 mul sin 25 mul add
Copyright © 1996-2017 Scandinavian Digital Systems AB
Developed by Anders Danielsson