NEWS Archive

The news archive contains the list of all news, 55 in total. The latest news are at the news page.


28.12.2023  ALGLIB 4.01 is released

We are pleased to announce that ALGLIB 4.01 has now been officially released. This version includes several significant updates:

  1. Large-scale sparse SQP nonlinear programming solver. The new solver replaces the previous SQP implementation, offering scalability to thousands of variables and 1.5x-2x faster convergence. Additional features include two-sided nonlinear constraints and the ability to recover from target function breakdowns.
  2. Constrained differential evolution solver. This state-of-the-art global derivative-free optimizer features an adaptive choice of training parameters using the award-winning EPSDE strategy by R.Mallipeddi and P.N.Suganthan.
  3. Derivative-free box-constrained nonlinear least squares solver. The new NLS subpackage offers functionality similar to that of the MINLM subpackage, but in the derivative-free mode.
  4. Parallel nonlinear optimization. Our nonlinear optimization suite (MINNLC, MINLM, LSFIT, NLS, MINDF optimizers) now supports parallel model evaluation and numerical differentiation. This feature is available only in the commercial edition and can greatly accelerate the solution of problems with expensive target functions. As of ALGLIB 4.01, this feature is available in C++ and C#, with plans to extend it to Java in the 4.02 release.
  5. New linear solvers. This release features direct sparse linear least squares and a faster sparse nonsymmetric linear solver.

There are also many smaller additions and several bug fixes. As always, a full list of changes can be found in our issues tracker.

We wish you all the best in the upcoming year!
Sergei Bochkanov, ALGLIB LTD


01.12.2023  Upcoming pricing changes, special provisions for long-term users

Dear ALGLIB Users!

We would like to inform you of some upcoming changes to our pricing for new users, effective January 1, and about special provisions for long-term users.

In recent years, ALGLIB has significantly improved, with advancements in optimization, interpolation, and linear algebra suites, while maintaining our open-source nature. However, our pricing has remained constant since 2012, despite these enhancements and a cumulative inflation rate of over 34% since then.

We intend to stay in our current price segment but must implement a necessary price correction. Therefore, beginning Jan-01, we will increase prices by an average of 18% for new licenses, support plan renewals (for new users), and license upgrades.

Our aim is to increase prices for new users while minimizing the impact on our long-term users. Here are two measures we are implementing:

1. First, a 'grandfathering' policy: support plans active as of December 31 will see their next renewal price increased by merely 8% (the average annual inflation rate for 2022-2023).

This policy will be applied for, at least, several consecutive years: if you renew an active or recently expired support plan, the renewal price will follow the world's inflation rate, or remain the same (depending on our pricing decisions during that period). It is discussed in a more detail in our FAQ.

2. Second, an opportunity to secure the current renewal/upgrade price, even if your support plan expires long after December 31. It is possible by either procuring the renewal/upgrade before December 31, or asking for a quotation.

The former option is easy to implement - the price will be fixed even if payment occurs after December 31, and the new support plan will commence immediately after the expiration of the current one, so you will lose no money by renewing early. The latter option is especially suitable for users in large corporations with complex decision processes. It allows you to lock in the current price without any obligations from your side.

If you have any questions or need assistance with renewals, upgrades, or securing a quotation, please don't hesitate to reach out to us. Thank you for using ALGLIB!

Sergei Bochkanov, ALGLIB LTD


22.05.2023  ALGLIB 4 is released

We're pleased to announce that ALGLIB 4 has now been officially released. This version features significant updates:

  1. ALGLIB for Java: We've expanded our library to include Java, offering both free and commercial editions. By utilizing our exclusive automatic code generation technology, we provide the same API as in other programming languages supported by ALGLIB.
  2. Updates to ALGLIB Suite: The commercially licensed ALGLIB Suite now comes with C sources for the HPC core. This addition is relevant for non-C++ developers, like those working with ALGLIB for C# or Java. For those using single-language editions, upgrading to the Suite is simple - simply pay the difference in price.
  3. New and Improved Functions: ALGLIB 4 introduces new features such as a multi-objective optimizer, more robust SQP code, 1D spline serialization and faster 1D spline fitting. We also want to thank Horst Greiner working at Hembach Photonik for contributing the code for second derivatives for a bicubic spline.

The decision to transition from version numbering 3.x to 4.x is attributed to two key reasons:

Firstly, the inclusion of ALGLIB for Java is a major addition, significant enough to warrant a major version increase.

Secondly, this release incorporates several changes that break backward compatibility. ALGLIB 3.x maintained numerous legacy API design decisions. However, recent advances in our automatic code and wrapper generation technology allow us to capture more information about program semantics, such as data constancy, modifications, in-place changes, reallocations, resizing, etc. This development allows us to create a more concise API, free from old inconsistencies.

