Changelog#

Unreleased#

Changes to the existing modules

  • Preserve rectangular matrix dimensions in coo2dense and csr2dense. #1228

  • Change in module stdlib_intrinsics

    • Fix inverted MASK inclusion in stdlib_sum and stdlib_sum_kahan. Update masked Kahan sum and compensation only for selected elements.

  • Fixed declaration order in external BLAS/LAPACK interfaces for compilation with gfortran under -std=f2018 #1210

  • Change in module stdlib_system

    • Added set_environment_variable and delete_environment_variable #1187

Changes to the existing build system

  • Fixed absolute paths in generated pkg-config file for external BLAS/LAPACK #1109

Version 0.8.1#

Full release notes available at v0.8.1 tag.

Changes to the existing build system

  • Changes in the build system

    • Completed refactoring of stdlib into modular components using CMake #1098 #1100 #1102

    • Resolve race condition in parallel FYPP preprocessing #1103

Changes to the existing modules

  • Change in module stdlib_lingal_iterative_solvers

    • Remove pure attribute from stdlib_linop inner_product #1106

Changes to the existing documentation

  • Change in README

    • Addition of a DOI badge #1097

    • Update of the table with flags for modularizing stdlib #1098

Version 0.8.0#

Full release notes available at v0.8.0 tag.

Summary of the most relevant pull requests (more than 100 total)

  • changes in module stdlib_linalg and related

    • Matrix Inverse #828

    • Vector norms #871

    • Matrix norms #885

    • Cholesky factorization #840

    • QR factorization #832

    • Generalized eigenvalue problem #909

    • Moore-Penrose pseudo-inverse #899

    • Schur decomposition #892

    • Matrix exponential #1038

    • Hermitian matrices #896

    • Iterative solvers #994

    • Bi-conjugate gradient stabilized method #1034

    • Pivoting QR decomposition #1045

    • Equality-constrained least-squares solver #1046

    • Generalized lagtm routine with support for arbitrary alpha and beta #1068

  • changes in module stdlib_system

  • changes in module stdlib_math

    • Conversion functions: degrees-to-radians and vice versa #845

  • changes in module stdlib_intrinsics

    • Extended intrinsic matmul for additional flexibility #951

  • changes in module stdlib_io

  • changes in module stdlib_sorting

    • sort_index: use only int_index iterators #848

    • Addition of sort_adj #849

  • improvements and fixes to existing modules

    • Fixes for factorial results, warnings, argument alignment, etc. #876 #880 #879 #929

    • Fix sparse algebra support and examples #760 #928

  • changes in CI/CD configurations

  • build improvements

  • changes in documentation

    • Added tables summarizing preprocessing macros and flags #1083

    • Updated macOS architecture in README #1059

    • Added code coverage support #1039

Version 0.7.0#

Full release notes available at v0.7.0 tag.

  • new module stdlib_constants #800

    • Many mathematical constants and most common physical (codata) constants

Changes to existing scripts and modules

  • changes in CI

    • Use of fortran-setup for GCC, Intel LLVM and Intel Classic #834

  • change in module stdlib_hashmaps

    • Support of hash map key generic interfaces #827

  • changes in module stdlib_io

    • Addition of a Fortran format specifier in loadtxt #805

  • changes in module stdlib_linalg

    • Support of extended and quad precision checking #821

    • Several fixes #815 #818 #826 #830 #836

    • New procedures for Eigenvalues and Eigenvectors computation: eig, eigh, eigvals, eigvalsh #816

    • New procedures for Singular Value Decomposition: svd, svdvals #808

  • changes in module stdlib_sorting

    • Renamed variable from int_size to int_index #824

    • Support of int32 index array in sort_index #829

Version 0.6.1#

Full release notes available at v0.6.1 tag.

Changes to existing scripts and modules

  • changes in module stdlib_linalg_lapack

    • Renamed variable for compiler compliance #812

  • change of the format in some example programs #813

Version 0.6.0#

Full release notes available at v0.6.0 tag.

  • new script fypp_deployment.py to support fpm in combination with fypp files #802

