Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/Beta/Math/MCNumber.hpp File Reference

Go to the source code of this file.

Defines

#define MC_Number_Verify(cast, ZERO)
#define MC_Number_Operators1(Number, cast)
#define MC_Number_Operators2(Number, cast, number)

Functions

void verify ()
MathState verify (cast n)
MathState getState (const char *s)
BOOL isEqualTo (const Number &l, const Number &r)
BOOL isLessThan (const Number &l, const Number &r)
BOOL isBiggerThan (const Number &l, const Number &r)
BOOL operator== (const Number &l, const Number &r)
BOOL operator!= (const Number &l, const Number &r)
BOOL operator< (const Number &l, const Number &r)
BOOL operator<= (const Number &l, const Number &r)
BOOL operator> (const Number &l, const Number &r)
BOOL operator>= (const Number &l, const Number &r)
Number add (const Number &l, const Number &r)
Number sub (const Number &l, const Number &r)
Number mult (const Number &l, const Number &r)
Number div (const Number &l, const Number &r)
Number operator+ (const Number &l, const Number &r)
Number operator- (const Number &l, const Number &r)
Number operator * (const Number &l, const Number &r)
Number operator/ (const Number &l, const Number &r)
const Number & operator= (const Number &N)
Number operator! ()
Number operator- ()
Number operator-- ()
Number operator-- (int)
Number operator++ ()
Number operator++ (int)
BOOL isEqualTo (const Number &l, const number &n)
BOOL isLessThan (const Number &l, const number &n)
BOOL isBiggerThan (const Number &l, const number &n)
BOOL operator== (const Number &l, const number n)
BOOL operator!= (const Number &l, const number n)
BOOL operator< (const Number &l, const number n)
BOOL operator<= (const Number &l, const number n)
BOOL operator> (const Number &l, const number n)
BOOL operator>= (const Number &l, const number n)
BOOL operator== (const number n, const Number &r)
BOOL operator!= (const number n, const Number &r)
BOOL operator< (const number n, const Number &r)
BOOL operator<= (const number n, const Number &r)
BOOL operator> (const number n, const Number &r)
BOOL operator>= (const number n, const Number &r)
Number add (const Number &l, const number n)
Number sub (const Number &l, const number n)
Number sub (const number n, const Number &r)
Number mult (const Number &l, const number n)
Number div (const Number &l, const number n)
Number div (const number n, const Number &r)
Number operator+ (number n, const Number &r)
Number operator- (number n, const Number &r)
Number operator * (number n, const Number &r)
Number operator/ (number n, const Number &r)
Number operator+ (const Number &l, const number n)
Number operator- (const Number &l, const number n)
Number operator * (const Number &l, const number n)
Number operator/ (const Number &l, const number n)
const Number & operator= (number n)
 operator number () const


Define Documentation

#define MC_Number_Operators1 Number,
cast   
 

Definition at line 66 of file MCNumber.hpp.

#define MC_Number_Operators2 Number,
cast,
number   
 

Definition at line 186 of file MCNumber.hpp.

#define MC_Number_Verify cast,
ZERO   
 

Definition at line 14 of file MCNumber.hpp.


Function Documentation

friend Number add const Number &    l,
const number    n
 

Definition at line 258 of file MCNumber.hpp.

00258                                                        {              
00259     cast v = (cast)n;                                                 
00260     MathState s = MathStateAdd[ (int)l.state ][ (int)verify(v) ];     
00261     return Number( l.value + v, s );                                  
00262   }                                                                   

friend Number add const Number &    l,
const Number &    r
 

Definition at line 111 of file MCNumber.hpp.

00111                                                         {             
00112     MathState s = MathStateAdd[ (int)l.state ][ (int)r.state ];       
00113     return Number( l.value + r.value, s );                            
00114   }                                                                   

friend Number div const number    n,
const Number &    r
 

Definition at line 289 of file MCNumber.hpp.

00289                                                        {              
00290     cast v = (cast)n;                                                 
00291     MathState s = MathStateDiv[ (int)verify(v) ][ (int)r.state ];     
00292     if ( s != Valid ) return Number( v, s );                          
00293     return Number( v / r.value, s );                                  
00294   }                                                                   

