YSTest: ystdex::fixed_point< _tBase, _vInt, _vFrac > 模板类 参考

YSTest PreAlpha_b400_20130424 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 类列表
- 类索引
- 类继承关系
- 类成员

全部 类 命名空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义 组 页
Public 类型 | Public 成员函数 | 静态 Public 成员函数 | 静态 Public 属性 | Private 类型 | Private 成员函数 | Private 属性 | 友元 | 所有成员列表
ystdex::fixed_point< _tBase, _vInt, _vFrac > 模板类 参考

通用定点数。 更多...

`#include <rational.hpp>`

类 ystdex::fixed_point< _tBase, _vInt, _vFrac > 继承关系图:
[图例]
ystdex::fixed_point< _tBase, _vInt, _vFrac > 的协作图:
[图例]

## Public 类型

typedef _tBase | base_type

## Public 成员函数

| fixed_point () ynoexcept
| 无参数构造。
template<typename _tInt >
| fixed_point (_tInt val, typename std::enable_if< std::is_integral< _tInt >::value, int >::type=0) ynoexcept
template<typename _tFloat >
| fixed_point (_tFloat val, typename std::enable_if< std::is_floating_point< _tFloat >::value, int >::type=0) ynoexcept
| fixed_point (const fixed_point &)=default
template<size_t _vOtherInt, size_t _vOtherFrac>
| fixed_point (const fixed_point< base_type, _vOtherInt, _vOtherFrac > &f, typename std::enable_if<(_vOtherInt< int_bit_n), int >::type=0) ynoexcept
template<size_t _vOtherInt, size_t _vOtherFrac>
| fixed_point (const fixed_point< base_type, _vOtherInt, _vOtherFrac > &f, typename std::enable_if<(int_bit_n< _vOtherInt), int >::type=0) ynoexcept
bool | operator< (const fixed_point &f) const ynoexcept
bool | operator== (const fixed_point &f) const ynoexcept
bool | operator! () const ynoexcept
fixed_point | operator- () const ynoexcept
fixed_point & | operator++ () ynoexcept
fixed_point & | operator-- () ynoexcept
fixed_point & | operator+= (const fixed_point &f) ynoexcept
fixed_point & | operator-= (const fixed_point &f) ynoexcept
fixed_point & | operator*= (const fixed_point &f) ynoexcept
fixed_point & | operator/= (const fixed_point &f) ynoexcept
fixed_point & | operator>>= (size_t s) ynoexcept
fixed_point & | operator<<= (size_t s) ynoexcept
template<typename _type >
| operator _type () const

## 静态 Public 成员函数

static base_type | base_element () ynoexcept
| 取 `base_type` 表达的单位元。
static fixed_point | identity () ynoexcept
| 取单位元。

## 静态 Public 属性

static const size_t | int_bit_n = _vInt
| 整数部分二进制位数。
static const size_t | frac_bit_n = _vFrac
| 小数部分二进制位数。
static const size_t | digit_bit_n = int_bit_n + frac_bit_n
| 非符号位的二进制位数。

## Private 类型

typedef empty_base< fixed_point > | internal_construct_tag
| 内部构造类型（ private 构造重载用）。

## Private 成员函数

| fixed_point (base_type v, internal_construct_tag) ynoexcept
template<typename _type >
std::enable_if < std::is_integral< _type > ::value, _type >::type | cast () const
template<typename _type >
std::enable_if < std::is_floating_point < _type >::value, _type > ::type | cast () const

## Private 属性

base_type | value

## 友元

template<typename _OtherBase , size_t _vOtherInt, size_t _vOtherFrac>
class | fixed_point
class | std::numeric_limits< fixed_point< _tBase, _vInt, _vFrac > >
fixed_point | fabs (fixed_point x)
fixed_point | ceil (fixed_point x)
fixed_point | floor (fixed_point x)
fixed_point | round (fixed_point x)

## 详细描述

### template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
class ystdex::fixed_point< _tBase, _vInt, _vFrac >

