laplacernd Function

function laplacernd(mean, scale) result(ans)

Arguments

Type IntentOptional Attributes Name
real(kind=8) :: mean
real(kind=8) :: scale

Return Value real(kind=8)


Calls

proc~~laplacernd~~CallsGraph proc~laplacernd laplacernd mersenne mersenne proc~laplacernd->mersenne

Source Code

function laplacernd(mean,scale)  result(ans)
  real(8) :: ans,mean,scale,u
  if (scale <= 0d0) then
     write(*,*) "LAPLACERND: Scale parameter must be positive"
  end if
  u = mersenne()
  if (u < 0.5d0) then
     ans = mean + scale*log(2d0*u) 
  else
     ans = mean - scale*log(2*(1-u))
  end if

end function laplacernd