| EFLIB: An Extended Function Library by Johan Larsson | |
| Pascal-XSC |
| MathWizard: a CAS in Pascal by Jonathan Luyckx | |
| Marco van de Voort's symbolic solver for Free Pascal & Delphi | |
| Symbolic differentiation using DiffExpress | |
| PAS Math: a CAS developed under GPL | |
| TCioinaEval: a fast and full-featured expression parser from Alexei Cioina | |
| Stefan Hoffmeister's Mathematical Expression Evaluator | |
| Vladimir Safin's Formula Compiler and other mathematical software for Delphi |
| Jean Debord's Turbo Pascal Math Library | ||
| Earl F. Glynn's Computer Lab | ||
| Jean-Didier Gayrard's MathLib2 : a Turbo Pascal math functions library | ||
| fsUltra : a pseudo-random number generator | ||
| Mark Horridge's SparSolv Unit for sparse linear systems | ||
| Lluis Olle's SparLin, a Delphi component for sparse linear systems | ||
| The MtxVec Library from Dew Research | ||
| David Butler's Delphi Fundamentals: mathematical routines and other goodies | ||
| Delphi Mathematics Components from Hans Lohninger | ||
| Numeric-Tools: a Delphi equation-solving component | ||
| ChroMathSome for Delphi by John Merrit | ||
| Coherent Cognition's MacMathPascal Library | ||
| Jean-Pierre Moreau's Numerical Analysis website | ||
| An operations research library from Seoul National University | ||
| Marco van de Voort's numerical mathematics library for Free Pascal | ||
| Han de Bruijn's Industrial and Applied Mathematics page | ||
| Herbert Sauro's TLSODA for ordinary differential equations | ||
| Antonio Gornia's Simultaneous Equation Solvers | ||
| Volker Walter's Amoeba: A Nelder-Mead Solver | ||
| Petr Mikulik's mathematical freeware (including a Levenberg-Marquardt routine) | ||
| Michael Perdue's nonlinear regression code | ||
| Source code for engineering students from Annibal Hetem, Jr. | ||
| Ray Lischner's tools for floating point calculations in Delphi | ||
| Dmitriy Anisimkov's Integer and Linear Programming (and FFTs and other goodies) | ||
| Markus Weidenauer's LP-Optimizer | ||
| Glenn Crouch's Delphi Math Unit and Scientific Calculator | ||
| From ESB Consultancy, Alan Miller's Random Number Module | ||
| ESB's Professional Computation Suite | ||
| StatUnit from The Institute of Mathematical Statistics | ||
| Applied statistics algorithms from StatLib | ||
| Fred Edberg's Delphi Regression Components | ||
| Delphi Statistics Components for Databases from Applied Analytical Systems | ||
| Das Mathe-Programm der DPG | ||
| The Stony Brook Algorithm Repository maintained by Steven S. Skiena | ||
| A Scientific Subroutine Library for Turbo Pascal | ||
| Rene Tschaggelar's Delphi mathematics solutions | ||
| The EBK&NVS Pascal-Delphi Math Library | ||
| Kjell Rilbe's complex number class for Delphi | ||
| SWAG : the SourceWare Archival Group | ||
| The Mathematics & Statistics section of Torry's Delphi Pages | ||
| John Stockton's Borland Pascal Maths Page | ||
| Ernie Deel's EFD Systems Tools | ||
| Random numbers from the Mersenne Twister | ||
| Bent Nielsen's Special Functions Library | ||
| Robert Bullock's Delphi math units | ||
| Franz Glaser's TP-Links | ||
| Techniques of Scientific Computing from Monash University | ||
| Delphi Tools for Physics at Davidson College | ||
| UDDF: the Unofficial Delphi Developers FAQ | ||
| Some Optimization Codes in the Public Domain | ||
| The Home of the Hammster | ||
| Bob Ferguson's Mathematical Freeware | ||
| Harry J. Smith's Fun With Mathematics | ||
| Andrew Williams' Mandlebrot Set project | ||
| The Turbo Pascal Programmers' Page | ||
| A Simulation Toolbox from Lin Jensen of Bishop's University | ||
| William F. Polik's Turbo Pascal Procedures and Functions library | ||
| Mark Myatts's statistical utilities | ||
| Berend Tober's Delphi math routines | ||
| A Random Number Test Suite from StreamSec.com | ||
| Satya's collection of Numerical Methods in Pascal | ||
| Crout's method in Delphi | ||
| FitAll: nonlinear regression analysis from MTR Software | ||
| The SysTools Library from Turbo Power Software | ||
| Bill Miller's OpenStats2: an open-source statistical analysis package | ||
| Fit Simplex, a curve-fitting program from Julien Bobroff | ||
| Scientific Mathematics: using Exentia and byte-alignment for fasting floating point operations | ||
| Vector mathematics in two and three dimensions | ||
| A large collection of mathematical source code from the Pascal.Sources.Ru website | ||
| Mathematical goodies from Borland's Code Central | ||
| Mathematics units in the Free Pascal archives | ||
| B-Spline code from NIST | ||
| Delphi number-crunching components from Nils Haeck | ||
| Numerical methods code from the University of Aarhus | ||
| Arash Partow's FastGEO library for computational geometry | ||
| [New!] GrMikeD's solutions to the traveling salesman problem |
| [updated] Marcel Martin's Large Integer Library | |
| Walied Othman's FGInt: Fast Gigantic Integers | |
| A large integer arithmetic unit by Keith Briggs |
| Sergey Sadov's scientific software for scattering matrix calculations | ||
| FDTD: Finite-Difference Time-Domain code for Delphi | ||
| Eugeny Shybanov's large particle Mie-scattering code | ||
| DSpatial: tools for the manipulation and visualization of satellite imagery | ||
| The Matrix: mathematica physics coded in Delphi | ||
| [New!] Michael Vinther's AEP analysis in EEG from schizophrenic patients using PCA | ||
| A Schrödinger Equation Simulation by P. B. Visscher and D. L. Wewers | ||
| Steam calculations from Gerard Koops & Bernhard Spang |
| Digitial Filtering, Neural Networks, and Genetic Algorithms from BaseGroup Labs | ||
| NEFCLASS-PC: A Neuro-Fuzzy Classification System | ||
| Pieter Spronck's Elegance: genetic algorithms in Delphi | ||
| An Introduction to Evolutionary Algorithms from Dan Taylor | ||
| The Inference Engine Component Suite from RiverSoftAVG |
| Robert Rossmair's Delphi interface unit for The Intel Signal Processing Library | ||
| Don Cross's FFT code and tutorial | ||
| John Herbster's generalized radix FFT code | ||
| Andreas Hofer's Delphi FFT Unit | ||
| Filip Jurcicek's Wavelets Studio for Delphi | ||
| Eugen Tarasov's DSPLab for Delphi | ||
| METEOR: FIR filter design from Steiglitz, Parks, and Kaiser | ||
| Janez Makovsek's Basic Delphi Signal Processing Package (BDSPP) |
 
