Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Muzica trance

Soluție incalzire apartament...

Culori fire la boxele de jogger

Autorizatie Birou Acte Auto
 Parbriz defect

Ajutor cercetare lucrare de diser...

M-am culcat cu un tip și apo...

Facultate din Bucuresti posibil o...
 Eroare steering

Recomandare service pentru repara...

Premier Energy se listeaza la bursa

Unde recomandati un CT cu Casa de...
 Adaptare masina pentru o persoana...

Bios laptop Myria MY8315

Folie display laptop in Bucuresti?

Incalzire cu Boiler cu PDC + IPAT...
 

FastPower - ridicare la putere

- - - - -
  • Please log in to reply
6 replies to this topic

#1
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
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



#2
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,482
  • Înscris: 10.08.2005
Cei 128 de biti nu sunt de fapt 4 grupe de 32 ?

#3
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,482
  • Înscris: 10.08.2005

Quote

// Explicatia optimizarii: nu este nici un motiv pentru a inmultii x cu 1
Chestia (explicatia) asta as vrea sa o vad la nivel de assembly.

Quote

if (n & 1)    // daca n nu este divizibil la 2
Esti sigur ca asta se verifica ?

#4
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

View PostMarianG, on 13 noiembrie 2020 - 15:37, said:

Cei 128 de biti nu sunt de fapt 4 grupe de 32 ?
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.

Quote

if (n & 1)    // daca n nu este divizibil la 2
Esti sigur ca asta se verifica ?
Da deoarece daca n nu este divizibil la 2 ultimul bit este 1,
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,482
  • Înscris: 10.08.2005
asta ce divizori cauta ?
(a & 2)

View PostMihaiProg, on 13 noiembrie 2020 - 16:50, said:

ruland programul nu vei obtine un timp mai mare de 0,000...
mai mare decat ?
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

View PostMihaiProg, 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.
"Single Instruction Multiple Data"

#6
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

View PostMarianG, on 13 noiembrie 2020 - 17:45, said:

asta ce divizori cauta ?
(a & 2)
2 = 10 in binar deci va obtine penultimul bit al lui a: nu are nimic de a face cu divizibitatea.

Cat despre timpul de executie, de exemplu calculand 2 la puterea 127:
Time spend: 0.001000
Foarte mic oricum.

#7
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,259
  • Înscris: 24.02.2007
Foarte mult pentru o putere a lui 2

View PostMihaiProg, on 13 noiembrie 2020 - 10:15, said:

proiect Visual Studio 2008 (codul sursa inclus), program consola.

Daca nu mai tii cu dintii la tehnologie de acum 12 ani, observi ca SSE are urmasi mai puternici.

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate