#include <guar_exact.h>
Public Methods | |
rational_rep () | |
rational_rep (int sign, int na, unsigned long *a) | |
rational_rep (int sign, unsigned long a) | |
rational_rep (int sign, int na, int nb) | |
~rational_rep () | |
template<class T> void | dump (T &num, T &den) |
void | calc_bounds (void) |
void | negative (void) |
void | reciprocal (void) |
Public Attributes | |
unsigned int | m_na |
unsigned long * | m_a |
unsigned int | m_nb |
unsigned long * | m_b |
size_t | m_size_a |
size_t | m_size_b |
int | m_refcount |
Interval | m_i |
int | m_sign: 2 |
unsigned int | m_bounds: 1 |
|
Definition at line 166 of file guar_exact.h. References m_a, m_b, m_bounds, m_na, m_nb, m_refcount, m_sign, m_size_a, and m_size_b.
|
|
Definition at line 175 of file guar_exact.h. References m_a, m_b, m_bounds, m_na, m_nb, m_refcount, m_sign, m_size_a, m_size_b, and gust::PoolAlloc().
00176 { 00177 size_t bsize; 00178 00179 m_refcount = 1; 00180 m_sign = 0; 00181 m_bounds = m_na = m_nb = 0; 00182 m_size_b = m_size_a = 0; 00183 m_a = m_b = 0; 00184 00185 if( na == 0 ) return; 00186 00187 m_a = (unsigned long *)gust::PoolAlloc( na*sizeof(unsigned long), &bsize ); 00188 if( m_a == NULL ) throw gul::PoolAllocError(); 00189 for( int i=0; i<na; i++ ) m_a[i] = a[i]; 00190 00191 m_sign = sign; 00192 m_na = na; 00193 m_size_a = bsize; 00194 } |
|
Definition at line 196 of file guar_exact.h. References m_a, m_b, m_bounds, m_na, m_nb, m_refcount, m_sign, m_size_a, m_size_b, and gust::PoolAlloc().
00197 { 00198 size_t bsize; 00199 00200 m_refcount = 1; 00201 m_sign = 0; 00202 m_bounds = m_na = m_nb = 0; 00203 m_size_a = m_size_b = 0; 00204 m_a = m_b = NULL; 00205 if( a == 0 ) return; 00206 00207 m_a = (unsigned long *)gust::PoolAlloc( sizeof(unsigned long), &bsize ); 00208 if( m_a == NULL ) throw gul::PoolAllocError(); 00209 m_a[0] = a; 00210 00211 m_sign = sign; 00212 m_na = 1; 00213 m_size_a = bsize; 00214 } |
|
Definition at line 217 of file guar_exact.h. References m_a, m_b, m_bounds, m_na, m_nb, m_refcount, m_sign, m_size_a, m_size_b, and gust::PoolAlloc().
00218 { 00219 size_t bsize; 00220 00221 m_refcount = 1; 00222 m_sign = 0; 00223 m_bounds = m_na = m_nb = 0; 00224 m_size_a = m_size_b = 0; 00225 m_a = m_b = NULL; 00226 00227 if( na != 0 ) 00228 { 00229 m_sign = sign; 00230 m_a = (unsigned long *)gust::PoolAlloc( na*sizeof(unsigned long),&bsize); 00231 if( m_a == NULL ) throw gul::PoolAllocError(); 00232 m_size_a = bsize; 00233 m_na = na; 00234 } 00235 if( nb != 0 ) 00236 { 00237 m_b = (unsigned long *)gust::PoolAlloc( nb*sizeof(unsigned long),&bsize); 00238 if( m_b == NULL ) throw gul::PoolAllocError(); 00239 m_size_b = bsize; 00240 m_nb = nb; 00241 } 00242 } |
|
Definition at line 244 of file guar_exact.h. References m_a, m_b, m_size_a, m_size_b, and gust::PoolFree(). Referenced by guar::rational::operator=(), and guar::rational::~rational().
00245 { 00246 if( (m_size_a != 0) && (m_a != NULL) ) gust::PoolFree( m_a, m_size_a ); 00247 if( (m_size_b != 0) && (m_b != NULL) ) gust::PoolFree( m_b, m_size_b ); 00248 } |
|
Definition at line 267 of file guar_exact.h. References dump(), and m_bounds. Referenced by guar::rational::calc_bounds(), and guar::rational::get_bounds().
00268 { 00269 Interval inum,iden; 00270 double num,den; 00271 00272 dump( num, den ); 00273 if( num != 0.0 ) 00274 { 00275 inum.m_low = num - DBL_EPSILON*fabs(num); 00276 inum.m_high = num + DBL_EPSILON*fabs(num); 00277 } 00278 else 00279 { 00280 inum.m_low = inum.m_high = 0.0; 00281 } 00282 00283 if( den != 1.0 ) 00284 { 00285 iden.m_low = den - DBL_EPSILON*fabs(den); 00286 iden.m_high = den + DBL_EPSILON*fabs(den); 00287 } 00288 else 00289 { 00290 iden.m_low = iden.m_high = 1.0; 00291 } 00292 00293 m_i = inum/iden; 00294 00295 m_bounds = 1; 00296 } |
|
Definition at line 251 of file guar_exact.h. References m_a, m_b, m_na, and m_nb. Referenced by calc_bounds(), and guar::rational::dump().
|
|
Definition at line 298 of file guar_exact.h.
|
|
Definition at line 304 of file guar_exact.h. References m_a, m_b, m_na, m_nb, m_size_a, m_size_b, gust::PoolAlloc(), and gust::PoolFree().
00305 { 00306 size_t bsize; 00307 unsigned long *p; 00308 int i; 00309 00310 if( m_na == 0 ) throw gul::Error(); 00311 00312 if( (m_na == 1) && (m_a[0] == 1) ) 00313 { 00314 gust::PoolFree( m_a, m_size_a ); 00315 m_na = 0; 00316 m_size_a = 0; 00317 m_a = NULL; 00318 } 00319 00320 if( m_size_b == 0 ) 00321 { 00322 m_b = (unsigned long *)gust::PoolAlloc( sizeof(unsigned long), &bsize ); 00323 if( m_b == NULL ) throw gul::PoolAllocError(); 00324 m_nb = 1; 00325 m_b[0] = 1; 00326 m_size_b = bsize; 00327 } 00328 00329 i = m_na; m_na = m_nb; m_nb = i; 00330 bsize = m_size_a; m_size_a = m_size_b; m_size_b = bsize; 00331 p = m_a; m_a = m_b; m_b = p; 00332 } |
|
Definition at line 151 of file guar_exact.h. Referenced by guar::rational::div_mod(), dump(), guar::rational::get_copy(), rational_rep(), reciprocal(), and ~rational_rep(). |
|
Definition at line 154 of file guar_exact.h. Referenced by guar::rational::div_mod(), dump(), guar::rational::get_copy(), rational_rep(), reciprocal(), and ~rational_rep(). |
|
Definition at line 164 of file guar_exact.h. Referenced by calc_bounds(), guar::rational::get_bounds(), and rational_rep(). |
|
Definition at line 161 of file guar_exact.h. Referenced by guar::rational::get_bounds(). |
|
Definition at line 150 of file guar_exact.h. Referenced by guar::rational::div_mod(), dump(), guar::rational::get_copy(), negative(), rational_rep(), and reciprocal(). |
|
Definition at line 153 of file guar_exact.h. Referenced by guar::rational::div_mod(), dump(), guar::rational::get_copy(), rational_rep(), and reciprocal(). |
|
Definition at line 159 of file guar_exact.h. Referenced by guar::rational::operator=(), rational_rep(), and guar::rational::~rational(). |
|
Definition at line 163 of file guar_exact.h. Referenced by guar::rational::div_mod(), guar::rational::get_copy(), negative(), and rational_rep(). |
|
Definition at line 156 of file guar_exact.h. Referenced by rational_rep(), reciprocal(), and ~rational_rep(). |
|
Definition at line 157 of file guar_exact.h. Referenced by rational_rep(), reciprocal(), and ~rational_rep(). |