📄 fn.html
字号:
<html>
<head>
<title>BT2IL::Float Number 浮点数部分</title>
<link rel="stylesheet" href="bt2il.css" type="text/css">
</head>
<body>
<h1>BT²IL::Float Number 浮点数部分</h1>
<p>这一部分相当有趣,包含最常见的一些数学公式,也许可以看成是“编译
期的数学库”,compile-time math library,简称“CTML”?</p>
<p>关于浮点数的大概分成五个部分,基本运算、三角函数、指数对数、常量
和其它运算。基本运算包含了基本的四则运算、大小比较,以及浮点数的分拆;
三角函数包含了 sin、cos、tan 和 arcsin;指数对数包含了自然指数、自然对
数、常用对数、幂指数,以有开方运算;常量有π、e 等;其它运算有阶乘等。
</p>
<p>这些运算应该能达到至少 14 位数的精度;多数应该能达到 double 的最
高精度。不过,目前为止,我还没有提供一个错误检测机制,比如防止 ln 的参
数为负。</p>
<p>所有有关浮点数的运算,都在 namespace btil::fn 中。</p>
<h2>浮点数的表示</h2>
<p>浮点数并不能直接作为模板参数来处理,这样也就限制了在编译期计算中
进行浮点运算。解决的办法就是把浮点数隐藏于一个类中,然后以此类作为模板
的参数再传递。虽然如此,在模板特化时,还是极为不方便。注意,在此所说的
“浮点数”最可能是一个类型!如果说到浮点值,才可能是一个具体的如
double 的值。下面是一个典型的“浮点数”:</p>
<pre class="example-code">// 浮点数
struct float_number
{
static const double f_val = 1.414; // 必须是 f_val
};
</pre>
<p>实际上,浮点数可以这样定义:只要含有类型为 static const double 的
成员“f_val”的类,都可称为“浮点数”(Float Number),f_val 为其浮点
“值”。</p>
<h2><a href="fnbase.html">浮点数基本运算</a></h2>
<p>浮点数的基本运算中有加、减、乘、除、取负、绝对值、相等比较、浮点
数分解等。</p>
<h2><a href="fnexp.html">指数对数运算</a></h2>
<p>包含一些指数、对数以及幂函数,如 e<sup>x</sup>、ln<i>x</i>、
lg<i>x</i>、x<sup>y</sup>、sqrt<i>x</i>等。</p>
<h2><a href="fntrigo.html">三角函数</a></h2>
<p>包含常见的三角函数,如 sin、cos、tan、arcsin 等。</p>
<h2><a href="fnconst.html">常量</a></h2>
<p>一些常见的常量,如 e、π、sqrt<i>2</i>、ln<i>10</i>等。</p>
<h2><a href="fnother.html">其它数学函数</a></h2>
<p>目前有阶乘、等比数列求和。</p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -