Calc
Install
You can install the latest version from source
git clone https://github.com/coco33920/calc
cd calc
cargo build release
./target/release/minicalc
or install it via cargo
cargo install minicalc
Explaining
Check the website for more informations.
TODO List
 Lexing of basic operations
 Lexing operators
 Lexing lpar,rpar,quote
 Lexing int
 Lexing floats
 Lexing identifiers
 Parsing of basic operations
 Parsing int,floats,identifiers
 sum operation
 minus operation
 multiplication operation
 division operation
 Parsing advanced operations
 Parsing lpar,rpar
 mathematical priority
 Left priority
 Right priority
 parenthesis support
 Assignment
 associativity support
 Left associativity
 Right associativity
 Application REPL
 Add the REPL
 basic REPL
 colour message
 colourised prompt
 Add colour
 Add the REPL
 Interpreter
 Basic operation interpreter
 Advanced operation interpreter
 Identifiers (variable) interpreter
 Builtin
 pi
 e
 Config
 Config colours
 Config prompt
 Config floating point accuracy
 Add more operations
 exponent
 Add support for functions
 exp
 ln
 log base a
 cos/sin/tan
 cosh/sinh/tanh
 atan/acos/asin
 Add logic
 Add basic true/false
 Add binary operator
 or (&&)
 and ()

>=

>

<=

<

==
 Add unary operator
 not (!)
 Vector calculation
 Add vectors to the datatypes
 Lex vectors
 Parse vectors
 Add vector operations
 Dot product
 Vector norm
 Vector addition
 Matrix calculation
 Add matrix to the datatypes
 Lex matrices
 Parse matrices
 Add matrices operation
 Matrix addition
 Matrix multiplication
 Calculate the matrix determinant
 Calculate the reverse matrix
 Interact with the configuration
 Print current config
 Reset config to default
 Set config
 Set main color
 Set prompt color
 Set prompt
 Set greeting message
 Set greeting color
 Reload config
Evolution
Ploting
Plot functions (both stdlib, and runtime) would be useful and appreciated.
 Plot stdlib functions
 Plot runtime functions
 Save plot to png/svg/pdf
Exact math calculator
As this project provides a frontend with a parser we could plug an exact math engine in the backend to transform calc
into a real exact math calculator. TODO List for the Exact Math Engine
 Rational calculation
 Implement rational numbers operations
 Rational reduction
 Irrational calculation
 Implement irrational numbers operations
 Irrational reduction
 Literal calculation
 Computes literal expression with uninitialized operators
 Literal reduction
CAS
If we ever go to this step, yes, I will remove the "minimalistic" from the description
 It's hard.
Examples
REPL with only Lexing (verbose mode: on by default)
REPL with lexing and basic operation parsing (verbose mode: on by default)
REPL and functionning interpreter (verbose mode: off by default)
Configuration
You can configure the general color, greeting message, greeting color, prompt and prompt color from the file for example in (for linux)
~/.config/minicalc/minicalc.toml
Or situated in your operating system config folder.
What the configuration looks like
The default configuration looks like this
Colors
Available colors are
 purple
 cyan
 blue
 black
 red
 yellow
 green
 white
 an hexadecimal colour (ex: "#f7a8d8")
Default colour (if the configuration fail to load) is Cyan.
Example of a modified configuration
Configuration:
It looks like:
Functions
The following functions are available
 sin
 cos
 tan
 sinh
 cosh
 tanh
 asin
 acos
 atan
 exp
 ln (alias: log)
 sqrt
 factorial (alias: fact)
 abs
 ceil
 floor
 round
Trigonometry
For trigonometry, the input are assumed to be in radian, if not, you have to put "false" or "true" as second argument, example shown bellow
Exp/ln
If you use the exp function you can pass a second argument for the base you are using, if no second arguments are passed this is assumed to be in natural base
Root
You can take the nth root with the sqrt function, by default it takes the second root.
Round
You can round to the nth decimal with the round function, by default it round to the integer (floor)
Logic
You can now use logic! I implemented the following functions:
 or (alias : )
 and (alias : &&)
 geq (alias :
>=
)  gt (alias :
>
)  leq (alias :
<=
)  lt (alias :
<
)  eq (alias :
==
)
Example:
User defined functions!
You can define your own functions!
Vector calculation !
You can use vectors!
 add vector to each others
 added the
norm
function to compute the norm  dot product between two vectors ( * operator)
Functions added:
 norm
Matrices !
As of 2.7.0 matrix algebra is implemented (using lup reduction)
 you can add matrices
 multiply compatible matrices
functions added
 transpose
 invert
 det