All Projects → LMsgSendNilSelf → Algebraicengine Fraction

LMsgSendNilSelf / Algebraicengine Fraction

Licence: mit
a calculating engine~

Projects that are alternatives of or similar to Algebraicengine Fraction

Sharpmath
A small .NET math library.
Stars: ✭ 36 (-88.42%)
Mutual labels:  parser, math, calculator
String Calc
PHP calculator library for mathematical terms (expressions) passed as strings
Stars: ✭ 60 (-80.71%)
Mutual labels:  parser, math, calculator
Calculatex
in progress pretty printing calculator language
Stars: ✭ 302 (-2.89%)
Mutual labels:  math, calculator
cpc
Text calculator with support for units and conversion
Stars: ✭ 89 (-71.38%)
Mutual labels:  calculator, math
Mather
A powerful expression-based calculator, unit converter, and general computation engine for Android
Stars: ✭ 49 (-84.24%)
Mutual labels:  calculator, math
Pegparser
💡 Build your own programming language! A C++17 PEG parser generator supporting parser combination, memoization, left-recursion and context-dependent grammars.
Stars: ✭ 164 (-47.27%)
Mutual labels:  parser, calculator
Expressionevaluator
A Simple Math and Pseudo C# Expression Evaluator in One C# File. Can also execute small C# like scripts
Stars: ✭ 194 (-37.62%)
Mutual labels:  parser, math
Atosym
algebraic expressions parsing and evaluation through a property system based algorithm
Stars: ✭ 15 (-95.18%)
Mutual labels:  calculator, math
Algebra Latex
Parse and calculate latex formatted math
Stars: ✭ 20 (-93.57%)
Mutual labels:  parser, math
rclc
Mathematical expression calculator with big integers, floats, common fractions, and complex numbers support
Stars: ✭ 24 (-92.28%)
Mutual labels:  calculator, math
string-math
Evaluates a math expression from a string. Supports variables and custom operators.
Stars: ✭ 14 (-95.5%)
Mutual labels:  calculator, math
node calculator
Create Maya node-network by entering a math-formula.
Stars: ✭ 56 (-81.99%)
Mutual labels:  calculator, math
Formula Parser
Parsing and evaluating mathematical formulas given as strings.
Stars: ✭ 62 (-80.06%)
Mutual labels:  parser, math
Insect
High precision scientific calculator with support for physical units
Stars: ✭ 2,469 (+693.89%)
Mutual labels:  parser, calculator
desktop
Extendable calculator for the 21st Century ⚡
Stars: ✭ 85 (-72.67%)
Mutual labels:  calculator, math
kalker
Kalker/kalk is a calculator with math syntax that supports user-defined variables and functions, complex numbers, and estimation of derivatives and integrals
Stars: ✭ 1,237 (+297.75%)
Mutual labels:  calculator, math
Ccalc
Scientific calculator in which you can define new constants and functions
Stars: ✭ 19 (-93.89%)
Mutual labels:  parser, calculator
Hx Mathparser
Evaluates math expressions. Written in Haxe.
Stars: ✭ 7 (-97.75%)
Mutual labels:  parser, math
fcal
Extensive math expression evaluator library for JavaScript and Node.js
Stars: ✭ 86 (-72.35%)
Mutual labels:  calculator, math
quich
Just an advanced terminal calculator.
Stars: ✭ 59 (-81.03%)
Mutual labels:  calculator, math

Algebraic Engine (Fraction)

Why write this engine?

The reason is I coded a supercalculator last year in Appstore, which is based on one more completed parser.

This parser is just a simplified prototype. It calculates not only fraction but normal expression, so you can enrich this library in normal calculation. Detail illustration will be added in the near future.

Parser Process:

解析流程

For example:1+2*(3-4) parsing process:

  1. Tokenizer: Tokens:1, +, 2, *, (, 3, -, 4, )

  2. Interpreter: Specify the vague tokens,i.e '+' means add or positive ,the same as '-'.

  3. Parser

解析数据

AST(抽象树):

抽象树

In fact, the math expression is parsed into one custom nested cluster in coding,and then resolve sub-expression on each level from inside to outside one.


Tips:

  1. adjust number, which is regarded as fraction through process,such as

    2 convert to 2/1 ; 0.2 convert to 2/10; 0.9998 convert to 9998/10000

  2. because of object-c without function operator,we need to convert operators to function name, i.e @"+" to "add"

Todo :processing more symbol

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].