Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# Formula Converter

Khaled Mahmoud
Ranch Hand
Posts: 361
I am looking for an open Source Formula Converter API or project.
For example I specify a set of rules to this API like follows :

sin ( x ) ^ 2 + cos ( x )^ 2 = 1
1 + tan (x) ^ 2 = cos ( 2 ) ^ 2

After those rules I enter an input text, and I want the API to convert the input according to the supplied rules

Pleeeese help

Omar Al Kababji
Ranch Hand
Posts: 357
I don't know what exactly are the mathmatics operation you really need to calculate, but it seems that they are sin, cos ...etc and power, sqrt. i think that in one or two hours you could already have your simple calculator up and working.

fred rosenberger
lowercase baba
Bartender
Posts: 12196
35
it looks like you're trying to write something where you input the trig identities, and use that to solve/simplify other equations, yes?

Khaled Mahmoud
Ranch Hand
Posts: 361
Yes that's what I want fred

I didn't find any open source tool or api in Java to do what I want.

Do you any if any exists ???

Campbell Ritchie
Sheriff
Posts: 50239
79
You mean you want something which will solve those equations? That sounds awkward. If you can do it with pencil and paper, then you can program a method/methods to use the same algorithm.

By the way: I can give you the solution for sin^2(x) + cos^2(x) = 1 easily. It is true for every value of x!

Try Googling for "algebra formula solver"; I did and got several promising links.

Another approach would be to guess a solution and use Newton's approximation. That will give an answer, but will be awkward to program.

Campbell Ritchie
Sheriff
Posts: 50239
79
. . . and look at these equivalences; you will find other equalities true for every value here.

Campbell Ritchie
Sheriff
Posts: 50239
79
There is a solution for 1 + tan^2(x) = cos^2(x). You should be able to work it out in your head. Remember the solution will repeat every PI radians, or every 2PI radians!

Khaled Mahmoud
Ranch Hand
Posts: 361
It seems you all misunderstood what I want.
I want to able to define the rules I want for example before instructing the program to solve the equation I give it a set of rules (Equations) the simplifing based on.

For example I want sin ( x ) ^ 2 + cos ( x ) ^ 2 = log(x) + 5

I want to be able to dynamically enter the rules the application will solve or simplify the equation according to the rules I enter.

Campbell Ritchie
Sheriff
Posts: 50239
79
Difficult. You actually need to parse what you are writing. Same procedure as if you were writing a compiler.

Ulf Dittmer
Rancher
Posts: 42968
73
Can you give an example of a "rule" the user would enter, and how it would specify how to simplify an expression?

Khaled Mahmoud
Ranch Hand
Posts: 361
I already posted an example

A rule :

sin ( x ) ^ 2 + 1 = log( x ) + 20

The string I enter should be searched and any equation in the form sin ( x ) ^ 2 + 1 to should be converted against the specified rule.

I can enter as many rules as I want.

Ulf Dittmer
Rancher
Posts: 42968
73
Ah, that's the realm of packages like Maple and Mathematica. I doubt that anything like this is available in Java, and if it is, it's probably going to cost a substantial amount of money.