friend Number div const Number &    l,
const number    n
 

Definition at line 282 of file MCNumber.hpp.

00282                                                        {              
00283     cast v = (cast)n;                                                 
00284     MathState s = MathStateDiv[ (int)l.state ][ (int)verify(v) ];     
00285     if ( s != Valid ) return Number( l.value, s );                    
00286     return Number( l.value / v, s );                                  
00287   }                                                                   

friend Number div const Number &    l,
const Number &    r
 

Definition at line 126 of file MCNumber.hpp.

00126                                                         {             
00127     MathState s = MathStateDiv[ (int)l.state ][ (int)r.state ];       
00128     if ( s != Valid ) return Number( l.value, s );                    
00129     return Number( l.value / r.value, s );                            
00130   }                                                                   

MathState getState const char *    s
 

Definition at line 28 of file MCNumber.hpp.

00028                                       {                               
00029     if ( s == NULL ) return Zero;                                     
00030     if ( strlen(s) < 2 ) return Valid;                                
00031                                                                       
00032     char* sUp = strupr( strdup( s ) );                                
00033                                                                       
00034     char* sPosInf  = "POSITIVE INFINITE POSINFINITE +INFINITE";       
00035     char* sNegInf  = "NEGATIVE INFINITE NEGINFINITE -INFINITE";       
00036     char* sNaN     = "NAN";                                           
00037     char* sFPError = "FPERROR FLOATING-POINT ERROR FLOAT ERROR";      
00038                                                                       
00039     char* f1 = strstr( sPosInf,  sUp );                               
00040     char* f2 = strstr( sNegInf,  sUp );                               
00041     char* f3 = strstr( sNaN,     sUp );                               
00042     char* f4 = strstr( sFPError, sUp );                               
00043                                                                       
00044     long n1 = (long)( f1 - sUp );                                     
00045     long n2 = (long)( f2 - sUp );                                     
00046     long n3 = (long)( f3 - sUp );                                     
00047     long n4 = (long)( f4 - sUp );                                     
00048                                                                       
00049     #ifdef __J2K__DEBUG                                               
00050        printf("Up=[%s](%d)\n", sUp, strlen(sUp) );                    
00051        printf("f1=[%s](%d)\n", f1,  n1 );                             
00052        printf("f2=[%s](%d)\n", f2,  n2 );                             
00053        printf("f3=[%s](%d)\n", f3,  n3 );                             
00054        printf("f4=[%s](%d)\n", f4,  n4 );                             
00055     #endif                                                            
00056                                                                       
00057     if ( n1 > 0 ) return PosInf;                                      
00058     if ( n2 > 0 ) return NegInf;                                      
00059     if ( n3 > 0 ) return NaN;                                         
00060     if ( n4 > 0 ) return FPError;                                     
00061                                                                       
00062     return Valid;                                                     
00063   }                                                                   

friend BOOL isBiggerThan const Number &    l,
const number   n
 

Definition at line 202 of file MCNumber.hpp.

00202                                                                {      
00203     cast v = (cast)n;                                                 
00204     int temp = MathStateBiggerThan[ (int)l.state ][ (int)verify(v) ]; 
00205     if ( temp < 2 ) return (BOOL)temp;                                
00206     return (l.value > v );                                            
00207   }                                                                   

friend BOOL isBiggerThan const Number &    l,
const Number &    r
 

Definition at line 80 of file MCNumber.hpp.

00080                                                                {      
00081     int temp = MathStateBiggerThan[ (int)l.state ][ (int)r.state ];   
00082     if ( temp < 2 ) return (BOOL)temp;                                
00083     return (l.value >  r.value);                                      
00084   }                                                                   

friend BOOL isEqualTo const Number &    l,
const number   n
 

Definition at line 188 of file MCNumber.hpp.

00188                                                             {         
00189     cast v = (cast)n;                                                 
00190     int temp = MathStateEqualTo[ (int)l.state ][ (int)verify(v) ];    
00191     if ( temp < 2 ) return (BOOL)temp;                                
00192     return ( l.value == v );                                          
00193   }                                                                   

friend BOOL isEqualTo const Number &    l,
const Number &    r
 

Definition at line 68 of file MCNumber.hpp.