Transitioning from the old to the new API is straightforward. If you are using a strongly typed language (such as C++ or C#), recompiling your program will generally be sufficient. If it compiles, it works. In some cases, you might need to remove unnecessary 'ref' modifiers or pay attention to const-correctness, but all fixes are straightforward.

For more information on the transition from 3.x to 4.0, including a list of affected functions, please refer to the separate article on this topic.

As always, a full list of changes can be found in our issues tracker.


19.12.2022  ALGLIB 3.20.0 is released

ALGLIB 3.20.0 comes with several new major features and with an important addition to our commercial product line - ALGLIB Suite.

ALGLIB Suite is a commercial license that includes all programming languages (4, as of the moment of writing) supported by ALGLIB. The product price is, however, only 1.5x higher than the corresponding license for just one of the languages. Just as with single-language ALGLIB versions, it is possible to buy DEV-1, DEV-3, COMPANY-WIDE and CORPORATE licenses for ALGLIB Suite. Users, who already own a single-language license, can upgrade it by paying the difference in price.

Speaking of the new features, ALGLIB 3.20.0 includes:

A full list of changes can be found in our issues tracker.


13.06.2022  ALGLIB 3.19.0 is released

The most important feature in ALGLIB 3.19.0 is a new large-scale RBF solver that supports thin plate splines, biharmonic splines and multiquadrics. The solver supports both interpolation and fitting (smoothing) problems.

New RBF algorithm uses a domain decomposition method to solve linear systems. As a result, it has O(N) memory requirements and O(N2) running time, which is a major improvement over O(N2) memory and O(N3) time required by other open source implementations. It can be used on datasets with more than 100.000 points.

Another interesting improvement is a support for red zones in the C++ version of the library. A Red Zone is a fixed size area added before and after each dynamically allocated memory block. The Red Zone is filled by the special red zone control value during its allocation. When the dynamically allocated block is freed, its control value is checked. Any change means that someone (either ALGLIB or user code that works with ALGLIB-allocated arrays) performed an out-of-bounds write. Red Zones are essential for finding memory access errors that silently corrupt your data and/or crash your program.

A full list of changes can be found in our issues tracker.


19.05.2022  ALGLIB Project is now a UK company!

Dear ALGLIB users!

I am Sergey Bochkanov, the founder of the ALGLIB project, and I want to tell you that starting from 19th May, 2022, we are moving operations to ALGLIB LTD, a UK Limited Company.

The new company will be our core business unit. It independently licenses its intellectual property (i.e. it is not a reseller), uses banking accounts in the UK and USA for its transactions, operates under English law and pays taxes to HMRC.

Our former business unit will operate for some time in order to serve existing long-term support contracts. Because sole proprietorship is hard to separate from the person behind it, it exists no matter where I live.

However, it is advised to move your contracts to our new company - it can be performed online in just a minute from your account. This option is completely free and available to any customer, even one with an expired support contract.

UPDATE: The relocation from Russia was completed. We no longer have a physical presence in Russia.

Sergey Bochkanov, ALGLIB Project.


05.03.2022  Sergey Bochkanov on the project status in light of RUS/UKR situation

Dear ALGLIB users!

I am Sergey Bochkanov, the founder of ALGLIB project, and I want to address you about the status of the project (which is based in Russia) in light of the recent events.

I am shocked and saddened by what is happening now.

I have always believed in cooperation and openness, that is why I have decided to work on the open source product in the first place. ALGLIB is trusted by people from all countries and industries due to its open nature. I hope that you will continue to trust us.

Below I address the following points: (a) the future of the project, and (b) our contingency plan.

First, ALGLIB development continues. There is an upcoming release with new large-scale thin plate splines and improved detection of memory access errors. The next release will include parallel sparse factorizations, LP and QP solvers, and there is a good chance that both releases will be made in 2022.

We have resources to provide the same level of commercial support as before. Our plan for the next several months is to continue our operations from Russia, making everything possible to be able to work with our users worldwide.

We are a small IT company that uses the local branch of the Western bank for its transactions and has no ties to the military sector. As for now, we have not been hit by the sanctions. We also have a USA-based reseller (FastSpring) that processes plastic card payments, and several other contingency plans.

Should anything change in the situation, we will notify you as soon as possible.


27.10.2021  ALGLIB 3.18.0 is released, with NET 5 SIMD support!

The most important improvement in ALGLIB 3.18.0 is that ALGLIB became the first open source numerical library to support .NET 5 SIMD intrinsics!

Hardware intrinsics are well known to C/C++ programmers, but C# lacked them for tens of year. As a result, it was impossible to utilize modern SIMD instructions in C# and performance of the numerical C# code was way below that of the well-optimized C/C++ one. Many numerical libraries (including ALGLIB) solved the problem by providing C# interface to high-performance native code. However, having native code in your application has its own drawbacks.

Thankfully, .NET Core 3.0 finally introduced SIMD support into C# and it matured in .NET 5, and we are glad to announce that ALGLIB for C# now includes optional SIMD kernels for many performance-critical functions. Here 'optional' means that one may compile ALGLIB under .NET 5 with SIMD intrinsics enabled and enjoy unprecedented performance - or compile it without SIMD and enjoy unprecedented portability to any .NET version released since .NET Framework 2. This feature is present in both commercial and open source editions of ALGLIB.

In addition to that major improvement, ALGLIB 3.18.0 also includes following features:

We also fixed several minor bugs (see issues tracker for a complete list). Thanks to all for staying with ALGLIB!


29.12.2020  ALGLIB 3.17.0 is released

We are glad to announce that (a) 2020 hopefully will be over soon, and (b) we just published a new ALGLIB release!

As always, ALGLIB 3.17.0 comes with new major features, lots of minor additions and a few bugfixes. Major new functionality includes:

Minor improvements include:

We also introduced a few compatibility-breaking changes to names/signatures of sparse direct solvers (see entry in our issues tracker for complete list). These changes were introduced in order to make API compatible with the rest of the library.

Finally, a few stability fixes:

Full list of changes can be found in the Change Log.


19.12.2019  ALGLIB 3.16.0 is released

New ALGLIB release introduces several major additions, a pack of minor improvements and one bugfix. The major new functionality is outlined below:

Minor improvements include:

Finally, one bugfix and one backward-incompatible change:

Full list of changes can be found in the Change Log.


21.02.2019  ALGLIB 3.15.0 is released

New release of ALGLIB introduces several major additions, a pack of minor improvements and three bugfixes. The major new functionality is outlined below:

We also implemented following minor additions:

Finally, three minor bugs were fixed, two of them in gradient checking functionality and one in logisticfit4() function. Full list of changes can be found in the Change Log.


16.06.2018  ALGLIB 3.14.0 is released

New release of ALGLIB introduces many new algorithms and one major backward incompatible change in multithreaded API. Following algorithms were added:

Finally, we want to tell you about changes in the API. Pre-3.14 versions of ALGLIB used smp_ prefix in the function name in order to indicate that you need parallel processing capabilities. Since version 3.14 we switched to more convenient interface which allows you to (a) specify global threading behavior by means of setglobalthreading() function/method, or (b) specify threading settings at function call level by appending alglib::parallel or alglib::serial to the list of parameters.

Former (alglib::parallel) means that computations are parallelized when feasible (ALGLIB automatically decides whether it makes sense to start worker threads or not), latter means that computations are always performed in serial manner. The default behavior is to perform all computations serially, unless explicitly told by user to parallelize them. When told to use parallel processing, ALGLIB tries to use all cores available (but you can change it with setnworkers call).

Old smp_ prefix is not supported in newer ALGLIB releases; you have to change your code by removing this prefix from function names and by adding alglib::parallel to such calls.

We also fixed several bugs, full list of changes can be found in the Change Log.


29.12.2017  ALGLIB 3.13.0 is released

On the last business day of 2017 we are happy to announce next release of ALGLIB: version 3.13.0! This release introduces many interesting updates: from new functions to precompiled multiplatform Linux binaries. Changes can be divided into the following categories: "infrastructural" changes, new "major" features, new "minor" features, and bug fixes.

Major infrastructural changes in this release are:

Following major features were added in this release:

Following minor features were added in this release:

We also fixed two bugs:

Full list of changes can be found in the Change Log.


24.08.2017  ALGLIB 3.12.0 is released, now with Delphi support!

The most important change in ALGLIB 3.12.0 is introduction of ALGLIB for Delphi/FreePascal. New ALGLIB product is a Delphi/FPC wrapper around precompiled computational core written in C. As other our products, it is available in two editions: free (full functionality, limited performance, non-commercial license) and commercial (HPC computational core with multithreading/SIMD support) versions.

This release is mostly centered around introduction of Delphi version. However, we also made several minor improvements in generic numeric functionality of our package:

Full list of changes can be found in the Change Log.


11.05.2017  ALGLIB 3.11.0 is released

New release of ALGLIB includes following improvements:

One more major change: we merged VB.NET and IronPython wrappers with primary C# distribution they rely on - now all three languages are packed together.

We also made several stability fixess, details can be found in the Change Log.

P.S. Thanks to all our users for your attention, stay with us! :-)


