38 inline void times2pown(lx_real &a,
const real &n)
noexcept
43inline std::string & operator << (std::string &s,
const lx_real& a)
53 ss << SaveOpt << SetPrecision(0,0) << Fixed << a.ex << RestoreOpt;
71 if (dbl1 == dbl2 && fabs(dbl1) <= Max_Int_R)
return 1;
78 if (
abs(res)>Max_Int_R)
79 cxscthrow(REAL_INT_OUT_OF_RANGE(
80 "add_real(const real&, const real&)"));
87 if (
abs(res)>Max_Int_R)
88 cxscthrow(REAL_INT_OUT_OF_RANGE(
"sub_real(const real&, const real&)"));
92 inline int StagPrec(
const lx_real &a)
noexcept
93{
return StagPrec(a.lr); }
95 inline real expo(
const lx_real &a)
noexcept
98 inline int sign(
const lx_real &a)
noexcept
99 {
return sign(a.lr); }
101 inline l_real lr_part(
const lx_real &a)
noexcept
104 inline lx_real
abs(
const lx_real& a)
noexcept
105 {
return lx_real(a.ex,
abs(a.lr)); }
107 inline lx_real adjust(
const lx_real &a)
noexcept
108 {
return lx_real(a.ex,adjust(a.lr)); }
110 inline void times2pown_neg(lx_real& a,
const real& n)
noexcept
124 if (exa < -Max_Int_R - n)
128 d = -Max_Int_R - exa;
138 a = lx_real(-Max_Int_R,lia);
142 a = lx_real(n+a.ex,lia);
147 inline lx_real & lx_real::operator = (
const lx_real &a)
noexcept
154 inline lx_real & lx_real::operator = (
const l_real &a)
noexcept
161 inline lx_real & lx_real::operator = (
const real &a)
noexcept
170 inline bool eq_zero(
const lx_real &a)
noexcept
171 {
return (a.lr == 0 ); }
173 inline bool gr_zero(
const lx_real &a)
noexcept
174 {
return (a.lr > 0 ); }
176 inline bool ge_zero(
const lx_real &a)
noexcept
177 {
return (a.lr >= 0); }
179 inline bool sm_zero(
const lx_real &a)
noexcept
180 {
return (a.lr < 0 ); }
182 inline bool se_zero(
const lx_real &a)
noexcept
183 {
return (a.lr <= 0); }
187 inline lx_real operator -(
const lx_real &a)
noexcept
188 {
return lx_real(a.ex,-a.lr); }
190 inline lx_real operator +(
const lx_real &a)
noexcept
193 inline lx_real operator + (
const lx_real& a,
const l_real& b)
noexcept
194 {
return a + lx_real(b); }
195 inline lx_real operator + (
const l_real& a,
const lx_real& b)
noexcept
196 {
return lx_real(a) + b; }
197 inline lx_real operator + (
const lx_real& a,
const real& b)
noexcept
198 {
return a + lx_real(
l_real(b)); }
199 inline lx_real operator + (
const real& a,
const lx_real& b)
noexcept
200 {
return lx_real(
l_real(a)) + b; }
202 inline lx_real &
operator +=(lx_real& a,
const lx_real& b)
noexcept
209 inline lx_real operator - (
const lx_real& a,
const lx_real& b)
noexcept
210 {
return a + lx_real(-b); }
211 inline lx_real operator - (
const lx_real& a,
const l_real& b)
noexcept
212 {
return a + lx_real(-b); }
213 inline lx_real operator - (
const l_real& a,
const lx_real& b)
noexcept
214 {
return lx_real(a) + lx_real(-b); }
215 inline lx_real operator - (
const lx_real& a,
const real& b)
noexcept
216 {
return a + lx_real(-b); }
217 inline lx_real operator - (
const real& a,
const lx_real& b)
noexcept
218 {
return lx_real(a) + lx_real(-b); }
220 inline lx_real & operator -=(lx_real& a,
const lx_real& b)
noexcept
222 inline lx_real & operator -=(lx_real& a,
const l_real& b)
noexcept
224 inline lx_real & operator -=(lx_real& a,
const real& b)
noexcept
228 {
return a * lx_real(b); }
230 {
return lx_real(a) * b; }
232 {
return a * lx_real(b); }
234 {
return lx_real(a) * b; }
236 inline lx_real &
operator *=(lx_real& a,
const lx_real& b)
noexcept
244 {
return a / lx_real(b); }
246 {
return lx_real(a) / b; }
248 {
return a / lx_real(b); }
250 {
return lx_real(a) / b; }
252 inline lx_real &
operator /=(lx_real& a,
const lx_real& b)
noexcept
259 inline bool operator ! (
const lx_real& a)
noexcept
262 inline bool operator == (
const lx_real &a,
const l_real &b)
noexcept
263 {
return (a==lx_real(b)); }
265 inline bool operator == (
const l_real &a,
const lx_real &b)
noexcept
266 {
return (lx_real(a)==b); }
268 inline bool operator == (
const lx_real &a,
const real &b)
noexcept
269 {
return (a==lx_real(b)); }
271 inline bool operator == (
const real &a,
const lx_real &b)
noexcept
272 {
return (lx_real(a)==b); }
275 inline bool operator != (
const lx_real &a,
const lx_real &b)
noexcept
278 inline bool operator != (
const lx_real &a,
const l_real &b)
noexcept
279 {
return !(a==lx_real(b)); }
281 inline bool operator != (
const l_real &a,
const lx_real &b)
noexcept
282 {
return !(lx_real(a)==b); }
284 inline bool operator != (
const lx_real &a,
const real &b)
noexcept
285 {
return !(a==lx_real(b)); }
287 inline bool operator != (
const real &a,
const lx_real &b)
noexcept
288 {
return !(lx_real(a)==b); }
290 inline bool operator <= (
const lx_real &a,
const lx_real &b)
noexcept
293 inline bool operator < (
const lx_real &a,
const lx_real &b)
noexcept
296 inline bool operator >= (
const lx_real &a,
const lx_real &b)
noexcept
301 inline bool operator > (
const real &a,
const lx_real &b)
noexcept
302 {
return lx_real(a)>b; }
304 inline bool operator <= (
const real &a,
const lx_real &b)
noexcept
307 inline bool operator < (
const real &a,
const lx_real &b)
noexcept
308 {
return b>lx_real(a); }
310 inline bool operator >= (
const real &a,
const lx_real &b)
noexcept
315 inline bool operator > (
const lx_real &a,
const real &b)
noexcept
316 {
return a>lx_real(b); }
318 inline bool operator <= (
const lx_real &a,
const real &b)
noexcept
321 inline bool operator < (
const lx_real &a,
const real &b)
noexcept
324 inline bool operator >= (
const lx_real &a,
const real &b)
noexcept
329 inline bool operator > (
const l_real &a,
const lx_real &b)
noexcept
330 {
return lx_real(a)>b; }
332 inline bool operator <= (
const l_real &a,
const lx_real &b)
noexcept
335 inline bool operator < (
const l_real &a,
const lx_real &b)
noexcept
336 {
return b>lx_real(a); }
338 inline bool operator >= (
const l_real &a,
const lx_real &b)
noexcept
343 inline bool operator > (
const lx_real &a,
const l_real &b)
noexcept
344 {
return a>lx_real(b); }
346 inline bool operator <= (
const lx_real &a,
const l_real &b)
noexcept
349 inline bool operator < (
const lx_real &a,
const l_real &b)
noexcept
352 inline bool operator >= (
const lx_real &a,
const l_real &b)
noexcept
358 inline lx_real max(
const lx_real& a,
const lx_real& b)
359 {
return (b>a)? b : a; }
361 inline lx_real min(
const lx_real& a,
const lx_real& b)
362 {
return (b>a)? a : b; }
384 if (res>Max_Int_R) res = 9007199254740992.0;
The Multiple-Precision Data Type l_real.
The namespace cxsc, providing all functionality of the class library C-XSC.
cdotprecision & operator+=(cdotprecision &cd, const l_complex &lc) noexcept
Implementation of standard algebraic addition and allocation operation.
bool Is_Integer(const real &x)
Returns 1 if x is an integer value and if .
civector operator/(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of division operation.
int expo_gr(const l_interval &x)
real cutint(const real &x) noexcept
Returns the truncated integer part of x.
real add_real(const real &a, const real &b) noexcept
Returns a,b must be integers with .
real sub_real(const real &a, const real &b) noexcept
Returns a,b must be integers with .
cimatrix & operator*=(cimatrix &m, const cinterval &c) noexcept
Implementation of multiplication and allocation operation.
ivector abs(const cimatrix_subv &mv) noexcept
Returns the absolute value of the matrix.
void times2pown(cinterval &x, int n) noexcept
Fast multiplication of reference parameter [z] with .
civector operator*(const cimatrix_subv &rv, const cinterval &s) noexcept
Implementation of multiplication operation.
cimatrix & operator/=(cimatrix &m, const cinterval &c) noexcept
Implementation of division and allocation operation.