Define for Transformations on Path only, also fixed segfault due to GraphicsBuffer
[ipdf/code.git] / src / paranoidnumber.h
index 3a38286..a175ed5 100644 (file)
 //#define PARANOID_CACHE_RESULTS
 
 //#define PARANOID_USE_ARENA
-#define PARANOID_SIZE_LIMIT 10
+//#define PARANOID_SIZE_LIMIT 3
 
 
 // Define to compare all ops against double ops and check within epsilon
-//#define PARANOID_COMPARE_EPSILON 1e-
+//#define PARANOID_COMPARE_EPSILON 1e-6
 #ifdef PARANOID_COMPARE_EPSILON
 #define CompareForSanity(...) ParanoidNumber::CompareForSanityEx(__func__, __FILE__, __LINE__, __VA_ARGS__)
 #endif
@@ -93,6 +93,7 @@ namespace IPDF
                                #endif
                                #ifdef PARANOID_CACHE_RESULTS
                                        m_cached_result = value;
+                                       m_cache_valid = true;
                                #endif 
                        }
                        
@@ -104,6 +105,7 @@ namespace IPDF
                                #endif
                                #ifdef PARANOID_CACHE_RESULTS
                                        m_cached_result = cpy.m_cached_result;
+                                       m_cache_valid = cpy.m_cache_valid;
                                #endif 
                                for (int i = 0; i < NOP; ++i)
                                {
@@ -265,6 +267,7 @@ namespace IPDF
                        digit_t m_value;        
                        #ifdef PARANOID_CACHE_RESULTS
                                digit_t m_cached_result;
+                               bool m_cache_valid;
                        #endif
                        std::vector<ParanoidNumber*> m_next[4];
                        #ifdef PARANOID_SIZE_LIMIT
@@ -275,7 +278,7 @@ namespace IPDF
                        class Arena
                        {
                                public:
-                                       Arena(int64_t block_size = 10000000);
+                                       Arena(int64_t block_size = 10000);
                                        ~Arena();
                                        
                                        void * allocate(size_t bytes);
@@ -308,7 +311,7 @@ template <class T>
 T ParanoidNumber::Convert() const
 {
        #ifdef PARANOID_CACHE_RESULTS
-       if (!isnan((float(m_cached_result))))
+       if (m_cache_valid)
                return (T)m_cached_result;
        #endif
        T value(m_value);

UCC git Repository :: git.ucc.asn.au