Skip to content

dc-fukuoka/f03_exercise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

fortran 2003 exercise, just for my study.
like the following can be achieved.

type(matrix) :: a, b, c, d, e, f

a = matrix(size)
b = matrix(size)

call a%set_mat(-1.0d0, 1.0d0, 5555)
call b%set_mat(-2.0d0, 2.0d0, 7777)

c = a*b
d = c+a-b
e = d
f = c/b ! = c*b^-1
if (a == f) write(6, *) "A == F"

looks like python, simply use C++ is enough...?

$ make
ifort -c /opt/intel/compilers_and_libraries_2018.0.128/linux/mkl/include/mkl_vsl.f90
ifort -warn all -g -O3 -mavx -fopenmp test.F90 -mkl
$ ./a.out
 size:           4
 A:
   6.71751E-01  -5.11412E-01   5.03268E-01  -5.15220E-01
  -1.42823E-01  -4.56335E-01   1.01004E-01  -7.82845E-01
  -7.78005E-01   9.79638E-01   7.61025E-01  -6.15416E-01
  -8.88567E-01  -5.99848E-01   3.96229E-01  -8.35100E-01
 B:
   1.26819E+00  -1.32831E-01  -3.12948E-01   1.46513E+00
  -1.44351E+00  -4.38352E-01   1.67454E-01  -1.87368E+00
   1.24615E-01  -1.73444E+00   2.32557E-01   1.59954E-03
  -7.00869E-01  -3.26451E-01   1.82880E+00   1.79528E+00
 C = A*B:
   2.01395E+00  -5.69746E-01  -1.12106E+00   1.01826E+00
   1.03885E+00   2.99381E-01  -1.43989E+00  -7.59494E-01
  -1.87461E+00  -1.44514E+00  -5.40970E-01  -4.07903E+00
   3.73684E-01  -3.36444E-02  -1.25745E+00  -1.67655E+00
 D = C+A-B:
   1.41751E+00  -9.48327E-01  -3.04840E-01  -9.62086E-01
   2.33954E+00   2.81399E-01  -1.50634E+00   3.31337E-01
  -2.77723E+00   1.26895E+00  -1.25025E-02  -4.69605E+00
   1.85987E-01  -3.07041E-01  -2.69002E+00  -4.30693E+00
 E = D
   1.41751E+00  -9.48327E-01  -3.04840E-01  -9.62086E-01
   2.33954E+00   2.81399E-01  -1.50634E+00   3.31337E-01
  -2.77723E+00   1.26895E+00  -1.25025E-02  -4.69605E+00
   1.85987E-01  -3.07041E-01  -2.69002E+00  -4.30693E+00
 F = C/B (=A)
   6.71751E-01  -5.11412E-01   5.03268E-01  -5.15220E-01
  -1.42823E-01  -4.56335E-01   1.01004E-01  -7.82845E-01
  -7.78005E-01   9.79638E-01   7.61025E-01  -6.15416E-01
  -8.88567E-01  -5.99848E-01   3.96229E-01  -8.35100E-01
 maximum error is   3.552713678800501E-015
 A == F