Vai all indice del manuale di programmazione
Tipo:
Funzione
Libreria LogicLab:
eLLabMathsLib
Libreria Codesys:
Non disponibile
La mezza precisione (Chiamata FP16 o float16) è un formato numerico binario a virgola mobile che occupa 16 bit. È destinato alla memorizzazione di valori in virgola mobile in applicazioni in cui non è essenziale una maggiore precisione, in particolare nell’elaborazione delle immagini e nelle reti neurali.
Float16To32, Float 16-bit to 32-bit conversion
Descrizione
Value (WORD) Valore in formato Float16 da convertire.
La funzione ritorna (REAL) valore convertito in formato IEE754.

Esempi
Come utilizzare gli esempi
ST_Float16To32: Eseguite alcune conversioni di esempio.
LogicLab (Ptp179, ST_Float16To32)
PROGRAM ST_Float16To32
VAR
PZValue : REAL; (* Positive zero value *)
SPSNumber : REAL; (* Smallest positive subnormal number *)
LSNumber : REAL; (* Largest subnormal number *)
SPNumber : REAL; (* Smallest positive number *)
OneThird : REAL; (* One third value *)
LNLessOne : REAL; (* Largest number less than one *)
OValue : REAL; (* One value *)
SNLargerOne : REAL; (* Smallest number larger than one *)
LNNumber : REAL; (* Largest normal number *)
PInfinity : REAL; (* Positive infinity *)
NZValue : REAL; (* Negative zero value *)
NExample : REAL; (* Negative example number *)
NInfinity : REAL; (* Negative infinity *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_Float16To32"
// *****************************************************************************
// Executes some conversions.
// -----------------------------------------------------------------------------
PZValue:=Float16To32(16#0000); //0.0
SPSNumber:=Float16To32(16#0001); //0.000000059604645
LSNumber:=Float16To32(16#03FF); //0.000060975552
SPNumber:=Float16To32(16#0400); //0.00006103515625
OneThird:=Float16To32(16#3555); //0.33325195
LNLessOne:=Float16To32(16#3BFF); //0.99951172
OValue:=Float16To32(16#3C00); //1.0
SNLargerOne:=Float16To32(16#3C01); //1.00097656
LNNumber:=Float16To32(16#7BFF); //65504.0
PInfinity:=Float16To32(16#7C00); //Positive infinity
NZValue:=Float16To32(16#8000); //-0.0
NExample:=Float16To32(16#C000); //-2.0
NInfinity:=Float16To32(16#FC00); //Negative infinity
// [End of file]
Float32To16, Float 32-bit to 16-bit conversion
Descrizione
Value (REAL) Valore in formato IEE754 da convertire.
La funzione ritorna (WORD) valore convertito in formato Float16.

Esempi
Come utilizzare gli esempi
ST_Float32To16: Eseguite alcune conversioni di esempio.
LogicLab (Ptp179, ST_Float32To16)
PROGRAM ST_Float32To16
VAR
PZValue : WORD; (* Positive zero value *)
SPSNumber : WORD; (* Smallest positive subnormal number *)
LSNumber : WORD; (* Largest subnormal number *)
SPNumber : WORD; (* Smallest positive number *)
OneThird : WORD; (* One third value *)
LNLessOne : WORD; (* Largest number less than one *)
OValue : WORD; (* One value *)
SNLargerOne : WORD; (* Smallest number larger than one *)
LNNumber : WORD; (* Largest normal number *)
PInfinity : WORD; (* Positive infinity *)
NZValue : WORD; (* Negative zero value *)
NExample : WORD; (* Negative example number *)
NInfinity : WORD; (* Negative infinity *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_Float32To16"
// *****************************************************************************
// Executes some conversions.
// -----------------------------------------------------------------------------
PZValue:=Float32To16(0.0); //0.0
SPSNumber:=Float32To16(0.000000059604645); //16#001
LSNumber:=Float32To16(0.000060975552); //16#03FF
SPNumber:=Float32To16(0.00006103515625); //16#0400
OneThird:=Float32To16(0.33325195); //16#3555
LNLessOne:=Float32To16(0.99951172); //16#3BFF
OValue:=Float32To16(1.0); //16#3C00
SNLargerOne:=Float32To16(1.00097656); //16#3C01
LNNumber:=Float32To16(65504.0); //16#7BFF
// PInfinity:=Float32To16(inf); //16#7C00
NZValue:=Float32To16(-0.0); //16#8000
NExample:=Float32To16(-2.0); //16#C000
// NInfinity:=Float32To16(-inf); //16#FC00
// [End of file]