Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

Introduction to MathCore

MathCore general introduction

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:
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.



MathCore input system introduction

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:

example1.gif

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 math engine introduction

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.

LibXML-logo.gif
builtwithwx.gif


MathStudio is a project hosted by SourceForge

SF-logo.gif

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 ]