19.08.2015  ALGLIB 3.10.0 is released

New release of ALGLIB includes following improvements:

We also made several stability fixess, details can be found in the Change Log.


12.12.2014  ALGLIB 3.9.0 is released

New release of ALGLIB 3.9.0 brings a lot of significant improvements! Both commercial and non-commercial users have access to following functionality:

Commercial users (C++ and C#) may benefit from 100% MKL-accelerated dense linear algebra. Now all important dense linear algebra functions are accelerated by built-in (or provided by user) installation of Intel MKL.

IMPORTANT: we should note that we made changes in the default solver used by MinQP subpackage. Previously it used Cholesky-based solver, now it uses faster BLEIC-based QP solver with default stopping conditions. Both solvers converge to good solutions, but because they are different solvers, slightly different solutions can be returned. If you use MinQP subpackage in its default configuration, we recommend you to set QP solver explicitly with carefully tuned stopping conditions.

We also made several stability and bug fixes, details can be found in the Change Log.


13.08.2014  ALGLIB Project publishes technical report on StrongNet

Our technical report proposes two innovations in the design of neural networks: (a) strong neurons – highly nonlinear/nonsmooth neurons with multiple outputs and (b) mostly unsupervised architecture – backpropagation-free design with all layers except for the last one being trained in a completely unsupervised setting.

The new neural design (called StrongNet) was tested on a well-known MNIST benchmark. This demonstrated that StrongNet is able to capture structural information about images in the "mostly unsupervised" setting. Three-layer StrongNet has a test set error on MNIST as low as 1.1%. It outperforms 11 out of 14 two/three-layer networks cited on the MNIST homepage (as of Aug 2014).

read full report (PDF)


12.03.2014  New article - "ALGLIB+MKL: first results"

In November (2013) we presented new product - ALGLIB 3.8.1 (Commercial Edition), the first ALGLIB version which was shipped with Intel MKL - high-performance numerical library by Intel. It was first release which featured C# interface to native computational core, thus both C++ and C# users were able to use MKL as part of ALGLIB.

MKL-capable ALGLIB is a significant step in ALGLIB development, result of technical partnership with Intel Numerics Russia. Now, after 4 months with new ALGLIB, we decided to publish an article which discusses benefits MKL brings to ALGLIB.

read "ALGLIB+MKL: first results"


25.11.2013  ALGLIB 3.8.2 is released

This release was made in less than 3 weeks since previous one, and includes only one improvement in ALGLIB for C++ – better, smoother integration with Intel MKL. Only C++ version of Commercial Edition was changed, and only this change was made, so if you use Free Edition (or anything other than C++), you may ignore this release.

Experimental support for Intel MKL was introduced in ALGLIB 3.8.1, which was released in the beginning of November. Both C++ and C# versions of ALGLIB started to use MKL. ALGLIB for C# was favorably received by customers, but C++ users reported about two inconveniences. Both of them due to the fact that MKL-capable version of ALGLIB for C++ was delivered as precompiled static library (binary addition to the main source code distribution).

First, several users reported about linking problems with combined ALGLIB+MKL static library – distribution of precompiled C++ libraries has a lot of tricky issues. Second, some of our users already own license for MKL, and they wanted to use MKL and ALGLIB together in one application – but they wanted ALGLIB to use their own installation of MKL.

As result, in new ALGLIB for C++ we changed distribution model. ALGLIB itself is distributed as source-only, and again you should compile it yourself – with your own compiler, own options, and perfect compatibility with your build environment. If you want to use Intel MKL, you have two options here...

First, you may link with special lightweight Intel MKL distribution, which is shipped with ALGLIB for C++ as DLL file. In this case you do not have to buy separate license for MKL, but this MKL distribution can be used only as part of the ALGLIB. Second option is to link ALGLIB with your own MKL installation (you should have license for Intel MKL). In this case you may use Intel MKL both directly – and as part of ALGLIB.

Both options involve no precompiled static libraries. In the first case the only library you should use is import library, which is portable across different compilers. In the second case you should just add one more C file (ALGLIB-MKL interface) to your application, so again there should be no compatibility issues.


07.11.2013  ALGLIB 3.8.1 is released

ALGLIB 3.8.1 is released! This new release of ALGLIB features two major improvements in Commercial Edition: 1) C# interface to highly optimized native computational core, 2) experimental integration with Intel MKL.

