* Bug 15599 fixed: now degree of zero polynomial is -Inf
[scilab.git] / scilab / modules / ast / includes / system_env / numericconstants.hxx
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2015 - Scilab Enterprises - Antoine ELIAS
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15
16 #ifndef __NUMRICAL_CONSTANTS__
17 #define __NUMRICAL_CONSTANTS__
18
19 #include "dynlib_ast.h"
20 #include "machine.h"
21
22 extern "C" double C2F(dlamch) (const char *_val, unsigned long int);
23
24 class NumericConstants
25 {
26 public:
27     EXTERN_AST static double eps;                   //relative machine precision
28     EXTERN_AST static double safe_min;              //safe minimum, such that 1/sfmin does not overflow
29     EXTERN_AST static double base;                  //base of the machine
30     EXTERN_AST static double eps_machine;           //eps*base
31     EXTERN_AST static double num_mantissa_digits;   //number of (base) digits in the mantissa
32     EXTERN_AST static double rounded;               //1.0 when rounding occurs in addition, 0.0 otherwise
33     EXTERN_AST static double exp_min;               //minimum exponent before (gradual) underflow
34     EXTERN_AST static double double_min;                   //underflow threshold - base**(emin-1)
35     EXTERN_AST static double exp_max;               //largest exponent before overflow
36     EXTERN_AST static double double_max;                   //overflow threshold  - (base**emax)*(1-eps)
37
38     EXTERN_AST static void Initialize();
39
40 };
41 #endif /* !__NUMRICAL_CONSTANTS__ */