diff options
| author | PiJoules <6019989+PiJoules@users.noreply.github.com> | 2025-03-06 10:31:26 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-06 10:31:26 -0800 |
| commit | 1a09adae9ffc1267f79b6c9a656da38812bcbdff (patch) | |
| tree | 41d757885079a1ded03d87e5cd17e6bbbdbf9635 /libc/docs/headers/math | |
| parent | d10dca6ba73c057e7c24624cd62ada8d75ecfd46 (diff) | |
[libc] Add link to stdfix.h on headers page (#129138)
Co-authored-by: Petr Hosek <phosek@google.com>
Diffstat (limited to 'libc/docs/headers/math')
| -rw-r--r-- | libc/docs/headers/math/index.rst | 3 | ||||
| -rw-r--r-- | libc/docs/headers/math/stdfix.rst | 149 |
2 files changed, 1 insertions, 151 deletions
diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst index 3010f9457ae1..5b855ce4881c 100644 --- a/libc/docs/headers/math/index.rst +++ b/libc/docs/headers/math/index.rst @@ -16,7 +16,6 @@ math.h :hidden: log.rst - stdfix.rst .. contents:: Table of Contents @@ -446,7 +445,7 @@ Algorithms + Implementation Details Fixed-point Arithmetics ======================= -* :doc:`stdfix` +* :doc:`../stdfix` References ========== diff --git a/libc/docs/headers/math/stdfix.rst b/libc/docs/headers/math/stdfix.rst deleted file mode 100644 index 3b93f29a4abd..000000000000 --- a/libc/docs/headers/math/stdfix.rst +++ /dev/null @@ -1,149 +0,0 @@ -================ -StdFix Functions -================ - -.. include:: ../../check.rst - -Standards and Goals -------------------- - -- stdfix.h is specified in the `ISO/IEC TR 18037:2008 <https://www.iso.org/standard/51126.html>`_, - C extensions to support embedded processors . - -- Its `specifications <https://standards.iso.org/ittf/PubliclyAvailableStandards/c051126_ISO_IEC_TR_18037_2008.zip>`_. - -- Our goal is to implement a complete set of math functions for fixed point - types, most of them are currently not included in the ISO/IEC TR - 18037:2008 standard. Our math functions for fixed point types are modeled - after the C99/C23 math functions for floating point types. - ---------------- -Source location ---------------- - -- The main source for fixed-point functions is located at: - ``libc/src/stdfix`` with subdirectories for internal implementations. - ---------------------- -Implementation Status ---------------------- - -Requirements -============ - -- In order to build LLVM libc to support fixed-point arithmetics, we need the - compiler to support the basic fixed-point types `_Fract` and `_Accum` in - C++. - -- For the users to be able to use the generated headers, their compiler needs - to support `_Fract` and `_Accum` types in C or C++. - -- This compiler support is checked at the beginning of - `libc/include/llvm-libc-macros/stdfix-macros.h <https://github.com/llvm/llvm-project/tree/main/libc/include/llvm-libc-macros/stdfix-macros.h>`_. - - - -Predefined Macros -================= - -- We use the macro `LIBC_COMPILER_HAS_FIXED_POINT` to specify whether the - compiler support the fixed-point types. - -- Other predefined precision macros specified in section 7.18a.3 are defined - in `libc/include/llvm-libc-macros/stdfix-macros.h <https://github.com/llvm/llvm-project/tree/main/libc/include/llvm-libc-macros/stdfix-macros.h>`_ - using the default configuration of `typical desktop processor` in section - A.3. - - -Fixed-point Arithmetics -======================= - -The following functions are included in the ISO/IEC TR 18037:2008 standard. - -+---------------+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ -| Function Name | _Fract (r) | _Accum (k) | -| +------------------------------+----------------------------+------------------------------+------------------------------+----------------------------+------------------------------+ -| | short (hr) | _ (r) | long (lr) | short (hk) | _ (k) | long (lk) | -| +----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| | unsigned (uhr) | signed (hr) | unsigned (ur) | signed (r) | unsigned (ulr) | signed (lr) | unsigned (uhk) | signed (hk) | unsigned (uk) | signed (k) | unsigned (ulk) | signed (lk) | -+===============+================+=============+===============+============+================+=============+================+=============+===============+============+================+=============+ -| abs | | |check| | | |check| | | |check| | | |check| | | |check| | | |check| | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| bits\* | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| \*bits | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| countls | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| divi\* | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| idiv\* | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| muli | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| \*divi | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| round | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | |check| | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ - -================== ========= -Type Generic Macro Available -================== ========= -absfx -countlsfx -roundfx -================== ========= - - -Higher math functions -===================== - -The following math functions are modeled after C99/C23 math functions for -floating point types, but are not part of the ISO/IEC TR 18037:2008 spec. - -+---------------+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ -| Function Name | _Fract (r) | _Accum (k) | -| +------------------------------+----------------------------+------------------------------+------------------------------+----------------------------+------------------------------+ -| | short (hr) | _ (r) | long (lr) | short (hk) | _ (k) | long (lk) | -| +----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| | unsigned (uhr) | signed (hr) | unsigned (ur) | signed (r) | unsigned (ulr) | signed (lr) | unsigned (uhk) | signed (hk) | unsigned (uk) | signed (k) | unsigned (ulk) | signed (lk) | -+===============+================+=============+===============+============+================+=============+================+=============+===============+============+================+=============+ -| cos | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| exp | | | | | | | | |check| | | |check| | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| log | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| sin | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| sqrt | |check| | | |check| | | |check| | | |check| | | |check| | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| tan | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ - - -Conversion Functions -==================== - -The following conversion functions are included in the ISO/IEC TR 18037:2008 -standard. - -+---------------+------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------+ -| Function Name | _Fract (r) | _Accum (k) | -| +------------------------------+----------------------------+------------------------------+------------------------------+----------------------------+------------------------------+ -| | short (hr) | _ (r) | long (lr) | short (hk) | _ (k) | long (lk) | -| +----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| | unsigned (uhr) | signed (hr) | unsigned (ur) | signed (r) | unsigned (ulr) | signed (lr) | unsigned (uhk) | signed (hk) | unsigned (uk) | signed (k) | unsigned (ulk) | signed (lk) | -+===============+================+=============+===============+============+================+=============+================+=============+===============+============+================+=============+ -| fprintf | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| fscanf | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ -| strtofx | | | | | | | | | | | | | -+---------------+----------------+-------------+---------------+------------+----------------+-------------+----------------+-------------+---------------+------------+----------------+-------------+ - - -Warnings -======== - -This is currently a work-in-progress, its headers, macros, and ABI are still unstable, and might be modified. |