00068                                                             {         
00069     int temp = MathStateEqualTo[ (int)l.state ][ (int)r.state ];      
00070     if ( temp < 2 ) return (BOOL)temp;                                
00071     return ( l.value == r.value );                                    
00072   }                                                                   

friend BOOL isLessThan const Number &    l,
const number   n
 

Definition at line 195 of file MCNumber.hpp.

00195                                                              {        
00196     cast v = (cast)n;                                                 
00197     int temp = MathStateLessThan[ (int)l.state ][ (int)verify(v) ];   
00198     if ( temp < 2 ) return (BOOL)temp;                                
00199     return ( l.value < v );                                           
00200   }                                                                   

friend BOOL isLessThan const Number &    l,
const Number &    r
 

Definition at line 74 of file MCNumber.hpp.

00074                                                              {        
00075     int temp = MathStateLessThan[ (int)l.state ][ (int)r.state ];     
00076     if ( temp < 2 ) return (BOOL)temp;                                
00077     return (l.value <  r.value);                                      
00078   }                                                                   

friend Number mult const Number &    l,
const number    n
 

Definition at line 276 of file MCNumber.hpp.

00276                                                         {             
00277     cast v = (cast)n;                                                 
00278     MathState s = MathStateMult[ (int)l.state ][ (int)verify(v) ];    
00279     return Number( l.value * v, s );                                  
00280   }                                                                   

friend Number mult const Number &    l,
const Number &    r
 

Definition at line 121 of file MCNumber.hpp.

00121                                                          {            
00122     MathState s = MathStateMult[ (int)l.state ][ (int)r.state ];      
00123     return Number( l.value * r.value, s );                            
00124   }                                                                   

friend Number operator * const Number &    l,
const number    n
[inline]
 

Definition at line 321 of file MCNumber.hpp.

00321                                                                     { 
00322     return mult( l, n );                                              
00323   }                                                                   

friend Number operator * number    n,
const Number &    r
[inline]
 

Definition at line 304 of file MCNumber.hpp.

00304                                                               {       
00305     return mult( r, n );                                              
00306   }                                                                   

friend Number operator * const Number &    l,
const Number &    r
[inline]
 

Definition at line 140 of file MCNumber.hpp.

00140                                                                      {
00141     return mult( l, r );                                              
00142   }                                                                   

operator number   const [inline]
 

Definition at line 336 of file MCNumber.hpp.

00336 { return (number)value; }            

Number operator!   [inline]
 

Definition at line 155 of file MCNumber.hpp.

00155                             {                                         
00156     return Number( !value, status );                                  
00157   }                                                                   

friend BOOL operator!= const number    n,
const Number &    r
[inline]
 

Definition at line 237 of file MCNumber.hpp.

00237                                                                    {  
00238     return !isEqualTo( r, n );                                        
00239   }                                                                  

friend BOOL operator!= const Number &    l,
const number    n
[inline]
 

Definition at line 213 of file MCNumber.hpp.

00213                                                                    {  
00214     return !isEqualTo( l, n );                                        
00215   }                                                                   

friend BOOL operator!= const Number &    l,
const Number &    r
[inline]
 

Definition at line 90 of file MCNumber.hpp.

00090                                                                     { 
00091     return  !isEqualTo( l, r );                                       
00092   }                                                                   

friend Number operator+ const Number &    l,
const number    n
[inline]
 

Definition at line 313 of file MCNumber.hpp.

00313                                                                     { 
00314     return add( l, n );                                               
00315   }                                                                   

friend Number operator+ number    n,
const Number &    r
[inline]
 

Definition at line 296 of file MCNumber.hpp.

00296                                                               {       
00297     return add( r, n );                                               
00298   }                                                                   

friend Number operator+ const Number &    l,
const Number &    r
[inline]
 

Definition at line 132 of file MCNumber.hpp.

00132                                                                      {
00133     return add( l, r );                                               
00134   }                                                                   

Number operator++ int    [inline]
 

Definition at line 180 of file MCNumber.hpp.

00180                                   {                                   
00181     value++;                                                          
00182     return *this;                                                     
00183   }                                                                   

Number operator++   [inline]
 

Definition at line 175 of file MCNumber.hpp.