Changes to existing scripts and modules

  • change in module stdlib_hashmap_wrappers

    • addition of int32 hashmap key type #778

  • changes in module stdlib_linalg

    • addition of the procedure det to compute determinants #798

    • addition of the procedures lstsq and lstsq_space #801 #809

    • addition of the procedures solve and solve_lu #806

  • change in module stdlib_linalg_blas

    • addition of the documentation for rotm and rotmg #795

  • use of macOS 12 in macOS CI #807

Changes to existing documentation

  • Improvement of the documentation linalg #797

Version 0.5.0#

Full release notes available at v0.5.0 tag.

  • new module stdlib_linalg_state #774

    • new derived type: linalg_state_type

    • new procedure: linalg_error_handling

Changes to existing scripts and modules

  • addition of implicit none to all example programs #780

  • change in module stdlib_hashmaps

    • fix the procedure remove_chaining_entry #788

  • change in module stdlib_linalg

    • addition of the BLAS/LAPACK backends and interfaces #772

  • change in module stdlib_str2num

    • fix the procedure to_${k1}$_from_stream #789

  • upgrade of the Intel-classic compiler in macOS CI #777

Changes to existing documentation

Version 0.4.0#

Full release notes available at v0.4.0 tag.

  • new module stdlib_str2num #743

    • new procedures: to_num, to_num_from_stream

Changes to existing scripts and modules

  • change in .gitignore

    • addition of the file extensions .dat and .stream #768

    • addition of .gitignore to stdlib-fpm #769

  • change in CI/CD

    • support of GCC 13 #737

    • support of Intel compiler ifx #752

  • change in script fpm-deployment.sh

    • changes to facilitate fypp preprocessing for the fpm deployment #758

  • change in module stdlib_ascii

    • Improved procedures to_lower and to_upper #733

  • change in module stdlib_bitsets

    • initialization in bitset_type #753

    • improved procedure bit_count_large #756

  • change in module stdlib_hashmaps

    • new procedure get_all_keys #741

    • new file permissions #762

  • change in module stdlib_math

    • new procedure meshgrid #764

  • change in module stdlib_specialfunctions_gamma

    • fix procedure gamma #730

  • change in module stdlib_string_type

  • change in SpookyV2Test.cpp

    • Fix undefined use of types #747

Changes to the existing documentation

  • change in the specs stdlib_hashmaps

    • Correction of an intent of the variable “conflict” #739

  • change in README.md

    • instructions to build stdlib with fpm through the fpm-deployment.sh script #757

Version 0.3.0#

