C-XSC - A C++ Class Library for Extended Scientific Computing
2.5.4
|
00001 /* 00002 ** CXSC is a C++ library for eXtended Scientific Computing (V 2.5.4) 00003 ** 00004 ** Copyright (C) 1990-2000 Institut fuer Angewandte Mathematik, 00005 ** Universitaet Karlsruhe, Germany 00006 ** (C) 2000-2014 Wiss. Rechnen/Softwaretechnologie 00007 ** Universitaet Wuppertal, Germany 00008 ** 00009 ** This library is free software; you can redistribute it and/or 00010 ** modify it under the terms of the GNU Library General Public 00011 ** License as published by the Free Software Foundation; either 00012 ** version 2 of the License, or (at your option) any later version. 00013 ** 00014 ** This library is distributed in the hope that it will be useful, 00015 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 ** Library General Public License for more details. 00018 ** 00019 ** You should have received a copy of the GNU Library General Public 00020 ** License along with this library; if not, write to the Free 00021 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00022 */ 00023 00024 /* CVS $Id: lx_real.hpp,v 1.10 2014/01/30 17:23:47 cxsc Exp $ */ 00025 00026 00027 /* 00028 ** F. Blomquist, University of Wuppertal, 19.09.2007; 00029 */ 00030 00031 /* 00032 ** Implementation of the classes 00033 ** 00034 ** lx_real with all tools and elementary functions for real 00035 ** point and interval aruments 00036 ** 00037 */ 00038 00039 #ifndef _CXSC_LX_REAL_HPP_INCLUDED 00040 #define _CXSC_LX_REAL_HPP_INCLUDED 00041 00042 #include <l_imath.hpp> 00043 #include <sstream> 00044 #include <cmath> 00045 #include <iostream> 00046 00047 namespace cxsc { 00048 00049 const real Max_Int_R = 9007199254740991.0; // = 2^(53) - 1 00050 const real Max_Int_N = -9007199254738891.0; // = -Max_Int_R+2100 00051 00053 inline bool Is_Integer(const real& x); 00054 // returns 1 if x is an integer value and 00055 // if |x| <= 2^53 - 1 = 9007199254740991.0; 00056 // otherwise 0 is returnd 00057 00058 class lx_real 00059 { 00060 00061 private: 00062 // ------------- Datenelemente ------------------------------------------- 00063 real ex; 00064 l_real lr; 00065 00066 public: 00067 // ------------- Constructors -------------------------------------------- 00068 00070 lx_real(void) throw() {} 00072 lx_real(const real& n, const l_real &a) throw() 00073 { 00074 if ( !(Is_Integer(n)) ) 00075 cxscthrow(REAL_NOT_ALLOWED("lx_real(const real&, const l_real&)")); 00076 else 00077 { 00078 ex = n; lr = a; 00079 } 00080 } 00081 00083 lx_real(const real& n, const real &a) throw() 00084 { 00085 if ( !(Is_Integer(n)) ) 00086 cxscthrow(REAL_NOT_ALLOWED("lx_real(const real&, const real&)")); 00087 else 00088 { 00089 ex = n; lr = a; 00090 } 00091 } 00092 00094 explicit lx_real(const l_real &a) throw() : ex(0), lr(a) { } 00096 explicit lx_real(const real &a) throw() : ex(0), lr(a) { } 00098 lx_real(const real&, const string&) throw(); 00099 00100 00101 // ------------- Assignments --------------------------------------------- 00102 00104 inline lx_real & operator = (const lx_real &) throw(); 00106 inline lx_real & operator = (const l_real &) throw(); 00108 inline lx_real & operator = (const real &) throw(); 00109 00110 // ------------- Functions ----------------------------------------------- 00111 00113 friend inline int StagPrec(const lx_real&) throw(); 00115 friend inline real expo(const lx_real&) throw(); 00117 friend inline int sign(const lx_real&) throw(); 00119 friend inline l_real lr_part(const lx_real&) throw(); 00121 friend inline lx_real abs(const lx_real&) throw(); 00123 friend void scale_up (lx_real &) throw(); 00125 friend void scale_down(lx_real &) throw(); 00127 friend inline lx_real adjust(const lx_real &) throw(); 00128 00130 friend inline bool eq_zero (const lx_real &a) throw(); // a = 0; 00132 friend inline bool gr_zero (const lx_real &a) throw(); // a > 0; 00134 friend inline bool ge_zero (const lx_real &a) throw(); // a >=0; 00136 friend inline bool sm_zero (const lx_real &a) throw(); // a < 0; 00138 friend inline bool se_zero (const lx_real &a) throw(); // a <=0; 00139 00141 friend inline void times2pown(lx_real &, const real &) throw(); 00143 friend inline void times2pown_neg(lx_real& a, const real& n) throw(); 00145 friend inline bool operator ! (const lx_real &) throw(); 00147 friend inline lx_real operator -(const lx_real &) throw(); 00148 00149 00150 // ----------------------- Output -------------------------------------------- 00151 00152 //friend inline std::ostream& operator << (std::ostream& s, const lx_real& a) 00153 // throw(); // A value a of type lx_real is written to the output channel. 00154 // The above operator is declared and defined in 00155 // lx_interval.hpp (outside the class lx_interval) , lx_interval.inl; 00157 friend std::string & operator << (std::string &s, const lx_real& a) 00158 throw(); 00159 // The value of a variable a of type lx_real is copied to a string s. 00160 // s has the form: {2**(ex)*li}; ex is the exponent to base 2. 00161 00162 }; // end of class lx_real 00163 00164 // ------------------------------------------------------------- 00165 // ------- friend functions declared in class lx_real: --------- 00166 // ------------------------------------------------------------- 00167 00168 inline int StagPrec(const lx_real&) throw(); 00169 inline real expo(const lx_real&) throw(); 00170 inline int sign(const lx_real&) throw(); 00171 inline l_real lr_part(const lx_real&) throw(); 00172 inline lx_real abs(const lx_real&) throw(); 00173 inline lx_real adjust(const lx_real &) throw(); 00174 inline void times2pown_neg(lx_real&, const real&) throw(); 00175 00176 void scale_up (lx_real&) throw(); 00177 void scale_down(lx_real &a) throw(); 00178 00179 inline bool eq_zero (const lx_real &a) throw(); // a = 0; 00180 inline bool gr_zero (const lx_real &a) throw(); // a > 0; 00181 inline bool ge_zero (const lx_real &a) throw(); // a >=0; 00182 inline bool sm_zero (const lx_real &a) throw(); // a < 0; 00183 inline bool se_zero (const lx_real &a) throw(); // a <=0; 00184 00185 inline void times2pown(lx_real &, const real &) throw(); 00186 inline bool operator ! (const lx_real &) throw(); 00187 00188 inline lx_real operator -(const lx_real &) throw(); 00189 00190 // -------------------------- Input ------------------------------------ 00191 00193 string & operator >> (string &s, lx_real &a) throw(); 00195 void operator >> (const string &s, lx_real &a) throw(); 00197 void operator >> (const char *s, lx_real&) throw(); 00199 std::istream & operator >> (std::istream &s, lx_real &a) throw(); 00200 00201 // -------------------------- Output ------------------------------------ 00202 00203 std::string & operator << (std::string &s, const lx_real& a) 00204 throw(); 00205 //inline std::ostream& operator << (std::ostream& s, const lx_real& a) 00206 // throw(); // A value a of type lx_real is written to the output channel. 00208 inline std::string & operator << (std::string &s, const lx_real& a) 00209 throw(); 00210 // The value of a variable a of type lx_real is copied to a string s. 00211 // s has the form: {2**(ex),lr} 00212 00213 // ---- function declarations outside the class lx_real ---- 00214 00216 inline real add_real(const real &a, const real &b) throw(); 00217 00219 inline real sub_real(const real &a, const real &b) throw(); 00220 00222 lx_real upper_bnd(const lx_real& x) throw(); 00223 00225 lx_real lower_bnd(const lx_real& x) throw(); 00227 inline lx_real operator +(const lx_real &) throw(); 00228 00230 lx_real operator + (const lx_real &, const lx_real &) throw(); 00232 inline lx_real operator + (const lx_real&, const l_real &) throw(); 00234 inline lx_real operator + (const l_real&, const lx_real &) throw(); 00236 inline lx_real operator + (const lx_real&, const real &) throw(); 00238 inline lx_real operator + (const real&, const lx_real &) throw(); 00239 00241 inline lx_real & operator +=(lx_real &, const lx_real &) throw(); 00243 inline lx_real & operator +=(lx_real &, const l_real &) throw(); 00245 inline lx_real & operator +=(lx_real &, const real &) throw(); 00246 00248 inline lx_real operator - (const lx_real &, const lx_real &) throw(); 00250 inline lx_real operator - (const lx_real &, const l_real &) throw(); 00252 inline lx_real operator - (const l_real &, const lx_real &) throw(); 00254 inline lx_real operator - (const lx_real &, const real &) throw(); 00256 inline lx_real operator - (const real &, const lx_real &) throw(); 00257 00259 inline lx_real & operator -=(lx_real &, const lx_real &) throw(); 00261 inline lx_real & operator -=(lx_real &, const l_real &) throw(); 00263 inline lx_real & operator -=(lx_real &, const real &) throw(); 00264 00266 lx_real operator * (const lx_real &, const lx_real &) throw(); 00268 inline lx_real operator * (const lx_real&, const l_real &) throw(); 00270 inline lx_real operator * (const l_real&, const lx_real &) throw(); 00272 inline lx_real operator * (const lx_real&, const real &) throw(); 00274 inline lx_real operator * (const real&, const lx_real &) throw(); 00275 00277 inline lx_real & operator *=(lx_real &, const lx_real &) throw(); 00279 inline lx_real & operator *=(lx_real &, const l_real &) throw(); 00281 inline lx_real & operator *=(lx_real &, const real &) throw(); 00282 00284 lx_real operator / (const lx_real &, const lx_real &) throw(DIV_BY_ZERO); 00286 inline lx_real operator / (const lx_real&, const l_real &) throw(); 00288 inline lx_real operator / (const l_real&, const lx_real &) throw(); 00290 inline lx_real operator / (const lx_real&, const real &) throw(); 00292 inline lx_real operator / (const real&, const lx_real &) throw(); 00293 00295 inline lx_real & operator /=(lx_real &, const lx_real &) throw(); 00297 inline lx_real & operator /=(lx_real &, const l_real &) throw(); 00299 inline lx_real & operator /=(lx_real &, const real &) throw(); 00300 00302 bool operator == (const lx_real &, const lx_real &) throw(); 00304 inline bool operator == (const lx_real &, const l_real &) throw(); 00306 inline bool operator == (const l_real &, const lx_real &) throw(); 00308 inline bool operator == (const lx_real &, const real &) throw(); 00310 inline bool operator == (const real &, const lx_real &) throw(); 00311 00313 inline bool operator != (const lx_real &, const lx_real &) throw(); 00315 inline bool operator != (const lx_real &, const l_real &) throw(); 00317 inline bool operator != (const l_real &, const lx_real &) throw(); 00319 inline bool operator != (const lx_real &, const real &) throw(); 00321 inline bool operator != (const real &, const lx_real &) throw(); 00322 00324 bool operator > (const lx_real &, const lx_real &) throw(); 00325 00327 inline bool operator <= (const lx_real &, const lx_real &) throw(); 00329 inline bool operator < (const lx_real &, const lx_real &) throw(); 00331 inline bool operator >= (const lx_real &, const lx_real &) throw(); 00332 00334 inline bool operator > (const real &, const lx_real &) throw(); 00336 inline bool operator <= (const real &, const lx_real &) throw(); 00338 inline bool operator < (const real &, const lx_real &) throw(); 00340 inline bool operator >= (const real &, const lx_real &) throw(); 00341 00343 inline bool operator > (const lx_real &, const real &) throw(); 00345 inline bool operator <= (const lx_real &, const real &) throw(); 00347 inline bool operator < (const lx_real &, const real &) throw(); 00349 inline bool operator >= (const lx_real &, const real &) throw(); 00350 00352 inline bool operator > (const l_real &, const lx_real &) throw(); 00354 inline bool operator <= (const l_real &, const lx_real &) throw(); 00356 inline bool operator < (const l_real &, const lx_real &) throw(); 00358 inline bool operator >= (const l_real &, const lx_real &) throw(); 00359 00361 inline bool operator > (const lx_real &, const l_real &) throw(); 00363 inline bool operator <= (const lx_real &, const l_real &) throw(); 00365 inline bool operator < (const lx_real &, const l_real &) throw(); 00367 inline bool operator >= (const lx_real &, const l_real &) throw(); 00368 00370 inline lx_real max(const lx_real&, const lx_real&); 00372 inline lx_real min(const lx_real&, const lx_real&); 00373 00375 inline real cutint(const real& x) throw(); 00376 00377 // ------------------- lx_real Constants ------------------------------------ 00378 00380 lx_real Pi_lx_real() throw(); // pi 00382 lx_real Pip2_lx_real() throw(); // pi^2 00384 lx_real Pi2_lx_real() throw(); // 2*pi 00386 lx_real Pid4_lx_real() throw(); // Pi/4 00388 lx_real Pid2_lx_real() throw(); // Pi/2 00390 lx_real Ln2_lx_real() throw(); 00392 lx_real Ln10_lx_real() throw(); 00394 lx_real Ln10r_lx_real() throw(); 00396 lx_real Pir_lx_real() throw(); 00398 lx_real Pi2r_lx_real() throw(); // 1/(2*pi) 00400 lx_real SqrtPi_lx_real() throw(); 00402 lx_real Sqrt2Pi_lx_real() throw(); 00404 lx_real Sqrt2_lx_real() throw(); 00406 lx_real Sqrt2r_lx_real() throw(); 00408 lx_real Sqrt3_lx_real() throw(); 00410 lx_real Sqrt3r_lx_real() throw(); 00412 lx_real Sqrt3d2_lx_real() throw(); 00414 lx_real Ln2r_lx_real() throw(); 00416 lx_real Pid3_lx_real() throw(); 00418 lx_real SqrtPir_lx_real() throw(); 00420 lx_real Sqrt2Pir_lx_real() throw(); 00422 lx_real LnPi_lx_real() throw(); 00424 lx_real Ln2Pi_lx_real() throw(); 00426 lx_real E_lx_real() throw(); 00428 lx_real Ep2_lx_real() throw(); 00430 lx_real Ep2r_lx_real() throw(); 00432 lx_real Er_lx_real() throw(); 00434 lx_real EpPi_lx_real() throw(); 00436 lx_real EpPid2_lx_real() throw(); 00438 lx_real EpPid4_lx_real() throw(); 00440 lx_real Ep2Pi_lx_real() throw(); 00442 lx_real EulerGamma_lx_real() throw(); 00444 lx_real Catalan_lx_real() throw(); 00446 lx_real sqrt5_lx_real() throw(); 00448 lx_real sqrt7_lx_real() throw(); 00450 lx_real One_m_lx_real() throw(); 00452 lx_real One_p_lx_real() throw(); 00453 00454 // ********************************************************************** 00455 // ********************************************************************** 00456 00457 00458 00459 // ------------------- Array of constants ---------------------- 00460 00461 // const real ln_N[180]; 00462 // ln_N[0] = ln(2); ln_N[1] = ln(3); ... ln_N[179] = ln(181); 00463 00464 const real ln_N[180] = 00465 {6243314768165359.0 / 9007199254740992.0, 00466 4947709893870347.0 / 4503599627370496.0, 00467 6243314768165359.0 / 4503599627370496.0, 00468 7248263982714163.0 / 4503599627370496.0, 00469 8069367277953026.0 / 4503599627370496.0, 00470 8763600222181975.0 / 4503599627370496.0, 00471 4682486076124019.0 / 2251799813685248.0, 00472 4947709893870347.0 / 2251799813685248.0, 00473 5184960683398422.0 / 2251799813685248.0, 00474 5399580128524108.0 / 2251799813685248.0, 00475 5595512331017853.0 / 2251799813685248.0, 00476 5775752485243985.0 / 2251799813685248.0, 00477 5942628803132327.0 / 2251799813685248.0, 00478 6097986938292255.0 / 2251799813685248.0, 00479 6243314768165359.0 / 2251799813685248.0, 00480 6379829280276346.0 / 2251799813685248.0, 00481 6508538585911686.0 / 2251799813685248.0, 00482 6630287144694572.0 / 2251799813685248.0, 00483 6745789375439761.0 / 2251799813685248.0, 00484 6855655058026161.0 / 2251799813685248.0, 00485 6960408820565448.0 / 2251799813685248.0, 00486 7060505291240432.0 / 2251799813685248.0, 00487 7156341023059193.0 / 2251799813685248.0, 00488 7248263982714163.0 / 2251799813685248.0, 00489 7336581177285325.0 / 2251799813685248.0, 00490 7421564840805520.0 / 2251799813685248.0, 00491 7503457495173667.0 / 2251799813685248.0, 00492 7582476122586655.0 / 2251799813685248.0, 00493 7658815630333595.0 / 2251799813685248.0, 00494 7732651747257178.0 / 2251799813685248.0, 00495 7804143460206699.0 / 2251799813685248.0, 00496 7873435075459281.0 / 2251799813685248.0, 00497 7940657972317686.0 / 2251799813685248.0, 00498 8005932102448069.0 / 2251799813685248.0, 00499 8069367277953026.0 / 2251799813685248.0, 00500 8131064282924989.0 / 2251799813685248.0, 00501 8191115836735912.0 / 2251799813685248.0, 00502 8249607432179158.0 / 2251799813685248.0, 00503 8306618067481101.0 / 2251799813685248.0, 00504 8362220887911502.0 / 2251799813685248.0, 00505 8416483750067501.0 / 2251799813685248.0, 00506 8469469719751697.0 / 2251799813685248.0, 00507 8521237512606787.0 / 2251799813685248.0, 00508 8571841885227428.0 / 2251799813685248.0, 00509 8621333983281772.0 / 2251799813685248.0, 00510 8669761652191414.0 / 2251799813685248.0, 00511 8717169715100533.0 / 2251799813685248.0, 00512 8763600222181975.0 / 2251799813685248.0, 00513 8809092674755503.0 / 2251799813685248.0, 00514 8853684227211519.0 / 2251799813685248.0, 00515 8897409869326665.0 / 2251799813685248.0, 00516 8940302591212715.0 / 2251799813685248.0, 00517 8982393532846860.0 / 2251799813685248.0, 00518 4511856059940595.0 / 1125899906842624.0, 00519 4532143093607504.0 / 1125899906842624.0, 00520 4552071045814873.0 / 1125899906842624.0, 00521 4571652407313997.0 / 1125899906842624.0, 00522 4590899028240761.0 / 1125899906842624.0, 00523 4609822161187467.0 / 1125899906842624.0, 00524 4628432500714509.0 / 1125899906842624.0, 00525 4646740219649259.0 / 1125899906842624.0, 00526 4664755002480667.0 / 1125899906842624.0, 00527 4682486076124019.0 / 1125899906842624.0, 00528 4699942238300533.0 / 1125899906842624.0, 00529 4717131883750310.0 / 1125899906842624.0, 00530 4734063028474157.0 / 1125899906842624.0, 00531 4750743332179513.0 / 1125899906842624.0, 00532 4767180119087803.0 / 1125899906842624.0, 00533 4783380397244705.0 / 1125899906842624.0, 00534 4799350876460745.0 / 1125899906842624.0, 00535 4815097984997183.0 / 1125899906842624.0, 00536 4830627885101030.0 / 1125899906842624.0, 00537 4845946487483165.0 / 1125899906842624.0, 00538 4861059464824668.0 / 1125899906842624.0, 00539 4875972264388626.0 / 1125899906842624.0, 00540 4890690119807548.0 / 1125899906842624.0, 00541 4905218062110249.0 / 1125899906842624.0, 00542 4919560930046323.0 / 1125899906842624.0, 00543 4933723379761220.0 / 1125899906842624.0, 00544 4947709893870347.0 / 1125899906842624.0, 00545 4961524789976421.0 / 1125899906842624.0, 00546 4975172228670594.0 / 1125899906842624.0, 00547 4988656221054420.0 / 1125899906842624.0, 00548 5001980635816714.0 / 1125899906842624.0, 00549 5015149205896518.0 / 1125899906842624.0, 00550 5028165534760914.0 / 1125899906842624.0, 00551 5041033102324064.0 / 1125899906842624.0, 00552 5053755270531830.0 / 1125899906842624.0, 00553 5066335288634384.0 / 1125899906842624.0, 00554 5078776298167486.0 / 1125899906842624.0, 00555 5091081337661556.0 / 1125899906842624.0, 00556 5103253347096176.0 / 1125899906842624.0, 00557 5115295172116377.0 / 1125899906842624.0, 00558 5127209568025827.0 / 1125899906842624.0, 00559 5138999203570936.0 / 1125899906842624.0, 00560 5150666664528888.0 / 1125899906842624.0, 00561 5162214457111658.0 / 1125899906842624.0, 00562 5173645011197227.0 / 1125899906842624.0, 00563 5184960683398422.0 / 1125899906842624.0, 00564 5196163759979057.0 / 1125899906842624.0, 00565 5207256459626429.0 / 1125899906842624.0, 00566 5218240936088556.0 / 1125899906842624.0, 00567 5229119280684002.0 / 1125899906842624.0, 00568 5239893524691621.0 / 1125899906842624.0, 00569 5250565641627027.0 / 1125899906842624.0, 00570 5261137549412187.0 / 1125899906842624.0, 00571 5271611112444100.0 / 1125899906842624.0, 00572 5281988143568134.0 / 1125899906842624.0, 00573 5292270405961265.0 / 1125899906842624.0, 00574 5302459614930081.0 / 1125899906842624.0, 00575 5312557439628173.0 / 1125899906842624.0, 00576 5322565504697180.0 / 1125899906842624.0, 00577 5332485391835543.0 / 1125899906842624.0, 00578 5342318641298757.0 / 1125899906842624.0, 00579 5352066753334667.0 / 1125899906842624.0, 00580 5361731189557166.0 / 1125899906842624.0, 00581 5371313374261431.0 / 1125899906842624.0, 00582 5380814695683667.0 / 1125899906842624.0, 00583 5390236507208137.0 / 1125899906842624.0, 00584 5399580128524108.0 / 1125899906842624.0, 00585 5408846846735179.0 / 1125899906842624.0, 00586 5418037917423337.0 / 1125899906842624.0, 00587 5427154565669929.0 / 1125899906842624.0, 00588 5436197987035623.0 / 1125899906842624.0, 00589 5445169348501337.0 / 1125899906842624.0, 00590 5454069789371970.0 / 1125899906842624.0, 00591 5462900422144689.0 / 1125899906842624.0, 00592 5471662333343435.0 / 1125899906842624.0, 00593 5480356584321203.0 / 1125899906842624.0, 00594 5488984212031586.0 / 1125899906842624.0, 00595 5497546229770980.0 / 1125899906842624.0, 00596 5506043627892780.0 / 1125899906842624.0, 00597 5514477374494827.0 / 1125899906842624.0, 00598 5522848416081301.0 / 1125899906842624.0, 00599 5531157678200183.0 / 1125899906842624.0, 00600 5539406066057373.0 / 1125899906842624.0, 00601 5547594465108473.0 / 1125899906842624.0, 00602 5555723741629202.0 / 1125899906842624.0, 00603 5563794743265374.0 / 1125899906842624.0, 00604 5571808299563294.0 / 1125899906842624.0, 00605 5579765222481415.0 / 1125899906842624.0, 00606 5587666306884046.0 / 1125899906842624.0, 00607 5595512331017853.0 / 1125899906842624.0, 00608 5603304056971868.0 / 1125899906842624.0, 00609 5611042231121700.0 / 1125899906842624.0, 00610 5618727584558574.0 / 1125899906842624.0, 00611 5626360833503834.0 / 1125899906842624.0, 00612 5633942679709485.0 / 1125899906842624.0, 00613 5641473810845338.0 / 1125899906842624.0, 00614 5648954900873299.0 / 1125899906842624.0, 00615 5656386610409296.0 / 1125899906842624.0, 00616 5663769587073346.0 / 1125899906842624.0, 00617 5671104465828218.0 / 1125899906842624.0, 00618 5678391869307130.0 / 1125899906842624.0, 00619 5685632408130919.0 / 1125899906842624.0, 00620 5692826681215068.0 / 1125899906842624.0, 00621 5699975276066993.0 / 1125899906842624.0, 00622 5707078769073944.0 / 1125899906842624.0, 00623 5714137725781890.0 / 1125899906842624.0, 00624 5721152701165710.0 / 1125899906842624.0, 00625 5728124239891016.0 / 1125899906842624.0, 00626 5735052876567931.0 / 1125899906842624.0, 00627 5741939135997091.0 / 1125899906842624.0, 00628 5748783533408181.0 / 1125899906842624.0, 00629 5755586574691264.0 / 1125899906842624.0, 00630 5762348756621151.0 / 1125899906842624.0, 00631 5769070567075090.0 / 1125899906842624.0, 00632 5775752485243985.0 / 1125899906842624.0, 00633 5782394981837384.0 / 1125899906842624.0, 00634 5788998519282460.0 / 1125899906842624.0, 00635 5795563551917188.0 / 1125899906842624.0, 00636 5802090526177927.0 / 1125899906842624.0, 00637 5808579880781584.0 / 1125899906842624.0, 00638 5815032046902576.0 / 1125899906842624.0, 00639 5821447448344733.0 / 1125899906842624.0, 00640 5827826501708347.0 / 1125899906842624.0, 00641 5834169616552500.0 / 1125899906842624.0, 00642 5840477195552856.0 / 1125899906842624.0, 00643 5846749634655054.0 / 1125899906842624.0, 00644 5852987323223851.0 / 1125899906842624.0}; 00645 00646 // ------------------------------------------------------------------------ 00647 // --------------- lx_real elementary functions --------------------------- 00648 // ------------------------------------------------------------------------ 00649 00651 lx_real sqrt(const lx_real&) throw(); 00653 lx_real sqr(const lx_real&) throw(); 00655 lx_real ln(const lx_real &) throw(); 00657 lx_real log2(const lx_real &) throw(); 00659 lx_real log10(const lx_real &) throw(); 00661 lx_real lnp1(const lx_real &) throw(); 00663 lx_real exp(const lx_real &) throw(); 00665 lx_real exp2(const lx_real &) throw(); // 2^x 00667 lx_real exp10(const lx_real &) throw(); // 10^x 00669 lx_real expm1(const lx_real &x) throw(); 00671 lx_real power(const lx_real &, const real &) throw(); 00673 lx_real pow(const lx_real &, const lx_real &) throw(); 00675 lx_real xp1_pow_y(const lx_real &, const lx_real &) throw(); 00677 lx_real sin(const lx_real &)throw(); 00679 lx_real sin_n(const lx_real &x, const real& n) throw(); 00681 lx_real cos(const lx_real &) throw(); 00683 lx_real cos_n(const lx_real &x, const real& n) throw(); 00685 lx_real tan(const lx_real &) throw(); 00687 lx_real cot(const lx_real &) throw(); 00689 lx_real sqrt1px2(const lx_real &) throw(); 00691 lx_real atan(const lx_real &) throw(); 00693 lx_real sqrt1mx2(const lx_real &) throw(); 00695 lx_real sqrtx2m1(const lx_real &) throw(); 00697 lx_real asin(const lx_real & ) throw(); 00699 lx_real acos(const lx_real &) throw(); 00701 lx_real acot(const lx_real &) throw(); 00703 lx_real sinh(const lx_real &) throw(); 00705 lx_real cosh(const lx_real &) throw(); 00707 lx_real tanh(const lx_real &) throw(); 00709 lx_real coth(const lx_real &) throw(); 00711 lx_real sqrtp1m1(const lx_real &) throw(); 00713 lx_real asinh(const lx_real &) throw(); 00715 lx_real acosh(const lx_real &) throw(); 00717 lx_real acoshp1(const lx_real &) throw(); 00719 lx_real atanh(const lx_real &) throw(); 00721 lx_real atanh1m(const lx_real &) throw(); 00723 lx_real atanhm1p(const lx_real &) throw(); 00725 lx_real acoth(const lx_real &) throw(); 00727 lx_real acothp1(const lx_real &) throw(); 00729 lx_real acothm1m(const lx_real &) throw(); 00731 lx_real sqrtx2y2(const lx_real &, const lx_real &) throw(); 00733 lx_real ln_sqrtx2y2(const lx_real &, const lx_real &) throw(); 00735 lx_real sqrt(const lx_real &, int) throw(); 00736 00737 } // end namespace cxsc 00738 00739 #include "lx_real.inl" 00740 00741 #endif // _CXSC_LX_REAL_HPP_INCLUDED