[C++] Quoziente e Resto

Messaggioda utente__medio » 28/12/2021, 12:40

Ciao, riflettendo sull'ottimizzazione di una libreria sui "big int" da me scritta, mi sono focalizzato sul fatto che la funzione di divisione (che sfrutta più o meno l'algoritmo della classica divisione in colonna insegnata a scuola) calcola contemporaneamente sia il quoziente che il resto, per poi ritornare l'uno o l'altro in base alla richiesta; quindi se per uno stesso dividendo e divisore mi servono sia quoziente che resto, dovrò eseguire la funzione due volte.
Detto ciò, prima di cimentarmi in soluzioni fantasiose, mi chiedevo se qualcosa di simile avviene anche per la divisione intera nativa e nel caso come viene gestito il tutto?!
"Ci abbaiano, Sancho; segno che stiamo cavalcando!"
utente__medio
Junior Member
Junior Member
 
Messaggio: 43 di 394
Iscritto il: 02/11/2021, 12:48
Località: Draghistan

Re: [C++] Quoziente e Resto

Messaggioda utente__medio » 29/12/2021, 09:30

Ho fatto qualche ricerca, e com'era prevedibile esiste una funzione std::div() che ritorna quoziente e resto mediante un'apposita struct.

Inoltre ho letto che molti compilatori in casi come il seguente
Codice:
int q = a / b;
int r = a % b

sono in grado di ottimizzare il tutto eseguendo una sola divisione.
A tal proposito le due istruzioni devono essere per forza consecutive? Questa ottimizzazione vale solo per la divisione intera nativa o anche in presenza di overload degli operatori / e %?
"Ci abbaiano, Sancho; segno che stiamo cavalcando!"
utente__medio
Junior Member
Junior Member
 
Messaggio: 44 di 394
Iscritto il: 02/11/2021, 12:48
Località: Draghistan

Re: [C++] Quoziente e Resto

Messaggioda apatriarca » 31/12/2021, 19:15

Ogni compilatore si comporta in modo differente e lo stesso compilatore può avere comportamenti differenti in base alla versione e alle opzioni usate per compilare.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5641 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C++] Quoziente e Resto

Messaggioda utente__medio » 01/01/2022, 13:31

Quindi in definitiva la cosa migliore rimane implementare qualcosa come std::div() e lasciare all'utente la possibilità di sfruttare o meno tale ottimizzazione?
"Ci abbaiano, Sancho; segno che stiamo cavalcando!"
utente__medio
Junior Member
Junior Member
 
Messaggio: 45 di 394
Iscritto il: 02/11/2021, 12:48
Località: Draghistan

Re: [C++] Quoziente e Resto

Messaggioda apatriarca » 01/01/2022, 14:31

Nel caso di una libreria per big int la soluzione corretta è certamente quella di avere una funzione che restituisce entrambi i valori.
apatriarca
Moderatore
Moderatore
 
Messaggio: 5642 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite