rippled
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Attributes | List of all members
ripple::QualityFunction Class Reference

Average quality of a path as a function of out: q(out) = m * out + b, where m = -1 / poolGets, b = poolPays / poolGets. More...

#include <QualityFunction.h>

Collaboration diagram for ripple::QualityFunction:
Collaboration graph
[legend]

Classes

struct  AMMTag
 
struct  CLOBLikeTag
 

Public Member Functions

 QualityFunction (Quality const &quality, CLOBLikeTag)
 
template<typename TIn , typename TOut >
 QualityFunction (TAmounts< TIn, TOut > const &amounts, std::uint32_t tfee, AMMTag)
 
void combine (QualityFunction const &qf)
 Combines QF with the next step QF.
 
std::optional< NumberoutFromAvgQ (Quality const &quality)
 Find output to produce the requested average quality.
 
bool isConst () const
 Return true if the quality function is constant.
 
std::optional< Quality > const & quality () const
 

Private Attributes

Number m_
 
Number b_
 
std::optional< Quality > quality_
 

Detailed Description

Average quality of a path as a function of out: q(out) = m * out + b, where m = -1 / poolGets, b = poolPays / poolGets.

If CLOB offer then m is equal to 0 b is equal to the offer's quality. The function is derived by substituting in in q = out / in with the swap out formula for in: in = [(poolGets * poolPays) / (poolGets - out) - poolPays] / (1 - tfee) and combining the function for multiple steps. The function is used to limit required output amount when quality limit is provided in one path optimization.

Definition at line 39 of file QualityFunction.h.

Constructor & Destructor Documentation

◆ QualityFunction() [1/2]

ripple::QualityFunction::QualityFunction ( Quality const &  quality,
QualityFunction::CLOBLikeTag   
)

Definition at line 31 of file QualityFunction.cpp.

◆ QualityFunction() [2/2]

template<typename TIn , typename TOut >
ripple::QualityFunction::QualityFunction ( TAmounts< TIn, TOut > const &  amounts,
std::uint32_t  tfee,
QualityFunction::AMMTag   
)

Definition at line 93 of file QualityFunction.h.

Member Function Documentation

◆ combine()

void ripple::QualityFunction::combine ( QualityFunction const &  qf)

Combines QF with the next step QF.

Definition at line 42 of file QualityFunction.cpp.

◆ outFromAvgQ()

std::optional< Number > ripple::QualityFunction::outFromAvgQ ( Quality const &  quality)

Find output to produce the requested average quality.

Parameters
qualityrequested average quality (quality limit)

Definition at line 51 of file QualityFunction.cpp.

◆ isConst()

bool ripple::QualityFunction::isConst ( ) const

Return true if the quality function is constant.

Definition at line 80 of file QualityFunction.h.

◆ quality()

std::optional< Quality > const & ripple::QualityFunction::quality ( ) const

Definition at line 86 of file QualityFunction.h.

Member Data Documentation

◆ m_

Number ripple::QualityFunction::m_
private

Definition at line 43 of file QualityFunction.h.

◆ b_

Number ripple::QualityFunction::b_
private

Definition at line 45 of file QualityFunction.h.

◆ quality_

std::optional<Quality> ripple::QualityFunction::quality_
private

Definition at line 47 of file QualityFunction.h.