BIMHome v1.0.0
BIMHome接口文档说明
DualNumber.h
浏览该文件的文档.
1/************************************************************************
2* @file DualNumber.h
3*
4* @brief 对偶数类
5*
6* @details 对偶数类
7*
8* @author dixu
9*
10* @version 1.0
11*
12* @date 2014-9-11
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_DUALNUMBER_H
19#define BIMHOMEBASE_DUALNUMBER_H
20
21#include <cmath>
22
23namespace Base
24{
33 {
34 public:
40 {
41 }
42
49 DualNumber(double re, double du = 0.0) : m_re(re), m_du(du)
50 {
51 }
52
59 {
60 return DualNumber(-m_re, -m_du);
61 }
62
68 double getRE() const
69 {
70 return m_re;
71 }
72
78 double getDU() const
79 {
80 return m_du;
81 }
82
88 void setRE(double dRe)
89 {
90 this->m_re = dRe;
91 }
92
98 void setDU(double dDu)
99 {
100 this->m_du = dDu;
101 }
102
103 protected:
104 double m_re = 0.0;
105 double m_du = 0.0;
106 };
107
108 /* 对偶数基本运算 */
117 {
118 return DualNumber(a.getRE() + b.getRE(), a.getDU() + b.getDU());
119 }
120
129 {
130 return DualNumber(a.getRE() + b, a.getDU());
131 }
132
141 {
142 return DualNumber(a + b.getRE(), b.getDU());
143 }
144
153 {
154 return DualNumber(a.getRE() - b.getRE(), a.getDU() - b.getDU());
155 }
156
165 {
166 return DualNumber(a.getRE() - b, a.getDU());
167 }
168
177 {
178 return DualNumber(a - b.getRE(), -b.getDU());
179 }
180
189 {
190 return DualNumber(a.getRE() * b.getRE(), a.getRE() * b.getDU() + a.getDU() * b.getRE());
191 }
192
201 {
202 return DualNumber(a * b.getRE(), a * b.getDU());
203 }
204
213 {
214 return DualNumber(a.getRE() * b, a.getDU() * b);
215 }
216
225 {
226 return DualNumber(a.getRE() / b.getRE(), (a.getDU() * b.getRE() - a.getRE() * b.getDU()) / (b.getRE() * b.getRE()));
227 }
228
237 {
238 return DualNumber(a.getRE() / b, a.getDU() / b);
239 }
240
248 inline DualNumber pow(DualNumber a, double pw)
249 {
250 return DualNumber(std::pow(a.getRE(), pw), pw * std::pow(a.getRE(), pw - 1.0) * a.getDU());
251 }
252} //namespace
253
254
255#endif
double getRE() const
获取对偶数的实部
Definition DualNumber.h:68
void setRE(double dRe)
设置对偶数的实部
Definition DualNumber.h:88
double m_du
虚部
Definition DualNumber.h:105
DualNumber()
默认构造函数
Definition DualNumber.h:39
double getDU() const
获取对偶数的虚部
Definition DualNumber.h:78
void setDU(double dDu)
设置对偶数的虚部
Definition DualNumber.h:98
DualNumber(double re, double du=0.0)
构造函数,初始化对偶数的实部和虚部
Definition DualNumber.h:49
double m_re
实部
Definition DualNumber.h:104
DualNumber operator-() const
返回对偶数的相反数
Definition DualNumber.h:58
对偶数(Dual Numbers)类
Definition DualNumber.h:33
DualNumber operator+(DualNumber a, DualNumber b)
将两个对偶数相加
Definition DualNumber.h:116
DualNumber operator-(DualNumber a, DualNumber b)
将两个对偶数相减
Definition DualNumber.h:152
DualNumber pow(DualNumber a, double pw)
计算对偶数的幂
Definition DualNumber.h:248
DualNumber operator*(DualNumber a, DualNumber b)
将两个对偶数相乘
Definition DualNumber.h:188
DualNumber operator/(DualNumber a, DualNumber b)
将两个对偶数相除
Definition DualNumber.h:224
Definition BaseFigureFactory.h:24