Symbolic Expression HandlingMarco's code comes packaged with a nice bit of documentation (from which I extracted the feature list above). After you download a copy of Marco's symbolic library, read through the documentation, and check out the very impressive "To Do" list!Primitives for Rearranging Expressions
- Simple operators on expressions ( + / * - ^ )
- Derivatives for simple functions (all operators + most functions in the Free Pascal math unit)
- Taylor series
High Speed Evaluation (parse once, evaluate often principle)
- Identifying of terms
- Simple simplying (e.g., 2*2*x -> 4*x)
Cross-platform Development
- Infinite variables
- Infinite (symbolic) constants
- Fast (hopefully!)
- Compiles under Free Pascal for multi-platform support
- with a few simple (and obvious?) changes, will also compile under Delphi
AidAim Software, the authors of DiffExpress, also distribute an expression evaluator called CalcExpress. Like DiffExpress, CalcExpress is freeware with full source.
| COMB(n,k) | Calculates simple combinations |
| DERIV("function",x[,n]) | Calculates the derivative of a function in x |
| INT("function",xi,xs[,n]) | Calculates the definite integral of a function |
| MEAN(x1,x2, ... xn) | Returns the arithmetic mean of the arguments |
| PERM(j1,j2, ... jn) | Calculates permutations |
| VAL("function",x) | Calculates the value of a function in x |
To download the initial trial version of TCioinaEval, click here.
Not content to rest on his laurels (check out this unsolicited review
from Ben Crain, author of Numerical (solutions) to Ordinary Differential Equations),
Alexei has been extending the capabilities of TCioinaEval with a couple of powerful
new units...
TDomainsEval
Alexei Cioina's Domains Builder utility is a software tool for engineers and applied mathematicians for meshing 2D domains. The engine that drives Domains Builder is Alexei's TDomainsEval. I must admit that I haven't messed with meshes in years, so I raided the DomainsEval read-me file for the following description...A Domain is a closed set of planar points which satisfy a logical algebraic condition. A primitive (Atom) is the simplest domain. The following primitives have been defined in TDomainsEval:
Five logical algebraic operations are defined on a domain
- Closed Ellipse with rotation angle;
- Closed Rectangle with rotation angle; and
- Closed Round Rectangle with rotation angle.
TDomainsEval can parse and evaluate a composed domain built with primitives and operations. After parsing you can test planar points to determine if they are included in the domain or every part of the domain.
- Union
- Intersection
- Compliment
- Difference
- Symmetrical Difference
TCioinaMathLink
Another very useful unit from Alexei Cioina is TCioinaMathLink, which provides a seamless link to the Mathematica 4.1 kernel for symbolic calculation of derivatives, indefinite integrals...and anything and everything else you might want to get from the almighty Mathematica.
| Operators | Functions |
| addition (+) | MIN, MAX |
| subtraction (-) | COS, SIN, SINH, COSH, ARCTAN |
| multiplication (*) | EXP, LN |
| division (/) | SQRT, ABS |
| exponentiation (^) | HEAV (heav(x) is =1 for x>0 and =0 for x < = 0) |
| DIV | SIGN (sign(x) is 1 for x>1, 0 for x=0, -1 for x < 0) |
| MOD | ZERO (zero(x) is 0 for x=0, 1 for x<>0) |
| PH (ph(x) = x - 2*pi*round(x/2/pi)) | |
| RND (RND(x) = x * Random) | |
| (Adding your own functions is easy, too.) | |
The following programs are now availble on the TPMath web page:
not an exact port of the original, but is 100% Delphi Object Pascal, with some added features not present in the original. [...] Currently I'm using the compoment for solving power flow problems of about 2000 buses (which implies a Jacobian of 4000x4000), and it takes a few seconds to solve a 10-15 iterations using Newton-Raphson.SparLin elements are real numbers. Also available is the THsMatrix class, which is designed to hold sparse matrices of complex numbers. THsMatrix uses a hash function to access the elements quickly. A Delphi demonstration project is included with both the SparLin component and the THsMatrix class.
For those of you who only need a limited set of the features offered by the Statisctics Package, Dew Research also offers what they call a "Probabilites Package", which includes "a replacement for Delphi's Math unit and a set of 19 different probabilities functions". .DCU files are available as freeware for Kylix and for Delphi 4, 5, & 6, and the full source can be purchased
There's a genuine wealth of information and code (and opinion!) at this site; it's definitely worth a visit.
LSODA can dynamically switch integration method according to how
stiff the problem is. The two methods employed include:
| Normal (Gaussian) | Gamma | Chi-squared |
| Exponential | Weibull | Beta |
| Student's t | Multivariate Normal | Generalized inverse Gaussian |
| Binomial (2 different ones) | Negative Binomial | |
| von Mises | Cauchy |
From the Math point of view, the biggest thing would be the Data Aware side of things - we now have...
- Data Aware Hypothesis Analysis for the Mean and for the Variance,
- Data Aware Linear Regression, and
- Statistical Routines that work on a Data Source (i.e. no components besides the data source involved).
One other really nice thing about these components...the guys and girls at ESB Consultancy are constantly working to improve their product, and updates for registered users are a regular event. As of 22 September 2002, the current version of ESBPCS is version 2.3, released on 14 September 2002.
While most of the code at the Computer Lab is written specifically for Delphi, enough of it is sufficiently generic to be of use to programmers using other dialects of Pascal.
Prior to building his site(s), Earl made several of routines available here for download. The units listed below are still available at this site, although newer versions may be available at the ComputerLab
ComplexOps may be freely distributed ONLY for non-commercial use. You can download a copy here
The Graphics Library may be freely distributed ONLY for non-commercial use. You can download a copy here
StatUnit : This is a Turbo Pascal unit (that is a procedure library, roughly) for statistical computing. With this unit, Turbo or Borland Pascal can perform most of the tasks that are usually performed by standard statistical packages. At the same time, you maintain all the advantages of a down-to-the-ground programming language. If you are a pascal programmer, you will find it easy to write your own additional units for special purposes.
| Zinsrechnung | Interest calculations | |
| Kombinatorik | Combinatorics: Permutations, Variations, Combinations | |
| Wahrscheinlichkeit beim würfeln | Probabilities in dice tossing | |
| Zeichnen von beliebigen Funktionen | Charting/Plotting of functions | |
| Vektorrechnung | Vector Operations | |
| Berechnungen von/an geometrischen Figuren | Area and Volume Calculations of geometric figures | |
| kgV / ggT | least common Multiple, greatest common Divisor | |
| Mittelwerte (geom., harm., arhitm.) | Calculations of averages - arithmetic, geometric, harmonic | |
| Primzahlen | Prime numbers | |
| Bruchrechnung | Fractions |
Caution: MT is for MonteCarlo, and is NOT SECURE for CRYPTOGRAPHY as it is.
I started Coherent Cognition a number of years ago with MacMathPascal as our only product. It partly paid my way through school the second time.Nice to know that real money has been made selling numerical analysis code written in Pascal!!