1. Prior to 3.8.1, ALGLIB for C# was 100% NET application. Being pure NET assembly, it was portable and easy to integrate into existing NET projects. However, on some important computational problems (linear algebra, large scale data mining) C# performance was 2x-4x times slower than that of optimized native code.

Starting from 3.8.1, ALGLIB for C# includes both pure NET computational core – and its native companion, highly optimized native core with C# interface. Both computational cores provide same functionality, and even more – they provide 100% identical C# interface. You can easily plug HPC core into existing applications which use previous versions of ALGLIB. As for ALGLIB 3.8.1, HPC core can be used only under Windows systems. However, we plan to introduce support for LSB-compliant Linux systems in the next release. One more limitation – HPC core is not included in ALGLIB for VB.NET, although in next ALGLIB release VB users will have same level of performance as C# programmers.

2. Second important improvement is integration with Intel MKL, which can be accessed from C++ and C#. Intel MKL is used internally to accelerate linear algebra algorithms. We obtained developer's license from Intel which allows us to ship precompiled ALGLIB binaries linked with Intel MKL.

C++ version of ALGLIB now includes precompiled static library alglibxx_hpc.lib (ALGLIB core), mkl4alglibxx.lib (MKL imports) and mkl4alglibxx.dll (MKL core). When you link your application with these precompiled static/dynamic libraries, ALGLIB will use MKL internally to provide same interface – but with 2x-4x (depending on hardware being used) increase in linear algebra performance. As for C#, this version of ALGLIB includes native computational core (as we told before). It is already linked with Intel MKL, so you don't need additional steps in order to use MKL from C#.

We want to make several notes here. First, due to licensing restrictions, you can not use Intel MKL directly. You can use ALGLIB functionality which is internally accelerated by MKL's functions, but you can not access these functions directly. We do not provide you MKL header files because we do not have right to do so. Second, because MKL support is in the experimental stage, for now we ship only Windows libraries. Linux binaries are planned to be included in the next release of ALGLIB.

Finally, during implementation of this subproject we received several important suggestions and ideas from developers of local Intel's office, and we would like to thank them (especially Gennady Fedorov and Sergey Maidanov) for their help.

