Source Files

FileDescription
f08estop.f90
f18estop.f90
stdlib_ansi.f90
stdlib_ansi_operator.f90
stdlib_ansi_to_string.f90
stdlib_array.f90
stdlib_ascii.fypp
stdlib_bitsets.fypp
stdlib_bitsets_64.fypp
stdlib_bitsets_large.fypp
stdlib_codata.f90
stdlib_codata_type.fypp
stdlib_constants.fypp
stdlib_error.f90
stdlib_hash_32bit.fypp
stdlib_hash_32bit_fnv.fypp

FNV_1_HASH and FNV_1A_Hash are translations to Fortran 2008 of the FNV-1 and FNV-1a hash functions of Glenn Fowler, Landon Curt Noll, and Phong Vo, that has been released into the public domain. Permission has been granted, by Landon Curt Noll, for the use of these algorithms in the Fortran Standard Library. A description of these functions is available at https://en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function.

Read more…
stdlib_hash_32bit_nm.fypp

NM_HASH32 and NM_HASH32X are translations to Fortran 2008 and signed two's complement arithmetic of the nmhash32 and nmhash32x scalar algorithms of James Z. M. Gao, copyright 2021. James Z. M. Gao's original C++ code, nmhash.h, is available at the URL: https://github.com/gzm55/hash-garage/blob/a8913138bdb3b7539c202edee30a7f0794bbd835/nmhash.h under the BSD 2-Clause License: https://github.com/gzm55/hash-garage/blob/a8913138bdb3b7539c202edee30a7f0794bbd835/LICENSE The algorithms come in multiple versions, depending on whether the vectorized instructions SSE2 or AVX2 are available. As neither instruction is available in portable Fortran 2008, the algorithms that do not use these instructions are used.

Read more…
stdlib_hash_32bit_water.fypp

WATER_HASH is a translation to Fortran 2008 of the waterhash algorithm of Tommy Ettinger. Tommy Ettinger's original C++ code, waterhash.h, is available at the URL: https://github.com/tommyettinger/waterhash under the unlicense, https://github.com/tommyettinger/waterhash/blob/master/LICENSE. "waterhash is a variant on Wang Yi's wyhash, with 32 bit output, using at most 64 bit arithmetic. wyhash is available at the URL: https://github.com/wangyi-fudan/wyhash also under the unlicense: https://github.com/wangyi-fudan/wyhash/blob/master/LICENSE. Original Author: Wang Yi godspeed_china@yeah.net Waterhash Variant Author: Tommy Ettinger tommy.ettinger@gmail.com

Read more…
stdlib_hash_64bit.fypp
stdlib_hash_64bit_fnv.fypp

FNV_1_HASH and FNV_1A_HASH are translations to Fortran 2008 of the FNV-1 and FNV-1a hash functions of Glenn Fowler, Landon Curt Noll, and Phong Vo, that has been released into the public domain. Permission has been granted, by Landon Curt Noll, for the use of these algorithms in the Fortran Standard Library. A description of these functions is available at https://en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function. The functions have been modified from their normal form to also encode the size of the structure in the hash.

Read more…
stdlib_hash_64bit_pengy.fypp

PENGY_HASH is a translation to Fortran 2008 and signed two's complement arithmetic of the pengyhash algorithm of Alberto Fajardo, copyright 2020. Alberto Fajardo's original C code, pengyhash.c, is available at the URL: https://github.com/tinypeng/pengyhash/blob/master/pengyhash.c under the BSD 2-Clause License: https://github.com/tinypeng/pengyhash/blob/master/LICENSE

Read more…
stdlib_hash_64bit_spookyv2.fypp

SPOOKY_HASH is a translation to Fortran 2008 of the unsigned 64 bit SpookyHash V2 function of Bob Jenkins https://burtleburtle.net/bob/hash/spooky.html to signed 64 bit operations. Bob Jenkins has put his code in the public domain and has given permission to treat this code as public domain in the USA, provided the code can be used under other licenses and he is given appropriate credit. The code was designed for Little-Endian processors. The output is different on Big Endian processors, but still probably as good quality.

Read more…
stdlib_hashmap_chaining.f90

The module STDLIB_HASHMAP_CHAINING implements a simple separate chaining hash map. The implementation is loosely based on a C implementation by David Chase, http://chasewoerner.org/src/hasht/, for which he has given permission to use in the Fortran Standard Library.

