# Source Files

FileDescription
common.fypp
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_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.

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.

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

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.

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

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.

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_save.fypp
stdlib_kinds.fypp
stdlib_linalg.fypp
stdlib_linalg_diag.fypp
stdlib_linalg_outer_product.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_optval.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.

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.

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.

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.

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