# Hilbert [![Gem Version](https://badge.fury.io/rb/hilbert.svg)](http://badge.fury.io/rb/hilbert) [![Build Status](https://travis-ci.org/gogotanaka/Hilbert.svg?branch=master)](https://travis-ci.org/gogotanaka/Hilbert) [![Coverage Status](https://coveralls.io/repos/gogotanaka/Hilbert/badge.png?branch=master)](https://coveralls.io/r/gogotanaka/Hilbert?branch=master) [![Code Climate](https://codeclimate.com/github/gogotanaka/Hilbert/badges/gpa.svg)](https://codeclimate.com/github/gogotanaka/Hilbert) [![Dependency Status](https://gemnasium.com/gogotanaka/Hilbert.svg)](https://gemnasium.com/gogotanaka/Hilbert) ## Do you know the one best language in this world? #### I believe mathematics is absolutely that one. ## How can we deal something as great as mathematics in a discrete world? #### Hilbert is the answer. Hilbert lets you have a sense of mathematics using a keyboard, the same as you would with a pen. ``` +---Discrete world---+ +------Mathematics-------+ | Ruby | | axiom | | TeX |<---- Hilbert ---->| Uncountable noun | | Python | | real number topology | +--------------------+ +------------------------+ ``` ## Demo The code below is input and output for the Hilbert interpreter (you can try it by `hilbert -i`) ### Differentiate ``` d/dx(cos(x)) => ( - sin( x ) ) # You can omit parentheses d/dx log(x) => ( 1 / x ) d/dy xy => ( x ) d/dx e^x => e ^ x ``` ### Integrate ``` S(log(x)dx)[0..1] => - oo S(sin(x)dx)[0..pi] => 2.0 S(cos(x)dx)[0..pi] => 0.0 ``` ### Limit ``` lim[x->oo] (1 + 1/x)^x => 2.7182682371744895 lim[x->0] 1/x => oo ``` ### Sigma ``` ∑[x=0,10] x => 55.0 ``` ### Matrix ``` (1 2 3; 4 5 6) => (1 2 3; 4 5 6) (1 2 3; 4 5 6) + (1 2 3; 4 5 6) => (2 4 6; 8 10 12) (1 2 3; 4 5 6) * (1 2 3) => (14 32) ``` ### Function ``` f(x, y) = xy f(1, 2) => 2 ``` ## How to use Install hilbert gem. $ gem install hilbert ## Interpreter $ hilbert -i Enjoy! -> ## Use as native language ### Compile into R $ hilbert -r foo.hr ### Compile into Ruby $ hilbert -rb foo.hr ### Compile into Python $ hilbert -py foo.hr ## Use as math template within other langs ```rb class ExampleClass def example_method #your Ruby codes ...... I love mathematics. a = (1 3 4) # your Hilbert codes Q.E.D end end ``` $ hilbert -rb example.rb ```rb class ExampleClass def example_method #your Ruby codes ...... a = Vector[1, 3, 4] end end ``` ## Contributing Any PRs or issues are welcome. You can become a commiter, even if you only commit once.