00175                              {                                        
00176     ++value;                                                          
00177     return *this;                                                     
00178   }                                                                   

friend Number operator- const Number &    l,
const number    n
[inline]
 

Definition at line 317 of file MCNumber.hpp.

00317                                                                     { 
00318     return sub( l, n );                                               
00319   }                                                                   

friend Number operator- number    n,
const Number &    r
[inline]
 

Definition at line 300 of file MCNumber.hpp.

00300                                                               {       
00301     return sub( n, r );                                               
00302   }                                                                   

Number operator-   [inline]
 

Definition at line 159 of file MCNumber.hpp.

00159                             {                                         
00160     if ( (int)status < 4 ) return Number( (-1) * value, Valid );      
00161     return Number( (-1) * value, status );                            
00162   }                                                                   

friend Number operator- const Number &    l,
const Number &    r
[inline]
 

Definition at line 136 of file MCNumber.hpp.

00136                                                                      {
00137     return sub( l, r );                                               
00138   }                                                                   

Number operator-- int    [inline]
 

Definition at line 170 of file MCNumber.hpp.

00170                                   {                                   
00171     value--;                                                          
00172     return *this;                                                     
00173   }                                                                   

Number operator--   [inline]
 

Definition at line 165 of file MCNumber.hpp.

00165                              {                                        
00166     --value;                                                          
00167     return *this;                                                     
00168   }                                                                   

friend Number operator/ const Number &    l,
const number    n
[inline]
 

Definition at line 325 of file MCNumber.hpp.

00325                                                                     { 
00326     return div( l, n );                                               
00327   }                                                                   

friend Number operator/ number    n,
const Number &    r
[inline]
 

Definition at line 308 of file MCNumber.hpp.

00308                                                               {       
00309     return div( n, r );                                               
00310   }                                                                   

friend Number operator/ const Number &    l,
const Number &    r
[inline]
 

Definition at line 144 of file MCNumber.hpp.

00144                                                                      {
00145     return div( l, r );                                               
00146   }                                                                   

friend BOOL operator< const number    n,
const Number &    r
[inline]
 

Definition at line 241 of file MCNumber.hpp.

00241                                                                    {  
00242     return  isBiggerThan( r, n );                                     
00243   }                                                                   

friend BOOL operator< const Number &    l,
const number    n
[inline]
 

Definition at line 217 of file MCNumber.hpp.

00217                                                                    {  
00218     return  isLessThan( l, n );                                       
00219   }                                                                   

friend BOOL operator< const Number &    l,
const Number &    r
[inline]
 

Definition at line 94 of file MCNumber.hpp.

00094                                                                     { 
00095     return  isLessThan( l, r );                                       
00096   }                                                                   

friend BOOL operator<= const number    n,
const Number &    r
[inline]
 

Definition at line 245 of file MCNumber.hpp.

00245                                                                    {  
00246     return ( isBiggerThan( r, n ) || isEqualTo( r, n ) );             
00247   }                                                                   

friend BOOL operator<= const Number &    l,
const number    n
[inline]
 

Definition at line 221 of file MCNumber.hpp.

00221                                                                    {  
00222     return ( isLessThan( l, n ) || isEqualTo( l, n ) );               
00223   }                                                                   

friend BOOL operator<= const Number &    l,
const Number &    r
[inline]
 

Definition at line 98 of file MCNumber.hpp.

00098                                                                     { 
00099     return  ( isLessThan( l, r ) || isEqualTo( l, r ) );              
00100   }                                                                   

const Number& operator= number    n [inline]
 

Definition at line 330 of file MCNumber.hpp.

00330                                            {                          
00331     value  = (cast)n;                                                 
00332     status = verify( value );                                         
00333     return *this;                                                     
00334   }                                                                   

const Number& operator= const Number &    N [inline]
 

Definition at line 149 of file MCNumber.hpp.

00149                                                    {                  
00150     value  = N.value;                                                 
00151     status = N.status;                                                
00152     return *this;                                                     
00153   }                                                                   

friend BOOL operator== const number    n,
const Number &    r
[inline]
 

Definition at line 233 of file MCNumber.hpp.

00233                                                                    {  
00234     return  isEqualTo( r, n );                                        
00235   }                                                                   

