Javascript: costanti della macchina applicabili?

0

Scrivo routine numeriche per studenti di scienze e ingegneria (anche se sono liberamente disponibili per l'uso da chiunque altro) e mi chiedo come utilizzare correttamente le costanti macchina in un programma JavaScript, o se sono addirittura applicabili.

Ad esempio, dire che sto scrivendo un programma in C ++ che calcola numericamente le radici della seguente equazione:

exp (-0.7x) + sin (3x) - 1.2x + 0.3546 = 0

Una routine di ricerca delle radici dovrebbe essere in grado di calcolare le radici all'interno della macchina epsilon. In C ++, questo valore è specificato dalla lingua: DBL_EPSILON. C ++ specifica anche i valori più piccoli e più grandi che possono essere tenuti da una variabile mobile o doppia.

Tuttavia, come si converte in JavaScript? Poiché un programma Javascript viene eseguito in un browser Web e non so quale tipo di computer eseguirà il programma, e JavaScript non ha valori predefiniti corrispondenti per queste quantità, come posso implementare la mia versione di queste costanti in modo che il mio i programmi calcolano i risultati con la massima precisione consentita sul computer che esegue il browser web?

La mia prima bozza è copiare semplicemente le costanti letterali da C ++:

FLT_MIN: 1.17549435082229e-038
FLT_MAX: 3.40282346638529e + 038
DBL_EPSILON: 2.2204460492503131e-16

Sono anche disposto a scrivere piccoli blocchi di codice che potrebbero calcolare questi valori per ogni macchina su cui viene eseguito il programma. In questo modo, un supercomputer potrebbe calcolare i risultati con una precisione maggiore rispetto a un vecchio PC di basso livello.

MA, non so se una tale routine possa effettivamente raggiungere il computer, nel qual caso, perderei il mio tempo.

Qualcuno qui sa come calcolare e usare (in Javascript) i valori che corrispondono alle costanti della macchina in un linguaggio compilato?

Vale la pena di scrivere piccoli programmi in Javascript che calcolano DBL_EPSILON, FLT_MIN, FLT_MIN, ecc. per l'uso in routine numeriche? O sto meglio semplicemente assegnando costanti letterali che arrivano direttamente da C ++ su un PC Windows standard?

    
posta DavidB2013 07.06.2014 - 01:23
fonte

1 risposta

1

Il problema è in realtà l'opposto di ciò che affermi. C ++ è la lingua in cui non è possibile dipendere da valori particolari per queste metriche perché le implementazioni in virgola mobile variano mentre JavaScript impone i valori a virgola mobile a 64 bit basati su IEEE 754.

Pochissime persone fanno questo tipo di lavoro in JavaScript, quindi dubito che troverai tutto ciò che ti aiuta direttamente legato alla lingua, ma le metriche per la virgola mobile a 64 bit usando IEEE 754 possono essere trovate su wikipedia .

    
risposta data 08.06.2014 - 04:42
fonte

Leggi altre domande sui tag