WizCalc

Input:

 

Output:

 

Constants

Named Constants

The following named constants are available:

Name(s) Approximate value
e 2.718281828459045…
π pi 3.141592653589793…
τ tau 6.283185307179586…

Numeric Constants

A numeric constant can have an integer part, a fractional part, or both, optionally followed by an exponent part:

  • an integer part consists of one or more decimal digits

  • a fractional part consists of a radix point . followed by one or more decimal digits

  • an exponent part consists of E or e, optionally followed by + or -, followed by one or more decimal digits

Examples
1 .5 1.5
1e2 .5e2 1.5e2
1E2 .5E2 1.5E2
1e+2 .5e+2 1.5e+2
1E+2 .5E+2 1.5E+2
1e-2 .5e-2 1.5e-2
1E-2 .5E-2 1.5E-2

Operators

The following operators are available for use in expressions:

Category Precedence Associativity Operator Description Example
Primary highest none () Subexpression (1 + e)
Postfix 2nd highest left to right () Function lcm(3, 4)
! Factorial 4!
Power 3rd highest right to left ^ Exponentiation 2^6
Prefix 4th highest right to left + Unary plus +3
- Negation -7
Square Root √2
Multiplicative 5th highest left to right Implicit multiplication 2pi
* Explicit multiplication 2 * pi
/ Division pi / 2
% Remainder 12 % 5
Additive lowest left to right + Addition e + 1
- Subtraction e - 1

When a named constant is immediately followed by a numeric constant or named function, implicit multiplication is not recognizable. For example, pi2 and esin4 are in error, whereas 2pi, pi 2, and e sin 4 are valid.

Functions

The following functions are available for use in expressions. Function names are case sensitive.

The operand of a unary function need not be parenthesized. For example, ln 2 and sin sqrt 2 are valid. When used in this manner, the function name behaves as a prefix operator. For example, sin 2π is parsed as (sin 2) × π and ln 2 ^ 4 is parsed as ln(24).

Rounding

Function Description
ceil(x) returns the smallest integer not less than x
floor(x) returns the largest integer not greater than x
int(x) returns the integer portion of x
round(x) returns the integer value nearest to x
(ties are rounded away from zero)
trunc(x) returns the integer portion of x

Roots, Exponents, and Logarithms

Function Description
cbrt(x) returns the cube root of x
exp(x) returns ex
exp2(x) returns 2x
exp10(x) returns 10x
ln(x) returns the natural logarithm of x
log(x, b) returns the base b logarithm of x
log2(x) returns the base 2 logarithm of x
log10(x) returns the base 10 logarithm of x
sqrt(x) returns the square root of x

Trigonometry

Function Description
acos(x) returns the arccosine of x
acosh(x) returns the inverse hyperbolic cosine of x
acot(x) returns the arccotangent of x
acoth(x) returns the inverse hyperbolic cotangent of x
acsc(x) returns the arccosecant of x
acsch(x) returns the inverse hyperbolic cosecant of x
asec(x) returns the arcsecant of x
asech(x) returns the inverse hyperbolic secant of x
asin(x) returns the arcsine of x
asinh(x) returns the inverse hyperbolic sine of x
atan(x) returns the arctangent of x
atan2(y, x) returns the two-argument arctangent of y and x
atanh(x) returns the inverse hyperbolic tangent of x
cos(x) returns the cosine of x
cosh(x) returns the hyperbolic cosine of x
cot(x) returns the cotangent of x
coth(x) returns the hyperbolic cotangent of x
csc(x) returns the cosecant of x
csch(x) returns the hyperbolic cosecant of x
hypot(x, y) returns the hypotenuse of x and y
sec(x) returns the secant of x
sech(x) returns the hyperbolic secant of x
sin(x) returns the sine of x
sinc(x) returns the cardinal sine of x
sinh(x) returns the hyperbolic sine of x
tan(x) returns the tangent of x
tanh(x) returns the hyperbolic tangent of x

Miscellaneous

