home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 21 / IOPROG_21.ISO / SOFT / LIBMAT.ZIP / MATENV.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-16  |  2.6 KB  |  108 lines

  1. /**************************************************/
  2. /*         matenv.c  matEnvironment source        */
  3. /**************************************************/
  4.  
  5. /**************************************************/
  6. /*            MatClass Source File                */
  7. /*       Copyright of C. R. Birchenhall           */
  8. /*       University of Manchester, UK.            */
  9. /*   MatClass is freeware. This file should be    */
  10. /* made freely available to users of any software */
  11. /* whose creation is wholly or partly dependent   */
  12. /*                on this file.                   */
  13. /**************************************************/
  14.  
  15. #include "matrix.hpp"
  16. #include "math.h"
  17. // for sqrt
  18.  
  19. #ifndef NO_STATIC_DEC
  20. #ifdef __cplusplus
  21. INDEX matInitial::initiated ;
  22. REAL  matEnvironment::epsilon ;
  23. REAL  matEnvironment::tolerance ;
  24. int   matEnvironment::pageWidth ;
  25. int   matEnvironment::precision ;
  26. int   matEnvironment::fieldWidth ;
  27. int   matEnvironment::matForm ;
  28. #endif
  29. #endif
  30.  
  31. matInitial::matInitial( void )
  32. {
  33.    if ( initiated++ == 0 ) {
  34.       matFuncInitial() ;
  35.       matObjectInitial() ;
  36.       matFileInitial() ;
  37.    } // if
  38. } // matInitial
  39.  
  40. matInitial::~matInitial( void )
  41. {
  42.    initiated-- ;
  43. } // matInitial
  44.  
  45. static matEnvironment matEnv ;
  46.  
  47. matEnvironment::matEnvironment( void )
  48. {
  49.    DOUBLE x = 1.0 ;
  50.    epsilon = 1.0 ;
  51.    while ( ( x + epsilon ) > 1.0 ) epsilon /= 2.0 ;
  52.    epsilon *= 2.0 ;
  53.    tolerance = sqrt( epsilon )  ;
  54.    pageWidth = 80 ;
  55.    precision = 4 ;
  56.    fieldWidth = 14 ;
  57.    matForm = PLAIN ;
  58. } // matEnvironment
  59.  
  60. DOUBLE matrixTol( const DOUBLE newTol )
  61. {
  62.       DOUBLE oldTol = matEnv.tolerance ;
  63.       if ( newTol >= 0.0 )
  64.          matEnv.tolerance = newTol ;
  65.       return oldTol ;
  66. } // matrixTol
  67.  
  68. DOUBLE matrixEps( const DOUBLE newEps )
  69. {
  70.       DOUBLE oldEps = matEnv.epsilon ;
  71.       if ( newEps >= 0.0 )
  72.          matEnv.epsilon = newEps ;
  73.       return oldEps ;
  74. } // matrixEps
  75.  
  76. int matFormat( int value )
  77. {
  78.    int oldvalue = matEnv.matForm ;
  79.    if ( value > 0 )
  80.       matEnv.matForm = value ;
  81.    return oldvalue ;
  82. } // matFormat
  83.  
  84. int matPrecision( int value )
  85. {
  86.    int oldvalue = matEnv.precision ;
  87.    if ( value > 0 )
  88.       matEnv.precision = value ;
  89.    return oldvalue ;
  90. } // matPrecision
  91.  
  92. int matField( int value )
  93. {
  94.    int oldvalue = matEnv.fieldWidth ;
  95.    if ( value > 0 )
  96.       matEnv.fieldWidth = value ;
  97.    return oldvalue ;
  98. } // matField
  99.  
  100. int matPageWidth( int value )
  101. {
  102.    int oldvalue = matEnv.pageWidth ;
  103.    if ( value > 0 )
  104.       matEnv.pageWidth = value ;
  105.    return oldvalue ;
  106. } // matPageWidth
  107.  
  108.