So che sto reinventando la ruota. Ma sono davvero interessato a implementare numeri di precisione arbitrari (interi, razionali, complessi, ecc.) In C o C ++ e i loro algoritmi . Per favore sii paziente.
My question: How should I approach the process of implementation (and testing) of arbitrary-precision numerical algorithms in C or C++? I don't want to dive right in without a strategy and ultimately see my project fail.
Apprezzerò i consigli sulle seguenti domande: su quale base fondare il mio codice? Che tipo di struttura dovrei provare ad applicare al progetto? Qualche altro consiglio generale per me?
Ecco alcune domande ovvie:
Perché C o C ++? Perché non attenersi a Java?
Voglio implementare le mie implementazioni il più velocemente possibile senza sacrificare troppa leggibilità. Ho intenzione di mantenere le cose modulari e manutenibili.
Volevo essere il più vicino possibile alla macchina, quindi ho intenzione di uscire dalla mia zona di comfort: Java e imparare C e / o C ++ per un cambiamento. Ho la maggior parte della sintassi giù, ora ho solo bisogno di prendere le migliori pratiche e convenzioni. Spero che questo progetto mi aiuti a imparare anche C e / o C ++.
Perché vuoi farlo? Ci sono molte librerie là fuori. Usali.
Questo non è davvero il mio obiettivo. Voglio acquisire esperienza nel campo dell'implementazione di algoritmi numerici. Mi diplomerò il liceo questo aprile e voglio diventare un ricercatore nel campo dell'informatica. Una delle cose che mi ha costantemente affascinato è l'enorme numero di algoritmi per eseguire le operazioni matematiche più elementari: l'aritmetica generale di base. Voglio entrare nei dettagli degli algoritmi. Sono disposto ad analizzare matematicamente le mie implementazioni perché posso e voglio farlo.
Non è la destinazione; è il viaggio che sto cercando.
Chi è l'utente finale del tuo progetto?
Chiunque voglia utilizzare una libreria di precisione arbitraria veloce, sicura e stabile (per qualsiasi scopo, dalla crittografia alla progettazione del linguaggio). Renderò il progetto open source, quindi altre persone (ricercatori, sviluppatori) possono fare riferimento alla mia implementazione. Non ho intenzione di ricavarne dei profitti (almeno direttamente).
Che cosa hai intenzione di fare dopo?
Costruirò il mio progetto, magari provando ad aggiungere il supporto multi-thread per varie operazioni. Probabilmente userò questo nella mia tesi (molta strada da fare prima)
Non penso che nessun altro sarà interessato a questo.
Va bene. Ci lavorerò da solo.