-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBigDec.h
240 lines (178 loc) · 11.3 KB
/
BigDec.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
#ifndef BIGDEC_H
#define BIGDEC_H
#include "C_BigDec.h"
#include <string>
namespace BigDec_NS
{
class BigDec;
BigDec findGreatestCommonDivision(const BigDec &number1, const BigDec &number2) noexcept;
BigDec findGreatestCommonDivision(const BigDec &number1, const__C_BigDec number2);
BigDec findGreatestCommonDivision(BigDec &&number1, const BigDec &number2);
BigDec findGreatestCommonDivision(BigDec &&number1, const__C_BigDec number2);
BigDec findGreatestCommonDivision(const__C_BigDec number, const__C_BigDec number2);
BigDec generateRandomFirstNumber(const BigDec &number);
BigDec generateRandomFirstNumber(BigDec &&number);
BigDec generateRandomFirstNumber(const__C_BigDec number);
BigDec modularPower(const BigDec &number, const BigDec &exp, const BigDec &mod) noexcept;
BigDec modularPower(const BigDec &number, const BigDec &exp, BigDec &&mod);
BigDec modularPower(const BigDec &number, const BigDec &exp, const__C_BigDec mod);
BigDec modularPower(const BigDec &number, BigDec &&exp, const BigDec &mod);
BigDec modularPower(const BigDec &number, BigDec &&exp, BigDec &&mod);
BigDec modularPower(const BigDec &number, BigDec &&exp, const__C_BigDec mod);
BigDec modularPower(const BigDec &number, const__C_BigDec exp, const BigDec &mod);
BigDec modularPower(const BigDec &number, const__C_BigDec exp, BigDec &&mod);
BigDec modularPower(const BigDec &number, const__C_BigDec exp, const__C_BigDec mod);
BigDec modularPower(BigDec &&number, const BigDec &exp, const BigDec &mod);
BigDec modularPower(BigDec &&number, const BigDec &exp, BigDec &&mod);
BigDec modularPower(BigDec &&number, const BigDec &exp, const__C_BigDec mod);
BigDec modularPower(BigDec &&number, BigDec &&exp,const BigDec &mod);
BigDec modularPower(BigDec &&number, BigDec &&exp, BigDec &&mod);
BigDec modularPower(BigDec &&number, BigDec &&exp, const__C_BigDec mod);
BigDec modularPower(BigDec &&number, const__C_BigDec exp, const BigDec &mod);
BigDec modularPower(BigDec &&number, const__C_BigDec exp, BigDec &&mod);
BigDec modularPower(BigDec &&number, const__C_BigDec exp, const__C_BigDec mod);
BigDec modularPower(const__C_BigDec number, const BigDec &exp, const BigDec &mod);
BigDec modularPower(const__C_BigDec number, const BigDec &exp, BigDec &&mod);
BigDec modularPower(const__C_BigDec number, const BigDec &exp, const__C_BigDec mod);
BigDec modularPower(const__C_BigDec number, BigDec &&exp, const BigDec &mod);
BigDec modularPower(const__C_BigDec number, BigDec &&exp, BigDec &&mod);
BigDec modularPower(const__C_BigDec number, BigDec &&exp, const__C_BigDec mod);
BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const BigDec &mod);
BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, BigDec &&mod);
BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const__C_BigDec mod);
BigDec modularPower(const__C_BigDec number, const BigDec &exp, const BigDec &mod);
BigDec modularPower(const__C_BigDec number, const BigDec &exp, const__C_BigDec mod);
BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const BigDec &mod);
BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const__C_BigDec mod);
BigDec abs(const BigDec &number) noexcept;
BigDec abs(BigDec &&number);
BigDec abs(const__C_BigDec number);
class BigDec
{
private:
bool isValueMalloc;
C_BigDec value;
void deleteValue();
static void checkValue(const__C_BigDec number, int functionLine);
static void checkValue(const BigDec &number, int functionLine);
static void checkValue(BigDec &&number, int functionLine);
public:
BigDec() noexcept;
BigDec(std::string value);
BigDec(C_BigDec value);
BigDec(const__C_BigDec value);
BigDec(const BigDec &number) noexcept;
~BigDec() noexcept;
//----------------------------------------------------
BigDec& operator=(const BigDec &number) noexcept;
BigDec& operator=(const__C_BigDec number);
void operator+=(const BigDec &number) noexcept;
void operator+=(const__C_BigDec number);
BigDec& operator++() noexcept;
BigDec operator++(int) noexcept;
BigDec operator+(const BigDec &number) noexcept;
BigDec operator+(const__C_BigDec number);
friend BigDec operator+(const__C_BigDec number1, const BigDec &number2);
friend std::ostream& operator<<(std::ostream &os, const BigDec &number);
friend std::istream& operator>>(std::istream &os, BigDec &number);
friend std::ostream& operator<<(std::ostream &os, BigDec &&number);
friend std::istream& operator>>(std::istream &os, BigDec &&number);
BigDec operator-(BigDec &number) noexcept;
BigDec operator-(const__C_BigDec number);
friend BigDec operator-(const__C_BigDec number1, const BigDec &number2);
void operator-=(const BigDec &number) noexcept;
void operator-=(const__C_BigDec number);
BigDec operator*(const BigDec &number) noexcept;
BigDec operator*(const__C_BigDec number);
friend BigDec operator*(const__C_BigDec number1, const BigDec &number2);
void operator*=(const BigDec &number) noexcept;
void operator*=(const__C_BigDec number);
BigDec operator/(const BigDec &number) noexcept;
BigDec operator/(const__C_BigDec number);
friend BigDec operator/(const__C_BigDec number1, const BigDec &number2);
void operator/=(const BigDec &number) noexcept;
void operator/=(const__C_BigDec number);
BigDec operator^(unsigned long long exp) noexcept;
void operator^=(unsigned long long exp) noexcept;
BigDec operator%(const BigDec &number) noexcept;
BigDec operator%(const__C_BigDec number);
friend BigDec operator%(const__C_BigDec number1, const BigDec &number2);
void operator%=(const BigDec &number) noexcept;
void operator%=(const__C_BigDec number);
bool operator>(const BigDec &number) noexcept;
bool operator>(const__C_BigDec number);
friend bool operator>(const__C_BigDec number1, const BigDec &number2);
bool operator>=(const BigDec &number) noexcept;
bool operator>=(const__C_BigDec number);
friend bool operator>=(const__C_BigDec number1, const BigDec &number2);
bool operator==(const BigDec &number) noexcept;
bool operator==(const__C_BigDec number);
friend bool operator==(const__C_BigDec number1, const BigDec &number2);
bool operator!=(const BigDec &number) noexcept;
bool operator!=(const__C_BigDec number);
friend bool operator!=(const__C_BigDec number1, const BigDec &number2);
bool operator<(const BigDec &number) noexcept;
bool operator<(const__C_BigDec number);
friend bool operator<(const__C_BigDec number1, const BigDec &number2);
bool operator<=(const BigDec &number) noexcept;
bool operator<=(const__C_BigDec number);
friend bool operator<=(const__C_BigDec number1, const BigDec &number2);
//----------------------------------------------------
friend BigDec findGreatestCommonDivision(const BigDec &number1, const BigDec &number2) noexcept;
friend BigDec findGreatestCommonDivision(const BigDec &number1, const__C_BigDec number2);
friend BigDec findGreatestCommonDivision(BigDec &&number1, const BigDec &number2);
friend BigDec findGreatestCommonDivision(BigDec &&number1, const__C_BigDec number2);
friend BigDec findGreatestCommonDivision(const__C_BigDec number, const__C_BigDec number2);
friend BigDec generateRandomFirstNumber(const BigDec &number);
friend BigDec generateRandomFirstNumber(BigDec &&number);
friend BigDec generateRandomFirstNumber(const__C_BigDec number);
friend BigDec modularPower(const BigDec &number, const BigDec &exp, const BigDec &mod) noexcept;
friend BigDec modularPower(const BigDec &number, const BigDec &exp, BigDec &&mod);
friend BigDec modularPower(const BigDec &number, const BigDec &exp, const__C_BigDec mod);
friend BigDec modularPower(const BigDec &number, BigDec &&exp, const BigDec &mod);
friend BigDec modularPower(const BigDec &number, BigDec &&exp, BigDec &&mod);
friend BigDec modularPower(const BigDec &number, BigDec &&exp, const__C_BigDec mod);
friend BigDec modularPower(const BigDec &number, const__C_BigDec exp, const BigDec &mod);
friend BigDec modularPower(const BigDec &number, const__C_BigDec exp, BigDec &&mod);
friend BigDec modularPower(const BigDec &number, const__C_BigDec exp, const__C_BigDec mod);
friend BigDec modularPower(BigDec &&number, const BigDec &exp, const BigDec &mod);
friend BigDec modularPower(BigDec &&number, const BigDec &exp, BigDec &&mod);
friend BigDec modularPower(BigDec &&number, const BigDec &exp, const__C_BigDec mod);
friend BigDec modularPower(BigDec &&number, BigDec &&exp, const BigDec &mod);
friend BigDec modularPower(BigDec &&number, BigDec &&exp, BigDec &&mod);
friend BigDec modularPower(BigDec &&number, BigDec &&exp, const__C_BigDec mod);
friend BigDec modularPower(BigDec &&number, const__C_BigDec exp, const BigDec &mod);
friend BigDec modularPower(BigDec &&number, const__C_BigDec exp, BigDec &&mod);
friend BigDec modularPower(BigDec &&number, const__C_BigDec exp, const__C_BigDec mod);
friend BigDec modularPower(const__C_BigDec number, const BigDec &exp, const BigDec &mod);
friend BigDec modularPower(const__C_BigDec number, const BigDec &exp, BigDec &&mod);
friend BigDec modularPower(const__C_BigDec number, const BigDec &exp, const__C_BigDec mod);
friend BigDec modularPower(const__C_BigDec number, BigDec &&exp, const BigDec &mod);
friend BigDec modularPower(const__C_BigDec number, BigDec &&exp, BigDec &&mod);
friend BigDec modularPower(const__C_BigDec number, BigDec &&exp, const__C_BigDec mod);
friend BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const BigDec &mod);
friend BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, BigDec &&mod);
friend BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const__C_BigDec mod);
friend BigDec modularPower(const__C_BigDec number, const BigDec &exp, const BigDec &mod);
friend BigDec modularPower(const__C_BigDec number, const BigDec &exp, const__C_BigDec mod);
friend BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const BigDec &mod);
friend BigDec modularPower(const__C_BigDec number, const__C_BigDec exp, const__C_BigDec mod);
friend BigDec abs(const BigDec &number) noexcept;
friend BigDec abs(BigDec &&number);
friend BigDec abs(const__C_BigDec number);
//----------------------------------------------------
template <class T>
operator T*()
{
return static_cast<T*>(value);
}
C_BigDec c_BigDec() noexcept;
class ExcWrongNumber: public std::exception
{
public:
ExcWrongNumber(const__C_BigDec value, int functionLine);
const char* what() const noexcept;
};
};
}
#endif