2012-02-24 5 views
15

Ho un'espressione arbitraria in una stringa. Diciamo: y = 12 * x + 34 Avrò x o y e ho bisogno di risolvere per l'altro. muParser fa un brillante lavoro di risoluzione del primo modulo dato x ma esso e tutti gli altri parser matematici che ho trovato non possono eseguire alcun tipo di manipolazione per trasformare l'espressione in: x = (y-34)/12 quindi l'altro potrebbe essere risolto se avessi y invece di x.Quale libreria può analizzare e risolvere un'espressione matematica semplice in C++

C'è una libreria C/C++ che non è ingombrante GNU che può essere utilizzata per risolvere questo problema?

+0

È possibile controllare il tutorial su come creare un proprio compilatore con LLVM. Fondamentalmente fa proprio questo, iirc. Probabilmente devi estenderlo molto, però. Vedi qui: http://llvm.org/docs/tutorial/LangImpl1.html – zerm

risposta

0

Sembra che si desideri incorporare un CAS appropriato. Prova GiNaC, se non è abbastanza potente, pensa di incorporare Maxima o Axiom (entrambi sono molto pesanti e gira su Common Lisp).

+0

Purtroppo GiNaC è ingombro di GNU. – hsikcah

+0

@hsikcah, quindi probabilmente la soluzione migliore è utilizzare un CAS pesante (la licenza non ha importanza) generato in un processo separato e comunicare con esso tramite un socket o una pipe. –

+0

Spero di trovare qualche semplice CAS leggero per fare il lavoro. Nel mio caso è un'algebra abbastanza semplice: la necessità di un pacchetto di elaborazione matematica da 100mb in grado di mettere un uomo su Marte sembra un po 'eccessivo. – hsikcah