stdlib_hashmap_open.f90

The module, STDLIB_HASHMAP_OPEN implements a simple open addressing hash map using linear addressing. The implementation is loosely based on a C implementation by David Chase, http://chasewoerner.org/src/hasht/, for which he has given permission to use in the Fortran Standard Library.

stdlib_hashmap_wrappers.f90

The module STDLIB_HASHMAP_WRAPPERS provides wrappers for various entities used by the hash map procedures. These include wrappers for the key and other data, and hashing procedures to operate on entities of the key_type.

stdlib_hashmaps.f90

The module, STDLIB_HASH_MAPS, implements two hash maps: CHAINING_HASH_MAP_TYPE, a separate chaining hash map; and OPEN_HASH_MAP_TYPE, an open addressing hash map using linear addressing. The two hash maps are implementations of the abstract type, HASH_MAP_TYPE.

stdlib_io.fypp
stdlib_io_npy.fypp
stdlib_io_npy_load.fypp
stdlib_io_npy_save.fypp
stdlib_kinds.fypp
stdlib_linalg.fypp
stdlib_linalg_blas.fypp
stdlib_linalg_blas_aux.fypp
stdlib_linalg_blas_c.fypp
stdlib_linalg_blas_d.fypp
stdlib_linalg_blas_q.fypp
stdlib_linalg_blas_s.fypp
stdlib_linalg_blas_w.fypp
stdlib_linalg_blas_z.fypp
stdlib_linalg_cholesky.fypp
stdlib_linalg_constants.fypp
stdlib_linalg_cross_product.fypp
stdlib_linalg_determinant.fypp
stdlib_linalg_diag.fypp
stdlib_linalg_eigenvalues.fypp
stdlib_linalg_inverse.fypp
stdlib_linalg_kronecker.fypp
stdlib_linalg_least_squares.fypp
stdlib_linalg_norms.fypp
stdlib_linalg_outer_product.fypp
stdlib_linalg_qr.fypp
stdlib_linalg_solve.fypp
stdlib_linalg_state.fypp
stdlib_linalg_svd.fypp
stdlib_logger.f90
stdlib_math.fypp
stdlib_math_all_close.fypp
stdlib_math_arange.fypp
stdlib_math_diff.fypp
stdlib_math_is_close.fypp
stdlib_math_linspace.fypp
stdlib_math_logspace.fypp
stdlib_math_meshgrid.fypp
stdlib_optval.fypp
stdlib_quadrature.fypp
stdlib_quadrature_gauss.f90
stdlib_quadrature_simps.fypp
stdlib_quadrature_trapz.fypp
stdlib_random.fypp
stdlib_selection.fypp
stdlib_sorting.fypp

This file is subject both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
stdlib_sorting_ord_sort.fypp

This file is subjec† both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
stdlib_sorting_radix_sort.f90
stdlib_sorting_sort.fypp

This file is subjec† both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
stdlib_sorting_sort_index.fypp

This file is subjec† both to the Fortran Standard Library license, and to additional licensing requirements as it contains translations of other software.

Read more…
stdlib_sparse.f90

public API

stdlib_sparse_constants.fypp
stdlib_sparse_conversion.fypp

The stdlib_sparse_conversion submodule provides sparse to sparse matrix conversion utilities.

stdlib_sparse_kinds.fypp

The stdlib_sparse_kinds module provides derived type definitions for different sparse matrices

stdlib_sparse_spmv.fypp

The stdlib_sparse_spmv submodule provides matrix-vector product kernels.

stdlib_specialfunctions.f90
stdlib_specialfunctions_gamma.fypp
stdlib_specialfunctions_legendre.f90
stdlib_stats.fypp
stdlib_stats_corr.fypp
stdlib_stats_cov.fypp
stdlib_stats_distribution_exponential.fypp
stdlib_stats_distribution_normal.fypp
stdlib_stats_distribution_uniform.fypp
stdlib_stats_mean.fypp
stdlib_stats_median.fypp
stdlib_stats_moment.fypp
stdlib_stats_moment_all.fypp
stdlib_stats_moment_mask.fypp
stdlib_stats_moment_scalar.fypp
stdlib_stats_var.fypp
stdlib_str2num.fypp
stdlib_string_type.fypp
stdlib_string_type_constructor.fypp
stdlib_stringlist_type.f90
stdlib_strings.fypp
stdlib_strings_to_string.fypp
stdlib_version.fypp