git.ucc.asn.au
/
ipdf
/
code.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
// there is no elegance here. only sleep deprivation and regret.
[ipdf/code.git]
/
src
/
rational.h
diff --git
a/src/rational.h
b/src/rational.h
index
bbd4c30
..
f9157c7
100644
(file)
--- a/
src/rational.h
+++ b/
src/rational.h
@@
-10,6
+10,8
@@
#include <cassert>
#include "arbint.h"
#include "gmpint.h"
#include <cassert>
#include "arbint.h"
#include "gmpint.h"
+#include <climits>
+#include <values.h>
namespace IPDF
{
namespace IPDF
{
@@
-75,6
+77,8
@@
struct Rational
{
Simplify();
}
{
Simplify();
}
+
+
Rational(const T & _P, const T & _Q) : P(_P), Q(_Q)
{
Rational(const T & _P, const T & _Q) : P(_P), Q(_Q)
{
@@
-171,7
+175,13
@@
struct Rational
double ToDouble() const
{
double ToDouble() const
{
- return (double)P/(double)Q;
+ T num = P, denom = Q;
+ while (Tabs(num) > T(1e10))
+ {
+ num /= T(16);
+ denom /= T(16);
+ }
+ return ((double)(num))/((double)(denom));
}
bool CheckAccuracy(double d, const char * msg, double threshold = 1e-3) const
{
}
bool CheckAccuracy(double d, const char * msg, double threshold = 1e-3) const
{
@@
-198,8
+208,6
@@
struct Rational
-
-
}
#endif //_RATIONAL_H
}
#endif //_RATIONAL_H
UCC
git Repository :: git.ucc.asn.au