3. These improvements can be used only by commercial users who own license for new multi-threaded branch of ALGLIB. If you bought your license before release of 3.8.0 and didn't upgraded your license yet, it is good time to consider an upgrade. Upgrade is done for free, the only thing we need from you is a formal confirmation that you agree with new licensing terms.

In addition to improvements mentioned above, we made several minor fixes in both Commercial and Free editions of ALGLIB and fixed one bug in the MinBLEIC optimizer (of course, bug fixes were included in all editions – commercial and free).


07.08.2013  ALGLIB 3.8.0 is released

ALGLIB 3.8.0 was released today! This release features a lot of performance-related improvements, new features and bug fixes. Both editions of ALGLIB (Free and Commercial one) share following improvements:

ALGLIB Commercial Edition features following performance-related improvements (our former customers should upgrade their license in order to access these improvements):

Both editions of ALGLIB share following bug fixes:


02.08.2013  ALGLIB Project announces changes in product line!

ALGLIB Project is going to release ALGLIB 3.8.0 in several days and we are glad to announce changes in our product line!

Prior to ALGLIB 3.8.0 we had single product - ALGLIB Standard Edition - which was distributed under two licenses, open source and commercial. Starting from 3.8.0, we have product line of two related products - ALGLIB Free Edition and ALGLIB Commercial Edition. Both editions provide same functionality, i.e. they both can solve same set of mathematical problems. However, they differ in their performance.

Free Edition is a single-threaded library with no extensive low-level optimization being applied. It is descendant of pre-3.8.0 ALGLIB Standard Edition, which had no multithreading support. Commercial Edition provides multithreaded acceleration for many important functions, and includes better optimized computational core. Functions whose performance is different in FE and CE are explicitly labelled as such in ALGLIB Reference Manual.

ALGLIB Free Edition is still licensed under GPL. ALGLIB Commercial Edition, obviously, is distributed under commercial licensing terms. We had to change commercial licensing terms for this new edition, new licensing terms can be downloaded as PDF from our website. Most important changes are:
    1) different terms for distribution of ALGLIB CE source code,
    2) special provisions for future inclusion of third-party binary components (Intel MKL - planned for 3.8.2).

IMPORTANT! Special note for commercial users who bought pre-3.8.0 ALGLIB and have active support-and-maintenance agreement. ALGLIB CE is a new product, related to, but different from ALGLIB SE, which you paid for. We offer you free upgrade from Standard Edition to new multithreaded Commercial Edition, but in order to do that you have to accept new licensing terms. New performance-related code is not compatible with former ALGLIB license, so accepting new license is the only way to get new ALGLIB CE.

Upgrading your license is easy - just write to updates@alglib.net, tell us your agreement number and confirm that you are ready to upgrade to new license. We can not perform such upgrade without your consent, because it will be done by entering into new agreement.

If you decide not to upgrade, you still will be able to receive new versions of ALGLIB (within your support period), but it will be single-threaded ALGLIB without new performance-related improvements. However, it will have full set of functions - the only difference from new ALGLIB CE will be its single-threaded performance and lack of planned SSE/AVX/IntelMKL extensions.


18.01.2013  ALGLIB 3.7.0 is released

ALGLIB 3.7.0 was released today, with new algorithms and fixes:

Commercial version of ALGLIB 3.7.0 will be delivered to customers with active support/maintenance agreement within few days. Good luck with ALGLIB!


04.07.2012  ALGLIB 3.6.0 is released

ALGLIB 3.6.0 was released today, with new algorithms and fixes:

Commercial version of ALGLIB 3.6.0 will be delivered to customers with active support/maintenance agreement within few days. Good luck with ALGLIB!


22.05.2012  New articles for ALGLIB User Guide

We've updated ALGLIB User Guide - online book about ALGLIB and numerical analysis algorithms in general. Update includes three articles on interpolation and data analysis algorithms:

We continue our work on bringing you more information - and developing new algorithms. Good luck with ALGLIB!


27.03.2012  ALGLIB 3.5.0 is released

New version of ALGLIB is released - ALGLIB 3.5.0, with many improvements and new algorithms:

Commercial version of the new release will be delivered to customers with active support/maintenance agreement within few days. Good luck with ALGLIB!


03.01.2012  Commercial licensing policy changed - more rights for our customers

ALGLIB Project announces introduction of new version of the ALGLIB Commercial License Agreement. New agreement gives same freedoms as previous one, but additionally it allows our customers to:

These options can be used for no additional fee by any customer, from large company to one-developer startup. We believe that such license covers most use cases. However, if you feel that for some reason our commercial license does not suit your needs, feel free to contact us and describe your situation. We are always ready to discuss new licensing options.


04.10.2011  We've moved into a new office!

ALGLIB Project - a company which supports ALGLIB - has moved to the new location. Our new office is located at the 12th floor of the "Capital-Nizhny" office building. Thus, our mailing address has changed to 603006, Russian Federation, Nizhny Novgorod, Maxim Gorky street, 117, room 1210. Our legal address remains unchanged.


