ANN: Simple Components 4.74

The current version provides implementations of smart pointers, directed graphs, sets, maps, B-trees, stacks, tables, string editing, unbounded arrays, expression analyzers, lock-free data structures, synchronization primitives (events, race condition free pulse events, arrays of events, reentrant mutexes, deadlock-free arrays of mutexes), arbitrary precision arithmetic, pseudo-random non-repeating numbers, symmetric encoding and decoding, IEEE 754 representations support, streams, persistent storage, multiple connections server/client designing tools and protocols implementations.

https://www.dmitry-kazakov.de/ada/components.htm

The focus of this release is an implementation of arbitrary precision rational numbers. The difference to standard library Ada.Numerics.Big_Numbers.Big_Reals:

  • No limits, except for the pool size;
  • String edit packages representing a number in a usual form (with the specified accuracy) rather than as a numerator/denominator ratio;
  • An equivalent of Ada.Numerics.Elementary_Functions with rational approximations;
  • Simple continued fractions support.

Changes to the previous version:

  • The package Unbounded_Rationals provides an implementation of arbitrary precision rational numbers arithmetic;
  • The child package Unbounded_Rationals.Elementary_Functions provides approximations in rational numbers of some elementary, trigonometric and hyperbolic functions;
  • The package Strings_Edit.Unbounded_Rational_Edit provides string editing for arbitrary precision rational numbers;
  • The package Strings_Edit.Unbounded_Unsigned_Edit was optimized for better performance;
  • Mixed Unsigned_Integer to Integer operations were added to the package Unsigned_Integers;
  • The package Unbounded_Rationals.Continued_Fractions provides an implementation of simple continued fractions;
  • The package Strings_Edit.Continued_Fraction_Edit provides string editing for simple continued fractions;
  • Bug fixes in List_SetItem Python bindings;
  • Check_Error message in Python binding was improved, trace back output added;
  • Added higher level operations to create Python modules after initialization of the Python interpreter;
  • Added higher level operations to create Python classes AKA heap types after initialization;
  • An example of higher level module creation was provided;
  • An example of higher level class creation was provided;
  • IsInitialized function was added to Python bindings;
  • OSX project settings fixed.
9 Likes

I don’t know what I would do if Simple Components didn’t exist, thanks @dmitry-kazakov !

1 Like