Function Description
abs(x) returns the absolute value of x
avg(x, y) returns the average of x and y
combin(n, k) returns the number of ways to select k items out of n items
(binomial coefficient)
gcd(x, y) returns the greatest common divisor of x and y
hgd(k, n, K, N) returns the probability of selecting k items out of n items,
given that K items are selected from N items
interp(x, x0, y0, x1, y1) returns the linearly-interpolated y value for x
given the coordinates (x0, y0) and (x1, y1)
lcm(x, y) returns the least common multiple of x and y
max(x, y) returns the maximum of x and y
min(x, y) returns the minimum of x and y
nabs(x) returns the negated absolute value of x
permut(n, k) returns the number of ways to arrange k items out of n items
sign(x) returns −1, 0, or +1 according to the value of x

Syntax

The following EBNF-like notation describes the expression syntax:

expression:
    | additive-expression
    ;

additive-expression:
    | multiplicative-expression
    | additive-expression '+' multiplicative-expression
    | additive-expression '-' multiplicative-expression
    ;

multiplicative-expression:
    | prefix-expression
    | multiplicative-expression prefix-expression
    | multiplicative-expression '*' prefix-expression
    | multiplicative-expression '/' prefix-expression
    | multiplicative-expression '%' prefix-expression
    ;

prefix-expression:
    | '+' prefix-expression
    | '-' prefix-expression
    | '√' prefix-expression
    | unary-function prefix-expression
    | power-expression
    ;

    unary-function:
        | 'ceil'    | 'floor'
        | 'int'     | 'trunc'
        | 'round'
        | 'sqrt'    | 'cbrt'
        | 'exp'     | 'exp2'    | 'exp10'
        | 'ln'      | 'log'     | 'log2'    | 'log10'
        | 'sin'     | 'asin'    | 'sinh'    | 'asinh'   | 'sinc'
        | 'cos'     | 'acos'    | 'cosh'    | 'acosh'
        | 'tan'     | 'tanh'    | 'atan'    | 'atanh'
        | 'sec'     | 'asec'    | 'sech'    | 'asech'
        | 'csc'     | 'acsc'    | 'csch'    | 'acsch'
        | 'cot'     | 'acot'    | 'coth'    | 'acoth'
        | 'abs'     | 'nabs'    | 'sign'
        ;

power-expression:
    | postfix-expression
    | postfix-expression '^' prefix-expression
    ;

postfix-expression:
    | function
    | primary-expression
    | postfix-expression '!'
    ;

    function:
        | function-name '(' argument-list ')'
        ;

        function-name:
            | 'floor'   | 'ceil'
            | 'int'     | 'trunc'
            | 'round'
            | 'sqrt'    | 'cbrt'
            | 'exp'     | 'exp2'    | 'exp10'
            | 'ln'      | 'log'     | 'log2'    | 'log10'
            | 'hypot'
            | 'sin'     | 'asin'    | 'sinh'    | 'asinh'   | 'sinc'
            | 'cos'     | 'acos'    | 'cosh'    | 'acosh'
            | 'tan'     | 'tanh'    | 'atan'    | 'atanh'   | 'atan2'
            | 'sec'     | 'asec'    | 'sech'    | 'asech'
            | 'csc'     | 'acsc'    | 'csch'    | 'acsch'
            | 'cot'     | 'acot'    | 'coth'    | 'acoth'
            | 'abs'     | 'nabs'    | 'sign'
            | 'min'     | 'max'     | 'avg'
            | 'gcd'     | 'lcm'
            | 'combin'  | 'permut'  | 'hgd'
            | 'interp'
            ;

        argument-list:
            | expression
            | argument-list ',' expression
            ;

primary-expression:
    | constant
    | '(' expression ')'
    ;

    constant:
        | named-constant
        | numeric-constant
        ;

        named-constant:
            | 'e'
            | 'π' | 'pi'
            | 'τ' | 'tau'
            ;

        numeric-constant:
            | integer-part [ fraction-part ] [ exponent-part ]
            | fraction-part [ exponent-part ]
            ;

            integer-part:
                | digit { digit }
                ;

                digit:
                    | '0' | '1' | '2' | '3' | '4'
                    | '5' | '6' | '7' | '8' | '9'
                    ;

            fraction-part:
                | '.' integer-part
                ;

            exponent-part:
                | exponent-char [ exponent-sign ] integer-part
                ;

                exponent-char:
                    | 'E'
                    | 'e'
                    ;

                exponent-sign:
                    | '+'
                    | '-'
                    ;

uses