MathCore is a library aimed to provide easy-to-use and powerful math functions to a graphical program. It is different from other libraries of this type both for two main things:
- because of the way the user inputs the expression (all the classes of MathCore implement a set of functions, derived by mcElementGUI, which provide a lot of functions for an easy and fast user input, which results really intuitive);
- because of its data processing system: flexible and highly customizable, it can show to the user the operations and the intermediate steps done toward the final solution. The intermediate steps towards resolution of the data (an expression, an equation or an inequality), are almost always completely absent from the output of other math engines: they work as black-boxes and the output is the only thing the user can see; MathCore is different. The user can access also basic math functions (divideby, add, subtract, multiplyby...) and thus he can manipulate the data with the help of the computer in the way he likes.
This document explains how the library is structured. This document is thus technical and just for programmers.
The following are some of the actual features of MathCore library:
Development Status: |
Beta |
Intended Audience: |
Education, End Users/Desktop, Science/Research |
License: |
GNU General Public License (LGPL) |
Natural Language: |
English, Italian |
Operating Systems: |
Win32, Unix-like (using X11 or GTK), MacOS |
Programming Language: |
C++ |
Topic: |
Education, Mathematics, Physics, Visualization, Text Editors |
Compilers used: |
On Win32: MSVC++, BorlandC++, MinGW, Cygwin
On Linux/Unix/MacOS: GCC |
External libraries/components: |
wxXml2 (which uses iconv, libxml2),
wxWidgets (which uses jpeg, tiff, png, expat...),
wxScript (which uses CINT, lua, tolua, underc),
mapm |
The general features that will be implemented in next releases are listed in the version
log file on MathStudio website.
The technical new features (you must know something about the program's structure) are listed in the TODO file linked in "
Related Pages" section.
The following sections of this document (specially the "
MathCore design" page) reference to the source code that you should have downloaded with this file. To understand how MathCore works, it's very useful to print the header files of the various classes: all the code is heavily commented and easy to read. In particular, to know more about the codes and defines used by MathCore functions, I suggest you to print the "
Element.h" header file.
If you are not a member of the project but you are interested in it and you would like to contribute in any way (as a programmer, help editor or anything else useful...) you are welcome, just contact the administrator writing an email to
frm@users.sourceforge.net.
This is one of the first versions of this help system: many things may need to be better explained and many things may be missing; if you don't understand something of the issues explained here, please don't hesitate and contact the MathCore administrator writing an email to
frm@users.sourceforge.net.
One of the main parts of MathCore is the data input system; many efforts were done to make it really intuitive and easy, take a look at the following example:
Notice that the styles which compose the output (the fonts, the colors) can be configured by the user. The appearance of the output can be personalized in a lot of things; this program, in fact, can be used not only to solve expressions and equations but also to easily create "snapshots" of mathematical data to insert as bitmaps in programs which don't support the entering of such expressions (many word processor, for example).
A simple GUI input is one of the keypoint of MathCore structure: this feature, together with a flexible (that is, completely user-accessible) math engine will make much easier, I hope, the spread of math editing also for all those simple users which never heard about such programs and do not have time to read a 1500-pages manual just to type in a simple formula...
MathCore is a symbolic manipulation library. A symbolic manipulator is much more different from the usual calculators that students use at school. A scientific calculator is used just to get the result of long operations which involve a big number of digits; these high-precision systems are called numeric analysis tools: they can handle any type of math operation and function computation but they cannot work with unknowns and parameters. Many of them (like the powerful GNU Scientific Library, GSL) implement some functions that, using algebraic algorithms, give the user the solutions of a generic equation/inequality; anyway, they never show any of the intermediate steps being these usually very very complex...
A symbolic system, instead, works with unknowns and parameters using all the math rules that everyone learns at school; usually, also the algorithms of a symbolic system are very complex (generally, more than those implied with numeric analisys !) and thus, also many CASes (Computer Algebra System) do not show any intermediate step, just the solution; the high complexity of these programs usually implies also a big price !
A good example of open-source general (many little libraries CAS-like are aimed to solve some specific math problems related, for example, to matrices, tensors...) CAS, even if quite difficult to use, is
Maxima.
MathCore is aimed to give a good support for all basic math operations, that is, simplification, expansion, resolution of systems involving sets of 1st, 2nd and 3rd degree equations and inequalities. In particular, the system is aimed to be able to show to the user all the procedure, step-by-step, used to reach the solutions. The creation of such a system, that emulates the human way of equation-solving, is much complex and requires much work, specially if the programmers working in this open-source project (like me) never coded a CAS before... please don't be too severe when trying the program :-).
By now, the library, regarding math engine, is structured in this way: all elements (fractions, brackets, monomials, polynomials...) expose an interface that allows the manipulation at all levels. Besides, a set of solvers (derived from
mcSolver basic interface) implements the algorithms that, using those basic functions, solve the data, in some ways specific for each type of input (that is, using an algorithm when solving polynomial equations and another one when solving trigonometric ones), producing the step-by-step resolution procedure.
MathCore project makes use of many libraries. See the table in the MathCore general introduction above for the complete list.
MathStudio is a project hosted by SourceForge
All trademarks are the property of their respective owners.
Documentation generated with Doxygen on Sun Feb 6 17:13:19 2005 Visit MathStudio home page for more info |
[ Top ] |