FastPower - ridicare la putere
Last Updated: Nov 13 2020 18:48, Started by
MihaiProg
, Nov 13 2020 10:15
·
0
#1
Posted 13 November 2020 - 10:15
FastPower - ridicare la putere (baza/exponent)
proiect Visual Studio 2008 (codul sursa inclus), program consola. pentru a ridica la putere numerele mai mari utilizeaza setul de instructiuni SSE, deci cei 128 biti (__m128i) putand sa pastreze un rezultat de pana la 2^128-1. Attached Files |
#3
Posted 13 November 2020 - 16:01
Quote // Explicatia optimizarii: nu este nici un motiv pentru a inmultii x cu 1 Quote if (n & 1) // daca n nu este divizibil la 2 |
#4
Posted 13 November 2020 - 16:50
MarianG, on 13 noiembrie 2020 - 15:37, said:
Cei 128 de biti nu sunt de fapt 4 grupe de 32 ? au aceeasi viteza cu instructiunile "normale" pe 32 biti. Quote
if (n & 1) // daca n nu este divizibil la 2 Esti sigur ca asta se verifica ? doar ultimul bit conteaza pentru paritate - de aceea am facut n&1 (n and 1). Cat despre optimizarea aceea este doar cu un pas mai putin decat standardul Exponentiation by squaring. Contrar a ceea ce credeam initial problema nu este viteza de executie ci modul de stocare a numerelor; ruland programul nu vei obtine un timp mai mare de 0,000... |
#5
Posted 13 November 2020 - 17:50
asta ce divizori cauta ?
(a & 2) MihaiProg, on 13 noiembrie 2020 - 16:50, said:
ruland programul nu vei obtine un timp mai mare de 0,000... daca e nevoie foloseste "extended precision" sa ne cat mai exact care este timpul ala Si daca tot comparam https://www.mpfr.org...metic-Functions MihaiProg, on 13 noiembrie 2020 - 16:50, said:
Da, cei 128 biti sunt 4x32 biti = 128 biti. Este utilizat SSE care poate un pic suprinzator (aparent asa este dupa testari) au aceeasi viteza cu instructiunile "normale" pe 32 biti. |
#6
Posted 13 November 2020 - 17:56
#7
Posted 13 November 2020 - 18:48
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users