Features ======== PIC provides a comprehensive set of utilities for Fortran development. Core Modules ------------ Types (``pic_types``) ^^^^^^^^^^^^^^^^^^^^^ Portable kind definitions that work across all supported compilers: - ``default_int`` - Default integer kind (32 or 64-bit, compile-time configurable) - ``sp``, ``dp``, ``qp`` - Single, double, and quad precision real kinds - ``int8``, ``int16``, ``int32``, ``int64`` - Fixed-width integer kinds Strings (``pic_strings``, ``pic_string_type``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Comprehensive string handling: - Dynamic string type (``string_type``) - Conversion functions (``to_string``, ``to_lower``, ``to_upper``) - String manipulation utilities - ASCII character utilities (``pic_ascii``) Logger (``pic_logger``) ^^^^^^^^^^^^^^^^^^^^^^^ Logging utilities with multiple severity levels: - ``log_info`` - Informational messages - ``log_warning`` - Warning messages - ``log_error`` - Error messages - ``log_debug`` - Debug messages A pure logger variant (``pic_pure_logger``) is also available for use in pure procedures. Timer (``pic_timer``) ^^^^^^^^^^^^^^^^^^^^^ High-resolution timing utilities: - Start/stop timing - Elapsed time measurement - Support for nested timers Arrays (``pic_array``) ^^^^^^^^^^^^^^^^^^^^^^ Array utilities: - ``fill_vector`` - Fill arrays with values - Support for multiple data types and ranks - Optional OpenMP parallelization Sorting (``pic_sorting``) ^^^^^^^^^^^^^^^^^^^^^^^^^ Sorting algorithms that work across all compilers: - Multiple sorting algorithms - Support for various data types - Works where stdlib sorting may not compile Hash Functions (``pic_hash_32bit``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 32-bit hash functions: - FNV-1a hash implementation - General-purpose hashing utilities I/O (``pic_io``) ^^^^^^^^^^^^^^^^ Input/output utilities: - File handling helpers - Formatted output utilities Constants (``pic_constants``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Mathematical and physical constants in various precisions. Helpers (``pic_helpers``, ``pic_optional``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ General helper functions: - Optional argument handling - Common utility functions Command Line (``pic_command_line``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Command-line argument parsing utilities. Performance Modules ------------------- FLOP Recorder (``pic_flop_recorder``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Track floating-point operations in your code. FLOP Rate (``pic_flop_rate``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Measure FLOP rates for performance analysis. Knowledge Base (``pic_knowledge``) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Lore, akin to Fortune. Optional Features ----------------- These features require additional dependencies or compiler flags: OpenMP Support ^^^^^^^^^^^^^^ Enable with ``-DPIC_ENABLE_OMP=ON``. Provides parallel implementations of various operations.