通用定点数。

基于整数算术实现的确定有限精度二进制定点小数类型。可用于替换内建的浮点数类型。 是否有符号同基本整数类型参数。若有符号，则最高有效位为符号位。 逻辑布局： [符号位]|整数部分|小数部分 。各个部分的内部为补码表示。

模板参数

  _tBase | 基本整数类型。
  _vInt | 整数部分（若有符号则不包括符号位，下同）二进制位数。
  _vFrac | 分数部分二进制位数。

注解
  默认保留 6 位二进制小数。
  部分实现参考： http://www.codeproject.com/KB/cpp/fp_math.aspx 。

警告
  基本整数类型需要具有补码表示。
  非虚析构。
  算术运算可能溢出。

自从
  build 260

在文件 rational.hpp 第 100 行定义.

## 成员类型定义说明

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

typedef _tBase ystdex::fixed_point< _tBase, _vInt, _vFrac >::base_type

在文件 rational.hpp 第 116 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

typedef empty_base<fixed_point> ystdex::fixed_point< _tBase, _vInt, _vFrac >::internal_construct_tag

private

内部构造类型（ private 构造重载用）。

在文件 rational.hpp 第 127 行定义.

## 构造及析构函数说明

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( |  | ) |

inline

无参数构造。

警告
  基本整数类型成员未被初始化，具有未决定值 ，使用可能造成未定义行为。

在文件 rational.hpp 第 137 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( | base_type | v,
|  | internal_construct_tag |
| ) |  |

inlineprivate

在文件 rational.hpp 第 141 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<typename _tInt >

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( | _tInt | val,
|  | typename std::enable_if< std::is_integral< _tInt >::value, int >::type | = `0`
| ) |  |

inline

在文件 rational.hpp 第 147 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<typename _tFloat >

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( | _tFloat | val,
|  | typename std::enable_if< std::is_floating_point< _tFloat >::value, int >::type | = `0`
| ) |  |

inline

在文件 rational.hpp 第 152 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( | const fixed_point< _tBase, _vInt, _vFrac > & |  | ) |

inlinedefault

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<size_t _vOtherInt, size_t _vOtherFrac>

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( | const fixed_point< base_type, _vOtherInt, _vOtherFrac > & | f | ) |

inline

在文件 rational.hpp 第 161 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<size_t _vOtherInt, size_t _vOtherFrac>

ystdex::fixed_point< _tBase, _vInt, _vFrac >::fixed_point | ( | const fixed_point< base_type, _vOtherInt, _vOtherFrac > & | f | ) |

inline

在文件 rational.hpp 第 167 行定义.

## 成员函数说明

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

static base_type ystdex::fixed_point< _tBase, _vInt, _vFrac >::base_element | ( |  | ) |

inlinestatic

取 `base_type` 表达的单位元。

取值等于 1 的元素，使用 `base_type` 表达。

在文件 rational.hpp 第 284 行定义.

参考自 ystdex::fixed_point< u16, 9 >::operator+=() , 以及 ystdex::fixed_point< u16, 9 >::operator-=().

这是这个函数的调用关系图:
template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<typename _type >

std::enable_if<std::is_integral<_type>::value, _type>::type ystdex::fixed_point< _tBase, _vInt, _vFrac >::cast | ( |  | ) | const

inlineprivate

在文件 rational.hpp 第 265 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<typename _type >

std::enable_if<std::is_floating_point<_type>::value, _type>::type ystdex::fixed_point< _tBase, _vInt, _vFrac >::cast | ( |  | ) | const

inlineprivate

在文件 rational.hpp 第 272 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

static fixed_point ystdex::fixed_point< _tBase, _vInt, _vFrac >::identity | ( |  | ) |

inlinestatic

取单位元。

取值等于 1 的元素。

在文件 rational.hpp 第 294 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<typename _type >

ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator _type | ( |  | ) | const

inline

在文件 rational.hpp 第 256 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

bool ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator! | ( |  | ) | const

inline

