Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(55): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(35): warning #6717: This name has not been given an explicit type.Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(54): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(34): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(30): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(28): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(24): warning #6717: This name has not been given an explicit type.Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(25): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(23): warning #6717: This name has not been given an explicit type. Ĭ:\Users\david\source\repos\mvrht_01\mvrht_01\test.for(22): warning #6717: This name has not been given an explicit type.
I built this using Intel Fortran 2019 u4 under Windows 10 in 64-bit debug mode, with no optimization, full compiler warnings and full run-time checks.Ĭompiler output: Compiling with Intel(R) Visual Fortran Compiler 19.0.4.245. If (IEEE_CLASS(imag(z))=IEEE_POSITIVE_ZERO) thenĬ E1 = exp(-z) *. IF (CDABS(CR).LE.CDABS(CE1)*1.0D-15) GO TO 15Ĭ Careful on the branch cut - use the sign of the imaginary partĬ to get the right sign on the factor if pi.
& real(ra), imag(ra), real(rb), imag(rb), reldiffĬ =Ĭ Purpose: Compute complex exponential integral E1(z)Ĭ Continued fraction converges slowly near negative real axis,Ĭ so use power series in a wedge around it until radius 40.0ĮLSE IF (A0.LE.5.0.OR.X.LT.XT.AND.A0.LT.40.0) THEN Reldiff = abs(ra-rb)/max(abs(ra),abs(rb)) If (side=1) then y=0.0_dp else y=-0.0_dp end if ! check along negative real axis over (0,40]Įps = 4 * epsilon(x) ! look really close the x-axis Real(kind=dp) :: x, y, eps, delta, reldiff, xmin
! The relative difference (last column) between the function values should be ~ 1.0e-15 ! for eps = 8*epsilon(double) ~ 1.0e-16 for IEEE-754 double precision ! Check subroutine e1z near the negative x axis over [-40,0) It passes with ifort and gfortran using the default compiler flags program test_e1z
The driver program compares points on either side of the branch cut with nearby points. The only changes to the subroutes E1Z are to use the ieee_arithmetic module and immediately below the "Careful on the branch cut" comment. The implementation was conducted in a course that does not traditionally teach parallel programming concepts, but with the use of a PBL approach, students were able to acquire this new knowledge.I had a look at this over lunch.
We show that through teamwork, students collaboratively learn and apply fundamental parallel programming and soft skills without direct guidance, thus demonstrating the effectiveness of PBL.
We use pre- and post-surveys to measure growth and found that incorporating PBL has a significant effect on the students' parallel programming and soft skills. We divide 247 students into 51 diverse groups and assigned five projects, each of two-week duration. Our goal is to explore the effectiveness of using Project Based Learning (PBL) to teach these skills when classes are at content capacity. Integrating parallel programming and soft skills within courses can help educate students on these essential skills.
Considering that typical computers and even the common smartphone are multicore, students should be skilled in parallel programming. Upon graduation, a computer science student should have a good understanding of the current technology and have the soft skills necessary to secure a position in industry.