Skip to content

Commit

Permalink
perf: Replace the use of approximate error function with the intrinsi…
Browse files Browse the repository at this point in the history
…c error

function in fortran, which provides higher accuracy at similar speed.
  • Loading branch information
Xiaolong-Du committed Aug 12, 2021
1 parent f003bd0 commit 09c23fc
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ double precision function farahiProbability(self,variance,time,node)
!!}
use :: Display , only : displayCounter , displayCounterClear , displayIndent , displayMessage, &
& displayUnindent, verbosityLevelWorking
use :: Error_Functions , only : erfApproximate
use :: Error_Functions , only : Error_Function
use :: File_Utilities , only : File_Lock , File_Unlock , lockDescriptor
use :: Kind_Numbers , only : kind_dble , kind_quad
use :: MPI_Utilities , only : mpiBarrier , mpiSelf
Expand Down Expand Up @@ -489,7 +489,7 @@ double precision function farahiProbability(self,variance,time,node)
& +2.0_kind_quad &
& *( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +barrierTable(1) &
& /sqrt(2.0_kind_quad*self%varianceTable(1)) &
& ) &
Expand All @@ -513,7 +513,7 @@ double precision function farahiProbability(self,variance,time,node)
& +self%firstCrossingProbabilityTable(j,iTime) &
& *real( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +barrierTable(i) &
& -barrierTable(j) &
Expand All @@ -529,7 +529,7 @@ double precision function farahiProbability(self,variance,time,node)
& +2.0_kind_quad &
& *( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +barrierTable(i) &
& /sqrt(2.0_kind_quad*self%varianceTable(i)) &
& ) &
Expand Down Expand Up @@ -710,7 +710,7 @@ subroutine farahiRateTabulate(self,varianceProgenitor,time,node)
!!}
use :: Display , only : displayCounter , displayCounterClear , displayIndent , displayMessage, &
& displayUnindent, verbosityLevelWorking
use :: Error_Functions , only : erfApproximate
use :: Error_Functions , only : Error_Function
use :: File_Utilities , only : File_Lock , File_Unlock , lockDescriptor
use :: Kind_Numbers , only : kind_dble , kind_quad
use :: MPI_Utilities , only : mpiBarrier , mpiSelf
Expand Down Expand Up @@ -925,7 +925,7 @@ subroutine farahiRateTabulate(self,varianceProgenitor,time,node)
firstCrossingTableRateQuad(1)=+2.0_kind_quad &
& *( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +barrierTableRateQuad(1) &
& -barrier &
Expand All @@ -948,7 +948,7 @@ subroutine farahiRateTabulate(self,varianceProgenitor,time,node)
& *varianceTableStepRate &
& *( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +effectiveBarrierInitial &
& -barrierTableRateQuad(j) &
Expand All @@ -965,7 +965,7 @@ subroutine farahiRateTabulate(self,varianceProgenitor,time,node)
& +2.0_kind_quad &
& *( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +effectiveBarrierInitial &
& /sqrt(2.0_kind_quad*varianceTableRateQuad(i)) &
& ) &
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ double precision function farahiMidpointProbability(self,variance,time,node)
!!}
use :: Display , only : displayCounter , displayCounterClear , displayIndent , displayMessage, &
& displayUnindent, verbosityLevelWorking
use :: Error_Functions , only : erfApproximate
use :: Error_Functions , only : Error_Function
use :: File_Utilities , only : File_Lock , File_Unlock , lockDescriptor
use :: Kind_Numbers , only : kind_dble , kind_quad
use :: MPI_Utilities , only : mpiBarrier , mpiSelf
Expand Down Expand Up @@ -221,7 +221,7 @@ double precision function farahiMidpointProbability(self,variance,time,node)
end do
self%firstCrossingProbabilityTable(0,iTime)=0.0d0
integralKernel =+1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +barrierTable (1) &
& -barrierMidTable(1) &
Expand All @@ -231,7 +231,7 @@ double precision function farahiMidpointProbability(self,variance,time,node)
self%firstCrossingProbabilityTable(1,iTime)=real( &
& +( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +barrierTable(1) &
& /sqrt(2.0_kind_quad*self%varianceTable(1)) &
& ) &
Expand All @@ -256,7 +256,7 @@ double precision function farahiMidpointProbability(self,variance,time,node)
& +self%firstCrossingProbabilityTable(j,iTime) &
& *real( &
& 1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& ( &
& +barrierTable (i) &
& -barrierMidTable(j) &
Expand All @@ -267,7 +267,7 @@ double precision function farahiMidpointProbability(self,variance,time,node)
& )
end do
integralKernel=+1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +barrierTable (i) &
& -barrierMidTable(i) &
Expand All @@ -283,7 +283,7 @@ double precision function farahiMidpointProbability(self,variance,time,node)
& +( &
& +( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +barrierTable(i) &
& /sqrt(2.0_kind_quad*self%varianceTable(i)) &
& ) &
Expand Down Expand Up @@ -371,7 +371,7 @@ subroutine farahiMidpointRateTabulate(self,varianceProgenitor,time,node)
!!}
use :: Display , only : displayCounter , displayCounterClear , displayIndent , displayMessage, &
& displayUnindent, verbosityLevelWorking
use :: Error_Functions , only : erfApproximate
use :: Error_Functions , only : Error_Function
use :: File_Utilities , only : File_Lock , File_Unlock , lockDescriptor
use :: Kind_Numbers , only : kind_dble , kind_quad
use :: MPI_Utilities , only : mpiBarrier , mpiSelf
Expand Down Expand Up @@ -639,7 +639,7 @@ subroutine farahiMidpointRateTabulate(self,varianceProgenitor,time,node)
firstCrossingTableRateQuad(1)= 0.0_kind_quad
else
integralKernelRate =+1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +(barrierTableRateQuad (1)-barrier) &
& -(barrierMidTableRateQuad(1)-barrier) &
Expand All @@ -653,7 +653,7 @@ subroutine farahiMidpointRateTabulate(self,varianceProgenitor,time,node)
end if
firstCrossingTableRateQuad(1)=+( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +(barrierTableRateQuad(1)-barrier) &
& /sqrt(2.0_kind_quad*varianceTableRateQuad(1)) &
& ) &
Expand All @@ -667,7 +667,7 @@ subroutine farahiMidpointRateTabulate(self,varianceProgenitor,time,node)
else
effectiveBarrierInitial=+barrierTableRateQuad(i)-barrier
integralKernelRate=+1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +( &
& +effectiveBarrierInitial &
& -barrierMidTableRateQuad(i) &
Expand All @@ -687,7 +687,7 @@ subroutine farahiMidpointRateTabulate(self,varianceProgenitor,time,node)
erfValue=0.0_kind_quad
else
erfArgumentDenominator=sqrt(2.0_kind_quad*(varianceTableRateQuad(i)-varianceMidTableRateQuad(j)))
erfValue=erfApproximate(erfArgumentNumerator/erfArgumentDenominator)
erfValue=Error_Function(erfArgumentNumerator/erfArgumentDenominator)
end if
if (erfValue < 1.0_kind_quad) then
varianceTableStepRate=varianceTableRateQuad(j)-varianceTableRateQuad(j-1)
Expand All @@ -705,7 +705,7 @@ subroutine farahiMidpointRateTabulate(self,varianceProgenitor,time,node)
& +0.0_kind_quad, &
& +( &
& +1.0_kind_quad &
& -erfApproximate( &
& -Error_Function( &
& +effectiveBarrierInitial &
& /sqrt(2.0_kind_quad*varianceTableRateQuad(i)) &
& ) &
Expand Down

0 comments on commit 09c23fc

Please sign in to comment.