📄 efvec.f
字号:
! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 0.75_l_ b = 1.0_l_ ident(m) = 'Acos' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Acos( x(i )) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = -1.0_l_ b = -0.75_l_ ident(m) = 'Acos' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Acos( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = -1.0_l_/16.0_l_ b = 1.0_l_/16.0_l_ ident(m) = 'Atan' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Atan( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 1.0_l_/16.0_l_ b = 2.0_l_-Sqrt( 3.0_l_ ) ident(m) = 'Atan' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Atan( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 2.0_l_ - Sqrt( 3.0_l_ ) b = Sqrt( 2.0_l_ ) - 1.0_l_ ident(m) = 'Atan' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Atan( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = Sqrt( 2.0_l_ ) - 1.0_l_ b = 1.0_l_ ident(m) = 'Atan' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Atan( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 0.0_l_ b = 0.5_l_ ident(m) = 'Sinh' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Sinh( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 0.0_l_ b = 0.5_l_ ident(m) = 'Cosh' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Cosh( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 3.0_l_ b = Log( xmax ) ident(m) = 'Sinh' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Sinh( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 3.0_l_ b = Log( xmax ) ident(m) = 'Cosh' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Cosh( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 0.125_l_ b = Log ( 3.0_l_ )*0.5_l_ ident(m) = 'Tanh' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Tanh( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! --------------------------------------------------------------------- m = m + 1 If ( m > maxi ) Go To 900 a = 0.125_l_ + Log( 3.0_l_ )*0.5_l_ b = Log( 2.0_l_ ) + ( it + 1 )*Log( beta )*0.5_l_ ident(m) = 'Tanh' xint(m,1) = a xint(m,2) = b Do l = 1, nn n = narr(l) nrep = mrep/n Call argx( a, b, n, x ) t1 = wclock() Do j = 1, nrep!$omp parallel do Do i = 1, n f(i) = Tanh( x(i) ) End Do Call ddummy( f, j ) End Do t2 = wclock() - t1! --- Correct for overhead. ovhd = wclock() Do j = 1, nrep Call ddummy( f, j ) End Do dt = ( t2 - wclock() + ovhd )/nrep If ( dt > 0.0_l_ ) Then tab(m,l) = ( factor/dt )*n Else tab(m,l) = 999.999 End If End Do! ---------------------------------------------------------------------- 900 maxi = Min( maxi, m )! ---------------------------------------------------------------------- End Subroutine efvec
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -