Boost your productivity with TMS components & RAD Studio 10.2 Tokyo

Thursday, March 23, 2017

Yesterday Embarcadero released Delphi, C++Builder and RAD Studio 10.2 Tokyo:

For our registered users, already several products are ready for this new RAD Studio version! So get started today with your Windows or cross-platform development in 10.2 Tokyo with TMS VCL, FMX and FNC components.

TMS rollout of components with RAD Studio 10.2 Tokyo support:

  VCL Windows application development
  FMX cross-platform application development
  FNC cross-platform & cross-framework application development
  Developer tools for Delphi developers
Our team is working hard to continue to add RAD Studio 10.2 Tokyo support to our other wide range of component products. You can track here the progress of our work to cover other products. For trial users, RAD Studio 10.2 Tokyo support will follow soon.

Nancy Lescouhier


This blog post has not received any comments yet. Add a comment.

Introducing functional derivatives is easy

Monday, March 20, 2017

The unique feature of Analytics library is symbolic derivatives calculation. The library provides the simplest way to get a symbolic derivative expression for almost any complicated expression. There are predefined derivative for all standard functions: trigonometric, hyperbolic, logarithmic and exponential, inverse trigonometric and hyperbolic, and other.

Another fine thing is that any developer can easily define derivative for any other function. Let us consider how to define derivative for special Gamma function ( Its derivative is defined via another special function – Digamma (Polygamma function of order 0, Hereafter the Gamma function denoted as ‘G’ and the Digamma (and Polygamma) as ‘Y’. Then, the derivative formula is: d(G(x))/dx = G(x)*Y(x).

To introduce new functional derivative new class must be implemented. In our case, the class is inherited from ‘TSimpleFunctionalDerivative’ because the function has one argument only. Here is the code of the realized class:

TGammaDerivative = class sealed(TSimpleFunctionalDerivative)
  function GetFunctionName(): string; override;
  function BaseDerivative(argument: TBaseExpression): TBaseExpression; override;
  class function IsRealized: boolean; override;

function TGammaDerivative.GetFunctionName: string;
  result:= 'G';

class function TGammaDerivative.IsRealized: boolean;
  result:= true;

function TGammaDerivative.BaseDerivative(argument: TBaseExpression): TBaseExpression;
  ge: TBaseExpression;
  dge: TBaseExpression;
  ge:= TFunctionExpression.CreateSimple('G', argument);
  dge:= TFunctionExpression.CreateSimple('Y', argument);

  result:= TProductExpression.MakeProduct(ge, dge);
As can be seen from the code, there are only three methods to override. The GetFunctionName method defines that the derivative is for function with name ‘G’. The IsRealized functions returns ‘true’, that means the class is totally realized and can be used by the Analytics system. And the last method defines the derivation algorithm itself. Namely, it creates the Gamma and Digamma functions with the same argument and, according to the derivative formula above, their product.

Now we can calculate derivatives for expressions with the Gamma function. For the simplest case with input string ‘G(x)’ we get the expected output string ‘G(x)*Y(x)’. No surprise here, because we just wrote the code, which produces the output.

But the amazing thing is when we trying to calculate the derivative expression for the Gamma function with a composite argument. As example, for the input string ‘G(x^2+1)’ it produces the output string ‘(G(x^2+1)*Y(x^2+1))*(2*x)’ which is totally correct for this case. And the output is correct for all the expressions with the Gamma function. It is because the Analytics library cares about other things, like implementing the ‘chain rule’ for derivation process.

The source code of the example project is available here.

Nancy Lescouhier


This blog post has not received any comments yet. Add a comment.

My Top 10 Aurelius Features - #1 Maturity

Sunday, March 19, 2017

Finally, My Top 10 Aurelius Features series has come to an end. And the number 1 of the list is Maturity.

Aurelius has been first released in early 2012. Since then, in five years, it has received 33 releases! With the user feedback received during all the time, I’m confident that Aurelius feature set is pretty extensive.

For example, you can build applications for all supported Delphi platforms: Windows, Mac OS X, iOS, Android and Linux. The number of supported database systems is impressive: Oracle, MySQL, SQL Server, PostgreSQL, DB2, Firebird, SQLite, NexusDB, ElevateDB and the list goes on. The same can be said about the component libraries you can use to access the database: the list of 15 options include FireDac, dbExpress, ADO, UniDac, among others.

Maturity also means that you can trust it, because it just works. Aurelius test suite includes hundreds of unique tests, which makes up thousands of tests because we make sure that they work in all the supported platforms and servers. This means that you can be sure it will work on Windows, using dbExpress to access an Oracle database, the same way it will work on Linux, using FireDac to access a MySQL database.

In the end, why I really like this maturity feature? Because it makes my life easier and happier. Lower support because there are no known bugs that stand for too long. And happier customers because they have the features they need.

We’d love to hear your comments about it. Do you agree with this list? What would be yours? Post your opinions and comments below, visit our website, download TMS Aurelius trial and let us know what you think. Don't forget to subscribe to our YouTube channel to get notified about upcoming videos!

Wagner R. Landgraf


This blog post has not received any comments yet. Add a comment.

One picture is worth a thousand words.

Friday, March 10, 2017

Nancy Lescouhier


This blog post has received 8 comments. Add a comment.

Previous  |  Next  |  Index