在文件 rational.hpp 第 183 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator*= | ( | const fixed_point< _tBase, _vInt, _vFrac > & | f | ) |

inline

在文件 rational.hpp 第 220 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator++ | ( |  | ) |

inline

在文件 rational.hpp 第 196 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator+= | ( | const fixed_point< _tBase, _vInt, _vFrac > & | f | ) |

inline

在文件 rational.hpp 第 208 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator- | ( |  | ) | const

inline

在文件 rational.hpp 第 188 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator-- | ( |  | ) |

inline

在文件 rational.hpp 第 202 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator-= | ( | const fixed_point< _tBase, _vInt, _vFrac > & | f | ) |

inline

在文件 rational.hpp 第 214 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator/= | ( | const fixed_point< _tBase, _vInt, _vFrac > & | f | ) |

inline

在文件 rational.hpp 第 236 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

bool ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator< | ( | const fixed_point< _tBase, _vInt, _vFrac > & | f | ) | const

inline

在文件 rational.hpp 第 173 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator<<= | ( | size_t | s | ) |

inline

在文件 rational.hpp 第 249 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

bool ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator== | ( | const fixed_point< _tBase, _vInt, _vFrac > & | f | ) | const

inline

在文件 rational.hpp 第 178 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point& ystdex::fixed_point< _tBase, _vInt, _vFrac >::operator>>= | ( | size_t | s | ) |

inline

在文件 rational.hpp 第 243 行定义.

## 友元及相关函数文档

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point ceil | ( | fixed_point< _tBase, _vInt, _vFrac > | x | ) |

friend

在文件 rational.hpp 第 305 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point fabs | ( | fixed_point< _tBase, _vInt, _vFrac > | x | ) |

friend

在文件 rational.hpp 第 299 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>
template<typename _OtherBase , size_t _vOtherInt, size_t _vOtherFrac>

friend class fixed_point

friend

在文件 rational.hpp 第 105 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point floor | ( | fixed_point< _tBase, _vInt, _vFrac > | x | ) |

friend

在文件 rational.hpp 第 312 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

fixed_point round | ( | fixed_point< _tBase, _vInt, _vFrac > | x | ) |

friend

在文件 rational.hpp 第 319 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

friend class std::numeric_limits< fixed_point< _tBase, _vInt, _vFrac > >

friend

在文件 rational.hpp 第 113 行定义.

## 类成员变量说明

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

const size_t ystdex::fixed_point< _tBase, _vInt, _vFrac >::digit_bit_n = int_bit_n + frac_bit_n

static

非符号位的二进制位数。

在文件 rational.hpp 第 123 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

const size_t ystdex::fixed_point< _tBase, _vInt, _vFrac >::frac_bit_n = _vFrac

static

小数部分二进制位数。

在文件 rational.hpp 第 121 行定义.

参考自 ystdex::fixed_point< u16, 9 >::base_element() , 以及 ystdex::fixed_point< u16, 9 >::operator/=().

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

const size_t ystdex::fixed_point< _tBase, _vInt, _vFrac >::int_bit_n = _vInt

static

整数部分二进制位数。

在文件 rational.hpp 第 119 行定义.

template<typename _tBase = std::int32_t, size_t _vInt = std::numeric_limits<_tBase>::digits - 6U, size_t _vFrac = std::numeric_limits<_tBase>::digits - _vInt>

base_type ystdex::fixed_point< _tBase, _vInt, _vFrac >::value

private

在文件 rational.hpp 第 129 行定义.

参考自 ystdex::fixed_point< u16, 9 >::base_element(),ystdex::fixed_point< u16, 9 >::cast(),ystdex::fixed_point< u16, 9 >::operator*=(),ystdex::fixed_point< u16, 9 >::operator+=(),ystdex::fixed_point< u16, 9 >::operator-=(),ystdex::fixed_point< u16, 9 >::operator/=() , 以及 ystdex::fixed_point< u16, 9 >::operator==().

该类的文档由以下文件生成:

- rational.hpp