17.06.2011  ALGLIB 3.4.0 is released

New version of ALGLIB is released - ALGLIB 3.4.0. This release includes many improvements:

We've also fixed several bugs:


28.04.2011  Commercial licensing/pricing policy changed

ALGLIB Project announces following changes in the commercial licensing policy. First, we've introduced new version of the commercial license agreement. It gives same freedoms as previous one, but additionally it:

We've also introduced set of new licensing options targeted at large businesses and government entities:

Finally, we've changed our pricing model. New pricing model features differentiated price, which depends on the number of developers working with ALGLIB. Thus, it has some traits of per-developer licensing - but it is not per-developer licensing because there is no need to pay additional fees every time you add one mode developer.

There is unlimited company-wide license and there is a set of discounts based on the number of developers actually using ALGLIB. For example, there are discounts for companies with 1, 3, 5 or 8 developers. Additional discounts are provided to companies from developing countries or companies which need only minor fraction of ALGLIB functionality. These discounts are applied at the moment of purchase and are not subject to recalculation/revocation in the future (except for the situation when you understand that you need more developers right after the purchase). We've discussed details of our new licensing/pricing model in our FAQ. Speaking short, we give discount for small companies, but we do not charge them when they begin to grow.

We hope that our new licensing model will make ALGLIB accessible both to small and large companies. In case you feel that your company needs special handling (i.e. some special kind of discount), feel free to contact us.


06.03.2011  ALGLIB 3.3.0 is released

