Español
Foro

Traditionelle Matrixmultiplikation, con nProc beschleunigt

 

p.specht

Título de la ventana "Beschleunigte Matrixmultiplikation"
KompilierenMarcaSeparación
' (CL) Copyleft 2012-09 P.Specht(at)gmx.at

if 0

     $DEFINE XPSE
     $IFDEF xpse
     {$cleq}
     $ENDIF
     $IFDEF xpia
     $MAKE CL
     $ENDIF

endif

windowstyle 1048
window 0,0-%maxx,%maxy
randomize
font 2
cls rnd(8^8)
set("decimals",15)
set("numwidth",27)
declare z&,s&,t&,i&,j&,k&,status&
z&=1000
s&=1000
t&=400
dec z&:dec s&:dec t&
declare a![z&,s&],b![s&,t&],c![z&,t&]

whileLoop 0,s&

    a![&Loop,&Loop]=-1

endwhile

status&=show(z&,s&,a![]):print
b![]=rnd(1000)*10^(rnd(5)*(1-2*rnd(2)))
status&=show(s&,t&,b![]):print
var tm&=&GetTickCount
status&=Multipli(z&,s&,t&,addr(a![0,0]),addr(b![0,0]),addr(c![0,0]))
tm&=&GetTickCount-tm&
status&=show(s&,t&,c![]):print
print tm&/1000,"sec.\nREADY."
Waitinput
End

proc show

    parameters u&,v&,m![]

    if u&>5

        print u&+1;" Werte pro Zeile"

    else

        declare mm!

        whileloop 0,u&:i&=&Loop

            whileloop 0,v&:j&=&Loop

                mm!=m![i&,j&]
                'if (mm!<10^10) and (mm!>10^-11) and (mm!<>0)
                print m![i&,j&],
                'else : print format$("%e",m![i&,j&]), : endif

            endwhile

            print

            if %csrlin>30:waitinput:cls rnd(8^8):endif

            endwhile

            print

        endif

        return 1

    endproc

     $IFDEF xpse

    NProc Multipli

        parameters z&,s&,t&,a_&,b_&,c_&
        declare sum!,prod!,aa!,bb!,cc!,i&,j&,k&

        WhileLoop 0,z&:i&=&Loop

            WhileLoop 0,t&:k&=&Loop

                sum!=0.0

                WhileLoop 0,s&:j&=&Loop

                    aa!=getfloat(a_&,8*(i&+(z&+1)*j&))
                    bb!=getfloat(b_&,8*(j&+(s&+1)*k&))
                    prod!=aa!*bb!
                    sum!=sum!+prod!

                endwhile

                setfloat(c_&,8*(i&+(s&+1)*k&),sum!)

            endwhile

        endwhile

        return 0

    endproc

     $ENDIF
    /*
    Proc Multipli
    parameters z&,s&,t&,a_&,b_&,c_&
    declare sum!,prod!,aa!,bb!,cc!,i&,j&,k&
    WhileLoop 0,z&
    i&=&Loop
    WhileLoop 0,t&
    k&=&Loop
    sum!=0
    WhileLoop 0,s&
    j&=&Loop
    sum!=sum!+a![i&,j&]*b![j&,k&]
    endwhile
    c![i&,k&]=sum!
    endwhile
    locate 2,2:print trim$(str$(i&));endwhile
    volver 0
    ENDPROC
    */
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
02.09.2012  
 




funkheld
Hm..,, welche Tarea übernimmt neben XPSE ahora todavía XPIA ?

Gruss
 
02.09.2012  
 




p.specht

Alternative para Ausführen de handoptimiertem Assemblercode como DLL, hier no veröffentlicht...
 
XProfan 11
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
02.09.2012  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

3.836 Views

Untitledvor 0 min.
p.specht17.07.2022
Thomas Freier17.05.2022
E.T.23.01.2022
Georg Teles22.01.2022
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

p.specht (2x)
funkheld (1x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie