clear;
//
// La funzione "number_properties" rivela le proprietà dei numeri di macchina
// (vedere la descrizione della funzione nell'help di Scilab)
//
base = number_properties("radix");
precisione = number_properties("digits");
prec_macchina = number_properties("eps");
massimo = number_properties("huge");
min_positivo_normalizz = number_properties("tiny");
min_positivo = number_properties("tiniest");
esponente_minimo = number_properties("minexp");
esponente_massimo = number_properties("maxexp");
//
// Mostra i risultati (vedere l'help di "printf_conversion")
//
printf("\n\nModello con esponente illimitato:\n");
printf("\nBase = %u", base);
printf("\nPrecisione = %u", precisione);
printf("\nPrecisione di macchina = %3.2e", prec_macchina);
//
// Nel modello con esponente limitato si ha:
//
printf("\n\nModello con esponente limitato:\n");
printf("\nMassimo numero di macchina = %3.2e", massimo);
printf("\nMinimo numero di macchina positivo normalizzato= %3.2e",...
                                                   min_positivo_normalizz);
printf("\nMinimo numero di macchina positivo = %3.2e", min_positivo);
printf("\nValore minimo dell''esponente = %i", esponente_minimo);
printf("\nValore massimo dell''esponente = %i", esponente_massimo);
//
// L'istruzione "[fraz, esp] = frexp(x)" fornisce la frazione (fraz) e
// l'esponente (esp) di un dato numero di macchina x. Le istruzioni
// "succ_x = nearfloat("succ",x)" e "pred_x = nearfloat("pred",x)"
// forniscono, rispettivamente, il successore ed il predecessore di un dato
// numero di macchina x.
//
printf("\n\nEsponente, frazione, successore e predecessore di x:\n\n");
x = input("...inserisci un valore per x e premi INVIO...");
[fraz,esp] = frexp(x);
printf("\nEsponente = %i , ", esp);
printf("frazione = %20.19e", fraz);
//
succ_x = nearfloat("succ",x);
pred_x = nearfloat("pred",x);
printf("\n\nSuccessore: %20.19e",succ_x);
printf("\nPredecessore: %20.19e",pred_x);
//
// Verifico le distanze tra numeri consecutivi
//
[g,b] = frexp(pred_x);
printf("\n\nx - pred_x == 2^b * prec_macchina ? ... %s",...
          string(x - pred_x == 2^(b-precisione)));
printf("\n\nsucc_x - x == 2^b * prec_macchina ? ... %s",...
          string(succ_x - x == 2^(esp-precisione)));

