Scilab Function

number_properties - determine floating-point parameters

### Sequence d'appel

  `pr = number_properties(prop)`

### Parametres

- `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 :

- prop = "radix" -> pr is the radix `b` of the set `F`
- prop = "digits" -> pr is the number of digits `p`
- prop = "huge" -> pr is the max positive float of `F`
- prop = "tiny" -> pr is the min positive normalised float of `F`
- prop = "denorm" -> pr is a boolean : %t if denormalised numbers are used
- prop = "tiniest" -> if denorm = %t, pr is the min positive denormalised number else pr = tiny
- prop = "eps" -> 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" -> pr is `emin`
- prop = "maxexp" -> 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.

### Exemples

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

### Voir aussi

`nearfloat` `frexp`

### Auteur

Bruno Pincon