Full release notes available at v0.3.0 tag.

  • new modules stdlib_hashmap_wrappers and stdlib_hashmap #611

    • new procedures in stdlib_hashmap_wrappers: copy_key, copy_other, fibonacci_hash, fnv_1_hasher, fnv_1a_hasher, free_key, free_other, get, hasher_fun, operator(==), seeded_nmhash32_hasher, seeded_nmhash32x_hasher, seeded_water_hasher, set, key_type, other_type

    • new procedures in stdlib_hashmaps: chaining_hashmap_type, hashmap_type, `open_hashmap_type

Changes to existing scripts and modules

  • change in script doc-deployment.yml

    • update of the script #681

  • change in script fpm-deployment.sh

    • fixed a problem with dat and npy files in example dir not being deployed #713

  • change in module stdlib_bitsets

    • remove define assignment for bitset_64 and bitset_large #727

  • change in module stdlib_hashmap_open

    • fix access violation in a type-bound procedure of open_hashmap_type #707

  • change in module stdlib_io_npy_load

  • change in module stdlib_linalg

    • addition of kronecker_product #700

  • change in module stdlib_quadrature_gauss

    • fix erroneous gaussian quadrature points in gauss_legendre #660

  • change in module stdlib_sorting

    • addition of radix sort #712

    • support for sorting arrays of bitset_64 and of bitset_large #723

  • change in module stdlib_stats_distribution_exponential

    • convert pdf_exp and cdf_exp to pure functions #717

  • change in module stdlib_stats_distribution_normal

    • convert rvs_norm to an impure elemental function #665

    • remove unused module stdlib_error from module stdlib_stats_distribution_normal #716

  • remove support for manual make builds #657

Changes to the existing documentation

  • change in README.md #656 #659 #715 #725

  • change in stdlib_stats_distribution_normal.md

    • Improvement of the documentation #718 #721

  • change in stdlib_stats_distribution_exponential.md

    • Improvement of the documentation #721

  • change in the structure of the project stdlib

    • extraction of the demo programs from the specs in the directory example #662

    • move the directory src/tests to test #669

  • fix various docs #663

Version 0.2.1#

Full release notes available at v0.2.1 tag.

  • build system related bugfixes

Version 0.2.0#

Full release notes available at v0.2.0 tag.

  • new module stdlib_hash_32bit #573

    • new procedures: fibonacci_hash, fnv_1_hash, fnv_1a_hash, new_nmhash32_seed, new_nmhash32x_seed, new_water_hash_seed, nmhash32, nmhash32x, odd_random_integer, universal_mult_hash, and water_hash

  • new module stdlib_hash_64bit #573

    • new procedures: fibonacci_hash, fnv_1_hash, fnv_1a_hash, new_pengy_hash_seed, new_spooky_hash_seed, odd_random_integer, pengy_hash, spooky_hash, spookyhash_128, and universal_mult_hash

  • new module stdlib_array #603

    • new procedures trueloc, falseloc

  • new module stdlib_distribution_uniform #272

  • new module stdlib_selection #500

    • new procedures select, arg_select

  • new module stdlib_version #579

    • new procedure get_stdlib_version

  • update module stdlib_io 597

    • new procedure getline

  • new module stdlib_io_npy #581

    • new procedures save_npy, load_npy

  • update module stdlib_math

    • new procedures is_close and all_close #488

    • new procedures arg, argd and argpi #498

    • new procedure diff #605

Changes to existing modules

  • change in module stdlib_math

    • linspace and logspace made pure #549

  • change in module stdlib_string_type

    • move procedure made pure/elemental #562

  • support for quadruple precision made optional #565

  • change in module stdlib_io

    • Modified format constants, and made public #617

  • change in module stdlib_math

    • Minor update to stdlib_math module and document #624

Version 0.1.0#

Full release notes available at v0.1.0 tag.

  • new module stdlib_ascii #32

  • new module stdlib_bitsets #239

    • new derived types bitset_64 and bitset_large

    • new abstract base class bitset_type

  • new module stdlib_error #53

  • new module stdlib_io

    • new procedures loadtxt and savetxt #23 #37

    • new procedure open #71 #77

  • new module stdlib_kinds #63

  • new module stdlib_linalg

    • new procedures diag, eye and trace #170

    • new procedure outer_product #432

  • new module stdlib_logger

    • new derived type logger_type #228 #261

  • new module stdlib_math

    • new procedure clip #355

    • new procedures linspace and logspace #420

    • new procedure arange #480

    • new procedure gcd #539

  • new module stdlib_optval #73 #96 #139

  • new module stdlib_quadrature

    • new procedures trapz, trapz_weights, simps and simps_weights #146

    • new procedures gauss_legendre, gauss_legendre_lobatto #313

  • new module stdlib_random #271

  • new module stdlib_sorting

    • new procedures sort, ord_sort and sort_index #408

  • new module stdlib_specialfunctions

    • new procedures legendre and dlegendre #313

  • new module stdlib_stats

  • new module stdlib_string_type

    • new derived types string_type #320

    • new procedure move #467

  • new module stdlib_stringlist_type

    • new derived types stringlist_type and stringlist_index_type #470

  • new module stdlib_strings

    • new procedure to_string #444

    • new procedures strip and chomp #343

    • new procedures starts_with and ends_with #384

    • new procedure slice #414

    • new procedure find #433

    • new procedure replace_all #436

    • new procedures padl and padr #441

    • new procedure count #453

  • new module stdlib_system

    • new procedure sleep #54