New release of ALGLIB - now in five programming environments (C++, C#, CPython, IronPython, VB.NET). This release contains following improvements:


29.12.2010  ALGLIB for IronPython is released

We are ready to announce last release of the Release Month - ALGLIB for IronPython!

Similar to its CPython counterpart, ALGLIB for IronPython is a wrapper - but wrapper around computational core written in C#. ALGLIB for IronPython - is a 100% NET library, which includes only safe code and which is compatible with both 32-bit and 64-bit architectures. And, as far as we know, ALGLIB is a first major numerical analysis library, which is fully compatible with IronPython.

This release is the last one for 2010, and our Release Month is over. Good luck to all ALGLIB users in the upcoming 2011!


25.12.2010  One more release - ALGLIB for CPython

Release Month continues with one more branch of ALGLIB! ALGLIB for CPython is an automatically generated wrapper for computational core written in C++. This branch of ALGLIB combines performance of C++ with flexibility of Python.

One of the most interesting features of new ALGLIB is 100% compatibility with both branches of Python - 2.x and 3.x, which allows to use package with any version of interpreter since 2.5. It makes ALGLIB one of the few numerical packages which can be used with Python 3.

In order to achieve such portability, ALGLIB for CPython uses ctypes to access computational core, which is implemented as external shared library. As result, it can be used with CPython only - other implementations of Python don't support ctypes fully enough. However, Release Month is not over yet :) in a several days we will introduce one more version of ALGLIB, for one more programming language from (spoiler!) Python family.


23.12.2010  ALGLIB for VB.NET is released

New branch of ALGLIB is released - ALGLIB for VB.NET! From now - in open source and commercial editions.

ALGLIB for VB.NET is an automatically generate wrapper for ALGLIB for C#. All ALGLIB functionality can be accessed through one VB module - xalglib.vb, which automatically calls appropriate C# functions and converts data structures between VB.NET and C#. And you don't have to study C# in order to use ALGLIB and to setup C# compiler - C# computational core is distributed in the precompiled form (although you still have sources).


20.12.2010  ALGLIB 3.2.0 is released

We announce new version of ALGLIB - ALGLIB 3.2.0. This release includes many improvements and new algorithms:


31.10.2010  ALGLIB 3.1.0 is released

We are happy to announce new release - ALGLIB 3.1.0. This release includes following improvements:

We also significantly improved ALGLIB documentation, especially 'Optimization' è 'Interpolation' sections of ALGLIB User Guide. Many new examples were added, cross-links between ALGLIB User Guide and ALGLIB Reference Manual were implemented.


30.09.2010  Final release of ALGLIB 3.0.0 for C++ and C#

Final release of ALGLIB 3.0.0 is ready - both C++ and C# versions. This release contains some minor tweaks for better portability as well as some new functionality. We've fixed some minor bugs in ALGLIB 3.0.0.RC1 (and discovered some bugs in GCC and Sun Studio during our testing).

C# version features significant changes in the interface provided by the library. As with C++ version, 104 .cs files were merged into 12 packages. Function names were changed from alglib.classname.functionname to alglib.functionname. Inconvenient reverse communication interface used by optimizers and fitting functions was replaced by more convenient version which accepts delegates.

There is also new functionality in the ALGLIB 3.0 in comparison with Release Candidate 1: better step selection for CG-based algorithms, grid conversion and differentiation using cubic splines, internal sorting algorithm improvements.


01.09.2010  New release - ALGLIB 3.rc1 for C++

Totally new version of ALGLIB is released - ALGLIB 3.0.0.rc1. This new version contains several major changes which makes it very different from previous releases.

First, it contains many backward incompatible changes. Names/parameters of some functions were changed. Obsolete constructions which were there because of backward compatibility only are now gone. See Change Log for more information. Sounds complex? Not really - if you can compile your code with new ALGLIB, everything will work.

Second, there was major restructurization of code which was made after discussion with ALGLIB users. ALGLIB 2.6.0 contained 104 units, and our users find it inconvenient to have 104 files in their project. Now, in ALGLIB 3.x all units are merged into 12 packages with simple dependency structure. So you have to change names of headers/units you use.

Third, project idea was changed a bit. Before 3.x core concept was automatic translation from pseudocode to each of target languages. FreePascal ALGLIB was 100% FreePascal, VBA ALGLIB was 100% VBA. It was very beatiful idea, but the more we wanted from ALGLIB, the harder it was to implement it in all languages. So from 3.0 we've changed our focus from automatic translation to automatic interface generation. Automatic translation is still used, but we translate to several "rich" languages only: C, C++, C#, multiple precision C++. Other languages will get interface to precompiled C version.

Such large-scale changes need some time, so now we are only able to introduce C++ version. During September we will introduce C# (which is almost ready) and Python versions (former will be implemented in pure C#, while latter will be interface to precompiled C version). Python interface was announced long before this release. It was planned to be introduced in June, but because of switch to ALGLIB 3.x with its backward incompatible changeds we've decided to make it available after first 3.x release.

There is also new functionality in the ALGLIB 3.0: nonlinear solver, efficient restart functions for optimizers, improved error handling in many functions. Inconvenient reverse communication interface used by optimizers and fitting functions was replaced by more convenient version which accepts function pointers (however, you still can use reverse communication interface).


01.06.2010  ALGLIB 2.6.0 is released

New ALGLIB release features:

1. two bugfixes (see. Change Log).

2. improved spline interpolation algorithms: added support for Catmull-Rom spline; added support for periodic boundary conditions.

3. new algorithms for parametric spline interpolation in 2D and 3D are introduced. Two types of curves are supported: with non-periodic and periodic boundary conditions, i.e. open curves and loops.

Now several words about the future. New release of ALGLIB is almost the same as ALGLIB 2.5.0 - there were no new algorithms except for improved spline interpolation. The reason for this is active work under new extension of ALGLIB package - interface between ALGLIB and Python. Two interfaces are planned to be released - one for double precision ALGLIB, another for multiple precision ALGLIB. At least one of them should be ready in June, with another following several weeks later.


12.04.2010  ALGLIB 2.5.0 is released

New ALGLIB release features:

1. two bugfixes (see Change Log).

2. new optimization algorithms: nonlinear conjugate gradient method and active set algorithm for bound constrained optimization.

3. API of L-BFGS and Levenberg-Marquardt algorithms was slightly changed: see #0000326 and #0000327 for more info. These changes are backward incompatible. However, it should be easy to modify existing programs to work with new interface.


10.03.2010  ALGLIB 2.4.0 is released

1. New ALGLIB release contains improved versions of several linear algebra algorithms: QR decomposition, matrix inversion, condition number estimation.

2. New algorithms implemented: complex QR and LQ decompositions, condition number estimation for triangular matrices, exact and approximate nearest neighbor search using kd-trees, new multidimensional scattered data interpolation/fitting algorithm with O(N·logN) complexity (modified Shepard's method with fast k-NN queries).

3. Minor fixes in one of the units (see Change Log).


30.01.2010  ALGLIB 2.3.0 is released

1. New ALGLIB release features improved linear algebra subroutines (mostly in C++ version). Performance of C++ implementation of Level 1 BLAS was significantly improved. A number of cache oblivious Level 2 and Level 3 BLAS algorithms was implemented. Triangular factorization algorithms (LU decomposition and Cholesky decomposition) were rewritten in new cache-oblivious manner. Now they are relying on Level 3 ALGLIB BLAS and their performance was significantly improved. New condition number estimation algorithm is much more faster than the previous version (partly due to reduction of unnecessary matrix copying).

2. New algorithms were added: a set of linear solvers for real/complex/SPD/HPD matrices.

3. Minor fixes (see Change Log for more info).

Plans for the near future: improve performance of orthogonal factorization algorithms (QR/QL/LQ/RQ, bi/tridiagonal reduction) and rewrite them in cache-oblivious manner; further improve C++ version performance using SSE intrinsics.


18.01.2010  ALGLIB 2.2.1 is released

ALGLIB 2.2.1 is a small bugfix-only release. This release fixes incorrect assertion in minlm unit.


December, 2009. ALGLIB 2.2.0.

1. One of the most important changes is new script-based compilation/testing system. Now ALGLIB may be compiled using Bash-script build (or batch file with similar name - for Windows users). One more script - check - may be used to test ALGLIB (or individual units).

2. ALGLIB was tested under wide variety of platforms and compilers, package portability was significantly improved. As of December, 2009, ALGLIB was tested under x86 and x86_64, under Windows and Linux, with Microsoft compilers, GCC, Mono and FreePascal. More wide testing is expected - both with new compilers and new hardware/software platforms.

3. Now ALGLIB supports Pascal in two fashions - proprietary Delphi compiler and open-source FreePascal compiler. ALGLIB for FreePascal is a different set of source codes, which targets slightly different language standard (FPC default mode). Although there are minor issues with current FPC release, FreePascal looks like an interesting compiler to support because of its open sourceness and cross-platform capabilities.

4. A lot of sources introduced: new constrained/unconstrained linear least squares fitting codes, non-linear least squares fitting sources, rational/polynomial fitting in barycentric form, fitting by splines, high quality random number generator, random matrix generator. See http://bugs.alglib.net/changelog_page.php for complete list of changes.


October, 2009. ALGLIB 2.1.2.

ALGLIB 2.1.2 is another bugfix-only release. This release fixes compilation error under original (Linux) GCC and incorrect handling of near-underflow vectors by reflections unit.


September, 2009. ALGLIB 2.1.1.

ALGLIB 2.1.1 - is a minor update to ALGLIB 2.1.0, bugfix-only release. The only change is a bug in the neural networks package being fixed. Major improvements will wait till 2.2.0 release, which is expected to be released in November, 2009.


September, 2009. ALGLIB 2.1.0.

The most important in the version 2.1.0 is a change of license. The decision to change the license was not easy. The project was distributed under BSD for about two years. But over time it became clear that GPL is more suitable for further project development. So starting from version 2.1.0, ALGLIB is distributed under GPL 2+ (GPL version 2 or later). License change, of course, affects only 2.1.0 and following versions. Users of previous versions may continue to use ALGLIB and distribute derivative code under less strict, BSD-compatible terms.

About other changes:

Backward incompatible changes:

See bug tracker for more information on changes, roadmap - for more information on progress with next release.


July, 2009. ALGLIB 2.0.1.

ALGLIB 2.0.1 is a small bug fix release (see bug tracker for more information). The most important changes: improved performance of rational interpolation algorithm; improved compatibility with tools/compilers which checks for uninitialized variables. The next release is scheduled for August/September; new integration sources will be introduced as well as FFT/FHT/FST/FCT sources and fast convolution/correlation sources.


April, 2009. Site updates.

For a long time - almost a year - the project web-site has not been updated. Such a long break does not mean that the project development stopped. For most of the time we were actively developing new source codes. Now it's my pleasure to announce the following news to the ALGLIB users:

  1. A publicly available bug tracker that uses Mantis open-source software has been opened at bugs.alglib.net. At the moment the database is all but empty as earlier we registered bugs in a local software that doesn't allow for data to be transferred into Mantis.
  2. The 'Data Analysis' section has been opened. The topics of the section are: regression, classification and other ways of statistical data analysis. A range of algorithms has been implemented: linear and logit regression, random forests of decision trees, neural networks and ensembles of neural networks, linear discriminant analysis, principal component analysis method and k-means++ clustering algorithm.
  3. The Optimization section is redesigned. A new version of L-BFGS algorithm and an improved version of the Levenberg-Marquardt algorithm have been issued (the improved version dramatically exceeds the performance of the original algorithm). The new versions of algorithms use reverse communication to calculate the function/gradient values.
  4. A number of bugs have been eliminated and some minor improvements have been made. Their description can be found in the bug tracker.
  5. Several modules that are complicated to use (optimization, classification and regression) are now accompanied by examples. The online documentation contains references to the demonstration source codes in different languages. At the moment only the most complicated algorithms have examples. However, as the site develops it is planned to add them to all modules except those evident in usage.

Welcome the new ALGLIB 2.0!

Many ALGLIB users told us about their need to download all source codes in one zip archive. Also many users told us that absence of version numbers confuses them and prevents them from tracking changes in the projects. In fact, the project has been developing for a long time in a non-traditional way, as a collection of modules, where the users only chosen the ones they needed. This approach has its advantages, for instance, it allows for creation of compact programs. However there are drawbacks too: the changes in multitude of modules are very hard to track.

This is why the source code access mechanism was changed. Now users can download the entire project in a single zip archive, while still having the possibility to download modules one by one. Individual modules still don't have version numbers. However now the entire release has a number that changes with each alteration. The current version has the number 2.0.

Please note that the version numbers do not begin with 1 as the project has undergone a serious development since 1999, only a part of which was seen to English-speaking users (the project has been originally developed as a Russian language site). Version 2.0 contains all changes made to ALGLIB during the years.

A thought about the future...

Here I will set the priority tasks for the nearest future:


03 June, 2008. Last changes:


14 April, 2008. Last changes:


09 August, 2007. Last changes:

Future plans:


31 March, 2007. Last changes:

Future plans:


03 June, 2006. Welcome to the ALGLIB.NET website!

The main news for today is opening of the English-language version of the site, which you are visiting now. Nearly seven years ago, when this site only appeared, hardly anyone could imagine what this website will turn into, a number of years later. For this time, the website revealed only its best sides in the Russian segment of the global network. Now it is time to keep moving ahead. Due to the translation of this information into English, this site has become available to a larger amount of people than before. I hope that you will find all necessary information on this site and will come back for more!

Sergey Bochkanov, Author of ALGLIB.