Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(unit_test), | intent(inout) | :: | this | |||
complex(kind=rk), | intent(in), | dimension(:,:) | :: | res | ||
complex(kind=rk), | intent(in), | dimension(:,:) | :: | expected | ||
real(kind=rk), | intent(in), | optional | :: | tol | ||
character(len=*), | intent(in), | optional | :: | msg | ||
character(len=*), | intent(in), | optional | :: | name | ||
character(len=*), | intent(in), | optional | :: | group |
subroutine unit_test_cx2(this, res, expected, tol, msg, name, group) class(unit_test), intent(inout) :: this complex(rk), intent(in), dimension(:,:) :: res, expected real(rk), intent(in), optional :: tol character(*), intent(in), optional :: msg character(len=*), optional, intent(in) :: name character(len=*), optional, intent(in) :: group real(rk) :: rel_err_re, rel_err_im if (present(name)) then this%name = name else this%name = 'none' end if if (present(msg)) then this%msg = msg else this%msg = 'none' end if if (present(group)) then this%group = group else this%group = 'none' end if if (norm2(real(expected,rk))<=tiny(0.0_rk)) then rel_err_re = norm2(real(res,rk)-real(expected,rk)) else rel_err_re = norm2(real(res,rk)-real(expected,rk))/norm2(real(expected,rk)) end if if (norm2(aimag(expected))<=tiny(0.0_rk)) then rel_err_im = norm2(aimag(res)-aimag(expected)) else rel_err_im = norm2(aimag(res)-aimag(expected))/norm2(aimag(expected)) end if if (present(tol)) then this%result = (rel_err_re <= tol) .and. (rel_err_im <= tol) else this%result = (rel_err_re <= tiny(0.0_rk)) .and. (rel_err_im <= tiny(0.0_rk)) end if call this%print_msg(this%result) end subroutine unit_test_cx2