Viplex is a program to visiualize complex numbers or more precisely complex-valued functions.
The program parses the mathematical expression defining a function f(z) in the input box below and creates a view of the complex plane. The standard math operators +, -, *, / and ^ (exponentiation) can be used and are parsed correctly regarding standard precedence rules. Important functions and mathematical constants are also recognized.
Each point z is colored based on the value of f(z). The absolute value of f(z) is encoded with color intensity. The argument of f(z) is encoded with hue. A particular slightly changed color wheel is employed to make the resulting images easier to read.
The user can move the view of the complex plane freely using the mouse or the keyboard. The view can also be zoomed to explore the finer details of the defined functions.
The latter is rather unknown but really nice for implementing operator
precedence. The grammar rule for expressions is parametrized by the minimum
precedence / binding power of the operators that can appear in the
expression. The operators define what should happen when appearing at the
start of an expression (nullary usage: nud) and what should happen when they
bind something on the left (led) using their left binding power (lbp).
The actions nud and led can recursively call the expression rule with a custom
precedence. This allows implicitly defining rules for expressions with precedence,
associativity, complex operators like function-call-parenthesis (or a ternary
operator) and "overloading" operators between prefix and postfix/infix usage
* in C:
3 * 5 and
*ptr) in a decentralized manner.