1.3.0:
- Last version of YAMPv1
- Added linear fitting function
- Added distribution estimation function
- Fixed typos in documentation
- Added automated tests for documentation
- Improved FFT (fixed some bugs)
- Improvement in
min()
andmax()
functions - Improved the
load()
function - Added possibility for extern functions defined in *.ys files
- Additional boolean operators && and || available
- Better expression and scripting blocks
- Some new functions (
cumprod
,cumsum
, ...) available - Added
chol
function for accessing the Cholesky decomposition
1.2.3:
- Added documentation tests
- Included more tests
- Improved QR, LU, Cholesky decomposition
- Added conversion functions for cartesian, spherical and polar coordinates
- Added functions for
all
andany
- Added the
find
function for getting indices - Renamed the
product
function toprod
- Added
triu
andtril
functions - Added a
magic
function to shuffle new matrices - Renamed the
printf
function tonotify
- Added a
printf
function to format strings - Changed the (unary) operator concept
- Added a function
Cholesky
to access the cholesky algorithm - Fixed a bug in the assignment operator
1.2.2:
- Improved stability of the parser
- Included more tests
- Fixed some bugs (e.g. inverse, )
- Added the
let
keyword for explicitly local defined variables - Added conversion functions,
bin2dec
,hex2dec
andoct2dec
- Added fit function
polyfit
, and polynomial evaluationpolyval
- Added function for convolution
convn
- Curly brackets do no longer give scope - only for functions
- Functions require curly brackets and cannot access workspace variables
- Improved the matrix properties
- Added Hurwitz Zeta function
- Added Polylog and Polygamma (Psi) function
- Added Struve function and improved Ylm function
- Improved matrix operations (speedup at least 10)
- Improved the Gegenbauer function
- Added the inverse tangent function
- Added the
sphere
function to generate a sphere
1.2.1:
- Improved stability of the parser
- Included more tests
- Fixed some bugs (e.g. gamma function, zeta function)
- Added pre- and post increment / decrement operators
- Introduced functions for evaluating and casting user content
- Improved the event handling
- Added the method
setdef
to set default values for plots - Added
SurfacePlot
with possibilities as Meshgrid and Surface plot - Added the function
meshgrid
to generate a 2D grid (2 matrices) - Introduced lots of new random number distributions
- Added wikipedia links in help
- Added several new trigonometric functions like sec, csc, ...
- Improved the numeric package
- Extended the existing "kinds" enumeration for naming classes of functions
- Introduced notifications with an event driven API
1.2.0:
- Rewrote the parser; it is now twice as fast and returns accurate errors
- Included the Zeta function
- Improved the Gamma function
- Completed a lot of the documentation work
- Physics plugin reached version 0.8 (includes Psi_0(x), working unit converter)
- Improved the operator system by allowing arbitrary operations through mapping
- Added new visualization features like
subplot()
,errorbars()
orhist()
- Added lots of new value types for plotting
- Rewrote the complete Exception handling - most important feature is the difference between runtime and parsing
- Scripting is now fully functional and can be enabled by using
Parser.UseScripting = true
- Improved the console demo application, as well as the benchmarks and tests
- Added the possibility of annotations in plots
- A complex plot is available by using
cplot()
- A function plot can also be done by using
fplot()
- Added
Block
andStatement
classes to distinguish between atomic blocks and whole statements Expression
andOperator
instances are blocks, withKeywords
being of typeExpression
1.1.2:
- Improved physics plugin (unit conversations done)
- Extended
contourplot
,polarplot
and fixed the color palette - Added the
sinc()
function to the physics plugin - Improved the output of scalars
- Added logic function
isinfinite()
,isnan()
- Added the
digamma()
function, i.e. psi(x) = psi_0(x) - Improved documentation
- Added the
format()
function to define the output representation - Added constants
true
,false
- Added statistic functions
acor()
,cor()
,cov()
,hmean()
- Added statistic functions
jackknife()
,xcor()
andlsq()
- Added statistic function
bootstrap()
- Added the complex plot with
ComplexPlotValue
and thecplot()
function - Added the bar plot with
BarPlotValue
and thebar()
function - Added the error plot with
ErrorPlotValue
and theerrorbar()
function - Added the possibility to activate scripting by using
Parser.EnableScripting
- Added prelimary scripting with
if
,for
,do
,while
,function
- Added the possibility of having scopes with curly brackets
- Improved
load()
function - Improved the parse trees and introduced keyword parse statements
- Extended the
QueryContext
andParseContext
objects - Changed the syntax for lambda expressions from
@x => ...
tox => ...
, i.e. the @ sign is now obsolete
1.1.1:
- Added plugin project YAMP.Physics
- Added some special functions to YAMP.Physics
- Added several physical constants to YAMP.Physics
- YAMP.Physics will have a special unit type - still under construction
- Added
ContourPlotValue
type for contour plots - Improved the Gamma function
- Added
arg()
function as well asreal()
andimag()
- Added the
ncr()
function (n choose r, binomial coefficient) - Renamed some classes to improve the code
- Improved whitespace, newline and comment handling
- Added
lu()
andqr()
functions for linear algebra - Added
bessel()
,bessel0()
andbessel1()
functions - Added
mv()
andcp()
function - Added function
contour()
for creating contour plots - Added the error function
erf()
anderfc()
- Improved the
set()
function - Added exponential distribution
rande()
- Improved the string representation of the scalar value
- Added more constants
- Improved
IsPrime()
- Fixed an issue with the
timer()
- Improved the help
- Added the possibility for string literals @"a\bc" (i.e. "a\bc")
1.1.0:
- Removed the functions
title()
,xlabel()
, ... to focus on the more generalset()
- Added the ability to write so called lambda expressions, i.e. functions in the code
- Changed the random number generator to the Mersenne Twister MT19937
- Added a function
diag()
to create diagonal matrices - Added a function
sort()
to sort vectors in matrices - Fixed some bugs regarding the SVD, Mandelbrot and other functions
- Added a function to talk to the SVD, called
svd()
- Added the possibility to have multiple output arguments over
ArgumentValue
- Improved the possibility to have multiple statements
- Added new tests and improved the test console application
- Added a new class for serializing and one for deserializing (helpers)
- Improved the documention and added a new
ReturnsAttribute
attribute (mult. outputs) - Added a new type called
FunctionValue
, which stores lambda expressions - Added a function
gcd()
to determine the greatest common divisor - Added several new random distributions along with the new random generator
- Improved the way that indices work in YAMP - values can now act as functions as well
- Added new constants
deg
,g
andomega
. - Moved the converter attributes to a different namespace
- Added a lot new classes for numerics, e.g. in Optimization, ODE, Interpolator, ...
- Added a new function
cd()
for changing the working directory - Added comments, i.e.
//
is a line comment and/*
to*/
is a block comment - Changed the
ToString()
of the parser / parse tree, expression and operators. - Added the ability to document return parameters with comments
- Added functions for finding the root
root()
and for differential eq.ode()
- Added a function
date()
to get the current date as aStringValue
- Added more properties and functions to the
MatrixValue
class - Improved the string output of a
FunctionValue
instance
1.0.1:
- Removed the
setData()
method to adjust plot series values - Added the
set()
method to set arbitrary plot properties and series - The
set()
function includes possibilities to specify various series at once - Improved the documentation
- Latest merge included to improve the portability of the library
- Removed all Async functions - async. calls have to be done externally
- Added new attributes to declare properties of
Plot
values modifyable - Changed the name of the
gamma
constant togamma1
(since this is the value ofGamma(1)
) - Added several new exceptions
- Added some missing help declarations
- Added a lot of new properties to the various
Plot
derivatives - Fixed some bugs regarding
Range
andMatrix
types - Added improved serialization (for
Plot
derivatives,Matrix
andRange
values) - Added new tests and fixed a misbehavior for the unary minus operator regarding matrices
- Added new functions
ls()
andpwd()
for directory information
1.0.0:
- Improved the
load()
function (decides now if the source is text or binary) - Removed the transforms, but kept the advantages
- Introduced new attributes for the kind of function / class and optional arguments.
- Added the modulo operator (%) and a
mod()
function - Added a
product()
function, which works like thesum()
function - Extended the documentation and included some documentation on the constants
- Changed the way that constants are being built (now similar to functions)
- Improved the index operator (logical subscripting is now much better)
- Included various plot functions and helpers (including
polar()
,semilogx()
,semilogy()
andloglog()
) - Now a completely object oriented help is available
- Added the possibility of constructing own
ParseTree
derivatives - Fixed a bug concerning multiple spaces
- Can handle function overloads and multiple optional arguments for
ArgumentFunction
types - Replaced all calls that contain a
Hashtable
with strongly typedDictionary<string, Value>
- Un-nested the enum
PointSymbol
and the classPoints
for more convenience
0.9.7:
- Changed the syntax to agree with MATLAB (e.g. matrices can only be defined in [])
- Improved the
ParseContext
with events - Now returns the
QueryContext
in most cases to give the programmer more control - Included several plot functions like
PlotFunction
(for 2D plotting) - Renamed the
FactoryFunction
toFactorialFunction
(corrected) - Spaces and new lines can be used within the matrix environment (i.e. within []) to mark new columns and new rows
- Included new expressions and new exceptions
- Improved the speed of the parser by another 10%
- Rewrote the matrix internally to work better for sparse matrices and be more flexible
- Rewrote the range internally to only set user changed values explicitly
- Added more unit tests
0.9.6:
- Added a
PlotValue
type with derived types likePlot2DValue
etc. - Created a function called plot(), which takes one or more arguments
- Created a special abstract class
PropertyFunction
to derive from - Only numeric types will be assigned to the $
- An assignment to the $ will only happen if there is no user assignment
- Every property changed in a
PlotValue
instance invokes a callback - Functions can return multiple values
- The last returned
PlotValue
is saved in the correspondingParseContext
0.9.5:
- Added a
ParseContext
class that manages the (local and global) contexts - Applied the changes to all operators, expressions and functions
- Improved the waterfall of global to local scope; one can have several independent branches
- Added the ability to work purely in one context
- Changed the derivation for each exception to a new class
YAMPException
- Included the Mandelbrot set as an example for fractals
- Added a new abstract base class
SystemFunction
that makes use of the local context - Altered the overview of the help
- Changed the
Tokens
class to only containOperator
andExpression
instances - Changed the definition of the
IFunction
interface - Included a
ContainerFunction
class that can wrap any functions with theFunctionDelegate
signature - Improved the performance of the parser by another 5%
- Added more async methods, mainly due to the
ParseContext
specification - Added new
Interpolation
base class withSplineInterpolation
implemention
0.9.1:
- Added the "who()" command to view the current workspace
- Added a method called
LoadPlugin()
to the Parser - now it should be easily possible to load libraries full of functions, operators and other YAMPy stuff - Added more functions for async operations
- Improved the structure of the code, so that it is somehow more clear what must be done to write own YAMP libraries / plugins
- Added more tests
0.9.0:
- Changed the license from the CPOL to the New BSD License
- Underscores can now also be used in symbol or function expressions
- Added a new help() method to provide help for included methods
- Added
DescriptionAttribute
andExampleAttribute
classes to write help messages ArgumentFunction
derived types are now type-safe- Included help for most non-trivial functions
- Fixed a bug concerning the
trace()
method of theMatrixValue
class - Included a class
AsyncTask
that is used for async invoking - Provided a method
ExecuteAsync()
for async execution - Added some simple integrators
- Added the GMRES(k) method for solving non-SPD matrices
0.8.0:
- Introduced combined assignment operators (+=, -=, *=, ^=, /=, =, ...)
- Added a function for setting the output precision (precision())
- Added the CG method and a proper (prelimary) solve() method
- Improved the ArgumentsFunction class to support optional arguments
- Added the possibility to specify the variables to load, save and clear in those functions
- Small changes in the code for more elegance
- Improved the performance of the parser
0.7.0:
- Introduced logic operators (>, <, ==, ~=)
- Included logical subscripting (like x[x>0]=...)
- Improved the parser performance (factor 1.5)
- Improved the bracket expressions
- Added new linear algebra functions (inv(), trace())
- Added new Spectroscopy function (FFT)
- Added new tests
- Added new parsers for comparison (LL MP, MFP)
0.6.0:
- Resorted the YAMP code (directory changes)
- Added new functions (trace, eig, ev, ...)
- Added some basic linear algebra functions
- Added dot operators (.^, ./, .*, .\)
- Added new exceptions
- Improved the exception handling in ArgumentFunctions
- Improved the parser by a factor of 5
- Fixed a small bug in the parser
- Introduced the YAMP.Numerics namespace with some stuff for numerical mathematics
- Added new tests
0.5.0:
- Added new functions (load, save, eye, dim, length, ...)
- The power function can now work with matrices
- Added a datatype for Strings
- Added the range operator (including special notations like ":" and "end")
- The index operator now supports the range operator
- Added new random number generator (gaussian) and integer number generator
- Improved the parser (Unary operators)
- Added new tests
0.4.0:
- Added new functions (arsinh, arcosh, artanh, arcoth, sinh, cosh, tanh, coth, ...)
- Improved the power functions
- Added an operator for left divisons (usual operator is for right divisions)
- Added new matrix functions (eye, zeros, ones, ...)
- Added random number generator (uniform)
- Assignment operator now works with indices
- Added new tests
0.3.0:
- Functions can now either perform operations on whole matrices or on each sub-element
- Assignment operator has been introduced
- Fixed a bug concerning powers of purely imaginary numbers
- MatrixValue numerics have been improved
- VectorValue has been replaced completely by MatrixValue
- Improved the performance of the parser (factor 2)
0.2.0:
- More sophisticated operators (transpose, faculty, ...) have been integrated
- Custom constants (symbols) and functions are now possible
- More sophisticated functions are now available
- VectorValue and MatrixValue numerics have been included
- Improved the stability of the parser
0.1.0:
- The project has been created
- First version of the parser, Stack based
- First test cases have been stated
- Main operators and expressions have been included
- Constants have been introduced
- ScalarValue numerics and some basic functions (exp, sin, cos, ...) have been implemented