Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Functions
exact_rational.hpp File Reference
#include "precision.hpp"
#include <charconv>
#include <concepts>
#include <gmp.h>
#include <limits>
#include <optional>
#include <string>
#include <string_view>
#include <type_traits>
#include <utility>
Include dependency graph for exact_rational.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  uni20::decimal_literal
 A precisionless decimal spelling produced by the _mp literal operator. More...
 
class  uni20::exact_rational
 Owning arbitrary-size rational with exact, eager arithmetic. More...
 

Namespaces

namespace  uni20
 
namespace  uni20::literals
 

Concepts

concept  uni20::ExactRationalSource
 Exact numeric sources accepted without an approximation precision.
 

Functions

constexpr decimal_literal uni20::literals::operator""_mp (char const *text)
 Preserve decimal source digits without conversion through a machine float.
 
exact_rational uni20::operator* (exact_rational const &a, exact_rational const &b)
 
exact_rational uni20::operator+ (exact_rational const &a)
 
exact_rational uni20::operator+ (exact_rational const &a, exact_rational const &b)
 
exact_rational uni20::operator- (exact_rational const &a)
 
exact_rational uni20::operator- (exact_rational const &a, exact_rational const &b)
 
exact_rational uni20::operator/ (exact_rational const &a, exact_rational const &b)
 
std::strong_ordering uni20::operator<=> (exact_rational const &a, exact_rational const &b)
 
bool uni20::operator== (exact_rational const &a, exact_rational const &b)
 
template<class X , class Y >
requires ((std::same_as<X, exact_rational> || std::same_as<X, decimal_literal>) && (std::same_as<Y, exact_rational> || std::same_as<Y, decimal_literal>))
exact_rational uni20::pow (X const &base, Y const &power)
 Evaluate a rational power exactly when its real result is rational.
 
std::optional< exact_rational > uni20::rational_root (exact_rational const &x, unsigned long degree)
 Return a rational nth root when it exists, without choosing a precision.
 
template<class X >
requires (std::same_as<X, exact_rational> || std::same_as<X, decimal_literal>)
exact_rational uni20::sqrt (X const &value)
 Return the nonnegative rational square root, or require finite precision.