Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Scilab-Branch-5.3-GIT
Change language to: English - Português - 日本語

See the recommended documentation of this function

Aide Scilab >> Fonctions Elémentaires > Virgule flottante > number_properties

# number_properties

determine floating-point parameters

### Calling Sequence

`pr = number_properties(prop)`

### Arguments

prop

string

pr

real or boolean scalar

### Description

This function may be used to get the characteristic numbers/properties of the floating point set denoted here by `F(b,p,emin,emax)` (usually the 64 bits float numbers set prescribe by IEEE 754). Numbers of `F` are of the form:

`sign * m * b^e`

`e` is the exponent and `m` the mantissa:

`m = d_1 b^(-1) + d_2 b^(-2) + .... + d_p b^(-p)`

`d_i` the digits are in `[0, b-1]` and `e` in `[emin, emax]`, the number is said "normalised" if `d_1 ~= 0`. The following may be gotten:

then `pr` is the radix `b` of the set `F`

prop = "digits"

then `pr` is the number of digits `p`

prop = "huge"

then `pr` is the max positive float of `F`

prop = "tiny"

then `pr` is the min positive normalised float of `F`

prop = "denorm"

then `pr` is a boolean (%t if denormalised numbers are used)

prop = "tiniest"

then if denorm = %t, `pr` is the min positive denormalised number else `pr` = tiny

prop = "eps"

then `pr` is the epsilon machine ( generally (`b^(1-p))/2` ) which is the relative max error between a real `x` (such than `|x|` in `[tiny, huge]`) and `fl(x)`, its floating point approximation in `F`

prop = "minexp"

then `pr` is `emin`

prop = "maxexp"

then `pr` is `emax`

### Remarks

This function uses the lapack routine dlamch to get the machine parameters (the names (radix, digit, huge, etc...) are those recommended by the LIA 1 standard and are different from the corresponding lapack's ones) ; CAUTION: sometimes you can see the following definition for the epsilon machine : `eps = b^(1-p)` but in this function we use the traditionnal one (see prop = "eps" before) and so ```eps = (b^(1-p))/2``` if normal rounding occurs and ```eps = b^(1-p)``` if not.

### Examples

```b = number_properties("radix")
eps = number_properties("eps")```

• nearfloat — get previous or next floating-point number
• frexp — calcule la représentation en base 2 (mantisse et exposant) d'un nombre flottant.

Bruno Pincon