Giter VIP home page Giter VIP logo

math_engine's Introduction

MathEngine

MathEngine is a lightweight mathematical expression parser and evaluator. It currently handles addition, subtraction, multiplication, division, exponent, modulus and the use of variables and pre-defined functions.

Install with

gem install math_engine

The only dependency is lexr, which is really lightweight and has no external dependencies.

An example: Expressions

require 'rubygems'
require 'math_engine'

engine = MathEngine.new

puts "#{engine.evaluate("x = 10 * (3 * 2) + (55 - 5) / (2.5 * (3 + 1))")}"
puts "#{engine.evaluate("x + 5")}"

results in an output of

65.0
70.0

extending is easy using functions, you can add single functions using MathEngine.define

engine.context.define :add_em do |x, y|
	x + y
end

or you can write all your functions in a class and add the class

class SomeFunctions
	def add_em(x, y)
		x + y
	end
end

engine.context.include_library SomeFunctions.new

and calling them with

engine.evaluate("1 + 1 + add_em(2, 2)")

All functions are pulled in from the built in Math class by default, so all the standard ruby math functions are available (cos, sin, tan etc)

if you missed a closing parenthesis, had an operator where it wasn't meant to be, you might get something like this:

Unexpected multiplication(*), expected: number, variable name or open_parenthesis

and that is pretty much every feature so far. Please let me know of any bugs or additions that you'd like to see!

Contributors

Mario de la Ossa (mdelaossa): Handling of complex numbers and upgraded to work with 1.9.X

License

See the LICENSE file included with the distribution for licensing and copyright details.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.