friend BOOL operator== const Number &    l,
const number    n
[inline]
 

Definition at line 209 of file MCNumber.hpp.

00209                                                                    {  
00210     return  isEqualTo( l, n );                                        
00211   }                                                                   

friend BOOL operator== const Number &    l,
const Number &    r
[inline]
 

Definition at line 86 of file MCNumber.hpp.

00086                                                                     { 
00087     return   isEqualTo( l, r );                                       
00088   }                                                                   

friend BOOL operator> const number    n,
const Number &    r
[inline]
 

Definition at line 249 of file MCNumber.hpp.

00249                                                                    {  
00250     return  isLessThan( r, n );                                       
00251   }                                                                   

friend BOOL operator> const Number &    l,
const number    n
[inline]
 

Definition at line 225 of file MCNumber.hpp.

00225                                                                    {  
00226     return  isBiggerThan( l, n );                                     
00227   }                                                                   

friend BOOL operator> const Number &    l,
const Number &    r
[inline]
 

Definition at line 102 of file MCNumber.hpp.

00102                                                                     { 
00103     return  isBiggerThan( l, r );                                     
00104   }                                                                   

friend BOOL operator>= const number    n,
const Number &    r
[inline]
 

Definition at line 253 of file MCNumber.hpp.

00253                                                                    {  
00254     return ( isLessThan( r, n ) || isEqualTo( r, n ) );               
00255   }                                                                   

friend BOOL operator>= const Number &    l,
const number    n
[inline]
 

Definition at line 229 of file MCNumber.hpp.

00229                                                                    {  
00230     return ( isBiggerThan( l, n ) || isEqualTo( l, n ) );             
00231   }                                                                   

friend BOOL operator>= const Number &    l,
const Number &    r
[inline]
 

Definition at line 106 of file MCNumber.hpp.

00106                                                                     { 
00107     return  ( isBiggerThan( l, r ) || isEqualTo( l, r ) );            
00108   }                                                                   

friend Number sub const number    n,
const Number &    r
 

Definition at line 270 of file MCNumber.hpp.

00270                                                        {              
00271     cast v = (cast)n;                                                 
00272     MathState s = MathStateSub[ (int)verify(v) ][ (int)r.state ]      
00273     return Number( v - r.value, s );                                  
00274   }                                                                   

friend Number sub const Number &    l,
const number    n
 

Definition at line 264 of file MCNumber.hpp.

00264                                                        {              
00265     cast v = (cast)n;                                                 
00266     MathState s = MathStateSub[ (int)l.state ][ (int)verify(v) ];     
00267     return Number( l.value - v, s );                                  
00268   }                                                                   

friend Number sub const Number &    l,
const Number &    r
 

Definition at line 116 of file MCNumber.hpp.

00116                                                         {             
00117     MathState s = MathStateSub[ (int)l.state ][ (int)r.state ];       
00118     return Number( l.value - r.value, s );                            
00119   }                                                                   

MathState verify cast    n [inline]
 

Definition at line 22 of file MCNumber.hpp.

00022                                     {                                 
00023      if ( n > ZERO ) return Pos;                                      
00024      if ( n < ZERO ) return Neg;                                      
00025      return  Zero;                                                    
00026   }                                                                   

void verify   [inline]
 

Definition at line 15 of file MCNumber.hpp.

Referenced by Double::Double(), Float::Float(), Integer::Integer(), JCounter::JCounter::add(), JCounter::JCounter::divideBy(), JCounter::JCounter::multiply(), JCounter::JCounter::operator *(), JCounter::JCounter::operator+(), JCounter::JCounter::operator-(), JCounter::JCounter::operator/(), JCounter::JCounter::substract(), add(), div(), isBiggerThan(), isEqualTo(), isLessThan(), mult(), JCounter::operator+=(), JCounter::operator-=(), operator=(), JCounter::set(), and sub().

00015                        {                                              
00016      if ( s != Valid ) return;                                        
00017      if ( temp > ZERO ) {  status = Pos;  }                           
00018      if ( temp < ZERO ) {  status = Neg;  }                           
00019      status = Zero;                                                   
00020   }                                                                   


Generated on Sun Oct 14 18:46:57 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001