libfxd 0.2.dev
A fixed-point library for C++.
|
#include <compare>
#include <concepts>
#include <ostream>
#include <istream>
#include "concepts.hpp"
#include "limits.hpp"
#include "round-div.hpp"
#include "round-mul.hpp"
#include "traits.hpp"
Go to the source code of this file.
Namespaces | |
namespace | fxd |
This is the namespace where the entire library is defined. | |
Functions | |
template<fixed_point Fxd, std::convertible_to< Fxd > T> | |
constexpr Fxd & | operator+= (Fxd &a, T b) noexcept |
In-place addition. | |
template<fixed_point Fxd, std::convertible_to< Fxd > T> | |
constexpr Fxd & | operator-= (Fxd &a, T b) noexcept |
In-place subtraction. | |
template<fixed_point Fxd, std::convertible_to< Fxd > T> requires (!std::integral<T>) | |
constexpr Fxd & | operator*= (Fxd &a, T b) noexcept |
In-place multiplication. | |
template<fixed_point Fxd, std::integral I> | |
constexpr Fxd & | operator*= (Fxd &a, I b) noexcept |
In-place multiplication by integer. | |
template<fixed_point Fxd, std::convertible_to< Fxd > T> requires (!std::integral<T>) | |
constexpr Fxd & | operator/= (Fxd &a, T b) noexcept |
In-place division. | |
template<fixed_point Fxd, std::integral I> | |
constexpr Fxd & | operator/= (Fxd &a, I b) noexcept |
In-place division by integer. | |
template<fixed_point Fxd> | |
constexpr Fxd & | operator++ (Fxd &a) noexcept |
Pre-increment. | |
template<fixed_point Fxd> | |
constexpr Fxd & | operator-- (Fxd &a) noexcept |
Pre-decrement. | |
template<fixed_point Fxd> | |
constexpr Fxd | operator++ (Fxd &a, int) noexcept |
Post-increment. | |
template<fixed_point Fxd> | |
constexpr Fxd | operator-- (Fxd &a, int) noexcept |
Post-decrement. | |
template<fixed_point Fxd> | |
constexpr Fxd | operator+ (Fxd a) noexcept |
Unary + . | |
template<fixed_point Fxd> | |
constexpr Fxd | operator- (Fxd a) noexcept |
Negation. | |
template<typename A , typename B > requires (fixed_point<A> || fixed_point<B>) | |
constexpr std::common_type_t< A, B > | operator+ (A a, B b) noexcept |
Addition. | |
template<typename A , typename B > requires (fixed_point<A> || fixed_point<B>) | |
constexpr std::common_type_t< A, B > | operator- (A a, B b) noexcept |
Subtraction. | |
template<fixed_point A, fixed_point B> | |
constexpr std::common_type_t< A, B > | operator* (A a, B b) noexcept |
Multiply: fxd::fixed * fxd::fixed | |
template<fixed_point Fxd, std::integral I> | |
constexpr Fxd | operator* (Fxd a, I b) noexcept |
Multiply: fxd::fixed * integer. | |
template<std::integral I, fixed_point Fxd> | |
constexpr Fxd | operator* (I a, Fxd b) noexcept |
Multiply: integer * fxd::fixed | |
template<fixed_point Fxd, std::floating_point Flt> | |
constexpr Fxd | operator* (Fxd a, Flt b) noexcept |
Multiply: fxd::fixed * floating-point | |
template<std::floating_point Flt, fixed_point Fxd> | |
constexpr Fxd | operator* (Flt a, Fxd b) noexcept |
Multiply: floating-point * fxd::fixed | |
template<fixed_point A, fixed_point B> | |
constexpr std::common_type_t< A, B > | operator/ (A a, B b) noexcept |
Divide: fxd::fixed / fxd::fixed | |
template<fixed_point Fxd, std::integral I> | |
constexpr Fxd | operator/ (Fxd a, I b) noexcept |
Divide: fxd::fixed / integer. | |
template<std::integral I, fixed_point Fxd> | |
constexpr Fxd | operator/ (I a, Fxd b) noexcept |
Divide: integer / fxd::fixed | |
template<fixed_point Fxd, std::floating_point Flt> | |
constexpr Fxd | operator/ (Fxd a, Flt b) noexcept |
Divide: fxd::fixed / floating-point | |
template<std::floating_point Flt, fixed_point Fxd> | |
constexpr Fxd | operator/ (Flt a, Fxd b) noexcept |
Divide: floating-point / fxd::fixed . | |
template<typename CharT , typename Traits , fixed_point Fxd> | |
std::basic_ostream< CharT, Traits > & | operator<< (std::basic_ostream< CharT, Traits > &out, Fxd f) |
Output (by converting to a floating-point value). | |
template<typename CharT , typename Traits , fixed_point Fxd> | |
std::basic_istream< CharT, Traits > & | operator>> (std::basic_istream< CharT, Traits > &in, Fxd &f) |
Input (by converting from a floatiung-point value). | |