/***************************************************************************/ /* GAUSS Benchmark program version 2.1 */ /* Author : Stefan Steinhaus */ /* EMAIL : stst@informatik.uni-frankfurt.de */ /* This program is public domain. Feel free to copy it freely. */ /***************************************************************************/ print; print "After a single test has been run the amount of times you have choosen"; print "the program will print the average elapsed time and continues with"; print "the next test calculation."; print; print "Dependent on the amount of runs you will choose now it could take some"; print "time until you see the first results."; print; print "How much times do you want to run the test (I suggest at least 3 times) : "; zaehl=con(1,1); print; print; print; print; print "!!! GAUSS - Benchmarkprogram !!!"; print "================================"; print; ergeb=0; i=1; summe=0; format /RD 8,3; do while i<=zaehl; timing=0; b=abs(rndn(300,300)/10); zeit=hsec; a=(b+1)^1000; timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "300x300 normal distributed random matrix^1000____ :" ergeb " sec."; summe=ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(200,200); zeit=hsec; c=eig(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "Eigenval. of a normal distr. 200x200 randommatrix :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndu(500,500); zeit=hsec; b=inv(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "Inverse of a 500x500 uniform distr. random matrix :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(500000,1); zeit=hsec; b=sortc(a,1); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "500000 values sorted ascending___________________ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=seqa(1,1,800); zeit=hsec; b=toeplitz(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "800x800 Toeplitzmatrix___________________________ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=moment(rndn(500,500),0); zeit=hsec; b=chol(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "Cholesky decomposition of a 500x500-matrix_______ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(600,600); zeit=hsec; b=corrx(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "600x600 correlation matrix_______________________ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(500,500); zeit=hsec; b=moment(a,0); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "500x500 cross-product matrix_____________________ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(100000,1); zeit=hsec; b=fft(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "FFT over 100000 values___________________________ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(500,500)^2; zeit=hsec; b=erf(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "Gaussian error function over a 500x500 matrix____ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(500,500)^2; zeit=hsec; b=gamma(a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "Gamma function over a 500x500 matrix_____________ :" ergeb " sec."; summe=summe+ergeb; clear a,b,ergeb; i=1; do while i<=zaehl; timing=0; a=rndn(500,500); b=seqa(1,1,500); zeit=hsec; b=olsqr(b,a); timing=(hsec-zeit)/100; ergeb=ergeb+timing; i=i+1; endo; ergeb=ergeb/zaehl; print /flush "Linear regression over a 500x500 matrix__________ :" ergeb " sec."; summe=summe+ergeb; print; print /flush "Overall Performance______________________________ :" summe " sec."; print; end;