Message from the owner(s)
After considering for a while, binary release of AlgebraicMath is now available for those who just want to use it directly.
Got a really nice anagram that describes the basic concept of AlgebraicMath architecture:
AlgebraicMath − I Match Algebra!
After reading about the withdrawn of JSR 108: Units Specification, feeling a bit sorry for it - and feeling the urge to implement such a power feature that is important to most of us....
Added AlgebraicMath.Dimensional - a package that would enable computation of physical quantities with units. At the moment it only has the 7 basic SI units (contained in AlgebraicMath.Dimensional.SI), but additional units and conversion rules can be put in with ease thanks to the flexible architecture of AlgebraicMath.
The new feature is tested with evaluation of the ContentType.Text Expression of (((((1+2)*3)@("A"*"m"))*2)+((7@"A")*(8@"m"))) (Yes I know it looks really unpleasant at the moment - Justin would be improving the text parse format soon), which result in the following Proof:
If you have some units in mind that you would like AlgebraicMath.Dimensional to have, just come round and leave us a message in our forum!
Textual parsing tested and utilised in Algebra. Feel free to try out the demo provided by that project to get a feeling of the basic functionalities that AlgebraicMath can bring about!
CVS is now updated with the latest source code & binary release.
Tuned and improved the functionalities of the Parser Engine. In addition, fixed the Parser format for ContentType.Text so expressions like "((S_0)||(S_1))&&(S_2)", "(123)*(4553)" etc can now be parsed as Expression's instead of sticking to the lengthy MathML codes all the time.
One thing though - after finishing the final testing on the plain text parsing format, I fully appreciate the ease of development XML provides - for those who are not convinced, compare the following regular expressions:
Just find out one silly fact - tests run on BlueJ are much slower than those run in NetBeans! (possibly due to the debugging routines and all that)
The 40-second proof that ran on BlueJ actually took less than 5 seconds when being tested on NetBeans - so as for basic arthimetics, AlgebraicMath has already reached real-time performance (as for the 10-second proof shown some time ago, the "exact" timing should be ~1s) and hence I shall spend more time on developments of other parts (cluster, libraries etc.)
Have a good Easter everyone!
AlgebraicMath.Attribute package introduced with Special and Statement attributes at the moment; this is to utilise class hierarchy structure in java for "type checking" hence would potentially speed up operations like Pattern Matching which relies on such features.
In addition, the Axiom class is tuned so that one may now passes an existing Collection for the transformation methods to fill in one by one even during their process of execution; this vastly reduced the problems caused by slow Axioms holding onto partial (yet potentially useful) results during an evaluation process. Tests verified that there is at least 40% speed improvement for AlgebraicMath.Runtime.Evaluator!
Simplification of to is performed just under a minute with the following axioms:
The 12-step proof produced by the Evaluator is presented here (In one VERY long line)
Which is an order of magnitude (~30 times) increase in computation speed with the same hardware settings (P4 3GHz 1GB RAM) compare to the first draft. Certainly a good sign of progress towards real-time performance.
Documentation updated to reflect recent changes, especially for the expansion of AlgebraicMath Library
After fixing a few bugs in the Pattern Matching Engine and lots of Library Implementations, here is the first Proof produced during a unit test by AlgebraicMath.Runtime.Evaluator:
A much more magnificent version can be found here. Any comments / suggestions on improvement would be appreciated.
Documentation for AlgebraicMath is up for the current release and shall be kept up-to-date ever after.
Project description updated:
AlgebraicMath brings real mathematics onto computers, so that many transcendental tasks with a mathematical flavour -
Proof, simplify and manipulate mathematical formulae and equations
Electronic circuit construction and optimisation
Compression engine highly scalable in time and complexity with negligible decoding cost
Analytical, real-time dynamical systems simulation
Next generation graphics engines with algorithmic efficiencies
Ultra-strength encryption algorithms
would become possible on a large variety of computing platforms.
Random thought of the day :
The AlgebraicMath package should have been java.lang.Math - or the miraculously tiny java.Math package - as I am confident to say that what we have in this package has more to do with Mathematics than those existing "standards"!
(No offence to anyone - just as I said, a random comment =P)
The first version of an extensible parser structure is implemented into Expression; any class that based on Expression can now access the static registerExpressionType() and addRepresentation() methods to make itself available for toString() and parse().
Current available ContentType is MathML and Text. LaTex might be a good idea, and if you agree then do sound your opinions in our forum!
Pattern matching engine is almost complete - we are now working on ways to use the engine directly so that Axiom can be eliminated from the core implementation. This has the advantage of allowing "axioms" to be evaluated by each other while performing the "main" calculations - analoguous to forming lemmas and theorems which would potentially speeds up the solution seeking process.
Proof object introduced and tested to complete the capabilities of Expression object -
After tuning, solution is now hit in less than 5 minutes (!) yet the proof still needs ~40 minutes to compute.
Just to clarify, the platform used to compute so far is just an ordinary PC; the multi-threaded design of Entity can allow potential evaluation on a cluster - and since the package is written in Java, the cluster can be as "mixed" as possible such that it can be easily built even by connecting a few computers of various OS together.
Multi-threaded measure-dependant Entity class defined.
5 Axiom objects -
are used to perform the following simplification:
(ad + bc) + (ac + bd) --> (a + b) * (c + d)
The solution is hit at ~30 minutes before the complete proof - consisting 2760 equivalent forms of the Expression - is reached in ~10 minutes later.
The project is currently under its earliest stage of development. Any suggestions would be appreciated.